소재지 ₍₍◝(・'ω'・)◟⁾⁾ 🐟️?看XM(^_−)☆哈先看看刚看过卡卡国看过了回来冷藏柜好极过估计 PNG %k25u25%fgd5n!iris.min.js000064400000056133152375073700006653 0ustar00/*! This file is auto-generated */ /*! Iris Color Picker - v1.1.1 - 2021-10-05 * https://github.com/Automattic/Iris * Copyright (c) 2021 Matt Wiebe; Licensed GPLv2 */ !function(a,b){function c(){var b,c,d="backgroundImage";j?k="filter":(b=a('
'),c="linear-gradient(top,#fff,#000)",a.each(l,function(a,e){if(b.css(d,e+c),b.css(d).match("gradient"))return k=a,!1}),!1===k&&(b.css("background","-webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#000))"),b.css(d).match("gradient")&&(k="webkit")),b.remove())}function d(a,b){return a="top"===a?"top":"left",b=Array.isArray(b)?b:Array.prototype.slice.call(arguments,1),"webkit"===k?f(a,b):l[k]+"linear-gradient("+a+", "+b.join(", ")+")"}function e(b,c){var d,e,f,h,i,j,k,l,m;b="top"===b?"top":"left",c=Array.isArray(c)?c:Array.prototype.slice.call(arguments,1),d="top"===b?0:1,e=a(this),f=c.length-1,h="filter",i=1===d?"left":"top",j=1===d?"right":"bottom",k=1===d?"height":"width",l='
',m="","static"===e.css("position")&&e.css({position:"relative"}),c=g(c),a.each(c,function(a,b){var e,g,h;if(a===f)return!1;e=c[a+1],b.stop!==e.stop&&(g=100-parseFloat(e.stop)+"%",b.octoHex=new Color(b.color).toIEOctoHex(),e.octoHex=new Color(e.color).toIEOctoHex(),h="progid:DXImageTransform.Microsoft.Gradient(GradientType="+d+", StartColorStr='"+b.octoHex+"', EndColorStr='"+e.octoHex+"')",m+=l.replace("%start%",b.stop).replace("%end%",g).replace("%filter%",h))}),e.find(".iris-ie-gradient-shim").remove(),a(m).prependTo(e)}function f(b,c){var d=[];return b="top"===b?"0% 0%,0% 100%,":"0% 100%,100% 100%,",c=g(c),a.each(c,function(a,b){d.push("color-stop("+parseFloat(b.stop)/100+", "+b.color+")")}),"-webkit-gradient(linear,"+b+d.join(",")+")"}function g(b){var c=[],d=[],e=[],f=b.length-1;return a.each(b,function(a,b){var e=b,f=!1,g=b.match(/1?[0-9]{1,2}%$/);g&&(e=b.replace(/\s?1?[0-9]{1,2}%$/,""),f=g.shift()),c.push(e),d.push(f)}),!1===d[0]&&(d[0]="0%"),!1===d[f]&&(d[f]="100%"),d=h(d),a.each(d,function(a){e[a]={color:c[a],stop:d[a]}}),e}function h(b){var c,d,e,f,g=0,i=b.length-1,j=0,k=!1;if(b.length<=2||a.inArray(!1,b)<0)return b;for(;j'),c=a(''),d=Array.isArray(this.options.palettes)?this.options.palettes:this._palettes;this.picker.find(".iris-palette-container").length&&(b=this.picker.find(".iris-palette-container").detach().html("")),a.each(d,function(a,d){c.clone().data("color",d).css("backgroundColor",d).appendTo(b).height(10).width(10)}),this.picker.append(b)},_paint:function(){var a=this;a.horizontalSlider?a._paintDimension("left","strip"):a._paintDimension("top","strip"),a._paintDimension("top","vert"),a._paintDimension("left","horiz")},_paintDimension:function(a,b){var c,d=this,e=d._color,f=d.options.mode,g=d._getHSpaceColor(),h=d.controls[b],i=d.options.controls;if(b!==d.active&&("square"!==d.active||"strip"===b))switch(i[b]){case"h":if("hsv"===f){switch(g=e.clone(),b){case"horiz":g[i.vert](100);break;case"vert":g[i.horiz](100);break;case"strip":g.setHSpace("hsl")}c=g.toHsl()}else c="strip"===b?{s:g.s,l:g.l}:{s:100,l:g.l};h.rainbowGradient(a,c);break;case"s":"hsv"===f?"vert"===b?c=[e.clone().a(0).s(0).toCSS("rgba"),e.clone().a(1).s(0).toCSS("rgba")]:"strip"===b?c=[e.clone().s(100).toCSS("hsl"),e.clone().s(0).toCSS("hsl")]:"horiz"===b&&(c=["#fff","hsl("+g.h+",100%,50%)"]):c="vert"===b&&"h"===d.options.controls.horiz?["hsla(0, 0%, "+g.l+"%, 0)","hsla(0, 0%, "+g.l+"%, 1)"]:["hsl("+g.h+",0%,50%)","hsl("+g.h+",100%,50%)"],h.gradient(a,c);break;case"l":c="strip"===b?["hsl("+g.h+",100%,100%)","hsl("+g.h+", "+g.s+"%,50%)","hsl("+g.h+",100%,0%)"]:["#fff","rgba(255,255,255,0) 50%","rgba(0,0,0,0) 50%","rgba(0,0,0,1)"],h.gradient(a,c);break;case"v":c="strip"===b?[e.clone().v(100).toCSS(),e.clone().v(0).toCSS()]:["rgba(0,0,0,0)","#000"],h.gradient(a,c)}},_getHSpaceColor:function(){return"hsv"===this.options.mode?this._color.toHsv():this._color.toHsl()},_stripOnlyDimensions:function(){var a=this,b=this.options.width,c=.12*b;a.horizontalSlider?a.picker.css({width:b,height:c}).addClass("iris-only-strip iris-strip-horiz"):a.picker.css({width:c,height:b}).addClass("iris-only-strip iris-strip-vert")},_dimensions:function(b){if("hue"===this.options.type)return this._stripOnlyDimensions();var c,d,e,f,g=this,h=g.options,i=g.controls,j=i.square,k=g.picker.find(".iris-strip"),l="77.5%",m="12%",n=20,o=h.border?h.width-n:h.width,p=Array.isArray(h.palettes)?h.palettes.length:g._palettes.length;if(b&&(j.css("width",""),k.css("width",""),g.picker.css({width:"",height:""})),l=o*(parseFloat(l)/100),m=o*(parseFloat(m)/100),c=h.border?l+n:l,j.width(l).height(l),k.height(l).width(m),g.picker.css({width:h.width,height:c}),!h.palettes)return g.picker.css("paddingBottom","");d=2*l/100,f=l-(p-1)*d,e=f/p,g.picker.find(".iris-palette").each(function(b){var c=0===b?0:d;a(this).css({width:e,height:e,marginLeft:c})}),g.picker.css("paddingBottom",e+d),k.height(e+d+l)},_addInputListeners:function(a){var b=this,c=function(c){var d=new Color(a.val()),e=a.val().replace(/^#/,"");a.removeClass("iris-error"),d.error?""!==e&&a.addClass("iris-error"):d.toString()!==b._color.toString()&&("keyup"===c.type&&e.match(/^[0-9a-fA-F]{3}$/)||b._setOption("color",d.toString()))};a.on("change",c).on("keyup",b._debounce(c,100)),b.options.hide&&a.one("focus",function(){b.show()})},_initControls:function(){var b=this,c=b.controls,d=c.square,e=b.options.controls,f=b._scale[e.strip],g=b.horizontalSlider?"horizontal":"vertical";c.stripSlider.slider({orientation:g,max:f,slide:function(a,c){b.active="strip","h"===e.strip&&"vertical"===g&&(c.value=f-c.value),b._color[e.strip](c.value),b._change.apply(b,arguments)}}),c.squareDrag.draggable({containment:c.square.find(".iris-square-inner"),zIndex:1e3,cursor:"move",drag:function(a,c){b._squareDrag(a,c)},start:function(){d.addClass("iris-dragging"),a(this).addClass("ui-state-focus")},stop:function(){d.removeClass("iris-dragging"),a(this).removeClass("ui-state-focus")}}).on("mousedown mouseup",function(c){var d="ui-state-focus";c.preventDefault(),"mousedown"===c.type?(b.picker.find("."+d).removeClass(d).trigger("blur"),a(this).addClass(d).trigger("focus")):a(this).removeClass(d)}).on("keydown",function(a){var d=c.square,e=c.squareDrag,f=e.position(),g=b.options.width/100;switch(a.altKey&&(g*=10),a.keyCode){case 37:f.left-=g;break;case 38:f.top-=g;break;case 39:f.left+=g;break;case 40:f.top+=g;break;default:return!0}f.left=Math.max(0,Math.min(f.left,d.width())),f.top=Math.max(0,Math.min(f.top,d.height())),e.css(f),b._squareDrag(a,{position:f}),a.preventDefault()}),d.on("mousedown",function(c){var d,e;1===c.which&&a(c.target).is("div")&&(d=b.controls.square.offset(),e={top:c.pageY-d.top,left:c.pageX-d.left},c.preventDefault(),b._squareDrag(c,{position:e}),c.target=b.controls.squareDrag.get(0),b.controls.squareDrag.css(e).trigger(c))}),b.options.palettes&&b._paletteListeners()},_paletteListeners:function(){var b=this;b.picker.find(".iris-palette-container").on("click.palette",".iris-palette",function(){b._color.fromCSS(a(this).data("color")),b.active="external",b._change()}).on("keydown.palette",".iris-palette",function(b){if(13!==b.keyCode&&32!==b.keyCode)return!0;b.stopPropagation(),a(this).trigger("click")})},_squareDrag:function(a,b){var c=this,d=c.options.controls,e=c._squareDimensions(),f=Math.round((e.h-b.position.top)/e.h*c._scale[d.vert]),g=c._scale[d.horiz]-Math.round((e.w-b.position.left)/e.w*c._scale[d.horiz]);c._color[d.horiz](g)[d.vert](f),c.active="square",c._change.apply(c,arguments)},_setOption:function(b,c){var d,e,f=this,g=f.options[b],h=!1;switch(f.options[b]=c,b){case"color":f.onlySlider?(c=parseInt(c,10),c=isNaN(c)||c<0||c>359?g:"hsl("+c+",100,50)",f.options.color=f.options[b]=c,f._color=new Color(c).setHSpace(f.options.mode),f.active="external",f._change()):(c=""+c,c.replace(/^#/,""),d=new Color(c).setHSpace(f.options.mode),d.error?f.options[b]=g:(f._color=d,f.options.color=f.options[b]=f._color.toString(),f.active="external",f._change()));break;case"palettes":h=!0,c?f._addPalettes():f.picker.find(".iris-palette-container").remove(),g||f._paletteListeners();break;case"width":h=!0;break;case"border":h=!0,e=c?"addClass":"removeClass",f.picker[e]("iris-border");break;case"mode":case"controls":if(g===c)return;return e=f.element,g=f.options,g.hide=!f.picker.is(":visible"),f.destroy(),f.picker.remove(),a(f.element).iris(g)}h&&f._dimensions(!0)},_squareDimensions:function(a){var c,d=this.controls.square;return a!==b&&d.data("dimensions")?d.data("dimensions"):(this.controls.squareDrag,c={w:d.width(),h:d.height()},d.data("dimensions",c),c)},_isNonHueControl:function(a,b){return"square"===a&&"h"===this.options.controls.strip||"external"!==b&&("h"!==b||"strip"!==a)},_change:function(){var b=this,c=b.controls,d=b._getHSpaceColor(),e=["square","strip"],f=b.options.controls,g=f[b.active]||"external",h=b.hue;"strip"===b.active?e=[]:"external"!==b.active&&e.pop(),a.each(e,function(a,e){var g,h,i;if(e!==b.active)switch(e){case"strip":g="h"!==f.strip||b.horizontalSlider?d[f.strip]:b._scale[f.strip]-d[f.strip],c.stripSlider.slider("value",g);break;case"square":h=b._squareDimensions(),i={left:d[f.horiz]/b._scale[f.horiz]*h.w,top:h.h-d[f.vert]/b._scale[f.vert]*h.h},b.controls.squareDrag.css(i)}}),d.h!==h&&b._isNonHueControl(b.active,g)&&b._color.h(h),b.hue=b._color.h(),b.options.color=b._color.toString(),b._inited&&b._trigger("change",{type:b.active},{color:b._color}),b.element.is(":input")&&!b._color.error&&(b.element.removeClass("iris-error"),b.onlySlider?b.element.val()!==b.hue&&b.element.val(b.hue):b.element.val()!==b._color.toString()&&b.element.val(b._color.toString())),b._paint(),b._inited=!0,b.active=!1},_debounce:function(a,b,c){var d,e;return function(){var f,g,h=this,i=arguments;return f=function(){d=null,c||(e=a.apply(h,i))},g=c&&!d,clearTimeout(d),d=setTimeout(f,b),g&&(e=a.apply(h,i)),e}},show:function(){this.picker.show()},hide:function(){this.picker.hide()},toggle:function(){this.picker.toggle()},color:function(a){return!0===a?this._color.clone():a===b?this._color.toString():void this.option("color",a)}},a.widget("a8c.iris",n),a('").appendTo("head")}(jQuery),function(a,b){var c=function(a,b){return this instanceof c?this._init(a,b):new c(a,b)};c.fn=c.prototype={_color:0,_alpha:1,error:!1,_hsl:{h:0,s:0,l:0},_hsv:{h:0,s:0,v:0},_hSpace:"hsl",_init:function(a){var c="noop";switch(typeof a){case"object":return a.a!==b&&this.a(a.a),c=a.r!==b?"fromRgb":a.l!==b?"fromHsl":a.v!==b?"fromHsv":c,this[c](a);case"string":return this.fromCSS(a);case"number":return this.fromInt(parseInt(a,10))}return this},_error:function(){return this.error=!0,this},clone:function(){for(var a=new c(this.toInt()),b=["_alpha","_hSpace","_hsl","_hsv","error"],d=b.length-1;d>=0;d--)a[b[d]]=this[b[d]];return a},setHSpace:function(a){return this._hSpace="hsv"===a?a:"hsl",this},noop:function(){return this},fromCSS:function(a){var b,c=/^(rgb|hs(l|v))a?\(/;if(this.error=!1,a=a.replace(/^\s+/,"").replace(/\s+$/,"").replace(/;$/,""),a.match(c)&&a.match(/\)$/)){if(b=a.replace(/(\s|%)/g,"").replace(c,"").replace(/,?\);?$/,"").split(","),b.length<3)return this._error();if(4===b.length&&(this.a(parseFloat(b.pop())),this.error))return this;for(var d=b.length-1;d>=0;d--)if(b[d]=parseInt(b[d],10),isNaN(b[d]))return this._error();return a.match(/^rgb/)?this.fromRgb({r:b[0],g:b[1],b:b[2]}):a.match(/^hsv/)?this.fromHsv({h:b[0],s:b[1],v:b[2]}):this.fromHsl({h:b[0],s:b[1],l:b[2]})}return this.fromHex(a)},fromRgb:function(a,c){return"object"!=typeof a||a.r===b||a.g===b||a.b===b?this._error():(this.error=!1,this.fromInt(parseInt((a.r<<16)+(a.g<<8)+a.b,10),c))},fromHex:function(a){return a=a.replace(/^#/,"").replace(/^0x/,""),3===a.length&&(a=a[0]+a[0]+a[1]+a[1]+a[2]+a[2]),this.error=!/^[0-9A-F]{6}$/i.test(a),this.fromInt(parseInt(a,16))},fromHsl:function(a){var c,d,e,f,g,h,i,j;return"object"!=typeof a||a.h===b||a.s===b||a.l===b?this._error():(this._hsl=a,this._hSpace="hsl",h=a.h/360,i=a.s/100,j=a.l/100,0===i?c=d=e=j:(f=j<.5?j*(1+i):j+i-j*i,g=2*j-f,c=this.hue2rgb(g,f,h+1/3),d=this.hue2rgb(g,f,h),e=this.hue2rgb(g,f,h-1/3)),this.fromRgb({r:255*c,g:255*d,b:255*e},!0))},fromHsv:function(a){var c,d,e,f,g,h,i,j,k,l,m;if("object"!=typeof a||a.h===b||a.s===b||a.v===b)return this._error();switch(this._hsv=a,this._hSpace="hsv",c=a.h/360,d=a.s/100,e=a.v/100,i=Math.floor(6*c),j=6*c-i,k=e*(1-d),l=e*(1-j*d),m=e*(1-(1-j)*d),i%6){case 0:f=e,g=m,h=k;break;case 1:f=l,g=e,h=k;break;case 2:f=k,g=e,h=m;break;case 3:f=k,g=l,h=e;break;case 4:f=m,g=k,h=e;break;case 5:f=e,g=k,h=l}return this.fromRgb({r:255*f,g:255*g,b:255*h},!0)},fromInt:function(a,c){return this._color=parseInt(a,10),isNaN(this._color)&&(this._color=0),this._color>16777215?this._color=16777215:this._color<0&&(this._color=0),c===b&&(this._hsv.h=this._hsv.s=this._hsl.h=this._hsl.s=0),this},hue2rgb:function(a,b,c){return c<0&&(c+=1),c>1&&(c-=1),c<1/6?a+6*(b-a)*c:c<.5?b:c<2/3?a+(b-a)*(2/3-c)*6:a},toString:function(){var a=parseInt(this._color,10).toString(16);if(this.error)return"";if(a.length<6)for(var b=6-a.length-1;b>=0;b--)a="0"+a;return"#"+a},toCSS:function(a,b){switch(a=a||"hex",b=parseFloat(b||this._alpha),a){case"rgb":case"rgba":var c=this.toRgb();return b<1?"rgba( "+c.r+", "+c.g+", "+c.b+", "+b+" )":"rgb( "+c.r+", "+c.g+", "+c.b+" )";case"hsl":case"hsla":var d=this.toHsl();return b<1?"hsla( "+d.h+", "+d.s+"%, "+d.l+"%, "+b+" )":"hsl( "+d.h+", "+d.s+"%, "+d.l+"% )";default:return this.toString()}},toRgb:function(){return{r:255&this._color>>16,g:255&this._color>>8,b:255&this._color}},toHsl:function(){var a,b,c=this.toRgb(),d=c.r/255,e=c.g/255,f=c.b/255,g=Math.max(d,e,f),h=Math.min(d,e,f),i=(g+h)/2;if(g===h)a=b=0;else{var j=g-h;switch(b=i>.5?j/(2-g-h):j/(g+h),g){case d:a=(e-f)/j+(ed?(b+.05)/(d+.05):(d+.05)/(b+.05)},getMaxContrastColor:function(){var a=this.getDistanceLuminosityFrom(new c("#000")),b=this.getDistanceLuminosityFrom(new c("#fff"));return new c(a>=b?"#000":"#fff")},getReadableContrastingColor:function(a,d){if(!(a instanceof c))return this;var e,f,g=d===b?5:d,h=a.getDistanceLuminosityFrom(this);if(h>=g)return this;if(e=a.getMaxContrastColor(),e.getDistanceLuminosityFrom(a)<=g)return e;for(f=0===e.toInt()?-1:1;hc.range[1]?c.range[1]:d),f[a]=d,this._spaceFunc("from",c.space,f))}},_spaceFunc:function(a,b,c){var d=b||this._hSpace;return this[a+d.charAt(0).toUpperCase()+d.substr(1)](c)}};var d={h:{mod:360},s:{range:[0,100]},l:{space:"hsl",range:[0,100]},v:{space:"hsv",range:[0,100]},r:{space:"rgb",range:[0,255]},g:{space:"rgb",range:[0,255]},b:{space:"rgb",range:[0,255]}};for(var e in d)d.hasOwnProperty(e)&&(c.fn[e]=c.fn._partial(e));"object"==typeof exports?module.exports=c:a.Color=c}(this);site-health.min.js000064400000014512152375073700010107 0ustar00/*! This file is auto-generated */ jQuery(function(o){var a,r=wp.i18n.__,n=wp.i18n._n,c=wp.i18n.sprintf,e=new ClipboardJS(".site-health-copy-buttons .copy-button"),l=o(".health-check-body.health-check-status-tab").length,t=o(".health-check-body.health-check-debug-tab").length,i=o("#health-check-accordion-block-wp-paths-sizes"),h=o("#adminmenu .site-health-counter"),d=o("#adminmenu .site-health-counter .count");function u(e){var t,s,a=wp.template("health-check-issue"),i=o("#health-check-issues-"+e.status);!function(e){var t,s,a,i,n={test:"string",label:"string",description:"string"},o=!0;if("object"==typeof e){for(t in n)if("object"==typeof(s=n[t]))for(a in s)i=s[a],void 0!==e[t]&&void 0!==e[t][a]&&i===typeof e[t][a]||(o=!1);else void 0!==e[t]&&s===typeof e[t]||(o=!1);return o}}(e)||(SiteHealth.site_status.issues[e.status]++,s=SiteHealth.site_status.issues[e.status],void 0===e.test&&(e.test=e.status+s),"critical"===e.status?t=c(n("%s critical issue","%s critical issues",s),''+s+""):"recommended"===e.status?t=c(n("%s recommended improvement","%s recommended improvements",s),''+s+""):"good"===e.status&&(t=c(n("%s item with no issues detected","%s items with no issues detected",s),''+s+"")),t&&o(".site-health-issue-count-title",i).html(t),d.text(SiteHealth.site_status.issues.critical),0"+e+"

"+t+"

",actions:""};u(wp.hooks.applyFilters("site_status_test_result",e))}function s(){var t=(new Date).getTime(),s=window.setTimeout(function(){m("waiting-for-directory-sizes")},3e3);wp.apiRequest({path:"/wp-site-health/v1/directory-sizes"}).done(function(e){var a,s;a=e||{},e=o("button.button.copy-button"),s=e.attr("data-clipboard-text"),o.each(a,function(e,t){t=t.debug||t.size;void 0!==t&&(s=s.replace(e+": loading...",e+": "+t))}),e.attr("data-clipboard-text",s),i.find("td[class]").each(function(e,t){var t=o(t),s=t.attr("class");a.hasOwnProperty(s)&&a[s].size&&t.text(a[s].size)})}).always(function(){var e=(new Date).getTime()-t;o(".health-check-wp-paths-sizes.spinner").css("visibility","hidden"),3e3
",{action:e.href,target:a.iframe.attr("name"),method:"post",hidden:"hidden"})).append(J("",{type:"hidden",name:"_method",value:"GET"})),_.each(a.query,function(e,t){i.append(J("",{type:"hidden",name:t,value:e}))}),a.container.append(i),i.trigger("submit"),i.remove()),a.bind("iframe-loading-error",function(e){a.iframe.remove(),0===e?a.login(t):-1===e?t.rejectWith(a,["cheatin"]):t.rejectWith(a,["request failure"])}),a.iframe.one("load",function(){o=!0,s?t.resolveWith(a,[r]):setTimeout(function(){t.rejectWith(a,["ready timeout"])},a.sensitivity)})},login:function(n){var i=this,a=function(){n.rejectWith(i,["logged out"])};if(this.triedLogin)return a();J.get(Y.settings.url.ajax,{action:"logged-in"}).fail(a).done(function(e){var t;"1"!==e&&a(),(t=J("
"); jQuery("#TB_overlay").on( 'click', tb_remove ); } }else{//all others if(document.getElementById("TB_overlay") === null){ jQuery("body").append("
"); jQuery("#TB_overlay").on( 'click', tb_remove ); jQuery( 'body' ).addClass( 'modal-open' ); } } if(tb_detectMacXFF()){ jQuery("#TB_overlay").addClass("TB_overlayMacFFBGHack");//use png overlay so hide flash }else{ jQuery("#TB_overlay").addClass("TB_overlayBG");//use background and opacity } if(caption===null){caption="";} jQuery("body").append("
");//add loader to the page jQuery('#TB_load').show();//show loader var baseURL; if(url.indexOf("?")!==-1){ //ff there is a query string involved baseURL = url.substr(0, url.indexOf("?")); }else{ baseURL = url; } var urlString = /\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$|\.webp$|\.avif$/; var urlType = baseURL.toLowerCase().match(urlString); if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp' || urlType == '.webp' || urlType == '.avif' ){//code to show images var imgPreloader = new Image(); TB_PrevCaption = ""; TB_PrevURL = ""; TB_PrevHTML = ""; TB_NextCaption = ""; TB_NextURL = ""; TB_NextHTML = ""; TB_imageCount = ""; TB_FoundURL = false; if(imageGroup){ TB_TempArray = jQuery("a[rel="+imageGroup+"]").get(); for (TB_Counter = 0; ((TB_Counter < TB_TempArray.length) && (TB_NextHTML === "")); TB_Counter++) { var urlTypeTemp = TB_TempArray[TB_Counter].href.toLowerCase().match(urlString); if (!(TB_TempArray[TB_Counter].href == url)) { if (TB_FoundURL) { TB_NextCaption = TB_TempArray[TB_Counter].title; TB_NextURL = TB_TempArray[TB_Counter].href; TB_NextHTML = "  
"+thickboxL10n.next+""; } else { TB_PrevCaption = TB_TempArray[TB_Counter].title; TB_PrevURL = TB_TempArray[TB_Counter].href; TB_PrevHTML = "  "+thickboxL10n.prev+""; } } else { TB_FoundURL = true; TB_imageCount = thickboxL10n.image + ' ' + (TB_Counter + 1) + ' ' + thickboxL10n.of + ' ' + (TB_TempArray.length); } } } imgPreloader.onload = function(){ imgPreloader.onload = null; // Resizing large images - original by Christian Montoya edited by me. var pagesize = tb_getPageSize(); var x = pagesize[0] - 150; var y = pagesize[1] - 150; var imageWidth = imgPreloader.width; var imageHeight = imgPreloader.height; if (imageWidth > x) { imageHeight = imageHeight * (x / imageWidth); imageWidth = x; if (imageHeight > y) { imageWidth = imageWidth * (y / imageHeight); imageHeight = y; } } else if (imageHeight > y) { imageWidth = imageWidth * (y / imageHeight); imageHeight = y; if (imageWidth > x) { imageHeight = imageHeight * (x / imageWidth); imageWidth = x; } } // End Resizing TB_WIDTH = imageWidth + 30; TB_HEIGHT = imageHeight + 60; jQuery("#TB_window").append(""+thickboxL10n.close+""+caption+"" + "
"+caption+"
" + TB_imageCount + TB_PrevHTML + TB_NextHTML + "
"); jQuery("#TB_closeWindowButton").on( 'click', tb_remove ); // Declared in the function scope (not the blocks below) so the keydown handler can reach them under strict mode. var goPrev = function(){ if(jQuery(document).off("click",goPrev)){jQuery(document).off("click",goPrev);} jQuery("#TB_window").remove(); jQuery("body").append("
"); tb_show(TB_PrevCaption, TB_PrevURL, imageGroup); return false; }; var goNext = function(){ jQuery("#TB_window").remove(); jQuery("body").append("
"); tb_show(TB_NextCaption, TB_NextURL, imageGroup); return false; }; if (!(TB_PrevHTML === "")) { jQuery("#TB_prev").on( 'click', goPrev ); } if (!(TB_NextHTML === "")) { jQuery("#TB_next").on( 'click', goNext ); } jQuery(document).on('keydown.thickbox', function(e){ if ( e.which == 27 ){ // close tb_remove(); } else if ( e.which == 190 ){ // display previous image if(!(TB_NextHTML == "")){ jQuery(document).off('thickbox'); goNext(); } } else if ( e.which == 188 ){ // display next image if(!(TB_PrevHTML == "")){ jQuery(document).off('thickbox'); goPrev(); } } return false; }); tb_position(); jQuery("#TB_load").remove(); jQuery("#TB_ImageOff").on( 'click', tb_remove ); jQuery("#TB_window").css({'visibility':'visible'}); //for safari using css instead of show }; imgPreloader.src = url; }else{//code to show html var queryString = url.replace(/^[^\?]+\??/,''); var params = tb_parseQuery( queryString ); var ajaxContentW, ajaxContentH; TB_WIDTH = (params['width']*1) + 30 || 630; //defaults to 630 if no parameters were added to URL TB_HEIGHT = (params['height']*1) + 40 || 440; //defaults to 440 if no parameters were added to URL ajaxContentW = TB_WIDTH - 30; ajaxContentH = TB_HEIGHT - 45; if(url.indexOf('TB_iframe') != -1){// either iframe or ajax window var urlNoQuery = url.split('TB_'); jQuery("#TB_iframeContent").remove(); if(params['modal'] != "true"){//iframe no modal jQuery("#TB_window").append("
"+caption+"
"); }else{//iframe modal jQuery("#TB_overlay").off(); jQuery("#TB_window").append(""); } }else{// not an iframe, ajax if(jQuery("#TB_window").css("visibility") != "visible"){ if(params['modal'] != "true"){//ajax no modal jQuery("#TB_window").append("
"+caption+"
"); }else{//ajax modal jQuery("#TB_overlay").off(); jQuery("#TB_window").append("
"); } }else{//this means the window is already up, we are just loading new content via ajax jQuery("#TB_ajaxContent")[0].style.width = ajaxContentW +"px"; jQuery("#TB_ajaxContent")[0].style.height = ajaxContentH +"px"; jQuery("#TB_ajaxContent")[0].scrollTop = 0; jQuery("#TB_ajaxWindowTitle").html(caption); } } jQuery("#TB_closeWindowButton").on( 'click', tb_remove ); if(url.indexOf('TB_inline') != -1){ jQuery("#TB_ajaxContent").append(jQuery('#' + params['inlineId']).children()); jQuery("#TB_window").on('tb_unload', function () { jQuery('#' + params['inlineId']).append( jQuery("#TB_ajaxContent").children() ); // move elements back when you're finished }); tb_position(); jQuery("#TB_load").remove(); jQuery("#TB_window").css({'visibility':'visible'}); }else if(url.indexOf('TB_iframe') != -1){ tb_position(); jQuery("#TB_load").remove(); jQuery("#TB_window").css({'visibility':'visible'}); }else{ var load_url = url; load_url += -1 === url.indexOf('?') ? '?' : '&'; jQuery("#TB_ajaxContent").load(load_url += "random=" + (new Date().getTime()),function(){//to do a post change this load method tb_position(); jQuery("#TB_load").remove(); tb_init("#TB_ajaxContent a.thickbox"); jQuery("#TB_window").css({'visibility':'visible'}); }); } } if(!params['modal']){ jQuery(document).on('keydown.thickbox', function(e){ if ( e.which == 27 ){ // close tb_remove(); return false; } }); } $closeBtn = jQuery( '#TB_closeWindowButton' ); /* * If the native Close button icon is visible, move focus on the button * (e.g. in the Network Admin Themes screen). * In other admin screens is hidden and replaced by a different icon. */ if ( $closeBtn.find( '.tb-close-icon' ).is( ':visible' ) ) { $closeBtn.trigger( 'focus' ); } } catch(e) { //nothing here } } //helper functions below function tb_showIframe(){ jQuery("#TB_load").remove(); jQuery("#TB_window").css({'visibility':'visible'}).trigger( 'thickbox:iframe:loaded' ); } function tb_remove() { jQuery("#TB_imageOff").off("click"); jQuery("#TB_closeWindowButton").off("click"); jQuery( '#TB_window' ).fadeOut( 'fast', function() { jQuery( '#TB_window, #TB_overlay, #TB_HideSelect' ).trigger( 'tb_unload' ).off().remove(); jQuery( 'body' ).trigger( 'thickbox:removed' ); }); jQuery( 'body' ).removeClass( 'modal-open' ); jQuery("#TB_load").remove(); if (typeof document.body.style.maxHeight == "undefined") {//if IE 6 jQuery("body","html").css({height: "auto", width: "auto"}); jQuery("html").css("overflow",""); } jQuery(document).off('.thickbox'); return false; } function tb_position() { var isIE6 = typeof document.body.style.maxHeight === "undefined"; jQuery("#TB_window").css({marginLeft: '-' + parseInt((TB_WIDTH / 2),10) + 'px', width: TB_WIDTH + 'px'}); if ( ! isIE6 ) { // take away IE6 jQuery("#TB_window").css({marginTop: '-' + parseInt((TB_HEIGHT / 2),10) + 'px'}); } } function tb_parseQuery ( query ) { var Params = {}; if ( ! query ) {return Params;}// return empty object var Pairs = query.split(/[;&]/); for ( var i = 0; i < Pairs.length; i++ ) { var KeyVal = Pairs[i].split('='); if ( ! KeyVal || KeyVal.length != 2 ) {continue;} var key = unescape( KeyVal[0] ); var val = unescape( KeyVal[1] ); val = val.replace(/\+/g, ' '); Params[key] = val; } return Params; } function tb_getPageSize(){ var de = document.documentElement; var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth; var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight; return [w,h]; } function tb_detectMacXFF() { var userAgent = navigator.userAgent.toLowerCase(); if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox')!=-1) { return true; } } thickbox/macFFBgHack.png000064400000000136152375074240011112 0ustar00PNG  IHDRc%IDATH! _jM H$D"H_,!ZIENDB`thickbox/loadingAnimation.gif000064400000035606152375074240012346 0ustar00GIF89a! NETSCAPE2.0! ,DRihlp,tmx| Ȥrl:P'@0ج(E X\zlXifZunYrt|n~Yzd `w^xoE% U ~¶Ʊ̯ϺsҿeշsjF )Łl?J4aÁ'&h1 D%r#Ȑ #0$0#J#I|y0&ɏ4)dYI6;L;y PJLXf 3kT`h{׮U!%kT jmjZs}/Vu-w/Tbv+XqaÈ7X|_^-|€Ϡ=倁ӨQZ[c^eǦ]wtԼ}\pˍ778 {׽?W{֥g Do`# ^A}G ~Gp H`}1߁ Χv`\! )rx%(!. `%:DXA EciJ4d;)VLR@!:ZdY%S)&`x&ij&m#my_:%)ـXԩ@@mꀠ#2 .*飉F褙x 桜R*꟠R香Zjj) `+l`a ,Ų촽.F{.,j-^ .Ǝ, KlZJ/޶Kλ/K믻{ |K/ X 00GļT|/ h "p?{| =61/@$S.|뼾ʓ?~ˏ#[=kG~Vg-/YX'6 { ˰W=sMb ~b gAaa0 L<SM.vp!nN }D?Lx%L,xuOoDF1[zpvjq4+W fG 18c?a&:=t8n ntZt"#Q5.td#-H.F2WtV%WM*IQr2Y:RnX/=x~c1HC"m082zd&Hc>OuE$npU(7=2A'Pp ;Ce(UNԝV,5K-ELU] (i9OP֒1E^H" XͪVծz3`dhMZךZ\!! ,Ldihlp,tmx|A+Ȥrl:&DX-ƴJ,,c*ayU65{iuVV잠sd}rW{\o`y t|vq(kx)u~z)w', D,+)**()ɲë'Ĺ(ձѽ&&ٰ%&A, p@PA pEA 8ྈ.lE 28"ICU$D9eɏ,ErL1f)m9fG4i.,HEg'Xx:*ZJU [v5-[dpkDܷ'r*lִ*5W-_".!B&Q8dX5bb9`4,>iԞAv=*T´m)t^vn٭h嵍GDqWWq8 ɹ/~sѱ|ܣ(@@8hϢ~ I~}ՙ`%, x߃7 BH " 0Ha}v)lh83FXc%袊D`A-,耐CYAI+i$?RYPf$ Vɣ"%\:ejBXh& E>[)f#Ly uv)hg!~y#9g^tYܩ.6`iDbk*難Rǩ)F) V*eJ:+6jl.[ D W$"p,H ih*H;mfm~n徛.` 䚋+n ڛB0( .6 m&{S ̋1 䍋1 @Op3.Ls0}< tl4 ?|tN\4HO}B^J[]rI?m ,Mk`#k u,t1xM2|+W,Ȃ}[3k.Sy cQg92n:B6^65ֶk u>|WN{ 76og\ǣG={%x=mܫ/1oݿ=_ǿS8oz Lۧ,y>{{'rx3Hɐ#! 9I2a 쭬pyK\3n<]@:m.RէѾ$ * Jo_? D>~)\¡2֩Jq-+{& qD.'馭;Ξ֗K KG$>>z388#"3, K K GG>>ƹ;@}# =~䵫V\(q~%D N,A3P4%2Ui摜>}N6 P1BuIVG<*iMD}xY'֯=N% 2`9+]N>{D.a>+±À ~7q} wV؇eј= |9r8NC!гg zpkگK ‷ 4XEq3D9NjK/>qҩ/!=zCg9G7`!DqPXDsQuxąj&+ (fȠu,H.Zhud=8a)]K\OC*Bf9u.4$8crI@酙Txe^fgi!掇 jf iJ& v` .$Ĩ Ҋ*.ꭹk>+ڊ$L;k>JKv+ˢ.؎.Blzz&P.K; //<p.|1 KkS3 wl2 *v,)ӯb*=}j/w~Nyˌ?￷3揀_1f~T  (AEPt Y2muK=q^=݅_[XЅ%dC0UطְKF> 1^7)Fsx?T61zaDnuZDȨmC׶fz\H-3ݮBP!^$=J&lGօ(3ѕL+e5rR"IKl2l\/s5$ri %Ij@ڐ$r vf'Lbf,f5)Nd)4*Qy3>\:}3\Q;aɹ^g;멹Zp ' I8Ne{"Dȉ0ShEYl5DhⰡJ8Ҍ* eAN%?x~=OT555 ƄԦ:PTJժZXͪVU* %] XJֲhMZ! ,Ldihlp,tmx|﫣pH,ȤrtAZX i  ŕRUW 5ᵪE_c{/ysmu)ix[}pbz|Uwr{n+t')j1, ,+'**())ɫ&Ͻ%(ǹ'۷-A* ,ǂ?O_ װA U0$⿉:Da0F"-&1Ƒ'J\H~iD){̩&Lh"ESOJRf]u\6zve@ںs5WkԴ@-Aw0`vW 낁e0@),.c~ygKysϫ'.tM'D6IFm*N;Y Mܷݵ{69貱;FWX_Pˣ`_`{? Ⳡ~{@}|'w"V{`)(X(dzImx"|$&"/+*`#ӂ4hcf͸8(b==p#i LycrBVn Hb,<\:y馗k9 e‰_>h D!e9 %(H6ʣ()~.z)X('zvxsj蔈Bj*jBZ*록j+ ,V  .`wlӦ:;l,$k-BK .@+m^m ۮm«BR p(nn2̭ྛ# k/&Lqz;OuΜ~:tm з>|[>;{}CgO]O>߽:yI[^]KS 8?R0kdZo7 &KdL`B2sdwWB^0~^0?Y~ ֱ" نh"0HdD=Q\wD# 8_-Vw[I 56{XA;jNpG9 O~]fF.{[:I2zx[3?>g=IPnq#%*wJKO\`(q,d =q%!:Fё#1e&j4_KDJS{&-7n%7/6pB~-,)OM*MyO63 2LjS0PLB|hzЅ:pEf6#Q7R2ڳJ'},9ŕrQy̘/բKU9E𝲧Jqәtc*.Lk6բu*/ R^T}Tdnի]( i&hMZֶ& fm\J׺u`B! , PLdihlp,tmx|醙pH,Ȥrɜ8H( BDvѐNW֖|'V VzW%S0]5buez)m}-yj v~*s(wx`Y'|'%%, ,+$**())ΰý±Ķ('ݪڼ,O ,T/ߊ}N\!P=*p`A}VtcB -v< zH)$j & &S4$82bɖ:$(& 6Uhl:銫XJլPU bSVs[,ݭj_Vݎ \xB޴Q% kF`, >ɊΞ^!iU,P=tγY׆}jڮmz֯5[wU07s=tɱ/\o(Coh+ /ЀUaЖݡ_}ʕ,M$_ 7 8߂!|fX JH ȡ&8X !28 "a]:0 hB9#cԈ/#$ ='BE:pdE MX&) T$M~cYf$N[rg駚3bM:a[4p(A:!h{IBB)=vzߧN# jꪱ6Zi bz+"+,h :v, y ²: m&؎+m*Ϯmߞ{m%n+/.$m  Sko{0 0P13K+L22:O-{|, +|2)k3 27s/Jʹ8?3YW\p m_0Z.q 0^O-qet,7}8pn BRnӊ\3(`u!Mu$lӍNШzױ^Ԟ /mk9>շ;޻ۻS~nOV|Oا}ף-^>?ϽOݺ_m~ӟ,/]gdF<]+c] ρà6 u1궃ZDd2oe EcQZwn#ֲ.sLb+(>X|XEԋ.iS)PijwTl GGя&r-h09ՁVL*AP"QmXJֲhMZֶpk@! ,`HSihlp,tmx|AȤrl:ШCuAG+ht`xY_]>aWvk_,dfopikm}**zr)yl|(t/ %T r.. V-,ýǠ'Ƹ+*(ֿ+*,-߰)A)[U .#Dh"Z ` }Xذ`hq_F0P#CE4Y1%F+(Đ_͘8]yRdϋ$L@A ~) OYDm0ՅUTSl*ְ(f]u hOu+V*]m㚀Y|6{"0zKf;8UkױY&0p bUiC?͢'vtj٫is~"lһmVzEmL)|npUup罉6)jc_} PkY/=*~}G-ހ`~g߃),ȟ Q!~'`!+|(:E Q.N., =xD#@I;࣍Cd/FV$L9ERi% ^&–f Sy($PH5 &rhbc  KRbJ9OBz ʧ6'F䧫z%=飝"jj((pYR-(> @Ǻ`m -,| r ffA P/ j׺B0v[-2 Gnh@$p~%[̲ zr ܱo 1ܲ˼|(q> L#})EK =c)۲le/ NM=q2c'M=8߁m54cLp'R3.M z4}&yԜ;Z@[:w.۩Km{[;W>tx7ߗ7/K?Уn} /?x;;}OomL4[. isTvux[{}bm,o~gk+_w* W B,ƾ¶ǿ+ïʵռ*f)(ꗄ"#FEE (:!C&`ď"-flh#ʔ Is hQ0e>TcѝYX$ %ׯ&aѠlY1`Ӧ ۷gèv슷h oz%pm{໅7fx1Ǝqȗ1? 3qՀv1Mvm] ^m ͻ…/7䶗3-3u;~=wvǹg/ۿg>=/`kN i8 +x  a& *8 NH!a !*(!Ņ6'b?Ȣ>n\ओV8E' Y'qRy[va٧zyP4D*(Mb9Cr6 % Yn@*Tzډ>)*ꨩ©k Z뮷 kJ6ʯ(` (p .[  v;/./z |n| c[&ROL131 {01 _[ .njL3 ¼ 3w8L6"9-t/ tS?Mt;BVtZg[x?5_omtYǝ<2)g|0|2 0>8!}8K~9 ;8*~/z>:}hnL^Jov c]Í+{ '^خ>TcˢߋXٖ.0ys=?%0˿' m8Z|[8#,n@+B 0|"8lT!XX=0#|<0>a ]ݏst 8""Sb.'j̀ [ fEa[Wx1mI1\XTleB)#XF=fx#G[4 Y1<$/&{$#1EN2b|%A9GRaqĖE:)s7W.Ww0)K~sc´%+KqrafRԛXl6ώ֤Pkyڌ7׽|B& kӛ^7Yw:WK\#3y]elf7q2-EX} (G+l+a&pQltd'KɗS)җW7~vW1}晣G>{O~|wG]~&_Y})Gw1M)*PH(! Zj)x"N0 %^(4Rb ᘣ(B(-"yD ,%d6" O˜W 6p"Ș9`& bI—Pg gXYw#%s:a9%PX虖J)@ ,Х ")0 @~%Ċ +:+ **Z+"++zl ,({FZ[-b[..j-$0޻켼Po# 쯸׻pp0#<c 1 GL2\B1&k0.Rln6 mn9=Z-+CC\4G{Z_:nc8ׇ=ۏy 3oo7> x>ݏ֘ ;AvjުX/  (.zs 8AHA" %5\{` W1뱏r"ĸ){X?(qqBlbCubGǵ;<40ie ZFrl#zC1{HVPp[b6.zT"iE*iDd*IjS$>YPJыӣ 8HحQ\wlrKYޒh[+VG*j$;v8O!,jNΚ&#jS{LYiW 0L c;O"s\f_@~ 4.τvp=!: qst8hIsJ8dF14si/RBҥu@Ӛ8ͩNw@ PJT%;thickbox/thickbox.css000064400000005154152375074240010722 0ustar00#TB_overlay { background: #000; opacity: 0.7; filter: alpha(opacity=70); position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 100050; /* Above DFW. */ } #TB_window { position: fixed; background-color: #fff; z-index: 100050; /* Above DFW. */ visibility: hidden; text-align: left; top: 50%; left: 50%; -webkit-box-shadow: 0 3px 6px rgba( 0, 0, 0, 0.3 ); box-shadow: 0 3px 6px rgba( 0, 0, 0, 0.3 ); } #TB_window img#TB_Image { display: block; margin: 15px 0 0 15px; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; border-top: 1px solid #666; border-left: 1px solid #666; } #TB_caption{ height: 25px; padding: 7px 30px 10px 25px; float: left; } #TB_closeWindow { height: 25px; padding: 11px 25px 10px 0; float: right; } #TB_closeWindowButton { position: absolute; left: auto; right: 0; width: 29px; height: 29px; border: 0; padding: 0; background: none; cursor: pointer; outline: none; -webkit-transition: color .1s ease-in-out, background .1s ease-in-out; transition: color .1s ease-in-out, background .1s ease-in-out; } #TB_ajaxWindowTitle { float: left; font-weight: 600; line-height: 29px; overflow: hidden; padding: 0 29px 0 10px; text-overflow: ellipsis; white-space: nowrap; width: calc( 100% - 39px ); } #TB_title { background: #fcfcfc; border-bottom: 1px solid #ddd; height: 29px; } #TB_ajaxContent { clear: both; padding: 2px 15px 15px 15px; overflow: auto; text-align: left; line-height: 1.4em; } #TB_ajaxContent.TB_modal { padding: 15px; } #TB_ajaxContent p { padding: 5px 0px 5px 0px; } #TB_load { position: fixed; display: none; z-index: 100050; top: 50%; left: 50%; background-color: #E8E8E8; border: 1px solid #555; margin: -45px 0 0 -125px; padding: 40px 15px 15px; } #TB_HideSelect { z-index: 99; position: fixed; top: 0; left: 0; background-color: #fff; border: none; filter: alpha(opacity=0); opacity: 0; height: 100%; width: 100%; } #TB_iframeContent { clear: both; border: none; } .tb-close-icon { display: block; color: #666; text-align: center; line-height: 29px; width: 29px; height: 29px; position: absolute; top: 0; right: 0; } .tb-close-icon:before { content: "\f158"; content: "\f158" / ''; font: normal 20px/29px dashicons; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #TB_closeWindowButton:hover .tb-close-icon, #TB_closeWindowButton:focus .tb-close-icon { color: #006799; } #TB_closeWindowButton:focus .tb-close-icon { -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); } jcrop/Jcrop.gif000064400000000503152375074240007434 0ustar00GIF89a! NETSCAPE2.0! ,@ y\x*! , j^[С쥵! ,L`bдXi}! ,`zbhX{! ,  kTLY,! ,Dj^[С쥵! ,abдXi}! ,azbhX{;jcrop/jquery.Jcrop.min.css000064400000004024152375074240011561 0ustar00/* jquery.Jcrop.min.css v0.9.15 (build:20180819) */ .jcrop-holder{direction:ltr;text-align:left;-ms-touch-action:none}.jcrop-hline,.jcrop-vline{background:#fff url(Jcrop.gif);font-size:0;position:absolute}.jcrop-vline{height:100%;width:1px!important}.jcrop-vline.right{right:0}.jcrop-hline{height:1px!important;width:100%}.jcrop-hline.bottom{bottom:0}.jcrop-tracker{height:100%;width:100%;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none}.jcrop-handle{background-color:#333;border:1px #eee solid;width:7px;height:7px;font-size:1px}.jcrop-handle.ord-n{left:50%;margin-left:-4px;margin-top:-4px;top:0}.jcrop-handle.ord-s{bottom:0;left:50%;margin-bottom:-4px;margin-left:-4px}.jcrop-handle.ord-e{margin-right:-4px;margin-top:-4px;right:0;top:50%}.jcrop-handle.ord-w{left:0;margin-left:-4px;margin-top:-4px;top:50%}.jcrop-handle.ord-nw{left:0;margin-left:-4px;margin-top:-4px;top:0}.jcrop-handle.ord-ne{margin-right:-4px;margin-top:-4px;right:0;top:0}.jcrop-handle.ord-se{bottom:0;margin-bottom:-4px;margin-right:-4px;right:0}.jcrop-handle.ord-sw{bottom:0;left:0;margin-bottom:-4px;margin-left:-4px}.jcrop-dragbar.ord-n,.jcrop-dragbar.ord-s{height:7px;width:100%}.jcrop-dragbar.ord-e,.jcrop-dragbar.ord-w{height:100%;width:7px}.jcrop-dragbar.ord-n{margin-top:-4px}.jcrop-dragbar.ord-s{bottom:0;margin-bottom:-4px}.jcrop-dragbar.ord-e{margin-right:-4px;right:0}.jcrop-dragbar.ord-w{margin-left:-4px}.jcrop-light .jcrop-hline,.jcrop-light .jcrop-vline{background:#fff;filter:alpha(opacity=70)!important;opacity:.7!important}.jcrop-light .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#000;border-color:#fff;border-radius:3px}.jcrop-dark .jcrop-hline,.jcrop-dark .jcrop-vline{background:#000;filter:alpha(opacity=70)!important;opacity:.7!important}.jcrop-dark .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#fff;border-color:#000;border-radius:3px}.solid-line .jcrop-hline,.solid-line .jcrop-vline{background:#fff}.jcrop-holder img,img.jcrop-preview{max-width:none} jcrop/jquery.Jcrop.min.js000064400000054071152375074240011414 0ustar00/** * jquery.Jcrop.min.js v0.9.15 (build:20180819) * jQuery Image Cropping Plugin - released under MIT License * Copyright (c) 2008-2018 Tapmodo Interactive LLC * https://github.com/tapmodo/Jcrop */ !function($){$.Jcrop=function(obj,opt){function px(n){return Math.round(n)+"px"}function cssClass(cl){return options.baseClass+"-"+cl}function supportsColorFade(){return $.fx.step.hasOwnProperty("backgroundColor")}function getPos(obj){var pos=$(obj).offset();return[pos.left,pos.top]}function mouseAbs(e){return[e.pageX-docOffset[0],e.pageY-docOffset[1]]}function setOptions(opt){"object"!=typeof opt&&(opt={}),options=$.extend(options,opt),$.each(["onChange","onSelect","onRelease","onDblClick"],function(i,e){"function"!=typeof options[e]&&(options[e]=function(){})})}function startDragMode(mode,pos,touch){if(docOffset=getPos($img),Tracker.setCursor("move"===mode?mode:mode+"-resize"),"move"===mode)return Tracker.activateHandlers(createMover(pos),doneSelect,touch);var fc=Coords.getFixed(),opp=oppLockCorner(mode),opc=Coords.getCorner(oppLockCorner(opp));Coords.setPressed(Coords.getCorner(opp)),Coords.setCurrent(opc),Tracker.activateHandlers(dragmodeHandler(mode,fc),doneSelect,touch)}function dragmodeHandler(mode,f){return function(pos){if(options.aspectRatio)switch(mode){case"e":pos[1]=f.y+1;break;case"w":pos[1]=f.y+1;break;case"n":pos[0]=f.x+1;break;case"s":pos[0]=f.x+1}else switch(mode){case"e":pos[1]=f.y2;break;case"w":pos[1]=f.y2;break;case"n":pos[0]=f.x2;break;case"s":pos[0]=f.x2}Coords.setCurrent(pos),Selection.update()}}function createMover(pos){var lloc=pos;return KeyManager.watchKeys(),function(pos){Coords.moveOffset([pos[0]-lloc[0],pos[1]-lloc[1]]),lloc=pos,Selection.update()}}function oppLockCorner(ord){switch(ord){case"n":return"sw";case"s":return"nw";case"e":return"nw";case"w":return"ne";case"ne":return"sw";case"nw":return"se";case"se":return"nw";case"sw":return"ne"}}function createDragger(ord){return function(e){return options.disabled?!1:"move"!==ord||options.allowMove?(docOffset=getPos($img),btndown=!0,startDragMode(ord,mouseAbs(e)),e.stopPropagation(),e.preventDefault(),!1):!1}}function presize($obj,w,h){var nw=$obj.width(),nh=$obj.height();nw>w&&w>0&&(nw=w,nh=w/$obj.width()*$obj.height()),nh>h&&h>0&&(nh=h,nw=h/$obj.height()*$obj.width()),xscale=$obj.width()/nw,yscale=$obj.height()/nh,$obj.width(nw).height(nh)}function unscale(c){return{x:c.x*xscale,y:c.y*yscale,x2:c.x2*xscale,y2:c.y2*yscale,w:c.w*xscale,h:c.h*yscale}}function doneSelect(){var c=Coords.getFixed();c.w>options.minSelect[0]&&c.h>options.minSelect[1]?(Selection.enableHandles(),Selection.done()):Selection.release(),Tracker.setCursor(options.allowSelect?"crosshair":"default")}function newSelection(e){if(!options.disabled&&options.allowSelect){btndown=!0,docOffset=getPos($img),Selection.disableHandles(),Tracker.setCursor("crosshair");var pos=mouseAbs(e);return Coords.setPressed(pos),Selection.update(),Tracker.activateHandlers(selectDrag,doneSelect,"touch"===e.type.substring(0,5)),KeyManager.watchKeys(),e.stopPropagation(),e.preventDefault(),!1}}function selectDrag(pos){Coords.setCurrent(pos),Selection.update()}function newTracker(){var trk=$("
").addClass(cssClass("tracker"));return is_msie&&trk.css({opacity:0,backgroundColor:"white"}),trk}function setClass(cname){$div.removeClass().addClass(cssClass("holder")).addClass(cname)}function animateTo(a,callback){function queueAnimator(){window.setTimeout(animator,interv)}var x1=a[0]/xscale,y1=a[1]/yscale,x2=a[2]/xscale,y2=a[3]/yscale;if(!animating){var animto=Coords.flipCoords(x1,y1,x2,y2),c=Coords.getFixed(),initcr=[c.x,c.y,c.x2,c.y2],animat=initcr,interv=options.animationDelay,ix1=animto[0]-initcr[0],iy1=animto[1]-initcr[1],ix2=animto[2]-initcr[2],iy2=animto[3]-initcr[3],pcent=0,velocity=options.swingSpeed;x1=animat[0],y1=animat[1],x2=animat[2],y2=animat[3],Selection.animMode(!0);var animator=function(){return function(){pcent+=(100-pcent)/velocity,animat[0]=Math.round(x1+pcent/100*ix1),animat[1]=Math.round(y1+pcent/100*iy1),animat[2]=Math.round(x2+pcent/100*ix2),animat[3]=Math.round(y2+pcent/100*iy2),pcent>=99.8&&(pcent=100),100>pcent?(setSelectRaw(animat),queueAnimator()):(Selection.done(),Selection.animMode(!1),"function"==typeof callback&&callback.call(api))}}();queueAnimator()}}function setSelect(rect){setSelectRaw([rect[0]/xscale,rect[1]/yscale,rect[2]/xscale,rect[3]/yscale]),options.onSelect.call(api,unscale(Coords.getFixed())),Selection.enableHandles()}function setSelectRaw(l){Coords.setPressed([l[0],l[1]]),Coords.setCurrent([l[2],l[3]]),Selection.update()}function tellSelect(){return unscale(Coords.getFixed())}function tellScaled(){return Coords.getFixed()}function setOptionsNew(opt){setOptions(opt),interfaceUpdate()}function disableCrop(){options.disabled=!0,Selection.disableHandles(),Selection.setCursor("default"),Tracker.setCursor("default")}function enableCrop(){options.disabled=!1,interfaceUpdate()}function cancelCrop(){Selection.done(),Tracker.activateHandlers(null,null)}function destroy(){$div.remove(),$origimg.show(),$origimg.css("visibility","visible"),$(obj).removeData("Jcrop")}function setImage(src,callback){Selection.release(),disableCrop();var img=new Image;img.onload=function(){var iw=img.width,ih=img.height,bw=options.boxWidth,bh=options.boxHeight;$img.width(iw).height(ih),$img.attr("src",src),$img2.attr("src",src),presize($img,bw,bh),boundx=$img.width(),boundy=$img.height(),$img2.width(boundx).height(boundy),$trk.width(boundx+2*bound).height(boundy+2*bound),$div.width(boundx).height(boundy),Shade.resize(boundx,boundy),enableCrop(),"function"==typeof callback&&callback.call(api)},img.src=src}function colorChangeMacro($obj,color,now){var mycolor=color||options.bgColor;options.bgFade&&supportsColorFade()&&options.fadeTime&&!now?$obj.animate({backgroundColor:mycolor},{queue:!1,duration:options.fadeTime}):$obj.css("backgroundColor",mycolor)}function interfaceUpdate(alt){options.allowResize?alt?Selection.enableOnly():Selection.enableHandles():Selection.disableHandles(),Tracker.setCursor(options.allowSelect?"crosshair":"default"),Selection.setCursor(options.allowMove?"move":"default"),options.hasOwnProperty("trueSize")&&(xscale=options.trueSize[0]/boundx,yscale=options.trueSize[1]/boundy),options.hasOwnProperty("setSelect")&&(setSelect(options.setSelect),Selection.done(),delete options.setSelect),Shade.refresh(),options.bgColor!=bgcolor&&(colorChangeMacro(options.shade?Shade.getShades():$div,options.shade?options.shadeColor||options.bgColor:options.bgColor),bgcolor=options.bgColor),bgopacity!=options.bgOpacity&&(bgopacity=options.bgOpacity,options.shade?Shade.refresh():Selection.setBgOpacity(bgopacity)),xlimit=options.maxSize[0]||0,ylimit=options.maxSize[1]||0,xmin=options.minSize[0]||0,ymin=options.minSize[1]||0,options.hasOwnProperty("outerImage")&&($img.attr("src",options.outerImage),delete options.outerImage),Selection.refresh()}var docOffset,options=$.extend({},$.Jcrop.defaults),_ua=navigator.userAgent.toLowerCase(),is_msie=/msie/.test(_ua),ie6mode=/msie [1-6]\./.test(_ua);"object"!=typeof obj&&(obj=$(obj)[0]),"object"!=typeof opt&&(opt={}),setOptions(opt);var img_css={border:"none",visibility:"visible",margin:0,padding:0,position:"absolute",top:0,left:0},$origimg=$(obj),img_mode=!0;if("IMG"==obj.tagName){if(0!=$origimg[0].width&&0!=$origimg[0].height)$origimg.width($origimg[0].width),$origimg.height($origimg[0].height);else{var tempImage=new Image;tempImage.src=$origimg[0].src,$origimg.width(tempImage.width),$origimg.height(tempImage.height)}var $img=$origimg.clone().removeAttr("id").css(img_css).show();$img.width($origimg.width()),$img.height($origimg.height()),$origimg.after($img).hide()}else $img=$origimg.css(img_css).show(),img_mode=!1,null===options.shade&&(options.shade=!0);presize($img,options.boxWidth,options.boxHeight);var boundx=$img.width(),boundy=$img.height(),$div=$("
").width(boundx).height(boundy).addClass(cssClass("holder")).css({position:"relative",backgroundColor:options.bgColor}).insertAfter($origimg).append($img);options.addClass&&$div.addClass(options.addClass);var $img2=$("
"),$img_holder=$("
").width("100%").height("100%").css({zIndex:310,position:"absolute",overflow:"hidden"}),$hdl_holder=$("
").width("100%").height("100%").css("zIndex",320),$sel=$("
").css({position:"absolute",zIndex:600}).dblclick(function(){var c=Coords.getFixed();options.onDblClick.call(api,c)}).insertBefore($img).append($img_holder,$hdl_holder);img_mode&&($img2=$("").attr("src",$img.attr("src")).css(img_css).width(boundx).height(boundy),$img_holder.append($img2)),ie6mode&&$sel.css({overflowY:"hidden"});var xlimit,ylimit,xmin,ymin,xscale,yscale,btndown,animating,shift_down,bound=options.boundary,$trk=newTracker().width(boundx+2*bound).height(boundy+2*bound).css({position:"absolute",top:px(-bound),left:px(-bound),zIndex:290}).mousedown(newSelection),bgcolor=options.bgColor,bgopacity=options.bgOpacity;docOffset=getPos($img);var Touch=function(){function hasTouchSupport(){var i,support={},events=["touchstart","touchmove","touchend"],el=document.createElement("div");try{for(i=0;ix1+ox&&(ox-=ox+x1),0>y1+oy&&(oy-=oy+y1),y2+oy>boundy&&(oy+=boundy-(y2+oy)),x2+ox>boundx&&(ox+=boundx-(x2+ox)),x1+=ox,x2+=ox,y1+=oy,y2+=oy}function getCorner(ord){var c=getFixed();switch(ord){case"ne":return[c.x2,c.y];case"nw":return[c.x,c.y];case"se":return[c.x2,c.y2];case"sw":return[c.x,c.y2]}}function getFixed(){if(!options.aspectRatio)return getRect();var xx,yy,w,h,aspect=options.aspectRatio,min_x=options.minSize[0]/xscale,max_x=options.maxSize[0]/xscale,max_y=options.maxSize[1]/yscale,rw=x2-x1,rh=y2-y1,rwa=Math.abs(rw),rha=Math.abs(rh),real_ratio=rwa/rha;return 0===max_x&&(max_x=10*boundx),0===max_y&&(max_y=10*boundy),aspect>real_ratio?(yy=y2,w=rha*aspect,xx=0>rw?x1-w:w+x1,0>xx?(xx=0,h=Math.abs((xx-x1)/aspect),yy=0>rh?y1-h:h+y1):xx>boundx&&(xx=boundx,h=Math.abs((xx-x1)/aspect),yy=0>rh?y1-h:h+y1)):(xx=x2,h=rwa/aspect,yy=0>rh?y1-h:y1+h,0>yy?(yy=0,w=Math.abs((yy-y1)*aspect),xx=0>rw?x1-w:w+x1):yy>boundy&&(yy=boundy,w=Math.abs(yy-y1)*aspect,xx=0>rw?x1-w:w+x1)),xx>x1?(min_x>xx-x1?xx=x1+min_x:xx-x1>max_x&&(xx=x1+max_x),yy=yy>y1?y1+(xx-x1)/aspect:y1-(xx-x1)/aspect):x1>xx&&(min_x>x1-xx?xx=x1-min_x:x1-xx>max_x&&(xx=x1-max_x),yy=yy>y1?y1+(x1-xx)/aspect:y1-(x1-xx)/aspect),0>xx?(x1-=xx,xx=0):xx>boundx&&(x1-=xx-boundx,xx=boundx),0>yy?(y1-=yy,yy=0):yy>boundy&&(y1-=yy-boundy,yy=boundy),makeObj(flipCoords(x1,y1,xx,yy))}function rebound(p){return p[0]<0&&(p[0]=0),p[1]<0&&(p[1]=0),p[0]>boundx&&(p[0]=boundx),p[1]>boundy&&(p[1]=boundy),[Math.round(p[0]),Math.round(p[1])]}function flipCoords(x1,y1,x2,y2){var xa=x1,xb=x2,ya=y1,yb=y2;return x1>x2&&(xa=x2,xb=x1),y1>y2&&(ya=y2,yb=y1),[xa,ya,xb,yb]}function getRect(){var delta,xsize=x2-x1,ysize=y2-y1;return xlimit&&Math.abs(xsize)>xlimit&&(x2=xsize>0?x1+xlimit:x1-xlimit),ylimit&&Math.abs(ysize)>ylimit&&(y2=ysize>0?y1+ylimit:y1-ylimit),ymin/yscale&&Math.abs(ysize)0?y1+ymin/yscale:y1-ymin/yscale),xmin/xscale&&Math.abs(xsize)0?x1+xmin/xscale:x1-xmin/xscale),0>x1&&(x2-=x1,x1-=x1),0>y1&&(y2-=y1,y1-=y1),0>x2&&(x1-=x2,x2-=x2),0>y2&&(y1-=y2,y2-=y2),x2>boundx&&(delta=x2-boundx,x1-=delta,x2-=delta),y2>boundy&&(delta=y2-boundy,y1-=delta,y2-=delta),x1>boundx&&(delta=x1-boundy,y2-=delta,y1-=delta),y1>boundy&&(delta=y1-boundy,y2-=delta,y1-=delta),makeObj(flipCoords(x1,y1,x2,y2))}function makeObj(a){return{x:a[0],y:a[1],x2:a[2],y2:a[3],w:a[2]-a[0],h:a[3]-a[1]}}var ox,oy,x1=0,y1=0,x2=0,y2=0;return{flipCoords:flipCoords,setPressed:setPressed,setCurrent:setCurrent,getOffset:getOffset,moveOffset:moveOffset,getCorner:getCorner,getFixed:getFixed}}(),Shade=function(){function resizeShades(w,h){shades.left.css({height:px(h)}),shades.right.css({height:px(h)})}function updateAuto(){return updateShade(Coords.getFixed())}function updateShade(c){shades.top.css({left:px(c.x),width:px(c.w),height:px(c.y)}),shades.bottom.css({top:px(c.y2),left:px(c.x),width:px(c.w),height:px(boundy-c.y2)}),shades.right.css({left:px(c.x2),width:px(boundx-c.x2)}),shades.left.css({width:px(c.x)})}function createShade(){return $("
").css({position:"absolute",backgroundColor:options.shadeColor||options.bgColor}).appendTo(holder)}function enableShade(){enabled||(enabled=!0,holder.insertBefore($img),updateAuto(),Selection.setBgOpacity(1,0,1),$img2.hide(),setBgColor(options.shadeColor||options.bgColor,1),Selection.isAwake()?setOpacity(options.bgOpacity,1):setOpacity(1,1))}function setBgColor(color,now){colorChangeMacro(getShades(),color,now)}function disableShade(){enabled&&(holder.remove(),$img2.show(),enabled=!1,Selection.isAwake()?Selection.setBgOpacity(options.bgOpacity,1,1):(Selection.setBgOpacity(1,1,1),Selection.disableHandles()),colorChangeMacro($div,0,1))}function setOpacity(opacity,now){enabled&&(options.bgFade&&!now?holder.animate({opacity:1-opacity},{queue:!1,duration:options.fadeTime}):holder.css({opacity:1-opacity}))}function refreshAll(){options.shade?enableShade():disableShade(),Selection.isAwake()&&setOpacity(options.bgOpacity)}function getShades(){return holder.children()}var enabled=!1,holder=$("
").css({position:"absolute",zIndex:240,opacity:0}),shades={top:createShade(),left:createShade().height(boundy),right:createShade().height(boundy),bottom:createShade()};return{update:updateAuto,updateRaw:updateShade,getShades:getShades,setBgColor:setBgColor,enable:enableShade,disable:disableShade,resize:resizeShades,refresh:refreshAll,opacity:setOpacity}}(),Selection=function(){function insertBorder(type){var jq=$("
").css({position:"absolute",opacity:options.borderOpacity}).addClass(cssClass(type));return $img_holder.append(jq),jq}function dragDiv(ord,zi){var jq=$("
").mousedown(createDragger(ord)).css({cursor:ord+"-resize",position:"absolute",zIndex:zi}).addClass("ord-"+ord);return Touch.support&&jq.bind("touchstart.jcrop",Touch.createDragger(ord)),$hdl_holder.append(jq),jq}function insertHandle(ord){var hs=options.handleSize,div=dragDiv(ord,hdep++).css({opacity:options.handleOpacity}).addClass(cssClass("handle"));return hs&&div.width(hs).height(hs),div}function insertDragbar(ord){return dragDiv(ord,hdep++).addClass("jcrop-dragbar")}function createDragbars(li){var i;for(i=0;i').css({position:"fixed",left:"-120px",width:"12px"}).addClass("jcrop-keymgr"),$keywrap=$("
").css({position:"absolute",overflow:"hidden"}).append($keymgr);return options.keySupport&&($keymgr.keydown(parseKey).blur(onBlur),ie6mode||!options.fixedSupport?($keymgr.css({position:"absolute",left:"-20px"}),$keywrap.append($keymgr).insertBefore($img)):$keymgr.insertBefore($img)),{watchKeys:watchKeys}}();Touch.support&&$trk.bind("touchstart.jcrop",Touch.newSelection),$hdl_holder.hide(),interfaceUpdate(!0);var api={setImage:setImage,animateTo:animateTo,setSelect:setSelect,setOptions:setOptionsNew,tellSelect:tellSelect,tellScaled:tellScaled,setClass:setClass,disable:disableCrop,enable:enableCrop,cancel:cancelCrop,release:Selection.release,destroy:destroy,focus:KeyManager.watchKeys,getBounds:function(){return[boundx*xscale,boundy*yscale]},getWidgetSize:function(){return[boundx,boundy]},getScaleFactor:function(){return[xscale,yscale]},getOptions:function(){return options},ui:{holder:$div,selection:$sel}};return is_msie&&$div.bind("selectstart",function(){return!1}),$origimg.data("Jcrop",api),api},$.fn.Jcrop=function(options,callback){var api;return this.each(function(){if($(this).data("Jcrop")){if("api"===options)return $(this).data("Jcrop");$(this).data("Jcrop").setOptions(options)}else"IMG"==this.tagName?$.Jcrop.Loader(this,function(){$(this).css({display:"block",visibility:"hidden"}),api=$.Jcrop(this,options),$.isFunction(callback)&&callback.call(api)}):($(this).css({display:"block",visibility:"hidden"}),api=$.Jcrop(this,options),$.isFunction(callback)&&callback.call(api))}),this},$.Jcrop.Loader=function(imgobj,success,error){function completeCheck(){img.complete?($img.unbind(".jcloader"),$.isFunction(success)&&success.call(img)):window.setTimeout(completeCheck,50)}var $img=$(imgobj),img=$img[0];$img.bind("load.jcloader",completeCheck).bind("error.jcloader",function(){$img.unbind(".jcloader"),$.isFunction(error)&&error.call(img)}),img.complete&&$.isFunction(success)&&($img.unbind(".jcloader"),success.call(img))},$.Jcrop.defaults={allowSelect:!0,allowMove:!0,allowResize:!0,trackDocument:!0,baseClass:"jcrop",addClass:null,bgColor:"black",bgOpacity:.6,bgFade:!1,borderOpacity:.4,handleOpacity:.5,handleSize:null,aspectRatio:0,keySupport:!0,createHandles:["n","s","e","w","nw","ne","se","sw"],createDragbars:["n","s","e","w"],createBorders:["n","s","e","w"],drawBorders:!0,dragEdges:!0,fixedSupport:!0,touchSupport:null,shade:null,boxWidth:0,boxHeight:0,boundary:2,fadeTime:400,animationDelay:20,swingSpeed:3,minSelect:[0,0],maxSize:[0,0],minSize:[0,0],onChange:function(){},onSelect:function(){},onDblClick:function(){},onRelease:function(){}}}(jQuery); wp-emoji-loader.min.js000064400000005641152375074240010676 0ustar00/*! This file is auto-generated */ var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf(){i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});wp-sanitize.js000064400000003126152375074240007367 0ustar00/** * @output wp-includes/js/wp-sanitize.js */ /* eslint-env es6 */ ( function () { window.wp = window.wp || {}; /** * wp.sanitize * * Helper functions to sanitize strings. */ wp.sanitize = { /** * Strip HTML tags. * * @param {string} text - Text to strip the HTML tags from. * * @return {string} Stripped text. */ stripTags: function( text ) { if ( 'string' !== typeof text ) { return ''; } const domParser = new DOMParser(); const htmlDocument = domParser.parseFromString( text, 'text/html' ); /* * The following self-assignment appears to be a no-op, but it isn't. * It enforces the escaping. Reading the `innerText` property decodes * character references, returning a raw string. When written, however, * the text is re-escaped to ensure that the rendered text replicates * what it's given. * * See . */ htmlDocument.body.innerText = htmlDocument.body.innerText; // Return the text with stripped tags. return htmlDocument.body.innerHTML; }, /** * Strip HTML tags and convert HTML entities. * * @param {string} text - Text to strip tags and convert HTML entities. * * @return {string} Sanitized text. */ stripTagsAndEncodeText: function( text ) { let _text = wp.sanitize.stripTags( text ), textarea = document.createElement( 'textarea' ); try { textarea.textContent = _text; _text = wp.sanitize.stripTags( textarea.value ); } catch ( er ) {} return _text; } }; }() ); masonry.min.js000064400000057112152375074240007373 0ustar00/*! This file is auto-generated */ /*! * Masonry PACKAGED v4.2.2 * Cascading grid layout library * https://masonry.desandro.com * MIT License * by David DeSandro */ !function(t,e){"function"==typeof define&&define.amd?define("jquery-bridget/jquery-bridget",["jquery"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("jquery")):t.jQueryBridget=e(t,t.jQuery)}(window,function(t,e){"use strict";function i(i,r,a){function h(t,e,n){var o,r="$()."+i+'("'+e+'")';return t.each(function(t,h){var u=a.data(h,i);if(!u)return void s(i+" not initialized. Cannot call methods, i.e. "+r);var d=u[e];if(!d||"_"==e.charAt(0))return void s(r+" is not a valid method");var l=d.apply(u,n);o=void 0===o?l:o}),void 0!==o?o:t}function u(t,e){t.each(function(t,n){var o=a.data(n,i);o?(o.option(e),o._init()):(o=new r(n,e),a.data(n,i,o))})}a=a||e||t.jQuery,a&&(r.prototype.option||(r.prototype.option=function(t){a.isPlainObject(t)&&(this.options=a.extend(!0,this.options,t))}),a.fn[i]=function(t){if("string"==typeof t){var e=o.call(arguments,1);return h(this,t,e)}return u(this,t),this},n(a))}function n(t){!t||t&&t.bridget||(t.bridget=i)}var o=Array.prototype.slice,r=t.console,s="undefined"==typeof r?function(){}:function(t){r.error(t)};return n(e||t.jQuery),i}),function(t,e){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",e):"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var i=this._events=this._events||{},n=i[t]=i[t]||[];return-1==n.indexOf(e)&&n.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var i=this._onceEvents=this._onceEvents||{},n=i[t]=i[t]||{};return n[e]=!0,this}},e.off=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=i.indexOf(e);return-1!=n&&i.splice(n,1),this}},e.emitEvent=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){i=i.slice(0),e=e||[];for(var n=this._onceEvents&&this._onceEvents[t],o=0;oe;e++){var i=h[e];t[i]=0}return t}function n(t){var e=getComputedStyle(t);return e||a("Style returned "+e+". Are you running this code in a hidden iframe on Firefox? See https://bit.ly/getsizebug1"),e}function o(){if(!d){d=!0;var e=document.createElement("div");e.style.width="200px",e.style.padding="1px 2px 3px 4px",e.style.borderStyle="solid",e.style.borderWidth="1px 2px 3px 4px",e.style.boxSizing="border-box";var i=document.body||document.documentElement;i.appendChild(e);var o=n(e);s=200==Math.round(t(o.width)),r.isBoxSizeOuter=s,i.removeChild(e)}}function r(e){if(o(),"string"==typeof e&&(e=document.querySelector(e)),e&&"object"==typeof e&&e.nodeType){var r=n(e);if("none"==r.display)return i();var a={};a.width=e.offsetWidth,a.height=e.offsetHeight;for(var d=a.isBorderBox="border-box"==r.boxSizing,l=0;u>l;l++){var c=h[l],f=r[c],m=parseFloat(f);a[c]=isNaN(m)?0:m}var p=a.paddingLeft+a.paddingRight,g=a.paddingTop+a.paddingBottom,y=a.marginLeft+a.marginRight,v=a.marginTop+a.marginBottom,_=a.borderLeftWidth+a.borderRightWidth,z=a.borderTopWidth+a.borderBottomWidth,E=d&&s,b=t(r.width);b!==!1&&(a.width=b+(E?0:p+_));var x=t(r.height);return x!==!1&&(a.height=x+(E?0:g+z)),a.innerWidth=a.width-(p+_),a.innerHeight=a.height-(g+z),a.outerWidth=a.width+y,a.outerHeight=a.height+v,a}}var s,a="undefined"==typeof console?e:function(t){console.error(t)},h=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"],u=h.length,d=!1;return r}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("desandro-matches-selector/matches-selector",e):"object"==typeof module&&module.exports?module.exports=e():t.matchesSelector=e()}(window,function(){"use strict";var t=function(){var t=window.Element.prototype;if(t.matches)return"matches";if(t.matchesSelector)return"matchesSelector";for(var e=["webkit","moz","ms","o"],i=0;is?"round":"floor";r=Math[a](r),this.cols=Math.max(r,1)},n.getContainerWidth=function(){var t=this._getOption("fitWidth"),i=t?this.element.parentNode:this.element,n=e(i);this.containerWidth=n&&n.innerWidth},n._getItemLayoutPosition=function(t){t.getSize();var e=t.size.outerWidth%this.columnWidth,i=e&&1>e?"round":"ceil",n=Math[i](t.size.outerWidth/this.columnWidth);n=Math.min(n,this.cols);for(var o=this.options.horizontalOrder?"_getHorizontalColPosition":"_getTopColPosition",r=this[o](n,t),s={x:this.columnWidth*r.col,y:r.y},a=r.y+t.size.outerHeight,h=n+r.col,u=r.col;h>u;u++)this.colYs[u]=a;return s},n._getTopColPosition=function(t){var e=this._getTopColGroup(t),i=Math.min.apply(Math,e);return{col:e.indexOf(i),y:i}},n._getTopColGroup=function(t){if(2>t)return this.colYs;for(var e=[],i=this.cols+1-t,n=0;i>n;n++)e[n]=this._getColGroupY(n,t);return e},n._getColGroupY=function(t,e){if(2>e)return this.colYs[t];var i=this.colYs.slice(t,t+e);return Math.max.apply(Math,i)},n._getHorizontalColPosition=function(t,e){var i=this.horizontalColIndex%this.cols,n=t>1&&i+t>this.cols;i=n?0:i;var o=e.size.outerWidth&&e.size.outerHeight;return this.horizontalColIndex=o?i+t:this.horizontalColIndex,{col:i,y:this._getColGroupY(i,t)}},n._manageStamp=function(t){var i=e(t),n=this._getElementOffset(t),o=this._getOption("originLeft"),r=o?n.left:n.right,s=r+i.outerWidth,a=Math.floor(r/this.columnWidth);a=Math.max(0,a);var h=Math.floor(s/this.columnWidth);h-=s%this.columnWidth?0:1,h=Math.min(this.cols-1,h);for(var u=this._getOption("originTop"),d=(u?n.top:n.bottom)+i.outerHeight,l=a;h>=l;l++)this.colYs[l]=Math.max(d,this.colYs[l])},n._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var t={height:this.maxY};return this._getOption("fitWidth")&&(t.width=this._getContainerFitWidth()),t},n._getContainerFitWidth=function(){for(var t=0,e=this.cols;--e&&0===this.colYs[e];)t++;return(this.cols-t)*this.columnWidth-this.gutter},n.needsResizeLayout=function(){var t=this.containerWidth;return this.getContainerWidth(),t!=this.containerWidth},i});dist/edit-site.js000064400006574040152375074240007765 0ustar00"use strict"; var wp; (wp ||= {}).editSite = (() => { var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __require = /* @__PURE__ */ ((x2) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x2, { get: (a2, b2) => (typeof require !== "undefined" ? require : a2)[b2] }) : x2)(function(x2) { if (typeof require !== "undefined") return require.apply(this, arguments); throw Error('Dynamic require of "' + x2 + '" is not supported'); }); var __commonJS = (cb, mod) => function __require4() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all) => { for (var name2 in all) __defProp(target, name2, { get: all[name2], enumerable: true }); }; var __copyProps = (to2, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to2, key) && key !== except) __defProp(to2, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to2; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // package-external:@wordpress/blocks var require_blocks = __commonJS({ "package-external:@wordpress/blocks"(exports, module) { module.exports = window.wp.blocks; } }); // package-external:@wordpress/block-library var require_block_library = __commonJS({ "package-external:@wordpress/block-library"(exports, module) { module.exports = window.wp.blockLibrary; } }); // package-external:@wordpress/data var require_data = __commonJS({ "package-external:@wordpress/data"(exports, module) { module.exports = window.wp.data; } }); // package-external:@wordpress/deprecated var require_deprecated = __commonJS({ "package-external:@wordpress/deprecated"(exports, module) { module.exports = window.wp.deprecated; } }); // package-external:@wordpress/element var require_element = __commonJS({ "package-external:@wordpress/element"(exports, module) { module.exports = window.wp.element; } }); // package-external:@wordpress/editor var require_editor = __commonJS({ "package-external:@wordpress/editor"(exports, module) { module.exports = window.wp.editor; } }); // package-external:@wordpress/preferences var require_preferences = __commonJS({ "package-external:@wordpress/preferences"(exports, module) { module.exports = window.wp.preferences; } }); // package-external:@wordpress/widgets var require_widgets = __commonJS({ "package-external:@wordpress/widgets"(exports, module) { module.exports = window.wp.widgets; } }); // package-external:@wordpress/core-data var require_core_data = __commonJS({ "package-external:@wordpress/core-data"(exports, module) { module.exports = window.wp.coreData; } }); // package-external:@wordpress/block-editor var require_block_editor = __commonJS({ "package-external:@wordpress/block-editor"(exports, module) { module.exports = window.wp.blockEditor; } }); // package-external:@wordpress/i18n var require_i18n = __commonJS({ "package-external:@wordpress/i18n"(exports, module) { module.exports = window.wp.i18n; } }); // package-external:@wordpress/patterns var require_patterns = __commonJS({ "package-external:@wordpress/patterns"(exports, module) { module.exports = window.wp.patterns; } }); // package-external:@wordpress/private-apis var require_private_apis = __commonJS({ "package-external:@wordpress/private-apis"(exports, module) { module.exports = window.wp.privateApis; } }); // package-external:@wordpress/router var require_router = __commonJS({ "package-external:@wordpress/router"(exports, module) { module.exports = window.wp.router; } }); // package-external:@wordpress/components var require_components = __commonJS({ "package-external:@wordpress/components"(exports, module) { module.exports = window.wp.components; } }); // vendor-external:react/jsx-runtime var require_jsx_runtime = __commonJS({ "vendor-external:react/jsx-runtime"(exports, module) { module.exports = window.ReactJSXRuntime; } }); // vendor-external:react var require_react = __commonJS({ "vendor-external:react"(exports, module) { module.exports = window.React; } }); // vendor-external:react-dom var require_react_dom = __commonJS({ "vendor-external:react-dom"(exports, module) { module.exports = window.ReactDOM; } }); // node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js var require_use_sync_external_store_shim_development = __commonJS({ "node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js"(exports) { "use strict"; (function() { function is2(x2, y2) { return x2 === y2 && (0 !== x2 || 1 / x2 === 1 / y2) || x2 !== x2 && y2 !== y2; } function useSyncExternalStore$2(subscribe2, getSnapshot) { didWarnOld18Alpha || void 0 === React10.startTransition || (didWarnOld18Alpha = true, console.error( "You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release." )); var value = getSnapshot(); if (!didWarnUncachedGetSnapshot) { var cachedValue = getSnapshot(); objectIs(value, cachedValue) || (console.error( "The result of getSnapshot should be cached to avoid an infinite loop" ), didWarnUncachedGetSnapshot = true); } cachedValue = useState71({ inst: { value, getSnapshot } }); var inst = cachedValue[0].inst, forceUpdate = cachedValue[1]; useLayoutEffect7( function() { inst.value = value; inst.getSnapshot = getSnapshot; checkIfSnapshotChanged(inst) && forceUpdate({ inst }); }, [subscribe2, value, getSnapshot] ); useEffect51( function() { checkIfSnapshotChanged(inst) && forceUpdate({ inst }); return subscribe2(function() { checkIfSnapshotChanged(inst) && forceUpdate({ inst }); }); }, [subscribe2] ); useDebugValue(value); return value; } function checkIfSnapshotChanged(inst) { var latestGetSnapshot = inst.getSnapshot; inst = inst.value; try { var nextValue = latestGetSnapshot(); return !objectIs(inst, nextValue); } catch (error) { return true; } } function useSyncExternalStore$1(subscribe2, getSnapshot) { return getSnapshot(); } "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()); var React10 = require_react(), objectIs = "function" === typeof Object.is ? Object.is : is2, useState71 = React10.useState, useEffect51 = React10.useEffect, useLayoutEffect7 = React10.useLayoutEffect, useDebugValue = React10.useDebugValue, didWarnOld18Alpha = false, didWarnUncachedGetSnapshot = false, shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2; exports.useSyncExternalStore = void 0 !== React10.useSyncExternalStore ? React10.useSyncExternalStore : shim; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error()); })(); } }); // node_modules/use-sync-external-store/shim/index.js var require_shim = __commonJS({ "node_modules/use-sync-external-store/shim/index.js"(exports, module) { "use strict"; if (false) { module.exports = null; } else { module.exports = require_use_sync_external_store_shim_development(); } } }); // package-external:@wordpress/a11y var require_a11y = __commonJS({ "package-external:@wordpress/a11y"(exports, module) { module.exports = window.wp.a11y; } }); // package-external:@wordpress/primitives var require_primitives = __commonJS({ "package-external:@wordpress/primitives"(exports, module) { module.exports = window.wp.primitives; } }); // package-external:@wordpress/compose var require_compose = __commonJS({ "package-external:@wordpress/compose"(exports, module) { module.exports = window.wp.compose; } }); // package-external:@wordpress/plugins var require_plugins = __commonJS({ "package-external:@wordpress/plugins"(exports, module) { module.exports = window.wp.plugins; } }); // package-external:@wordpress/notices var require_notices = __commonJS({ "package-external:@wordpress/notices"(exports, module) { module.exports = window.wp.notices; } }); // package-external:@wordpress/html-entities var require_html_entities = __commonJS({ "package-external:@wordpress/html-entities"(exports, module) { module.exports = window.wp.htmlEntities; } }); // package-external:@wordpress/commands var require_commands = __commonJS({ "package-external:@wordpress/commands"(exports, module) { module.exports = window.wp.commands; } }); // package-external:@wordpress/keycodes var require_keycodes = __commonJS({ "package-external:@wordpress/keycodes"(exports, module) { module.exports = window.wp.keycodes; } }); // package-external:@wordpress/url var require_url = __commonJS({ "package-external:@wordpress/url"(exports, module) { module.exports = window.wp.url; } }); // package-external:@wordpress/dom var require_dom = __commonJS({ "package-external:@wordpress/dom"(exports, module) { module.exports = window.wp.dom; } }); // package-external:@wordpress/keyboard-shortcuts var require_keyboard_shortcuts = __commonJS({ "package-external:@wordpress/keyboard-shortcuts"(exports, module) { module.exports = window.wp.keyboardShortcuts; } }); // package-external:@wordpress/api-fetch var require_api_fetch = __commonJS({ "package-external:@wordpress/api-fetch"(exports, module) { module.exports = window.wp.apiFetch; } }); // package-external:@wordpress/style-engine var require_style_engine = __commonJS({ "package-external:@wordpress/style-engine"(exports, module) { module.exports = window.wp.styleEngine; } }); // node_modules/fast-deep-equal/es6/index.js var require_es6 = __commonJS({ "node_modules/fast-deep-equal/es6/index.js"(exports, module) { "use strict"; module.exports = function equal(a2, b2) { if (a2 === b2) return true; if (a2 && b2 && typeof a2 == "object" && typeof b2 == "object") { if (a2.constructor !== b2.constructor) return false; var length, i2, keys; if (Array.isArray(a2)) { length = a2.length; if (length != b2.length) return false; for (i2 = length; i2-- !== 0; ) if (!equal(a2[i2], b2[i2])) return false; return true; } if (a2 instanceof Map && b2 instanceof Map) { if (a2.size !== b2.size) return false; for (i2 of a2.entries()) if (!b2.has(i2[0])) return false; for (i2 of a2.entries()) if (!equal(i2[1], b2.get(i2[0]))) return false; return true; } if (a2 instanceof Set && b2 instanceof Set) { if (a2.size !== b2.size) return false; for (i2 of a2.entries()) if (!b2.has(i2[0])) return false; return true; } if (ArrayBuffer.isView(a2) && ArrayBuffer.isView(b2)) { length = a2.length; if (length != b2.length) return false; for (i2 = length; i2-- !== 0; ) if (a2[i2] !== b2[i2]) return false; return true; } if (a2.constructor === RegExp) return a2.source === b2.source && a2.flags === b2.flags; if (a2.valueOf !== Object.prototype.valueOf) return a2.valueOf() === b2.valueOf(); if (a2.toString !== Object.prototype.toString) return a2.toString() === b2.toString(); keys = Object.keys(a2); length = keys.length; if (length !== Object.keys(b2).length) return false; for (i2 = length; i2-- !== 0; ) if (!Object.prototype.hasOwnProperty.call(b2, keys[i2])) return false; for (i2 = length; i2-- !== 0; ) { var key = keys[i2]; if (!equal(a2[key], b2[key])) return false; } return true; } return a2 !== a2 && b2 !== b2; }; } }); // node_modules/deepmerge/dist/cjs.js var require_cjs = __commonJS({ "node_modules/deepmerge/dist/cjs.js"(exports, module) { "use strict"; var isMergeableObject = function isMergeableObject2(value) { return isNonNullObject(value) && !isSpecial(value); }; function isNonNullObject(value) { return !!value && typeof value === "object"; } function isSpecial(value) { var stringValue = Object.prototype.toString.call(value); return stringValue === "[object RegExp]" || stringValue === "[object Date]" || isReactElement(value); } var canUseSymbol = typeof Symbol === "function" && Symbol.for; var REACT_ELEMENT_TYPE = canUseSymbol ? /* @__PURE__ */ Symbol.for("react.element") : 60103; function isReactElement(value) { return value.$$typeof === REACT_ELEMENT_TYPE; } function emptyTarget(val) { return Array.isArray(val) ? [] : {}; } function cloneUnlessOtherwiseSpecified(value, options) { return options.clone !== false && options.isMergeableObject(value) ? deepmerge2(emptyTarget(value), value, options) : value; } function defaultArrayMerge(target, source, options) { return target.concat(source).map(function(element) { return cloneUnlessOtherwiseSpecified(element, options); }); } function getMergeFunction(key, options) { if (!options.customMerge) { return deepmerge2; } var customMerge = options.customMerge(key); return typeof customMerge === "function" ? customMerge : deepmerge2; } function getEnumerableOwnPropertySymbols(target) { return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function(symbol3) { return Object.propertyIsEnumerable.call(target, symbol3); }) : []; } function getKeys2(target) { return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target)); } function propertyIsOnObject(object, property) { try { return property in object; } catch (_) { return false; } } function propertyIsUnsafe(target, key) { return propertyIsOnObject(target, key) && !(Object.hasOwnProperty.call(target, key) && Object.propertyIsEnumerable.call(target, key)); } function mergeObject(target, source, options) { var destination = {}; if (options.isMergeableObject(target)) { getKeys2(target).forEach(function(key) { destination[key] = cloneUnlessOtherwiseSpecified(target[key], options); }); } getKeys2(source).forEach(function(key) { if (propertyIsUnsafe(target, key)) { return; } if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) { destination[key] = getMergeFunction(key, options)(target[key], source[key], options); } else { destination[key] = cloneUnlessOtherwiseSpecified(source[key], options); } }); return destination; } function deepmerge2(target, source, options) { options = options || {}; options.arrayMerge = options.arrayMerge || defaultArrayMerge; options.isMergeableObject = options.isMergeableObject || isMergeableObject; options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified; var sourceIsArray = Array.isArray(source); var targetIsArray = Array.isArray(target); var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray; if (!sourceAndTargetTypesMatch) { return cloneUnlessOtherwiseSpecified(source, options); } else if (sourceIsArray) { return options.arrayMerge(target, source, options); } else { return mergeObject(target, source, options); } } deepmerge2.all = function deepmergeAll(array, options) { if (!Array.isArray(array)) { throw new Error("first argument should be an array"); } return array.reduce(function(prev, next) { return deepmerge2(prev, next, options); }, {}); }; var deepmerge_1 = deepmerge2; module.exports = deepmerge_1; } }); // package-external:@wordpress/date var require_date = __commonJS({ "package-external:@wordpress/date"(exports, module) { module.exports = window.wp.date; } }); // package-external:@wordpress/blob var require_blob = __commonJS({ "package-external:@wordpress/blob"(exports, module) { module.exports = window.wp.blob; } }); // node_modules/remove-accents/index.js var require_remove_accents = __commonJS({ "node_modules/remove-accents/index.js"(exports, module) { var characterMap = { "\xC0": "A", "\xC1": "A", "\xC2": "A", "\xC3": "A", "\xC4": "A", "\xC5": "A", "\u1EA4": "A", "\u1EAE": "A", "\u1EB2": "A", "\u1EB4": "A", "\u1EB6": "A", "\xC6": "AE", "\u1EA6": "A", "\u1EB0": "A", "\u0202": "A", "\u1EA2": "A", "\u1EA0": "A", "\u1EA8": "A", "\u1EAA": "A", "\u1EAC": "A", "\xC7": "C", "\u1E08": "C", "\xC8": "E", "\xC9": "E", "\xCA": "E", "\xCB": "E", "\u1EBE": "E", "\u1E16": "E", "\u1EC0": "E", "\u1E14": "E", "\u1E1C": "E", "\u0206": "E", "\u1EBA": "E", "\u1EBC": "E", "\u1EB8": "E", "\u1EC2": "E", "\u1EC4": "E", "\u1EC6": "E", "\xCC": "I", "\xCD": "I", "\xCE": "I", "\xCF": "I", "\u1E2E": "I", "\u020A": "I", "\u1EC8": "I", "\u1ECA": "I", "\xD0": "D", "\xD1": "N", "\xD2": "O", "\xD3": "O", "\xD4": "O", "\xD5": "O", "\xD6": "O", "\xD8": "O", "\u1ED0": "O", "\u1E4C": "O", "\u1E52": "O", "\u020E": "O", "\u1ECE": "O", "\u1ECC": "O", "\u1ED4": "O", "\u1ED6": "O", "\u1ED8": "O", "\u1EDC": "O", "\u1EDE": "O", "\u1EE0": "O", "\u1EDA": "O", "\u1EE2": "O", "\xD9": "U", "\xDA": "U", "\xDB": "U", "\xDC": "U", "\u1EE6": "U", "\u1EE4": "U", "\u1EEC": "U", "\u1EEE": "U", "\u1EF0": "U", "\xDD": "Y", "\xE0": "a", "\xE1": "a", "\xE2": "a", "\xE3": "a", "\xE4": "a", "\xE5": "a", "\u1EA5": "a", "\u1EAF": "a", "\u1EB3": "a", "\u1EB5": "a", "\u1EB7": "a", "\xE6": "ae", "\u1EA7": "a", "\u1EB1": "a", "\u0203": "a", "\u1EA3": "a", "\u1EA1": "a", "\u1EA9": "a", "\u1EAB": "a", "\u1EAD": "a", "\xE7": "c", "\u1E09": "c", "\xE8": "e", "\xE9": "e", "\xEA": "e", "\xEB": "e", "\u1EBF": "e", "\u1E17": "e", "\u1EC1": "e", "\u1E15": "e", "\u1E1D": "e", "\u0207": "e", "\u1EBB": "e", "\u1EBD": "e", "\u1EB9": "e", "\u1EC3": "e", "\u1EC5": "e", "\u1EC7": "e", "\xEC": "i", "\xED": "i", "\xEE": "i", "\xEF": "i", "\u1E2F": "i", "\u020B": "i", "\u1EC9": "i", "\u1ECB": "i", "\xF0": "d", "\xF1": "n", "\xF2": "o", "\xF3": "o", "\xF4": "o", "\xF5": "o", "\xF6": "o", "\xF8": "o", "\u1ED1": "o", "\u1E4D": "o", "\u1E53": "o", "\u020F": "o", "\u1ECF": "o", "\u1ECD": "o", "\u1ED5": "o", "\u1ED7": "o", "\u1ED9": "o", "\u1EDD": "o", "\u1EDF": "o", "\u1EE1": "o", "\u1EDB": "o", "\u1EE3": "o", "\xF9": "u", "\xFA": "u", "\xFB": "u", "\xFC": "u", "\u1EE7": "u", "\u1EE5": "u", "\u1EED": "u", "\u1EEF": "u", "\u1EF1": "u", "\xFD": "y", "\xFF": "y", "\u0100": "A", "\u0101": "a", "\u0102": "A", "\u0103": "a", "\u0104": "A", "\u0105": "a", "\u0106": "C", "\u0107": "c", "\u0108": "C", "\u0109": "c", "\u010A": "C", "\u010B": "c", "\u010C": "C", "\u010D": "c", "C\u0306": "C", "c\u0306": "c", "\u010E": "D", "\u010F": "d", "\u0110": "D", "\u0111": "d", "\u0112": "E", "\u0113": "e", "\u0114": "E", "\u0115": "e", "\u0116": "E", "\u0117": "e", "\u0118": "E", "\u0119": "e", "\u011A": "E", "\u011B": "e", "\u011C": "G", "\u01F4": "G", "\u011D": "g", "\u01F5": "g", "\u011E": "G", "\u011F": "g", "\u0120": "G", "\u0121": "g", "\u0122": "G", "\u0123": "g", "\u0124": "H", "\u0125": "h", "\u0126": "H", "\u0127": "h", "\u1E2A": "H", "\u1E2B": "h", "\u0128": "I", "\u0129": "i", "\u012A": "I", "\u012B": "i", "\u012C": "I", "\u012D": "i", "\u012E": "I", "\u012F": "i", "\u0130": "I", "\u0131": "i", "\u0132": "IJ", "\u0133": "ij", "\u0134": "J", "\u0135": "j", "\u0136": "K", "\u0137": "k", "\u1E30": "K", "\u1E31": "k", "K\u0306": "K", "k\u0306": "k", "\u0139": "L", "\u013A": "l", "\u013B": "L", "\u013C": "l", "\u013D": "L", "\u013E": "l", "\u013F": "L", "\u0140": "l", "\u0141": "l", "\u0142": "l", "\u1E3E": "M", "\u1E3F": "m", "M\u0306": "M", "m\u0306": "m", "\u0143": "N", "\u0144": "n", "\u0145": "N", "\u0146": "n", "\u0147": "N", "\u0148": "n", "\u0149": "n", "N\u0306": "N", "n\u0306": "n", "\u014C": "O", "\u014D": "o", "\u014E": "O", "\u014F": "o", "\u0150": "O", "\u0151": "o", "\u0152": "OE", "\u0153": "oe", "P\u0306": "P", "p\u0306": "p", "\u0154": "R", "\u0155": "r", "\u0156": "R", "\u0157": "r", "\u0158": "R", "\u0159": "r", "R\u0306": "R", "r\u0306": "r", "\u0212": "R", "\u0213": "r", "\u015A": "S", "\u015B": "s", "\u015C": "S", "\u015D": "s", "\u015E": "S", "\u0218": "S", "\u0219": "s", "\u015F": "s", "\u0160": "S", "\u0161": "s", "\u0162": "T", "\u0163": "t", "\u021B": "t", "\u021A": "T", "\u0164": "T", "\u0165": "t", "\u0166": "T", "\u0167": "t", "T\u0306": "T", "t\u0306": "t", "\u0168": "U", "\u0169": "u", "\u016A": "U", "\u016B": "u", "\u016C": "U", "\u016D": "u", "\u016E": "U", "\u016F": "u", "\u0170": "U", "\u0171": "u", "\u0172": "U", "\u0173": "u", "\u0216": "U", "\u0217": "u", "V\u0306": "V", "v\u0306": "v", "\u0174": "W", "\u0175": "w", "\u1E82": "W", "\u1E83": "w", "X\u0306": "X", "x\u0306": "x", "\u0176": "Y", "\u0177": "y", "\u0178": "Y", "Y\u0306": "Y", "y\u0306": "y", "\u0179": "Z", "\u017A": "z", "\u017B": "Z", "\u017C": "z", "\u017D": "Z", "\u017E": "z", "\u017F": "s", "\u0192": "f", "\u01A0": "O", "\u01A1": "o", "\u01AF": "U", "\u01B0": "u", "\u01CD": "A", "\u01CE": "a", "\u01CF": "I", "\u01D0": "i", "\u01D1": "O", "\u01D2": "o", "\u01D3": "U", "\u01D4": "u", "\u01D5": "U", "\u01D6": "u", "\u01D7": "U", "\u01D8": "u", "\u01D9": "U", "\u01DA": "u", "\u01DB": "U", "\u01DC": "u", "\u1EE8": "U", "\u1EE9": "u", "\u1E78": "U", "\u1E79": "u", "\u01FA": "A", "\u01FB": "a", "\u01FC": "AE", "\u01FD": "ae", "\u01FE": "O", "\u01FF": "o", "\xDE": "TH", "\xFE": "th", "\u1E54": "P", "\u1E55": "p", "\u1E64": "S", "\u1E65": "s", "X\u0301": "X", "x\u0301": "x", "\u0403": "\u0413", "\u0453": "\u0433", "\u040C": "\u041A", "\u045C": "\u043A", "A\u030B": "A", "a\u030B": "a", "E\u030B": "E", "e\u030B": "e", "I\u030B": "I", "i\u030B": "i", "\u01F8": "N", "\u01F9": "n", "\u1ED2": "O", "\u1ED3": "o", "\u1E50": "O", "\u1E51": "o", "\u1EEA": "U", "\u1EEB": "u", "\u1E80": "W", "\u1E81": "w", "\u1EF2": "Y", "\u1EF3": "y", "\u0200": "A", "\u0201": "a", "\u0204": "E", "\u0205": "e", "\u0208": "I", "\u0209": "i", "\u020C": "O", "\u020D": "o", "\u0210": "R", "\u0211": "r", "\u0214": "U", "\u0215": "u", "B\u030C": "B", "b\u030C": "b", "\u010C\u0323": "C", "\u010D\u0323": "c", "\xCA\u030C": "E", "\xEA\u030C": "e", "F\u030C": "F", "f\u030C": "f", "\u01E6": "G", "\u01E7": "g", "\u021E": "H", "\u021F": "h", "J\u030C": "J", "\u01F0": "j", "\u01E8": "K", "\u01E9": "k", "M\u030C": "M", "m\u030C": "m", "P\u030C": "P", "p\u030C": "p", "Q\u030C": "Q", "q\u030C": "q", "\u0158\u0329": "R", "\u0159\u0329": "r", "\u1E66": "S", "\u1E67": "s", "V\u030C": "V", "v\u030C": "v", "W\u030C": "W", "w\u030C": "w", "X\u030C": "X", "x\u030C": "x", "Y\u030C": "Y", "y\u030C": "y", "A\u0327": "A", "a\u0327": "a", "B\u0327": "B", "b\u0327": "b", "\u1E10": "D", "\u1E11": "d", "\u0228": "E", "\u0229": "e", "\u0190\u0327": "E", "\u025B\u0327": "e", "\u1E28": "H", "\u1E29": "h", "I\u0327": "I", "i\u0327": "i", "\u0197\u0327": "I", "\u0268\u0327": "i", "M\u0327": "M", "m\u0327": "m", "O\u0327": "O", "o\u0327": "o", "Q\u0327": "Q", "q\u0327": "q", "U\u0327": "U", "u\u0327": "u", "X\u0327": "X", "x\u0327": "x", "Z\u0327": "Z", "z\u0327": "z", "\u0439": "\u0438", "\u0419": "\u0418", "\u0451": "\u0435", "\u0401": "\u0415" }; var chars = Object.keys(characterMap).join("|"); var allAccents = new RegExp(chars, "g"); var firstAccent = new RegExp(chars, ""); function matcher(match3) { return characterMap[match3]; } var removeAccents3 = function(string) { return string.replace(allAccents, matcher); }; var hasAccents = function(string) { return !!string.match(firstAccent); }; module.exports = removeAccents3; module.exports.has = hasAccents; module.exports.remove = removeAccents3; } }); // package-external:@wordpress/warning var require_warning = __commonJS({ "package-external:@wordpress/warning"(exports, module) { module.exports = window.wp.warning; } }); // packages/edit-site/build-module/index.mjs var index_exports = {}; __export(index_exports, { PluginMoreMenuItem: () => PluginMoreMenuItem, PluginSidebar: () => PluginSidebar, PluginSidebarMoreMenuItem: () => PluginSidebarMoreMenuItem, PluginTemplateSettingPanel: () => plugin_template_setting_panel_default, initializeEditor: () => initializeEditor, reinitializeEditor: () => reinitializeEditor, store: () => store }); var import_blocks15 = __toESM(require_blocks(), 1); var import_block_library3 = __toESM(require_block_library(), 1); var import_data84 = __toESM(require_data(), 1); var import_deprecated6 = __toESM(require_deprecated(), 1); var import_element162 = __toESM(require_element(), 1); var import_editor46 = __toESM(require_editor(), 1); var import_preferences13 = __toESM(require_preferences(), 1); var import_widgets = __toESM(require_widgets(), 1); // packages/edit-site/build-module/store/index.mjs var import_data3 = __toESM(require_data(), 1); // packages/edit-site/build-module/store/reducer.mjs var import_data = __toESM(require_data(), 1); function settings(state = {}, action) { switch (action.type) { case "UPDATE_SETTINGS": return { ...state, ...action.settings }; } return state; } function editedPost(state = {}, action) { switch (action.type) { case "SET_EDITED_POST": return { postType: action.postType, id: action.id, context: action.context }; case "SET_EDITED_POST_CONTEXT": return { ...state, context: action.context }; } return state; } function saveViewPanel(state = false, action) { switch (action.type) { case "SET_IS_SAVE_VIEW_OPENED": return action.isOpen; } return state; } function routes(state = [], action) { switch (action.type) { case "REGISTER_ROUTE": return [...state, action.route]; case "UNREGISTER_ROUTE": return state.filter((route) => route.name !== action.name); } return state; } var reducer_default = (0, import_data.combineReducers)({ settings, editedPost, saveViewPanel, routes }); // packages/edit-site/build-module/store/actions.mjs var actions_exports = {}; __export(actions_exports, { __experimentalSetPreviewDeviceType: () => __experimentalSetPreviewDeviceType, addTemplate: () => addTemplate, closeGeneralSidebar: () => closeGeneralSidebar, openGeneralSidebar: () => openGeneralSidebar, openNavigationPanelToMenu: () => openNavigationPanelToMenu, removeTemplate: () => removeTemplate, revertTemplate: () => revertTemplate, setEditedEntity: () => setEditedEntity, setEditedPostContext: () => setEditedPostContext, setHasPageContentFocus: () => setHasPageContentFocus, setHomeTemplateId: () => setHomeTemplateId, setIsInserterOpened: () => setIsInserterOpened, setIsListViewOpened: () => setIsListViewOpened, setIsNavigationPanelOpened: () => setIsNavigationPanelOpened, setIsSaveViewOpened: () => setIsSaveViewOpened, setNavigationMenu: () => setNavigationMenu, setNavigationPanelActiveMenu: () => setNavigationPanelActiveMenu, setPage: () => setPage, setTemplate: () => setTemplate, setTemplatePart: () => setTemplatePart, switchEditorMode: () => switchEditorMode, toggleDistractionFree: () => toggleDistractionFree, toggleFeature: () => toggleFeature, updateSettings: () => updateSettings }); var import_blocks = __toESM(require_blocks(), 1); var import_deprecated = __toESM(require_deprecated(), 1); var import_core_data = __toESM(require_core_data(), 1); var import_block_editor = __toESM(require_block_editor(), 1); var import_editor = __toESM(require_editor(), 1); var import_preferences = __toESM(require_preferences(), 1); // packages/edit-site/build-module/utils/constants.mjs var import_i18n = __toESM(require_i18n(), 1); var import_patterns = __toESM(require_patterns(), 1); // packages/edit-site/build-module/lock-unlock.mjs var import_private_apis = __toESM(require_private_apis(), 1); var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", "@wordpress/edit-site" ); // packages/edit-site/build-module/utils/constants.mjs var ATTACHMENT_POST_TYPE = "attachment"; var NAVIGATION_POST_TYPE = "wp_navigation"; var TEMPLATE_POST_TYPE = "wp_template"; var TEMPLATE_PART_POST_TYPE = "wp_template_part"; var TEMPLATE_ORIGINS = { custom: "custom", theme: "theme", plugin: "plugin" }; var TEMPLATE_PART_AREA_DEFAULT_CATEGORY = "uncategorized"; var TEMPLATE_PART_ALL_AREAS_CATEGORY = "all-parts"; var { PATTERN_TYPES, PATTERN_DEFAULT_CATEGORY, PATTERN_USER_CATEGORY, EXCLUDED_PATTERN_SOURCES, PATTERN_SYNC_TYPES } = unlock(import_patterns.privateApis); var FOCUSABLE_ENTITIES = [ TEMPLATE_PART_POST_TYPE, NAVIGATION_POST_TYPE, PATTERN_TYPES.user ]; var POST_TYPE_LABELS = { [TEMPLATE_POST_TYPE]: (0, import_i18n.__)("Template"), [TEMPLATE_PART_POST_TYPE]: (0, import_i18n.__)("Template part"), [PATTERN_TYPES.user]: (0, import_i18n.__)("Pattern"), [NAVIGATION_POST_TYPE]: (0, import_i18n.__)("Navigation") }; var LAYOUT_GRID = "grid"; var LAYOUT_TABLE = "table"; var LAYOUT_LIST = "list"; var OPERATOR_IS = "is"; var OPERATOR_IS_ANY = "isAny"; var OPERATOR_IS_NONE = "isNone"; var OPERATOR_BEFORE = "before"; var OPERATOR_AFTER = "after"; // packages/edit-site/build-module/store/actions.mjs var { interfaceStore } = unlock(import_editor.privateApis); function toggleFeature(featureName) { return function({ registry }) { (0, import_deprecated.default)( "dispatch( 'core/edit-site' ).toggleFeature( featureName )", { since: "6.0", alternative: "dispatch( 'core/preferences').toggle( 'core/edit-site', featureName )" } ); registry.dispatch(import_preferences.store).toggle("core/edit-site", featureName); }; } var __experimentalSetPreviewDeviceType = (deviceType) => ({ registry }) => { (0, import_deprecated.default)( "dispatch( 'core/edit-site' ).__experimentalSetPreviewDeviceType", { since: "6.5", version: "6.7", hint: "registry.dispatch( editorStore ).setDeviceType" } ); registry.dispatch(import_editor.store).setDeviceType(deviceType); }; function setTemplate() { (0, import_deprecated.default)("dispatch( 'core/edit-site' ).setTemplate", { since: "6.5", version: "6.8", hint: "The setTemplate is not needed anymore, the correct entity is resolved from the URL automatically." }); return { type: "NOTHING" }; } var addTemplate = (template) => async ({ dispatch: dispatch2, registry }) => { (0, import_deprecated.default)("dispatch( 'core/edit-site' ).addTemplate", { since: "6.5", version: "6.8", hint: "use saveEntityRecord directly" }); const newTemplate = await registry.dispatch(import_core_data.store).saveEntityRecord("postType", TEMPLATE_POST_TYPE, template); if (template.content) { registry.dispatch(import_core_data.store).editEntityRecord( "postType", TEMPLATE_POST_TYPE, newTemplate.id, { blocks: (0, import_blocks.parse)(template.content) }, { undoIgnore: true } ); } dispatch2({ type: "SET_EDITED_POST", postType: TEMPLATE_POST_TYPE, id: newTemplate.id }); }; var removeTemplate = (template) => ({ registry }) => { return unlock(registry.dispatch(import_editor.store)).removeTemplates([ template ]); }; function setTemplatePart(templatePartId) { (0, import_deprecated.default)("dispatch( 'core/edit-site' ).setTemplatePart", { since: "6.8" }); return { type: "SET_EDITED_POST", postType: TEMPLATE_PART_POST_TYPE, id: templatePartId }; } function setNavigationMenu(navigationMenuId) { (0, import_deprecated.default)("dispatch( 'core/edit-site' ).setNavigationMenu", { since: "6.8" }); return { type: "SET_EDITED_POST", postType: NAVIGATION_POST_TYPE, id: navigationMenuId }; } function setEditedEntity(postType2, postId, context) { return { type: "SET_EDITED_POST", postType: postType2, id: postId, context }; } function setHomeTemplateId() { (0, import_deprecated.default)("dispatch( 'core/edit-site' ).setHomeTemplateId", { since: "6.2", version: "6.4" }); return { type: "NOTHING" }; } function setEditedPostContext(context) { (0, import_deprecated.default)("dispatch( 'core/edit-site' ).setEditedPostContext", { since: "6.8" }); return { type: "SET_EDITED_POST_CONTEXT", context }; } function setPage() { (0, import_deprecated.default)("dispatch( 'core/edit-site' ).setPage", { since: "6.5", version: "6.8", hint: "The setPage is not needed anymore, the correct entity is resolved from the URL automatically." }); return { type: "NOTHING" }; } function setNavigationPanelActiveMenu() { (0, import_deprecated.default)("dispatch( 'core/edit-site' ).setNavigationPanelActiveMenu", { since: "6.2", version: "6.4" }); return { type: "NOTHING" }; } function openNavigationPanelToMenu() { (0, import_deprecated.default)("dispatch( 'core/edit-site' ).openNavigationPanelToMenu", { since: "6.2", version: "6.4" }); return { type: "NOTHING" }; } function setIsNavigationPanelOpened() { (0, import_deprecated.default)("dispatch( 'core/edit-site' ).setIsNavigationPanelOpened", { since: "6.2", version: "6.4" }); return { type: "NOTHING" }; } var setIsInserterOpened = (value) => ({ registry }) => { (0, import_deprecated.default)("dispatch( 'core/edit-site' ).setIsInserterOpened", { since: "6.5", alternative: "dispatch( 'core/editor').setIsInserterOpened" }); registry.dispatch(import_editor.store).setIsInserterOpened(value); }; var setIsListViewOpened = (isOpen) => ({ registry }) => { (0, import_deprecated.default)("dispatch( 'core/edit-site' ).setIsListViewOpened", { since: "6.5", alternative: "dispatch( 'core/editor').setIsListViewOpened" }); registry.dispatch(import_editor.store).setIsListViewOpened(isOpen); }; function updateSettings(settings2) { return { type: "UPDATE_SETTINGS", settings: settings2 }; } function setIsSaveViewOpened(isOpen) { return { type: "SET_IS_SAVE_VIEW_OPENED", isOpen }; } var revertTemplate = (template, options) => ({ registry }) => { return unlock(registry.dispatch(import_editor.store)).revertTemplate( template, options ); }; var openGeneralSidebar = (name2) => ({ registry }) => { registry.dispatch(interfaceStore).enableComplementaryArea("core", name2); }; var closeGeneralSidebar = () => ({ registry }) => { registry.dispatch(interfaceStore).disableComplementaryArea("core"); }; var switchEditorMode = (mode) => ({ registry }) => { (0, import_deprecated.default)("dispatch( 'core/edit-site' ).switchEditorMode", { since: "6.6", alternative: "dispatch( 'core/editor').switchEditorMode" }); registry.dispatch(import_editor.store).switchEditorMode(mode); }; var setHasPageContentFocus = (hasPageContentFocus2) => ({ dispatch: dispatch2, registry }) => { (0, import_deprecated.default)(`dispatch( 'core/edit-site' ).setHasPageContentFocus`, { since: "6.5" }); if (hasPageContentFocus2) { registry.dispatch(import_block_editor.store).clearSelectedBlock(); } dispatch2({ type: "SET_HAS_PAGE_CONTENT_FOCUS", hasPageContentFocus: hasPageContentFocus2 }); }; var toggleDistractionFree = () => ({ registry }) => { (0, import_deprecated.default)("dispatch( 'core/edit-site' ).toggleDistractionFree", { since: "6.6", alternative: "dispatch( 'core/editor').toggleDistractionFree" }); registry.dispatch(import_editor.store).toggleDistractionFree(); }; // packages/edit-site/build-module/store/private-actions.mjs var private_actions_exports = {}; __export(private_actions_exports, { registerRoute: () => registerRoute, unregisterRoute: () => unregisterRoute }); function registerRoute(route) { return { type: "REGISTER_ROUTE", route }; } function unregisterRoute(name2) { return { type: "UNREGISTER_ROUTE", name: name2 }; } // packages/edit-site/build-module/store/selectors.mjs var selectors_exports = {}; __export(selectors_exports, { __experimentalGetInsertionPoint: () => __experimentalGetInsertionPoint, __experimentalGetPreviewDeviceType: () => __experimentalGetPreviewDeviceType, getCanUserCreateMedia: () => getCanUserCreateMedia, getCurrentTemplateNavigationPanelSubMenu: () => getCurrentTemplateNavigationPanelSubMenu, getCurrentTemplateTemplateParts: () => getCurrentTemplateTemplateParts, getEditedPostContext: () => getEditedPostContext, getEditedPostId: () => getEditedPostId, getEditedPostType: () => getEditedPostType, getEditorMode: () => getEditorMode, getHomeTemplateId: () => getHomeTemplateId, getNavigationPanelActiveMenu: () => getNavigationPanelActiveMenu, getPage: () => getPage, getReusableBlocks: () => getReusableBlocks, getSettings: () => getSettings, hasPageContentFocus: () => hasPageContentFocus, isFeatureActive: () => isFeatureActive, isInserterOpened: () => isInserterOpened, isListViewOpened: () => isListViewOpened, isNavigationOpened: () => isNavigationOpened, isPage: () => isPage, isSaveViewOpened: () => isSaveViewOpened }); var import_core_data2 = __toESM(require_core_data(), 1); var import_data2 = __toESM(require_data(), 1); var import_deprecated2 = __toESM(require_deprecated(), 1); var import_element = __toESM(require_element(), 1); var import_preferences2 = __toESM(require_preferences(), 1); var import_editor2 = __toESM(require_editor(), 1); var import_block_editor2 = __toESM(require_block_editor(), 1); // packages/edit-site/build-module/utils/get-filtered-template-parts.mjs var import_blocks2 = __toESM(require_blocks(), 1); var EMPTY_ARRAY = []; function getFilteredTemplatePartBlocks(blocks = EMPTY_ARRAY, templateParts) { const templatePartsById = templateParts ? ( // Key template parts by their ID. templateParts.reduce( (newTemplateParts, part) => ({ ...newTemplateParts, [part.id]: part }), {} ) ) : {}; const result = []; const stack = [...blocks]; while (stack.length) { const { innerBlocks, ...block } = stack.shift(); stack.unshift(...innerBlocks); if ((0, import_blocks2.isTemplatePart)(block)) { const { attributes: { theme, slug } } = block; const templatePartId = `${theme}//${slug}`; const templatePart = templatePartsById[templatePartId]; if (templatePart) { result.push({ templatePart, block }); } } } return result; } // packages/edit-site/build-module/store/selectors.mjs var isFeatureActive = (0, import_data2.createRegistrySelector)( (select3) => (_, featureName) => { (0, import_deprecated2.default)(`select( 'core/edit-site' ).isFeatureActive`, { since: "6.0", alternative: `select( 'core/preferences' ).get` }); return !!select3(import_preferences2.store).get( "core/edit-site", featureName ); } ); var __experimentalGetPreviewDeviceType = (0, import_data2.createRegistrySelector)( (select3) => () => { (0, import_deprecated2.default)( `select( 'core/edit-site' ).__experimentalGetPreviewDeviceType`, { since: "6.5", version: "6.7", alternative: `select( 'core/editor' ).getDeviceType` } ); return select3(import_editor2.store).getDeviceType(); } ); var getCanUserCreateMedia = (0, import_data2.createRegistrySelector)( (select3) => () => { (0, import_deprecated2.default)( `wp.data.select( 'core/edit-site' ).getCanUserCreateMedia()`, { since: "6.7", alternative: `wp.data.select( 'core' ).canUser( 'create', { kind: 'postType', type: 'attachment' } )` } ); return select3(import_core_data2.store).canUser("create", "media"); } ); var getReusableBlocks = (0, import_data2.createRegistrySelector)((select3) => () => { (0, import_deprecated2.default)(`select( 'core/edit-site' ).getReusableBlocks()`, { since: "6.5", version: "6.8", alternative: `select( 'core/core' ).getEntityRecords( 'postType', 'wp_block' )` }); const isWeb = import_element.Platform.OS === "web"; return isWeb ? select3(import_core_data2.store).getEntityRecords("postType", "wp_block", { per_page: -1 }) : []; }); function getSettings(state) { return state.settings; } function getHomeTemplateId() { (0, import_deprecated2.default)("select( 'core/edit-site' ).getHomeTemplateId", { since: "6.2", version: "6.4" }); } function getEditedPostType(state) { (0, import_deprecated2.default)("select( 'core/edit-site' ).getEditedPostType", { since: "6.8", alternative: "select( 'core/editor' ).getCurrentPostType" }); return state.editedPost.postType; } function getEditedPostId(state) { (0, import_deprecated2.default)("select( 'core/edit-site' ).getEditedPostId", { since: "6.8", alternative: "select( 'core/editor' ).getCurrentPostId" }); return state.editedPost.id; } function getEditedPostContext(state) { (0, import_deprecated2.default)("select( 'core/edit-site' ).getEditedPostContext", { since: "6.8" }); return state.editedPost.context; } function getPage(state) { (0, import_deprecated2.default)("select( 'core/edit-site' ).getPage", { since: "6.8" }); return { context: state.editedPost.context }; } var isInserterOpened = (0, import_data2.createRegistrySelector)((select3) => () => { (0, import_deprecated2.default)(`select( 'core/edit-site' ).isInserterOpened`, { since: "6.5", alternative: `select( 'core/editor' ).isInserterOpened` }); return select3(import_editor2.store).isInserterOpened(); }); var __experimentalGetInsertionPoint = (0, import_data2.createRegistrySelector)( (select3) => () => { (0, import_deprecated2.default)( `select( 'core/edit-site' ).__experimentalGetInsertionPoint`, { since: "6.5", version: "6.7" } ); return unlock(select3(import_editor2.store)).getInserter(); } ); var isListViewOpened = (0, import_data2.createRegistrySelector)((select3) => () => { (0, import_deprecated2.default)(`select( 'core/edit-site' ).isListViewOpened`, { since: "6.5", alternative: `select( 'core/editor' ).isListViewOpened` }); return select3(import_editor2.store).isListViewOpened(); }); function isSaveViewOpened(state) { return state.saveViewPanel; } function getBlocksAndTemplateParts(select3) { const templateParts = select3(import_core_data2.store).getEntityRecords( "postType", TEMPLATE_PART_POST_TYPE, { per_page: -1 } ); const { getBlocksByName, getBlocksByClientId } = select3(import_block_editor2.store); const clientIds = getBlocksByName("core/template-part"); const blocks = getBlocksByClientId(clientIds); return [blocks, templateParts]; } var getCurrentTemplateTemplateParts = (0, import_data2.createRegistrySelector)( (select3) => (0, import_data2.createSelector)( () => { (0, import_deprecated2.default)( `select( 'core/edit-site' ).getCurrentTemplateTemplateParts()`, { since: "6.7", version: "6.9", alternative: `select( 'core/block-editor' ).getBlocksByName( 'core/template-part' )` } ); return getFilteredTemplatePartBlocks( ...getBlocksAndTemplateParts(select3) ); }, () => getBlocksAndTemplateParts(select3) ) ); var getEditorMode = (0, import_data2.createRegistrySelector)((select3) => () => { return select3(import_preferences2.store).get("core", "editorMode"); }); function getCurrentTemplateNavigationPanelSubMenu() { (0, import_deprecated2.default)( "dispatch( 'core/edit-site' ).getCurrentTemplateNavigationPanelSubMenu", { since: "6.2", version: "6.4" } ); } function getNavigationPanelActiveMenu() { (0, import_deprecated2.default)("dispatch( 'core/edit-site' ).getNavigationPanelActiveMenu", { since: "6.2", version: "6.4" }); } function isNavigationOpened() { (0, import_deprecated2.default)("dispatch( 'core/edit-site' ).isNavigationOpened", { since: "6.2", version: "6.4" }); } function isPage(state) { (0, import_deprecated2.default)("select( 'core/edit-site' ).isPage", { since: "6.8", alternative: "select( 'core/editor' ).getCurrentPostType" }); return !!state.editedPost.context?.postId; } function hasPageContentFocus() { (0, import_deprecated2.default)(`select( 'core/edit-site' ).hasPageContentFocus`, { since: "6.5" }); return false; } // packages/edit-site/build-module/store/private-selectors.mjs var private_selectors_exports = {}; __export(private_selectors_exports, { getRoutes: () => getRoutes }); function getRoutes(state) { return state.routes; } // packages/edit-site/build-module/store/constants.mjs var STORE_NAME = "core/edit-site"; // packages/edit-site/build-module/store/index.mjs var storeConfig = { reducer: reducer_default, actions: actions_exports, selectors: selectors_exports }; var store = (0, import_data3.createReduxStore)(STORE_NAME, storeConfig); (0, import_data3.register)(store); unlock(store).registerPrivateSelectors(private_selectors_exports); unlock(store).registerPrivateActions(private_actions_exports); // packages/edit-site/build-module/components/app/index.mjs var import_data83 = __toESM(require_data(), 1); var import_router42 = __toESM(require_router(), 1); var import_element161 = __toESM(require_element(), 1); var import_core_data65 = __toESM(require_core_data(), 1); // node_modules/clsx/dist/clsx.mjs function r(e2) { var t3, f2, n2 = ""; if ("string" == typeof e2 || "number" == typeof e2) n2 += e2; else if ("object" == typeof e2) if (Array.isArray(e2)) { var o3 = e2.length; for (t3 = 0; t3 < o3; t3++) e2[t3] && (f2 = r(e2[t3])) && (n2 && (n2 += " "), n2 += f2); } else for (f2 in e2) e2[f2] && (n2 && (n2 += " "), n2 += f2); return n2; } function clsx() { for (var e2, t3, f2 = 0, n2 = "", o3 = arguments.length; f2 < o3; f2++) (e2 = arguments[f2]) && (t3 = r(e2)) && (n2 && (n2 += " "), n2 += t3); return n2; } var clsx_default = clsx; // packages/admin-ui/build-module/navigable-region/index.mjs var import_element2 = __toESM(require_element(), 1); var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); var NavigableRegion = (0, import_element2.forwardRef)( ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => { return /* @__PURE__ */ (0, import_jsx_runtime.jsx)( Tag, { ref, className: clsx_default("admin-ui-navigable-region", className), "aria-label": ariaLabel, role: "region", tabIndex: "-1", ...props, children } ); } ); NavigableRegion.displayName = "NavigableRegion"; var navigable_region_default = NavigableRegion; // node_modules/@base-ui/utils/esm/useRefWithInit.js var React = __toESM(require_react(), 1); var UNINITIALIZED = {}; function useRefWithInit(init2, initArg) { const ref = React.useRef(UNINITIALIZED); if (ref.current === UNINITIALIZED) { ref.current = init2(initArg); } return ref; } // node_modules/@base-ui/react/esm/utils/useRenderElement.js var React4 = __toESM(require_react(), 1); // node_modules/@base-ui/utils/esm/useMergedRefs.js function useMergedRefs(a2, b2, c6, d2) { const forkRef = useRefWithInit(createForkRef).current; if (didChange(forkRef, a2, b2, c6, d2)) { update(forkRef, [a2, b2, c6, d2]); } return forkRef.callback; } function useMergedRefsN(refs) { const forkRef = useRefWithInit(createForkRef).current; if (didChangeN(forkRef, refs)) { update(forkRef, refs); } return forkRef.callback; } function createForkRef() { return { callback: null, cleanup: null, refs: [] }; } function didChange(forkRef, a2, b2, c6, d2) { return forkRef.refs[0] !== a2 || forkRef.refs[1] !== b2 || forkRef.refs[2] !== c6 || forkRef.refs[3] !== d2; } function didChangeN(forkRef, newRefs) { return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index) => ref !== newRefs[index]); } function update(forkRef, refs) { forkRef.refs = refs; if (refs.every((ref) => ref == null)) { forkRef.callback = null; return; } forkRef.callback = (instance) => { if (forkRef.cleanup) { forkRef.cleanup(); forkRef.cleanup = null; } if (instance != null) { const cleanupCallbacks = Array(refs.length).fill(null); for (let i2 = 0; i2 < refs.length; i2 += 1) { const ref = refs[i2]; if (ref == null) { continue; } switch (typeof ref) { case "function": { const refCleanup = ref(instance); if (typeof refCleanup === "function") { cleanupCallbacks[i2] = refCleanup; } break; } case "object": { ref.current = instance; break; } default: } } forkRef.cleanup = () => { for (let i2 = 0; i2 < refs.length; i2 += 1) { const ref = refs[i2]; if (ref == null) { continue; } switch (typeof ref) { case "function": { const cleanupCallback = cleanupCallbacks[i2]; if (typeof cleanupCallback === "function") { cleanupCallback(); } else { ref(null); } break; } case "object": { ref.current = null; break; } default: } } }; } }; } // node_modules/@base-ui/utils/esm/getReactElementRef.js var React3 = __toESM(require_react(), 1); // node_modules/@base-ui/utils/esm/reactVersion.js var React2 = __toESM(require_react(), 1); var majorVersion = parseInt(React2.version, 10); function isReactVersionAtLeast(reactVersionToCheck) { return majorVersion >= reactVersionToCheck; } // node_modules/@base-ui/utils/esm/getReactElementRef.js function getReactElementRef(element) { if (!/* @__PURE__ */ React3.isValidElement(element)) { return null; } const reactElement = element; const propsWithRef = reactElement.props; return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null; } // node_modules/@base-ui/utils/esm/mergeObjects.js function mergeObjects(a2, b2) { if (a2 && !b2) { return a2; } if (!a2 && b2) { return b2; } if (a2 || b2) { return { ...a2, ...b2 }; } return void 0; } // node_modules/@base-ui/react/esm/utils/getStateAttributesProps.js function getStateAttributesProps(state, customMapping) { const props = {}; for (const key in state) { const value = state[key]; if (customMapping?.hasOwnProperty(key)) { const customProps = customMapping[key](value); if (customProps != null) { Object.assign(props, customProps); } continue; } if (value === true) { props[`data-${key.toLowerCase()}`] = ""; } else if (value) { props[`data-${key.toLowerCase()}`] = value.toString(); } } return props; } // node_modules/@base-ui/react/esm/utils/resolveClassName.js function resolveClassName(className, state) { return typeof className === "function" ? className(state) : className; } // node_modules/@base-ui/react/esm/utils/resolveStyle.js function resolveStyle(style, state) { return typeof style === "function" ? style(state) : style; } // node_modules/@base-ui/react/esm/merge-props/mergeProps.js var EMPTY_PROPS = {}; function mergeProps(a2, b2, c6, d2, e2) { let merged = { ...resolvePropsGetter(a2, EMPTY_PROPS) }; if (b2) { merged = mergeOne(merged, b2); } if (c6) { merged = mergeOne(merged, c6); } if (d2) { merged = mergeOne(merged, d2); } if (e2) { merged = mergeOne(merged, e2); } return merged; } function mergePropsN(props) { if (props.length === 0) { return EMPTY_PROPS; } if (props.length === 1) { return resolvePropsGetter(props[0], EMPTY_PROPS); } let merged = { ...resolvePropsGetter(props[0], EMPTY_PROPS) }; for (let i2 = 1; i2 < props.length; i2 += 1) { merged = mergeOne(merged, props[i2]); } return merged; } function mergeOne(merged, inputProps) { if (isPropsGetter(inputProps)) { return inputProps(merged); } return mutablyMergeInto(merged, inputProps); } function mutablyMergeInto(mergedProps, externalProps) { if (!externalProps) { return mergedProps; } for (const propName in externalProps) { const externalPropValue = externalProps[propName]; switch (propName) { case "style": { mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue); break; } case "className": { mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue); break; } default: { if (isEventHandler(propName, externalPropValue)) { mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue); } else { mergedProps[propName] = externalPropValue; } } } } return mergedProps; } function isEventHandler(key, value) { const code0 = key.charCodeAt(0); const code1 = key.charCodeAt(1); const code2 = key.charCodeAt(2); return code0 === 111 && code1 === 110 && code2 >= 65 && code2 <= 90 && (typeof value === "function" || typeof value === "undefined"); } function isPropsGetter(inputProps) { return typeof inputProps === "function"; } function resolvePropsGetter(inputProps, previousProps) { if (isPropsGetter(inputProps)) { return inputProps(previousProps); } return inputProps ?? EMPTY_PROPS; } function mergeEventHandlers(ourHandler, theirHandler) { if (!theirHandler) { return ourHandler; } if (!ourHandler) { return theirHandler; } return (event) => { if (isSyntheticEvent(event)) { const baseUIEvent = event; makeEventPreventable(baseUIEvent); const result2 = theirHandler(baseUIEvent); if (!baseUIEvent.baseUIHandlerPrevented) { ourHandler?.(baseUIEvent); } return result2; } const result = theirHandler(event); ourHandler?.(event); return result; }; } function makeEventPreventable(event) { event.preventBaseUIHandler = () => { event.baseUIHandlerPrevented = true; }; return event; } function mergeClassNames(ourClassName, theirClassName) { if (theirClassName) { if (ourClassName) { return theirClassName + " " + ourClassName; } return theirClassName; } return ourClassName; } function isSyntheticEvent(event) { return event != null && typeof event === "object" && "nativeEvent" in event; } // node_modules/@base-ui/utils/esm/empty.js var EMPTY_ARRAY2 = Object.freeze([]); var EMPTY_OBJECT = Object.freeze({}); // node_modules/@base-ui/react/esm/utils/useRenderElement.js var import_react = __toESM(require_react(), 1); function useRenderElement(element, componentProps, params = {}) { const renderProp = componentProps.render; const outProps = useRenderElementProps(componentProps, params); if (params.enabled === false) { return null; } const state = params.state ?? EMPTY_OBJECT; return evaluateRenderProp(element, renderProp, outProps, state); } function useRenderElementProps(componentProps, params = {}) { const { className: classNameProp, style: styleProp, render: renderProp } = componentProps; const { state = EMPTY_OBJECT, ref, props, stateAttributesMapping, enabled = true } = params; const className = enabled ? resolveClassName(classNameProp, state) : void 0; const style = enabled ? resolveStyle(styleProp, state) : void 0; const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping) : EMPTY_OBJECT; const outProps = enabled ? mergeObjects(stateProps, Array.isArray(props) ? mergePropsN(props) : props) ?? EMPTY_OBJECT : EMPTY_OBJECT; if (typeof document !== "undefined") { if (!enabled) { useMergedRefs(null, null); } else if (Array.isArray(ref)) { outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]); } else { outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref); } } if (!enabled) { return EMPTY_OBJECT; } if (className !== void 0) { outProps.className = mergeClassNames(outProps.className, className); } if (style !== void 0) { outProps.style = mergeObjects(outProps.style, style); } return outProps; } function evaluateRenderProp(element, render4, props, state) { if (render4) { if (typeof render4 === "function") { return render4(props, state); } const mergedProps = mergeProps(props, render4.props); mergedProps.ref = props.ref; return /* @__PURE__ */ React4.cloneElement(render4, mergedProps); } if (element) { if (typeof element === "string") { return renderTag(element, props); } } throw new Error(true ? "Base UI: Render element or function are not defined." : formatErrorMessage(8)); } function renderTag(Tag, props) { if (Tag === "button") { return /* @__PURE__ */ (0, import_react.createElement)("button", { type: "button", ...props, key: props.key }); } if (Tag === "img") { return /* @__PURE__ */ (0, import_react.createElement)("img", { alt: "", ...props, key: props.key }); } return /* @__PURE__ */ React4.createElement(Tag, props); } // node_modules/@base-ui/react/esm/use-render/useRender.js function useRender(params) { return useRenderElement(params.defaultTagName ?? "div", params, params); } // packages/ui/build-module/badge/badge.mjs var import_element3 = __toESM(require_element(), 1); if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='244b5c59c0']")) { const style = document.createElement("style"); style.setAttribute("data-wp-hash", "244b5c59c0"); style.appendChild(document.createTextNode('@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._96e6251aad1a6136__badge{border-radius:var(--wpds-border-radius-lg,8px);font-family:var(--wpds-font-family-body,-apple-system,system-ui,"Segoe UI","Roboto","Oxygen-Sans","Ubuntu","Cantarell","Helvetica Neue",sans-serif);font-size:var(--wpds-font-size-sm,12px);font-weight:var(--wpds-font-weight-regular,400);line-height:var(--wpds-font-line-height-xs,16px);padding-block:var(--wpds-dimension-padding-xs,4px);padding-inline:var(--wpds-dimension-padding-sm,8px)}._99f7158cb520f750__is-high-intent{background-color:var(--wpds-color-bg-surface-error,#f6e6e3);color:var(--wpds-color-fg-content-error,#470000)}.c20ebef2365bc8b7__is-medium-intent{background-color:var(--wpds-color-bg-surface-warning,#fde6bd);color:var(--wpds-color-fg-content-warning,#2e1900)}._365e1626c6202e52__is-low-intent{background-color:var(--wpds-color-bg-surface-caution,#fee994);color:var(--wpds-color-fg-content-caution,#281d00)}._33f8198127ddf4ef__is-stable-intent{background-color:var(--wpds-color-bg-surface-success,#c5f7cc);color:var(--wpds-color-fg-content-success,#002900)}._04c1aca8fc449412__is-informational-intent{background-color:var(--wpds-color-bg-surface-info,#deebfa);color:var(--wpds-color-fg-content-info,#001b4f)}._90726e69d495ec19__is-draft-intent{background-color:var(--wpds-color-bg-surface-neutral-weak,#f0f0f0);color:var(--wpds-color-fg-content-neutral,#1e1e1e)}._898f4a544993bd39__is-none-intent{background-color:var(--wpds-color-bg-surface-neutral,#f8f8f8);color:var(--wpds-color-fg-content-neutral-weak,#6d6d6d)}}')); document.head.appendChild(style); } var style_default = { "badge": "_96e6251aad1a6136__badge", "is-high-intent": "_99f7158cb520f750__is-high-intent", "is-medium-intent": "c20ebef2365bc8b7__is-medium-intent", "is-low-intent": "_365e1626c6202e52__is-low-intent", "is-stable-intent": "_33f8198127ddf4ef__is-stable-intent", "is-informational-intent": "_04c1aca8fc449412__is-informational-intent", "is-draft-intent": "_90726e69d495ec19__is-draft-intent", "is-none-intent": "_898f4a544993bd39__is-none-intent" }; var Badge = (0, import_element3.forwardRef)(function Badge2({ children, intent = "none", render: render4, className, ...props }, ref) { const element = useRender({ render: render4, defaultTagName: "span", ref, props: mergeProps(props, { className: clsx_default( style_default.badge, style_default[`is-${intent}-intent`], className ), children }) }); return element; }); // packages/icons/build-module/icon/index.mjs var import_element4 = __toESM(require_element(), 1); var icon_default = (0, import_element4.forwardRef)( ({ icon, size = 24, ...props }, ref) => { return (0, import_element4.cloneElement)(icon, { width: size, height: size, ...props, ref }); } ); // packages/icons/build-module/library/archive.mjs var import_primitives = __toESM(require_primitives(), 1); var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); var archive_default = /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M11.934 7.406a1 1 0 0 0 .914.594H19a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5h5.764a.5.5 0 0 1 .447.276l.723 1.63Zm1.064-1.216a.5.5 0 0 0 .462.31H19a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h5.764a2 2 0 0 1 1.789 1.106l.445 1.084ZM8.5 10.5h7V12h-7v-1.5Zm7 3.5h-7v1.5h7V14Z" }) }); // packages/icons/build-module/library/arrow-down.mjs var import_primitives2 = __toESM(require_primitives(), 1); var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); var arrow_down_default = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives2.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives2.Path, { d: "m16.5 13.5-3.7 3.7V4h-1.5v13.2l-3.8-3.7-1 1 5.5 5.6 5.5-5.6z" }) }); // packages/icons/build-module/library/arrow-left.mjs var import_primitives3 = __toESM(require_primitives(), 1); var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); var arrow_left_default = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives3.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives3.Path, { d: "M20 11.2H6.8l3.7-3.7-1-1L3.9 12l5.6 5.5 1-1-3.7-3.7H20z" }) }); // packages/icons/build-module/library/arrow-right.mjs var import_primitives4 = __toESM(require_primitives(), 1); var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); var arrow_right_default = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives4.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives4.Path, { d: "m14.5 6.5-1 1 3.7 3.7H4v1.6h13.2l-3.7 3.7 1 1 5.6-5.5z" }) }); // packages/icons/build-module/library/arrow-up-left.mjs var import_primitives5 = __toESM(require_primitives(), 1); var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); var arrow_up_left_default = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives5.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives5.Path, { d: "M14 6H6v8h1.5V8.5L17 18l1-1-9.5-9.5H14V6Z" }) }); // packages/icons/build-module/library/arrow-up.mjs var import_primitives6 = __toESM(require_primitives(), 1); var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); var arrow_up_default = /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives6.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives6.Path, { d: "M12 3.9 6.5 9.5l1 1 3.8-3.7V20h1.5V6.8l3.7 3.7 1-1z" }) }); // packages/icons/build-module/library/backup.mjs var import_primitives7 = __toESM(require_primitives(), 1); var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); var backup_default = /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives7.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives7.Path, { d: "M5.5 12h1.75l-2.5 3-2.5-3H4a8 8 0 113.134 6.35l.907-1.194A6.5 6.5 0 105.5 12zm9.53 1.97l-2.28-2.28V8.5a.75.75 0 00-1.5 0V12a.747.747 0 00.218.529l1.282-.84-1.28.842 2.5 2.5a.75.75 0 101.06-1.061z" }) }); // packages/icons/build-module/library/block-meta.mjs var import_primitives8 = __toESM(require_primitives(), 1); var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1); var block_meta_default = /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives8.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives8.Path, { fillRule: "evenodd", d: "M8.95 11.25H4v1.5h4.95v4.5H13V18c0 1.1.9 2 2 2h3c1.1 0 2-.9 2-2v-3c0-1.1-.9-2-2-2h-3c-1.1 0-2 .9-2 2v.75h-2.55v-7.5H13V9c0 1.1.9 2 2 2h3c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3c-1.1 0-2 .9-2 2v.75H8.95v4.5ZM14.5 15v3c0 .3.2.5.5.5h3c.3 0 .5-.2.5-.5v-3c0-.3-.2-.5-.5-.5h-3c-.3 0-.5.2-.5.5Zm0-6V6c0-.3.2-.5.5-.5h3c.3 0 .5.2.5.5v3c0 .3-.2.5-.5.5h-3c-.3 0-.5-.2-.5-.5Z", clipRule: "evenodd" }) }); // packages/icons/build-module/library/block-table.mjs var import_primitives9 = __toESM(require_primitives(), 1); var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1); var block_table_default = /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives9.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives9.Path, { d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM5 4.5h14c.3 0 .5.2.5.5v3.5h-15V5c0-.3.2-.5.5-.5zm8 5.5h6.5v3.5H13V10zm-1.5 3.5h-7V10h7v3.5zm-7 5.5v-4h7v4.5H5c-.3 0-.5-.2-.5-.5zm14.5.5h-6V15h6.5v4c0 .3-.2.5-.5.5z" }) }); // packages/icons/build-module/library/calendar.mjs var import_primitives10 = __toESM(require_primitives(), 1); var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1); var calendar_default = /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives10.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives10.Path, { d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm.5 16c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V7h15v12zM9 10H7v2h2v-2zm0 4H7v2h2v-2zm4-4h-2v2h2v-2zm4 0h-2v2h2v-2zm-4 4h-2v2h2v-2zm4 0h-2v2h2v-2z" }) }); // packages/icons/build-module/library/category.mjs var import_primitives11 = __toESM(require_primitives(), 1); var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1); var category_default = /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_primitives11.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_primitives11.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M6 5.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM4 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2V6zm11-.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5h-3a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM13 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2h-3a2 2 0 01-2-2V6zm5 8.5h-3a.5.5 0 00-.5.5v3a.5.5 0 00.5.5h3a.5.5 0 00.5-.5v-3a.5.5 0 00-.5-.5zM15 13a2 2 0 00-2 2v3a2 2 0 002 2h3a2 2 0 002-2v-3a2 2 0 00-2-2h-3zm-9 1.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5v-3a.5.5 0 01.5-.5zM4 15a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2v-3z" }) }); // packages/icons/build-module/library/check.mjs var import_primitives12 = __toESM(require_primitives(), 1); var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1); var check_default = /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives12.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives12.Path, { d: "M16.5 7.5 10 13.9l-2.5-2.4-1 1 3.5 3.6 7.5-7.6z" }) }); // packages/icons/build-module/library/chevron-down.mjs var import_primitives13 = __toESM(require_primitives(), 1); var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1); var chevron_down_default = /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_primitives13.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_primitives13.Path, { d: "M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z" }) }); // packages/icons/build-module/library/chevron-left-small.mjs var import_primitives14 = __toESM(require_primitives(), 1); var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1); var chevron_left_small_default = /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_primitives14.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_primitives14.Path, { d: "m13.1 16-3.4-4 3.4-4 1.1 1-2.6 3 2.6 3-1.1 1z" }) }); // packages/icons/build-module/library/chevron-left.mjs var import_primitives15 = __toESM(require_primitives(), 1); var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1); var chevron_left_default = /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_primitives15.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_primitives15.Path, { d: "M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z" }) }); // packages/icons/build-module/library/chevron-right-small.mjs var import_primitives16 = __toESM(require_primitives(), 1); var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1); var chevron_right_small_default = /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_primitives16.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_primitives16.Path, { d: "M10.8622 8.04053L14.2805 12.0286L10.8622 16.0167L9.72327 15.0405L12.3049 12.0286L9.72327 9.01672L10.8622 8.04053Z" }) }); // packages/icons/build-module/library/chevron-right.mjs var import_primitives17 = __toESM(require_primitives(), 1); var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1); var chevron_right_default = /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_primitives17.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_primitives17.Path, { d: "M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z" }) }); // packages/icons/build-module/library/chevron-up.mjs var import_primitives18 = __toESM(require_primitives(), 1); var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1); var chevron_up_default = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_primitives18.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_primitives18.Path, { d: "M6.5 12.4L12 8l5.5 4.4-.9 1.2L12 10l-4.5 3.6-1-1.2z" }) }); // packages/icons/build-module/library/close-small.mjs var import_primitives19 = __toESM(require_primitives(), 1); var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); var close_small_default = /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_primitives19.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_primitives19.Path, { d: "M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z" }) }); // packages/icons/build-module/library/cog.mjs var import_primitives20 = __toESM(require_primitives(), 1); var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); var cog_default = /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_primitives20.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_primitives20.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M10.289 4.836A1 1 0 0111.275 4h1.306a1 1 0 01.987.836l.244 1.466c.787.26 1.503.679 2.108 1.218l1.393-.522a1 1 0 011.216.437l.653 1.13a1 1 0 01-.23 1.273l-1.148.944a6.025 6.025 0 010 2.435l1.149.946a1 1 0 01.23 1.272l-.653 1.13a1 1 0 01-1.216.437l-1.394-.522c-.605.54-1.32.958-2.108 1.218l-.244 1.466a1 1 0 01-.987.836h-1.306a1 1 0 01-.986-.836l-.244-1.466a5.995 5.995 0 01-2.108-1.218l-1.394.522a1 1 0 01-1.217-.436l-.653-1.131a1 1 0 01.23-1.272l1.149-.946a6.026 6.026 0 010-2.435l-1.148-.944a1 1 0 01-.23-1.272l.653-1.131a1 1 0 011.217-.437l1.393.522a5.994 5.994 0 012.108-1.218l.244-1.466zM14.929 12a3 3 0 11-6 0 3 3 0 016 0z" }) }); // packages/icons/build-module/library/comment-author-avatar.mjs var import_primitives21 = __toESM(require_primitives(), 1); var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1); var comment_author_avatar_default = /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_primitives21.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_primitives21.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M7.25 16.437a6.5 6.5 0 1 1 9.5 0V16A2.75 2.75 0 0 0 14 13.25h-4A2.75 2.75 0 0 0 7.25 16v.437Zm1.5 1.193a6.47 6.47 0 0 0 3.25.87 6.47 6.47 0 0 0 3.25-.87V16c0-.69-.56-1.25-1.25-1.25h-4c-.69 0-1.25.56-1.25 1.25v1.63ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm10-2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z" }) }); // packages/icons/build-module/library/download.mjs var import_primitives22 = __toESM(require_primitives(), 1); var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1); var download_default = /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives22.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives22.Path, { d: "M18 11.3l-1-1.1-4 4V3h-1.5v11.3L7 10.2l-1 1.1 6.2 5.8 5.8-5.8zm.5 3.7v3.5h-13V15H4v5h16v-5h-1.5z" }) }); // packages/icons/build-module/library/drafts.mjs var import_primitives23 = __toESM(require_primitives(), 1); var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1); var drafts_default = /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_primitives23.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_primitives23.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm8 4a4 4 0 0 0 4-4H8a4 4 0 0 0 4 4Z" }) }); // packages/icons/build-module/library/drawer-right.mjs var import_primitives24 = __toESM(require_primitives(), 1); var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1); var drawer_right_default = /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_primitives24.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_primitives24.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M18 4H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-4 14.5H6c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h8v13zm4.5-.5c0 .3-.2.5-.5.5h-2.5v-13H18c.3 0 .5.2.5.5v12z" }) }); // packages/icons/build-module/library/envelope.mjs var import_primitives25 = __toESM(require_primitives(), 1); var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1); var envelope_default = /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_primitives25.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_primitives25.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M3 7c0-1.1.9-2 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Zm2-.5h14c.3 0 .5.2.5.5v1L12 13.5 4.5 7.9V7c0-.3.2-.5.5-.5Zm-.5 3.3V17c0 .3.2.5.5.5h14c.3 0 .5-.2.5-.5V9.8L12 15.4 4.5 9.8Z" }) }); // packages/icons/build-module/library/error.mjs var import_primitives26 = __toESM(require_primitives(), 1); var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1); var error_default = /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_primitives26.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_primitives26.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12.218 5.377a.25.25 0 0 0-.436 0l-7.29 12.96a.25.25 0 0 0 .218.373h14.58a.25.25 0 0 0 .218-.372l-7.29-12.96Zm-1.743-.735c.669-1.19 2.381-1.19 3.05 0l7.29 12.96a1.75 1.75 0 0 1-1.525 2.608H4.71a1.75 1.75 0 0 1-1.525-2.608l7.29-12.96ZM12.75 17.46h-1.5v-1.5h1.5v1.5Zm-1.5-3h1.5v-5h-1.5v5Z" }) }); // packages/icons/build-module/library/file.mjs var import_primitives27 = __toESM(require_primitives(), 1); var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1); var file_default = /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_primitives27.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_primitives27.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12.848 8a1 1 0 0 1-.914-.594l-.723-1.63a.5.5 0 0 0-.447-.276H5a.5.5 0 0 0-.5.5v11.5a.5.5 0 0 0 .5.5h14a.5.5 0 0 0 .5-.5v-9A.5.5 0 0 0 19 8h-6.152Zm.612-1.5a.5.5 0 0 1-.462-.31l-.445-1.084A2 2 0 0 0 10.763 4H5a2 2 0 0 0-2 2v11.5a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2h-5.54Z" }) }); // packages/icons/build-module/library/format-list-bullets-rtl.mjs var import_primitives28 = __toESM(require_primitives(), 1); var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1); var format_list_bullets_rtl_default = /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_primitives28.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_primitives28.Path, { d: "M4 8.8h8.9V7.2H4v1.6zm0 7h8.9v-1.5H4v1.5zM18 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z" }) }); // packages/icons/build-module/library/format-list-bullets.mjs var import_primitives29 = __toESM(require_primitives(), 1); var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1); var format_list_bullets_default = /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_primitives29.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_primitives29.Path, { d: "M11.1 15.8H20v-1.5h-8.9v1.5zm0-8.6v1.5H20V7.2h-8.9zM6 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-7c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z" }) }); // packages/icons/build-module/library/funnel.mjs var import_primitives30 = __toESM(require_primitives(), 1); var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1); var funnel_default = /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_primitives30.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_primitives30.Path, { d: "M10 17.5H14V16H10V17.5ZM6 6V7.5H18V6H6ZM8 12.5H16V11H8V12.5Z" }) }); // packages/icons/build-module/library/globe.mjs var import_primitives31 = __toESM(require_primitives(), 1); var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1); var globe_default = /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_primitives31.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_primitives31.Path, { d: "M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8Zm6.5 8c0 .6 0 1.2-.2 1.8h-2.7c0-.6.2-1.1.2-1.8s0-1.2-.2-1.8h2.7c.2.6.2 1.1.2 1.8Zm-.9-3.2h-2.4c-.3-.9-.7-1.8-1.1-2.4-.1-.2-.2-.4-.3-.5 1.6.5 3 1.6 3.8 3ZM12.8 17c-.3.5-.6 1-.8 1.3-.2-.3-.5-.8-.8-1.3-.3-.5-.6-1.1-.8-1.7h3.3c-.2.6-.5 1.2-.8 1.7Zm-2.9-3.2c-.1-.6-.2-1.1-.2-1.8s0-1.2.2-1.8H14c.1.6.2 1.1.2 1.8s0 1.2-.2 1.8H9.9ZM11.2 7c.3-.5.6-1 .8-1.3.2.3.5.8.8 1.3.3.5.6 1.1.8 1.7h-3.3c.2-.6.5-1.2.8-1.7Zm-1-1.2c-.1.2-.2.3-.3.5-.4.7-.8 1.5-1.1 2.4H6.4c.8-1.4 2.2-2.5 3.8-3Zm-1.8 8H5.7c-.2-.6-.2-1.1-.2-1.8s0-1.2.2-1.8h2.7c0 .6-.2 1.1-.2 1.8s0 1.2.2 1.8Zm-2 1.4h2.4c.3.9.7 1.8 1.1 2.4.1.2.2.4.3.5-1.6-.5-3-1.6-3.8-3Zm7.4 3c.1-.2.2-.3.3-.5.4-.7.8-1.5 1.1-2.4h2.4c-.8 1.4-2.2 2.5-3.8 3Z" }) }); // packages/icons/build-module/library/help.mjs var import_primitives32 = __toESM(require_primitives(), 1); var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1); var help_default = /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_primitives32.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_primitives32.Path, { d: "M12 4a8 8 0 1 1 .001 16.001A8 8 0 0 1 12 4Zm0 1.5a6.5 6.5 0 1 0-.001 13.001A6.5 6.5 0 0 0 12 5.5Zm.75 11h-1.5V15h1.5v1.5Zm-.445-9.234a3 3 0 0 1 .445 5.89V14h-1.5v-1.25c0-.57.452-.958.917-1.01A1.5 1.5 0 0 0 12 8.75a1.5 1.5 0 0 0-1.5 1.5H9a3 3 0 0 1 3.305-2.984Z" }) }); // packages/icons/build-module/library/home.mjs var import_primitives33 = __toESM(require_primitives(), 1); var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1); var home_default = /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_primitives33.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_primitives33.Path, { d: "M12 4L4 7.9V20h16V7.9L12 4zm6.5 14.5H14V13h-4v5.5H5.5V8.8L12 5.7l6.5 3.1v9.7z" }) }); // packages/icons/build-module/library/layout.mjs var import_primitives34 = __toESM(require_primitives(), 1); var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1); var layout_default = /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_primitives34.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_primitives34.Path, { d: "M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z" }) }); // packages/icons/build-module/library/link.mjs var import_primitives35 = __toESM(require_primitives(), 1); var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1); var link_default = /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_primitives35.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_primitives35.Path, { d: "M10 17.389H8.444A5.194 5.194 0 1 1 8.444 7H10v1.5H8.444a3.694 3.694 0 0 0 0 7.389H10v1.5ZM14 7h1.556a5.194 5.194 0 0 1 0 10.39H14v-1.5h1.556a3.694 3.694 0 0 0 0-7.39H14V7Zm-4.5 6h5v-1.5h-5V13Z" }) }); // packages/icons/build-module/library/list.mjs var import_primitives36 = __toESM(require_primitives(), 1); var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1); var list_default = /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_primitives36.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_primitives36.Path, { d: "M4 4v1.5h16V4H4zm8 8.5h8V11h-8v1.5zM4 20h16v-1.5H4V20zm4-8c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2 2-.9 2-2z" }) }); // packages/icons/build-module/library/media.mjs var import_primitives37 = __toESM(require_primitives(), 1); var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1); var media_default = /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(import_primitives37.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: [ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_primitives37.Path, { d: "m7 6.5 4 2.5-4 2.5z" }), /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_primitives37.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "m5 3c-1.10457 0-2 .89543-2 2v14c0 1.1046.89543 2 2 2h14c1.1046 0 2-.8954 2-2v-14c0-1.10457-.8954-2-2-2zm14 1.5h-14c-.27614 0-.5.22386-.5.5v10.7072l3.62953-2.6465c.25108-.1831.58905-.1924.84981-.0234l2.92666 1.8969 3.5712-3.4719c.2911-.2831.7545-.2831 1.0456 0l2.9772 2.8945v-9.3568c0-.27614-.2239-.5-.5-.5zm-14.5 14.5v-1.4364l4.09643-2.987 2.99567 1.9417c.2936.1903.6798.1523.9307-.0917l3.4772-3.3806 3.4772 3.3806.0228-.0234v2.5968c0 .2761-.2239.5-.5.5h-14c-.27614 0-.5-.2239-.5-.5z" }) ] }); // packages/icons/build-module/library/mobile.mjs var import_primitives38 = __toESM(require_primitives(), 1); var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1); var mobile_default = /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_primitives38.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_primitives38.Path, { d: "M15 4H9c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h6c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 14c0 .3-.2.5-.5.5H9c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h6c.3 0 .5.2.5.5v12zm-4.5-.5h2V16h-2v1.5z" }) }); // packages/icons/build-module/library/more-vertical.mjs var import_primitives39 = __toESM(require_primitives(), 1); var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1); var more_vertical_default = /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_primitives39.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_primitives39.Path, { d: "M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z" }) }); // packages/icons/build-module/library/navigation.mjs var import_primitives40 = __toESM(require_primitives(), 1); var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1); var navigation_default = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_primitives40.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_primitives40.Path, { d: "M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 14.5c-3.6 0-6.5-2.9-6.5-6.5S8.4 5.5 12 5.5s6.5 2.9 6.5 6.5-2.9 6.5-6.5 6.5zM9 16l4.5-3L15 8.4l-4.5 3L9 16z" }) }); // packages/icons/build-module/library/next.mjs var import_primitives41 = __toESM(require_primitives(), 1); var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1); var next_default = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_primitives41.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_primitives41.Path, { d: "M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z" }) }); // packages/icons/build-module/library/not-allowed.mjs var import_primitives42 = __toESM(require_primitives(), 1); var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1); var not_allowed_default = /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_primitives42.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_primitives42.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12 18.5A6.5 6.5 0 0 1 6.93 7.931l9.139 9.138A6.473 6.473 0 0 1 12 18.5Zm5.123-2.498a6.5 6.5 0 0 0-9.124-9.124l9.124 9.124ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Z" }) }); // packages/icons/build-module/library/not-found.mjs var import_primitives43 = __toESM(require_primitives(), 1); var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1); var not_found_default = /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_primitives43.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_primitives43.Path, { d: "M19 5c1.1 0 2 .9 2 2v10c0 1.1-.9 2-2 2H5c-1.1 0-2-.9-2-2V7c0-1.1.9-2 2-2zM5 6.5c-.3 0-.5.2-.5.5v10c0 .3.2.5.5.5h14c.3 0 .5-.2.5-.5V7c0-.3-.2-.5-.5-.5zm7.01 2.75q.711 0 1.24.364.533.364.824 1.012.296.645.296 1.488 0 .887-.296 1.556-.292.664-.824 1.036-.528.368-1.24.368-.708 0-1.24-.368-.527-.372-.824-1.036-.296-.668-.296-1.556 0-.848.296-1.492.296-.648.824-1.008a2.14 2.14 0 0 1 1.24-.364m-3.484 3.6h.72v.832h-.72v1.28h-.984v-1.28H4.75l3.08-4.32h.696zm9.522 0h.72v.832h-.72v1.28h-.983v-1.28h-2.793l3.08-4.32h.696zm-6.038-2.696q-.568 0-.952.48-.384.475-.384 1.48 0 .716.176 1.168.176.45.476.66.304.212.684.212t.68-.208q.304-.207.48-.656.176-.451.176-1.176 0-.996-.384-1.476-.38-.484-.952-.484M6.33 12.85h1.212v-1.722zm9.523 0h1.211v-1.722z" }) }); // packages/icons/build-module/library/page.mjs var import_primitives44 = __toESM(require_primitives(), 1); var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1); var page_default = /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(import_primitives44.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: [ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_primitives44.Path, { d: "M15.5 7.5h-7V9h7V7.5Zm-7 3.5h7v1.5h-7V11Zm7 3.5h-7V16h7v-1.5Z" }), /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_primitives44.Path, { d: "M17 4H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2ZM7 5.5h10a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5H7a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5Z" }) ] }); // packages/icons/build-module/library/pages.mjs var import_primitives45 = __toESM(require_primitives(), 1); var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1); var pages_default = /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_primitives45.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: [ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_primitives45.Path, { d: "M14.5 5.5h-7V7h7V5.5ZM7.5 9h7v1.5h-7V9Zm7 3.5h-7V14h7v-1.5Z" }), /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_primitives45.Path, { d: "M16 2H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2ZM6 3.5h10a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5H6a.5.5 0 0 1-.5-.5V4a.5.5 0 0 1 .5-.5Z" }), /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_primitives45.Path, { d: "M20 8v11c0 .69-.31 1-.999 1H6v1.5h13.001c1.52 0 2.499-.982 2.499-2.5V8H20Z" }) ] }); // packages/icons/build-module/library/pencil.mjs var import_primitives46 = __toESM(require_primitives(), 1); var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1); var pencil_default = /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_primitives46.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_primitives46.Path, { d: "m19 7-3-3-8.5 8.5-1 4 4-1L19 7Zm-7 11.5H5V20h7v-1.5Z" }) }); // packages/icons/build-module/library/pending.mjs var import_primitives47 = __toESM(require_primitives(), 1); var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1); var pending_default = /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_primitives47.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_primitives47.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm8 4a4 4 0 0 1-4-4h4V8a4 4 0 0 1 0 8Z" }) }); // packages/icons/build-module/library/pin.mjs var import_primitives48 = __toESM(require_primitives(), 1); var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1); var pin_default = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_primitives48.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_primitives48.Path, { d: "m21.5 9.1-6.6-6.6-4.2 5.6c-1.2-.1-2.4.1-3.6.7-.1 0-.1.1-.2.1-.5.3-.9.6-1.2.9l3.7 3.7-5.7 5.7v1.1h1.1l5.7-5.7 3.7 3.7c.4-.4.7-.8.9-1.2.1-.1.1-.2.2-.3.6-1.1.8-2.4.6-3.6l5.6-4.1zm-7.3 3.5.1.9c.1.9 0 1.8-.4 2.6l-6-6c.8-.4 1.7-.5 2.6-.4l.9.1L15 4.9 19.1 9l-4.9 3.6z" }) }); // packages/icons/build-module/library/plugins.mjs var import_primitives49 = __toESM(require_primitives(), 1); var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1); var plugins_default = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_primitives49.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_primitives49.Path, { d: "M10.5 4v4h3V4H15v4h1.5a1 1 0 011 1v4l-3 4v2a1 1 0 01-1 1h-3a1 1 0 01-1-1v-2l-3-4V9a1 1 0 011-1H9V4h1.5zm.5 12.5v2h2v-2l3-4v-3H8v3l3 4z" }) }); // packages/icons/build-module/library/post.mjs var import_primitives50 = __toESM(require_primitives(), 1); var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1); var post_default = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_primitives50.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_primitives50.Path, { d: "m7.3 9.7 1.4 1.4c.2-.2.3-.3.4-.5 0 0 0-.1.1-.1.3-.5.4-1.1.3-1.6L12 7 9 4 7.2 6.5c-.6-.1-1.1 0-1.6.3 0 0-.1 0-.1.1-.3.1-.4.2-.6.4l1.4 1.4L4 11v1h1l2.3-2.3zM4 20h9v-1.5H4V20zm0-5.5V16h16v-1.5H4z" }) }); // packages/icons/build-module/library/previous.mjs var import_primitives51 = __toESM(require_primitives(), 1); var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1); var previous_default = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_primitives51.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_primitives51.Path, { d: "M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z" }) }); // packages/icons/build-module/library/published.mjs var import_primitives52 = __toESM(require_primitives(), 1); var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1); var published_default = /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_primitives52.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_primitives52.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm11.53-1.47-1.06-1.06L11 12.94l-1.47-1.47-1.06 1.06L11 15.06l4.53-4.53Z" }) }); // packages/icons/build-module/library/rotate-left.mjs var import_primitives53 = __toESM(require_primitives(), 1); var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1); var rotate_left_default = /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_primitives53.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_primitives53.Path, { d: "M12 4V2.2L9 4.8l3 2.5V5.5c3.6 0 6.5 2.9 6.5 6.5 0 2.9-1.9 5.3-4.5 6.2v.2l-.1-.2c-.4.1-.7.2-1.1.2l.2 1.5c.3 0 .6-.1 1-.2 3.5-.9 6-4 6-7.7 0-4.4-3.6-8-8-8zm-7.9 7l1.5.2c.1-1.2.5-2.3 1.2-3.2l-1.1-.9C4.8 8.2 4.3 9.6 4.1 11zm1.5 1.8l-1.5.2c.1.7.3 1.4.5 2 .3.7.6 1.3 1 1.8l1.2-.8c-.3-.5-.6-1-.8-1.5s-.4-1.1-.4-1.7zm1.5 5.5c1.1.9 2.4 1.4 3.8 1.6l.2-1.5c-1.1-.1-2.2-.5-3.1-1.2l-.9 1.1z" }) }); // packages/icons/build-module/library/rotate-right.mjs var import_primitives54 = __toESM(require_primitives(), 1); var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1); var rotate_right_default = /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_primitives54.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_primitives54.Path, { d: "M15.1 4.8l-3-2.5V4c-4.4 0-8 3.6-8 8 0 3.7 2.5 6.9 6 7.7.3.1.6.1 1 .2l.2-1.5c-.4 0-.7-.1-1.1-.2l-.1.2v-.2c-2.6-.8-4.5-3.3-4.5-6.2 0-3.6 2.9-6.5 6.5-6.5v1.8l3-2.5zM20 11c-.2-1.4-.7-2.7-1.6-3.8l-1.2.8c.7.9 1.1 2 1.3 3.1L20 11zm-1.5 1.8c-.1.5-.2 1.1-.4 1.6s-.5 1-.8 1.5l1.2.9c.4-.5.8-1.1 1-1.8s.5-1.3.5-2l-1.5-.2zm-5.6 5.6l.2 1.5c1.4-.2 2.7-.7 3.8-1.6l-.9-1.1c-.9.7-2 1.1-3.1 1.2z" }) }); // packages/icons/build-module/library/scheduled.mjs var import_primitives55 = __toESM(require_primitives(), 1); var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1); var scheduled_default = /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_primitives55.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_primitives55.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm9 1V8h-1.5v3.5h-2V13H13Z" }) }); // packages/icons/build-module/library/search.mjs var import_primitives56 = __toESM(require_primitives(), 1); var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1); var search_default = /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_primitives56.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_primitives56.Path, { d: "M13 5c-3.3 0-6 2.7-6 6 0 1.4.5 2.7 1.3 3.7l-3.8 3.8 1.1 1.1 3.8-3.8c1 .8 2.3 1.3 3.7 1.3 3.3 0 6-2.7 6-6S16.3 5 13 5zm0 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z" }) }); // packages/icons/build-module/library/seen.mjs var import_primitives57 = __toESM(require_primitives(), 1); var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1); var seen_default = /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_primitives57.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_primitives57.Path, { d: "M3.99961 13C4.67043 13.3354 4.6703 13.3357 4.67017 13.3359L4.67298 13.3305C4.67621 13.3242 4.68184 13.3135 4.68988 13.2985C4.70595 13.2686 4.7316 13.2218 4.76695 13.1608C4.8377 13.0385 4.94692 12.8592 5.09541 12.6419C5.39312 12.2062 5.84436 11.624 6.45435 11.0431C7.67308 9.88241 9.49719 8.75 11.9996 8.75C14.502 8.75 16.3261 9.88241 17.5449 11.0431C18.1549 11.624 18.6061 12.2062 18.9038 12.6419C19.0523 12.8592 19.1615 13.0385 19.2323 13.1608C19.2676 13.2218 19.2933 13.2686 19.3093 13.2985C19.3174 13.3135 19.323 13.3242 19.3262 13.3305L19.3291 13.3359C19.3289 13.3357 19.3288 13.3354 19.9996 13C20.6704 12.6646 20.6703 12.6643 20.6701 12.664L20.6697 12.6632L20.6688 12.6614L20.6662 12.6563L20.6583 12.6408C20.6517 12.6282 20.6427 12.6108 20.631 12.5892C20.6078 12.5459 20.5744 12.4852 20.5306 12.4096C20.4432 12.2584 20.3141 12.0471 20.1423 11.7956C19.7994 11.2938 19.2819 10.626 18.5794 9.9569C17.1731 8.61759 14.9972 7.25 11.9996 7.25C9.00203 7.25 6.82614 8.61759 5.41987 9.9569C4.71736 10.626 4.19984 11.2938 3.85694 11.7956C3.68511 12.0471 3.55605 12.2584 3.4686 12.4096C3.42484 12.4852 3.39142 12.5459 3.36818 12.5892C3.35656 12.6108 3.34748 12.6282 3.34092 12.6408L3.33297 12.6563L3.33041 12.6614L3.32948 12.6632L3.32911 12.664C3.32894 12.6643 3.32879 12.6646 3.99961 13ZM11.9996 16C13.9326 16 15.4996 14.433 15.4996 12.5C15.4996 10.567 13.9326 9 11.9996 9C10.0666 9 8.49961 10.567 8.49961 12.5C8.49961 14.433 10.0666 16 11.9996 16Z" }) }); // packages/icons/build-module/library/styles.mjs var import_primitives58 = __toESM(require_primitives(), 1); var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1); var styles_default = /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_primitives58.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_primitives58.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M20 12a8 8 0 1 1-16 0 8 8 0 0 1 16 0Zm-1.5 0a6.5 6.5 0 0 1-6.5 6.5v-13a6.5 6.5 0 0 1 6.5 6.5Z" }) }); // packages/icons/build-module/library/symbol-filled.mjs var import_primitives59 = __toESM(require_primitives(), 1); var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1); var symbol_filled_default = /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_primitives59.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_primitives59.Path, { d: "M21.3 10.8l-5.6-5.6c-.7-.7-1.8-.7-2.5 0l-5.6 5.6c-.7.7-.7 1.8 0 2.5l5.6 5.6c.3.3.8.5 1.2.5s.9-.2 1.2-.5l5.6-5.6c.8-.7.8-1.9.1-2.5zm-17.6 1L10 5.5l-1-1-6.3 6.3c-.7.7-.7 1.8 0 2.5L9 19.5l1.1-1.1-6.3-6.3c-.2 0-.2-.2-.1-.3z" }) }); // packages/icons/build-module/library/symbol.mjs var import_primitives60 = __toESM(require_primitives(), 1); var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1); var symbol_default = /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_primitives60.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_primitives60.Path, { d: "M21.3 10.8l-5.6-5.6c-.7-.7-1.8-.7-2.5 0l-5.6 5.6c-.7.7-.7 1.8 0 2.5l5.6 5.6c.3.3.8.5 1.2.5s.9-.2 1.2-.5l5.6-5.6c.8-.7.8-1.9.1-2.5zm-1 1.4l-5.6 5.6c-.1.1-.3.1-.4 0l-5.6-5.6c-.1-.1-.1-.3 0-.4l5.6-5.6s.1-.1.2-.1.1 0 .2.1l5.6 5.6c.1.1.1.3 0 .4zm-16.6-.4L10 5.5l-1-1-6.3 6.3c-.7.7-.7 1.8 0 2.5L9 19.5l1.1-1.1-6.3-6.3c-.2 0-.2-.2-.1-.3z" }) }); // packages/icons/build-module/library/tag.mjs var import_primitives61 = __toESM(require_primitives(), 1); var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1); var tag_default = /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_primitives61.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_primitives61.Path, { d: "M4.75 4a.75.75 0 0 0-.75.75v7.826c0 .2.08.39.22.53l6.72 6.716a2.313 2.313 0 0 0 3.276-.001l5.61-5.611-.531-.53.532.528a2.315 2.315 0 0 0 0-3.264L13.104 4.22a.75.75 0 0 0-.53-.22H4.75ZM19 12.576a.815.815 0 0 1-.236.574l-5.61 5.611a.814.814 0 0 1-1.153 0L5.5 12.264V5.5h6.763l6.5 6.502a.816.816 0 0 1 .237.574ZM8.75 9.75a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" }) }); // packages/icons/build-module/library/trash.mjs var import_primitives62 = __toESM(require_primitives(), 1); var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1); var trash_default = /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_primitives62.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_primitives62.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12 5.5A2.25 2.25 0 0 0 9.878 7h4.244A2.251 2.251 0 0 0 12 5.5ZM12 4a3.751 3.751 0 0 0-3.675 3H5v1.5h1.27l.818 8.997a2.75 2.75 0 0 0 2.739 2.501h4.347a2.75 2.75 0 0 0 2.738-2.5L17.73 8.5H19V7h-3.325A3.751 3.751 0 0 0 12 4Zm4.224 4.5H7.776l.806 8.861a1.25 1.25 0 0 0 1.245 1.137h4.347a1.25 1.25 0 0 0 1.245-1.137l.805-8.861Z" }) }); // packages/icons/build-module/library/unseen.mjs var import_primitives63 = __toESM(require_primitives(), 1); var import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1); var unseen_default = /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_primitives63.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_primitives63.Path, { d: "M20.7 12.7s0-.1-.1-.2c0-.2-.2-.4-.4-.6-.3-.5-.9-1.2-1.6-1.8-.7-.6-1.5-1.3-2.6-1.8l-.6 1.4c.9.4 1.6 1 2.1 1.5.6.6 1.1 1.2 1.4 1.6.1.2.3.4.3.5v.1l.7-.3.7-.3Zm-5.2-9.3-1.8 4c-.5-.1-1.1-.2-1.7-.2-3 0-5.2 1.4-6.6 2.7-.7.7-1.2 1.3-1.6 1.8-.2.3-.3.5-.4.6 0 0 0 .1-.1.2s0 0 .7.3l.7.3V13c0-.1.2-.3.3-.5.3-.4.7-1 1.4-1.6 1.2-1.2 3-2.3 5.5-2.3H13v.3c-.4 0-.8-.1-1.1-.1-1.9 0-3.5 1.6-3.5 3.5s.6 2.3 1.6 2.9l-2 4.4.9.4 7.6-16.2-.9-.4Zm-3 12.6c1.7-.2 3-1.7 3-3.5s-.2-1.4-.6-1.9L12.4 16Z" }) }); // packages/icons/build-module/library/upload.mjs var import_primitives64 = __toESM(require_primitives(), 1); var import_jsx_runtime65 = __toESM(require_jsx_runtime(), 1); var upload_default = /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_primitives64.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_primitives64.Path, { d: "M18.5 15v3.5H13V6.7l4.5 4.1 1-1.1-6.2-5.8-5.8 5.8 1 1.1 4-4v11.7h-6V15H4v5h16v-5z" }) }); // packages/icons/build-module/library/verse.mjs var import_primitives65 = __toESM(require_primitives(), 1); var import_jsx_runtime66 = __toESM(require_jsx_runtime(), 1); var verse_default = /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_primitives65.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_primitives65.Path, { d: "M17.8 2l-.9.3c-.1 0-3.6 1-5.2 2.1C10 5.5 9.3 6.5 8.9 7.1c-.6.9-1.7 4.7-1.7 6.3l-.9 2.3c-.2.4 0 .8.4 1 .1 0 .2.1.3.1.3 0 .6-.2.7-.5l.6-1.5c.3 0 .7-.1 1.2-.2.7-.1 1.4-.3 2.2-.5.8-.2 1.6-.5 2.4-.8.7-.3 1.4-.7 1.9-1.2s.8-1.2 1-1.9c.2-.7.3-1.6.4-2.4.1-.8.1-1.7.2-2.5 0-.8.1-1.5.2-2.1V2zm-1.9 5.6c-.1.8-.2 1.5-.3 2.1-.2.6-.4 1-.6 1.3-.3.3-.8.6-1.4.9-.7.3-1.4.5-2.2.8-.6.2-1.3.3-1.8.4L15 7.5c.3-.3.6-.7 1-1.1 0 .4 0 .8-.1 1.2zM6 20h8v-1.5H6V20z" }) }); // packages/icons/build-module/library/wordpress.mjs var import_primitives66 = __toESM(require_primitives(), 1); var import_jsx_runtime67 = __toESM(require_jsx_runtime(), 1); var wordpress_default = /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_primitives66.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "-2 -2 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_primitives66.Path, { d: "M20 10c0-5.51-4.49-10-10-10C4.48 0 0 4.49 0 10c0 5.52 4.48 10 10 10 5.51 0 10-4.48 10-10zM7.78 15.37L4.37 6.22c.55-.02 1.17-.08 1.17-.08.5-.06.44-1.13-.06-1.11 0 0-1.45.11-2.37.11-.18 0-.37 0-.58-.01C4.12 2.69 6.87 1.11 10 1.11c2.33 0 4.45.87 6.05 2.34-.68-.11-1.65.39-1.65 1.58 0 .74.45 1.36.9 2.1.35.61.55 1.36.55 2.46 0 1.49-1.4 5-1.4 5l-3.03-8.37c.54-.02.82-.17.82-.17.5-.05.44-1.25-.06-1.22 0 0-1.44.12-2.38.12-.87 0-2.33-.12-2.33-.12-.5-.03-.56 1.2-.06 1.22l.92.08 1.26 3.41zM17.41 10c.24-.64.74-1.87.43-4.25.7 1.29 1.05 2.71 1.05 4.25 0 3.29-1.73 6.24-4.4 7.78.97-2.59 1.94-5.2 2.92-7.78zM6.1 18.09C3.12 16.65 1.11 13.53 1.11 10c0-1.3.23-2.48.72-3.59C3.25 10.3 4.67 14.2 6.1 18.09zm4.03-6.63l2.58 6.98c-.86.29-1.76.45-2.71.45-.79 0-1.57-.11-2.29-.33.81-2.38 1.62-4.74 2.42-7.1z" }) }); // packages/ui/build-module/stack/stack.mjs var import_element5 = __toESM(require_element(), 1); if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='71d20935c2']")) { const style = document.createElement("style"); style.setAttribute("data-wp-hash", "71d20935c2"); style.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}")); document.head.appendChild(style); } var style_default2 = { "stack": "_19ce0419607e1896__stack" }; var gapTokens = { xs: "var(--wpds-dimension-gap-xs, 4px)", sm: "var(--wpds-dimension-gap-sm, 8px)", md: "var(--wpds-dimension-gap-md, 12px)", lg: "var(--wpds-dimension-gap-lg, 16px)", xl: "var(--wpds-dimension-gap-xl, 24px)", "2xl": "var(--wpds-dimension-gap-2xl, 32px)", "3xl": "var(--wpds-dimension-gap-3xl, 40px)" }; var Stack = (0, import_element5.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render: render4, ...props }, ref) { const style = { gap: gap && gapTokens[gap], alignItems: align, justifyContent: justify, flexDirection: direction, flexWrap: wrap }; const element = useRender({ render: render4, ref, props: mergeProps(props, { style, className: style_default2.stack }) }); return element; }); // packages/admin-ui/build-module/page/sidebar-toggle-slot.mjs var import_components = __toESM(require_components(), 1); var { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } = (0, import_components.createSlotFill)("SidebarToggle"); // packages/admin-ui/build-module/page/header.mjs var import_jsx_runtime68 = __toESM(require_jsx_runtime(), 1); function Header({ headingLevel = 1, breadcrumbs, badges, title, subTitle, actions, showSidebarToggle = true }) { const HeadingTag = `h${headingLevel}`; return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(Stack, { direction: "column", className: "admin-ui-page__header", children: [ /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(Stack, { direction: "row", justify: "space-between", gap: "sm", children: [ /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", justify: "start", children: [ showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)( SidebarToggleSlot, { bubblesVirtually: true, className: "admin-ui-page__sidebar-toggle-slot" } ), title && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(HeadingTag, { className: "admin-ui-page__header-title", children: title }), breadcrumbs, badges ] }), /* @__PURE__ */ (0, import_jsx_runtime68.jsx)( Stack, { direction: "row", gap: "sm", style: { width: "auto", flexShrink: 0 }, className: "admin-ui-page__header-actions", align: "center", children: actions } ) ] }), subTitle && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("p", { className: "admin-ui-page__header-subtitle", children: subTitle }) ] }); } // packages/admin-ui/build-module/page/index.mjs var import_jsx_runtime69 = __toESM(require_jsx_runtime(), 1); function Page({ headingLevel, breadcrumbs, badges, title, subTitle, children, className, actions, hasPadding = false, showSidebarToggle = true }) { const classes = clsx_default("admin-ui-page", className); return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(navigable_region_default, { className: classes, ariaLabel: title, children: [ (title || breadcrumbs || badges) && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)( Header, { headingLevel, breadcrumbs, badges, title, subTitle, actions, showSidebarToggle } ), hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "admin-ui-page__content has-padding", children }) : children ] }); } Page.SidebarToggleFill = SidebarToggleFill; var page_default2 = Page; // packages/edit-site/build-module/components/layout/index.mjs var import_components8 = __toESM(require_components(), 1); var import_compose2 = __toESM(require_compose(), 1); var import_i18n8 = __toESM(require_i18n(), 1); var import_element14 = __toESM(require_element(), 1); var import_editor6 = __toESM(require_editor(), 1); var import_router6 = __toESM(require_router(), 1); var import_plugins2 = __toESM(require_plugins(), 1); var import_notices = __toESM(require_notices(), 1); var import_data13 = __toESM(require_data(), 1); var import_preferences3 = __toESM(require_preferences(), 1); // packages/edit-site/build-module/components/site-hub/index.mjs var import_data5 = __toESM(require_data(), 1); var import_components3 = __toESM(require_components(), 1); var import_i18n3 = __toESM(require_i18n(), 1); var import_core_data4 = __toESM(require_core_data(), 1); var import_html_entities = __toESM(require_html_entities(), 1); var import_element7 = __toESM(require_element(), 1); var import_commands = __toESM(require_commands(), 1); var import_keycodes = __toESM(require_keycodes(), 1); var import_url = __toESM(require_url(), 1); var import_router = __toESM(require_router(), 1); // packages/edit-site/build-module/components/site-icon/index.mjs var import_data4 = __toESM(require_data(), 1); var import_components2 = __toESM(require_components(), 1); var import_i18n2 = __toESM(require_i18n(), 1); var import_core_data3 = __toESM(require_core_data(), 1); var import_jsx_runtime70 = __toESM(require_jsx_runtime(), 1); function SiteIcon({ className }) { const { isRequestingSite, siteIconUrl } = (0, import_data4.useSelect)((select3) => { const { getEntityRecord } = select3(import_core_data3.store); const siteData = getEntityRecord("root", "__unstableBase", void 0); return { isRequestingSite: !siteData, siteIconUrl: siteData?.site_icon_url }; }, []); if (isRequestingSite && !siteIconUrl) { return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "edit-site-site-icon__image" }); } const icon = siteIconUrl ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( "img", { className: "edit-site-site-icon__image", alt: (0, import_i18n2.__)("Site Icon"), src: siteIconUrl } ) : /* @__PURE__ */ (0, import_jsx_runtime70.jsx)( import_components2.Icon, { className: "edit-site-site-icon__icon", icon: wordpress_default, size: 48 } ); return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: clsx_default(className, "edit-site-site-icon"), children: icon }); } var site_icon_default = SiteIcon; // packages/edit-site/build-module/components/sidebar/index.mjs var import_element6 = __toESM(require_element(), 1); var import_dom = __toESM(require_dom(), 1); var import_jsx_runtime71 = __toESM(require_jsx_runtime(), 1); var SidebarNavigationContext = (0, import_element6.createContext)(() => { }); SidebarNavigationContext.displayName = "SidebarNavigationContext"; function focusSidebarElement(el, direction, focusSelector) { let elementToFocus; if (direction === "back" && focusSelector) { elementToFocus = el.querySelector(focusSelector); } if (direction !== null && !elementToFocus) { const [firstTabbable] = import_dom.focus.tabbable.find(el); elementToFocus = firstTabbable ?? el; } elementToFocus?.focus(); } function createNavState() { let state = { direction: null, focusSelector: null }; return { get() { return state; }, navigate(direction, focusSelector = null) { state = { direction, focusSelector: direction === "forward" && focusSelector ? focusSelector : state.focusSelector }; } }; } function SidebarContentWrapper({ children, shouldAnimate }) { const navState = (0, import_element6.useContext)(SidebarNavigationContext); const wrapperRef = (0, import_element6.useRef)(); const [navAnimation, setNavAnimation] = (0, import_element6.useState)(null); (0, import_element6.useLayoutEffect)(() => { const { direction, focusSelector } = navState.get(); focusSidebarElement(wrapperRef.current, direction, focusSelector); setNavAnimation(direction); }, [navState]); const wrapperCls = clsx_default( "edit-site-sidebar__screen-wrapper", /* * Some panes do not have sub-panes and therefore * should not animate when clicked on. */ shouldAnimate ? { "slide-from-left": navAnimation === "back", "slide-from-right": navAnimation === "forward" } : {} ); return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("div", { ref: wrapperRef, className: wrapperCls, children }); } function SidebarNavigationProvider({ children }) { const [navState] = (0, import_element6.useState)(createNavState); return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(SidebarNavigationContext.Provider, { value: navState, children }); } function SidebarContent({ routeKey, shouldAnimate, children }) { return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("div", { className: "edit-site-sidebar__content", children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)( SidebarContentWrapper, { shouldAnimate, children }, routeKey ) }); } // packages/edit-site/build-module/components/site-hub/index.mjs var import_jsx_runtime72 = __toESM(require_jsx_runtime(), 1); var { useLocation, useHistory } = unlock(import_router.privateApis); var SiteHub = (0, import_element7.memo)( (0, import_element7.forwardRef)(({ isTransparent }, ref) => { const { dashboardLink, homeUrl, siteTitle } = (0, import_data5.useSelect)((select3) => { const { getSettings: getSettings7 } = unlock(select3(store)); const { getEntityRecord } = select3(import_core_data4.store); const _site = getEntityRecord("root", "site"); return { dashboardLink: getSettings7().__experimentalDashboardLink, homeUrl: getEntityRecord("root", "__unstableBase")?.home, siteTitle: !_site?.title && !!_site?.url ? (0, import_url.filterURLForDisplay)(_site?.url) : _site?.title }; }, []); const { open: openCommandCenter } = (0, import_data5.useDispatch)(import_commands.store); return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("div", { className: "edit-site-site-hub", children: /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(import_components3.__experimentalHStack, { justify: "flex-start", spacing: "0", children: [ /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( "div", { className: clsx_default( "edit-site-site-hub__view-mode-toggle-container", { "has-transparent-background": isTransparent } ), children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( import_components3.Button, { __next40pxDefaultSize: true, ref, href: dashboardLink, label: (0, import_i18n3.__)("Go to the Dashboard"), className: "edit-site-layout__view-mode-toggle", style: { transform: "scale(0.5333) translateX(-4px)", // Offset to position the icon 12px from viewport edge borderRadius: 4 }, children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(site_icon_default, { className: "edit-site-layout__view-mode-toggle-icon" }) } ) } ), /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(import_components3.__experimentalHStack, { children: [ /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("div", { className: "edit-site-site-hub__title", children: /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)( import_components3.Button, { __next40pxDefaultSize: true, variant: "link", href: homeUrl, target: "_blank", children: [ (0, import_html_entities.decodeEntities)(siteTitle), /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(import_components3.VisuallyHidden, { as: "span", /* translators: accessibility text */ children: (0, import_i18n3.__)("(opens in a new tab)") }) ] } ) }), /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( import_components3.__experimentalHStack, { spacing: 0, expanded: false, className: "edit-site-site-hub__actions", children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( import_components3.Button, { size: "compact", className: "edit-site-site-hub_toggle-command-center", icon: search_default, onClick: () => openCommandCenter(), label: (0, import_i18n3.__)("Open command palette"), shortcut: import_keycodes.displayShortcut.primary("k") } ) } ) ] }) ] }) }); }) ); var site_hub_default = SiteHub; var SiteHubMobile = (0, import_element7.memo)( (0, import_element7.forwardRef)(({ isTransparent }, ref) => { const { path } = useLocation(); const history = useHistory(); const { navigate } = (0, import_element7.useContext)(SidebarNavigationContext); const { dashboardLink, homeUrl, siteTitle, isBlockTheme, isClassicThemeWithStyleBookSupport: isClassicThemeWithStyleBookSupport2 } = (0, import_data5.useSelect)((select3) => { const { getSettings: getSettings7 } = unlock(select3(store)); const { getEntityRecord, getCurrentTheme } = select3(import_core_data4.store); const _site = getEntityRecord("root", "site"); const currentTheme = getCurrentTheme(); const settings2 = getSettings7(); const supportsEditorStyles = currentTheme?.theme_supports["editor-styles"]; const hasThemeJson = settings2.supportsLayout; return { dashboardLink: settings2.__experimentalDashboardLink, homeUrl: getEntityRecord("root", "__unstableBase")?.home, siteTitle: !_site?.title && !!_site?.url ? (0, import_url.filterURLForDisplay)(_site?.url) : _site?.title, isBlockTheme: currentTheme?.is_block_theme, isClassicThemeWithStyleBookSupport: !currentTheme?.is_block_theme && (supportsEditorStyles || hasThemeJson) }; }, []); const { open: openCommandCenter } = (0, import_data5.useDispatch)(import_commands.store); let backPath; if (path !== "/") { if (isBlockTheme || isClassicThemeWithStyleBookSupport2) { backPath = "/"; } else if (path !== "/pattern") { backPath = "/pattern"; } } const backButtonProps = { href: !!backPath ? void 0 : dashboardLink, label: !!backPath ? (0, import_i18n3.__)("Go to Site Editor") : (0, import_i18n3.__)("Go to the Dashboard"), onClick: !!backPath ? () => { history.navigate(backPath); navigate("back"); } : void 0 }; return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("div", { className: "edit-site-site-hub", children: /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(import_components3.__experimentalHStack, { justify: "flex-start", spacing: "0", children: [ /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( "div", { className: clsx_default( "edit-site-site-hub__view-mode-toggle-container", { "has-transparent-background": isTransparent } ), children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( import_components3.Button, { __next40pxDefaultSize: true, ref, className: "edit-site-layout__view-mode-toggle", style: { transform: "scale(0.5)", borderRadius: 4 }, ...backButtonProps, children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(site_icon_default, { className: "edit-site-layout__view-mode-toggle-icon" }) } ) } ), /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(import_components3.__experimentalHStack, { children: [ /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("div", { className: "edit-site-site-hub__title", children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( import_components3.Button, { __next40pxDefaultSize: true, variant: "link", href: homeUrl, target: "_blank", label: (0, import_i18n3.__)("View site (opens in a new tab)"), children: (0, import_html_entities.decodeEntities)(siteTitle) } ) }), /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( import_components3.__experimentalHStack, { spacing: 0, expanded: false, className: "edit-site-site-hub__actions", children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)( import_components3.Button, { __next40pxDefaultSize: true, className: "edit-site-site-hub_toggle-command-center", icon: search_default, onClick: () => openCommandCenter(), label: (0, import_i18n3.__)("Open command palette"), shortcut: import_keycodes.displayShortcut.primary("k") } ) } ) ] }) ] }) }); }) ); // packages/edit-site/build-module/components/resizable-frame/index.mjs var import_element8 = __toESM(require_element(), 1); var import_components4 = __toESM(require_components(), 1); var import_compose = __toESM(require_compose(), 1); var import_i18n4 = __toESM(require_i18n(), 1); var import_router2 = __toESM(require_router(), 1); var import_data6 = __toESM(require_data(), 1); var import_core_data5 = __toESM(require_core_data(), 1); var import_url2 = __toESM(require_url(), 1); var import_jsx_runtime73 = __toESM(require_jsx_runtime(), 1); var { useLocation: useLocation2, useHistory: useHistory2 } = unlock(import_router2.privateApis); var HANDLE_STYLES_OVERRIDE = { position: void 0, userSelect: void 0, cursor: void 0, width: void 0, height: void 0, top: void 0, right: void 0, bottom: void 0, left: void 0 }; var FRAME_MIN_WIDTH = 320; var FRAME_REFERENCE_WIDTH = 1300; var FRAME_TARGET_ASPECT_RATIO = 9 / 19.5; var SNAP_TO_EDIT_CANVAS_MODE_THRESHOLD = 200; var INITIAL_FRAME_SIZE = { width: "100%", height: "100%" }; function calculateNewHeight(width, initialAspectRatio) { const lerp = (a2, b2, amount) => { return a2 + (b2 - a2) * amount; }; const lerpFactor = 1 - Math.max( 0, Math.min( 1, (width - FRAME_MIN_WIDTH) / (FRAME_REFERENCE_WIDTH - FRAME_MIN_WIDTH) ) ); const intermediateAspectRatio = lerp( initialAspectRatio, FRAME_TARGET_ASPECT_RATIO, lerpFactor ); return width / intermediateAspectRatio; } function ResizableFrame({ isFullWidth, isOversized, setIsOversized, isReady, children, /** The default (unresized) width/height of the frame, based on the space available in the viewport. */ defaultSize, innerContentStyle }) { const history = useHistory2(); const { path, query } = useLocation2(); const { canvas = "view" } = query; const disableMotion = (0, import_compose.useReducedMotion)(); const [frameSize, setFrameSize] = (0, import_element8.useState)(INITIAL_FRAME_SIZE); const [startingWidth, setStartingWidth] = (0, import_element8.useState)(); const [isResizing, setIsResizing] = (0, import_element8.useState)(false); const [shouldShowHandle, setShouldShowHandle] = (0, import_element8.useState)(false); const [resizeRatio, setResizeRatio] = (0, import_element8.useState)(1); const FRAME_TRANSITION = { type: "tween", duration: isResizing ? 0 : 0.5 }; const frameRef = (0, import_element8.useRef)(null); const resizableHandleHelpId = (0, import_compose.useInstanceId)( ResizableFrame, "edit-site-resizable-frame-handle-help" ); const defaultAspectRatio = defaultSize.width / defaultSize.height; const isBlockTheme = (0, import_data6.useSelect)((select3) => { const { getCurrentTheme } = select3(import_core_data5.store); return getCurrentTheme()?.is_block_theme; }, []); const handleResizeStart = (_event, _direction, ref) => { setStartingWidth(ref.offsetWidth); setIsResizing(true); }; const handleResize = (_event, _direction, _ref, delta) => { const normalizedDelta = delta.width / resizeRatio; const deltaAbs = Math.abs(normalizedDelta); const maxDoubledDelta = delta.width < 0 ? deltaAbs : (defaultSize.width - startingWidth) / 2; const deltaToDouble = Math.min(deltaAbs, maxDoubledDelta); const doubleSegment = deltaAbs === 0 ? 0 : deltaToDouble / deltaAbs; const singleSegment = 1 - doubleSegment; setResizeRatio(singleSegment + doubleSegment * 2); const updatedWidth = startingWidth + delta.width; setIsOversized(updatedWidth > defaultSize.width); setFrameSize({ height: isOversized ? "100%" : calculateNewHeight(updatedWidth, defaultAspectRatio) }); }; const handleResizeStop = (_event, _direction, ref) => { setIsResizing(false); if (!isOversized) { return; } setIsOversized(false); const remainingWidth = ref.ownerDocument.documentElement.offsetWidth - ref.offsetWidth; if (remainingWidth > SNAP_TO_EDIT_CANVAS_MODE_THRESHOLD || !isBlockTheme) { setFrameSize(INITIAL_FRAME_SIZE); } else { history.navigate( (0, import_url2.addQueryArgs)(path, { canvas: "edit" }), { transition: "canvas-mode-edit-transition" } ); } }; const handleResizableHandleKeyDown = (event) => { if (!["ArrowLeft", "ArrowRight"].includes(event.key)) { return; } event.preventDefault(); const step = 20 * (event.shiftKey ? 5 : 1); const delta = step * (event.key === "ArrowLeft" ? 1 : -1) * ((0, import_i18n4.isRTL)() ? -1 : 1); const newWidth = Math.min( Math.max( FRAME_MIN_WIDTH, frameRef.current.resizable.offsetWidth + delta ), defaultSize.width ); setFrameSize({ width: newWidth, height: calculateNewHeight(newWidth, defaultAspectRatio) }); }; const frameAnimationVariants = { default: { flexGrow: 0, height: frameSize.height }, fullWidth: { flexGrow: 1, height: frameSize.height } }; const resizeHandleVariants = { hidden: { opacity: 0, ...(0, import_i18n4.isRTL)() ? { right: 0 } : { left: 0 } }, visible: { opacity: 1, // Account for the handle's width. ...(0, import_i18n4.isRTL)() ? { right: -14 } : { left: -14 } }, active: { opacity: 1, // Account for the handle's width. ...(0, import_i18n4.isRTL)() ? { right: -14 } : { left: -14 }, scaleY: 1.3 } }; const currentResizeHandleVariant = (() => { if (isResizing) { return "active"; } return shouldShowHandle ? "visible" : "hidden"; })(); return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)( import_components4.ResizableBox, { as: import_components4.__unstableMotion.div, ref: frameRef, initial: false, variants: frameAnimationVariants, animate: isFullWidth ? "fullWidth" : "default", onAnimationComplete: (definition) => { if (definition === "fullWidth") { setFrameSize({ width: "100%", height: "100%" }); } }, whileHover: canvas === "view" && isBlockTheme ? { scale: 1.005, transition: { duration: disableMotion ? 0 : 0.5, ease: "easeOut" } } : {}, transition: FRAME_TRANSITION, size: frameSize, enable: { top: false, bottom: false, // Resizing will be disabled until the editor content is loaded. ...(0, import_i18n4.isRTL)() ? { right: isReady, left: false } : { left: isReady, right: false }, topRight: false, bottomRight: false, bottomLeft: false, topLeft: false }, resizeRatio, handleClasses: void 0, handleStyles: { left: HANDLE_STYLES_OVERRIDE, right: HANDLE_STYLES_OVERRIDE }, minWidth: FRAME_MIN_WIDTH, maxWidth: isFullWidth ? "100%" : "150%", maxHeight: "100%", onFocus: () => setShouldShowHandle(true), onBlur: () => setShouldShowHandle(false), onMouseOver: () => setShouldShowHandle(true), onMouseOut: () => setShouldShowHandle(false), handleComponent: { [(0, import_i18n4.isRTL)() ? "right" : "left"]: canvas === "view" && /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)(import_jsx_runtime73.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(import_components4.Tooltip, { text: (0, import_i18n4.__)("Drag to resize"), children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)( import_components4.__unstableMotion.button, { role: "separator", "aria-orientation": "vertical", className: clsx_default( "edit-site-resizable-frame__handle", { "is-resizing": isResizing } ), variants: resizeHandleVariants, animate: currentResizeHandleVariant, "aria-label": (0, import_i18n4.__)("Drag to resize"), "aria-describedby": resizableHandleHelpId, "aria-valuenow": frameRef.current?.resizable?.offsetWidth || void 0, "aria-valuemin": FRAME_MIN_WIDTH, "aria-valuemax": defaultSize.width, onKeyDown: handleResizableHandleKeyDown, initial: "hidden", exit: "hidden", whileFocus: "active", whileHover: "active" }, "handle" ) }), /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("div", { hidden: true, id: resizableHandleHelpId, children: (0, import_i18n4.__)( "Use left and right arrow keys to resize the canvas. Hold shift to resize in larger increments." ) }) ] }) }, onResizeStart: handleResizeStart, onResize: handleResize, onResizeStop: handleResizeStop, className: clsx_default("edit-site-resizable-frame__inner", { "is-resizing": isResizing }), showHandle: false, children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)( "div", { className: "edit-site-resizable-frame__inner-content", style: innerContentStyle, children } ) } ); } var resizable_frame_default = ResizableFrame; // packages/edit-site/build-module/components/save-keyboard-shortcut/index.mjs var import_element9 = __toESM(require_element(), 1); var import_keyboard_shortcuts = __toESM(require_keyboard_shortcuts(), 1); var import_i18n5 = __toESM(require_i18n(), 1); var import_data7 = __toESM(require_data(), 1); var import_core_data6 = __toESM(require_core_data(), 1); var import_editor3 = __toESM(require_editor(), 1); var shortcutName = "core/edit-site/save"; function SaveKeyboardShortcut() { const { __experimentalGetDirtyEntityRecords, isSavingEntityRecord } = (0, import_data7.useSelect)(import_core_data6.store); const { hasNonPostEntityChanges, isPostSavingLocked } = (0, import_data7.useSelect)(import_editor3.store); const { savePost } = (0, import_data7.useDispatch)(import_editor3.store); const { setIsSaveViewOpened: setIsSaveViewOpened2 } = (0, import_data7.useDispatch)(store); const { registerShortcut, unregisterShortcut } = (0, import_data7.useDispatch)( import_keyboard_shortcuts.store ); (0, import_element9.useEffect)(() => { registerShortcut({ name: shortcutName, category: "global", description: (0, import_i18n5.__)("Save your changes."), keyCombination: { modifier: "primary", character: "s" } }); return () => { unregisterShortcut(shortcutName); }; }, [registerShortcut, unregisterShortcut]); (0, import_keyboard_shortcuts.useShortcut)("core/edit-site/save", (event) => { event.preventDefault(); const dirtyEntityRecords = __experimentalGetDirtyEntityRecords(); const hasDirtyEntities = !!dirtyEntityRecords.length; const isSaving = dirtyEntityRecords.some( (record) => isSavingEntityRecord(record.kind, record.name, record.key) ); if (!hasDirtyEntities || isSaving) { return; } if (hasNonPostEntityChanges()) { setIsSaveViewOpened2(true); } else if (!isPostSavingLocked()) { savePost(); } }); return null; } // packages/edit-site/build-module/components/layout/hooks.mjs var import_element10 = __toESM(require_element(), 1); var import_data8 = __toESM(require_data(), 1); var import_core_data7 = __toESM(require_core_data(), 1); var MAX_LOADING_TIME = 1e4; function useIsSiteEditorLoading() { const [loaded, setLoaded] = (0, import_element10.useState)(false); const inLoadingPause = (0, import_data8.useSelect)( (select3) => { const hasResolvingSelectors = select3(import_core_data7.store).hasResolvingSelectors(); return !loaded && !hasResolvingSelectors; }, [loaded] ); (0, import_element10.useEffect)(() => { let timeout; if (!loaded) { timeout = setTimeout(() => { setLoaded(true); }, MAX_LOADING_TIME); } return () => { clearTimeout(timeout); }; }, [loaded]); (0, import_element10.useEffect)(() => { if (inLoadingPause) { const ARTIFICIAL_DELAY = 100; const timeout = setTimeout(() => { setLoaded(true); }, ARTIFICIAL_DELAY); return () => { clearTimeout(timeout); }; } }, [inLoadingPause]); return !loaded; } // node_modules/@react-spring/rafz/dist/react-spring-rafz.esm.js var updateQueue = makeQueue(); var raf = (fn) => schedule(fn, updateQueue); var writeQueue = makeQueue(); raf.write = (fn) => schedule(fn, writeQueue); var onStartQueue = makeQueue(); raf.onStart = (fn) => schedule(fn, onStartQueue); var onFrameQueue = makeQueue(); raf.onFrame = (fn) => schedule(fn, onFrameQueue); var onFinishQueue = makeQueue(); raf.onFinish = (fn) => schedule(fn, onFinishQueue); var timeouts = []; raf.setTimeout = (handler, ms) => { let time = raf.now() + ms; let cancel = () => { let i2 = timeouts.findIndex((t3) => t3.cancel == cancel); if (~i2) timeouts.splice(i2, 1); pendingCount -= ~i2 ? 1 : 0; }; let timeout = { time, handler, cancel }; timeouts.splice(findTimeout(time), 0, timeout); pendingCount += 1; start(); return timeout; }; var findTimeout = (time) => ~(~timeouts.findIndex((t3) => t3.time > time) || ~timeouts.length); raf.cancel = (fn) => { onStartQueue.delete(fn); onFrameQueue.delete(fn); onFinishQueue.delete(fn); updateQueue.delete(fn); writeQueue.delete(fn); }; raf.sync = (fn) => { sync = true; raf.batchedUpdates(fn); sync = false; }; raf.throttle = (fn) => { let lastArgs; function queuedFn() { try { fn(...lastArgs); } finally { lastArgs = null; } } function throttled(...args) { lastArgs = args; raf.onStart(queuedFn); } throttled.handler = fn; throttled.cancel = () => { onStartQueue.delete(queuedFn); lastArgs = null; }; return throttled; }; var nativeRaf = typeof window != "undefined" ? window.requestAnimationFrame : () => { }; raf.use = (impl) => nativeRaf = impl; raf.now = typeof performance != "undefined" ? () => performance.now() : Date.now; raf.batchedUpdates = (fn) => fn(); raf.catch = console.error; raf.frameLoop = "always"; raf.advance = () => { if (raf.frameLoop !== "demand") { console.warn("Cannot call the manual advancement of rafz whilst frameLoop is not set as demand"); } else { update2(); } }; var ts = -1; var pendingCount = 0; var sync = false; function schedule(fn, queue) { if (sync) { queue.delete(fn); fn(0); } else { queue.add(fn); start(); } } function start() { if (ts < 0) { ts = 0; if (raf.frameLoop !== "demand") { nativeRaf(loop); } } } function stop() { ts = -1; } function loop() { if (~ts) { nativeRaf(loop); raf.batchedUpdates(update2); } } function update2() { let prevTs = ts; ts = raf.now(); let count = findTimeout(ts); if (count) { eachSafely(timeouts.splice(0, count), (t3) => t3.handler()); pendingCount -= count; } if (!pendingCount) { stop(); return; } onStartQueue.flush(); updateQueue.flush(prevTs ? Math.min(64, ts - prevTs) : 16.667); onFrameQueue.flush(); writeQueue.flush(); onFinishQueue.flush(); } function makeQueue() { let next = /* @__PURE__ */ new Set(); let current = next; return { add(fn) { pendingCount += current == next && !next.has(fn) ? 1 : 0; next.add(fn); }, delete(fn) { pendingCount -= current == next && next.has(fn) ? 1 : 0; return next.delete(fn); }, flush(arg) { if (current.size) { next = /* @__PURE__ */ new Set(); pendingCount -= current.size; eachSafely(current, (fn) => fn(arg) && next.add(fn)); pendingCount += next.size; current = next; } } }; } function eachSafely(values, each2) { values.forEach((value) => { try { each2(value); } catch (e2) { raf.catch(e2); } }); } // node_modules/@react-spring/shared/dist/react-spring-shared.esm.js var import_react4 = __toESM(require_react()); function noop() { } var defineHidden = (obj, key, value) => Object.defineProperty(obj, key, { value, writable: true, configurable: true }); var is = { arr: Array.isArray, obj: (a2) => !!a2 && a2.constructor.name === "Object", fun: (a2) => typeof a2 === "function", str: (a2) => typeof a2 === "string", num: (a2) => typeof a2 === "number", und: (a2) => a2 === void 0 }; function isEqual(a2, b2) { if (is.arr(a2)) { if (!is.arr(b2) || a2.length !== b2.length) return false; for (let i2 = 0; i2 < a2.length; i2++) { if (a2[i2] !== b2[i2]) return false; } return true; } return a2 === b2; } var each = (obj, fn) => obj.forEach(fn); function eachProp(obj, fn, ctx9) { if (is.arr(obj)) { for (let i2 = 0; i2 < obj.length; i2++) { fn.call(ctx9, obj[i2], `${i2}`); } return; } for (const key in obj) { if (obj.hasOwnProperty(key)) { fn.call(ctx9, obj[key], key); } } } var toArray = (a2) => is.und(a2) ? [] : is.arr(a2) ? a2 : [a2]; function flush(queue, iterator) { if (queue.size) { const items = Array.from(queue); queue.clear(); each(items, iterator); } } var flushCalls = (queue, ...args) => flush(queue, (fn) => fn(...args)); var isSSR = () => typeof window === "undefined" || !window.navigator || /ServerSideRendering|^Deno\//.test(window.navigator.userAgent); var createStringInterpolator$1; var to; var colors$1 = null; var skipAnimation = false; var willAdvance = noop; var assign = (globals2) => { if (globals2.to) to = globals2.to; if (globals2.now) raf.now = globals2.now; if (globals2.colors !== void 0) colors$1 = globals2.colors; if (globals2.skipAnimation != null) skipAnimation = globals2.skipAnimation; if (globals2.createStringInterpolator) createStringInterpolator$1 = globals2.createStringInterpolator; if (globals2.requestAnimationFrame) raf.use(globals2.requestAnimationFrame); if (globals2.batchedUpdates) raf.batchedUpdates = globals2.batchedUpdates; if (globals2.willAdvance) willAdvance = globals2.willAdvance; if (globals2.frameLoop) raf.frameLoop = globals2.frameLoop; }; var globals = /* @__PURE__ */ Object.freeze({ __proto__: null, get createStringInterpolator() { return createStringInterpolator$1; }, get to() { return to; }, get colors() { return colors$1; }, get skipAnimation() { return skipAnimation; }, get willAdvance() { return willAdvance; }, assign }); var startQueue = /* @__PURE__ */ new Set(); var currentFrame = []; var prevFrame = []; var priority = 0; var frameLoop = { get idle() { return !startQueue.size && !currentFrame.length; }, start(animation) { if (priority > animation.priority) { startQueue.add(animation); raf.onStart(flushStartQueue); } else { startSafely(animation); raf(advance); } }, advance, sort(animation) { if (priority) { raf.onFrame(() => frameLoop.sort(animation)); } else { const prevIndex = currentFrame.indexOf(animation); if (~prevIndex) { currentFrame.splice(prevIndex, 1); startUnsafely(animation); } } }, clear() { currentFrame = []; startQueue.clear(); } }; function flushStartQueue() { startQueue.forEach(startSafely); startQueue.clear(); raf(advance); } function startSafely(animation) { if (!currentFrame.includes(animation)) startUnsafely(animation); } function startUnsafely(animation) { currentFrame.splice(findIndex(currentFrame, (other) => other.priority > animation.priority), 0, animation); } function advance(dt) { const nextFrame = prevFrame; for (let i2 = 0; i2 < currentFrame.length; i2++) { const animation = currentFrame[i2]; priority = animation.priority; if (!animation.idle) { willAdvance(animation); animation.advance(dt); if (!animation.idle) { nextFrame.push(animation); } } } priority = 0; prevFrame = currentFrame; prevFrame.length = 0; currentFrame = nextFrame; return currentFrame.length > 0; } function findIndex(arr, test) { const index = arr.findIndex(test); return index < 0 ? arr.length : index; } var colors = { transparent: 0, aliceblue: 4042850303, antiquewhite: 4209760255, aqua: 16777215, aquamarine: 2147472639, azure: 4043309055, beige: 4126530815, bisque: 4293182719, black: 255, blanchedalmond: 4293643775, blue: 65535, blueviolet: 2318131967, brown: 2771004159, burlywood: 3736635391, burntsienna: 3934150143, cadetblue: 1604231423, chartreuse: 2147418367, chocolate: 3530104575, coral: 4286533887, cornflowerblue: 1687547391, cornsilk: 4294499583, crimson: 3692313855, cyan: 16777215, darkblue: 35839, darkcyan: 9145343, darkgoldenrod: 3095792639, darkgray: 2846468607, darkgreen: 6553855, darkgrey: 2846468607, darkkhaki: 3182914559, darkmagenta: 2332068863, darkolivegreen: 1433087999, darkorange: 4287365375, darkorchid: 2570243327, darkred: 2332033279, darksalmon: 3918953215, darkseagreen: 2411499519, darkslateblue: 1211993087, darkslategray: 793726975, darkslategrey: 793726975, darkturquoise: 13554175, darkviolet: 2483082239, deeppink: 4279538687, deepskyblue: 12582911, dimgray: 1768516095, dimgrey: 1768516095, dodgerblue: 512819199, firebrick: 2988581631, floralwhite: 4294635775, forestgreen: 579543807, fuchsia: 4278255615, gainsboro: 3705462015, ghostwhite: 4177068031, gold: 4292280575, goldenrod: 3668254975, gray: 2155905279, green: 8388863, greenyellow: 2919182335, grey: 2155905279, honeydew: 4043305215, hotpink: 4285117695, indianred: 3445382399, indigo: 1258324735, ivory: 4294963455, khaki: 4041641215, lavender: 3873897215, lavenderblush: 4293981695, lawngreen: 2096890111, lemonchiffon: 4294626815, lightblue: 2916673279, lightcoral: 4034953471, lightcyan: 3774873599, lightgoldenrodyellow: 4210742015, lightgray: 3553874943, lightgreen: 2431553791, lightgrey: 3553874943, lightpink: 4290167295, lightsalmon: 4288707327, lightseagreen: 548580095, lightskyblue: 2278488831, lightslategray: 2005441023, lightslategrey: 2005441023, lightsteelblue: 2965692159, lightyellow: 4294959359, lime: 16711935, limegreen: 852308735, linen: 4210091775, magenta: 4278255615, maroon: 2147483903, mediumaquamarine: 1724754687, mediumblue: 52735, mediumorchid: 3126187007, mediumpurple: 2473647103, mediumseagreen: 1018393087, mediumslateblue: 2070474495, mediumspringgreen: 16423679, mediumturquoise: 1221709055, mediumvioletred: 3340076543, midnightblue: 421097727, mintcream: 4127193855, mistyrose: 4293190143, moccasin: 4293178879, navajowhite: 4292783615, navy: 33023, oldlace: 4260751103, olive: 2155872511, olivedrab: 1804477439, orange: 4289003775, orangered: 4282712319, orchid: 3664828159, palegoldenrod: 4008225535, palegreen: 2566625535, paleturquoise: 2951671551, palevioletred: 3681588223, papayawhip: 4293907967, peachpuff: 4292524543, peru: 3448061951, pink: 4290825215, plum: 3718307327, powderblue: 2967529215, purple: 2147516671, rebeccapurple: 1714657791, red: 4278190335, rosybrown: 3163525119, royalblue: 1097458175, saddlebrown: 2336560127, salmon: 4202722047, sandybrown: 4104413439, seagreen: 780883967, seashell: 4294307583, sienna: 2689740287, silver: 3233857791, skyblue: 2278484991, slateblue: 1784335871, slategray: 1887473919, slategrey: 1887473919, snow: 4294638335, springgreen: 16744447, steelblue: 1182971135, tan: 3535047935, teal: 8421631, thistle: 3636451583, tomato: 4284696575, turquoise: 1088475391, violet: 4001558271, wheat: 4125012991, white: 4294967295, whitesmoke: 4126537215, yellow: 4294902015, yellowgreen: 2597139199 }; var NUMBER = "[-+]?\\d*\\.?\\d+"; var PERCENTAGE = NUMBER + "%"; function call(...parts) { return "\\(\\s*(" + parts.join(")\\s*,\\s*(") + ")\\s*\\)"; } var rgb = new RegExp("rgb" + call(NUMBER, NUMBER, NUMBER)); var rgba = new RegExp("rgba" + call(NUMBER, NUMBER, NUMBER, NUMBER)); var hsl = new RegExp("hsl" + call(NUMBER, PERCENTAGE, PERCENTAGE)); var hsla = new RegExp("hsla" + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER)); var hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/; var hex4 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/; var hex6 = /^#([0-9a-fA-F]{6})$/; var hex8 = /^#([0-9a-fA-F]{8})$/; function normalizeColor(color) { let match3; if (typeof color === "number") { return color >>> 0 === color && color >= 0 && color <= 4294967295 ? color : null; } if (match3 = hex6.exec(color)) return parseInt(match3[1] + "ff", 16) >>> 0; if (colors$1 && colors$1[color] !== void 0) { return colors$1[color]; } if (match3 = rgb.exec(color)) { return (parse255(match3[1]) << 24 | parse255(match3[2]) << 16 | parse255(match3[3]) << 8 | 255) >>> 0; } if (match3 = rgba.exec(color)) { return (parse255(match3[1]) << 24 | parse255(match3[2]) << 16 | parse255(match3[3]) << 8 | parse1(match3[4])) >>> 0; } if (match3 = hex3.exec(color)) { return parseInt(match3[1] + match3[1] + match3[2] + match3[2] + match3[3] + match3[3] + "ff", 16) >>> 0; } if (match3 = hex8.exec(color)) return parseInt(match3[1], 16) >>> 0; if (match3 = hex4.exec(color)) { return parseInt(match3[1] + match3[1] + match3[2] + match3[2] + match3[3] + match3[3] + match3[4] + match3[4], 16) >>> 0; } if (match3 = hsl.exec(color)) { return (hslToRgb(parse360(match3[1]), parsePercentage(match3[2]), parsePercentage(match3[3])) | 255) >>> 0; } if (match3 = hsla.exec(color)) { return (hslToRgb(parse360(match3[1]), parsePercentage(match3[2]), parsePercentage(match3[3])) | parse1(match3[4])) >>> 0; } return null; } function hue2rgb(p3, q, t3) { if (t3 < 0) t3 += 1; if (t3 > 1) t3 -= 1; if (t3 < 1 / 6) return p3 + (q - p3) * 6 * t3; if (t3 < 1 / 2) return q; if (t3 < 2 / 3) return p3 + (q - p3) * (2 / 3 - t3) * 6; return p3; } function hslToRgb(h2, s2, l2) { const q = l2 < 0.5 ? l2 * (1 + s2) : l2 + s2 - l2 * s2; const p3 = 2 * l2 - q; const r3 = hue2rgb(p3, q, h2 + 1 / 3); const g2 = hue2rgb(p3, q, h2); const b2 = hue2rgb(p3, q, h2 - 1 / 3); return Math.round(r3 * 255) << 24 | Math.round(g2 * 255) << 16 | Math.round(b2 * 255) << 8; } function parse255(str) { const int = parseInt(str, 10); if (int < 0) return 0; if (int > 255) return 255; return int; } function parse360(str) { const int = parseFloat(str); return (int % 360 + 360) % 360 / 360; } function parse1(str) { const num = parseFloat(str); if (num < 0) return 0; if (num > 1) return 255; return Math.round(num * 255); } function parsePercentage(str) { const int = parseFloat(str); if (int < 0) return 0; if (int > 100) return 1; return int / 100; } function colorToRgba(input) { let int32Color = normalizeColor(input); if (int32Color === null) return input; int32Color = int32Color || 0; let r3 = (int32Color & 4278190080) >>> 24; let g2 = (int32Color & 16711680) >>> 16; let b2 = (int32Color & 65280) >>> 8; let a2 = (int32Color & 255) / 255; return `rgba(${r3}, ${g2}, ${b2}, ${a2})`; } var createInterpolator = (range, output, extrapolate) => { if (is.fun(range)) { return range; } if (is.arr(range)) { return createInterpolator({ range, output, extrapolate }); } if (is.str(range.output[0])) { return createStringInterpolator$1(range); } const config2 = range; const outputRange = config2.output; const inputRange = config2.range || [0, 1]; const extrapolateLeft = config2.extrapolateLeft || config2.extrapolate || "extend"; const extrapolateRight = config2.extrapolateRight || config2.extrapolate || "extend"; const easing = config2.easing || ((t3) => t3); return (input) => { const range2 = findRange(input, inputRange); return interpolate(input, inputRange[range2], inputRange[range2 + 1], outputRange[range2], outputRange[range2 + 1], easing, extrapolateLeft, extrapolateRight, config2.map); }; }; function interpolate(input, inputMin, inputMax, outputMin, outputMax, easing, extrapolateLeft, extrapolateRight, map) { let result = map ? map(input) : input; if (result < inputMin) { if (extrapolateLeft === "identity") return result; else if (extrapolateLeft === "clamp") result = inputMin; } if (result > inputMax) { if (extrapolateRight === "identity") return result; else if (extrapolateRight === "clamp") result = inputMax; } if (outputMin === outputMax) return outputMin; if (inputMin === inputMax) return input <= inputMin ? outputMin : outputMax; if (inputMin === -Infinity) result = -result; else if (inputMax === Infinity) result = result - inputMin; else result = (result - inputMin) / (inputMax - inputMin); result = easing(result); if (outputMin === -Infinity) result = -result; else if (outputMax === Infinity) result = result + outputMin; else result = result * (outputMax - outputMin) + outputMin; return result; } function findRange(input, inputRange) { for (var i2 = 1; i2 < inputRange.length - 1; ++i2) if (inputRange[i2] >= input) break; return i2 - 1; } function _extends() { _extends = Object.assign ? Object.assign.bind() : function(target) { for (var i2 = 1; i2 < arguments.length; i2++) { var source = arguments[i2]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } var $get = /* @__PURE__ */ Symbol.for("FluidValue.get"); var $observers = /* @__PURE__ */ Symbol.for("FluidValue.observers"); var hasFluidValue = (arg) => Boolean(arg && arg[$get]); var getFluidValue = (arg) => arg && arg[$get] ? arg[$get]() : arg; var getFluidObservers = (target) => target[$observers] || null; function callFluidObserver(observer, event) { if (observer.eventObserved) { observer.eventObserved(event); } else { observer(event); } } function callFluidObservers(target, event) { let observers = target[$observers]; if (observers) { observers.forEach((observer) => { callFluidObserver(observer, event); }); } } var FluidValue = class { constructor(get) { this[$get] = void 0; this[$observers] = void 0; if (!get && !(get = this.get)) { throw Error("Unknown getter"); } setFluidGetter(this, get); } }; var setFluidGetter = (target, get) => setHidden(target, $get, get); function addFluidObserver(target, observer) { if (target[$get]) { let observers = target[$observers]; if (!observers) { setHidden(target, $observers, observers = /* @__PURE__ */ new Set()); } if (!observers.has(observer)) { observers.add(observer); if (target.observerAdded) { target.observerAdded(observers.size, observer); } } } return observer; } function removeFluidObserver(target, observer) { let observers = target[$observers]; if (observers && observers.has(observer)) { const count = observers.size - 1; if (count) { observers.delete(observer); } else { target[$observers] = null; } if (target.observerRemoved) { target.observerRemoved(count, observer); } } } var setHidden = (target, key, value) => Object.defineProperty(target, key, { value, writable: true, configurable: true }); var numberRegex = /[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?/g; var colorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d\.]+%?\))/gi; var unitRegex = new RegExp(`(${numberRegex.source})(%|[a-z]+)`, "i"); var rgbaRegex = /rgba\(([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+)\)/gi; var cssVariableRegex = /var\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\)/; var variableToRgba = (input) => { const [token, fallback] = parseCSSVariable(input); if (!token || isSSR()) { return input; } const value = window.getComputedStyle(document.documentElement).getPropertyValue(token); if (value) { return value.trim(); } else if (fallback && fallback.startsWith("--")) { const _value = window.getComputedStyle(document.documentElement).getPropertyValue(fallback); if (_value) { return _value; } else { return input; } } else if (fallback && cssVariableRegex.test(fallback)) { return variableToRgba(fallback); } else if (fallback) { return fallback; } return input; }; var parseCSSVariable = (current) => { const match3 = cssVariableRegex.exec(current); if (!match3) return [,]; const [, token, fallback] = match3; return [token, fallback]; }; var namedColorRegex; var rgbaRound = (_, p1, p22, p3, p4) => `rgba(${Math.round(p1)}, ${Math.round(p22)}, ${Math.round(p3)}, ${p4})`; var createStringInterpolator = (config2) => { if (!namedColorRegex) namedColorRegex = colors$1 ? new RegExp(`(${Object.keys(colors$1).join("|")})(?!\\w)`, "g") : /^\b$/; const output = config2.output.map((value) => { return getFluidValue(value).replace(cssVariableRegex, variableToRgba).replace(colorRegex, colorToRgba).replace(namedColorRegex, colorToRgba); }); const keyframes = output.map((value) => value.match(numberRegex).map(Number)); const outputRanges = keyframes[0].map((_, i2) => keyframes.map((values) => { if (!(i2 in values)) { throw Error('The arity of each "output" value must be equal'); } return values[i2]; })); const interpolators = outputRanges.map((output2) => createInterpolator(_extends({}, config2, { output: output2 }))); return (input) => { var _output$find; const missingUnit = !unitRegex.test(output[0]) && ((_output$find = output.find((value) => unitRegex.test(value))) == null ? void 0 : _output$find.replace(numberRegex, "")); let i2 = 0; return output[0].replace(numberRegex, () => `${interpolators[i2++](input)}${missingUnit || ""}`).replace(rgbaRegex, rgbaRound); }; }; var prefix = "react-spring: "; var once = (fn) => { const func = fn; let called = false; if (typeof func != "function") { throw new TypeError(`${prefix}once requires a function parameter`); } return (...args) => { if (!called) { func(...args); called = true; } }; }; var warnInterpolate = once(console.warn); function deprecateInterpolate() { warnInterpolate(`${prefix}The "interpolate" function is deprecated in v9 (use "to" instead)`); } var warnDirectCall = once(console.warn); function isAnimatedString(value) { return is.str(value) && (value[0] == "#" || /\d/.test(value) || !isSSR() && cssVariableRegex.test(value) || value in (colors$1 || {})); } var useIsomorphicLayoutEffect = isSSR() ? import_react4.useEffect : import_react4.useLayoutEffect; var useIsMounted = () => { const isMounted = (0, import_react4.useRef)(false); useIsomorphicLayoutEffect(() => { isMounted.current = true; return () => { isMounted.current = false; }; }, []); return isMounted; }; function useForceUpdate() { const update4 = (0, import_react4.useState)()[1]; const isMounted = useIsMounted(); return () => { if (isMounted.current) { update4(Math.random()); } }; } function useMemoOne(getResult, inputs) { const [initial] = (0, import_react4.useState)(() => ({ inputs, result: getResult() })); const committed = (0, import_react4.useRef)(); const prevCache = committed.current; let cache = prevCache; if (cache) { const useCache = Boolean(inputs && cache.inputs && areInputsEqual(inputs, cache.inputs)); if (!useCache) { cache = { inputs, result: getResult() }; } } else { cache = initial; } (0, import_react4.useEffect)(() => { committed.current = cache; if (prevCache == initial) { initial.inputs = initial.result = void 0; } }, [cache]); return cache.result; } function areInputsEqual(next, prev) { if (next.length !== prev.length) { return false; } for (let i2 = 0; i2 < next.length; i2++) { if (next[i2] !== prev[i2]) { return false; } } return true; } var useOnce = (effect) => (0, import_react4.useEffect)(effect, emptyDeps); var emptyDeps = []; // node_modules/@react-spring/core/dist/react-spring-core.esm.js var React6 = __toESM(require_react()); var import_react6 = __toESM(require_react()); // node_modules/@react-spring/animated/dist/react-spring-animated.esm.js var React5 = __toESM(require_react()); var import_react5 = __toESM(require_react()); var $node = /* @__PURE__ */ Symbol.for("Animated:node"); var isAnimated = (value) => !!value && value[$node] === value; var getAnimated = (owner) => owner && owner[$node]; var setAnimated = (owner, node) => defineHidden(owner, $node, node); var getPayload = (owner) => owner && owner[$node] && owner[$node].getPayload(); var Animated = class { constructor() { this.payload = void 0; setAnimated(this, this); } getPayload() { return this.payload || []; } }; var AnimatedValue = class _AnimatedValue extends Animated { constructor(_value) { super(); this.done = true; this.elapsedTime = void 0; this.lastPosition = void 0; this.lastVelocity = void 0; this.v0 = void 0; this.durationProgress = 0; this._value = _value; if (is.num(this._value)) { this.lastPosition = this._value; } } static create(value) { return new _AnimatedValue(value); } getPayload() { return [this]; } getValue() { return this._value; } setValue(value, step) { if (is.num(value)) { this.lastPosition = value; if (step) { value = Math.round(value / step) * step; if (this.done) { this.lastPosition = value; } } } if (this._value === value) { return false; } this._value = value; return true; } reset() { const { done } = this; this.done = false; if (is.num(this._value)) { this.elapsedTime = 0; this.durationProgress = 0; this.lastPosition = this._value; if (done) this.lastVelocity = null; this.v0 = null; } } }; var AnimatedString = class _AnimatedString extends AnimatedValue { constructor(value) { super(0); this._string = null; this._toString = void 0; this._toString = createInterpolator({ output: [value, value] }); } static create(value) { return new _AnimatedString(value); } getValue() { let value = this._string; return value == null ? this._string = this._toString(this._value) : value; } setValue(value) { if (is.str(value)) { if (value == this._string) { return false; } this._string = value; this._value = 1; } else if (super.setValue(value)) { this._string = null; } else { return false; } return true; } reset(goal) { if (goal) { this._toString = createInterpolator({ output: [this.getValue(), goal] }); } this._value = 0; super.reset(); } }; var TreeContext = { dependencies: null }; var AnimatedObject = class extends Animated { constructor(source) { super(); this.source = source; this.setValue(source); } getValue(animated2) { const values = {}; eachProp(this.source, (source, key) => { if (isAnimated(source)) { values[key] = source.getValue(animated2); } else if (hasFluidValue(source)) { values[key] = getFluidValue(source); } else if (!animated2) { values[key] = source; } }); return values; } setValue(source) { this.source = source; this.payload = this._makePayload(source); } reset() { if (this.payload) { each(this.payload, (node) => node.reset()); } } _makePayload(source) { if (source) { const payload = /* @__PURE__ */ new Set(); eachProp(source, this._addToPayload, payload); return Array.from(payload); } } _addToPayload(source) { if (TreeContext.dependencies && hasFluidValue(source)) { TreeContext.dependencies.add(source); } const payload = getPayload(source); if (payload) { each(payload, (node) => this.add(node)); } } }; var AnimatedArray = class _AnimatedArray extends AnimatedObject { constructor(source) { super(source); } static create(source) { return new _AnimatedArray(source); } getValue() { return this.source.map((node) => node.getValue()); } setValue(source) { const payload = this.getPayload(); if (source.length == payload.length) { return payload.map((node, i2) => node.setValue(source[i2])).some(Boolean); } super.setValue(source.map(makeAnimated)); return true; } }; function makeAnimated(value) { const nodeType = isAnimatedString(value) ? AnimatedString : AnimatedValue; return nodeType.create(value); } function getAnimatedType(value) { const parentNode = getAnimated(value); return parentNode ? parentNode.constructor : is.arr(value) ? AnimatedArray : isAnimatedString(value) ? AnimatedString : AnimatedValue; } function _extends2() { _extends2 = Object.assign ? Object.assign.bind() : function(target) { for (var i2 = 1; i2 < arguments.length; i2++) { var source = arguments[i2]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends2.apply(this, arguments); } var withAnimated = (Component, host2) => { const hasInstance = !is.fun(Component) || Component.prototype && Component.prototype.isReactComponent; return (0, import_react5.forwardRef)((givenProps, givenRef) => { const instanceRef = (0, import_react5.useRef)(null); const ref = hasInstance && (0, import_react5.useCallback)((value) => { instanceRef.current = updateRef(givenRef, value); }, [givenRef]); const [props, deps] = getAnimatedState(givenProps, host2); const forceUpdate = useForceUpdate(); const callback = () => { const instance = instanceRef.current; if (hasInstance && !instance) { return; } const didUpdate = instance ? host2.applyAnimatedValues(instance, props.getValue(true)) : false; if (didUpdate === false) { forceUpdate(); } }; const observer = new PropsObserver(callback, deps); const observerRef = (0, import_react5.useRef)(); useIsomorphicLayoutEffect(() => { observerRef.current = observer; each(deps, (dep) => addFluidObserver(dep, observer)); return () => { if (observerRef.current) { each(observerRef.current.deps, (dep) => removeFluidObserver(dep, observerRef.current)); raf.cancel(observerRef.current.update); } }; }); (0, import_react5.useEffect)(callback, []); useOnce(() => () => { const observer2 = observerRef.current; each(observer2.deps, (dep) => removeFluidObserver(dep, observer2)); }); const usedProps = host2.getComponentProps(props.getValue()); return React5.createElement(Component, _extends2({}, usedProps, { ref })); }); }; var PropsObserver = class { constructor(update4, deps) { this.update = update4; this.deps = deps; } eventObserved(event) { if (event.type == "change") { raf.write(this.update); } } }; function getAnimatedState(props, host2) { const dependencies = /* @__PURE__ */ new Set(); TreeContext.dependencies = dependencies; if (props.style) props = _extends2({}, props, { style: host2.createAnimatedStyle(props.style) }); props = new AnimatedObject(props); TreeContext.dependencies = null; return [props, dependencies]; } function updateRef(ref, value) { if (ref) { if (is.fun(ref)) ref(value); else ref.current = value; } return value; } var cacheKey = /* @__PURE__ */ Symbol.for("AnimatedComponent"); var createHost = (components, { applyAnimatedValues: _applyAnimatedValues = () => false, createAnimatedStyle: _createAnimatedStyle = (style) => new AnimatedObject(style), getComponentProps: _getComponentProps = (props) => props } = {}) => { const hostConfig = { applyAnimatedValues: _applyAnimatedValues, createAnimatedStyle: _createAnimatedStyle, getComponentProps: _getComponentProps }; const animated2 = (Component) => { const displayName = getDisplayName(Component) || "Anonymous"; if (is.str(Component)) { Component = animated2[Component] || (animated2[Component] = withAnimated(Component, hostConfig)); } else { Component = Component[cacheKey] || (Component[cacheKey] = withAnimated(Component, hostConfig)); } Component.displayName = `Animated(${displayName})`; return Component; }; eachProp(components, (Component, key) => { if (is.arr(components)) { key = getDisplayName(Component); } animated2[key] = animated2(Component); }); return { animated: animated2 }; }; var getDisplayName = (arg) => is.str(arg) ? arg : arg && is.str(arg.displayName) ? arg.displayName : is.fun(arg) && arg.name || null; // node_modules/@react-spring/core/dist/react-spring-core.esm.js function _extends3() { _extends3 = Object.assign ? Object.assign.bind() : function(target) { for (var i2 = 1; i2 < arguments.length; i2++) { var source = arguments[i2]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends3.apply(this, arguments); } function callProp(value, ...args) { return is.fun(value) ? value(...args) : value; } var matchProp = (value, key) => value === true || !!(key && value && (is.fun(value) ? value(key) : toArray(value).includes(key))); var resolveProp = (prop, key) => is.obj(prop) ? key && prop[key] : prop; var getDefaultProp = (props, key) => props.default === true ? props[key] : props.default ? props.default[key] : void 0; var noopTransform = (value) => value; var getDefaultProps = (props, transform = noopTransform) => { let keys = DEFAULT_PROPS; if (props.default && props.default !== true) { props = props.default; keys = Object.keys(props); } const defaults2 = {}; for (const key of keys) { const value = transform(props[key], key); if (!is.und(value)) { defaults2[key] = value; } } return defaults2; }; var DEFAULT_PROPS = ["config", "onProps", "onStart", "onChange", "onPause", "onResume", "onRest"]; var RESERVED_PROPS = { config: 1, from: 1, to: 1, ref: 1, loop: 1, reset: 1, pause: 1, cancel: 1, reverse: 1, immediate: 1, default: 1, delay: 1, onProps: 1, onStart: 1, onChange: 1, onPause: 1, onResume: 1, onRest: 1, onResolve: 1, items: 1, trail: 1, sort: 1, expires: 1, initial: 1, enter: 1, update: 1, leave: 1, children: 1, onDestroyed: 1, keys: 1, callId: 1, parentId: 1 }; function getForwardProps(props) { const forward = {}; let count = 0; eachProp(props, (value, prop) => { if (!RESERVED_PROPS[prop]) { forward[prop] = value; count++; } }); if (count) { return forward; } } function inferTo(props) { const to2 = getForwardProps(props); if (to2) { const out = { to: to2 }; eachProp(props, (val, key) => key in to2 || (out[key] = val)); return out; } return _extends3({}, props); } function computeGoal(value) { value = getFluidValue(value); return is.arr(value) ? value.map(computeGoal) : isAnimatedString(value) ? globals.createStringInterpolator({ range: [0, 1], output: [value, value] })(1) : value; } function isAsyncTo(to2) { return is.fun(to2) || is.arr(to2) && is.obj(to2[0]); } var config = { default: { tension: 170, friction: 26 }, gentle: { tension: 120, friction: 14 }, wobbly: { tension: 180, friction: 12 }, stiff: { tension: 210, friction: 20 }, slow: { tension: 280, friction: 60 }, molasses: { tension: 280, friction: 120 } }; var c1 = 1.70158; var c2 = c1 * 1.525; var c3 = c1 + 1; var c4 = 2 * Math.PI / 3; var c5 = 2 * Math.PI / 4.5; var bounceOut = (x2) => { const n1 = 7.5625; const d1 = 2.75; if (x2 < 1 / d1) { return n1 * x2 * x2; } else if (x2 < 2 / d1) { return n1 * (x2 -= 1.5 / d1) * x2 + 0.75; } else if (x2 < 2.5 / d1) { return n1 * (x2 -= 2.25 / d1) * x2 + 0.9375; } else { return n1 * (x2 -= 2.625 / d1) * x2 + 0.984375; } }; var easings = { linear: (x2) => x2, easeInQuad: (x2) => x2 * x2, easeOutQuad: (x2) => 1 - (1 - x2) * (1 - x2), easeInOutQuad: (x2) => x2 < 0.5 ? 2 * x2 * x2 : 1 - Math.pow(-2 * x2 + 2, 2) / 2, easeInCubic: (x2) => x2 * x2 * x2, easeOutCubic: (x2) => 1 - Math.pow(1 - x2, 3), easeInOutCubic: (x2) => x2 < 0.5 ? 4 * x2 * x2 * x2 : 1 - Math.pow(-2 * x2 + 2, 3) / 2, easeInQuart: (x2) => x2 * x2 * x2 * x2, easeOutQuart: (x2) => 1 - Math.pow(1 - x2, 4), easeInOutQuart: (x2) => x2 < 0.5 ? 8 * x2 * x2 * x2 * x2 : 1 - Math.pow(-2 * x2 + 2, 4) / 2, easeInQuint: (x2) => x2 * x2 * x2 * x2 * x2, easeOutQuint: (x2) => 1 - Math.pow(1 - x2, 5), easeInOutQuint: (x2) => x2 < 0.5 ? 16 * x2 * x2 * x2 * x2 * x2 : 1 - Math.pow(-2 * x2 + 2, 5) / 2, easeInSine: (x2) => 1 - Math.cos(x2 * Math.PI / 2), easeOutSine: (x2) => Math.sin(x2 * Math.PI / 2), easeInOutSine: (x2) => -(Math.cos(Math.PI * x2) - 1) / 2, easeInExpo: (x2) => x2 === 0 ? 0 : Math.pow(2, 10 * x2 - 10), easeOutExpo: (x2) => x2 === 1 ? 1 : 1 - Math.pow(2, -10 * x2), easeInOutExpo: (x2) => x2 === 0 ? 0 : x2 === 1 ? 1 : x2 < 0.5 ? Math.pow(2, 20 * x2 - 10) / 2 : (2 - Math.pow(2, -20 * x2 + 10)) / 2, easeInCirc: (x2) => 1 - Math.sqrt(1 - Math.pow(x2, 2)), easeOutCirc: (x2) => Math.sqrt(1 - Math.pow(x2 - 1, 2)), easeInOutCirc: (x2) => x2 < 0.5 ? (1 - Math.sqrt(1 - Math.pow(2 * x2, 2))) / 2 : (Math.sqrt(1 - Math.pow(-2 * x2 + 2, 2)) + 1) / 2, easeInBack: (x2) => c3 * x2 * x2 * x2 - c1 * x2 * x2, easeOutBack: (x2) => 1 + c3 * Math.pow(x2 - 1, 3) + c1 * Math.pow(x2 - 1, 2), easeInOutBack: (x2) => x2 < 0.5 ? Math.pow(2 * x2, 2) * ((c2 + 1) * 2 * x2 - c2) / 2 : (Math.pow(2 * x2 - 2, 2) * ((c2 + 1) * (x2 * 2 - 2) + c2) + 2) / 2, easeInElastic: (x2) => x2 === 0 ? 0 : x2 === 1 ? 1 : -Math.pow(2, 10 * x2 - 10) * Math.sin((x2 * 10 - 10.75) * c4), easeOutElastic: (x2) => x2 === 0 ? 0 : x2 === 1 ? 1 : Math.pow(2, -10 * x2) * Math.sin((x2 * 10 - 0.75) * c4) + 1, easeInOutElastic: (x2) => x2 === 0 ? 0 : x2 === 1 ? 1 : x2 < 0.5 ? -(Math.pow(2, 20 * x2 - 10) * Math.sin((20 * x2 - 11.125) * c5)) / 2 : Math.pow(2, -20 * x2 + 10) * Math.sin((20 * x2 - 11.125) * c5) / 2 + 1, easeInBounce: (x2) => 1 - bounceOut(1 - x2), easeOutBounce: bounceOut, easeInOutBounce: (x2) => x2 < 0.5 ? (1 - bounceOut(1 - 2 * x2)) / 2 : (1 + bounceOut(2 * x2 - 1)) / 2 }; var defaults = _extends3({}, config.default, { mass: 1, damping: 1, easing: easings.linear, clamp: false }); var AnimationConfig = class { constructor() { this.tension = void 0; this.friction = void 0; this.frequency = void 0; this.damping = void 0; this.mass = void 0; this.velocity = 0; this.restVelocity = void 0; this.precision = void 0; this.progress = void 0; this.duration = void 0; this.easing = void 0; this.clamp = void 0; this.bounce = void 0; this.decay = void 0; this.round = void 0; Object.assign(this, defaults); } }; function mergeConfig(config2, newConfig, defaultConfig) { if (defaultConfig) { defaultConfig = _extends3({}, defaultConfig); sanitizeConfig(defaultConfig, newConfig); newConfig = _extends3({}, defaultConfig, newConfig); } sanitizeConfig(config2, newConfig); Object.assign(config2, newConfig); for (const key in defaults) { if (config2[key] == null) { config2[key] = defaults[key]; } } let { mass, frequency, damping } = config2; if (!is.und(frequency)) { if (frequency < 0.01) frequency = 0.01; if (damping < 0) damping = 0; config2.tension = Math.pow(2 * Math.PI / frequency, 2) * mass; config2.friction = 4 * Math.PI * damping * mass / frequency; } return config2; } function sanitizeConfig(config2, props) { if (!is.und(props.decay)) { config2.duration = void 0; } else { const isTensionConfig = !is.und(props.tension) || !is.und(props.friction); if (isTensionConfig || !is.und(props.frequency) || !is.und(props.damping) || !is.und(props.mass)) { config2.duration = void 0; config2.decay = void 0; } if (isTensionConfig) { config2.frequency = void 0; } } } var emptyArray = []; var Animation = class { constructor() { this.changed = false; this.values = emptyArray; this.toValues = null; this.fromValues = emptyArray; this.to = void 0; this.from = void 0; this.config = new AnimationConfig(); this.immediate = false; } }; function scheduleProps(callId, { key, props, defaultProps, state, actions }) { return new Promise((resolve, reject) => { var _props$cancel; let delay; let timeout; let cancel = matchProp((_props$cancel = props.cancel) != null ? _props$cancel : defaultProps == null ? void 0 : defaultProps.cancel, key); if (cancel) { onStart(); } else { if (!is.und(props.pause)) { state.paused = matchProp(props.pause, key); } let pause = defaultProps == null ? void 0 : defaultProps.pause; if (pause !== true) { pause = state.paused || matchProp(pause, key); } delay = callProp(props.delay || 0, key); if (pause) { state.resumeQueue.add(onResume); actions.pause(); } else { actions.resume(); onResume(); } } function onPause() { state.resumeQueue.add(onResume); state.timeouts.delete(timeout); timeout.cancel(); delay = timeout.time - raf.now(); } function onResume() { if (delay > 0 && !globals.skipAnimation) { state.delayed = true; timeout = raf.setTimeout(onStart, delay); state.pauseQueue.add(onPause); state.timeouts.add(timeout); } else { onStart(); } } function onStart() { if (state.delayed) { state.delayed = false; } state.pauseQueue.delete(onPause); state.timeouts.delete(timeout); if (callId <= (state.cancelId || 0)) { cancel = true; } try { actions.start(_extends3({}, props, { callId, cancel }), resolve); } catch (err) { reject(err); } } }); } var getCombinedResult = (target, results) => results.length == 1 ? results[0] : results.some((result) => result.cancelled) ? getCancelledResult(target.get()) : results.every((result) => result.noop) ? getNoopResult(target.get()) : getFinishedResult(target.get(), results.every((result) => result.finished)); var getNoopResult = (value) => ({ value, noop: true, finished: true, cancelled: false }); var getFinishedResult = (value, finished, cancelled = false) => ({ value, finished, cancelled }); var getCancelledResult = (value) => ({ value, cancelled: true, finished: false }); function runAsync(to2, props, state, target) { const { callId, parentId, onRest } = props; const { asyncTo: prevTo, promise: prevPromise } = state; if (!parentId && to2 === prevTo && !props.reset) { return prevPromise; } return state.promise = (async () => { state.asyncId = callId; state.asyncTo = to2; const defaultProps = getDefaultProps(props, (value, key) => key === "onRest" ? void 0 : value); let preventBail; let bail; const bailPromise = new Promise((resolve, reject) => (preventBail = resolve, bail = reject)); const bailIfEnded = (bailSignal) => { const bailResult = callId <= (state.cancelId || 0) && getCancelledResult(target) || callId !== state.asyncId && getFinishedResult(target, false); if (bailResult) { bailSignal.result = bailResult; bail(bailSignal); throw bailSignal; } }; const animate = (arg1, arg2) => { const bailSignal = new BailSignal(); const skipAnimationSignal = new SkipAniamtionSignal(); return (async () => { if (globals.skipAnimation) { stopAsync(state); skipAnimationSignal.result = getFinishedResult(target, false); bail(skipAnimationSignal); throw skipAnimationSignal; } bailIfEnded(bailSignal); const props2 = is.obj(arg1) ? _extends3({}, arg1) : _extends3({}, arg2, { to: arg1 }); props2.parentId = callId; eachProp(defaultProps, (value, key) => { if (is.und(props2[key])) { props2[key] = value; } }); const result2 = await target.start(props2); bailIfEnded(bailSignal); if (state.paused) { await new Promise((resume) => { state.resumeQueue.add(resume); }); } return result2; })(); }; let result; if (globals.skipAnimation) { stopAsync(state); return getFinishedResult(target, false); } try { let animating; if (is.arr(to2)) { animating = (async (queue) => { for (const props2 of queue) { await animate(props2); } })(to2); } else { animating = Promise.resolve(to2(animate, target.stop.bind(target))); } await Promise.all([animating.then(preventBail), bailPromise]); result = getFinishedResult(target.get(), true, false); } catch (err) { if (err instanceof BailSignal) { result = err.result; } else if (err instanceof SkipAniamtionSignal) { result = err.result; } else { throw err; } } finally { if (callId == state.asyncId) { state.asyncId = parentId; state.asyncTo = parentId ? prevTo : void 0; state.promise = parentId ? prevPromise : void 0; } } if (is.fun(onRest)) { raf.batchedUpdates(() => { onRest(result, target, target.item); }); } return result; })(); } function stopAsync(state, cancelId) { flush(state.timeouts, (t3) => t3.cancel()); state.pauseQueue.clear(); state.resumeQueue.clear(); state.asyncId = state.asyncTo = state.promise = void 0; if (cancelId) state.cancelId = cancelId; } var BailSignal = class extends Error { constructor() { super("An async animation has been interrupted. You see this error because you forgot to use `await` or `.catch(...)` on its returned promise."); this.result = void 0; } }; var SkipAniamtionSignal = class extends Error { constructor() { super("SkipAnimationSignal"); this.result = void 0; } }; var isFrameValue = (value) => value instanceof FrameValue; var nextId$1 = 1; var FrameValue = class extends FluidValue { constructor(...args) { super(...args); this.id = nextId$1++; this.key = void 0; this._priority = 0; } get priority() { return this._priority; } set priority(priority2) { if (this._priority != priority2) { this._priority = priority2; this._onPriorityChange(priority2); } } get() { const node = getAnimated(this); return node && node.getValue(); } to(...args) { return globals.to(this, args); } interpolate(...args) { deprecateInterpolate(); return globals.to(this, args); } toJSON() { return this.get(); } observerAdded(count) { if (count == 1) this._attach(); } observerRemoved(count) { if (count == 0) this._detach(); } _attach() { } _detach() { } _onChange(value, idle = false) { callFluidObservers(this, { type: "change", parent: this, value, idle }); } _onPriorityChange(priority2) { if (!this.idle) { frameLoop.sort(this); } callFluidObservers(this, { type: "priority", parent: this, priority: priority2 }); } }; var $P = /* @__PURE__ */ Symbol.for("SpringPhase"); var HAS_ANIMATED = 1; var IS_ANIMATING = 2; var IS_PAUSED = 4; var hasAnimated = (target) => (target[$P] & HAS_ANIMATED) > 0; var isAnimating = (target) => (target[$P] & IS_ANIMATING) > 0; var isPaused = (target) => (target[$P] & IS_PAUSED) > 0; var setActiveBit = (target, active) => active ? target[$P] |= IS_ANIMATING | HAS_ANIMATED : target[$P] &= ~IS_ANIMATING; var setPausedBit = (target, paused) => paused ? target[$P] |= IS_PAUSED : target[$P] &= ~IS_PAUSED; var SpringValue = class extends FrameValue { constructor(arg1, arg2) { super(); this.key = void 0; this.animation = new Animation(); this.queue = void 0; this.defaultProps = {}; this._state = { paused: false, delayed: false, pauseQueue: /* @__PURE__ */ new Set(), resumeQueue: /* @__PURE__ */ new Set(), timeouts: /* @__PURE__ */ new Set() }; this._pendingCalls = /* @__PURE__ */ new Set(); this._lastCallId = 0; this._lastToId = 0; this._memoizedDuration = 0; if (!is.und(arg1) || !is.und(arg2)) { const props = is.obj(arg1) ? _extends3({}, arg1) : _extends3({}, arg2, { from: arg1 }); if (is.und(props.default)) { props.default = true; } this.start(props); } } get idle() { return !(isAnimating(this) || this._state.asyncTo) || isPaused(this); } get goal() { return getFluidValue(this.animation.to); } get velocity() { const node = getAnimated(this); return node instanceof AnimatedValue ? node.lastVelocity || 0 : node.getPayload().map((node2) => node2.lastVelocity || 0); } get hasAnimated() { return hasAnimated(this); } get isAnimating() { return isAnimating(this); } get isPaused() { return isPaused(this); } get isDelayed() { return this._state.delayed; } advance(dt) { let idle = true; let changed = false; const anim = this.animation; let { config: config2, toValues } = anim; const payload = getPayload(anim.to); if (!payload && hasFluidValue(anim.to)) { toValues = toArray(getFluidValue(anim.to)); } anim.values.forEach((node2, i2) => { if (node2.done) return; const to2 = node2.constructor == AnimatedString ? 1 : payload ? payload[i2].lastPosition : toValues[i2]; let finished = anim.immediate; let position = to2; if (!finished) { position = node2.lastPosition; if (config2.tension <= 0) { node2.done = true; return; } let elapsed = node2.elapsedTime += dt; const from = anim.fromValues[i2]; const v0 = node2.v0 != null ? node2.v0 : node2.v0 = is.arr(config2.velocity) ? config2.velocity[i2] : config2.velocity; let velocity; const precision = config2.precision || (from == to2 ? 5e-3 : Math.min(1, Math.abs(to2 - from) * 1e-3)); if (!is.und(config2.duration)) { let p3 = 1; if (config2.duration > 0) { if (this._memoizedDuration !== config2.duration) { this._memoizedDuration = config2.duration; if (node2.durationProgress > 0) { node2.elapsedTime = config2.duration * node2.durationProgress; elapsed = node2.elapsedTime += dt; } } p3 = (config2.progress || 0) + elapsed / this._memoizedDuration; p3 = p3 > 1 ? 1 : p3 < 0 ? 0 : p3; node2.durationProgress = p3; } position = from + config2.easing(p3) * (to2 - from); velocity = (position - node2.lastPosition) / dt; finished = p3 == 1; } else if (config2.decay) { const decay = config2.decay === true ? 0.998 : config2.decay; const e2 = Math.exp(-(1 - decay) * elapsed); position = from + v0 / (1 - decay) * (1 - e2); finished = Math.abs(node2.lastPosition - position) <= precision; velocity = v0 * e2; } else { velocity = node2.lastVelocity == null ? v0 : node2.lastVelocity; const restVelocity = config2.restVelocity || precision / 10; const bounceFactor = config2.clamp ? 0 : config2.bounce; const canBounce = !is.und(bounceFactor); const isGrowing = from == to2 ? node2.v0 > 0 : from < to2; let isMoving; let isBouncing = false; const step = 1; const numSteps = Math.ceil(dt / step); for (let n2 = 0; n2 < numSteps; ++n2) { isMoving = Math.abs(velocity) > restVelocity; if (!isMoving) { finished = Math.abs(to2 - position) <= precision; if (finished) { break; } } if (canBounce) { isBouncing = position == to2 || position > to2 == isGrowing; if (isBouncing) { velocity = -velocity * bounceFactor; position = to2; } } const springForce = -config2.tension * 1e-6 * (position - to2); const dampingForce = -config2.friction * 1e-3 * velocity; const acceleration = (springForce + dampingForce) / config2.mass; velocity = velocity + acceleration * step; position = position + velocity * step; } } node2.lastVelocity = velocity; if (Number.isNaN(position)) { console.warn(`Got NaN while animating:`, this); finished = true; } } if (payload && !payload[i2].done) { finished = false; } if (finished) { node2.done = true; } else { idle = false; } if (node2.setValue(position, config2.round)) { changed = true; } }); const node = getAnimated(this); const currVal = node.getValue(); if (idle) { const finalVal = getFluidValue(anim.to); if ((currVal !== finalVal || changed) && !config2.decay) { node.setValue(finalVal); this._onChange(finalVal); } else if (changed && config2.decay) { this._onChange(currVal); } this._stop(); } else if (changed) { this._onChange(currVal); } } set(value) { raf.batchedUpdates(() => { this._stop(); this._focus(value); this._set(value); }); return this; } pause() { this._update({ pause: true }); } resume() { this._update({ pause: false }); } finish() { if (isAnimating(this)) { const { to: to2, config: config2 } = this.animation; raf.batchedUpdates(() => { this._onStart(); if (!config2.decay) { this._set(to2, false); } this._stop(); }); } return this; } update(props) { const queue = this.queue || (this.queue = []); queue.push(props); return this; } start(to2, arg2) { let queue; if (!is.und(to2)) { queue = [is.obj(to2) ? to2 : _extends3({}, arg2, { to: to2 })]; } else { queue = this.queue || []; this.queue = []; } return Promise.all(queue.map((props) => { const up = this._update(props); return up; })).then((results) => getCombinedResult(this, results)); } stop(cancel) { const { to: to2 } = this.animation; this._focus(this.get()); stopAsync(this._state, cancel && this._lastCallId); raf.batchedUpdates(() => this._stop(to2, cancel)); return this; } reset() { this._update({ reset: true }); } eventObserved(event) { if (event.type == "change") { this._start(); } else if (event.type == "priority") { this.priority = event.priority + 1; } } _prepareNode(props) { const key = this.key || ""; let { to: to2, from } = props; to2 = is.obj(to2) ? to2[key] : to2; if (to2 == null || isAsyncTo(to2)) { to2 = void 0; } from = is.obj(from) ? from[key] : from; if (from == null) { from = void 0; } const range = { to: to2, from }; if (!hasAnimated(this)) { if (props.reverse) [to2, from] = [from, to2]; from = getFluidValue(from); if (!is.und(from)) { this._set(from); } else if (!getAnimated(this)) { this._set(to2); } } return range; } _update(_ref, isLoop) { let props = _extends3({}, _ref); const { key, defaultProps } = this; if (props.default) Object.assign(defaultProps, getDefaultProps(props, (value, prop) => /^on/.test(prop) ? resolveProp(value, key) : value)); mergeActiveFn(this, props, "onProps"); sendEvent(this, "onProps", props, this); const range = this._prepareNode(props); if (Object.isFrozen(this)) { throw Error("Cannot animate a `SpringValue` object that is frozen. Did you forget to pass your component to `animated(...)` before animating its props?"); } const state = this._state; return scheduleProps(++this._lastCallId, { key, props, defaultProps, state, actions: { pause: () => { if (!isPaused(this)) { setPausedBit(this, true); flushCalls(state.pauseQueue); sendEvent(this, "onPause", getFinishedResult(this, checkFinished(this, this.animation.to)), this); } }, resume: () => { if (isPaused(this)) { setPausedBit(this, false); if (isAnimating(this)) { this._resume(); } flushCalls(state.resumeQueue); sendEvent(this, "onResume", getFinishedResult(this, checkFinished(this, this.animation.to)), this); } }, start: this._merge.bind(this, range) } }).then((result) => { if (props.loop && result.finished && !(isLoop && result.noop)) { const nextProps = createLoopUpdate(props); if (nextProps) { return this._update(nextProps, true); } } return result; }); } _merge(range, props, resolve) { if (props.cancel) { this.stop(true); return resolve(getCancelledResult(this)); } const hasToProp = !is.und(range.to); const hasFromProp = !is.und(range.from); if (hasToProp || hasFromProp) { if (props.callId > this._lastToId) { this._lastToId = props.callId; } else { return resolve(getCancelledResult(this)); } } const { key, defaultProps, animation: anim } = this; const { to: prevTo, from: prevFrom } = anim; let { to: to2 = prevTo, from = prevFrom } = range; if (hasFromProp && !hasToProp && (!props.default || is.und(to2))) { to2 = from; } if (props.reverse) [to2, from] = [from, to2]; const hasFromChanged = !isEqual(from, prevFrom); if (hasFromChanged) { anim.from = from; } from = getFluidValue(from); const hasToChanged = !isEqual(to2, prevTo); if (hasToChanged) { this._focus(to2); } const hasAsyncTo = isAsyncTo(props.to); const { config: config2 } = anim; const { decay, velocity } = config2; if (hasToProp || hasFromProp) { config2.velocity = 0; } if (props.config && !hasAsyncTo) { mergeConfig(config2, callProp(props.config, key), props.config !== defaultProps.config ? callProp(defaultProps.config, key) : void 0); } let node = getAnimated(this); if (!node || is.und(to2)) { return resolve(getFinishedResult(this, true)); } const reset = is.und(props.reset) ? hasFromProp && !props.default : !is.und(from) && matchProp(props.reset, key); const value = reset ? from : this.get(); const goal = computeGoal(to2); const isAnimatable = is.num(goal) || is.arr(goal) || isAnimatedString(goal); const immediate = !hasAsyncTo && (!isAnimatable || matchProp(defaultProps.immediate || props.immediate, key)); if (hasToChanged) { const nodeType = getAnimatedType(to2); if (nodeType !== node.constructor) { if (immediate) { node = this._set(goal); } else throw Error(`Cannot animate between ${node.constructor.name} and ${nodeType.name}, as the "to" prop suggests`); } } const goalType = node.constructor; let started = hasFluidValue(to2); let finished = false; if (!started) { const hasValueChanged = reset || !hasAnimated(this) && hasFromChanged; if (hasToChanged || hasValueChanged) { finished = isEqual(computeGoal(value), goal); started = !finished; } if (!isEqual(anim.immediate, immediate) && !immediate || !isEqual(config2.decay, decay) || !isEqual(config2.velocity, velocity)) { started = true; } } if (finished && isAnimating(this)) { if (anim.changed && !reset) { started = true; } else if (!started) { this._stop(prevTo); } } if (!hasAsyncTo) { if (started || hasFluidValue(prevTo)) { anim.values = node.getPayload(); anim.toValues = hasFluidValue(to2) ? null : goalType == AnimatedString ? [1] : toArray(goal); } if (anim.immediate != immediate) { anim.immediate = immediate; if (!immediate && !reset) { this._set(prevTo); } } if (started) { const { onRest } = anim; each(ACTIVE_EVENTS, (type) => mergeActiveFn(this, props, type)); const result = getFinishedResult(this, checkFinished(this, prevTo)); flushCalls(this._pendingCalls, result); this._pendingCalls.add(resolve); if (anim.changed) raf.batchedUpdates(() => { anim.changed = !reset; onRest == null ? void 0 : onRest(result, this); if (reset) { callProp(defaultProps.onRest, result); } else { anim.onStart == null ? void 0 : anim.onStart(result, this); } }); } } if (reset) { this._set(value); } if (hasAsyncTo) { resolve(runAsync(props.to, props, this._state, this)); } else if (started) { this._start(); } else if (isAnimating(this) && !hasToChanged) { this._pendingCalls.add(resolve); } else { resolve(getNoopResult(value)); } } _focus(value) { const anim = this.animation; if (value !== anim.to) { if (getFluidObservers(this)) { this._detach(); } anim.to = value; if (getFluidObservers(this)) { this._attach(); } } } _attach() { let priority2 = 0; const { to: to2 } = this.animation; if (hasFluidValue(to2)) { addFluidObserver(to2, this); if (isFrameValue(to2)) { priority2 = to2.priority + 1; } } this.priority = priority2; } _detach() { const { to: to2 } = this.animation; if (hasFluidValue(to2)) { removeFluidObserver(to2, this); } } _set(arg, idle = true) { const value = getFluidValue(arg); if (!is.und(value)) { const oldNode = getAnimated(this); if (!oldNode || !isEqual(value, oldNode.getValue())) { const nodeType = getAnimatedType(value); if (!oldNode || oldNode.constructor != nodeType) { setAnimated(this, nodeType.create(value)); } else { oldNode.setValue(value); } if (oldNode) { raf.batchedUpdates(() => { this._onChange(value, idle); }); } } } return getAnimated(this); } _onStart() { const anim = this.animation; if (!anim.changed) { anim.changed = true; sendEvent(this, "onStart", getFinishedResult(this, checkFinished(this, anim.to)), this); } } _onChange(value, idle) { if (!idle) { this._onStart(); callProp(this.animation.onChange, value, this); } callProp(this.defaultProps.onChange, value, this); super._onChange(value, idle); } _start() { const anim = this.animation; getAnimated(this).reset(getFluidValue(anim.to)); if (!anim.immediate) { anim.fromValues = anim.values.map((node) => node.lastPosition); } if (!isAnimating(this)) { setActiveBit(this, true); if (!isPaused(this)) { this._resume(); } } } _resume() { if (globals.skipAnimation) { this.finish(); } else { frameLoop.start(this); } } _stop(goal, cancel) { if (isAnimating(this)) { setActiveBit(this, false); const anim = this.animation; each(anim.values, (node) => { node.done = true; }); if (anim.toValues) { anim.onChange = anim.onPause = anim.onResume = void 0; } callFluidObservers(this, { type: "idle", parent: this }); const result = cancel ? getCancelledResult(this.get()) : getFinishedResult(this.get(), checkFinished(this, goal != null ? goal : anim.to)); flushCalls(this._pendingCalls, result); if (anim.changed) { anim.changed = false; sendEvent(this, "onRest", result, this); } } } }; function checkFinished(target, to2) { const goal = computeGoal(to2); const value = computeGoal(target.get()); return isEqual(value, goal); } function createLoopUpdate(props, loop2 = props.loop, to2 = props.to) { let loopRet = callProp(loop2); if (loopRet) { const overrides = loopRet !== true && inferTo(loopRet); const reverse = (overrides || props).reverse; const reset = !overrides || overrides.reset; return createUpdate(_extends3({}, props, { loop: loop2, default: false, pause: void 0, to: !reverse || isAsyncTo(to2) ? to2 : void 0, from: reset ? props.from : void 0, reset }, overrides)); } } function createUpdate(props) { const { to: to2, from } = props = inferTo(props); const keys = /* @__PURE__ */ new Set(); if (is.obj(to2)) findDefined(to2, keys); if (is.obj(from)) findDefined(from, keys); props.keys = keys.size ? Array.from(keys) : null; return props; } function findDefined(values, keys) { eachProp(values, (value, key) => value != null && keys.add(key)); } var ACTIVE_EVENTS = ["onStart", "onRest", "onChange", "onPause", "onResume"]; function mergeActiveFn(target, props, type) { target.animation[type] = props[type] !== getDefaultProp(props, type) ? resolveProp(props[type], target.key) : void 0; } function sendEvent(target, type, ...args) { var _target$animation$typ, _target$animation, _target$defaultProps$, _target$defaultProps; (_target$animation$typ = (_target$animation = target.animation)[type]) == null ? void 0 : _target$animation$typ.call(_target$animation, ...args); (_target$defaultProps$ = (_target$defaultProps = target.defaultProps)[type]) == null ? void 0 : _target$defaultProps$.call(_target$defaultProps, ...args); } var BATCHED_EVENTS = ["onStart", "onChange", "onRest"]; var nextId = 1; var Controller = class { constructor(props, flush2) { this.id = nextId++; this.springs = {}; this.queue = []; this.ref = void 0; this._flush = void 0; this._initialProps = void 0; this._lastAsyncId = 0; this._active = /* @__PURE__ */ new Set(); this._changed = /* @__PURE__ */ new Set(); this._started = false; this._item = void 0; this._state = { paused: false, pauseQueue: /* @__PURE__ */ new Set(), resumeQueue: /* @__PURE__ */ new Set(), timeouts: /* @__PURE__ */ new Set() }; this._events = { onStart: /* @__PURE__ */ new Map(), onChange: /* @__PURE__ */ new Map(), onRest: /* @__PURE__ */ new Map() }; this._onFrame = this._onFrame.bind(this); if (flush2) { this._flush = flush2; } if (props) { this.start(_extends3({ default: true }, props)); } } get idle() { return !this._state.asyncTo && Object.values(this.springs).every((spring) => { return spring.idle && !spring.isDelayed && !spring.isPaused; }); } get item() { return this._item; } set item(item) { this._item = item; } get() { const values = {}; this.each((spring, key) => values[key] = spring.get()); return values; } set(values) { for (const key in values) { const value = values[key]; if (!is.und(value)) { this.springs[key].set(value); } } } update(props) { if (props) { this.queue.push(createUpdate(props)); } return this; } start(props) { let { queue } = this; if (props) { queue = toArray(props).map(createUpdate); } else { this.queue = []; } if (this._flush) { return this._flush(this, queue); } prepareKeys(this, queue); return flushUpdateQueue(this, queue); } stop(arg, keys) { if (arg !== !!arg) { keys = arg; } if (keys) { const springs = this.springs; each(toArray(keys), (key) => springs[key].stop(!!arg)); } else { stopAsync(this._state, this._lastAsyncId); this.each((spring) => spring.stop(!!arg)); } return this; } pause(keys) { if (is.und(keys)) { this.start({ pause: true }); } else { const springs = this.springs; each(toArray(keys), (key) => springs[key].pause()); } return this; } resume(keys) { if (is.und(keys)) { this.start({ pause: false }); } else { const springs = this.springs; each(toArray(keys), (key) => springs[key].resume()); } return this; } each(iterator) { eachProp(this.springs, iterator); } _onFrame() { const { onStart, onChange, onRest } = this._events; const active = this._active.size > 0; const changed = this._changed.size > 0; if (active && !this._started || changed && !this._started) { this._started = true; flush(onStart, ([onStart2, result]) => { result.value = this.get(); onStart2(result, this, this._item); }); } const idle = !active && this._started; const values = changed || idle && onRest.size ? this.get() : null; if (changed && onChange.size) { flush(onChange, ([onChange2, result]) => { result.value = values; onChange2(result, this, this._item); }); } if (idle) { this._started = false; flush(onRest, ([onRest2, result]) => { result.value = values; onRest2(result, this, this._item); }); } } eventObserved(event) { if (event.type == "change") { this._changed.add(event.parent); if (!event.idle) { this._active.add(event.parent); } } else if (event.type == "idle") { this._active.delete(event.parent); } else return; raf.onFrame(this._onFrame); } }; function flushUpdateQueue(ctrl, queue) { return Promise.all(queue.map((props) => flushUpdate(ctrl, props))).then((results) => getCombinedResult(ctrl, results)); } async function flushUpdate(ctrl, props, isLoop) { const { keys, to: to2, from, loop: loop2, onRest, onResolve } = props; const defaults2 = is.obj(props.default) && props.default; if (loop2) { props.loop = false; } if (to2 === false) props.to = null; if (from === false) props.from = null; const asyncTo = is.arr(to2) || is.fun(to2) ? to2 : void 0; if (asyncTo) { props.to = void 0; props.onRest = void 0; if (defaults2) { defaults2.onRest = void 0; } } else { each(BATCHED_EVENTS, (key) => { const handler = props[key]; if (is.fun(handler)) { const queue = ctrl["_events"][key]; props[key] = ({ finished, cancelled }) => { const result2 = queue.get(handler); if (result2) { if (!finished) result2.finished = false; if (cancelled) result2.cancelled = true; } else { queue.set(handler, { value: null, finished: finished || false, cancelled: cancelled || false }); } }; if (defaults2) { defaults2[key] = props[key]; } } }); } const state = ctrl["_state"]; if (props.pause === !state.paused) { state.paused = props.pause; flushCalls(props.pause ? state.pauseQueue : state.resumeQueue); } else if (state.paused) { props.pause = true; } const promises = (keys || Object.keys(ctrl.springs)).map((key) => ctrl.springs[key].start(props)); const cancel = props.cancel === true || getDefaultProp(props, "cancel") === true; if (asyncTo || cancel && state.asyncId) { promises.push(scheduleProps(++ctrl["_lastAsyncId"], { props, state, actions: { pause: noop, resume: noop, start(props2, resolve) { if (cancel) { stopAsync(state, ctrl["_lastAsyncId"]); resolve(getCancelledResult(ctrl)); } else { props2.onRest = onRest; resolve(runAsync(asyncTo, props2, state, ctrl)); } } } })); } if (state.paused) { await new Promise((resume) => { state.resumeQueue.add(resume); }); } const result = getCombinedResult(ctrl, await Promise.all(promises)); if (loop2 && result.finished && !(isLoop && result.noop)) { const nextProps = createLoopUpdate(props, loop2, to2); if (nextProps) { prepareKeys(ctrl, [nextProps]); return flushUpdate(ctrl, nextProps, true); } } if (onResolve) { raf.batchedUpdates(() => onResolve(result, ctrl, ctrl.item)); } return result; } function createSpring(key, observer) { const spring = new SpringValue(); spring.key = key; if (observer) { addFluidObserver(spring, observer); } return spring; } function prepareSprings(springs, props, create) { if (props.keys) { each(props.keys, (key) => { const spring = springs[key] || (springs[key] = create(key)); spring["_prepareNode"](props); }); } } function prepareKeys(ctrl, queue) { each(queue, (props) => { prepareSprings(ctrl.springs, props, (key) => { return createSpring(key, ctrl); }); }); } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i2; for (i2 = 0; i2 < sourceKeys.length; i2++) { key = sourceKeys[i2]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } var _excluded$3 = ["children"]; var SpringContext = (_ref) => { let { children } = _ref, props = _objectWithoutPropertiesLoose(_ref, _excluded$3); const inherited = (0, import_react6.useContext)(ctx); const pause = props.pause || !!inherited.pause, immediate = props.immediate || !!inherited.immediate; props = useMemoOne(() => ({ pause, immediate }), [pause, immediate]); const { Provider } = ctx; return React6.createElement(Provider, { value: props }, children); }; var ctx = makeContext(SpringContext, {}); SpringContext.Provider = ctx.Provider; SpringContext.Consumer = ctx.Consumer; function makeContext(target, init2) { Object.assign(target, React6.createContext(init2)); target.Provider._context = target; target.Consumer._context = target; return target; } var TransitionPhase; (function(TransitionPhase2) { TransitionPhase2["MOUNT"] = "mount"; TransitionPhase2["ENTER"] = "enter"; TransitionPhase2["UPDATE"] = "update"; TransitionPhase2["LEAVE"] = "leave"; })(TransitionPhase || (TransitionPhase = {})); var Interpolation = class extends FrameValue { constructor(source, args) { super(); this.key = void 0; this.idle = true; this.calc = void 0; this._active = /* @__PURE__ */ new Set(); this.source = source; this.calc = createInterpolator(...args); const value = this._get(); const nodeType = getAnimatedType(value); setAnimated(this, nodeType.create(value)); } advance(_dt) { const value = this._get(); const oldValue = this.get(); if (!isEqual(value, oldValue)) { getAnimated(this).setValue(value); this._onChange(value, this.idle); } if (!this.idle && checkIdle(this._active)) { becomeIdle(this); } } _get() { const inputs = is.arr(this.source) ? this.source.map(getFluidValue) : toArray(getFluidValue(this.source)); return this.calc(...inputs); } _start() { if (this.idle && !checkIdle(this._active)) { this.idle = false; each(getPayload(this), (node) => { node.done = false; }); if (globals.skipAnimation) { raf.batchedUpdates(() => this.advance()); becomeIdle(this); } else { frameLoop.start(this); } } } _attach() { let priority2 = 1; each(toArray(this.source), (source) => { if (hasFluidValue(source)) { addFluidObserver(source, this); } if (isFrameValue(source)) { if (!source.idle) { this._active.add(source); } priority2 = Math.max(priority2, source.priority + 1); } }); this.priority = priority2; this._start(); } _detach() { each(toArray(this.source), (source) => { if (hasFluidValue(source)) { removeFluidObserver(source, this); } }); this._active.clear(); becomeIdle(this); } eventObserved(event) { if (event.type == "change") { if (event.idle) { this.advance(); } else { this._active.add(event.parent); this._start(); } } else if (event.type == "idle") { this._active.delete(event.parent); } else if (event.type == "priority") { this.priority = toArray(this.source).reduce((highest, parent) => Math.max(highest, (isFrameValue(parent) ? parent.priority : 0) + 1), 0); } } }; function isIdle(source) { return source.idle !== false; } function checkIdle(active) { return !active.size || Array.from(active).every(isIdle); } function becomeIdle(self2) { if (!self2.idle) { self2.idle = true; each(getPayload(self2), (node) => { node.done = true; }); callFluidObservers(self2, { type: "idle", parent: self2 }); } } globals.assign({ createStringInterpolator, to: (source, args) => new Interpolation(source, args) }); var update3 = frameLoop.advance; // node_modules/@react-spring/web/dist/react-spring-web.esm.js var import_react_dom = __toESM(require_react_dom()); function _objectWithoutPropertiesLoose2(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i2; for (i2 = 0; i2 < sourceKeys.length; i2++) { key = sourceKeys[i2]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } var _excluded$2 = ["style", "children", "scrollTop", "scrollLeft"]; var isCustomPropRE = /^--/; function dangerousStyleValue(name2, value) { if (value == null || typeof value === "boolean" || value === "") return ""; if (typeof value === "number" && value !== 0 && !isCustomPropRE.test(name2) && !(isUnitlessNumber.hasOwnProperty(name2) && isUnitlessNumber[name2])) return value + "px"; return ("" + value).trim(); } var attributeCache = {}; function applyAnimatedValues(instance, props) { if (!instance.nodeType || !instance.setAttribute) { return false; } const isFilterElement = instance.nodeName === "filter" || instance.parentNode && instance.parentNode.nodeName === "filter"; const _ref = props, { style, children, scrollTop, scrollLeft } = _ref, attributes = _objectWithoutPropertiesLoose2(_ref, _excluded$2); const values = Object.values(attributes); const names = Object.keys(attributes).map((name2) => isFilterElement || instance.hasAttribute(name2) ? name2 : attributeCache[name2] || (attributeCache[name2] = name2.replace(/([A-Z])/g, (n2) => "-" + n2.toLowerCase()))); if (children !== void 0) { instance.textContent = children; } for (let name2 in style) { if (style.hasOwnProperty(name2)) { const value = dangerousStyleValue(name2, style[name2]); if (isCustomPropRE.test(name2)) { instance.style.setProperty(name2, value); } else { instance.style[name2] = value; } } } names.forEach((name2, i2) => { instance.setAttribute(name2, values[i2]); }); if (scrollTop !== void 0) { instance.scrollTop = scrollTop; } if (scrollLeft !== void 0) { instance.scrollLeft = scrollLeft; } } var isUnitlessNumber = { animationIterationCount: true, borderImageOutset: true, borderImageSlice: true, borderImageWidth: true, boxFlex: true, boxFlexGroup: true, boxOrdinalGroup: true, columnCount: true, columns: true, flex: true, flexGrow: true, flexPositive: true, flexShrink: true, flexNegative: true, flexOrder: true, gridRow: true, gridRowEnd: true, gridRowSpan: true, gridRowStart: true, gridColumn: true, gridColumnEnd: true, gridColumnSpan: true, gridColumnStart: true, fontWeight: true, lineClamp: true, lineHeight: true, opacity: true, order: true, orphans: true, tabSize: true, widows: true, zIndex: true, zoom: true, fillOpacity: true, floodOpacity: true, stopOpacity: true, strokeDasharray: true, strokeDashoffset: true, strokeMiterlimit: true, strokeOpacity: true, strokeWidth: true }; var prefixKey = (prefix2, key) => prefix2 + key.charAt(0).toUpperCase() + key.substring(1); var prefixes = ["Webkit", "Ms", "Moz", "O"]; isUnitlessNumber = Object.keys(isUnitlessNumber).reduce((acc, prop) => { prefixes.forEach((prefix2) => acc[prefixKey(prefix2, prop)] = acc[prop]); return acc; }, isUnitlessNumber); var _excluded$1 = ["x", "y", "z"]; var domTransforms = /^(matrix|translate|scale|rotate|skew)/; var pxTransforms = /^(translate)/; var degTransforms = /^(rotate|skew)/; var addUnit = (value, unit) => is.num(value) && value !== 0 ? value + unit : value; var isValueIdentity = (value, id) => is.arr(value) ? value.every((v2) => isValueIdentity(v2, id)) : is.num(value) ? value === id : parseFloat(value) === id; var AnimatedStyle = class extends AnimatedObject { constructor(_ref) { let { x: x2, y: y2, z } = _ref, style = _objectWithoutPropertiesLoose2(_ref, _excluded$1); const inputs = []; const transforms = []; if (x2 || y2 || z) { inputs.push([x2 || 0, y2 || 0, z || 0]); transforms.push((xyz) => [`translate3d(${xyz.map((v2) => addUnit(v2, "px")).join(",")})`, isValueIdentity(xyz, 0)]); } eachProp(style, (value, key) => { if (key === "transform") { inputs.push([value || ""]); transforms.push((transform) => [transform, transform === ""]); } else if (domTransforms.test(key)) { delete style[key]; if (is.und(value)) return; const unit = pxTransforms.test(key) ? "px" : degTransforms.test(key) ? "deg" : ""; inputs.push(toArray(value)); transforms.push(key === "rotate3d" ? ([x3, y3, z2, deg]) => [`rotate3d(${x3},${y3},${z2},${addUnit(deg, unit)})`, isValueIdentity(deg, 0)] : (input) => [`${key}(${input.map((v2) => addUnit(v2, unit)).join(",")})`, isValueIdentity(input, key.startsWith("scale") ? 1 : 0)]); } }); if (inputs.length) { style.transform = new FluidTransform(inputs, transforms); } super(style); } }; var FluidTransform = class extends FluidValue { constructor(inputs, transforms) { super(); this._value = null; this.inputs = inputs; this.transforms = transforms; } get() { return this._value || (this._value = this._get()); } _get() { let transform = ""; let identity2 = true; each(this.inputs, (input, i2) => { const arg1 = getFluidValue(input[0]); const [t3, id] = this.transforms[i2](is.arr(arg1) ? arg1 : input.map(getFluidValue)); transform += " " + t3; identity2 = identity2 && id; }); return identity2 ? "none" : transform; } observerAdded(count) { if (count == 1) each(this.inputs, (input) => each(input, (value) => hasFluidValue(value) && addFluidObserver(value, this))); } observerRemoved(count) { if (count == 0) each(this.inputs, (input) => each(input, (value) => hasFluidValue(value) && removeFluidObserver(value, this))); } eventObserved(event) { if (event.type == "change") { this._value = null; } callFluidObservers(this, event); } }; var primitives = ["a", "abbr", "address", "area", "article", "aside", "audio", "b", "base", "bdi", "bdo", "big", "blockquote", "body", "br", "button", "canvas", "caption", "cite", "code", "col", "colgroup", "data", "datalist", "dd", "del", "details", "dfn", "dialog", "div", "dl", "dt", "em", "embed", "fieldset", "figcaption", "figure", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "i", "iframe", "img", "input", "ins", "kbd", "keygen", "label", "legend", "li", "link", "main", "map", "mark", "menu", "menuitem", "meta", "meter", "nav", "noscript", "object", "ol", "optgroup", "option", "output", "p", "param", "picture", "pre", "progress", "q", "rp", "rt", "ruby", "s", "samp", "script", "section", "select", "small", "source", "span", "strong", "style", "sub", "summary", "sup", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "time", "title", "tr", "track", "u", "ul", "var", "video", "wbr", "circle", "clipPath", "defs", "ellipse", "foreignObject", "g", "image", "line", "linearGradient", "mask", "path", "pattern", "polygon", "polyline", "radialGradient", "rect", "stop", "svg", "text", "tspan"]; var _excluded = ["scrollTop", "scrollLeft"]; globals.assign({ batchedUpdates: import_react_dom.unstable_batchedUpdates, createStringInterpolator, colors }); var host = createHost(primitives, { applyAnimatedValues, createAnimatedStyle: (style) => new AnimatedStyle(style), getComponentProps: (_ref) => { let props = _objectWithoutPropertiesLoose2(_ref, _excluded); return props; } }); var animated = host.animated; // packages/edit-site/build-module/components/layout/animation.mjs var import_element11 = __toESM(require_element(), 1); function getAbsolutePosition(element) { return { top: element.offsetTop, left: element.offsetLeft }; } var ANIMATION_DURATION = 400; function useMovingAnimation({ triggerAnimationOnChange }) { const ref = (0, import_element11.useRef)(); const { previous, prevRect } = (0, import_element11.useMemo)( () => ({ previous: ref.current && getAbsolutePosition(ref.current), prevRect: ref.current && ref.current.getBoundingClientRect() }), [triggerAnimationOnChange] ); (0, import_element11.useLayoutEffect)(() => { if (!previous || !ref.current) { return; } const disableAnimation = window.matchMedia( "(prefers-reduced-motion: reduce)" ).matches; if (disableAnimation) { return; } const controller = new Controller({ x: 0, y: 0, width: prevRect.width, height: prevRect.height, config: { duration: ANIMATION_DURATION, easing: easings.easeInOutQuint }, onChange({ value }) { if (!ref.current) { return; } let { x: x22, y: y22, width: width2, height: height2 } = value; x22 = Math.round(x22); y22 = Math.round(y22); width2 = Math.round(width2); height2 = Math.round(height2); const finishedMoving = x22 === 0 && y22 === 0; ref.current.style.transformOrigin = "center center"; ref.current.style.transform = finishedMoving ? null : `translate3d(${x22}px,${y22}px,0)`; ref.current.style.width = finishedMoving ? null : `${width2}px`; ref.current.style.height = finishedMoving ? null : `${height2}px`; } }); ref.current.style.transform = void 0; const destination = ref.current.getBoundingClientRect(); const x2 = Math.round(prevRect.left - destination.left); const y2 = Math.round(prevRect.top - destination.top); const width = destination.width; const height = destination.height; controller.start({ x: 0, y: 0, width, height, from: { x: x2, y: y2, width: prevRect.width, height: prevRect.height } }); return () => { controller.stop(); controller.set({ x: 0, y: 0, width: prevRect.width, height: prevRect.height }); }; }, [previous, prevRect]); return ref; } var animation_default = useMovingAnimation; // packages/edit-site/build-module/components/save-hub/index.mjs var import_data10 = __toESM(require_data(), 1); var import_components6 = __toESM(require_components(), 1); var import_core_data9 = __toESM(require_core_data(), 1); // packages/edit-site/build-module/components/save-button/index.mjs var import_data9 = __toESM(require_data(), 1); var import_components5 = __toESM(require_components(), 1); var import_i18n6 = __toESM(require_i18n(), 1); var import_core_data8 = __toESM(require_core_data(), 1); var import_keycodes2 = __toESM(require_keycodes(), 1); var import_router3 = __toESM(require_router(), 1); var import_editor4 = __toESM(require_editor(), 1); // packages/edit-site/build-module/utils/is-previewing-theme.mjs var import_url3 = __toESM(require_url(), 1); function isPreviewingTheme() { return !!(0, import_url3.getQueryArg)(window.location.href, "wp_theme_preview"); } function currentlyPreviewingTheme() { if (isPreviewingTheme()) { return (0, import_url3.getQueryArg)(window.location.href, "wp_theme_preview"); } return null; } // packages/edit-site/build-module/components/save-button/index.mjs var import_jsx_runtime74 = __toESM(require_jsx_runtime(), 1); var { useLocation: useLocation3 } = unlock(import_router3.privateApis); function SaveButton({ className = "edit-site-save-button__button", variant = "primary", showTooltip = true, showReviewMessage, icon, size, __next40pxDefaultSize = false }) { const { params } = useLocation3(); const { setIsSaveViewOpened: setIsSaveViewOpened2 } = (0, import_data9.useDispatch)(store); const { saveDirtyEntities } = unlock((0, import_data9.useDispatch)(import_editor4.store)); const { dirtyEntityRecords } = (0, import_editor4.useEntitiesSavedStatesIsDirty)(); const { isSaving, isSaveViewOpen, previewingThemeName } = (0, import_data9.useSelect)( (select3) => { const { isSavingEntityRecord, isResolving } = select3(import_core_data8.store); const { isSaveViewOpened: isSaveViewOpened2 } = select3(store); const isActivatingTheme = isResolving("activateTheme"); const currentlyPreviewingThemeId = currentlyPreviewingTheme(); return { isSaving: dirtyEntityRecords.some( (record) => isSavingEntityRecord( record.kind, record.name, record.key ) ) || isActivatingTheme, isSaveViewOpen: isSaveViewOpened2(), // Do not call `getTheme` with null, it will cause a request to // the server. previewingThemeName: currentlyPreviewingThemeId ? select3(import_core_data8.store).getTheme(currentlyPreviewingThemeId)?.name?.rendered : void 0 }; }, [dirtyEntityRecords] ); const hasDirtyEntities = !!dirtyEntityRecords.length; let isOnlyCurrentEntityDirty; if (dirtyEntityRecords.length === 1) { if (params.postId) { isOnlyCurrentEntityDirty = `${dirtyEntityRecords[0].key}` === params.postId && dirtyEntityRecords[0].name === params.postType; } else if (params.path?.includes("wp_global_styles")) { isOnlyCurrentEntityDirty = dirtyEntityRecords[0].name === "globalStyles"; } } const disabled = isSaving || !hasDirtyEntities && !isPreviewingTheme(); const getLabel = () => { if (isPreviewingTheme()) { if (isSaving) { return (0, import_i18n6.sprintf)( /* translators: %s: The name of theme to be activated. */ (0, import_i18n6.__)("Activating %s"), previewingThemeName ); } else if (disabled) { return (0, import_i18n6.__)("Saved"); } else if (hasDirtyEntities) { return (0, import_i18n6.sprintf)( /* translators: %s: The name of theme to be activated. */ (0, import_i18n6.__)("Activate %s & Save"), previewingThemeName ); } return (0, import_i18n6.sprintf)( /* translators: %s: The name of theme to be activated. */ (0, import_i18n6.__)("Activate %s"), previewingThemeName ); } if (isSaving) { return (0, import_i18n6.__)("Saving"); } if (disabled) { return (0, import_i18n6.__)("Saved"); } if (!isOnlyCurrentEntityDirty && showReviewMessage) { return (0, import_i18n6.sprintf)( // translators: %d: number of unsaved changes (number). (0, import_i18n6._n)( "Review %d change\u2026", "Review %d changes\u2026", dirtyEntityRecords.length ), dirtyEntityRecords.length ); } return (0, import_i18n6.__)("Save"); }; const label = getLabel(); const onClick = isOnlyCurrentEntityDirty ? () => saveDirtyEntities({ dirtyEntityRecords }) : () => setIsSaveViewOpened2(true); return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)( import_components5.Button, { variant, className, "aria-disabled": disabled, "aria-expanded": isSaveViewOpen, isBusy: isSaving, onClick: disabled ? void 0 : onClick, label, shortcut: disabled ? void 0 : import_keycodes2.displayShortcut.primary("s"), showTooltip, icon, __next40pxDefaultSize, size, children: label } ); } // packages/edit-site/build-module/components/save-hub/index.mjs var import_jsx_runtime75 = __toESM(require_jsx_runtime(), 1); function SaveHub() { const { isDisabled, isSaving } = (0, import_data10.useSelect)((select3) => { const { __experimentalGetDirtyEntityRecords, isSavingEntityRecord } = select3(import_core_data9.store); const dirtyEntityRecords = __experimentalGetDirtyEntityRecords(); const _isSaving = dirtyEntityRecords.some( (record) => isSavingEntityRecord(record.kind, record.name, record.key) ); return { isSaving: _isSaving, isDisabled: _isSaving || !dirtyEntityRecords.length && !isPreviewingTheme() }; }, []); return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(import_components6.__experimentalHStack, { className: "edit-site-save-hub", alignment: "right", spacing: 4, children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)( SaveButton, { className: "edit-site-save-hub__button", variant: isDisabled ? null : "primary", showTooltip: false, icon: isDisabled && !isSaving ? check_default : null, showReviewMessage: true, __next40pxDefaultSize: true } ) }); } // packages/edit-site/build-module/components/save-panel/index.mjs var import_components7 = __toESM(require_components(), 1); var import_editor5 = __toESM(require_editor(), 1); var import_data12 = __toESM(require_data(), 1); var import_i18n7 = __toESM(require_i18n(), 1); var import_core_data11 = __toESM(require_core_data(), 1); var import_router5 = __toESM(require_router(), 1); var import_element13 = __toESM(require_element(), 1); // packages/edit-site/build-module/utils/use-activate-theme.mjs var import_core_data10 = __toESM(require_core_data(), 1); var import_data11 = __toESM(require_data(), 1); var import_router4 = __toESM(require_router(), 1); var import_url4 = __toESM(require_url(), 1); var { useHistory: useHistory3, useLocation: useLocation4 } = unlock(import_router4.privateApis); function useActivateTheme() { const history = useHistory3(); const { path } = useLocation4(); const { startResolution, finishResolution } = (0, import_data11.useDispatch)(import_core_data10.store); return async () => { if (isPreviewingTheme()) { const activationURL = "themes.php?action=activate&stylesheet=" + currentlyPreviewingTheme() + "&_wpnonce=" + window.WP_BLOCK_THEME_ACTIVATE_NONCE; startResolution("activateTheme"); await window.fetch(activationURL); finishResolution("activateTheme"); history.navigate((0, import_url4.addQueryArgs)(path, { wp_theme_preview: "" })); } }; } // packages/edit-site/build-module/utils/use-actual-current-theme.mjs var import_api_fetch = __toESM(require_api_fetch(), 1); var import_element12 = __toESM(require_element(), 1); var import_url5 = __toESM(require_url(), 1); var ACTIVE_THEMES_URL = "/wp/v2/themes?status=active"; function useActualCurrentTheme() { const [currentTheme, setCurrentTheme] = (0, import_element12.useState)(); (0, import_element12.useEffect)(() => { const path = (0, import_url5.addQueryArgs)(ACTIVE_THEMES_URL, { context: "edit", wp_theme_preview: "" }); (0, import_api_fetch.default)({ path }).then((activeThemes) => setCurrentTheme(activeThemes[0])).catch(() => { }); }, []); return currentTheme; } // packages/edit-site/build-module/components/save-panel/index.mjs var import_jsx_runtime76 = __toESM(require_jsx_runtime(), 1); var { EntitiesSavedStatesExtensible } = unlock(import_editor5.privateApis); var { useLocation: useLocation5 } = unlock(import_router5.privateApis); var EntitiesSavedStatesForPreview = ({ onClose, renderDialog, variant }) => { const isDirtyProps = (0, import_editor5.useEntitiesSavedStatesIsDirty)(); let activateSaveLabel, successNoticeContent; if (isDirtyProps.isDirty) { activateSaveLabel = (0, import_i18n7.__)("Activate & Save"); successNoticeContent = (0, import_i18n7.__)("Theme activated and site updated."); } else { activateSaveLabel = (0, import_i18n7.__)("Activate"); successNoticeContent = (0, import_i18n7.__)("Theme activated."); } const currentTheme = useActualCurrentTheme(); const previewingTheme = (0, import_data12.useSelect)( (select3) => select3(import_core_data11.store).getCurrentTheme(), [] ); const additionalPrompt = /* @__PURE__ */ (0, import_jsx_runtime76.jsx)("p", { children: (0, import_i18n7.sprintf)( /* translators: 1: The name of active theme, 2: The name of theme to be activated. */ (0, import_i18n7.__)( "Saving your changes will change your active theme from %1$s to %2$s." ), currentTheme?.name?.rendered ?? "...", previewingTheme?.name?.rendered ?? "..." ) }); const activateTheme = useActivateTheme(); const onSave = async (values) => { await activateTheme(); return values; }; return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( EntitiesSavedStatesExtensible, { ...{ ...isDirtyProps, additionalPrompt, close: onClose, onSave, saveEnabled: true, saveLabel: activateSaveLabel, renderDialog, variant, successNoticeContent } } ); }; var _EntitiesSavedStates = ({ onClose, renderDialog, variant }) => { if (isPreviewingTheme()) { return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( EntitiesSavedStatesForPreview, { onClose, renderDialog, variant } ); } return /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( import_editor5.EntitiesSavedStates, { close: onClose, renderDialog, variant } ); }; function SavePanel() { const { query } = useLocation5(); const { canvas = "view" } = query; const { isSaveViewOpen, isDirty, isSaving } = (0, import_data12.useSelect)((select3) => { const { __experimentalGetDirtyEntityRecords, isSavingEntityRecord, isResolving } = select3(import_core_data11.store); const dirtyEntityRecords = __experimentalGetDirtyEntityRecords(); const isActivatingTheme = isResolving("activateTheme"); const { isSaveViewOpened: isSaveViewOpened2 } = unlock(select3(store)); return { isSaveViewOpen: isSaveViewOpened2(), isDirty: dirtyEntityRecords.length > 0, isSaving: dirtyEntityRecords.some( (record) => isSavingEntityRecord(record.kind, record.name, record.key) ) || isActivatingTheme }; }, []); const { setIsSaveViewOpened: setIsSaveViewOpened2 } = (0, import_data12.useDispatch)(store); const onClose = () => setIsSaveViewOpened2(false); (0, import_element13.useEffect)(() => { setIsSaveViewOpened2(false); }, [canvas, setIsSaveViewOpened2]); if (canvas === "view") { return isSaveViewOpen ? /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( import_components7.Modal, { className: "edit-site-save-panel__modal", onRequestClose: onClose, title: (0, import_i18n7.__)("Review changes"), size: "small", children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(_EntitiesSavedStates, { onClose, variant: "inline" }) } ) : null; } const activateSaveEnabled = isPreviewingTheme() || isDirty; const disabled = isSaving || !activateSaveEnabled; return /* @__PURE__ */ (0, import_jsx_runtime76.jsxs)( navigable_region_default, { className: clsx_default("edit-site-layout__actions", { "is-entity-save-view-open": isSaveViewOpen }), ariaLabel: (0, import_i18n7.__)("Save panel"), children: [ /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( "div", { className: clsx_default("edit-site-editor__toggle-save-panel", { "screen-reader-text": isSaveViewOpen }), children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)( import_components7.Button, { __next40pxDefaultSize: true, variant: "secondary", className: "edit-site-editor__toggle-save-panel-button", onClick: () => setIsSaveViewOpened2(true), "aria-haspopup": "dialog", disabled, accessibleWhenDisabled: true, children: (0, import_i18n7.__)("Open save panel") } ) } ), isSaveViewOpen && /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(_EntitiesSavedStates, { onClose, renderDialog: true }) ] } ); } // packages/edit-site/build-module/components/layout/index.mjs var import_jsx_runtime77 = __toESM(require_jsx_runtime(), 1); var { useLocation: useLocation6 } = unlock(import_router6.privateApis); var { useStyle } = unlock(import_editor6.privateApis); var ANIMATION_DURATION2 = 0.3; function Layout() { const { query, name: routeKey, areas: areas2, widths } = useLocation6(); const canvas = routeKey === "notfound" ? "view" : query?.canvas ?? "view"; const isMobileViewport = (0, import_compose2.useViewportMatch)("medium", "<"); const toggleRef = (0, import_element14.useRef)(); const navigateRegionsProps = (0, import_components8.__unstableUseNavigateRegions)(); const disableMotion = (0, import_compose2.useReducedMotion)(); const [canvasResizer, canvasSize] = (0, import_compose2.useResizeObserver)(); const isEditorLoading = useIsSiteEditorLoading(); const [isResizableFrameOversized, setIsResizableFrameOversized] = (0, import_element14.useState)(false); const animationRef = animation_default({ triggerAnimationOnChange: routeKey + "-" + canvas }); const { showIconLabels } = (0, import_data13.useSelect)((select3) => { return { showIconLabels: select3(import_preferences3.store).get( "core", "showIconLabels" ) }; }); const backgroundColor = useStyle("color.background"); const gradientValue = useStyle("color.gradient"); const previousCanvaMode = (0, import_compose2.usePrevious)(canvas); (0, import_element14.useEffect)(() => { if (previousCanvaMode === "edit") { toggleRef.current?.focus(); } }, [canvas]); return /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(import_jsx_runtime77.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_editor6.UnsavedChangesWarning, {}), canvas === "view" && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(SaveKeyboardShortcut, {}), /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( "div", { ...navigateRegionsProps, ref: navigateRegionsProps.ref, className: clsx_default( "edit-site-layout", navigateRegionsProps.className, { "is-full-canvas": canvas === "edit", "show-icon-labels": showIconLabels } ), children: /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("div", { className: "edit-site-layout__content", children: [ (!isMobileViewport || !areas2.mobile) && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( navigable_region_default, { ariaLabel: (0, import_i18n8.__)("Navigation"), className: "edit-site-layout__sidebar-region", children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_components8.__unstableAnimatePresence, { children: canvas === "view" && /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)( import_components8.__unstableMotion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, transition: { type: "tween", duration: ( // Disable transition in mobile to emulate a full page transition. disableMotion || isMobileViewport ? 0 : ANIMATION_DURATION2 ), ease: "easeOut" }, className: "edit-site-layout__sidebar", children: [ /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( site_hub_default, { ref: toggleRef, isTransparent: isResizableFrameOversized } ), /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(SidebarNavigationProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( SidebarContent, { shouldAnimate: routeKey !== "styles", routeKey, children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_editor6.ErrorBoundary, { children: areas2.sidebar }) } ) }), /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(SaveHub, {}), /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(SavePanel, {}) ] } ) }) } ), /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_notices.SnackbarNotices, { className: "edit-site-layout__snackbar" }), isMobileViewport && areas2.mobile && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("div", { className: "edit-site-layout__mobile", children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(SidebarNavigationProvider, { children: canvas !== "edit" ? /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(import_jsx_runtime77.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( SiteHubMobile, { ref: toggleRef, isTransparent: isResizableFrameOversized } ), /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(SidebarContent, { routeKey, children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_editor6.ErrorBoundary, { children: areas2.mobile }) }), /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(SaveHub, {}), /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(SavePanel, {}) ] }) : /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_editor6.ErrorBoundary, { children: areas2.mobile }) }) }), !isMobileViewport && areas2.content && canvas !== "edit" && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( "div", { className: "edit-site-layout__area", style: { maxWidth: widths?.content }, children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_editor6.ErrorBoundary, { children: areas2.content }) } ), !isMobileViewport && areas2.edit && canvas !== "edit" && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( "div", { className: "edit-site-layout__area", style: { maxWidth: widths?.edit }, children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_editor6.ErrorBoundary, { children: areas2.edit }) } ), !isMobileViewport && areas2.preview && /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("div", { className: "edit-site-layout__canvas-container", children: [ canvasResizer, !!canvasSize.width && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( "div", { className: clsx_default( "edit-site-layout__canvas", { "is-right-aligned": isResizableFrameOversized } ), ref: animationRef, children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_editor6.ErrorBoundary, { children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( resizable_frame_default, { isReady: !isEditorLoading, isFullWidth: canvas === "edit", defaultSize: { width: canvasSize.width - 24, height: canvasSize.height }, isOversized: isResizableFrameOversized, setIsOversized: setIsResizableFrameOversized, innerContentStyle: { background: gradientValue ?? backgroundColor }, children: areas2.preview } ) }) } ) ] }) ] }) } ) ] }); } function LayoutWithGlobalStylesProvider(props) { const { createErrorNotice } = (0, import_data13.useDispatch)(import_notices.store); function onPluginAreaError(name2) { createErrorNotice( (0, import_i18n8.sprintf)( /* translators: %s: plugin name */ (0, import_i18n8.__)( 'The "%s" plugin has encountered an error and cannot be rendered.' ), name2 ) ); } return /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(import_components8.SlotFillProvider, { children: [ /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_plugins2.PluginArea, { onError: onPluginAreaError }), /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(Layout, { ...props }) ] }); } // packages/edit-site/build-module/hooks/commands/use-common-commands.mjs var import_element15 = __toESM(require_element(), 1); var import_data14 = __toESM(require_data(), 1); var import_i18n9 = __toESM(require_i18n(), 1); var import_commands2 = __toESM(require_commands(), 1); var import_router7 = __toESM(require_router(), 1); var import_preferences4 = __toESM(require_preferences(), 1); var import_core_data12 = __toESM(require_core_data(), 1); var import_editor7 = __toESM(require_editor(), 1); var { useHistory: useHistory4, useLocation: useLocation7 } = unlock(import_router7.privateApis); var { useGlobalStyles } = unlock(import_editor7.privateApis); var getGlobalStylesToggleWelcomeGuideCommands = () => function useGlobalStylesToggleWelcomeGuideCommands() { const { openGeneralSidebar: openGeneralSidebar2 } = unlock((0, import_data14.useDispatch)(store)); const { params } = useLocation7(); const { canvas = "view" } = params; const { set } = (0, import_data14.useDispatch)(import_preferences4.store); const history = useHistory4(); const isBlockBasedTheme = (0, import_data14.useSelect)((select3) => { return select3(import_core_data12.store).getCurrentTheme().is_block_theme; }, []); const commands = (0, import_element15.useMemo)(() => { if (!isBlockBasedTheme) { return []; } return [ { name: "core/edit-site/toggle-styles-welcome-guide", label: (0, import_i18n9.__)("Learn about styles"), callback: ({ close }) => { close(); if (canvas !== "edit") { history.navigate("/styles?canvas=edit", { transition: "canvas-mode-edit-transition" }); } openGeneralSidebar2("edit-site/global-styles"); set("core/edit-site", "welcomeGuideStyles", true); setTimeout(() => { set("core/edit-site", "welcomeGuideStyles", true); }, 500); }, icon: help_default } ]; }, [history, openGeneralSidebar2, canvas, isBlockBasedTheme, set]); return { isLoading: false, commands }; }; var getGlobalStylesResetCommands = () => function useGlobalStylesResetCommands() { const { user, setUser } = useGlobalStyles(); const canReset = !!user && (Object.keys(user?.styles ?? {}).length > 0 || Object.keys(user?.settings ?? {}).length > 0); const commands = (0, import_element15.useMemo)(() => { if (!canReset) { return []; } return [ { name: "core/edit-site/reset-global-styles", label: (0, import_i18n9.__)("Reset styles"), icon: (0, import_i18n9.isRTL)() ? rotate_right_default : rotate_left_default, callback: ({ close }) => { close(); setUser({ styles: {}, settings: {} }); } } ]; }, [canReset, setUser]); return { isLoading: false, commands }; }; var getGlobalStylesOpenRevisionsCommands = () => function useGlobalStylesOpenRevisionsCommands() { const { openGeneralSidebar: openGeneralSidebar2 } = unlock((0, import_data14.useDispatch)(store)); const { setStylesPath } = unlock((0, import_data14.useDispatch)(import_editor7.store)); const { params } = useLocation7(); const { canvas = "view" } = params; const history = useHistory4(); const hasRevisions = (0, import_data14.useSelect)((select3) => { const { getEntityRecord, __experimentalGetCurrentGlobalStylesId } = select3(import_core_data12.store); const globalStylesId = __experimentalGetCurrentGlobalStylesId(); const globalStyles = globalStylesId ? getEntityRecord("root", "globalStyles", globalStylesId) : void 0; return !!globalStyles?._links?.["version-history"]?.[0]?.count; }, []); const commands = (0, import_element15.useMemo)(() => { if (!hasRevisions) { return []; } return [ { name: "core/edit-site/open-styles-revisions", label: (0, import_i18n9.__)("Open style revisions"), icon: backup_default, callback: ({ close }) => { close(); if (canvas !== "edit") { history.navigate("/styles?canvas=edit", { transition: "canvas-mode-edit-transition" }); } openGeneralSidebar2("edit-site/global-styles"); setStylesPath("/revisions"); } } ]; }, [ history, openGeneralSidebar2, setStylesPath, hasRevisions, canvas ]); return { isLoading: false, commands }; }; function useCommonCommands() { (0, import_commands2.useCommandLoader)({ name: "core/edit-site/toggle-styles-welcome-guide", hook: getGlobalStylesToggleWelcomeGuideCommands() }); (0, import_commands2.useCommandLoader)({ name: "core/edit-site/reset-global-styles", hook: getGlobalStylesResetCommands() }); (0, import_commands2.useCommandLoader)({ name: "core/edit-site/open-styles-revisions", hook: getGlobalStylesOpenRevisionsCommands() }); } // packages/edit-site/build-module/hooks/commands/use-set-command-context.mjs var import_data15 = __toESM(require_data(), 1); var import_commands3 = __toESM(require_commands(), 1); var import_block_editor3 = __toESM(require_block_editor(), 1); var import_router8 = __toESM(require_router(), 1); var { useCommandContext } = unlock(import_commands3.privateApis); var { useLocation: useLocation8 } = unlock(import_router8.privateApis); function useSetCommandContext() { const { query = {} } = useLocation8(); const { canvas = "view" } = query; const hasBlockSelected = (0, import_data15.useSelect)((select3) => { return select3(import_block_editor3.store).getBlockSelectionStart(); }, []); let commandContext = "site-editor"; if (canvas === "edit") { commandContext = "entity-edit"; } if (hasBlockSelected) { commandContext = "block-selection-edit"; } useCommandContext(commandContext); } // packages/edit-site/build-module/components/site-editor-routes/index.mjs var import_data82 = __toESM(require_data(), 1); var import_element160 = __toESM(require_element(), 1); // packages/edit-site/build-module/components/sidebar-navigation-screen-main/index.mjs var import_components73 = __toESM(require_components(), 1); var import_i18n59 = __toESM(require_i18n(), 1); var import_data31 = __toESM(require_data(), 1); var import_core_data25 = __toESM(require_core_data(), 1); // packages/edit-site/build-module/components/sidebar-navigation-screen/index.mjs var import_components10 = __toESM(require_components(), 1); var import_i18n10 = __toESM(require_i18n(), 1); var import_core_data13 = __toESM(require_core_data(), 1); var import_data16 = __toESM(require_data(), 1); var import_router9 = __toESM(require_router(), 1); var import_element16 = __toESM(require_element(), 1); // packages/edit-site/build-module/components/sidebar-button/index.mjs var import_components9 = __toESM(require_components(), 1); var import_jsx_runtime78 = __toESM(require_jsx_runtime(), 1); function SidebarButton(props) { return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)( import_components9.Button, { size: "compact", ...props, className: clsx_default("edit-site-sidebar-button", props.className) } ); } // packages/edit-site/build-module/components/sidebar-navigation-screen/index.mjs var import_jsx_runtime79 = __toESM(require_jsx_runtime(), 1); var { useHistory: useHistory5, useLocation: useLocation9 } = unlock(import_router9.privateApis); function SidebarNavigationScreen({ isRoot, title, actions, content, footer, description, backPath: backPathProp }) { const { dashboardLink, dashboardLinkText, previewingThemeName } = (0, import_data16.useSelect)( (select3) => { const { getSettings: getSettings7 } = unlock(select3(store)); const currentlyPreviewingThemeId = currentlyPreviewingTheme(); return { dashboardLink: getSettings7().__experimentalDashboardLink, dashboardLinkText: getSettings7().__experimentalDashboardLinkText, // Do not call `getTheme` with null, it will cause a request to // the server. previewingThemeName: currentlyPreviewingThemeId ? select3(import_core_data13.store).getTheme(currentlyPreviewingThemeId)?.name?.rendered : void 0 }; }, [] ); const location = useLocation9(); const history = useHistory5(); const { navigate } = (0, import_element16.useContext)(SidebarNavigationContext); const backPath = backPathProp ?? location.state?.backPath; const icon = (0, import_i18n10.isRTL)() ? chevron_right_default : chevron_left_default; return /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(import_jsx_runtime79.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)( import_components10.__experimentalVStack, { className: clsx_default("edit-site-sidebar-navigation-screen__main", { "has-footer": !!footer }), spacing: 0, justify: "flex-start", children: [ /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)( import_components10.__experimentalHStack, { spacing: 3, alignment: "flex-start", className: "edit-site-sidebar-navigation-screen__title-icon", children: [ !isRoot && /* @__PURE__ */ (0, import_jsx_runtime79.jsx)( SidebarButton, { onClick: () => { history.navigate(backPath); navigate("back"); }, icon, label: (0, import_i18n10.__)("Back"), showTooltip: false } ), isRoot && /* @__PURE__ */ (0, import_jsx_runtime79.jsx)( SidebarButton, { icon, label: dashboardLinkText || (0, import_i18n10.__)("Go to the Dashboard"), href: dashboardLink } ), /* @__PURE__ */ (0, import_jsx_runtime79.jsx)( import_components10.__experimentalHeading, { className: "edit-site-sidebar-navigation-screen__title", color: "#e0e0e0", level: 1, size: 20, children: !isPreviewingTheme() ? title : (0, import_i18n10.sprintf)( /* translators: 1: theme name. 2: title */ (0, import_i18n10.__)("Previewing %1$s: %2$s"), previewingThemeName, title ) } ), actions && /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("div", { className: "edit-site-sidebar-navigation-screen__actions", children: actions }) ] } ), /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { className: "edit-site-sidebar-navigation-screen__content", children: [ description && /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("div", { className: "edit-site-sidebar-navigation-screen__description", children: description }), content ] }) ] } ), footer && /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("footer", { className: "edit-site-sidebar-navigation-screen__footer", children: footer }) ] }); } // packages/edit-site/build-module/components/sidebar-navigation-item/index.mjs var import_components11 = __toESM(require_components(), 1); var import_i18n11 = __toESM(require_i18n(), 1); var import_router10 = __toESM(require_router(), 1); var import_element17 = __toESM(require_element(), 1); var import_jsx_runtime80 = __toESM(require_jsx_runtime(), 1); var { useHistory: useHistory6, useLink } = unlock(import_router10.privateApis); function SidebarNavigationItem({ className, icon, withChevron = false, suffix, uid, to: to2, onClick, children, ...props }) { const history = useHistory6(); const { navigate } = (0, import_element17.useContext)(SidebarNavigationContext); function handleClick(e2) { if (onClick) { onClick(e2); navigate("forward"); } else if (to2) { e2.preventDefault(); history.navigate(to2); navigate("forward", `[id="${uid}"]`); } } const linkProps = useLink(to2); return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)( import_components11.__experimentalItem, { className: clsx_default( "edit-site-sidebar-navigation-item", { "with-suffix": !withChevron && suffix }, className ), id: uid, onClick: handleClick, href: to2 ? linkProps.href : void 0, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime80.jsxs)(import_components11.__experimentalHStack, { justify: "flex-start", children: [ icon && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)( icon_default, { style: { fill: "currentcolor" }, icon, size: 24 } ), /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_components11.FlexBlock, { children }), withChevron && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)( icon_default, { icon: (0, import_i18n11.isRTL)() ? chevron_left_small_default : chevron_right_small_default, className: "edit-site-sidebar-navigation-item__drilldown-indicator", size: 24 } ), !withChevron && suffix ] }) } ); } // packages/edit-site/build-module/components/sidebar-navigation-screen-global-styles/index.mjs var import_i18n58 = __toESM(require_i18n(), 1); var import_data30 = __toESM(require_data(), 1); var import_element49 = __toESM(require_element(), 1); var import_preferences5 = __toESM(require_preferences(), 1); var import_editor8 = __toESM(require_editor(), 1); var import_router11 = __toESM(require_router(), 1); var import_url7 = __toESM(require_url(), 1); // packages/global-styles-ui/build-module/global-styles-ui.mjs var import_components71 = __toESM(require_components(), 1); var import_blocks8 = __toESM(require_blocks(), 1); var import_data29 = __toESM(require_data(), 1); var import_block_editor16 = __toESM(require_block_editor(), 1); var import_element48 = __toESM(require_element(), 1); var import_compose8 = __toESM(require_compose(), 1); // packages/global-styles-engine/build-module/utils/object.mjs function setImmutably(object, path, value) { path = Array.isArray(path) ? [...path] : [path]; object = Array.isArray(object) ? [...object] : { ...object }; const leaf = path.pop(); let prev = object; for (const key of path) { const lvl = prev[key]; prev = prev[key] = Array.isArray(lvl) ? [...lvl] : { ...lvl }; } prev[leaf] = value; return object; } var getValueFromObjectPath = (object, path, defaultValue2) => { const arrayPath = Array.isArray(path) ? path : path.split("."); let value = object; arrayPath.forEach((fieldName) => { value = value?.[fieldName]; }); return value ?? defaultValue2; }; // packages/global-styles-engine/build-module/settings/get-setting.mjs var VALID_SETTINGS = [ "appearanceTools", "useRootPaddingAwareAlignments", "background.backgroundImage", "background.backgroundRepeat", "background.backgroundSize", "background.backgroundPosition", "border.color", "border.radius", "border.radiusSizes", "border.style", "border.width", "shadow.presets", "shadow.defaultPresets", "color.background", "color.button", "color.caption", "color.custom", "color.customDuotone", "color.customGradient", "color.defaultDuotone", "color.defaultGradients", "color.defaultPalette", "color.duotone", "color.gradients", "color.heading", "color.link", "color.palette", "color.text", "custom", "dimensions.aspectRatio", "dimensions.height", "dimensions.minHeight", "dimensions.width", "dimensions.dimensionSizes", "layout.contentSize", "layout.definitions", "layout.wideSize", "lightbox.enabled", "lightbox.allowEditing", "position.fixed", "position.sticky", "spacing.customSpacingSize", "spacing.defaultSpacingSizes", "spacing.spacingSizes", "spacing.spacingScale", "spacing.blockGap", "spacing.margin", "spacing.padding", "spacing.units", "typography.fluid", "typography.customFontSize", "typography.defaultFontSizes", "typography.dropCap", "typography.fontFamilies", "typography.fontSizes", "typography.fontStyle", "typography.fontWeight", "typography.letterSpacing", "typography.lineHeight", "typography.textAlign", "typography.textColumns", "typography.textDecoration", "typography.textIndent", "typography.textTransform", "typography.writingMode" ]; function getSetting(globalStyles, path, blockName) { const appendedBlockPath = blockName ? ".blocks." + blockName : ""; const appendedPropertyPath = path ? "." + path : ""; const contextualPath = `settings${appendedBlockPath}${appendedPropertyPath}`; const globalPath = `settings${appendedPropertyPath}`; if (path) { return getValueFromObjectPath(globalStyles, contextualPath) ?? getValueFromObjectPath(globalStyles, globalPath); } let result = {}; VALID_SETTINGS.forEach((setting) => { const value = getValueFromObjectPath( globalStyles, `settings${appendedBlockPath}.${setting}` ) ?? getValueFromObjectPath(globalStyles, `settings.${setting}`); if (value !== void 0) { result = setImmutably(result, setting.split("."), value); } }); return result; } // packages/global-styles-engine/build-module/settings/set-setting.mjs function setSetting(globalStyles, path, newValue, blockName) { const appendedBlockPath = blockName ? ".blocks." + blockName : ""; const appendedPropertyPath = path ? "." + path : ""; const finalPath = `settings${appendedBlockPath}${appendedPropertyPath}`; return setImmutably( globalStyles, finalPath.split("."), newValue ); } // packages/global-styles-engine/build-module/utils/common.mjs var import_style_engine = __toESM(require_style_engine(), 1); // packages/global-styles-engine/build-module/utils/fluid.mjs var DEFAULT_MAXIMUM_VIEWPORT_WIDTH = "1600px"; var DEFAULT_MINIMUM_VIEWPORT_WIDTH = "320px"; var DEFAULT_SCALE_FACTOR = 1; var DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MIN = 0.25; var DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MAX = 0.75; var DEFAULT_MINIMUM_FONT_SIZE_LIMIT = "14px"; function getComputedFluidTypographyValue({ minimumFontSize, maximumFontSize, fontSize, minimumViewportWidth = DEFAULT_MINIMUM_VIEWPORT_WIDTH, maximumViewportWidth = DEFAULT_MAXIMUM_VIEWPORT_WIDTH, scaleFactor = DEFAULT_SCALE_FACTOR, minimumFontSizeLimit }) { minimumFontSizeLimit = !!getTypographyValueAndUnit(minimumFontSizeLimit) ? minimumFontSizeLimit : DEFAULT_MINIMUM_FONT_SIZE_LIMIT; if (fontSize) { const fontSizeParsed = getTypographyValueAndUnit(fontSize); if (!fontSizeParsed?.unit || !fontSizeParsed?.value) { return null; } const minimumFontSizeLimitParsed = getTypographyValueAndUnit( minimumFontSizeLimit, { coerceTo: fontSizeParsed.unit } ); if (!!minimumFontSizeLimitParsed?.value && !minimumFontSize && !maximumFontSize) { if (fontSizeParsed?.value <= minimumFontSizeLimitParsed?.value) { return null; } } if (!maximumFontSize) { maximumFontSize = `${fontSizeParsed.value}${fontSizeParsed.unit}`; } if (!minimumFontSize) { const fontSizeValueInPx = fontSizeParsed.unit === "px" ? fontSizeParsed.value : fontSizeParsed.value * 16; const minimumFontSizeFactor = Math.min( Math.max( 1 - 0.075 * Math.log2(fontSizeValueInPx), DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MIN ), DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MAX ); const calculatedMinimumFontSize = roundToPrecision( fontSizeParsed.value * minimumFontSizeFactor, 3 ); if (!!minimumFontSizeLimitParsed?.value && calculatedMinimumFontSize < minimumFontSizeLimitParsed?.value) { minimumFontSize = `${minimumFontSizeLimitParsed.value}${minimumFontSizeLimitParsed.unit}`; } else { minimumFontSize = `${calculatedMinimumFontSize}${fontSizeParsed.unit}`; } } } const minimumFontSizeParsed = getTypographyValueAndUnit(minimumFontSize); const fontSizeUnit = minimumFontSizeParsed?.unit || "rem"; const maximumFontSizeParsed = getTypographyValueAndUnit(maximumFontSize, { coerceTo: fontSizeUnit }); if (!minimumFontSizeParsed || !maximumFontSizeParsed) { return null; } const minimumFontSizeRem = getTypographyValueAndUnit(minimumFontSize, { coerceTo: "rem" }); const maximumViewportWidthParsed = getTypographyValueAndUnit( maximumViewportWidth, { coerceTo: fontSizeUnit } ); const minimumViewportWidthParsed = getTypographyValueAndUnit( minimumViewportWidth, { coerceTo: fontSizeUnit } ); if (!maximumViewportWidthParsed || !minimumViewportWidthParsed || !minimumFontSizeRem) { return null; } const linearDenominator = maximumViewportWidthParsed.value - minimumViewportWidthParsed.value; if (!linearDenominator) { return null; } const minViewportWidthOffsetValue = roundToPrecision( minimumViewportWidthParsed.value / 100, 3 ); const viewportWidthOffset = roundToPrecision(minViewportWidthOffsetValue, 3) + fontSizeUnit; const linearFactor = 100 * ((maximumFontSizeParsed.value - minimumFontSizeParsed.value) / linearDenominator); const linearFactorScaled = roundToPrecision( (linearFactor || 1) * scaleFactor, 3 ); const fluidTargetFontSize = `${minimumFontSizeRem.value}${minimumFontSizeRem.unit} + ((1vw - ${viewportWidthOffset}) * ${linearFactorScaled})`; return `clamp(${minimumFontSize}, ${fluidTargetFontSize}, ${maximumFontSize})`; } function getTypographyValueAndUnit(rawValue, options = {}) { if (typeof rawValue !== "string" && typeof rawValue !== "number") { return null; } if (isFinite(rawValue)) { rawValue = `${rawValue}px`; } const { coerceTo, rootSizeValue, acceptableUnits } = { coerceTo: "", // Default browser font size. Later we could inject some JS to compute this `getComputedStyle( document.querySelector( "html" ) ).fontSize`. rootSizeValue: 16, acceptableUnits: ["rem", "px", "em"], ...options }; const acceptableUnitsGroup = acceptableUnits?.join("|"); const regexUnits = new RegExp( `^(\\d*\\.?\\d+)(${acceptableUnitsGroup}){1,1}$` ); const matches = rawValue.toString().match(regexUnits); if (!matches || matches.length < 3) { return null; } let [, value, unit] = matches; let returnValue = parseFloat(value); if ("px" === coerceTo && ("em" === unit || "rem" === unit)) { returnValue = returnValue * rootSizeValue; unit = coerceTo; } if ("px" === unit && ("em" === coerceTo || "rem" === coerceTo)) { returnValue = returnValue / rootSizeValue; unit = coerceTo; } if (("em" === coerceTo || "rem" === coerceTo) && ("em" === unit || "rem" === unit)) { unit = coerceTo; } if (!unit) { return null; } return { value: roundToPrecision(returnValue, 3), unit }; } function roundToPrecision(value, digits = 3) { const base = Math.pow(10, digits); return Math.round(value * base) / base; } // packages/global-styles-engine/build-module/utils/typography.mjs function isFluidTypographyEnabled(typographySettings) { const fluidSettings = typographySettings?.fluid; return true === fluidSettings || fluidSettings && typeof fluidSettings === "object" && Object.keys(fluidSettings).length > 0; } function getFluidTypographyOptionsFromSettings(settings2) { const typographySettings = settings2?.typography ?? {}; const layoutSettings = settings2?.layout; const defaultMaxViewportWidth = getTypographyValueAndUnit( layoutSettings?.wideSize ) ? layoutSettings?.wideSize : null; return isFluidTypographyEnabled(typographySettings) && defaultMaxViewportWidth ? { fluid: { maxViewportWidth: defaultMaxViewportWidth, ...typeof typographySettings.fluid === "object" ? typographySettings.fluid : {} } } : { fluid: typographySettings?.fluid }; } function getTypographyFontSizeValue(preset, settings2) { const { size: defaultSize } = preset; if (!defaultSize || "0" === defaultSize || false === preset?.fluid) { return defaultSize; } if (!isFluidTypographyEnabled(settings2?.typography) && !isFluidTypographyEnabled(preset)) { return defaultSize; } const fluidTypographySettings = getFluidTypographyOptionsFromSettings(settings2)?.fluid ?? {}; const fluidFontSizeValue = getComputedFluidTypographyValue({ minimumFontSize: typeof preset?.fluid === "boolean" ? void 0 : preset?.fluid?.min, maximumFontSize: typeof preset?.fluid === "boolean" ? void 0 : preset?.fluid?.max, fontSize: defaultSize, minimumFontSizeLimit: typeof fluidTypographySettings === "object" ? fluidTypographySettings?.minFontSize : void 0, maximumViewportWidth: typeof fluidTypographySettings === "object" ? fluidTypographySettings?.maxViewportWidth : void 0, minimumViewportWidth: typeof fluidTypographySettings === "object" ? fluidTypographySettings?.minViewportWidth : void 0 }); if (!!fluidFontSizeValue) { return fluidFontSizeValue; } return defaultSize; } // packages/global-styles-engine/build-module/utils/common.mjs var ROOT_BLOCK_SELECTOR = "body"; var ROOT_CSS_PROPERTIES_SELECTOR = ":root"; var PRESET_METADATA = [ { path: ["color", "palette"], valueKey: "color", cssVarInfix: "color", classes: [ { classSuffix: "color", propertyName: "color" }, { classSuffix: "background-color", propertyName: "background-color" }, { classSuffix: "border-color", propertyName: "border-color" } ] }, { path: ["color", "gradients"], valueKey: "gradient", cssVarInfix: "gradient", classes: [ { classSuffix: "gradient-background", propertyName: "background" } ] }, { path: ["color", "duotone"], valueKey: "colors", cssVarInfix: "duotone", valueFunc: ({ slug }) => `url( '#wp-duotone-${slug}' )`, classes: [] }, { path: ["shadow", "presets"], valueKey: "shadow", cssVarInfix: "shadow", classes: [] }, { path: ["typography", "fontSizes"], valueFunc: (preset, settings2) => getTypographyFontSizeValue(preset, settings2), valueKey: "size", cssVarInfix: "font-size", classes: [{ classSuffix: "font-size", propertyName: "font-size" }] }, { path: ["typography", "fontFamilies"], valueKey: "fontFamily", cssVarInfix: "font-family", classes: [ { classSuffix: "font-family", propertyName: "font-family" } ] }, { path: ["spacing", "spacingSizes"], valueKey: "size", cssVarInfix: "spacing", valueFunc: ({ size }) => size, classes: [] }, { path: ["border", "radiusSizes"], valueKey: "size", cssVarInfix: "border-radius", classes: [] }, { path: ["dimensions", "dimensionSizes"], valueKey: "size", cssVarInfix: "dimension", classes: [] } ]; function scopeSelector(scope, selector2) { if (!scope || !selector2) { return selector2; } const scopes = scope.split(","); const selectors = selector2.split(","); const selectorsScoped = []; scopes.forEach((outer) => { selectors.forEach((inner) => { selectorsScoped.push(`${outer.trim()} ${inner.trim()}`); }); }); return selectorsScoped.join(", "); } function scopeFeatureSelectors(scope, selectors) { if (!scope || !selectors) { return; } const featureSelectors = {}; Object.entries(selectors).forEach(([feature, selector2]) => { if (typeof selector2 === "string") { featureSelectors[feature] = scopeSelector(scope, selector2); } if (typeof selector2 === "object") { featureSelectors[feature] = {}; Object.entries(selector2).forEach( ([subfeature, subfeatureSelector]) => { featureSelectors[feature][subfeature] = scopeSelector( scope, subfeatureSelector ); } ); } }); return featureSelectors; } function appendToSelector(selector2, toAppend) { if (!selector2.includes(",")) { return selector2 + toAppend; } const selectors = selector2.split(","); const newSelectors = selectors.map((sel) => sel + toAppend); return newSelectors.join(","); } function getBlockStyleVariationSelector(variation, blockSelector) { const variationClass = `.is-style-${variation}`; if (!blockSelector) { return variationClass; } const ancestorRegex = /((?::\([^)]+\))?\s*)([^\s:]+)/; const addVariationClass = (_match, group1, group2) => { return group1 + group2 + variationClass; }; const result = blockSelector.split(",").map((part) => part.replace(ancestorRegex, addVariationClass)); return result.join(","); } function getResolvedRefValue(ruleValue, tree) { if (!ruleValue || !tree) { return ruleValue; } if (typeof ruleValue === "object" && "ref" in ruleValue && ruleValue?.ref) { const resolvedRuleValue = (0, import_style_engine.getCSSValueFromRawStyle)( getValueFromObjectPath(tree, ruleValue.ref) ); if (typeof resolvedRuleValue === "object" && resolvedRuleValue !== null && "ref" in resolvedRuleValue && resolvedRuleValue?.ref) { return void 0; } if (resolvedRuleValue === void 0) { return ruleValue; } return resolvedRuleValue; } return ruleValue; } function getResolvedThemeFilePath(file, themeFileURIs) { if (!file || !themeFileURIs || !Array.isArray(themeFileURIs)) { return file; } const uri = themeFileURIs.find( (themeFileUri) => themeFileUri?.name === file ); if (!uri?.href) { return file; } return uri?.href; } function getResolvedValue(ruleValue, tree) { if (!ruleValue || !tree) { return ruleValue; } const resolvedValue = getResolvedRefValue(ruleValue, tree); if (typeof resolvedValue === "object" && resolvedValue !== null && "url" in resolvedValue && resolvedValue?.url) { resolvedValue.url = getResolvedThemeFilePath( resolvedValue.url, tree?._links?.["wp:theme-file"] ); } return resolvedValue; } function findInPresetsBy(settings2, blockName, presetPath = [], presetProperty = "slug", presetValueValue) { const orderedPresetsByOrigin = [ blockName ? getValueFromObjectPath(settings2, [ "blocks", blockName, ...presetPath ]) : void 0, getValueFromObjectPath(settings2, presetPath) ].filter(Boolean); for (const presetByOrigin of orderedPresetsByOrigin) { if (presetByOrigin) { const origins = ["custom", "theme", "default"]; for (const origin of origins) { const presets = presetByOrigin[origin]; if (presets) { const presetObject = presets.find( (preset) => preset[presetProperty] === presetValueValue ); if (presetObject) { if (presetProperty === "slug") { return presetObject; } const highestPresetObjectWithSameSlug = findInPresetsBy( settings2, blockName, presetPath, "slug", presetObject.slug ); if (highestPresetObjectWithSameSlug[presetProperty] === presetObject[presetProperty]) { return presetObject; } return void 0; } } } } } } function getValueFromPresetVariable(features, blockName, variable, [presetType, slug] = []) { const metadata = PRESET_METADATA.find( (data) => data.cssVarInfix === presetType ); if (!metadata || !features.settings) { return variable; } const presetObject = findInPresetsBy( features.settings, blockName, metadata.path, "slug", slug ); if (presetObject) { const { valueKey } = metadata; const result = presetObject[valueKey]; return getValueFromVariable(features, blockName, result); } return variable; } function getValueFromCustomVariable(features, blockName, variable, path = []) { const result = (blockName ? getValueFromObjectPath(features?.settings ?? {}, [ "blocks", blockName, "custom", ...path ]) : void 0) ?? getValueFromObjectPath(features?.settings ?? {}, [ "custom", ...path ]); if (!result) { return variable; } return getValueFromVariable(features, blockName, result); } function getValueFromVariable(features, blockName, variable) { if (!variable || typeof variable !== "string") { if (typeof variable === "object" && variable !== null && "ref" in variable && typeof variable.ref === "string") { const resolvedVariable = getValueFromObjectPath( features, variable.ref ); if (!resolvedVariable || typeof resolvedVariable === "object" && "ref" in resolvedVariable) { return resolvedVariable; } variable = resolvedVariable; } else { return variable; } } const USER_VALUE_PREFIX = "var:"; const THEME_VALUE_PREFIX = "var(--wp--"; const THEME_VALUE_SUFFIX = ")"; let parsedVar; if (variable.startsWith(USER_VALUE_PREFIX)) { parsedVar = variable.slice(USER_VALUE_PREFIX.length).split("|"); } else if (variable.startsWith(THEME_VALUE_PREFIX) && variable.endsWith(THEME_VALUE_SUFFIX)) { parsedVar = variable.slice(THEME_VALUE_PREFIX.length, -THEME_VALUE_SUFFIX.length).split("--"); } else { return variable; } const [type, ...path] = parsedVar; if (type === "preset") { return getValueFromPresetVariable( features, blockName, variable, path ); } if (type === "custom") { return getValueFromCustomVariable( features, blockName, variable, path ); } return variable; } // packages/global-styles-engine/build-module/settings/get-style.mjs function getStyle(globalStyles, path, blockName, shouldDecodeEncode = true) { const appendedPath = path ? "." + path : ""; const finalPath = !blockName ? `styles${appendedPath}` : `styles.blocks.${blockName}${appendedPath}`; if (!globalStyles) { return void 0; } const rawResult = getValueFromObjectPath(globalStyles, finalPath); const result = shouldDecodeEncode ? getValueFromVariable(globalStyles, blockName, rawResult) : rawResult; return result; } // packages/global-styles-engine/build-module/settings/set-style.mjs function setStyle(globalStyles, path, newValue, blockName) { const appendedPath = path ? "." + path : ""; const finalPath = !blockName ? `styles${appendedPath}` : `styles.blocks.${blockName}${appendedPath}`; return setImmutably( globalStyles, finalPath.split("."), newValue ); } // packages/global-styles-engine/build-module/core/equal.mjs var import_es6 = __toESM(require_es6(), 1); function areGlobalStylesEqual(original, variation) { if (typeof original !== "object" || typeof variation !== "object") { return original === variation; } return (0, import_es6.default)(original?.styles, variation?.styles) && (0, import_es6.default)(original?.settings, variation?.settings); } // packages/global-styles-engine/build-module/core/merge.mjs var import_deepmerge = __toESM(require_cjs(), 1); // node_modules/is-plain-object/dist/is-plain-object.mjs function isObject(o3) { return Object.prototype.toString.call(o3) === "[object Object]"; } function isPlainObject(o3) { var ctor, prot; if (isObject(o3) === false) return false; ctor = o3.constructor; if (ctor === void 0) return true; prot = ctor.prototype; if (isObject(prot) === false) return false; if (prot.hasOwnProperty("isPrototypeOf") === false) { return false; } return true; } // packages/global-styles-engine/build-module/core/merge.mjs function mergeGlobalStyles(base, user) { return (0, import_deepmerge.default)(base, user, { /* * We only pass as arrays the presets, * in which case we want the new array of values * to override the old array (no merging). */ isMergeableObject: isPlainObject, /* * Exceptions to the above rule. * Background images should be replaced, not merged, * as they themselves are specific object definitions for the style. */ customMerge: (key) => { if (key === "backgroundImage") { return (baseConfig, userConfig) => userConfig ?? baseConfig; } return void 0; } }); } // packages/global-styles-engine/build-module/core/render.mjs var import_blocks3 = __toESM(require_blocks(), 1); var import_style_engine2 = __toESM(require_style_engine(), 1); var import_data17 = __toESM(require_data(), 1); // packages/global-styles-engine/build-module/core/selectors.mjs function getBlockSelector(blockType, target = "root", options = {}) { if (!target) { return null; } const { fallback = false } = options; const { name: name2, selectors, supports } = blockType; const hasSelectors = selectors && Object.keys(selectors).length > 0; const path = Array.isArray(target) ? target.join(".") : target; let rootSelector = null; if (hasSelectors && selectors.root) { rootSelector = selectors?.root; } else if (supports?.__experimentalSelector) { rootSelector = supports.__experimentalSelector; } else { rootSelector = ".wp-block-" + name2.replace("core/", "").replace("/", "-"); } if (path === "root") { return rootSelector; } const pathArray = Array.isArray(target) ? target : target.split("."); if (pathArray.length === 1) { const fallbackSelector = fallback ? rootSelector : null; if (hasSelectors) { const featureSelector2 = getValueFromObjectPath( selectors, `${path}.root`, null ) || getValueFromObjectPath(selectors, path, null); return featureSelector2 || fallbackSelector; } const featureSelector = supports ? getValueFromObjectPath( supports, `${path}.__experimentalSelector`, null ) : void 0; if (!featureSelector) { return fallbackSelector; } return scopeSelector(rootSelector, featureSelector); } let subfeatureSelector; if (hasSelectors) { subfeatureSelector = getValueFromObjectPath(selectors, path, null); } if (subfeatureSelector) { return subfeatureSelector; } if (fallback) { return getBlockSelector(blockType, pathArray[0], options); } return null; } // node_modules/colord/index.mjs var r2 = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) }; var t = function(r3) { return "string" == typeof r3 ? r3.length > 0 : "number" == typeof r3; }; var n = function(r3, t3, n2) { return void 0 === t3 && (t3 = 0), void 0 === n2 && (n2 = Math.pow(10, t3)), Math.round(n2 * r3) / n2 + 0; }; var e = function(r3, t3, n2) { return void 0 === t3 && (t3 = 0), void 0 === n2 && (n2 = 1), r3 > n2 ? n2 : r3 > t3 ? r3 : t3; }; var u = function(r3) { return (r3 = isFinite(r3) ? r3 % 360 : 0) > 0 ? r3 : r3 + 360; }; var a = function(r3) { return { r: e(r3.r, 0, 255), g: e(r3.g, 0, 255), b: e(r3.b, 0, 255), a: e(r3.a) }; }; var o = function(r3) { return { r: n(r3.r), g: n(r3.g), b: n(r3.b), a: n(r3.a, 3) }; }; var i = /^#([0-9a-f]{3,8})$/i; var s = function(r3) { var t3 = r3.toString(16); return t3.length < 2 ? "0" + t3 : t3; }; var h = function(r3) { var t3 = r3.r, n2 = r3.g, e2 = r3.b, u2 = r3.a, a2 = Math.max(t3, n2, e2), o3 = a2 - Math.min(t3, n2, e2), i2 = o3 ? a2 === t3 ? (n2 - e2) / o3 : a2 === n2 ? 2 + (e2 - t3) / o3 : 4 + (t3 - n2) / o3 : 0; return { h: 60 * (i2 < 0 ? i2 + 6 : i2), s: a2 ? o3 / a2 * 100 : 0, v: a2 / 255 * 100, a: u2 }; }; var b = function(r3) { var t3 = r3.h, n2 = r3.s, e2 = r3.v, u2 = r3.a; t3 = t3 / 360 * 6, n2 /= 100, e2 /= 100; var a2 = Math.floor(t3), o3 = e2 * (1 - n2), i2 = e2 * (1 - (t3 - a2) * n2), s2 = e2 * (1 - (1 - t3 + a2) * n2), h2 = a2 % 6; return { r: 255 * [e2, i2, o3, o3, s2, e2][h2], g: 255 * [s2, e2, e2, i2, o3, o3][h2], b: 255 * [o3, o3, s2, e2, e2, i2][h2], a: u2 }; }; var g = function(r3) { return { h: u(r3.h), s: e(r3.s, 0, 100), l: e(r3.l, 0, 100), a: e(r3.a) }; }; var d = function(r3) { return { h: n(r3.h), s: n(r3.s), l: n(r3.l), a: n(r3.a, 3) }; }; var f = function(r3) { return b((n2 = (t3 = r3).s, { h: t3.h, s: (n2 *= ((e2 = t3.l) < 50 ? e2 : 100 - e2) / 100) > 0 ? 2 * n2 / (e2 + n2) * 100 : 0, v: e2 + n2, a: t3.a })); var t3, n2, e2; }; var c = function(r3) { return { h: (t3 = h(r3)).h, s: (u2 = (200 - (n2 = t3.s)) * (e2 = t3.v) / 100) > 0 && u2 < 200 ? n2 * e2 / 100 / (u2 <= 100 ? u2 : 200 - u2) * 100 : 0, l: u2 / 2, a: t3.a }; var t3, n2, e2, u2; }; var l = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; var p2 = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; var v = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; var m = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; var y = { string: [[function(r3) { var t3 = i.exec(r3); return t3 ? (r3 = t3[1]).length <= 4 ? { r: parseInt(r3[0] + r3[0], 16), g: parseInt(r3[1] + r3[1], 16), b: parseInt(r3[2] + r3[2], 16), a: 4 === r3.length ? n(parseInt(r3[3] + r3[3], 16) / 255, 2) : 1 } : 6 === r3.length || 8 === r3.length ? { r: parseInt(r3.substr(0, 2), 16), g: parseInt(r3.substr(2, 2), 16), b: parseInt(r3.substr(4, 2), 16), a: 8 === r3.length ? n(parseInt(r3.substr(6, 2), 16) / 255, 2) : 1 } : null : null; }, "hex"], [function(r3) { var t3 = v.exec(r3) || m.exec(r3); return t3 ? t3[2] !== t3[4] || t3[4] !== t3[6] ? null : a({ r: Number(t3[1]) / (t3[2] ? 100 / 255 : 1), g: Number(t3[3]) / (t3[4] ? 100 / 255 : 1), b: Number(t3[5]) / (t3[6] ? 100 / 255 : 1), a: void 0 === t3[7] ? 1 : Number(t3[7]) / (t3[8] ? 100 : 1) }) : null; }, "rgb"], [function(t3) { var n2 = l.exec(t3) || p2.exec(t3); if (!n2) return null; var e2, u2, a2 = g({ h: (e2 = n2[1], u2 = n2[2], void 0 === u2 && (u2 = "deg"), Number(e2) * (r2[u2] || 1)), s: Number(n2[3]), l: Number(n2[4]), a: void 0 === n2[5] ? 1 : Number(n2[5]) / (n2[6] ? 100 : 1) }); return f(a2); }, "hsl"]], object: [[function(r3) { var n2 = r3.r, e2 = r3.g, u2 = r3.b, o3 = r3.a, i2 = void 0 === o3 ? 1 : o3; return t(n2) && t(e2) && t(u2) ? a({ r: Number(n2), g: Number(e2), b: Number(u2), a: Number(i2) }) : null; }, "rgb"], [function(r3) { var n2 = r3.h, e2 = r3.s, u2 = r3.l, a2 = r3.a, o3 = void 0 === a2 ? 1 : a2; if (!t(n2) || !t(e2) || !t(u2)) return null; var i2 = g({ h: Number(n2), s: Number(e2), l: Number(u2), a: Number(o3) }); return f(i2); }, "hsl"], [function(r3) { var n2 = r3.h, a2 = r3.s, o3 = r3.v, i2 = r3.a, s2 = void 0 === i2 ? 1 : i2; if (!t(n2) || !t(a2) || !t(o3)) return null; var h2 = (function(r4) { return { h: u(r4.h), s: e(r4.s, 0, 100), v: e(r4.v, 0, 100), a: e(r4.a) }; })({ h: Number(n2), s: Number(a2), v: Number(o3), a: Number(s2) }); return b(h2); }, "hsv"]] }; var N = function(r3, t3) { for (var n2 = 0; n2 < t3.length; n2++) { var e2 = t3[n2][0](r3); if (e2) return [e2, t3[n2][1]]; } return [null, void 0]; }; var x = function(r3) { return "string" == typeof r3 ? N(r3.trim(), y.string) : "object" == typeof r3 && null !== r3 ? N(r3, y.object) : [null, void 0]; }; var M = function(r3, t3) { var n2 = c(r3); return { h: n2.h, s: e(n2.s + 100 * t3, 0, 100), l: n2.l, a: n2.a }; }; var H = function(r3) { return (299 * r3.r + 587 * r3.g + 114 * r3.b) / 1e3 / 255; }; var $ = function(r3, t3) { var n2 = c(r3); return { h: n2.h, s: n2.s, l: e(n2.l + 100 * t3, 0, 100), a: n2.a }; }; var j = (function() { function r3(r4) { this.parsed = x(r4)[0], this.rgba = this.parsed || { r: 0, g: 0, b: 0, a: 1 }; } return r3.prototype.isValid = function() { return null !== this.parsed; }, r3.prototype.brightness = function() { return n(H(this.rgba), 2); }, r3.prototype.isDark = function() { return H(this.rgba) < 0.5; }, r3.prototype.isLight = function() { return H(this.rgba) >= 0.5; }, r3.prototype.toHex = function() { return r4 = o(this.rgba), t3 = r4.r, e2 = r4.g, u2 = r4.b, i2 = (a2 = r4.a) < 1 ? s(n(255 * a2)) : "", "#" + s(t3) + s(e2) + s(u2) + i2; var r4, t3, e2, u2, a2, i2; }, r3.prototype.toRgb = function() { return o(this.rgba); }, r3.prototype.toRgbString = function() { return r4 = o(this.rgba), t3 = r4.r, n2 = r4.g, e2 = r4.b, (u2 = r4.a) < 1 ? "rgba(" + t3 + ", " + n2 + ", " + e2 + ", " + u2 + ")" : "rgb(" + t3 + ", " + n2 + ", " + e2 + ")"; var r4, t3, n2, e2, u2; }, r3.prototype.toHsl = function() { return d(c(this.rgba)); }, r3.prototype.toHslString = function() { return r4 = d(c(this.rgba)), t3 = r4.h, n2 = r4.s, e2 = r4.l, (u2 = r4.a) < 1 ? "hsla(" + t3 + ", " + n2 + "%, " + e2 + "%, " + u2 + ")" : "hsl(" + t3 + ", " + n2 + "%, " + e2 + "%)"; var r4, t3, n2, e2, u2; }, r3.prototype.toHsv = function() { return r4 = h(this.rgba), { h: n(r4.h), s: n(r4.s), v: n(r4.v), a: n(r4.a, 3) }; var r4; }, r3.prototype.invert = function() { return w({ r: 255 - (r4 = this.rgba).r, g: 255 - r4.g, b: 255 - r4.b, a: r4.a }); var r4; }, r3.prototype.saturate = function(r4) { return void 0 === r4 && (r4 = 0.1), w(M(this.rgba, r4)); }, r3.prototype.desaturate = function(r4) { return void 0 === r4 && (r4 = 0.1), w(M(this.rgba, -r4)); }, r3.prototype.grayscale = function() { return w(M(this.rgba, -1)); }, r3.prototype.lighten = function(r4) { return void 0 === r4 && (r4 = 0.1), w($(this.rgba, r4)); }, r3.prototype.darken = function(r4) { return void 0 === r4 && (r4 = 0.1), w($(this.rgba, -r4)); }, r3.prototype.rotate = function(r4) { return void 0 === r4 && (r4 = 15), this.hue(this.hue() + r4); }, r3.prototype.alpha = function(r4) { return "number" == typeof r4 ? w({ r: (t3 = this.rgba).r, g: t3.g, b: t3.b, a: r4 }) : n(this.rgba.a, 3); var t3; }, r3.prototype.hue = function(r4) { var t3 = c(this.rgba); return "number" == typeof r4 ? w({ h: r4, s: t3.s, l: t3.l, a: t3.a }) : n(t3.h); }, r3.prototype.isEqual = function(r4) { return this.toHex() === w(r4).toHex(); }, r3; })(); var w = function(r3) { return r3 instanceof j ? r3 : new j(r3); }; var S = []; var k = function(r3) { r3.forEach(function(r4) { S.indexOf(r4) < 0 && (r4(j, y), S.push(r4)); }); }; // packages/global-styles-engine/build-module/utils/duotone.mjs function getValuesFromColors(colors2 = []) { const values = { r: [], g: [], b: [], a: [] }; colors2.forEach((color) => { const rgbColor = w(color).toRgb(); values.r.push(rgbColor.r / 255); values.g.push(rgbColor.g / 255); values.b.push(rgbColor.b / 255); values.a.push(rgbColor.a); }); return values; } function getDuotoneFilter(id, colors2) { const values = getValuesFromColors(colors2); return ` `; } // packages/global-styles-engine/build-module/utils/string.mjs function kebabCase(str) { return str.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/([0-9])([a-zA-Z])/g, "$1-$2").replace(/([a-zA-Z])([0-9])/g, "$1-$2").replace(/[\s_]+/g, "-").toLowerCase(); } // packages/global-styles-engine/build-module/utils/spacing.mjs function getSpacingPresetCssVar(value) { if (!value) { return; } const slug = value.match(/var:preset\|spacing\|(.+)/); if (!slug) { return value; } return `var(--wp--preset--spacing--${slug[1]})`; } // packages/global-styles-engine/build-module/utils/gap.mjs function getGapBoxControlValueFromStyle(blockGapValue) { if (!blockGapValue) { return null; } const isValueString = typeof blockGapValue === "string"; return { top: isValueString ? blockGapValue : blockGapValue?.top, left: isValueString ? blockGapValue : blockGapValue?.left }; } function getGapCSSValue(blockGapValue, defaultValue2 = "0") { const blockGapBoxControlValue = getGapBoxControlValueFromStyle(blockGapValue); if (!blockGapBoxControlValue) { return null; } const row = getSpacingPresetCssVar(blockGapBoxControlValue?.top) || defaultValue2; const column = getSpacingPresetCssVar(blockGapBoxControlValue?.left) || defaultValue2; return row === column ? row : `${row} ${column}`; } // packages/global-styles-engine/build-module/utils/background.mjs var BACKGROUND_BLOCK_DEFAULT_VALUES = { backgroundSize: "cover", backgroundPosition: "50% 50%" // used only when backgroundSize is 'contain'. }; function setBackgroundStyleDefaults(backgroundStyle) { if (!backgroundStyle || // @ts-expect-error !backgroundStyle?.backgroundImage?.url) { return; } let backgroundStylesWithDefaults; if (!backgroundStyle?.backgroundSize) { backgroundStylesWithDefaults = { backgroundSize: BACKGROUND_BLOCK_DEFAULT_VALUES.backgroundSize }; } if ("contain" === backgroundStyle?.backgroundSize && !backgroundStyle?.backgroundPosition) { backgroundStylesWithDefaults = { backgroundPosition: BACKGROUND_BLOCK_DEFAULT_VALUES.backgroundPosition }; } return backgroundStylesWithDefaults; } // packages/global-styles-engine/build-module/utils/layout.mjs var LAYOUT_DEFINITIONS = { default: { name: "default", slug: "flow", className: "is-layout-flow", baseStyles: [ { selector: " > .alignleft", rules: { float: "left", "margin-inline-start": "0", "margin-inline-end": "2em" } }, { selector: " > .alignright", rules: { float: "right", "margin-inline-start": "2em", "margin-inline-end": "0" } }, { selector: " > .aligncenter", rules: { "margin-left": "auto !important", "margin-right": "auto !important" } } ], spacingStyles: [ { selector: " > :first-child", rules: { "margin-block-start": "0" } }, { selector: " > :last-child", rules: { "margin-block-end": "0" } }, { selector: " > *", rules: { "margin-block-start": null, "margin-block-end": "0" } } ] }, constrained: { name: "constrained", slug: "constrained", className: "is-layout-constrained", baseStyles: [ { selector: " > .alignleft", rules: { float: "left", "margin-inline-start": "0", "margin-inline-end": "2em" } }, { selector: " > .alignright", rules: { float: "right", "margin-inline-start": "2em", "margin-inline-end": "0" } }, { selector: " > .aligncenter", rules: { "margin-left": "auto !important", "margin-right": "auto !important" } }, { selector: " > :where(:not(.alignleft):not(.alignright):not(.alignfull))", rules: { "max-width": "var(--wp--style--global--content-size)", "margin-left": "auto !important", "margin-right": "auto !important" } }, { selector: " > .alignwide", rules: { "max-width": "var(--wp--style--global--wide-size)" } } ], spacingStyles: [ { selector: " > :first-child", rules: { "margin-block-start": "0" } }, { selector: " > :last-child", rules: { "margin-block-end": "0" } }, { selector: " > *", rules: { "margin-block-start": null, "margin-block-end": "0" } } ] }, flex: { name: "flex", slug: "flex", className: "is-layout-flex", displayMode: "flex", baseStyles: [ { selector: "", rules: { "flex-wrap": "wrap", "align-items": "center" } }, { selector: " > :is(*, div)", // :is(*, div) instead of just * increases the specificity by 001. rules: { margin: "0" } } ], spacingStyles: [ { selector: "", rules: { gap: null } } ] }, grid: { name: "grid", slug: "grid", className: "is-layout-grid", displayMode: "grid", baseStyles: [ { selector: " > :is(*, div)", // :is(*, div) instead of just * increases the specificity by 001. rules: { margin: "0" } } ], spacingStyles: [ { selector: "", rules: { gap: null } } ] } }; // packages/global-styles-engine/build-module/core/render.mjs var ELEMENT_CLASS_NAMES = { button: "wp-element-button", caption: "wp-element-caption" }; var BLOCK_SUPPORT_FEATURE_LEVEL_SELECTORS = { __experimentalBorder: "border", color: "color", dimensions: "dimensions", spacing: "spacing", typography: "typography" }; function getPresetsDeclarations(blockPresets = {}, mergedSettings) { return PRESET_METADATA.reduce( (declarations, { path, valueKey, valueFunc, cssVarInfix }) => { const presetByOrigin = getValueFromObjectPath( blockPresets, path, [] ); ["default", "theme", "custom"].forEach((origin) => { if (presetByOrigin[origin]) { presetByOrigin[origin].forEach((value) => { if (valueKey && !valueFunc) { declarations.push( `--wp--preset--${cssVarInfix}--${kebabCase( value.slug )}: ${value[valueKey]}` ); } else if (valueFunc && typeof valueFunc === "function") { declarations.push( `--wp--preset--${cssVarInfix}--${kebabCase( value.slug )}: ${valueFunc(value, mergedSettings)}` ); } }); } }); return declarations; }, [] ); } function getPresetsClasses(blockSelector = "*", blockPresets = {}) { return PRESET_METADATA.reduce( (declarations, { path, cssVarInfix, classes }) => { if (!classes) { return declarations; } const presetByOrigin = getValueFromObjectPath( blockPresets, path, [] ); ["default", "theme", "custom"].forEach((origin) => { if (presetByOrigin[origin]) { presetByOrigin[origin].forEach( ({ slug }) => { classes.forEach( ({ classSuffix, propertyName }) => { const classSelectorToUse = `.has-${kebabCase( slug )}-${classSuffix}`; const selectorToUse = blockSelector.split(",").map( (selector2) => `${selector2}${classSelectorToUse}` ).join(","); const value = `var(--wp--preset--${cssVarInfix}--${kebabCase( slug )})`; declarations += `${selectorToUse}{${propertyName}: ${value} !important;}`; } ); } ); } }); return declarations; }, "" ); } function getPresetsSvgFilters(blockPresets = {}) { return PRESET_METADATA.filter( // Duotone are the only type of filters for now. (metadata) => metadata.path.at(-1) === "duotone" ).flatMap((metadata) => { const presetByOrigin = getValueFromObjectPath( blockPresets, metadata.path, {} ); return ["default", "theme"].filter((origin) => presetByOrigin[origin]).flatMap( (origin) => presetByOrigin[origin].map( (preset) => getDuotoneFilter( `wp-duotone-${preset.slug}`, preset.colors ) ) ).join(""); }); } function flattenTree(input = {}, prefix2, token) { let result = []; Object.keys(input).forEach((key) => { const newKey = prefix2 + kebabCase(key.replace("/", "-")); const newLeaf = input[key]; if (newLeaf instanceof Object) { const newPrefix = newKey + token; result = [...result, ...flattenTree(newLeaf, newPrefix, token)]; } else { result.push(`${newKey}: ${newLeaf}`); } }); return result; } function concatFeatureVariationSelectorString(featureSelector, styleVariationSelector) { const featureSelectors = featureSelector.split(","); const combinedSelectors = []; featureSelectors.forEach((selector2) => { combinedSelectors.push( `${styleVariationSelector.trim()}${selector2.trim()}` ); }); return combinedSelectors.join(", "); } var updateParagraphTextIndentSelector = (featureDeclarations, settings2, blockName) => { if (blockName !== "core/paragraph") { return featureDeclarations; } const blockSettings = settings2?.blocks?.["core/paragraph"]; const textIndentSetting = blockSettings?.typography?.textIndent ?? settings2?.typography?.textIndent ?? "subsequent"; if (textIndentSetting !== "all") { return featureDeclarations; } const oldSelector = ".wp-block-paragraph + .wp-block-paragraph"; const newSelector = ".wp-block-paragraph"; if (oldSelector in featureDeclarations) { const declarations = featureDeclarations[oldSelector]; const updated = { ...featureDeclarations }; delete updated[oldSelector]; updated[newSelector] = declarations; return updated; } return featureDeclarations; }; var getFeatureDeclarations = (selectors, styles) => { const declarations = {}; Object.entries(selectors).forEach(([feature, selector2]) => { if (feature === "root" || !styles?.[feature]) { return; } const isShorthand = typeof selector2 === "string"; if (!isShorthand && typeof selector2 === "object" && selector2 !== null) { Object.entries(selector2).forEach( ([subfeature, subfeatureSelector]) => { if (subfeature === "root" || !styles?.[feature][subfeature]) { return; } const subfeatureStyles = { [feature]: { [subfeature]: styles[feature][subfeature] } }; const newDeclarations = getStylesDeclarations(subfeatureStyles); declarations[subfeatureSelector] = [ ...declarations[subfeatureSelector] || [], ...newDeclarations ]; delete styles[feature][subfeature]; } ); } if (isShorthand || typeof selector2 === "object" && selector2 !== null && "root" in selector2) { const featureSelector = isShorthand ? selector2 : selector2.root; const featureStyles = { [feature]: styles[feature] }; const newDeclarations = getStylesDeclarations(featureStyles); declarations[featureSelector] = [ ...declarations[featureSelector] || [], ...newDeclarations ]; delete styles[feature]; } }); return declarations; }; function getStylesDeclarations(blockStyles = {}, selector2 = "", useRootPaddingAlign, tree = {}, disableRootPadding = false) { const isRoot = ROOT_BLOCK_SELECTOR === selector2; const output = Object.entries( import_blocks3.__EXPERIMENTAL_STYLE_PROPERTY ).reduce( (declarations, [key, { value, properties, useEngine, rootOnly }]) => { if (rootOnly && !isRoot) { return declarations; } const pathToValue = value; if (pathToValue[0] === "elements" || useEngine) { return declarations; } const styleValue = getValueFromObjectPath( blockStyles, pathToValue ); if (key === "--wp--style--root--padding" && (typeof styleValue === "string" || !useRootPaddingAlign)) { return declarations; } if (properties && typeof styleValue !== "string") { Object.entries(properties).forEach((entry) => { const [name2, prop] = entry; if (!getValueFromObjectPath(styleValue, [prop], false)) { return; } const cssProperty = name2.startsWith("--") ? name2 : kebabCase(name2); declarations.push( `${cssProperty}: ${(0, import_style_engine2.getCSSValueFromRawStyle)( getValueFromObjectPath(styleValue, [prop]) )}` ); }); } else if (getValueFromObjectPath(blockStyles, pathToValue, false)) { const cssProperty = key.startsWith("--") ? key : kebabCase(key); declarations.push( `${cssProperty}: ${(0, import_style_engine2.getCSSValueFromRawStyle)( getValueFromObjectPath(blockStyles, pathToValue) )}` ); } return declarations; }, [] ); if (!!blockStyles.background) { if (blockStyles.background?.backgroundImage) { blockStyles.background.backgroundImage = getResolvedValue( blockStyles.background.backgroundImage, tree ); } if (!isRoot && !!blockStyles.background?.backgroundImage?.id) { blockStyles = { ...blockStyles, background: { ...blockStyles.background, ...setBackgroundStyleDefaults(blockStyles.background) } }; } } const extraRules = (0, import_style_engine2.getCSSRules)(blockStyles); extraRules.forEach((rule) => { if (isRoot && (useRootPaddingAlign || disableRootPadding) && rule.key.startsWith("padding")) { return; } const cssProperty = rule.key.startsWith("--") ? rule.key : kebabCase(rule.key); let ruleValue = getResolvedValue(rule.value, tree); if (cssProperty === "font-size") { ruleValue = getTypographyFontSizeValue( { name: "", slug: "", size: ruleValue }, tree?.settings ); } if (cssProperty === "aspect-ratio") { output.push("min-height: unset"); } output.push(`${cssProperty}: ${ruleValue}`); }); return output; } function getLayoutStyles({ layoutDefinitions = LAYOUT_DEFINITIONS, style, selector: selector2, hasBlockGapSupport, hasFallbackGapSupport, fallbackGapValue }) { let ruleset = ""; let gapValue = hasBlockGapSupport ? getGapCSSValue(style?.spacing?.blockGap) : ""; if (hasFallbackGapSupport) { if (selector2 === ROOT_BLOCK_SELECTOR) { gapValue = !gapValue ? "0.5em" : gapValue; } else if (!hasBlockGapSupport && fallbackGapValue) { gapValue = fallbackGapValue; } } if (gapValue && layoutDefinitions) { Object.values(layoutDefinitions).forEach( ({ className, name: name2, spacingStyles }) => { if (!hasBlockGapSupport && "flex" !== name2 && "grid" !== name2) { return; } if (spacingStyles?.length) { spacingStyles.forEach((spacingStyle) => { const declarations = []; if (spacingStyle.rules) { Object.entries(spacingStyle.rules).forEach( ([cssProperty, cssValue]) => { declarations.push( `${cssProperty}: ${cssValue ? cssValue : gapValue}` ); } ); } if (declarations.length) { let combinedSelector = ""; if (!hasBlockGapSupport) { combinedSelector = selector2 === ROOT_BLOCK_SELECTOR ? `:where(.${className}${spacingStyle?.selector || ""})` : `:where(${selector2}.${className}${spacingStyle?.selector || ""})`; } else { combinedSelector = selector2 === ROOT_BLOCK_SELECTOR ? `:root :where(.${className})${spacingStyle?.selector || ""}` : `:root :where(${selector2}-${className})${spacingStyle?.selector || ""}`; } ruleset += `${combinedSelector} { ${declarations.join( "; " )}; }`; } }); } } ); if (selector2 === ROOT_BLOCK_SELECTOR && hasBlockGapSupport) { ruleset += `${ROOT_CSS_PROPERTIES_SELECTOR} { --wp--style--block-gap: ${gapValue}; }`; } } if (selector2 === ROOT_BLOCK_SELECTOR && layoutDefinitions) { const validDisplayModes = ["block", "flex", "grid"]; Object.values(layoutDefinitions).forEach( ({ className, displayMode, baseStyles }) => { if (displayMode && validDisplayModes.includes(displayMode)) { ruleset += `${selector2} .${className} { display:${displayMode}; }`; } if (baseStyles?.length) { baseStyles.forEach((baseStyle) => { const declarations = []; if (baseStyle.rules) { Object.entries(baseStyle.rules).forEach( ([cssProperty, cssValue]) => { declarations.push( `${cssProperty}: ${cssValue}` ); } ); } if (declarations.length) { const combinedSelector = `.${className}${baseStyle?.selector || ""}`; ruleset += `${combinedSelector} { ${declarations.join( "; " )}; }`; } }); } } ); } return ruleset; } var STYLE_KEYS = [ "border", "color", "dimensions", "spacing", "typography", "filter", "outline", "shadow", "background" ]; function pickStyleKeys(treeToPickFrom) { if (!treeToPickFrom) { return {}; } const entries = Object.entries(treeToPickFrom); const pickedEntries = entries.filter( ([key]) => STYLE_KEYS.includes(key) ); const clonedEntries = pickedEntries.map(([key, style]) => [ key, JSON.parse(JSON.stringify(style)) ]); return Object.fromEntries(clonedEntries); } var getNodesWithStyles = (tree, blockSelectors) => { const nodes = []; if (!tree?.styles) { return nodes; } const styles = pickStyleKeys(tree.styles); if (styles) { nodes.push({ styles, selector: ROOT_BLOCK_SELECTOR, // Root selector (body) styles should not be wrapped in `:root where()` to keep // specificity at (0,0,1) and maintain backwards compatibility. skipSelectorWrapper: true }); } Object.entries(import_blocks3.__EXPERIMENTAL_ELEMENTS).forEach(([name2, selector2]) => { if (tree.styles?.elements?.[name2]) { nodes.push({ styles: tree.styles?.elements?.[name2] ?? {}, selector: selector2, // Top level elements that don't use a class name should not receive the // `:root :where()` wrapper to maintain backwards compatibility. skipSelectorWrapper: !ELEMENT_CLASS_NAMES[name2] }); } }); Object.entries(tree.styles?.blocks ?? {}).forEach( ([blockName, node]) => { const blockStyles = pickStyleKeys(node); const typedNode = node; const variationNodesToAdd = []; if (typedNode?.variations) { const variations = {}; Object.entries(typedNode.variations).forEach( ([variationName, variation]) => { const typedVariation = variation; variations[variationName] = pickStyleKeys(typedVariation); if (typedVariation?.css) { variations[variationName].css = typedVariation.css; } const variationSelector = typeof blockSelectors !== "string" ? blockSelectors[blockName]?.styleVariationSelectors?.[variationName] : void 0; Object.entries( typedVariation?.elements ?? {} ).forEach(([element, elementStyles]) => { if (elementStyles && import_blocks3.__EXPERIMENTAL_ELEMENTS[element]) { variationNodesToAdd.push({ styles: elementStyles, selector: scopeSelector( variationSelector, import_blocks3.__EXPERIMENTAL_ELEMENTS[element] ) }); } }); Object.entries(typedVariation?.blocks ?? {}).forEach( ([ variationBlockName, variationBlockStyles ]) => { const variationBlockSelector = typeof blockSelectors !== "string" ? scopeSelector( variationSelector, blockSelectors[variationBlockName]?.selector ) : void 0; const variationDuotoneSelector = typeof blockSelectors !== "string" ? scopeSelector( variationSelector, blockSelectors[variationBlockName]?.duotoneSelector ) : void 0; const variationFeatureSelectors = typeof blockSelectors !== "string" ? scopeFeatureSelectors( variationSelector, blockSelectors[variationBlockName]?.featureSelectors ?? {} ) : void 0; const variationBlockStyleNodes = pickStyleKeys(variationBlockStyles); if (variationBlockStyles?.css) { variationBlockStyleNodes.css = variationBlockStyles.css; } if (!variationBlockSelector || typeof blockSelectors === "string") { return; } variationNodesToAdd.push({ selector: variationBlockSelector, duotoneSelector: variationDuotoneSelector, featureSelectors: variationFeatureSelectors, fallbackGapValue: blockSelectors[variationBlockName]?.fallbackGapValue, hasLayoutSupport: blockSelectors[variationBlockName]?.hasLayoutSupport, styles: variationBlockStyleNodes }); Object.entries( variationBlockStyles.elements ?? {} ).forEach( ([ variationBlockElement, variationBlockElementStyles ]) => { if (variationBlockElementStyles && import_blocks3.__EXPERIMENTAL_ELEMENTS[variationBlockElement]) { variationNodesToAdd.push({ styles: variationBlockElementStyles, selector: scopeSelector( variationBlockSelector, import_blocks3.__EXPERIMENTAL_ELEMENTS[variationBlockElement] ) }); } } ); } ); } ); blockStyles.variations = variations; } if (typeof blockSelectors !== "string" && blockSelectors?.[blockName]?.selector) { nodes.push({ duotoneSelector: blockSelectors[blockName].duotoneSelector, fallbackGapValue: blockSelectors[blockName].fallbackGapValue, hasLayoutSupport: blockSelectors[blockName].hasLayoutSupport, selector: blockSelectors[blockName].selector, styles: blockStyles, featureSelectors: blockSelectors[blockName].featureSelectors, styleVariationSelectors: blockSelectors[blockName].styleVariationSelectors, name: blockName }); } Object.entries(typedNode?.elements ?? {}).forEach( ([elementName, value]) => { if (typeof blockSelectors !== "string" && value && blockSelectors?.[blockName] && import_blocks3.__EXPERIMENTAL_ELEMENTS[elementName]) { nodes.push({ styles: value, selector: blockSelectors[blockName]?.selector.split(",").map((sel) => { const elementSelectors = import_blocks3.__EXPERIMENTAL_ELEMENTS[elementName].split(","); return elementSelectors.map( (elementSelector) => sel + " " + elementSelector ); }).join(",") }); } } ); nodes.push(...variationNodesToAdd); } ); return nodes; }; var getNodesWithSettings = (tree, blockSelectors) => { const nodes = []; if (!tree?.settings) { return nodes; } const pickPresets = (treeToPickFrom) => { let presets2 = {}; PRESET_METADATA.forEach(({ path }) => { const value = getValueFromObjectPath(treeToPickFrom, path, false); if (value !== false) { presets2 = setImmutably(presets2, path, value); } }); return presets2; }; const presets = pickPresets(tree.settings); const custom = tree.settings?.custom; if (Object.keys(presets).length > 0 || custom) { nodes.push({ presets, custom, selector: ROOT_CSS_PROPERTIES_SELECTOR }); } Object.entries(tree.settings?.blocks ?? {}).forEach( ([blockName, node]) => { const blockCustom = node.custom; if (typeof blockSelectors === "string" || !blockSelectors[blockName]) { return; } const blockPresets = pickPresets(node); if (Object.keys(blockPresets).length > 0 || blockCustom) { nodes.push({ presets: blockPresets, custom: blockCustom, selector: blockSelectors[blockName]?.selector }); } } ); return nodes; }; var generateCustomProperties = (tree, blockSelectors) => { const settings2 = getNodesWithSettings(tree, blockSelectors); let ruleset = ""; settings2.forEach(({ presets, custom, selector: selector2 }) => { const declarations = tree?.settings ? getPresetsDeclarations(presets, tree?.settings) : []; const customProps = flattenTree(custom, "--wp--custom--", "--"); if (customProps.length > 0) { declarations.push(...customProps); } if (declarations.length > 0) { ruleset += `${selector2}{${declarations.join(";")};}`; } }); return ruleset; }; var transformToStyles = (tree, blockSelectors, hasBlockGapSupport, hasFallbackGapSupport, disableLayoutStyles = false, disableRootPadding = false, styleOptions = {}) => { const options = { blockGap: true, blockStyles: true, layoutStyles: true, marginReset: true, presets: true, rootPadding: true, variationStyles: false, ...styleOptions }; const nodesWithStyles = getNodesWithStyles(tree, blockSelectors); const nodesWithSettings = getNodesWithSettings(tree, blockSelectors); const useRootPaddingAlign = tree?.settings?.useRootPaddingAwareAlignments; const { contentSize, wideSize } = tree?.settings?.layout || {}; const hasBodyStyles = options.marginReset || options.rootPadding || options.layoutStyles; let ruleset = ""; if (options.presets && (contentSize || wideSize)) { ruleset += `${ROOT_CSS_PROPERTIES_SELECTOR} {`; ruleset = contentSize ? ruleset + ` --wp--style--global--content-size: ${contentSize};` : ruleset; ruleset = wideSize ? ruleset + ` --wp--style--global--wide-size: ${wideSize};` : ruleset; ruleset += "}"; } if (hasBodyStyles) { ruleset += ":where(body) {margin: 0;"; if (options.rootPadding && useRootPaddingAlign) { ruleset += `padding-right: 0; padding-left: 0; padding-top: var(--wp--style--root--padding-top); padding-bottom: var(--wp--style--root--padding-bottom) } .has-global-padding { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); } .has-global-padding > .alignfull { margin-right: calc(var(--wp--style--root--padding-right) * -1); margin-left: calc(var(--wp--style--root--padding-left) * -1); } .has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull)) { padding-right: 0; padding-left: 0; } .has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull)) > .alignfull { margin-left: 0; margin-right: 0; `; } ruleset += "}"; } if (options.blockStyles) { nodesWithStyles.forEach( ({ selector: selector2, duotoneSelector, styles, fallbackGapValue, hasLayoutSupport, featureSelectors, styleVariationSelectors, skipSelectorWrapper, name: name2 }) => { if (featureSelectors) { let featureDeclarations = getFeatureDeclarations( featureSelectors, styles ); featureDeclarations = updateParagraphTextIndentSelector( featureDeclarations, tree.settings, name2 ); Object.entries(featureDeclarations).forEach( ([cssSelector, declarations]) => { if (declarations.length) { const rules = declarations.join(";"); ruleset += `:root :where(${cssSelector}){${rules};}`; } } ); } if (duotoneSelector) { const duotoneStyles = {}; if (styles?.filter) { duotoneStyles.filter = styles.filter; delete styles.filter; } const duotoneDeclarations = getStylesDeclarations(duotoneStyles); if (duotoneDeclarations.length) { ruleset += `${duotoneSelector}{${duotoneDeclarations.join( ";" )};}`; } } if (!disableLayoutStyles && (ROOT_BLOCK_SELECTOR === selector2 || hasLayoutSupport)) { ruleset += getLayoutStyles({ style: styles, selector: selector2, hasBlockGapSupport, hasFallbackGapSupport, fallbackGapValue }); } const styleDeclarations = getStylesDeclarations( styles, selector2, useRootPaddingAlign, tree, disableRootPadding ); if (styleDeclarations?.length) { const generalSelector = skipSelectorWrapper ? selector2 : `:root :where(${selector2})`; ruleset += `${generalSelector}{${styleDeclarations.join( ";" )};}`; } if (styles?.css) { ruleset += processCSSNesting( styles.css, `:root :where(${selector2})` ); } if (options.variationStyles && styleVariationSelectors) { Object.entries(styleVariationSelectors).forEach( ([styleVariationName, styleVariationSelector]) => { const styleVariations = styles?.variations?.[styleVariationName]; if (styleVariations) { if (featureSelectors) { let featureDeclarations = getFeatureDeclarations( featureSelectors, styleVariations ); featureDeclarations = updateParagraphTextIndentSelector( featureDeclarations, tree.settings, name2 ); Object.entries( featureDeclarations ).forEach( ([baseSelector, declarations]) => { if (declarations.length) { const cssSelector = concatFeatureVariationSelectorString( baseSelector, styleVariationSelector ); const rules = declarations.join(";"); ruleset += `:root :where(${cssSelector}){${rules};}`; } } ); } const styleVariationDeclarations = getStylesDeclarations( styleVariations, styleVariationSelector, useRootPaddingAlign, tree ); if (styleVariationDeclarations.length) { ruleset += `:root :where(${styleVariationSelector}){${styleVariationDeclarations.join( ";" )};}`; } if (styleVariations?.css) { ruleset += processCSSNesting( styleVariations.css, `:root :where(${styleVariationSelector})` ); } if (hasLayoutSupport && styleVariations?.spacing?.blockGap) { const variationSelectorWithBlock = styleVariationSelector + selector2; ruleset += getLayoutStyles({ style: styleVariations, selector: variationSelectorWithBlock, hasBlockGapSupport: true, hasFallbackGapSupport, fallbackGapValue }); } } } ); } const pseudoSelectorStyles = Object.entries(styles).filter( ([key]) => key.startsWith(":") ); if (pseudoSelectorStyles?.length) { pseudoSelectorStyles.forEach( ([pseudoKey, pseudoStyle]) => { const pseudoDeclarations = getStylesDeclarations(pseudoStyle); if (!pseudoDeclarations?.length) { return; } const _selector = selector2.split(",").map((sel) => sel + pseudoKey).join(","); const pseudoRule = `:root :where(${_selector}){${pseudoDeclarations.join( ";" )};}`; ruleset += pseudoRule; } ); } } ); } if (options.layoutStyles) { ruleset = ruleset + ".wp-site-blocks > .alignleft { float: left; margin-right: 2em; }"; ruleset = ruleset + ".wp-site-blocks > .alignright { float: right; margin-left: 2em; }"; ruleset = ruleset + ".wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }"; } if (options.blockGap && hasBlockGapSupport) { const gapValue = getGapCSSValue(tree?.styles?.spacing?.blockGap) || "0.5em"; ruleset = ruleset + `:root :where(.wp-site-blocks) > * { margin-block-start: ${gapValue}; margin-block-end: 0; }`; ruleset = ruleset + ":root :where(.wp-site-blocks) > :first-child { margin-block-start: 0; }"; ruleset = ruleset + ":root :where(.wp-site-blocks) > :last-child { margin-block-end: 0; }"; } if (options.presets) { nodesWithSettings.forEach(({ selector: selector2, presets }) => { if (ROOT_BLOCK_SELECTOR === selector2 || ROOT_CSS_PROPERTIES_SELECTOR === selector2) { selector2 = ""; } const classes = getPresetsClasses(selector2, presets); if (classes.length > 0) { ruleset += classes; } }); } return ruleset; }; function generateSvgFilters(tree, blockSelectors) { const nodesWithSettings = getNodesWithSettings(tree, blockSelectors); return nodesWithSettings.flatMap(({ presets }) => { return getPresetsSvgFilters(presets); }); } var getSelectorsConfig = (blockType, rootSelector) => { if (blockType?.selectors && Object.keys(blockType.selectors).length > 0) { return blockType.selectors; } const config2 = { root: rootSelector }; Object.entries(BLOCK_SUPPORT_FEATURE_LEVEL_SELECTORS).forEach( ([featureKey, featureName]) => { const featureSelector = getBlockSelector(blockType, featureKey); if (featureSelector) { config2[featureName] = featureSelector; } } ); return config2; }; var getBlockSelectors = (blockTypes, variationInstanceId) => { const { getBlockStyles } = (0, import_data17.select)(import_blocks3.store); const result = {}; blockTypes.forEach((blockType) => { const name2 = blockType.name; const selector2 = getBlockSelector(blockType); if (!selector2) { return; } let duotoneSelector = getBlockSelector(blockType, "filter.duotone"); if (!duotoneSelector) { const rootSelector = getBlockSelector(blockType); const duotoneSupport = (0, import_blocks3.getBlockSupport)( blockType, "color.__experimentalDuotone", false ); duotoneSelector = duotoneSupport && rootSelector && scopeSelector(rootSelector, duotoneSupport); } const hasLayoutSupport = !!blockType?.supports?.layout || !!blockType?.supports?.__experimentalLayout; const fallbackGapValue = ( // @ts-expect-error blockType?.supports?.spacing?.blockGap?.__experimentalDefault ); const blockStyleVariations = getBlockStyles(name2); const styleVariationSelectors = {}; blockStyleVariations?.forEach((variation) => { const variationSuffix = variationInstanceId ? `-${variationInstanceId}` : ""; const variationName = `${variation.name}${variationSuffix}`; const styleVariationSelector = getBlockStyleVariationSelector( variationName, selector2 ); styleVariationSelectors[variationName] = styleVariationSelector; }); const featureSelectors = getSelectorsConfig(blockType, selector2); result[name2] = { duotoneSelector: duotoneSelector ?? void 0, fallbackGapValue, featureSelectors: Object.keys(featureSelectors).length ? featureSelectors : void 0, hasLayoutSupport, name: name2, selector: selector2, styleVariationSelectors: blockStyleVariations?.length ? styleVariationSelectors : void 0 }; }); return result; }; function updateConfigWithSeparator(config2) { const blocks = config2.styles?.blocks; const separatorBlock = blocks?.["core/separator"]; const needsSeparatorStyleUpdate = separatorBlock && separatorBlock.color?.background && !separatorBlock.color?.text && !separatorBlock.border?.color; if (needsSeparatorStyleUpdate) { return { ...config2, styles: { ...config2.styles, blocks: { ...blocks, "core/separator": { ...separatorBlock, color: { ...separatorBlock.color, text: separatorBlock.color?.background } } } } }; } return config2; } function processCSSNesting(css, blockSelector) { let processedCSS = ""; if (!css || css.trim() === "") { return processedCSS; } const parts = css.split("&"); parts.forEach((part) => { if (!part || part.trim() === "") { return; } const isRootCss = !part.includes("{"); if (isRootCss) { processedCSS += `:root :where(${blockSelector}){${part.trim()}}`; } else { const splitPart = part.replace("}", "").split("{"); if (splitPart.length !== 2) { return; } const [nestedSelector, cssValue] = splitPart; const matches = nestedSelector.match(/([>+~\s]*::[a-zA-Z-]+)/); const pseudoPart = matches ? matches[1] : ""; const withoutPseudoElement = matches ? nestedSelector.replace(pseudoPart, "").trim() : nestedSelector.trim(); let combinedSelector; if (withoutPseudoElement === "") { combinedSelector = blockSelector; } else { combinedSelector = nestedSelector.startsWith(" ") ? scopeSelector(blockSelector, withoutPseudoElement) : appendToSelector(blockSelector, withoutPseudoElement); } processedCSS += `:root :where(${combinedSelector})${pseudoPart}{${cssValue.trim()}}`; } }); return processedCSS; } function generateGlobalStyles(config2 = {}, blockTypes = [], options = {}) { const { hasBlockGapSupport: hasBlockGapSupportOption, hasFallbackGapSupport: hasFallbackGapSupportOption, disableLayoutStyles = false, disableRootPadding = false, styleOptions = {} } = options; const blocks = blockTypes.length > 0 ? blockTypes : (0, import_blocks3.getBlockTypes)(); const blockGap = getSetting(config2, "spacing.blockGap"); const hasBlockGapSupport = hasBlockGapSupportOption ?? blockGap !== null; const hasFallbackGapSupport = hasFallbackGapSupportOption ?? !hasBlockGapSupport; if (!config2?.styles || !config2?.settings) { return [[], {}]; } const updatedConfig = updateConfigWithSeparator(config2); const blockSelectors = getBlockSelectors(blocks); const customProperties = generateCustomProperties( updatedConfig, blockSelectors ); const globalStyles = transformToStyles( updatedConfig, blockSelectors, hasBlockGapSupport, hasFallbackGapSupport, disableLayoutStyles, disableRootPadding, styleOptions ); const svgs = generateSvgFilters(updatedConfig, blockSelectors); const styles = [ { css: customProperties, isGlobalStyles: true }, { css: globalStyles, isGlobalStyles: true }, // Load custom CSS in own stylesheet so that any invalid CSS entered in the input won't break all the global styles in the editor. { css: updatedConfig?.styles?.css ?? "", isGlobalStyles: true }, { assets: svgs, __unstableType: "svg", isGlobalStyles: true } ]; blocks.forEach((blockType) => { const blockStyles = updatedConfig?.styles?.blocks?.[blockType.name]; if (blockStyles?.css) { const selector2 = blockSelectors[blockType.name].selector; styles.push({ css: processCSSNesting(blockStyles.css, selector2), isGlobalStyles: true }); } }); return [styles, updatedConfig.settings]; } // packages/global-styles-ui/build-module/provider.mjs var import_element19 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/context.mjs var import_element18 = __toESM(require_element(), 1); var GlobalStylesContext = (0, import_element18.createContext)({ user: { styles: {}, settings: {} }, base: { styles: {}, settings: {} }, merged: { styles: {}, settings: {} }, onChange: () => { }, fontLibraryEnabled: false }); // packages/global-styles-ui/build-module/provider.mjs var import_jsx_runtime81 = __toESM(require_jsx_runtime(), 1); function GlobalStylesProvider({ children, value, baseValue, onChange, fontLibraryEnabled }) { const merged = (0, import_element19.useMemo)(() => { return mergeGlobalStyles(baseValue, value); }, [baseValue, value]); const contextValue = (0, import_element19.useMemo)( () => ({ user: value, base: baseValue, merged, onChange, fontLibraryEnabled }), [value, baseValue, merged, onChange, fontLibraryEnabled] ); return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(GlobalStylesContext.Provider, { value: contextValue, children }); } // packages/global-styles-ui/build-module/screen-root.mjs var import_components18 = __toESM(require_components(), 1); var import_i18n15 = __toESM(require_i18n(), 1); var import_data19 = __toESM(require_data(), 1); var import_core_data15 = __toESM(require_core_data(), 1); // packages/global-styles-ui/build-module/icon-with-current-color.mjs var import_jsx_runtime82 = __toESM(require_jsx_runtime(), 1); function IconWithCurrentColor({ className, ...props }) { return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)( icon_default, { className: clsx_default( className, "global-styles-ui-icon-with-current-color" ), ...props } ); } // packages/global-styles-ui/build-module/navigation-button.mjs var import_components12 = __toESM(require_components(), 1); var import_jsx_runtime83 = __toESM(require_jsx_runtime(), 1); function GenericNavigationButton({ icon, children, ...props }) { return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(import_components12.__experimentalItem, { ...props, children: [ icon && /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(import_components12.__experimentalHStack, { justify: "flex-start", children: [ /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(IconWithCurrentColor, { icon, size: 24 }), /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_components12.FlexItem, { children }) ] }), !icon && children ] }); } function NavigationButtonAsItem(props) { return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_components12.Navigator.Button, { as: GenericNavigationButton, ...props }); } // packages/global-styles-ui/build-module/root-menu.mjs var import_components13 = __toESM(require_components(), 1); var import_i18n13 = __toESM(require_i18n(), 1); var import_block_editor4 = __toESM(require_block_editor(), 1); // node_modules/colord/plugins/a11y.mjs var o2 = function(o3) { var t3 = o3 / 255; return t3 < 0.04045 ? t3 / 12.92 : Math.pow((t3 + 0.055) / 1.055, 2.4); }; var t2 = function(t3) { return 0.2126 * o2(t3.r) + 0.7152 * o2(t3.g) + 0.0722 * o2(t3.b); }; function a11y_default(o3) { o3.prototype.luminance = function() { return o4 = t2(this.rgba), void 0 === (r3 = 2) && (r3 = 0), void 0 === n2 && (n2 = Math.pow(10, r3)), Math.round(n2 * o4) / n2 + 0; var o4, r3, n2; }, o3.prototype.contrast = function(r3) { void 0 === r3 && (r3 = "#FFF"); var n2, a2, i2, e2, v2, u2, d2, c6 = r3 instanceof o3 ? r3 : new o3(r3); return e2 = this.rgba, v2 = c6.toRgb(), u2 = t2(e2), d2 = t2(v2), n2 = u2 > d2 ? (u2 + 0.05) / (d2 + 0.05) : (d2 + 0.05) / (u2 + 0.05), void 0 === (a2 = 2) && (a2 = 0), void 0 === i2 && (i2 = Math.pow(10, a2)), Math.floor(i2 * n2) / i2 + 0; }, o3.prototype.isReadable = function(o4, t3) { return void 0 === o4 && (o4 = "#FFF"), void 0 === t3 && (t3 = {}), this.contrast(o4) >= (e2 = void 0 === (i2 = (r3 = t3).size) ? "normal" : i2, "AAA" === (a2 = void 0 === (n2 = r3.level) ? "AA" : n2) && "normal" === e2 ? 7 : "AA" === a2 && "large" === e2 ? 3 : 4.5); var r3, n2, a2, i2, e2; }; } // packages/global-styles-ui/build-module/hooks.mjs var import_element20 = __toESM(require_element(), 1); var import_data18 = __toESM(require_data(), 1); var import_core_data14 = __toESM(require_core_data(), 1); var import_i18n12 = __toESM(require_i18n(), 1); // packages/global-styles-ui/build-module/utils.mjs function removePropertiesFromObject(object, properties) { if (!properties?.length) { return object; } if (typeof object !== "object" || !object || !Object.keys(object).length) { return object; } for (const key in object) { if (properties.includes(key)) { delete object[key]; } else if (typeof object[key] === "object") { removePropertiesFromObject(object[key], properties); } } return object; } var filterObjectByProperties = (object, properties) => { if (!object || !properties?.length) { return {}; } const newObject = {}; Object.keys(object).forEach((key) => { if (properties.includes(key)) { newObject[key] = object[key]; } else if (typeof object[key] === "object") { const newFilter = filterObjectByProperties( object[key], properties ); if (Object.keys(newFilter).length) { newObject[key] = newFilter; } } }); return newObject; }; function isVariationWithProperties(variation, properties) { const variationWithProperties = filterObjectByProperties( structuredClone(variation), properties ); return areGlobalStylesEqual(variationWithProperties, variation); } function getFontFamilyFromSetting(fontFamilies, setting) { if (!Array.isArray(fontFamilies) || !setting) { return null; } const fontFamilyVariable = setting.replace("var(", "").replace(")", ""); const fontFamilySlug = fontFamilyVariable?.split("--").slice(-1)[0]; return fontFamilies.find( (fontFamily) => fontFamily.slug === fontFamilySlug ); } function getFontFamilies(themeJson) { const themeFontFamilies = themeJson?.settings?.typography?.fontFamilies?.theme; const customFontFamilies = themeJson?.settings?.typography?.fontFamilies?.custom; let fontFamilies = []; if (themeFontFamilies && customFontFamilies) { fontFamilies = [...themeFontFamilies, ...customFontFamilies]; } else if (themeFontFamilies) { fontFamilies = themeFontFamilies; } else if (customFontFamilies) { fontFamilies = customFontFamilies; } const bodyFontFamilySetting = themeJson?.styles?.typography?.fontFamily; const bodyFontFamily = getFontFamilyFromSetting( fontFamilies, bodyFontFamilySetting ); const headingFontFamilySetting = themeJson?.styles?.elements?.heading?.typography?.fontFamily; let headingFontFamily; if (!headingFontFamilySetting) { headingFontFamily = bodyFontFamily; } else { headingFontFamily = getFontFamilyFromSetting( fontFamilies, themeJson?.styles?.elements?.heading?.typography?.fontFamily ); } return [bodyFontFamily, headingFontFamily]; } // packages/global-styles-ui/build-module/hooks.mjs k([a11y_default]); function useStyle2(path, blockName, readFrom = "merged", shouldDecodeEncode = true) { const { user, base, merged, onChange } = (0, import_element20.useContext)(GlobalStylesContext); let sourceValue = merged; if (readFrom === "base") { sourceValue = base; } else if (readFrom === "user") { sourceValue = user; } const styleValue = (0, import_element20.useMemo)( () => getStyle(sourceValue, path, blockName, shouldDecodeEncode), [sourceValue, path, blockName, shouldDecodeEncode] ); const setStyleValue = (0, import_element20.useCallback)( (newValue) => { const newGlobalStyles = setStyle( user, path, newValue, blockName ); onChange(newGlobalStyles); }, [user, onChange, path, blockName] ); return [styleValue, setStyleValue]; } function useSetting(path, blockName, readFrom = "merged") { const { user, base, merged, onChange } = (0, import_element20.useContext)(GlobalStylesContext); let sourceValue = merged; if (readFrom === "base") { sourceValue = base; } else if (readFrom === "user") { sourceValue = user; } const settingValue = (0, import_element20.useMemo)( () => getSetting(sourceValue, path, blockName), [sourceValue, path, blockName] ); const setSettingValue = (0, import_element20.useCallback)( (newValue) => { const newGlobalStyles = setSetting( user, path, newValue, blockName ); onChange(newGlobalStyles); }, [user, onChange, path, blockName] ); return [settingValue, setSettingValue]; } var EMPTY_ARRAY3 = []; function hasThemeVariation({ title, settings: settings2, styles }) { return title === (0, import_i18n12.__)("Default") || Object.keys(settings2 || {}).length > 0 || Object.keys(styles || {}).length > 0; } function useCurrentMergeThemeStyleVariationsWithUserConfig(properties = []) { const { variationsFromTheme } = (0, import_data18.useSelect)((select3) => { const _variationsFromTheme = select3( import_core_data14.store ).__experimentalGetCurrentThemeGlobalStylesVariations?.(); return { variationsFromTheme: _variationsFromTheme || EMPTY_ARRAY3 }; }, []); const { user: userVariation } = (0, import_element20.useContext)(GlobalStylesContext); return (0, import_element20.useMemo)(() => { const clonedUserVariation = structuredClone(userVariation); const userVariationWithoutProperties = removePropertiesFromObject( clonedUserVariation, properties ); userVariationWithoutProperties.title = (0, import_i18n12.__)("Default"); const variationsWithPropertiesAndBase = variationsFromTheme.filter((variation) => { return isVariationWithProperties(variation, properties); }).map((variation) => { return mergeGlobalStyles( userVariationWithoutProperties, variation ); }); const variationsByProperties = [ userVariationWithoutProperties, ...variationsWithPropertiesAndBase ]; return variationsByProperties?.length ? variationsByProperties.filter(hasThemeVariation) : []; }, [properties, userVariation, variationsFromTheme]); } // packages/global-styles-ui/build-module/lock-unlock.mjs var import_private_apis2 = __toESM(require_private_apis(), 1); var { lock: lock2, unlock: unlock2 } = (0, import_private_apis2.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", "@wordpress/global-styles-ui" ); // packages/global-styles-ui/build-module/root-menu.mjs var import_jsx_runtime84 = __toESM(require_jsx_runtime(), 1); var { useHasDimensionsPanel, useHasTypographyPanel, useHasColorPanel, useSettingsForBlockElement, useHasBackgroundPanel } = unlock2(import_block_editor4.privateApis); // packages/global-styles-ui/build-module/preview-styles.mjs var import_components17 = __toESM(require_components(), 1); // packages/global-styles-ui/build-module/preview-hooks.mjs function useStylesPreviewColors() { const [textColor = "black"] = useStyle2("color.text"); const [backgroundColor = "white"] = useStyle2("color.background"); const [headingColor = textColor] = useStyle2( "elements.h1.color.text" ); const [linkColor = headingColor] = useStyle2( "elements.link.color.text" ); const [buttonBackgroundColor = linkColor] = useStyle2( "elements.button.color.background" ); const [coreColors] = useSetting("color.palette.core") || []; const [themeColors] = useSetting("color.palette.theme") || []; const [customColors] = useSetting("color.palette.custom") || []; const paletteColors = (themeColors ?? []).concat(customColors ?? []).concat(coreColors ?? []); const textColorObject = paletteColors.filter( ({ color }) => color === textColor ); const buttonBackgroundColorObject = paletteColors.filter( ({ color }) => color === buttonBackgroundColor ); const highlightedColors = textColorObject.concat(buttonBackgroundColorObject).concat(paletteColors).filter( // we exclude these background color because it is already visible in the preview. ({ color }) => color !== backgroundColor ).slice(0, 2); return { paletteColors, highlightedColors }; } // packages/global-styles-ui/build-module/typography-example.mjs var import_element21 = __toESM(require_element(), 1); var import_components14 = __toESM(require_components(), 1); var import_i18n14 = __toESM(require_i18n(), 1); // packages/global-styles-ui/build-module/font-library/utils/preview-styles.mjs function findNearest(input, numbers) { if (numbers.length === 0) { return null; } numbers.sort((a2, b2) => Math.abs(input - a2) - Math.abs(input - b2)); return numbers[0]; } function extractFontWeights(fontFaces) { const result = []; fontFaces.forEach((face) => { const weights = String(face.fontWeight).split(" "); if (weights.length === 2) { const start2 = parseInt(weights[0]); const end = parseInt(weights[1]); for (let i2 = start2; i2 <= end; i2 += 100) { result.push(i2); } } else if (weights.length === 1) { result.push(parseInt(weights[0])); } }); return result; } function formatFontFamily(input) { const regex = /^(?!generic\([ a-zA-Z\-]+\)$)(?!^[a-zA-Z\-]+$).+/; const output = input.trim(); const formatItem = (item) => { item = item.trim(); if (item.match(regex)) { item = item.replace(/^["']|["']$/g, ""); return `"${item}"`; } return item; }; if (output.includes(",")) { return output.split(",").map(formatItem).filter((item) => item !== "").join(", "); } return formatItem(output); } function getFamilyPreviewStyle(family) { const style = { fontFamily: formatFontFamily(family.fontFamily) }; if (!("fontFace" in family) || !Array.isArray(family.fontFace)) { style.fontWeight = "400"; style.fontStyle = "normal"; return style; } if (family.fontFace) { const normalFaces = family.fontFace.filter( (face) => face?.fontStyle && face.fontStyle.toLowerCase() === "normal" ); if (normalFaces.length > 0) { style.fontStyle = "normal"; const normalWeights = extractFontWeights(normalFaces); const nearestWeight = findNearest(400, normalWeights); style.fontWeight = String(nearestWeight) || "400"; } else { style.fontStyle = family.fontFace.length && family.fontFace[0].fontStyle || "normal"; style.fontWeight = family.fontFace.length && String(family.fontFace[0].fontWeight) || "400"; } } return style; } // packages/global-styles-ui/build-module/typography-example.mjs var import_jsx_runtime85 = __toESM(require_jsx_runtime(), 1); function PreviewTypography({ fontSize, variation }) { const { base } = (0, import_element21.useContext)(GlobalStylesContext); let config2 = base; if (variation) { config2 = { ...base, ...variation }; } const [textColor] = useStyle2("color.text"); const [bodyFontFamilies, headingFontFamilies] = getFontFamilies(config2); const bodyPreviewStyle = bodyFontFamilies ? getFamilyPreviewStyle(bodyFontFamilies) : {}; const headingPreviewStyle = headingFontFamilies ? getFamilyPreviewStyle(headingFontFamilies) : {}; if (textColor) { bodyPreviewStyle.color = textColor; headingPreviewStyle.color = textColor; } if (fontSize) { bodyPreviewStyle.fontSize = fontSize; headingPreviewStyle.fontSize = fontSize; } return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)( import_components14.__unstableMotion.div, { animate: { scale: 1, opacity: 1 }, initial: { scale: 0.1, opacity: 0 }, transition: { delay: 0.3, type: "tween" }, style: { textAlign: "center", lineHeight: 1 }, children: [ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("span", { style: headingPreviewStyle, children: (0, import_i18n14._x)("A", "Uppercase letter A") }), /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("span", { style: bodyPreviewStyle, children: (0, import_i18n14._x)("a", "Lowercase letter A") }) ] } ); } // packages/global-styles-ui/build-module/highlighted-colors.mjs var import_components15 = __toESM(require_components(), 1); var import_jsx_runtime86 = __toESM(require_jsx_runtime(), 1); function HighlightedColors({ normalizedColorSwatchSize, ratio }) { const { highlightedColors } = useStylesPreviewColors(); const scaledSwatchSize = normalizedColorSwatchSize * ratio; return highlightedColors.map(({ slug, color }, index) => /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( import_components15.__unstableMotion.div, { style: { height: scaledSwatchSize, width: scaledSwatchSize, background: color, borderRadius: scaledSwatchSize / 2 }, animate: { scale: 1, opacity: 1 }, initial: { scale: 0.1, opacity: 0 }, transition: { delay: index === 1 ? 0.2 : 0.1 } }, `${slug}-${index}` )); } // packages/global-styles-ui/build-module/preview-wrapper.mjs var import_components16 = __toESM(require_components(), 1); var import_compose3 = __toESM(require_compose(), 1); var import_element22 = __toESM(require_element(), 1); var import_jsx_runtime87 = __toESM(require_jsx_runtime(), 1); var normalizedWidth = 248; var normalizedHeight = 152; var THROTTLE_OPTIONS = { leading: true, trailing: true }; function PreviewWrapper({ children, label, isFocused, withHoverView }) { const [backgroundColor = "white"] = useStyle2("color.background"); const [gradientValue] = useStyle2("color.gradient"); const disableMotion = (0, import_compose3.useReducedMotion)(); const [isHovered, setIsHovered] = (0, import_element22.useState)(false); const [containerResizeListener, { width }] = (0, import_compose3.useResizeObserver)(); const [throttledWidth, setThrottledWidthState] = (0, import_element22.useState)(width); const [ratioState, setRatioState] = (0, import_element22.useState)(); const setThrottledWidth = (0, import_compose3.useThrottle)( setThrottledWidthState, 250, THROTTLE_OPTIONS ); (0, import_element22.useLayoutEffect)(() => { if (width) { setThrottledWidth(width); } }, [width, setThrottledWidth]); (0, import_element22.useLayoutEffect)(() => { const newRatio = throttledWidth ? throttledWidth / normalizedWidth : 1; const ratioDiff = newRatio - (ratioState || 0); const isRatioDiffBigEnough = Math.abs(ratioDiff) > 0.1; if (isRatioDiffBigEnough || !ratioState) { setRatioState(newRatio); } }, [throttledWidth, ratioState]); const fallbackRatio = width ? width / normalizedWidth : 1; const ratio = ratioState ? ratioState : fallbackRatio; const isReady = !!width; return /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(import_jsx_runtime87.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("div", { style: { position: "relative" }, children: containerResizeListener }), isReady && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( "div", { className: "global-styles-ui-preview__wrapper", style: { height: normalizedHeight * ratio }, onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), tabIndex: -1, children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)( import_components16.__unstableMotion.div, { style: { height: normalizedHeight * ratio, width: "100%", background: gradientValue ?? backgroundColor, cursor: withHoverView ? "pointer" : void 0 }, initial: "start", animate: (isHovered || isFocused) && !disableMotion && label ? "hover" : "start", children: [].concat(children).map( (child, key) => child({ ratio, key }) ) } ) } ) ] }); } var preview_wrapper_default = PreviewWrapper; // packages/global-styles-ui/build-module/preview-styles.mjs var import_jsx_runtime88 = __toESM(require_jsx_runtime(), 1); var firstFrameVariants = { start: { scale: 1, opacity: 1 }, hover: { scale: 0, opacity: 0 } }; var midFrameVariants = { hover: { opacity: 1 }, start: { opacity: 0.5 } }; var secondFrameVariants = { hover: { scale: 1, opacity: 1 }, start: { scale: 0, opacity: 0 } }; function PreviewStyles({ label, isFocused, withHoverView, variation }) { const [fontWeight] = useStyle2("typography.fontWeight"); const [fontFamily = "serif"] = useStyle2( "typography.fontFamily" ); const [headingFontFamily = fontFamily] = useStyle2( "elements.h1.typography.fontFamily" ); const [headingFontWeight = fontWeight] = useStyle2( "elements.h1.typography.fontWeight" ); const [textColor = "black"] = useStyle2("color.text"); const [headingColor = textColor] = useStyle2( "elements.h1.color.text" ); const { paletteColors } = useStylesPreviewColors(); return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)( preview_wrapper_default, { label, isFocused, withHoverView, children: [ ({ ratio, key }) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( import_components17.__unstableMotion.div, { variants: firstFrameVariants, style: { height: "100%", overflow: "hidden" }, children: /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)( import_components17.__experimentalHStack, { spacing: 10 * ratio, justify: "center", style: { height: "100%", overflow: "hidden" }, children: [ /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( PreviewTypography, { fontSize: 65 * ratio, variation } ), /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_components17.__experimentalVStack, { spacing: 4 * ratio, children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( HighlightedColors, { normalizedColorSwatchSize: 32, ratio } ) }) ] } ) }, key ), ({ key }) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( import_components17.__unstableMotion.div, { variants: withHoverView ? midFrameVariants : void 0, style: { height: "100%", width: "100%", position: "absolute", top: 0, overflow: "hidden", filter: "blur(60px)", opacity: 0.1 }, children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( import_components17.__experimentalHStack, { spacing: 0, justify: "flex-start", style: { height: "100%", overflow: "hidden" }, children: paletteColors.slice(0, 4).map(({ color }, index) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( "div", { style: { height: "100%", background: color, flexGrow: 1 } }, index )) } ) }, key ), ({ ratio, key }) => /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( import_components17.__unstableMotion.div, { variants: secondFrameVariants, style: { height: "100%", width: "100%", overflow: "hidden", position: "absolute", top: 0 }, children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( import_components17.__experimentalVStack, { spacing: 3 * ratio, justify: "center", style: { height: "100%", overflow: "hidden", padding: 10 * ratio, boxSizing: "border-box" }, children: label && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( "div", { style: { fontSize: 40 * ratio, fontFamily: headingFontFamily, color: headingColor, fontWeight: headingFontWeight, lineHeight: "1em", textAlign: "center" }, children: label } ) } ) }, key ) ] } ); } var preview_styles_default = PreviewStyles; // packages/global-styles-ui/build-module/screen-root.mjs var import_jsx_runtime89 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-block-list.mjs var import_blocks5 = __toESM(require_blocks(), 1); var import_i18n17 = __toESM(require_i18n(), 1); var import_components21 = __toESM(require_components(), 1); var import_data21 = __toESM(require_data(), 1); var import_element23 = __toESM(require_element(), 1); var import_block_editor5 = __toESM(require_block_editor(), 1); var import_compose4 = __toESM(require_compose(), 1); var import_a11y2 = __toESM(require_a11y(), 1); // packages/global-styles-ui/build-module/variations/variations-panel.mjs var import_blocks4 = __toESM(require_blocks(), 1); var import_data20 = __toESM(require_data(), 1); var import_components19 = __toESM(require_components(), 1); var import_jsx_runtime90 = __toESM(require_jsx_runtime(), 1); function getFilteredBlockStyles(blockStyles, variations) { return blockStyles?.filter( (style) => style.source === "block" || variations.includes(style.name) ) || []; } function useBlockVariations(name2) { const blockStyles = (0, import_data20.useSelect)( (select3) => { const { getBlockStyles } = select3(import_blocks4.store); return getBlockStyles(name2); }, [name2] ); const [variations] = useStyle2("variations", name2); const variationNames = Object.keys(variations ?? {}); return getFilteredBlockStyles(blockStyles, variationNames); } // packages/global-styles-ui/build-module/screen-header.mjs var import_components20 = __toESM(require_components(), 1); var import_i18n16 = __toESM(require_i18n(), 1); var import_jsx_runtime91 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-block-list.mjs var import_jsx_runtime92 = __toESM(require_jsx_runtime(), 1); var { useHasDimensionsPanel: useHasDimensionsPanel2, useHasTypographyPanel: useHasTypographyPanel2, useHasBorderPanel, useSettingsForBlockElement: useSettingsForBlockElement2, useHasColorPanel: useHasColorPanel2 } = unlock2(import_block_editor5.privateApis); function useSortedBlockTypes() { const blockItems = (0, import_data21.useSelect)( (select3) => select3(import_blocks5.store).getBlockTypes(), [] ); const groupByType = (blocks, block) => { const { core, noncore } = blocks; const type = block.name.startsWith("core/") ? core : noncore; type.push(block); return blocks; }; const { core: coreItems, noncore: nonCoreItems } = blockItems.reduce( groupByType, { core: [], noncore: [] } ); return [...coreItems, ...nonCoreItems]; } function useBlockHasGlobalStyles(blockName) { const [rawSettings] = useSetting("", blockName); const settings2 = useSettingsForBlockElement2(rawSettings, blockName); const hasTypographyPanel = useHasTypographyPanel2(settings2); const hasColorPanel = useHasColorPanel2(settings2); const hasBorderPanel = useHasBorderPanel(settings2); const hasDimensionsPanel = useHasDimensionsPanel2(settings2); const hasLayoutPanel = hasBorderPanel || hasDimensionsPanel; const hasVariationsPanel = !!useBlockVariations(blockName)?.length; const hasGlobalStyles = hasTypographyPanel || hasColorPanel || hasLayoutPanel || hasVariationsPanel; return hasGlobalStyles; } function BlockMenuItem({ block }) { const hasBlockMenuItem = useBlockHasGlobalStyles(block.name); if (!hasBlockMenuItem) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( NavigationButtonAsItem, { path: "/blocks/" + encodeURIComponent(block.name), children: /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(import_components21.__experimentalHStack, { justify: "flex-start", children: [ /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(import_block_editor5.BlockIcon, { icon: block.icon }), /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(import_components21.FlexItem, { children: block.title }) ] }) } ); } function BlockList({ filterValue }) { const sortedBlockTypes = useSortedBlockTypes(); const debouncedSpeak = (0, import_compose4.useDebounce)(import_a11y2.speak, 500); const { isMatchingSearchTerm } = (0, import_data21.useSelect)(import_blocks5.store); const filteredBlockTypes = !filterValue ? sortedBlockTypes : sortedBlockTypes.filter( (blockType) => isMatchingSearchTerm(blockType, filterValue) ); const blockTypesListRef = (0, import_element23.useRef)(null); (0, import_element23.useEffect)(() => { if (!filterValue) { return; } const count = blockTypesListRef.current?.childElementCount || 0; const resultsFoundMessage = (0, import_i18n17.sprintf)( /* translators: %d: number of results. */ (0, import_i18n17._n)("%d result found.", "%d results found.", count), count ); debouncedSpeak(resultsFoundMessage, "polite"); }, [filterValue, debouncedSpeak]); return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( "div", { ref: blockTypesListRef, className: "global-styles-ui-block-types-item-list", role: "list", children: filteredBlockTypes.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(import_components21.__experimentalText, { align: "center", as: "p", children: (0, import_i18n17.__)("No blocks found.") }) : filteredBlockTypes.map((block) => /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( BlockMenuItem, { block }, "menu-itemblock-" + block.name )) } ); } var MemoizedBlockList = (0, import_element23.memo)(BlockList); // packages/global-styles-ui/build-module/screen-block.mjs var import_blocks7 = __toESM(require_blocks(), 1); var import_block_editor7 = __toESM(require_block_editor(), 1); var import_element25 = __toESM(require_element(), 1); var import_data22 = __toESM(require_data(), 1); var import_core_data16 = __toESM(require_core_data(), 1); var import_components24 = __toESM(require_components(), 1); var import_i18n18 = __toESM(require_i18n(), 1); // packages/global-styles-ui/build-module/block-preview-panel.mjs var import_block_editor6 = __toESM(require_block_editor(), 1); var import_blocks6 = __toESM(require_blocks(), 1); var import_components22 = __toESM(require_components(), 1); var import_element24 = __toESM(require_element(), 1); var import_jsx_runtime93 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/subtitle.mjs var import_components23 = __toESM(require_components(), 1); var import_jsx_runtime94 = __toESM(require_jsx_runtime(), 1); function Subtitle({ children, level = 2 }) { return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(import_components23.__experimentalHeading, { className: "global-styles-ui-subtitle", level, children }); } // packages/global-styles-ui/build-module/screen-block.mjs var import_jsx_runtime95 = __toESM(require_jsx_runtime(), 1); var { useHasDimensionsPanel: useHasDimensionsPanel3, useHasTypographyPanel: useHasTypographyPanel3, useHasBorderPanel: useHasBorderPanel2, useSettingsForBlockElement: useSettingsForBlockElement3, useHasColorPanel: useHasColorPanel3, useHasFiltersPanel, useHasImageSettingsPanel, useHasBackgroundPanel: useHasBackgroundPanel2, BackgroundPanel: StylesBackgroundPanel, BorderPanel: StylesBorderPanel, ColorPanel: StylesColorPanel, TypographyPanel: StylesTypographyPanel, DimensionsPanel: StylesDimensionsPanel, FiltersPanel: StylesFiltersPanel, ImageSettingsPanel, AdvancedPanel: StylesAdvancedPanel } = unlock2(import_block_editor7.privateApis); // packages/global-styles-ui/build-module/screen-typography.mjs var import_i18n32 = __toESM(require_i18n(), 1); var import_components44 = __toESM(require_components(), 1); var import_element36 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/screen-body.mjs var import_components25 = __toESM(require_components(), 1); var import_jsx_runtime96 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/typography-elements.mjs var import_i18n19 = __toESM(require_i18n(), 1); var import_components26 = __toESM(require_components(), 1); var import_jsx_runtime97 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/variations/variations-typography.mjs var import_components29 = __toESM(require_components(), 1); // packages/global-styles-ui/build-module/preview-typography.mjs var import_components27 = __toESM(require_components(), 1); var import_jsx_runtime98 = __toESM(require_jsx_runtime(), 1); var StylesPreviewTypography = ({ variation, isFocused, withHoverView }) => { return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)( preview_wrapper_default, { label: variation.title, isFocused, withHoverView, children: ({ ratio, key }) => /* @__PURE__ */ (0, import_jsx_runtime98.jsx)( import_components27.__experimentalHStack, { spacing: 10 * ratio, justify: "center", style: { height: "100%", overflow: "hidden" }, children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)( PreviewTypography, { variation, fontSize: 85 * ratio } ) }, key ) } ); }; var preview_typography_default = StylesPreviewTypography; // packages/global-styles-ui/build-module/variations/variation.mjs var import_components28 = __toESM(require_components(), 1); var import_element26 = __toESM(require_element(), 1); var import_keycodes3 = __toESM(require_keycodes(), 1); var import_i18n20 = __toESM(require_i18n(), 1); var import_jsx_runtime99 = __toESM(require_jsx_runtime(), 1); function Variation({ variation, children, isPill = false, properties, showTooltip = false }) { const [isFocused, setIsFocused] = (0, import_element26.useState)(false); const { base, user, onChange: setUserConfig } = (0, import_element26.useContext)(GlobalStylesContext); const context = (0, import_element26.useMemo)(() => { let merged = mergeGlobalStyles(base, variation); if (properties) { merged = filterObjectByProperties(merged, properties); } return { user: variation, base, merged, onChange: () => { } }; }, [variation, base, properties]); const selectVariation = () => setUserConfig(variation); const selectOnEnter = (event) => { if (event.keyCode === import_keycodes3.ENTER) { event.preventDefault(); selectVariation(); } }; const isActive = (0, import_element26.useMemo)( () => areGlobalStylesEqual(user, variation), [user, variation] ); let label = variation?.title; if (variation?.description) { label = (0, import_i18n20.sprintf)( /* translators: 1: variation title. 2: variation description. */ (0, import_i18n20._x)("%1$s (%2$s)", "variation label"), variation?.title, variation?.description ); } const content = /* @__PURE__ */ (0, import_jsx_runtime99.jsx)( "div", { className: clsx_default("global-styles-ui-variations_item", { "is-active": isActive }), role: "button", onClick: selectVariation, onKeyDown: selectOnEnter, tabIndex: 0, "aria-label": label, "aria-current": isActive, onFocus: () => setIsFocused(true), onBlur: () => setIsFocused(false), children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)( "div", { className: clsx_default("global-styles-ui-variations_item-preview", { "is-pill": isPill }), children: children(isFocused) } ) } ); return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(GlobalStylesContext.Provider, { value: context, children: showTooltip ? /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_components28.Tooltip, { text: variation?.title, children: content }) : content }); } // packages/global-styles-ui/build-module/variations/variations-typography.mjs var import_jsx_runtime100 = __toESM(require_jsx_runtime(), 1); var propertiesToFilter = ["typography"]; function TypographyVariations({ title, gap = 2 }) { const typographyVariations = useCurrentMergeThemeStyleVariationsWithUserConfig(propertiesToFilter); if (typographyVariations?.length <= 1) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(import_components29.__experimentalVStack, { spacing: 3, children: [ title && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Subtitle, { level: 3, children: title }), /* @__PURE__ */ (0, import_jsx_runtime100.jsx)( import_components29.__experimentalGrid, { columns: 3, gap, className: "global-styles-ui-style-variations-container", children: typographyVariations.map( (variation, index) => { return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)( Variation, { variation, properties: propertiesToFilter, showTooltip: true, children: () => /* @__PURE__ */ (0, import_jsx_runtime100.jsx)( preview_typography_default, { variation } ) }, index ); } ) } ) ] }); } // packages/global-styles-ui/build-module/font-families.mjs var import_i18n30 = __toESM(require_i18n(), 1); var import_components42 = __toESM(require_components(), 1); var import_element35 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/font-library/context.mjs var import_element27 = __toESM(require_element(), 1); var import_data23 = __toESM(require_data(), 1); var import_core_data18 = __toESM(require_core_data(), 1); var import_i18n22 = __toESM(require_i18n(), 1); // packages/global-styles-ui/build-module/font-library/api.mjs var import_api_fetch2 = __toESM(require_api_fetch(), 1); var import_core_data17 = __toESM(require_core_data(), 1); // packages/global-styles-ui/build-module/font-library/utils/index.mjs var import_components30 = __toESM(require_components(), 1); // packages/global-styles-ui/build-module/font-library/utils/constants.mjs var import_i18n21 = __toESM(require_i18n(), 1); var FONT_WEIGHTS = { 100: (0, import_i18n21._x)("Thin", "font weight"), 200: (0, import_i18n21._x)("Extra-light", "font weight"), 300: (0, import_i18n21._x)("Light", "font weight"), 400: (0, import_i18n21._x)("Normal", "font weight"), 500: (0, import_i18n21._x)("Medium", "font weight"), 600: (0, import_i18n21._x)("Semi-bold", "font weight"), 700: (0, import_i18n21._x)("Bold", "font weight"), 800: (0, import_i18n21._x)("Extra-bold", "font weight"), 900: (0, import_i18n21._x)("Black", "font weight") }; var FONT_STYLES = { normal: (0, import_i18n21._x)("Normal", "font style"), italic: (0, import_i18n21._x)("Italic", "font style") }; // packages/global-styles-ui/build-module/font-library/utils/index.mjs var { File } = window; var { kebabCase: kebabCase2 } = unlock2(import_components30.privateApis); // packages/global-styles-ui/build-module/font-library/context.mjs var import_jsx_runtime101 = __toESM(require_jsx_runtime(), 1); var FontLibraryContext = (0, import_element27.createContext)( {} ); FontLibraryContext.displayName = "FontLibraryContext"; // packages/global-styles-ui/build-module/font-library/modal.mjs var import_i18n28 = __toESM(require_i18n(), 1); var import_components40 = __toESM(require_components(), 1); var import_core_data21 = __toESM(require_core_data(), 1); var import_data25 = __toESM(require_data(), 1); // packages/global-styles-ui/build-module/font-library/installed-fonts.mjs var import_components34 = __toESM(require_components(), 1); var import_core_data19 = __toESM(require_core_data(), 1); var import_data24 = __toESM(require_data(), 1); var import_element30 = __toESM(require_element(), 1); var import_i18n24 = __toESM(require_i18n(), 1); // packages/global-styles-ui/build-module/font-library/font-card.mjs var import_i18n23 = __toESM(require_i18n(), 1); var import_components32 = __toESM(require_components(), 1); // packages/global-styles-ui/build-module/font-library/font-demo.mjs var import_components31 = __toESM(require_components(), 1); var import_element28 = __toESM(require_element(), 1); var import_jsx_runtime102 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-library/font-card.mjs var import_jsx_runtime103 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-library/library-font-variant.mjs var import_element29 = __toESM(require_element(), 1); var import_components33 = __toESM(require_components(), 1); var import_jsx_runtime104 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-library/installed-fonts.mjs var import_jsx_runtime105 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-library/font-collection.mjs var import_element32 = __toESM(require_element(), 1); var import_components37 = __toESM(require_components(), 1); var import_compose5 = __toESM(require_compose(), 1); var import_i18n26 = __toESM(require_i18n(), 1); var import_core_data20 = __toESM(require_core_data(), 1); // packages/global-styles-ui/build-module/font-library/google-fonts-confirm-dialog.mjs var import_i18n25 = __toESM(require_i18n(), 1); var import_components35 = __toESM(require_components(), 1); var import_jsx_runtime106 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-library/collection-font-variant.mjs var import_element31 = __toESM(require_element(), 1); var import_components36 = __toESM(require_components(), 1); var import_jsx_runtime107 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-library/font-collection.mjs var import_jsx_runtime108 = __toESM(require_jsx_runtime(), 1); var DEFAULT_CATEGORY = { slug: "all", name: (0, import_i18n26._x)("All", "font categories") }; // packages/global-styles-ui/build-module/font-library/upload-fonts.mjs var import_i18n27 = __toESM(require_i18n(), 1); var import_components39 = __toESM(require_components(), 1); var import_element33 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/font-library/lib/unbrotli.mjs var __require2 = /* @__PURE__ */ ((x2) => typeof __require !== "undefined" ? __require : typeof Proxy !== "undefined" ? new Proxy(x2, { get: (a2, b2) => (typeof __require !== "undefined" ? __require : a2)[b2] }) : x2)(function(x2) { if (typeof __require !== "undefined") return __require.apply(this, arguments); throw Error('Dynamic require of "' + x2 + '" is not supported'); }); var unbrotli_default = (function() { var define, module, exports; return (/* @__PURE__ */ (function() { function r3(e2, n2, t3) { function o3(i22, f2) { if (!n2[i22]) { if (!e2[i22]) { var c6 = "function" == typeof __require2 && __require2; if (!f2 && c6) return c6(i22, true); if (u2) return u2(i22, true); var a2 = new Error("Cannot find module '" + i22 + "'"); throw a2.code = "MODULE_NOT_FOUND", a2; } var p3 = n2[i22] = { exports: {} }; e2[i22][0].call( p3.exports, function(r22) { var n22 = e2[i22][1][r22]; return o3(n22 || r22); }, p3, p3.exports, r3, e2, n2, t3 ); } return n2[i22].exports; } for (var u2 = "function" == typeof __require2 && __require2, i2 = 0; i2 < t3.length; i2++) o3(t3[i2]); return o3; } return r3; })())( { 1: [ function(require2, module2, exports2) { var BROTLI_READ_SIZE = 4096; var BROTLI_IBUF_SIZE = 2 * BROTLI_READ_SIZE + 32; var BROTLI_IBUF_MASK = 2 * BROTLI_READ_SIZE - 1; var kBitMask = new Uint32Array([ 0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535, 131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215 ]); function BrotliBitReader(input) { this.buf_ = new Uint8Array(BROTLI_IBUF_SIZE); this.input_ = input; this.reset(); } BrotliBitReader.READ_SIZE = BROTLI_READ_SIZE; BrotliBitReader.IBUF_MASK = BROTLI_IBUF_MASK; BrotliBitReader.prototype.reset = function() { this.buf_ptr_ = 0; this.val_ = 0; this.pos_ = 0; this.bit_pos_ = 0; this.bit_end_pos_ = 0; this.eos_ = 0; this.readMoreInput(); for (var i2 = 0; i2 < 4; i2++) { this.val_ |= this.buf_[this.pos_] << 8 * i2; ++this.pos_; } return this.bit_end_pos_ > 0; }; BrotliBitReader.prototype.readMoreInput = function() { if (this.bit_end_pos_ > 256) { return; } else if (this.eos_) { if (this.bit_pos_ > this.bit_end_pos_) throw new Error( "Unexpected end of input " + this.bit_pos_ + " " + this.bit_end_pos_ ); } else { var dst = this.buf_ptr_; var bytes_read = this.input_.read( this.buf_, dst, BROTLI_READ_SIZE ); if (bytes_read < 0) { throw new Error("Unexpected end of input"); } if (bytes_read < BROTLI_READ_SIZE) { this.eos_ = 1; for (var p3 = 0; p3 < 32; p3++) this.buf_[dst + bytes_read + p3] = 0; } if (dst === 0) { for (var p3 = 0; p3 < 32; p3++) this.buf_[(BROTLI_READ_SIZE << 1) + p3] = this.buf_[p3]; this.buf_ptr_ = BROTLI_READ_SIZE; } else { this.buf_ptr_ = 0; } this.bit_end_pos_ += bytes_read << 3; } }; BrotliBitReader.prototype.fillBitWindow = function() { while (this.bit_pos_ >= 8) { this.val_ >>>= 8; this.val_ |= this.buf_[this.pos_ & BROTLI_IBUF_MASK] << 24; ++this.pos_; this.bit_pos_ = this.bit_pos_ - 8 >>> 0; this.bit_end_pos_ = this.bit_end_pos_ - 8 >>> 0; } }; BrotliBitReader.prototype.readBits = function(n_bits) { if (32 - this.bit_pos_ < n_bits) { this.fillBitWindow(); } var val = this.val_ >>> this.bit_pos_ & kBitMask[n_bits]; this.bit_pos_ += n_bits; return val; }; module2.exports = BrotliBitReader; }, {} ], 2: [ function(require2, module2, exports2) { var CONTEXT_LSB6 = 0; var CONTEXT_MSB6 = 1; var CONTEXT_UTF8 = 2; var CONTEXT_SIGNED = 3; exports2.lookup = new Uint8Array([ /* CONTEXT_UTF8, last byte. */ /* ASCII range. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12, 12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12, 12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12, 0, /* UTF8 continuation byte range. */ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, /* ASCII range. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0, /* UTF8 continuation byte range. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, /* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */ 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56, /* CONTEXT_LSB6, last byte. */ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, /* CONTEXT_MSB6, last byte. */ 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27, 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31, 32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35, 36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39, 40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43, 44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47, 48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51, 52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55, 56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59, 60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63, /* CONTEXT_{M,L}SB6, second last byte, */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]); exports2.lookupOffsets = new Uint16Array([ /* CONTEXT_LSB6 */ 1024, 1536, 1280, 1536, 0, 256, 768, 512 ]); }, {} ], 3: [ function(require2, module2, exports2) { var BrotliInput = require2("./streams").BrotliInput; var BrotliOutput = require2("./streams").BrotliOutput; var BrotliBitReader = require2("./bit_reader"); var BrotliDictionary = require2("./dictionary"); var HuffmanCode = require2("./huffman").HuffmanCode; var BrotliBuildHuffmanTable = require2("./huffman").BrotliBuildHuffmanTable; var Context = require2("./context"); var Prefix = require2("./prefix"); var Transform = require2("./transform"); var kDefaultCodeLength = 8; var kCodeLengthRepeatCode = 16; var kNumLiteralCodes = 256; var kNumInsertAndCopyCodes = 704; var kNumBlockLengthCodes = 26; var kLiteralContextBits = 6; var kDistanceContextBits = 2; var HUFFMAN_TABLE_BITS = 8; var HUFFMAN_TABLE_MASK = 255; var HUFFMAN_MAX_TABLE_SIZE = 1080; var CODE_LENGTH_CODES = 18; var kCodeLengthCodeOrder = new Uint8Array([ 1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15 ]); var NUM_DISTANCE_SHORT_CODES = 16; var kDistanceShortCodeIndexOffset = new Uint8Array([ 3, 2, 1, 0, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2 ]); var kDistanceShortCodeValueOffset = new Int8Array([ 0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3 ]); var kMaxHuffmanTableSize = new Uint16Array([ 256, 402, 436, 468, 500, 534, 566, 598, 630, 662, 694, 726, 758, 790, 822, 854, 886, 920, 952, 984, 1016, 1048, 1080 ]); function DecodeWindowBits(br) { var n2; if (br.readBits(1) === 0) { return 16; } n2 = br.readBits(3); if (n2 > 0) { return 17 + n2; } n2 = br.readBits(3); if (n2 > 0) { return 8 + n2; } return 17; } function DecodeVarLenUint8(br) { if (br.readBits(1)) { var nbits = br.readBits(3); if (nbits === 0) { return 1; } else { return br.readBits(nbits) + (1 << nbits); } } return 0; } function MetaBlockLength() { this.meta_block_length = 0; this.input_end = 0; this.is_uncompressed = 0; this.is_metadata = false; } function DecodeMetaBlockLength(br) { var out = new MetaBlockLength(); var size_nibbles; var size_bytes; var i2; out.input_end = br.readBits(1); if (out.input_end && br.readBits(1)) { return out; } size_nibbles = br.readBits(2) + 4; if (size_nibbles === 7) { out.is_metadata = true; if (br.readBits(1) !== 0) throw new Error("Invalid reserved bit"); size_bytes = br.readBits(2); if (size_bytes === 0) return out; for (i2 = 0; i2 < size_bytes; i2++) { var next_byte = br.readBits(8); if (i2 + 1 === size_bytes && size_bytes > 1 && next_byte === 0) throw new Error("Invalid size byte"); out.meta_block_length |= next_byte << i2 * 8; } } else { for (i2 = 0; i2 < size_nibbles; ++i2) { var next_nibble = br.readBits(4); if (i2 + 1 === size_nibbles && size_nibbles > 4 && next_nibble === 0) throw new Error("Invalid size nibble"); out.meta_block_length |= next_nibble << i2 * 4; } } ++out.meta_block_length; if (!out.input_end && !out.is_metadata) { out.is_uncompressed = br.readBits(1); } return out; } function ReadSymbol(table, index, br) { var start_index = index; var nbits; br.fillBitWindow(); index += br.val_ >>> br.bit_pos_ & HUFFMAN_TABLE_MASK; nbits = table[index].bits - HUFFMAN_TABLE_BITS; if (nbits > 0) { br.bit_pos_ += HUFFMAN_TABLE_BITS; index += table[index].value; index += br.val_ >>> br.bit_pos_ & (1 << nbits) - 1; } br.bit_pos_ += table[index].bits; return table[index].value; } function ReadHuffmanCodeLengths(code_length_code_lengths, num_symbols, code_lengths, br) { var symbol3 = 0; var prev_code_len = kDefaultCodeLength; var repeat = 0; var repeat_code_len = 0; var space = 32768; var table = []; for (var i2 = 0; i2 < 32; i2++) table.push(new HuffmanCode(0, 0)); BrotliBuildHuffmanTable( table, 0, 5, code_length_code_lengths, CODE_LENGTH_CODES ); while (symbol3 < num_symbols && space > 0) { var p3 = 0; var code_len; br.readMoreInput(); br.fillBitWindow(); p3 += br.val_ >>> br.bit_pos_ & 31; br.bit_pos_ += table[p3].bits; code_len = table[p3].value & 255; if (code_len < kCodeLengthRepeatCode) { repeat = 0; code_lengths[symbol3++] = code_len; if (code_len !== 0) { prev_code_len = code_len; space -= 32768 >> code_len; } } else { var extra_bits = code_len - 14; var old_repeat; var repeat_delta; var new_len = 0; if (code_len === kCodeLengthRepeatCode) { new_len = prev_code_len; } if (repeat_code_len !== new_len) { repeat = 0; repeat_code_len = new_len; } old_repeat = repeat; if (repeat > 0) { repeat -= 2; repeat <<= extra_bits; } repeat += br.readBits(extra_bits) + 3; repeat_delta = repeat - old_repeat; if (symbol3 + repeat_delta > num_symbols) { throw new Error( "[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols" ); } for (var x2 = 0; x2 < repeat_delta; x2++) code_lengths[symbol3 + x2] = repeat_code_len; symbol3 += repeat_delta; if (repeat_code_len !== 0) { space -= repeat_delta << 15 - repeat_code_len; } } } if (space !== 0) { throw new Error( "[ReadHuffmanCodeLengths] space = " + space ); } for (; symbol3 < num_symbols; symbol3++) code_lengths[symbol3] = 0; } function ReadHuffmanCode(alphabet_size, tables, table, br) { var table_size = 0; var simple_code_or_skip; var code_lengths = new Uint8Array(alphabet_size); br.readMoreInput(); simple_code_or_skip = br.readBits(2); if (simple_code_or_skip === 1) { var i2; var max_bits_counter = alphabet_size - 1; var max_bits = 0; var symbols = new Int32Array(4); var num_symbols = br.readBits(2) + 1; while (max_bits_counter) { max_bits_counter >>= 1; ++max_bits; } for (i2 = 0; i2 < num_symbols; ++i2) { symbols[i2] = br.readBits(max_bits) % alphabet_size; code_lengths[symbols[i2]] = 2; } code_lengths[symbols[0]] = 1; switch (num_symbols) { case 1: break; case 3: if (symbols[0] === symbols[1] || symbols[0] === symbols[2] || symbols[1] === symbols[2]) { throw new Error( "[ReadHuffmanCode] invalid symbols" ); } break; case 2: if (symbols[0] === symbols[1]) { throw new Error( "[ReadHuffmanCode] invalid symbols" ); } code_lengths[symbols[1]] = 1; break; case 4: if (symbols[0] === symbols[1] || symbols[0] === symbols[2] || symbols[0] === symbols[3] || symbols[1] === symbols[2] || symbols[1] === symbols[3] || symbols[2] === symbols[3]) { throw new Error( "[ReadHuffmanCode] invalid symbols" ); } if (br.readBits(1)) { code_lengths[symbols[2]] = 3; code_lengths[symbols[3]] = 3; } else { code_lengths[symbols[0]] = 2; } break; } } else { var i2; var code_length_code_lengths = new Uint8Array( CODE_LENGTH_CODES ); var space = 32; var num_codes = 0; var huff = [ new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2), new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 1), new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2), new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 5) ]; for (i2 = simple_code_or_skip; i2 < CODE_LENGTH_CODES && space > 0; ++i2) { var code_len_idx = kCodeLengthCodeOrder[i2]; var p3 = 0; var v2; br.fillBitWindow(); p3 += br.val_ >>> br.bit_pos_ & 15; br.bit_pos_ += huff[p3].bits; v2 = huff[p3].value; code_length_code_lengths[code_len_idx] = v2; if (v2 !== 0) { space -= 32 >> v2; ++num_codes; } } if (!(num_codes === 1 || space === 0)) throw new Error( "[ReadHuffmanCode] invalid num_codes or space" ); ReadHuffmanCodeLengths( code_length_code_lengths, alphabet_size, code_lengths, br ); } table_size = BrotliBuildHuffmanTable( tables, table, HUFFMAN_TABLE_BITS, code_lengths, alphabet_size ); if (table_size === 0) { throw new Error( "[ReadHuffmanCode] BuildHuffmanTable failed: " ); } return table_size; } function ReadBlockLength(table, index, br) { var code; var nbits; code = ReadSymbol(table, index, br); nbits = Prefix.kBlockLengthPrefixCode[code].nbits; return Prefix.kBlockLengthPrefixCode[code].offset + br.readBits(nbits); } function TranslateShortCodes(code, ringbuffer, index) { var val; if (code < NUM_DISTANCE_SHORT_CODES) { index += kDistanceShortCodeIndexOffset[code]; index &= 3; val = ringbuffer[index] + kDistanceShortCodeValueOffset[code]; } else { val = code - NUM_DISTANCE_SHORT_CODES + 1; } return val; } function MoveToFront(v2, index) { var value = v2[index]; var i2 = index; for (; i2; --i2) v2[i2] = v2[i2 - 1]; v2[0] = value; } function InverseMoveToFrontTransform(v2, v_len) { var mtf = new Uint8Array(256); var i2; for (i2 = 0; i2 < 256; ++i2) { mtf[i2] = i2; } for (i2 = 0; i2 < v_len; ++i2) { var index = v2[i2]; v2[i2] = mtf[index]; if (index) MoveToFront(mtf, index); } } function HuffmanTreeGroup(alphabet_size, num_htrees) { this.alphabet_size = alphabet_size; this.num_htrees = num_htrees; this.codes = new Array( num_htrees + num_htrees * kMaxHuffmanTableSize[alphabet_size + 31 >>> 5] ); this.htrees = new Uint32Array(num_htrees); } HuffmanTreeGroup.prototype.decode = function(br) { var i2; var table_size; var next = 0; for (i2 = 0; i2 < this.num_htrees; ++i2) { this.htrees[i2] = next; table_size = ReadHuffmanCode( this.alphabet_size, this.codes, next, br ); next += table_size; } }; function DecodeContextMap(context_map_size, br) { var out = { num_htrees: null, context_map: null }; var use_rle_for_zeros; var max_run_length_prefix = 0; var table; var i2; br.readMoreInput(); var num_htrees = out.num_htrees = DecodeVarLenUint8(br) + 1; var context_map = out.context_map = new Uint8Array( context_map_size ); if (num_htrees <= 1) { return out; } use_rle_for_zeros = br.readBits(1); if (use_rle_for_zeros) { max_run_length_prefix = br.readBits(4) + 1; } table = []; for (i2 = 0; i2 < HUFFMAN_MAX_TABLE_SIZE; i2++) { table[i2] = new HuffmanCode(0, 0); } ReadHuffmanCode( num_htrees + max_run_length_prefix, table, 0, br ); for (i2 = 0; i2 < context_map_size; ) { var code; br.readMoreInput(); code = ReadSymbol(table, 0, br); if (code === 0) { context_map[i2] = 0; ++i2; } else if (code <= max_run_length_prefix) { var reps = 1 + (1 << code) + br.readBits(code); while (--reps) { if (i2 >= context_map_size) { throw new Error( "[DecodeContextMap] i >= context_map_size" ); } context_map[i2] = 0; ++i2; } } else { context_map[i2] = code - max_run_length_prefix; ++i2; } } if (br.readBits(1)) { InverseMoveToFrontTransform( context_map, context_map_size ); } return out; } function DecodeBlockType(max_block_type, trees, tree_type, block_types, ringbuffers, indexes, br) { var ringbuffer = tree_type * 2; var index = tree_type; var type_code = ReadSymbol( trees, tree_type * HUFFMAN_MAX_TABLE_SIZE, br ); var block_type; if (type_code === 0) { block_type = ringbuffers[ringbuffer + (indexes[index] & 1)]; } else if (type_code === 1) { block_type = ringbuffers[ringbuffer + (indexes[index] - 1 & 1)] + 1; } else { block_type = type_code - 2; } if (block_type >= max_block_type) { block_type -= max_block_type; } block_types[tree_type] = block_type; ringbuffers[ringbuffer + (indexes[index] & 1)] = block_type; ++indexes[index]; } function CopyUncompressedBlockToOutput(output, len, pos, ringbuffer, ringbuffer_mask, br) { var rb_size = ringbuffer_mask + 1; var rb_pos = pos & ringbuffer_mask; var br_pos = br.pos_ & BrotliBitReader.IBUF_MASK; var nbytes; if (len < 8 || br.bit_pos_ + (len << 3) < br.bit_end_pos_) { while (len-- > 0) { br.readMoreInput(); ringbuffer[rb_pos++] = br.readBits(8); if (rb_pos === rb_size) { output.write(ringbuffer, rb_size); rb_pos = 0; } } return; } if (br.bit_end_pos_ < 32) { throw new Error( "[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32" ); } while (br.bit_pos_ < 32) { ringbuffer[rb_pos] = br.val_ >>> br.bit_pos_; br.bit_pos_ += 8; ++rb_pos; --len; } nbytes = br.bit_end_pos_ - br.bit_pos_ >> 3; if (br_pos + nbytes > BrotliBitReader.IBUF_MASK) { var tail = BrotliBitReader.IBUF_MASK + 1 - br_pos; for (var x2 = 0; x2 < tail; x2++) ringbuffer[rb_pos + x2] = br.buf_[br_pos + x2]; nbytes -= tail; rb_pos += tail; len -= tail; br_pos = 0; } for (var x2 = 0; x2 < nbytes; x2++) ringbuffer[rb_pos + x2] = br.buf_[br_pos + x2]; rb_pos += nbytes; len -= nbytes; if (rb_pos >= rb_size) { output.write(ringbuffer, rb_size); rb_pos -= rb_size; for (var x2 = 0; x2 < rb_pos; x2++) ringbuffer[x2] = ringbuffer[rb_size + x2]; } while (rb_pos + len >= rb_size) { nbytes = rb_size - rb_pos; if (br.input_.read(ringbuffer, rb_pos, nbytes) < nbytes) { throw new Error( "[CopyUncompressedBlockToOutput] not enough bytes" ); } output.write(ringbuffer, rb_size); len -= nbytes; rb_pos = 0; } if (br.input_.read(ringbuffer, rb_pos, len) < len) { throw new Error( "[CopyUncompressedBlockToOutput] not enough bytes" ); } br.reset(); } function JumpToByteBoundary(br) { var new_bit_pos = br.bit_pos_ + 7 & ~7; var pad_bits = br.readBits(new_bit_pos - br.bit_pos_); return pad_bits == 0; } function BrotliDecompressedSize(buffer) { var input = new BrotliInput(buffer); var br = new BrotliBitReader(input); DecodeWindowBits(br); var out = DecodeMetaBlockLength(br); return out.meta_block_length; } exports2.BrotliDecompressedSize = BrotliDecompressedSize; function BrotliDecompressBuffer(buffer, output_size) { var input = new BrotliInput(buffer); if (output_size == null) { output_size = BrotliDecompressedSize(buffer); } var output_buffer = new Uint8Array(output_size); var output = new BrotliOutput(output_buffer); BrotliDecompress(input, output); if (output.pos < output.buffer.length) { output.buffer = output.buffer.subarray( 0, output.pos ); } return output.buffer; } exports2.BrotliDecompressBuffer = BrotliDecompressBuffer; function BrotliDecompress(input, output) { var i2; var pos = 0; var input_end = 0; var window_bits = 0; var max_backward_distance; var max_distance = 0; var ringbuffer_size; var ringbuffer_mask; var ringbuffer; var ringbuffer_end; var dist_rb = [16, 15, 11, 4]; var dist_rb_idx = 0; var prev_byte1 = 0; var prev_byte2 = 0; var hgroup = [ new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0) ]; var block_type_trees; var block_len_trees; var br; var kRingBufferWriteAheadSlack = 128 + BrotliBitReader.READ_SIZE; br = new BrotliBitReader(input); window_bits = DecodeWindowBits(br); max_backward_distance = (1 << window_bits) - 16; ringbuffer_size = 1 << window_bits; ringbuffer_mask = ringbuffer_size - 1; ringbuffer = new Uint8Array( ringbuffer_size + kRingBufferWriteAheadSlack + BrotliDictionary.maxDictionaryWordLength ); ringbuffer_end = ringbuffer_size; block_type_trees = []; block_len_trees = []; for (var x2 = 0; x2 < 3 * HUFFMAN_MAX_TABLE_SIZE; x2++) { block_type_trees[x2] = new HuffmanCode(0, 0); block_len_trees[x2] = new HuffmanCode(0, 0); } while (!input_end) { var meta_block_remaining_len = 0; var is_uncompressed; var block_length = [1 << 28, 1 << 28, 1 << 28]; var block_type = [0]; var num_block_types = [1, 1, 1]; var block_type_rb = [0, 1, 0, 1, 0, 1]; var block_type_rb_index = [0]; var distance_postfix_bits; var num_direct_distance_codes; var distance_postfix_mask; var num_distance_codes; var context_map = null; var context_modes = null; var num_literal_htrees; var dist_context_map = null; var num_dist_htrees; var context_offset = 0; var context_map_slice = null; var literal_htree_index = 0; var dist_context_offset = 0; var dist_context_map_slice = null; var dist_htree_index = 0; var context_lookup_offset1 = 0; var context_lookup_offset2 = 0; var context_mode; var htree_command; for (i2 = 0; i2 < 3; ++i2) { hgroup[i2].codes = null; hgroup[i2].htrees = null; } br.readMoreInput(); var _out = DecodeMetaBlockLength(br); meta_block_remaining_len = _out.meta_block_length; if (pos + meta_block_remaining_len > output.buffer.length) { var tmp = new Uint8Array( pos + meta_block_remaining_len ); tmp.set(output.buffer); output.buffer = tmp; } input_end = _out.input_end; is_uncompressed = _out.is_uncompressed; if (_out.is_metadata) { JumpToByteBoundary(br); for (; meta_block_remaining_len > 0; --meta_block_remaining_len) { br.readMoreInput(); br.readBits(8); } continue; } if (meta_block_remaining_len === 0) { continue; } if (is_uncompressed) { br.bit_pos_ = br.bit_pos_ + 7 & ~7; CopyUncompressedBlockToOutput( output, meta_block_remaining_len, pos, ringbuffer, ringbuffer_mask, br ); pos += meta_block_remaining_len; continue; } for (i2 = 0; i2 < 3; ++i2) { num_block_types[i2] = DecodeVarLenUint8(br) + 1; if (num_block_types[i2] >= 2) { ReadHuffmanCode( num_block_types[i2] + 2, block_type_trees, i2 * HUFFMAN_MAX_TABLE_SIZE, br ); ReadHuffmanCode( kNumBlockLengthCodes, block_len_trees, i2 * HUFFMAN_MAX_TABLE_SIZE, br ); block_length[i2] = ReadBlockLength( block_len_trees, i2 * HUFFMAN_MAX_TABLE_SIZE, br ); block_type_rb_index[i2] = 1; } } br.readMoreInput(); distance_postfix_bits = br.readBits(2); num_direct_distance_codes = NUM_DISTANCE_SHORT_CODES + (br.readBits(4) << distance_postfix_bits); distance_postfix_mask = (1 << distance_postfix_bits) - 1; num_distance_codes = num_direct_distance_codes + (48 << distance_postfix_bits); context_modes = new Uint8Array( num_block_types[0] ); for (i2 = 0; i2 < num_block_types[0]; ++i2) { br.readMoreInput(); context_modes[i2] = br.readBits(2) << 1; } var _o1 = DecodeContextMap( num_block_types[0] << kLiteralContextBits, br ); num_literal_htrees = _o1.num_htrees; context_map = _o1.context_map; var _o2 = DecodeContextMap( num_block_types[2] << kDistanceContextBits, br ); num_dist_htrees = _o2.num_htrees; dist_context_map = _o2.context_map; hgroup[0] = new HuffmanTreeGroup( kNumLiteralCodes, num_literal_htrees ); hgroup[1] = new HuffmanTreeGroup( kNumInsertAndCopyCodes, num_block_types[1] ); hgroup[2] = new HuffmanTreeGroup( num_distance_codes, num_dist_htrees ); for (i2 = 0; i2 < 3; ++i2) { hgroup[i2].decode(br); } context_map_slice = 0; dist_context_map_slice = 0; context_mode = context_modes[block_type[0]]; context_lookup_offset1 = Context.lookupOffsets[context_mode]; context_lookup_offset2 = Context.lookupOffsets[context_mode + 1]; htree_command = hgroup[1].htrees[0]; while (meta_block_remaining_len > 0) { var cmd_code; var range_idx; var insert_code; var copy_code; var insert_length; var copy_length; var distance_code; var distance; var context; var j2; var copy_dst; br.readMoreInput(); if (block_length[1] === 0) { DecodeBlockType( num_block_types[1], block_type_trees, 1, block_type, block_type_rb, block_type_rb_index, br ); block_length[1] = ReadBlockLength( block_len_trees, HUFFMAN_MAX_TABLE_SIZE, br ); htree_command = hgroup[1].htrees[block_type[1]]; } --block_length[1]; cmd_code = ReadSymbol( hgroup[1].codes, htree_command, br ); range_idx = cmd_code >> 6; if (range_idx >= 2) { range_idx -= 2; distance_code = -1; } else { distance_code = 0; } insert_code = Prefix.kInsertRangeLut[range_idx] + (cmd_code >> 3 & 7); copy_code = Prefix.kCopyRangeLut[range_idx] + (cmd_code & 7); insert_length = Prefix.kInsertLengthPrefixCode[insert_code].offset + br.readBits( Prefix.kInsertLengthPrefixCode[insert_code].nbits ); copy_length = Prefix.kCopyLengthPrefixCode[copy_code].offset + br.readBits( Prefix.kCopyLengthPrefixCode[copy_code].nbits ); prev_byte1 = ringbuffer[pos - 1 & ringbuffer_mask]; prev_byte2 = ringbuffer[pos - 2 & ringbuffer_mask]; for (j2 = 0; j2 < insert_length; ++j2) { br.readMoreInput(); if (block_length[0] === 0) { DecodeBlockType( num_block_types[0], block_type_trees, 0, block_type, block_type_rb, block_type_rb_index, br ); block_length[0] = ReadBlockLength( block_len_trees, 0, br ); context_offset = block_type[0] << kLiteralContextBits; context_map_slice = context_offset; context_mode = context_modes[block_type[0]]; context_lookup_offset1 = Context.lookupOffsets[context_mode]; context_lookup_offset2 = Context.lookupOffsets[context_mode + 1]; } context = Context.lookup[context_lookup_offset1 + prev_byte1] | Context.lookup[context_lookup_offset2 + prev_byte2]; literal_htree_index = context_map[context_map_slice + context]; --block_length[0]; prev_byte2 = prev_byte1; prev_byte1 = ReadSymbol( hgroup[0].codes, hgroup[0].htrees[literal_htree_index], br ); ringbuffer[pos & ringbuffer_mask] = prev_byte1; if ((pos & ringbuffer_mask) === ringbuffer_mask) { output.write( ringbuffer, ringbuffer_size ); } ++pos; } meta_block_remaining_len -= insert_length; if (meta_block_remaining_len <= 0) break; if (distance_code < 0) { var context; br.readMoreInput(); if (block_length[2] === 0) { DecodeBlockType( num_block_types[2], block_type_trees, 2, block_type, block_type_rb, block_type_rb_index, br ); block_length[2] = ReadBlockLength( block_len_trees, 2 * HUFFMAN_MAX_TABLE_SIZE, br ); dist_context_offset = block_type[2] << kDistanceContextBits; dist_context_map_slice = dist_context_offset; } --block_length[2]; context = (copy_length > 4 ? 3 : copy_length - 2) & 255; dist_htree_index = dist_context_map[dist_context_map_slice + context]; distance_code = ReadSymbol( hgroup[2].codes, hgroup[2].htrees[dist_htree_index], br ); if (distance_code >= num_direct_distance_codes) { var nbits; var postfix; var offset; distance_code -= num_direct_distance_codes; postfix = distance_code & distance_postfix_mask; distance_code >>= distance_postfix_bits; nbits = (distance_code >> 1) + 1; offset = (2 + (distance_code & 1) << nbits) - 4; distance_code = num_direct_distance_codes + (offset + br.readBits(nbits) << distance_postfix_bits) + postfix; } } distance = TranslateShortCodes( distance_code, dist_rb, dist_rb_idx ); if (distance < 0) { throw new Error( "[BrotliDecompress] invalid distance" ); } if (pos < max_backward_distance && max_distance !== max_backward_distance) { max_distance = pos; } else { max_distance = max_backward_distance; } copy_dst = pos & ringbuffer_mask; if (distance > max_distance) { if (copy_length >= BrotliDictionary.minDictionaryWordLength && copy_length <= BrotliDictionary.maxDictionaryWordLength) { var offset = BrotliDictionary.offsetsByLength[copy_length]; var word_id = distance - max_distance - 1; var shift = BrotliDictionary.sizeBitsByLength[copy_length]; var mask = (1 << shift) - 1; var word_idx = word_id & mask; var transform_idx = word_id >> shift; offset += word_idx * copy_length; if (transform_idx < Transform.kNumTransforms) { var len = Transform.transformDictionaryWord( ringbuffer, copy_dst, offset, copy_length, transform_idx ); copy_dst += len; pos += len; meta_block_remaining_len -= len; if (copy_dst >= ringbuffer_end) { output.write( ringbuffer, ringbuffer_size ); for (var _x24 = 0; _x24 < copy_dst - ringbuffer_end; _x24++) ringbuffer[_x24] = ringbuffer[ringbuffer_end + _x24]; } } else { throw new Error( "Invalid backward reference. pos: " + pos + " distance: " + distance + " len: " + copy_length + " bytes left: " + meta_block_remaining_len ); } } else { throw new Error( "Invalid backward reference. pos: " + pos + " distance: " + distance + " len: " + copy_length + " bytes left: " + meta_block_remaining_len ); } } else { if (distance_code > 0) { dist_rb[dist_rb_idx & 3] = distance; ++dist_rb_idx; } if (copy_length > meta_block_remaining_len) { throw new Error( "Invalid backward reference. pos: " + pos + " distance: " + distance + " len: " + copy_length + " bytes left: " + meta_block_remaining_len ); } for (j2 = 0; j2 < copy_length; ++j2) { ringbuffer[pos & ringbuffer_mask] = ringbuffer[pos - distance & ringbuffer_mask]; if ((pos & ringbuffer_mask) === ringbuffer_mask) { output.write( ringbuffer, ringbuffer_size ); } ++pos; --meta_block_remaining_len; } } prev_byte1 = ringbuffer[pos - 1 & ringbuffer_mask]; prev_byte2 = ringbuffer[pos - 2 & ringbuffer_mask]; } pos &= 1073741823; } output.write(ringbuffer, pos & ringbuffer_mask); } exports2.BrotliDecompress = BrotliDecompress; BrotliDictionary.init(); }, { "./bit_reader": 1, "./context": 2, "./dictionary": 6, "./huffman": 7, "./prefix": 9, "./streams": 10, "./transform": 11 } ], 4: [ function(require2, module2, exports2) { var base64 = require2("base64-js"); exports2.init = function() { var BrotliDecompressBuffer = require2("./decode").BrotliDecompressBuffer; var compressed = base64.toByteArray( require2("./dictionary.bin.js") ); return BrotliDecompressBuffer(compressed); }; }, { "./decode": 3, "./dictionary.bin.js": 5, "base64-js": 8 } ], 5: [ function(require2, module2, exports2) { module2.exports = "W5/fcQLn5gKf2XUbAiQ1XULX+TZz6ADToDsgqk6qVfeC0e4m6OO2wcQ1J76ZBVRV1fRkEsdu//62zQsFEZWSTCnMhcsQKlS2qOhuVYYMGCkV0fXWEoMFbESXrKEZ9wdUEsyw9g4bJlEt1Y6oVMxMRTEVbCIwZzJzboK5j8m4YH02qgXYhv1V+PM435sLVxyHJihaJREEhZGqL03txGFQLm76caGO/ovxKvzCby/3vMTtX/459f0igi7WutnKiMQ6wODSoRh/8Lx1V3Q99MvKtwB6bHdERYRY0hStJoMjNeTsNX7bn+Y7e4EQ3bf8xBc7L0BsyfFPK43dGSXpL6clYC/I328h54/VYrQ5i0648FgbGtl837svJ35L3Mot/+nPlNpWgKx1gGXQYqX6n+bbZ7wuyCHKcUok12Xjqub7NXZGzqBx0SD+uziNf87t7ve42jxSKQoW3nyxVrWIGlFShhCKxjpZZ5MeGna0+lBkk+kaN8F9qFBAFgEogyMBdcX/T1W/WnMOi/7ycWUQloEBKGeC48MkiwqJkJO+12eQiOFHMmck6q/IjWW3RZlany23TBm+cNr/84/oi5GGmGBZWrZ6j+zykVozz5fT/QH/Da6WTbZYYPynVNO7kxzuNN2kxKKWche5WveitPKAecB8YcAHz/+zXLjcLzkdDSktNIDwZE9J9X+tto43oJy65wApM3mDzYtCwX9lM+N5VR3kXYo0Z3t0TtXfgBFg7gU8oN0Dgl7fZlUbhNll+0uuohRVKjrEd8egrSndy5/Tgd2gqjA4CAVuC7ESUmL3DZoGnfhQV8uwnpi8EGvAVVsowNRxPudck7+oqAUDkwZopWqFnW1riss0t1z6iCISVKreYGNvQcXv+1L9+jbP8cd/dPUiqBso2q+7ZyFBvENCkkVr44iyPbtOoOoCecWsiuqMSML5lv+vN5MzUr+Dnh73G7Q1YnRYJVYXHRJaNAOByiaK6CusgFdBPE40r0rvqXV7tksKO2DrHYXBTv8P5ysqxEx8VDXUDDqkPH6NNOV/a2WH8zlkXRELSa8P+heNyJBBP7PgsG1EtWtNef6/i+lcayzQwQCsduidpbKfhWUDgAEmyhGu/zVTacI6RS0zTABrOYueemnVa19u9fT23N/Ta6RvTpof5DWygqreCqrDAgM4LID1+1T/taU6yTFVLqXOv+/MuQOFnaF8vLMKD7tKWDoBdALgxF33zQccCcdHx8fKIVdW69O7qHtXpeGr9jbbpFA+qRMWr5hp0s67FPc7HAiLV0g0/peZlW7hJPYEhZyhpSwahnf93/tZgfqZWXFdmdXBzqxGHLrQKxoAY6fRoBhgCRPmmGueYZ5JexTVDKUIXzkG/fqp/0U3hAgQdJ9zumutK6nqWbaqvm1pgu03IYR+G+8s0jDBBz8cApZFSBeuWasyqo2OMDKAZCozS+GWSvL/HsE9rHxooe17U3s/lTE+VZAk4j3dp6uIGaC0JMiqR5CUsabPyM0dOYDR7Ea7ip4USZlya38YfPtvrX/tBlhHilj55nZ1nfN24AOAi9BVtz/Mbn8AEDJCqJgsVUa6nQnSxv2Fs7l/NlCzpfYEjmPrNyib/+t0ei2eEMjvNhLkHCZlci4WhBe7ePZTmzYqlY9+1pxtS4GB+5lM1BHT9tS270EWUDYFq1I0yY/fNiAk4bk9yBgmef/f2k6AlYQZHsNFnW8wBQxCd68iWv7/35bXfz3JZmfGligWAKRjIs3IpzxQ27vAglHSiOzCYzJ9L9A1CdiyFvyR66ucA4jKifu5ehwER26yV7HjKqn5Mfozo7Coxxt8LWWPT47BeMxX8p0Pjb7hZn+6bw7z3Lw+7653j5sI8CLu5kThpMlj1m4c2ch3jGcP1FsT13vuK3qjecKTZk2kHcOZY40UX+qdaxstZqsqQqgXz+QGF99ZJLqr3VYu4aecl1Ab5GmqS8k/GV5b95zxQ5d4EfXUJ6kTS/CXF/aiqKDOT1T7Jz5z0PwDUcwr9clLN1OJGCiKfqvah+h3XzrBOiLOW8wvn8gW6qE8vPxi+Efv+UH55T7PQFVMh6cZ1pZQlzJpKZ7P7uWvwPGJ6DTlR6wbyj3Iv2HyefnRo/dv7dNx+qaa0N38iBsR++Uil7Wd4afwDNsrzDAK4fXZwvEY/jdKuIKXlfrQd2C39dW7ntnRbIp9OtGy9pPBn/V2ASoi/2UJZfS+xuGLH8bnLuPlzdTNS6zdyk8Dt/h6sfOW5myxh1f+zf3zZ3MX/mO9cQPp5pOx967ZA6/pqHvclNfnUFF+rq+Vd7alKr6KWPcIDhpn6v2K6NlUu6LrKo8b/pYpU/Gazfvtwhn7tEOUuXht5rUJdSf6sLjYf0VTYDgwJ81yaqKTUYej/tbHckSRb/HZicwGJqh1mAHB/IuNs9dc9yuvF3D5Xocm3elWFdq5oEy70dYFit79yaLiNjPj5UUcVmZUVhQEhW5V2Z6Cm4HVH/R8qlamRYwBileuh07CbEce3TXa2JmXWBf+ozt319psboobeZhVnwhMZzOeQJzhpTDbP71Tv8HuZxxUI/+ma3XW6DFDDs4+qmpERwHGBd2edxwUKlODRdUWZ/g0GOezrbzOZauFMai4QU6GVHV6aPNBiBndHSsV4IzpvUiiYyg6OyyrL4Dj5q/Lw3N5kAwftEVl9rNd7Jk5PDij2hTH6wIXnsyXkKePxbmHYgC8A6an5Fob/KH5GtC0l4eFso+VpxedtJHdHpNm+Bvy4C79yVOkrZsLrQ3OHCeB0Ra+kBIRldUGlDCEmq2RwXnfyh6Dz+alk6eftI2n6sastRrGwbwszBeDRS/Fa/KwRJkCzTsLr/JCs5hOPE/MPLYdZ1F1fv7D+VmysX6NpOC8aU9F4Qs6HvDyUy9PvFGDKZ/P5101TYHFl8pjj6wm/qyS75etZhhfg0UEL4OYmHk6m6dO192AzoIyPSV9QedDA4Ml23rRbqxMPMxf7FJnDc5FTElVS/PyqgePzmwVZ26NWhRDQ+oaT7ly7ell4s3DypS1s0g+tOr7XHrrkZj9+x/mJBttrLx98lFIaRZzHz4aC7r52/JQ4VjHahY2/YVXZn/QC2ztQb/sY3uRlyc5vQS8nLPGT/n27495i8HPA152z7Fh5aFpyn1GPJKHuPL8Iw94DuW3KjkURAWZXn4EQy89xiKEHN1mk/tkM4gYDBxwNoYvRfE6LFqsxWJtPrDGbsnLMap3Ka3MUoytW0cvieozOmdERmhcqzG+3HmZv2yZeiIeQTKGdRT4HHNxekm1tY+/n06rGmFleqLscSERzctTKM6G9P0Pc1RmVvrascIxaO1CQCiYPE15bD7c3xSeW7gXxYjgxcrUlcbIvO0r+Yplhx0kTt3qafDOmFyMjgGxXu73rddMHpV1wMubyAGcf/v5dLr5P72Ta9lBF+fzMJrMycwv+9vnU3ANIl1cH9tfW7af8u0/HG0vV47jNFXzFTtaha1xvze/s8KMtCYucXc1nzfd/MQydUXn/b72RBt5wO/3jRcMH9BdhC/yctKBIveRYPrNpDWqBsO8VMmP+WvRaOcA4zRMR1PvSoO92rS7pYEv+fZfEfTMzEdM+6X5tLlyxExhqLRkms5EuLovLfx66de5fL2/yX02H52FPVwahrPqmN/E0oVXnsCKhbi/yRxX83nRbUKWhzYceXOntfuXn51NszJ6MO73pQf5Pl4in3ec4JU8hF7ppV34+mm9r1LY0ee/i1O1wpd8+zfLztE0cqBxggiBi5Bu95v9l3r9r/U5hweLn+TbfxowrWDqdJauKd8+q/dH8sbPkc9ttuyO94f7/XK/nHX46MPFLEb5qQlNPvhJ50/59t9ft3LXu7uVaWaO2bDrDCnRSzZyWvFKxO1+vT8MwwunR3bX0CkfPjqb4K9O19tn5X50PvmYpEwHtiW9WtzuV/s76B1zvLLNkViNd8ySxIl/3orfqP90TyTGaf7/rx8jQzeHJXdmh/N6YDvbvmTBwCdxfEQ1NcL6wNMdSIXNq7b1EUzRy1/Axsyk5p22GMG1b+GxFgbHErZh92wuvco0AuOLXct9hvw2nw/LqIcDRRmJmmZzcgUa7JpM/WV/S9IUfbF56TL2orzqwebdRD8nIYNJ41D/hz37Fo11p2Y21wzPcn713qVGhqtevStYfGH4n69OEJtPvbbLYWvscDqc3Hgnu166+tAyLnxrX0Y5zoYjV++1sI7t5kMr02KT/+uwtkc+rZLOf/qn/s3nYCf13Dg8/sB2diJgjGqjQ+TLhxbzyue2Ob7X6/9lUwW7a+lbznHzOYy8LKW1C/uRPbQY3KW/0gO9LXunHLvPL97afba9bFtc9hmz7GAttjVYlCvQAiOwAk/gC5+hkLEs6tr3AZKxLJtOEwk2dLxTYWsIB/j/ToWtIWzo906FrSG8iaqqqqqqiIiIiAgzMzMzNz+AyK+01/zi8n8S+Y1MjoRaQ80WU/G8MBlO+53VPXANrWm4wzGUVZUjjBJZVdhpcfkjsmcWaO+UEldXi1e+zq+HOsCpknYshuh8pOLISJun7TN0EIGW2xTnlOImeecnoGW4raxe2G1T3HEvfYUYMhG+gAFOAwh5nK8mZhwJMmN7r224QVsNFvZ87Z0qatvknklyPDK3Hy45PgVKXji52Wen4d4PlFVVYGnNap+fSpFbK90rYnhUc6n91Q3AY9E0tJOFrcfZtm/491XbcG/jsViUPPX76qmeuiz+qY1Hk7/1VPM405zWVuoheLUimpWYdVzCmUdKHebMdzgrYrb8mL2eeLSnRWHdonfZa8RsOU9F37w+591l5FLYHiOqWeHtE/lWrBHcRKp3uhtr8yXm8LU/5ms+NM6ZKsqu90cFZ4o58+k4rdrtB97NADFbwmEG7lXqvirhOTOqU14xuUF2myIjURcPHrPOQ4lmM3PeMg7bUuk0nnZi67bXsU6H8lhqIo8TaOrEafCO1ARK9PjC0QOoq2BxmMdgYB9G/lIb9++fqNJ2s7BHGFyBNmZAR8J3KCo012ikaSP8BCrf6VI0X5xdnbhHIO+B5rbOyB54zXkzfObyJ4ecwxfqBJMLFc7m59rNcw7hoHnFZ0b00zee+gTqvjm61Pb4xn0kcDX4jvHM0rBXZypG3DCKnD/Waa/ZtHmtFPgO5eETx+k7RrVg3aSwm2YoNXnCs3XPQDhNn+Fia6IlOOuIG6VJH7TP6ava26ehKHQa2T4N0tcZ9dPCGo3ZdnNltsHQbeYt5vPnJezV/cAeNypdml1vCHI8M81nSRP5Qi2+mI8v/sxiZru9187nRtp3f/42NemcONa+4eVC3PCZzc88aZh851CqSsshe70uPxeN/dmYwlwb3trwMrN1Gq8jbnApcVDx/yDPeYs5/7r62tsQ6lLg+DiFXTEhzR9dHqv0iT4tgj825W+H3XiRUNUZT2kR9Ri0+lp+UM3iQtS8uOE23Ly4KYtvqH13jghUntJRAewuzNLDXp8RxdcaA3cMY6TO2IeSFRXezeWIjCqyhsUdMYuCgYTZSKpBype1zRfq8FshvfBPc6BAQWl7/QxIDp3VGo1J3vn42OEs3qznws+YLRXbymyB19a9XBx6n/owcyxlEYyFWCi+kG9F+EyD/4yn80+agaZ9P7ay2Dny99aK2o91FkfEOY8hBwyfi5uwx2y5SaHmG+oq/zl1FX/8irOf8Y3vAcX/6uLP6A6nvMO24edSGPjQc827Rw2atX+z2bKq0CmW9mOtYnr5/AfDa1ZfPaXnKtlWborup7QYx+Or2uWb+N3N//2+yDcXMqIJdf55xl7/vsj4WoPPlxLxtVrkJ4w/tTe3mLdATOOYwxcq52w5Wxz5MbPdVs5O8/lhfE7dPj0bIiPQ3QV0iqm4m3YX8hRfc6jQ3fWepevMqUDJd86Z4vwM40CWHnn+WphsGHfieF02D3tmZvpWD+kBpNCFcLnZhcmmrhpGzzbdA+sQ1ar18OJD87IOKOFoRNznaHPNHUfUNhvY1iU+uhvEvpKHaUn3qK3exVVyX4joipp3um7FmYJWmA+WbIDshRpbVRx5/nqstCgy87FGbfVB8yDGCqS+2qCsnRwnSAN6zgzxfdB2nBT/vZ4/6uxb6oH8b4VBRxiIB93wLa47hG3w2SL/2Z27yOXJFwZpSJaBYyvajA7vRRYNKqljXKpt/CFD/tSMr18DKKbwB0xggBePatl1nki0yvqW5zchlyZmJ0OTxJ3D+fsYJs/mxYN5+Le5oagtcl+YsVvy8kSjI2YGvGjvmpkRS9W2dtXqWnVuxUhURm1lKtou/hdEq19VBp9OjGvHEQSmrpuf2R24mXGheil8KeiANY8fW1VERUfBImb64j12caBZmRViZHbeVMjCrPDg9A90IXrtnsYCuZtRQ0PyrKDjBNOsPfKsg1pA02gHlVr0OXiFhtp6nJqXVzcbfM0KnzC3ggOENPE9VBdmHKN6LYaijb4wXxJn5A0FSDF5j+h1ooZx885Jt3ZKzO5n7Z5WfNEOtyyPqQEnn7WLv5Fis3PdgMshjF1FRydbNyeBbyKI1oN1TRVrVK7kgsb/zjX4NDPIRMctVeaxVB38Vh1x5KbeJbU138AM5KzmZu3uny0ErygxiJF7GVXUrPzFxrlx1uFdAaZFDN9cvIb74qD9tzBMo7L7WIEYK+sla1DVMHpF0F7b3+Y6S+zjvLeDMCpapmJo1weBWuxKF3rOocih1gun4BoJh1kWnV/Jmiq6uOhK3VfKxEHEkafjLgK3oujaPzY6SXg8phhL4TNR1xvJd1Wa0aYFfPUMLrNBDCh4AuGRTbtKMc6Z1Udj8evY/ZpCuMAUefdo69DZUngoqE1P9A3PJfOf7WixCEj+Y6t7fYeHbbxUAoFV3M89cCKfma3fc1+jKRe7MFWEbQqEfyzO2x/wrO2VYH7iYdQ9BkPyI8/3kXBpLaCpU7eC0Yv/am/tEDu7HZpqg0EvHo0nf/R/gRzUWy33/HXMJQeu1GylKmOkXzlCfGFruAcPPhaGqZOtu19zsJ1SO2Jz4Ztth5cBX6mRQwWmDwryG9FUMlZzNckMdK+IoMJv1rOWnBamS2w2KHiaPMPLC15hCZm4KTpoZyj4E2TqC/P6r7/EhnDMhKicZZ1ZwxuC7DPzDGs53q8gXaI9kFTK+2LTq7bhwsTbrMV8Rsfua5lMS0FwbTitUVnVa1yTb5IX51mmYnUcP9wPr8Ji1tiYJeJV9GZTrQhF7vvdU2OTU42ogJ9FDwhmycI2LIg++03C6scYhUyUuMV5tkw6kGUoL+mjNC38+wMdWNljn6tGPpRES7veqrSn5TRuv+dh6JVL/iDHU1db4c9WK3++OrH3PqziF916UMUKn8G67nN60GfWiHrXYhUG3yVWmyYak59NHj8t1smG4UDiWz2rPHNrKnN4Zo1LBbr2/eF9YZ0n0blx2nG4X+EKFxvS3W28JESD+FWk61VCD3z/URGHiJl++7TdBwkCj6tGOH3qDb0QqcOF9Kzpj0HUb/KyFW3Yhj2VMKJqGZleFBH7vqvf7WqLC3XMuHV8q8a4sTFuxUtkD/6JIBvKaVjv96ndgruKZ1k/BHzqf2K9fLk7HGXANyLDd1vxkK/i055pnzl+zw6zLnwXlVYVtfmacJgEpRP1hbGgrYPVN6v2lG+idQNGmwcKXu/8xEj/P6qe/sB2WmwNp6pp8jaISMkwdleFXYK55NHWLTTbutSUqjBfDGWo/Yg918qQ+8BRZSAHZbfuNZz2O0sov1Ue4CWlVg3rFhM3Kljj9ksGd/NUhk4nH+a5UN2+1i8+NM3vRNp7uQ6sqexSCukEVlVZriHNqFi5rLm9TMWa4qm3idJqppQACol2l4VSuvWLfta4JcXy3bROPNbXOgdOhG47LC0CwW/dMlSx4Jf17aEU3yA1x9p+Yc0jupXgcMuYNku64iYOkGToVDuJvlbEKlJqsmiHbvNrIVZEH+yFdF8DbleZ6iNiWwMqvtMp/mSpwx5KxRrT9p3MAPTHGtMbfvdFhyj9vhaKcn3At8Lc16Ai+vBcSp1ztXi7rCJZx/ql7TXcclq6Q76UeKWDy9boS0WHIjUuWhPG8LBmW5y2rhuTpM5vsLt+HOLh1Yf0DqXa9tsfC+kaKt2htA0ai/L2i7RKoNjEwztkmRU0GfgW1TxUvPFhg0V7DdfWJk5gfrccpYv+MA9M0dkGTLECeYwUixRzjRFdmjG7zdZIl3XKB9YliNKI31lfa7i2JG5C8Ss+rHe0D7Z696/V3DEAOWHnQ9yNahMUl5kENWS6pHKKp2D1BaSrrHdE1w2qNxIztpXgUIrF0bm15YML4b6V1k+GpNysTahKMVrrS85lTVo9OGJ96I47eAy5rYWpRf/mIzeoYU1DKaQCTUVwrhHeyNoDqHel+lLxr9WKzhSYw7vrR6+V5q0pfi2k3L1zqkubY6rrd9ZLvSuWNf0uqnkY+FpTvFzSW9Fp0b9l8JA7THV9eCi/PY/SCZIUYx3BU2alj7Cm3VV6eYpios4b6WuNOJdYXUK3zTqj5CVG2FqYM4Z7CuIU0qO05XR0d71FHM0YhZmJmTRfLlXEumN82BGtzdX0S19t1e+bUieK8zRmqpa4Qc5TSjifmaQsY2ETLjhI36gMR1+7qpjdXXHiceUekfBaucHShAOiFXmv3sNmGQyU5iVgnoocuonQXEPTFwslHtS8R+A47StI9wj0iSrtbi5rMysczFiImsQ+bdFClnFjjpXXwMy6O7qfjOr8Fb0a7ODItisjnn3EQO16+ypd1cwyaAW5Yzxz5QknfMO7643fXW/I9y3U2xH27Oapqr56Z/tEzglj6IbT6HEHjopiXqeRbe5mQQvxtcbDOVverN0ZgMdzqRYRjaXtMRd56Q4cZSmdPvZJdSrhJ1D9zNXPqAEqPIavPdfubt5oke2kmv0dztIszSv2VYuoyf1UuopbsYb+uX9h6WpwjpgtZ6fNNawNJ4q8O3CFoSbioAaOSZMx2GYaPYB+rEb6qjQiNRFQ76TvwNFVKD+BhH9VhcKGsXzmMI7BptU/CNWolM7YzROvpFAntsiWJp6eR2d3GarcYShVYSUqhmYOWj5E96NK2WvmYNTeY7Zs4RUEdv9h9QT4EseKt6LzLrqEOs3hxAY1MaNWpSa6zZx8F3YOVeCYMS88W+CYHDuWe4yoc6YK+djDuEOrBR5lvh0r+Q9uM88lrjx9x9AtgpQVNE8r+3O6Gvw59D+kBF/UMXyhliYUtPjmvXGY6Dk3x+kEOW+GtdMVC4EZTqoS/jmR0P0LS75DOc/w2vnri97M4SdbZ8qeU7gg8DVbERkU5geaMQO3mYrSYyAngeUQqrN0C0/vsFmcgWNXNeidsTAj7/4MncJR0caaBUpbLK1yBCBNRjEv6KvuVSdpPnEMJdsRRtqJ+U8tN1gXA4ePHc6ZT0eviI73UOJF0fEZ8YaneAQqQdGphNvwM4nIqPnXxV0xA0fnCT+oAhJuyw/q8jO0y8CjSteZExwBpIN6SvNp6A5G/abi6egeND/1GTguhuNjaUbbnSbGd4L8937Ezm34Eyi6n1maeOBxh3PI0jzJDf5mh/BsLD7F2GOKvlA/5gtvxI3/eV4sLfKW5Wy+oio+es/u6T8UU+nsofy57Icb/JlZHPFtCgd/x+bwt3ZT+xXTtTtTrGAb4QehC6X9G+8YT+ozcLxDsdCjsuOqwPFnrdLYaFc92Ui0m4fr39lYmlCaqTit7G6O/3kWDkgtXjNH4BiEm/+jegQnihOtfffn33WxsFjhfMd48HT+f6o6X65j7XR8WLSHMFkxbvOYsrRsF1bowDuSQ18Mkxk4qz2zoGPL5fu9h2Hqmt1asl3Q3Yu3szOc+spiCmX4AETBM3pLoTYSp3sVxahyhL8eC4mPN9k2x3o0xkiixIzM3CZFzf5oR4mecQ5+ax2wCah3/crmnHoqR0+KMaOPxRif1oEFRFOO/kTPPmtww+NfMXxEK6gn6iU32U6fFruIz8Q4WgljtnaCVTBgWx7diUdshC9ZEa5yKpRBBeW12r/iNc/+EgNqmhswNB8SBoihHXeDF7rrWDLcmt3V8GYYN7pXRy4DZjj4DJuUBL5iC3DQAaoo4vkftqVTYRGLS3mHZ7gdmdTTqbgNN/PTdTCOTgXolc88MhXAEUMdX0iy1JMuk5wLsgeu0QUYlz2S4skTWwJz6pOm/8ihrmgGfFgri+ZWUK2gAPHgbWa8jaocdSuM4FJYoKicYX/ZSENkg9Q1ZzJfwScfVnR2DegOGwCvmogaWJCLQepv9WNlU6QgsmOwICquU28Mlk3d9W5E81lU/5Ez0LcX6lwKMWDNluNKfBDUy/phJgBcMnfkh9iRxrdOzgs08JdPB85Lwo+GUSb4t3nC+0byqMZtO2fQJ4U2zGIr49t/28qmmGv2RanDD7a3FEcdtutkW8twwwlUSpb8QalodddbBfNHKDQ828BdE7OBgFdiKYohLawFYqpybQoxATZrheLhdI7+0Zlu9Q1myRcd15r9UIm8K2LGJxqTegntqNVMKnf1a8zQiyUR1rxoqjiFxeHxqFcYUTHfDu7rhbWng6qOxOsI+5A1p9mRyEPdVkTlE24vY54W7bWc6jMgZvNXdfC9/9q7408KDsbdL7Utz7QFSDetz2picArzrdpL8OaCHC9V26RroemtDZ5yNM/KGkWMyTmfnInEvwtSD23UcFcjhaE3VKzkoaEMKGBft4XbIO6forTY1lmGQwVmKicBCiArDzE+1oIxE08fWeviIOD5TznqH+OoHadvoOP20drMPe5Irg3XBQziW2XDuHYzjqQQ4wySssjXUs5H+t3FWYMHppUnBHMx/nYIT5d7OmjDbgD9F6na3m4l7KdkeSO3kTEPXafiWinogag7b52taiZhL1TSvBFmEZafFq2H8khQaZXuitCewT5FBgVtPK0j4xUHPfUz3Q28eac1Z139DAP23dgki94EC8vbDPTQC97HPPSWjUNG5tWKMsaxAEMKC0665Xvo1Ntd07wCLNf8Q56mrEPVpCxlIMVlQlWRxM3oAfpgIc+8KC3rEXUog5g06vt7zgXY8grH7hhwVSaeuvC06YYRAwpbyk/Unzj9hLEZNs2oxPQB9yc+GnL6zTgq7rI++KDJwX2SP8Sd6YzTuw5lV/kU6eQxRD12omfQAW6caTR4LikYkBB1CMOrvgRr/VY75+NSB40Cni6bADAtaK+vyxVWpf9NeKJxN2KYQ8Q2xPB3K1s7fuhvWbr2XpgW044VD6DRs0qXoqKf1NFsaGvKJc47leUV3pppP/5VTKFhaGuol4Esfjf5zyCyUHmHthChcYh4hYLQF+AFWsuq4t0wJyWgdwQVOZiV0efRHPoK5+E1vjz9wTJmVkITC9oEstAsyZSgE/dbicwKr89YUxKZI+owD205Tm5lnnmDRuP/JnzxX3gMtlrcX0UesZdxyQqYQuEW4R51vmQ5xOZteUd8SJruMlTUzhtVw/Nq7eUBcqN2/HVotgfngif60yKEtoUx3WYOZlVJuJOh8u59fzSDPFYtQgqDUAGyGhQOAvKroXMcOYY0qjnStJR/G3aP+Jt1sLVlGV8POwr/6OGsqetnyF3TmTqZjENfnXh51oxe9qVUw2M78EzAJ+IM8lZ1MBPQ9ZWSVc4J3mWSrLKrMHReA5qdGoz0ODRsaA+vwxXA2cAM4qlfzBJA6581m4hzxItQw5dxrrBL3Y6kCbUcFxo1S8jyV44q//+7ASNNudZ6xeaNOSIUffqMn4A9lIjFctYn2gpEPAb3f7p3iIBN8H14FUGQ9ct2hPsL+cEsTgUrR47uJVN4n4wt/wgfwwHuOnLd4yobkofy8JvxSQTA7rMpDIc608SlZFJfZYcmbT0tAHpPE8MrtQ42siTUNWxqvWZOmvu9f0JPoQmg+6l7sZWwyfi6PXkxJnwBraUG0MYG4zYHQz3igy/XsFkx5tNQxw43qvI9dU3f0DdhOUlHKjmi1VAr2Kiy0HZwD8VeEbhh0OiDdMYspolQsYdSwjCcjeowIXNZVUPmL2wwIkYhmXKhGozdCJ4lRKbsf4NBh/XnQoS92NJEWOVOFs2YhN8c5QZFeK0pRdAG40hqvLbmoSA8xQmzOOEc7wLcme9JOsjPCEgpCwUs9E2DohMHRhUeyGIN6TFvrbny8nDuilsDpzrH5mS76APoIEJmItS67sQJ+nfwddzmjPxcBEBBCw0kWDwd0EZCkNeOD7NNQhtBm7KHL9mRxj6U1yWU2puzlIDtpYxdH4ZPeXBJkTGAJfUr/oTCz/iypY6uXaR2V1doPxJYlrw2ghH0D5gbrhFcIxzYwi4a/4hqVdf2DdxBp6vGYDjavxMAAoy+1+3aiO6S3W/QAKNVXagDtvsNtx7Ks+HKgo6U21B+QSZgIogV5Bt+BnXisdVfy9VyXV+2P5fMuvdpAjM1o/K9Z+XnE4EOCrue+kcdYHqAQ0/Y/OmNlQ6OI33jH/uD1RalPaHpJAm2av0/xtpqdXVKNDrc9F2izo23Wu7firgbURFDNX9eGGeYBhiypyXZft2j3hTvzE6PMWKsod//rEILDkzBXfi7xh0eFkfb3/1zzPK/PI5Nk3FbZyTl4mq5BfBoVoqiPHO4Q4QKZAlrQ3MdNfi3oxIjvsM3kAFv3fdufurqYR3PSwX/mpGy/GFI/B2MNPiNdOppWVbs/gjF3YH+QA9jMhlAbhvasAHstB0IJew09iAkmXHl1/TEj+jvHOpOGrPRQXbPADM+Ig2/OEcUcpgPTItMtW4DdqgfYVI/+4hAFWYjUGpOP/UwNuB7+BbKOcALbjobdgzeBQfjgNSp2GOpxzGLj70Vvq5cw2AoYENwKLUtJUX8sGRox4dVa/TN4xKwaKcl9XawQR/uNus700Hf17pyNnezrUgaY9e4MADhEDBpsJT6y1gDJs1q6wlwGhuUzGR7C8kgpjPyHWwsvrf3yn1zJEIRa5eSxoLAZOCR9xbuztxFRJW9ZmMYfCFJ0evm9F2fVnuje92Rc4Pl6A8bluN8MZyyJGZ0+sNSb//DvAFxC2BqlEsFwccWeAl6CyBcQV1bx4mQMBP1Jxqk1EUADNLeieS2dUFbQ/c/kvwItbZ7tx0st16viqd53WsRmPTKv2AD8CUnhtPWg5aUegNpsYgasaw2+EVooeNKmrW3MFtj76bYHJm5K9gpAXZXsE5U8DM8XmVOSJ1F1WnLy6nQup+jx52bAb+rCq6y9WXl2B2oZDhfDkW7H3oYfT/4xx5VncBuxMXP2lNfhUVQjSSzSRbuZFE4vFawlzveXxaYKVs8LpvAb8IRYF3ZHiRnm0ADeNPWocwxSzNseG7NrSEVZoHdKWqaGEBz1N8Pt7kFbqh3LYmAbm9i1IChIpLpM5AS6mr6OAPHMwwznVy61YpBYX8xZDN/a+lt7n+x5j4bNOVteZ8lj3hpAHSx1VR8vZHec4AHO9XFCdjZ9eRkSV65ljMmZVzaej2qFn/qt1lvWzNZEfHxK3qOJrHL6crr0CRzMox5f2e8ALBB4UGFZKA3tN6F6IXd32GTJXGQ7DTi9j/dNcLF9jCbDcWGKxoKTYblIwbLDReL00LRcDPMcQuXLMh5YzgtfjkFK1DP1iDzzYYVZz5M/kWYRlRpig1htVRjVCknm+h1M5LiEDXOyHREhvzCGpFZjHS0RsK27o2avgdilrJkalWqPW3D9gmwV37HKmfM3F8YZj2ar+vHFvf3B8CRoH4kDHIK9mrAg+owiEwNjjd9V+FsQKYR8czJrUkf7Qoi2YaW6EVDZp5zYlqiYtuXOTHk4fAcZ7qBbdLDiJq0WNV1l2+Hntk1mMWvxrYmc8kIx8G3rW36J6Ra4lLrTOCgiOihmow+YnzUT19jbV2B3RWqSHyxkhmgsBqMYWvOcUom1jDQ436+fcbu3xf2bbeqU/ca+C4DOKE+e3qvmeMqW3AxejfzBRFVcwVYPq4L0APSWWoJu+5UYX4qg5U6YTioqQGPG9XrnuZ/BkxuYpe6Li87+18EskyQW/uA+uk2rpHpr6hut2TlVbKgWkFpx+AZffweiw2+VittkEyf/ifinS/0ItRL2Jq3tQOcxPaWO2xrG68GdFoUpZgFXaP2wYVtRc6xYCfI1CaBqyWpg4bx8OHBQwsV4XWMibZZ0LYjWEy2IxQ1mZrf1/UNbYCJplWu3nZ4WpodIGVA05d+RWSS+ET9tH3RfGGmNI1cIY7evZZq7o+a0bjjygpmR3mVfalkT/SZGT27Q8QGalwGlDOS9VHCyFAIL0a1Q7JiW3saz9gqY8lqKynFrPCzxkU4SIfLc9VfCI5edgRhDXs0edO992nhTKHriREP1NJC6SROMgQ0xO5kNNZOhMOIT99AUElbxqeZF8A3xrfDJsWtDnUenAHdYWSwAbYjFqQZ+D5gi3hNK8CSxU9i6f6ClL9IGlj1OPMQAsr84YG6ijsJpCaGWj75c3yOZKBB9mNpQNPUKkK0D6wgLH8MGoyRxTX6Y05Q4AnYNXMZwXM4eij/9WpsM/9CoRnFQXGR6MEaY+FXvXEO3RO0JaStk6OXuHVATHJE+1W+TU3bSZ2ksMtqjO0zfSJCdBv7y2d8DMx6TfVme3q0ZpTKMMu4YL/t7ciTNtdDkwPogh3Cnjx7qk08SHwf+dksZ7M2vCOlfsF0hQ6J4ehPCaHTNrM/zBSOqD83dBEBCW/F/LEmeh0nOHd7oVl3/Qo/9GUDkkbj7yz+9cvvu+dDAtx8NzCDTP4iKdZvk9MWiizvtILLepysflSvTLFBZ37RLwiriqyRxYv/zrgFd/9XVHh/OmzBvDX4mitMR/lUavs2Vx6cR94lzAkplm3IRNy4TFfu47tuYs9EQPIPVta4P64tV+sZ7n3ued3cgEx2YK+QL5+xms6osk8qQbTyuKVGdaX9FQqk6qfDnT5ykxk0VK7KZ62b6DNDUfQlqGHxSMKv1P0XN5BqMeKG1P4Wp5QfZDUCEldppoX0U6ss2jIko2XpURKCIhfaOqLPfShdtS37ZrT+jFRSH2xYVV1rmT/MBtRQhxiO4MQ3iAGlaZi+9PWBEIXOVnu9jN1f921lWLZky9bqbM3J2MAAI9jmuAx3gyoEUa6P2ivs0EeNv/OR+AX6q5SW6l5HaoFuS6jr6yg9limu+P0KYKzfMXWcQSfTXzpOzKEKpwI3YGXZpSSy2LTlMgfmFA3CF6R5c9xWEtRuCg2ZPUQ2Nb6dRFTNd4TfGHrnEWSKHPuRyiJSDAZ+KX0VxmSHjGPbQTLVpqixia2uyhQ394gBMt7C3ZAmxn/DJS+l1fBsAo2Eir/C0jG9csd4+/tp12pPc/BVJGaK9mfvr7M/CeztrmCO5qY06Edi4xAGtiEhnWAbzLy2VEyazE1J5nPmgU4RpW4Sa0TnOT6w5lgt3/tMpROigHHmexBGAMY0mdcDbDxWIz41NgdD6oxgHsJRgr5RnT6wZAkTOcStU4NMOQNemSO7gxGahdEsC+NRVGxMUhQmmM0llWRbbmFGHzEqLM4Iw0H7577Kyo+Zf+2cUFIOw93gEY171vQaM0HLwpjpdRR6Jz7V0ckE7XzYJ0TmY9znLdzkva0vNrAGGT5SUZ5uaHDkcGvI0ySpwkasEgZPMseYcu85w8HPdSNi+4T6A83iAwDbxgeFcB1ZM2iGXzFcEOUlYVrEckaOyodfvaYSQ7GuB4ISE0nYJc15X/1ciDTPbPCgYJK55VkEor4LvzL9S2WDy4xj+6FOqVyTAC2ZNowheeeSI5hA/02l8UYkv4nk9iaVn+kCVEUstgk5Hyq+gJm6R9vG3rhuM904he/hFmNQaUIATB1y3vw+OmxP4X5Yi6A5I5jJufHCjF9+AGNwnEllZjUco6XhsO5T5+R3yxz5yLVOnAn0zuS+6zdj0nTJbEZCbXJdtpfYZfCeCOqJHoE2vPPFS6eRLjIJlG69X93nfR0mxSFXzp1Zc0lt/VafDaImhUMtbnqWVb9M4nGNQLN68BHP7AR8Il9dkcxzmBv8PCZlw9guY0lurbBsmNYlwJZsA/B15/HfkbjbwPddaVecls/elmDHNW2r4crAx43feNkfRwsaNq/yyJ0d/p5hZ6AZajz7DBfUok0ZU62gCzz7x8eVfJTKA8IWn45vINLSM1q+HF9CV9qF3zP6Ml21kPPL3CXzkuYUlnSqT+Ij4tI/od5KwIs+tDajDs64owN7tOAd6eucGz+KfO26iNcBFpbWA5732bBNWO4kHNpr9D955L61bvHCF/mwSrz6eQaDjfDEANqGMkFc+NGxpKZzCD2sj/JrHd+zlPQ8Iz7Q+2JVIiVCuCKoK/hlAEHzvk/Piq3mRL1rT/fEh9hoT5GJmeYswg1otiKydizJ/fS2SeKHVu6Z3JEHjiW8NaTQgP5xdBli8nC57XiN9hrquBu99hn9zqwo92+PM2JXtpeVZS0PdqR5mDyDreMMtEws+CpwaRyyzoYtfcvt9PJIW0fJVNNi/FFyRsea7peLvJrL+5b4GOXJ8tAr+ATk9f8KmiIsRhqRy0vFzwRV3Z5dZ3QqIU8JQ/uQpkJbjMUMFj2F9sCFeaBjI4+fL/oN3+LQgjI4zuAfQ+3IPIPFQBccf0clJpsfpnBxD84atwtupkGqKvrH7cGNl/QcWcSi6wcVDML6ljOgYbo+2BOAWNNjlUBPiyitUAwbnhFvLbnqw42kR3Yp2kv2dMeDdcGOX5kT4S6M44KHEB/SpCfl7xgsUvs+JNY9G3O2X/6FEt9FyAn57lrbiu+tl83sCymSvq9eZbe9mchL7MTf/Ta78e80zSf0hYY5eUU7+ff14jv7Xy8qjzfzzzvaJnrIdvFb5BLWKcWGy5/w7+vV2cvIfwHqdTB+RuJK5oj9mbt0Hy94AmjMjjwYNZlNS6uiyxNnwNyt3gdreLb64p/3+08nXkb92LTkkRgFOwk1oGEVllcOj5lv1hfAZywDows0944U8vUFw+A/nuVq/UCygsrmWIBnHyU01d0XJPwriEOvx/ISK6Pk4y2w0gmojZs7lU8TtakBAdne4v/aNxmMpK4VcGMp7si0yqsiolXRuOi1Z1P7SqD3Zmp0CWcyK4Ubmp2SXiXuI5nGLCieFHKHNRIlcY3Pys2dwMTYCaqlyWSITwr2oGXvyU3h1Pf8eQ3w1bnD7ilocVjYDkcXR3Oo1BXgMLTUjNw2xMVwjtp99NhSVc5aIWrDQT5DHPKtCtheBP4zHcw4dz2eRdTMamhlHhtfgqJJHI7NGDUw1XL8vsSeSHyKqDtqoAmrQqsYwvwi7HW3ojWyhIa5oz5xJTaq14NAzFLjVLR12rRNUQ6xohDnrWFb5bG9yf8aCD8d5phoackcNJp+Dw3Due3RM+5Rid7EuIgsnwgpX0rUWh/nqPtByMhMZZ69NpgvRTKZ62ViZ+Q7Dp5r4K0d7EfJuiy06KuIYauRh5Ecrhdt2QpTS1k1AscEHvapNbU3HL1F2TFyR33Wxb5MvH5iZsrn3SDcsxlnnshO8PLwmdGN+paWnQuORtZGX37uhFT64SeuPsx8UOokY6ON85WdQ1dki5zErsJGazcBOddWJEKqNPiJpsMD1GrVLrVY+AOdPWQneTyyP1hRX/lMM4ZogGGOhYuAdr7F/DOiAoc++cn5vlf0zkMUJ40Z1rlgv9BelPqVOpxKeOpzKdF8maK+1Vv23MO9k/8+qpLoxrIGH2EDQlnGmH8CD31G8QqlyQIcpmR5bwmSVw9/Ns6IHgulCRehvZ/+VrM60Cu/r3AontFfrljew74skYe2uyn7JKQtFQBQRJ9ryGic/zQOsbS4scUBctA8cPToQ3x6ZBQu6DPu5m1bnCtP8TllLYA0UTQNVqza5nfew3Mopy1GPUwG5jsl0OVXniPmAcmLqO5HG8Hv3nSLecE9oOjPDXcsTxoCBxYyzBdj4wmnyEV4kvFDunipS8SSkvdaMnTBN9brHUR8xdmmEAp/Pdqk9uextp1t+JrtXwpN/MG2w/qhRMpSNxQ1uhg/kKO30eQ/FyHUDkWHT8V6gGRU4DhDMxZu7xXij9Ui6jlpWmQCqJg3FkOTq3WKneCRYZxBXMNAVLQgHXSCGSqNdjebY94oyIpVjMYehAiFx/tqzBXFHZaL5PeeD74rW5OysFoUXY8sebUZleFTUa/+zBKVTFDopTReXNuZq47QjkWnxjirCommO4L/GrFtVV21EpMyw8wyThL5Y59d88xtlx1g1ttSICDwnof6lt/6zliPzgVUL8jWBjC0o2D6Kg+jNuThkAlaDJsq/AG2aKA//A76avw2KNqtv223P+Wq3StRDDNKFFgtsFukYt1GFDWooFVXitaNhb3RCyJi4cMeNjROiPEDb4k+G3+hD8tsg+5hhmSc/8t2JTSwYoCzAI75doq8QTHe+E/Tw0RQSUDlU+6uBeNN3h6jJGX/mH8oj0i3caCNsjvTnoh73BtyZpsflHLq6AfwJNCDX4S98h4+pCOhGKDhV3rtkKHMa3EG4J9y8zFWI4UsfNzC/Rl5midNn7gwoN9j23HGCQQ+OAZpTTPMdiVow740gIyuEtd0qVxMyNXhHcnuXRKdw5wDUSL358ktjMXmAkvIB73BLa1vfF9BAUZInPYJiwxqFWQQBVk7gQH4ojfUQ/KEjn+A/WR6EEe4CtbpoLe1mzHkajgTIoE0SLDHVauKhrq12zrAXBGbPPWKCt4DGedq3JyGRbmPFW32bE7T20+73BatV/qQhhBWfWBFHfhYWXjALts38FemnoT+9bn1jDBMcUMmYgSc0e7GQjv2MUBwLU8ionCpgV+Qrhg7iUIfUY6JFxR0Y+ZTCPM+rVuq0GNLyJXX6nrUTt8HzFBRY1E/FIm2EeVA9NcXrj7S6YYIChVQCWr/m2fYUjC4j0XLkzZ8GCSLfmkW3PB/xq+nlXsKVBOj7vTvqKCOMq7Ztqr3cQ+N8gBnPaAps+oGwWOkbuxnRYj/x/WjiDclVrs22xMK4qArE1Ztk1456kiJriw6abkNeRHogaPRBgbgF9Z8i/tbzWELN4CvbqtrqV9TtGSnmPS2F9kqOIBaazHYaJ9bi3AoDBvlZasMluxt0BDXfhp02Jn411aVt6S4TUB8ZgFDkI6TP6gwPY85w+oUQSsjIeXVminrwIdK2ZAawb8Se6XOJbOaliQxHSrnAeONDLuCnFejIbp4YDtBcQCwMsYiRZfHefuEJqJcwKTTJ8sx5hjHmJI1sPFHOr6W9AhZ2NAod38mnLQk1gOz2LCAohoQbgMbUK9RMEA3LkiF7Sr9tLZp6lkciIGhE2V546w3Mam53VtVkGbB9w0Yk2XiRnCmbpxmHr2k4eSC0RuNbjNsUfDIfc8DZvRvgUDe1IlKdZTzcT4ZGEb53dp8VtsoZlyXzLHOdAbsp1LPTVaHvLA0GYDFMbAW/WUBfUAdHwqLFAV+3uHvYWrCfhUOR2i89qvCBoOb48usAGdcF2M4aKn79k/43WzBZ+xR1L0uZfia70XP9soQReeuhZiUnXFDG1T8/OXNmssTSnYO+3kVLAgeiY719uDwL9FQycgLPessNihMZbAKG7qwPZyG11G1+ZA3jAX2yddpYfmaKBlmfcK/V0mwIRUDC0nJSOPUl2KB8h13F4dlVZiRhdGY5farwN+f9hEb1cRi41ZcGDn6Xe9MMSTOY81ULJyXIHSWFIQHstVYLiJEiUjktlHiGjntN5/btB8Fu+vp28zl2fZXN+dJDyN6EXhS+0yzqpl/LSJNEUVxmu7BsNdjAY0jVsAhkNuuY0E1G48ej25mSt+00yPbQ4SRCVkIwb6ISvYtmJRPz9Zt5dk76blf+lJwAPH5KDF+vHAmACLoCdG2Adii6dOHnNJnTmZtoOGO8Q1jy1veMw6gbLFToQmfJa7nT7Al89mRbRkZZQxJTKgK5Kc9INzmTJFp0tpAPzNmyL/F08bX3nhCumM/cR/2RPn9emZ3VljokttZD1zVWXlUIqEU7SLk5I0lFRU0AcENXBYazNaVzsVHA/sD3o9hm42wbHIRb/BBQTKzAi8s3+bMtpOOZgLdQzCYPfX3UUxKd1WYVkGH7lh/RBBgMZZwXzU9+GYxdBqlGs0LP+DZ5g2BWNh6FAcR944B+K/JTWI3t9YyVyRhlP4CCoUk/mmF7+r2pilVBjxXBHFaBfBtr9hbVn2zDuI0kEOG3kBx8CGdPOjX1ph1POOZJUO1JEGG0jzUy2tK4X0CgVNYhmkqqQysRNtKuPdCJqK3WW57kaV17vXgiyPrl4KEEWgiGF1euI4QkSFHFf0TDroQiLNKJiLbdhH0YBhriRNCHPxSqJmNNoketaioohqMglh6wLtEGWSM1EZbQg72h0UJAIPVFCAJOThpQGGdKfFovcwEeiBuZHN2Ob4uVM7+gwZLz1D9E7ta4RmMZ24OBBAg7Eh6dLXGofZ4U2TFOCQMKjwhVckjrydRS+YaqCw1kYt6UexuzbNEDyYLTZnrY1PzsHZJT4U+awO2xlqTSYu6n/U29O2wPXgGOEKDMSq+zTUtyc8+6iLp0ivav4FKx+xxVy4FxhIF/pucVDqpsVe2jFOfdZhTzLz2QjtzvsTCvDPU7bzDH2eXVKUV9TZ+qFtaSSxnYgYdXKwVreIgvWhT9eGDB2OvnWyPLfIIIfNnfIxU8nW7MbcH05nhlsYtaW9EZRsxWcKdEqInq1DiZPKCz7iGmAU9/ccnnQud2pNgIGFYOTAWjhIrd63aPDgfj8/sdlD4l+UTlcxTI9jbaMqqN0gQxSHs60IAcW3cH4p3V1aSciTKB29L1tz2eUQhRiTgTvmqc+sGtBNh4ky0mQJGsdycBREP+fAaSs1EREDVo5gvgi5+aCN7NECw30owbCc1mSpjiahyNVwJd1jiGgzSwfTpzf2c5XJvG/g1n0fH88KHNnf+u7ZiRMlXueSIsloJBUtW9ezvsx9grfsX/FNxnbxU1Lvg0hLxixypHKGFAaPu0xCD8oDTeFSyfRT6s8109GMUZL8m2xXp8X2dpPCWWdX84iga4BrTlOfqox4shqEgh/Ht4qRst52cA1xOIUuOxgfUivp6v5f8IVyaryEdpVk72ERAwdT4aoY1usBgmP+0m06Q216H/nubtNYxHaOIYjcach3A8Ez/zc0KcShhel0HCYjFsA0FjYqyJ5ZUH1aZw3+zWC0hLpM6GDfcAdn9fq2orPmZbW6XXrf+Krc9RtvII5jeD3dFoT1KwZJwxfUMvc5KLfn8rROW23Jw89sJ2a5dpB3qWDUBWF2iX8OCuKprHosJ2mflBR+Wqs86VvgI/XMnsqb97+VlKdPVysczPj8Jhzf+WCvGBHijAqYlavbF60soMWlHbvKT+ScvhprgeTln51xX0sF+Eadc/l2s2a5BgkVbHYyz0E85p0LstqH+gEGiR84nBRRFIn8hLSZrGwqjZ3E29cuGi+5Z5bp7EM8MWFa9ssS/vy4VrDfECSv7DSU84DaP0sXI3Ap4lWznQ65nQoTKRWU30gd7Nn8ZowUvGIx4aqyXGwmA/PB4qN8msJUODezUHEl0VP9uo+cZ8vPFodSIB4C7lQYjEFj8yu49C2KIV3qxMFYTevG8KqAr0TPlkbzHHnTpDpvpzziAiNFh8xiT7C/TiyH0EguUw4vxAgpnE27WIypV+uFN2zW7xniF/n75trs9IJ5amB1zXXZ1LFkJ6GbS/dFokzl4cc2mamVwhL4XU0Av5gDWAl+aEWhAP7t2VIwU+EpvfOPDcLASX7H7lZpXA2XQfbSlD4qU18NffNPoAKMNSccBfO9YVVgmlW4RydBqfHAV7+hrZ84WJGho6bNT0YMhxxLdOx/dwGj0oyak9aAkNJ8lRJzUuA8sR+fPyiyTgUHio5+Pp+YaKlHrhR41jY5NESPS3x+zTMe0S2HnLOKCOQPpdxKyviBvdHrCDRqO+l96HhhNBLXWv4yEMuEUYo8kXnYJM8oIgVM4XJ+xXOev4YbWeqsvgq0lmw4/PiYr9sYLt+W5EAuYSFnJEan8CwJwbtASBfLBBpJZiRPor/aCJBZsM+MhvS7ZepyHvU8m5WSmaZnxuLts8ojl6KkS8oSAHkq5GWlCB/NgJ5W3rO2Cj1MK7ahxsCrbTT3a0V/QQH+sErxV4XUWDHx0kkFy25bPmBMBQ6BU3HoHhhYcJB9JhP6NXUWKxnE0raXHB6U9KHpWdQCQI72qevp5fMzcm+AvC85rsynVQhruDA9fp9COe7N56cg1UKGSas89vrN+WlGLYTwi5W+0xYdKEGtGCeNJwXKDU0XqU5uQYnWsMwTENLGtbQMvoGjIFIEMzCRal4rnBAg7D/CSn8MsCvS+FDJJAzoiioJEhZJgAp9n2+1Yznr7H+6eT4YkJ9Mpj60ImcW4i4iHDLn9RydB8dx3QYm3rsX6n4VRrZDsYK6DCGwkwd5n3/INFEpk16fYpP6JtMQpqEMzcOfQGAHXBTEGzuLJ03GYQL9bmV2/7ExDlRf+Uvf1sM2frRtCWmal12pMgtonvSCtR4n1CLUZRdTHDHP1Otwqd+rcdlavnKjUB/OYXQHUJzpNyFoKpQK+2OgrEKpGyIgIBgn2y9QHnTJihZOpEvOKIoHAMGAXHmj21Lym39Mbiow4IF+77xNuewziNVBxr6KD5e+9HzZSBIlUa/AmsDFJFXeyrQakR3FwowTGcADJHcEfhGkXYNGSYo4dh4bxwLM+28xjiqkdn0/3R4UEkvcBrBfn/SzBc1XhKM2VPlJgKSorjDac96V2UnQYXl1/yZPT4DVelgO+soMjexXwYO58VLl5xInQUZI8jc3H2CPnCNb9X05nOxIy4MlecasTqGK6s2az4RjpF2cQP2G28R+7wDPsZDZC/kWtjdoHC7SpdPmqQrUAhMwKVuxCmYTiD9q/O7GHtZvPSN0CAUQN/rymXZNniYLlJDE70bsk6Xxsh4kDOdxe7A2wo7P9F5YvqqRDI6brf79yPCSp4I0jVoO4YnLYtX5nzspR5WB4AKOYtR1ujXbOQpPyYDvfRE3FN5zw0i7reehdi7yV0YDRKRllGCGRk5Yz+Uv1fYl2ZwrnGsqsjgAVo0xEUba8ohjaNMJNwTwZA/wBDWFSCpg1eUH8MYL2zdioxRTqgGQrDZxQyNzyBJPXZF0+oxITJAbj7oNC5JwgDMUJaM5GqlGCWc//KCIrI+aclEe4IA0uzv7cuj6GCdaJONpi13O544vbtIHBF+A+JeDFUQNy61Gki3rtyQ4aUywn6ru314/dkGiP8Iwjo0J/2Txs49ZkwEl4mx+iYUUO55I6pJzU4P+7RRs+DXZkyKUYZqVWrPF4I94m4Wx1tXeE74o9GuX977yvJ/jkdak8+AmoHVjI15V+WwBdARFV2IPirJgVMdsg1Pez2VNHqa7EHWdTkl3XTcyjG9BiueWFvQfXI8aWSkuuRmqi/HUuzqyvLJfNfs0txMqldYYflWB1BS31WkuPJGGwXUCpjiQSktkuBMWwHjSkQxeehqw1Kgz0Trzm7QbtgxiEPDVmWCNCAeCfROTphd1ZNOhzLy6XfJyG6Xgd5MCAZw4xie0Sj5AnY1/akDgNS9YFl3Y06vd6FAsg2gVQJtzG7LVq1OH2frbXNHWH/NY89NNZ4QUSJqL2yEcGADbT38X0bGdukqYlSoliKOcsSTuqhcaemUeYLLoI8+MZor2RxXTRThF1LrHfqf/5LcLAjdl4EERgUysYS2geE+yFdasU91UgUDsc2cSQ1ZoT9+uLOwdgAmifwQqF028INc2IQEDfTmUw3eZxvz7Ud1z3xc1PQfeCvfKsB9jOhRj7rFyb9XcDWLcYj0bByosychMezMLVkFiYcdBBQtvI6K0KRuOZQH2kBsYHJaXTkup8F0eIhO1/GcIwWKpr2mouB7g5TUDJNvORXPXa/mU8bh27TAZYBe2sKx4NSv5OjnHIWD2RuysCzBlUfeNXhDd2jxnHoUlheJ3jBApzURy0fwm2FwwsSU0caQGl0Kv8hopRQE211NnvtLRsmCNrhhpEDoNiZEzD2QdJWKbRRWnaFedXHAELSN0t0bfsCsMf0ktfBoXBoNA+nZN9+pSlmuzspFevmsqqcMllzzvkyXrzoA+Ryo1ePXpdGOoJvhyru+EBRsmOp7MXZ0vNUMUqHLUoKglg1p73sWeZmPc+KAw0pE2zIsFFE5H4192KwDvDxdxEYoDBDNZjbg2bmADTeUKK57IPD4fTYF4c6EnXx/teYMORBDtIhPJneiZny7Nv/zG+YmekIKCoxr6kauE2bZtBLufetNG0BtBY7f+/ImUypMBvdWu/Q7vTMRzw5aQGZWuc1V0HEsItFYMIBnoKGZ0xcarba/TYZq50kCaflFysYjA4EDKHqGdpYWdKYmm+a7TADmW35yfnOYpZYrkpVEtiqF0EujI00aeplNs2k+qyFZNeE3CDPL9P6b4PQ/kataHkVpLSEVGK7EX6rAa7IVNrvZtFvOA6okKvBgMtFDAGZOx88MeBcJ8AR3AgUUeIznAN6tjCUipGDZONm1FjWJp4A3QIzSaIOmZ7DvF/ysYYbM/fFDOV0jntAjRdapxJxL0eThpEhKOjCDDq2ks+3GrwxqIFKLe1WdOzII8XIOPGnwy6LKXVfpSDOTEfaRsGujhpS4hBIsMOqHbl16PJxc4EkaVu9wpEYlF/84NSv5Zum4drMfp9yXbzzAOJqqS4YkI4cBrFrC7bMPiCfgI3nNZAqkk3QOZqR+yyqx+nDQKBBBZ7QKrfGMCL+XpqFaBJU0wpkBdAhbR4hJsmT5aynlvkouoxm/NjD5oe6BzVIO9uktM+/5dEC5P7vZvarmuO/lKXz4sBabVPIATuKTrwbJP8XUkdM6uEctHKXICUJGjaZIWRbZp8czquQYfY6ynBUCfIU+gG6wqSIBmYIm9pZpXdaL121V7q0VjDjmQnXvMe7ysoEZnZL15B0SpxS1jjd83uNIOKZwu5MPzg2NhOx3xMOPYwEn2CUzbSrwAs5OAtrz3GAaUkJOU74XwjaYUmGJdZBS1NJVkGYrToINLKDjxcuIlyfVsKQSG/G4DyiO2SlQvJ0d0Ot1uOG5IFSAkq+PRVMgVMDvOIJMdqjeCFKUGRWBW9wigYvcbU7CQL/7meF2KZAaWl+4y9uhowAX7elogAvItAAxo2+SFxGRsHGEW9BnhlTuWigYxRcnVUBRQHV41LV+Fr5CJYV7sHfeywswx4XMtUx6EkBhR+q8AXXUA8uPJ73Pb49i9KG9fOljvXeyFj9ixgbo6CcbAJ7WHWqKHy/h+YjBwp6VcN7M89FGzQ04qbrQtgrOFybg3gQRTYG5xn73ArkfQWjCJROwy3J38Dx/D7jOa6BBNsitEw1wGq780EEioOeD+ZGp2J66ADiVGMayiHYucMk8nTK2zzT9CnEraAk95kQjy4k0GRElLL5YAKLQErJ5rp1eay9O4Fb6yJGm9U4FaMwPGxtKD6odIIHKoWnhKo1U8KIpFC+MVn59ZXmc7ZTBZfsg6FQ8W10YfTr4u0nYrpHZbZ1jXiLmooF0cOm0+mPnJBXQtepc7n0BqOipNCqI6yyloTeRShNKH04FIo0gcMk0H/xThyN4pPAWjDDkEp3lNNPRNVfpMI44CWRlRgViP64eK0JSRp0WUvCWYumlW/c58Vcz/yMwVcW5oYb9+26TEhwvbxiNg48hl1VI1UXTU//Eta+BMKnGUivctfL5wINDD0giQL1ipt6U7C9cd4+lgqY2lMUZ02Uv6Prs+ZEZer7ZfWBXVghlfOOrClwsoOFKzWEfz6RZu1eCs+K8fLvkts5+BX0gyrFYve0C3qHrn5U/Oh6D/CihmWIrY7HUZRhJaxde+tldu6adYJ+LeXupQw0XExC36RETdNFxcq9glMu4cNQSX9cqR/GQYp+IxUkIcNGWVU7ZtGa6P3XAyodRt0XeS3Tp01AnCh0ZbUh4VrSZeV9RWfSoWyxnY3hzcZ30G/InDq4wxRrEejreBxnhIQbkxenxkaxl+k7eLUQkUR6vKJ2iDFNGX3WmVA1yaOH+mvhBd+sE6vacQzFobwY5BqEAFmejwW5ne7HtVNolOUgJc8CsUxmc/LBi8N5mu9VsIA5HyErnS6zeCz7VLI9+n/hbT6hTokMXTVyXJRKSG2hd2labXTbtmK4fNH3IZBPreSA4FMeVouVN3zG5x9CiGpLw/3pceo4qGqp+rVp+z+7yQ98oEf+nyH4F3+J9IheDBa94Wi63zJbLBCIZm7P0asHGpIJt3PzE3m0S4YIWyXBCVXGikj8MudDPB/6Nm2v4IxJ5gU0ii0guy5SUHqGUYzTP0jIJU5E82RHUXtX4lDdrihBLdP1YaG1AGUC12rQKuIaGvCpMjZC9bWSCYnjDlvpWbkdXMTNeBHLKiuoozMGIvkczmP0aRJSJ8PYnLCVNhKHXBNckH79e8Z8Kc2wUej4sQZoH8qDRGkg86maW/ZQWGNnLcXmq3FlXM6ssR/3P6E/bHMvm6HLrv1yRixit25JsH3/IOr2UV4BWJhxXW5BJ6Xdr07n9kF3ZNAk6/Xpc5MSFmYJ2R7bdL8Kk7q1OU9Elg/tCxJ8giT27wSTySF0GOxg4PbYJdi/Nyia9Nn89CGDulfJemm1aiEr/eleGSN+5MRrVJ4K6lgyTTIW3i9cQ0dAi6FHt0YMbH3wDSAtGLSAccezzxHitt1QdhW36CQgPcA8vIIBh3/JNjf/Obmc2yzpk8edSlS4lVdwgW5vzbYEyFoF4GCBBby1keVNueHAH+evi+H7oOVfS3XuPQSNTXOONAbzJeSb5stwdQHl1ZjrGoE49I8+A9j3t+ahhQj74FCSWpZrj7wRSFJJnnwi1T9HL5qrCFW/JZq6P62XkMWTb+u4lGpKfmmwiJWx178GOG7KbrZGqyWwmuyKWPkNswkZ1q8uptUlviIi+AXh2bOOTOLsrtNkfqbQJeh24reebkINLkjut5r4d9GR/r8CBa9SU0UQhsnZp5cP+RqWCixRm7i4YRFbtZ4EAkhtNa6jHb6gPYQv7MKqkPLRmX3dFsK8XsRLVZ6IEVrCbmNDc8o5mqsogjAQfoC9Bc7R6gfw03m+lQpv6kTfhxscDIX6s0w+fBxtkhjXAXr10UouWCx3C/p/FYwJRS/AXRKkjOb5CLmK4XRe0+xeDDwVkJPZau52bzLEDHCqV0f44pPgKOkYKgTZJ33fmk3Tu8SdxJ02SHM8Fem5SMsWqRyi2F1ynfRJszcFKykdWlNqgDA/L9lKYBmc7Zu/q9ii1FPF47VJkqhirUob53zoiJtVVRVwMR34gV9iqcBaHbRu9kkvqk3yMpfRFG49pKKjIiq7h/VpRwPGTHoY4cg05X5028iHsLvUW/uz+kjPyIEhhcKUwCkJAwbR9pIEGOn8z6svAO8i89sJ3dL5qDWFYbS+HGPRMxYwJItFQN86YESeJQhn2urGiLRffQeLptDl8dAgb+Tp47UQPxWOw17OeChLN1WnzlkPL1T5O+O3Menpn4C3IY5LEepHpnPeZHbvuWfeVtPlkH4LZjPbBrkJT3NoRJzBt86CO0Xq59oQ+8dsm0ymRcmQyn8w71mhmcuEI5byuF+C88VPYly2sEzjlzAQ3vdn/1+Hzguw6qFNNbqenhZGbdiG6RwZaTG7jTA2X9RdXjDN9yj1uQpyO4Lx8KRAcZcbZMafp4wPOd5MdXoFY52V1A8M9hi3sso93+uprE0qYNMjkE22CvK4HuUxqN7oIz5pWuETq1lQAjqlSlqdD2Rnr/ggp/TVkQYjn9lMfYelk2sH5HPdopYo7MHwlV1or9Bxf+QCyLzm92vzG2wjiIjC/ZHEJzeroJl6bdFPTpZho5MV2U86fLQqxNlGIMqCGy+9WYhJ8ob1r0+Whxde9L2PdysETv97O+xVw+VNN1TZSQN5I6l9m5Ip6pLIqLm4a1B1ffH6gHyqT9p82NOjntRWGIofO3bJz5GhkvSWbsXueTAMaJDou99kGLqDlhwBZNEQ4mKPuDvVwSK4WmLluHyhA97pZiVe8g+JxmnJF8IkV/tCs4Jq/HgOoAEGR9tCDsDbDmi3OviUQpG5D8XmKcSAUaFLRXb2lmJTNYdhtYyfjBYZQmN5qT5CNuaD3BVnlkCk7bsMW3AtXkNMMTuW4HjUERSJnVQ0vsBGa1wo3Qh7115XGeTF3NTz8w0440AgU7c3bSXO/KMINaIWXd0oLpoq/0/QJxCQSJ9XnYy1W7TYLBJpHsVWD1ahsA7FjNvRd6mxCiHsm8g6Z0pnzqIpF1dHUtP2ITU5Z1hZHbu+L3BEEStBbL9XYvGfEakv1bmf+bOZGnoiuHEdlBnaChxYKNzB23b8sw8YyT7Ajxfk49eJIAvdbVkdFCe2J0gMefhQ0bIZxhx3fzMIysQNiN8PgOUKxOMur10LduigREDRMZyP4oGWrP1GFY4t6groASsZ421os48wAdnrbovNhLt7ScNULkwZ5AIZJTrbaKYTLjA1oJ3sIuN/aYocm/9uoQHEIlacF1s/TM1fLcPTL38O9fOsjMEIwoPKfvt7opuI9G2Hf/PR4aCLDQ7wNmIdEuXJ/QNL72k5q4NejAldPfe3UVVqzkys8YZ/jYOGOp6c+YzRCrCuq0M11y7TiN6qk7YXRMn/gukxrEimbMQjr3jwRM6dKVZ4RUfWQr8noPXLJq6yh5R3EH1IVOHESst/LItbG2D2vRsZRkAObzvQAAD3mb3/G4NzopI0FAiHfbpq0X72adg6SRj+8OHMShtFxxLZlf/nLgRLbClwl5WmaYSs+yEjkq48tY7Z2bE0N91mJwt+ua0NlRJIDh0HikF4UvSVorFj2YVu9YeS5tfvlVjPSoNu/Zu6dEUfBOT555hahBdN3Sa5Xuj2Rvau1lQNIaC944y0RWj9UiNDskAK1WoL+EfXcC6IbBXFRyVfX/WKXxPAwUyIAGW8ggZ08hcijKTt1YKnUO6QPvcrmDVAb0FCLIXn5id4fD/Jx4tw/gbXs7WF9b2RgXtPhLBG9vF5FEkdHAKrQHZAJC/HWvk7nvzzDzIXZlfFTJoC3JpGgLPBY7SQTjGlUvG577yNutZ1hTfs9/1nkSXK9zzKLRZ3VODeKUovJe0WCq1zVMYxCJMenmNzPIU2S8TA4E7wWmbNkxq9rI2dd6v0VpcAPVMxnDsvWTWFayyqvKZO7Z08a62i/oH2/jxf8rpmfO64in3FLiL1GX8IGtVE9M23yGsIqJbxDTy+LtaMWDaPqkymb5VrQdzOvqldeU0SUi6IirG8UZ3jcpRbwHa1C0Dww9G/SFX3gPvTJQE+kyz+g1BeMILKKO+olcHzctOWgzxYHnOD7dpCRtuZEXACjgqesZMasoPgnuDC4nUviAAxDc5pngjoAITIkvhKwg5d608pdrZcA+qn5TMT6Uo/QzBaOxBCLTJX3Mgk85rMfsnWx86oLxf7p2PX5ONqieTa/qM3tPw4ZXvlAp83NSD8F7+ZgctK1TpoYwtiU2h02HCGioH5tkVCqNVTMH5p00sRy2JU1qyDBP2CII/Dg4WDsIl+zgeX7589srx6YORRQMBfKbodbB743Tl4WLKOEnwWUVBsm94SOlCracU72MSyj068wdpYjyz1FwC2bjQnxnB6Mp/pZ+yyZXtguEaYB+kqhjQ6UUmwSFazOb+rhYjLaoiM+aN9/8KKn0zaCTFpN9eKwWy7/u4EHzO46TdFSNjMfn2iPSJwDPCFHc0I1+vjdAZw5ZjqR/uzi9Zn20oAa5JnLEk/EA3VRWE7J/XrupfFJPtCUuqHPpnlL7ISJtRpSVcB8qsZCm2QEkWoROtCKKxUh3yEcMbWYJwk6DlEBG0bZP6eg06FL3v6RPb7odGuwm7FN8fG4woqtB8e7M5klPpo97GoObNwt+ludTAmxyC5hmcFx+dIvEZKI6igFKHqLH01iY1o7903VzG9QGetyVx5RNmBYUU+zIuSva/yIcECUi4pRmE3VkF2avqulQEUY4yZ/wmNboBzPmAPey3+dSYtBZUjeWWT0pPwCz4Vozxp9xeClIU60qvEFMQCaPvPaA70WlOP9f/ey39macvpGCVa+zfa8gO44wbxpJUlC8GN/pRMTQtzY8Z8/hiNrU+Zq64ZfFGIkdj7m7abcK1EBtws1X4J/hnqvasPvvDSDYWN+QcQVGMqXalkDtTad5rYY0TIR1Eqox3czwPMjKPvF5sFv17Thujr1IZ1Ytl4VX1J0vjXKmLY4lmXipRAro0qVGEcXxEVMMEl54jQMd4J7RjgomU0j1ptjyxY+cLiSyXPfiEcIS2lWDK3ISAy6UZ3Hb5vnPncA94411jcy75ay6B6DSTzK6UTCZR9uDANtPBrvIDgjsfarMiwoax2OlLxaSoYn4iRgkpEGqEkwox5tyI8aKkLlfZ12lO11TxsqRMY89j5JaO55XfPJPDL1LGSnC88Re9Ai+Nu5bZjtwRrvFITUFHPR4ZmxGslQMecgbZO7nHk32qHxYkdvWpup07ojcMCaVrpFAyFZJJbNvBpZfdf39Hdo2kPtT7v0/f8R/B5Nz4f1t9/3zNM/7n6SUHfcWk5dfQFJvcJMgPolGCpOFb/WC0FGWU2asuQyT+rm88ZKZ78Cei/CAh939CH0JYbpZIPtxc2ufXqjS3pHH9lnWK4iJ7OjR/EESpCo2R3MYKyE7rHfhTvWho4cL1QdN4jFTyR6syMwFm124TVDDRXMNveI1Dp/ntwdz8k8kxw7iFSx6+Yx6O+1LzMVrN0BBzziZi9kneZSzgollBnVwBh6oSOPHXrglrOj+QmR/AESrhDpKrWT+8/AiMDxS/5wwRNuGQPLlJ9ovomhJWn8sMLVItQ8N/7IXvtD8kdOoHaw+vBSbFImQsv/OCAIui99E+YSIOMlMvBXkAt+NAZK8wB9Jf8CPtB+TOUOR+z71d/AFXpPBT6+A5FLjxMjLIEoJzrQfquvxEIi+WoUzGR1IzQFNvbYOnxb2PyQ0kGdyXKzW2axQL8lNAXPk6NEjqrRD1oZtKLlFoofrXw0dCNWASHzy+7PSzOUJ3XtaPZsxLDjr+o41fKuKWNmjiZtfkOzItvlV2MDGSheGF0ma04qE3TUEfqJMrXFm7DpK+27DSvCUVf7rbNoljPhha5W7KBqVq0ShUSTbRmuqPtQreVWH4JET5yMhuqMoSd4r/N8sDmeQiQQvi1tcZv7Moc7dT5X5AtCD6kNEGZOzVcNYlpX4AbTsLgSYYliiPyVoniuYYySxsBy5cgb3pD+EK0Gpb0wJg031dPgaL8JZt6sIvzNPEHfVPOjXmaXj4bd4voXzpZ5GApMhILgMbCEWZ2zwgdeQgjNHLbPIt+KqxRwWPLTN6HwZ0Ouijj4UF+Sg0Au8XuIKW0WxlexdrFrDcZJ8Shauat3X0XmHygqgL1nAu2hrJFb4wZXkcS+i36KMyU1yFvYv23bQUJi/3yQpqr/naUOoiEWOxckyq/gq43dFou1DVDaYMZK9tho7+IXXokBCs5GRfOcBK7g3A+jXQ39K4YA8PBRW4m5+yR0ZAxWJncjRVbITvIAPHYRt1EJ3YLiUbqIvoKHtzHKtUy1ddRUQ0AUO41vonZDUOW+mrszw+SW/6Q/IUgNpcXFjkM7F4CSSQ2ExZg85otsMs7kqsQD4OxYeBNDcSpifjMoLb7GEbGWTwasVObmB/bfPcUlq0wYhXCYEDWRW02TP5bBrYsKTGWjnWDDJ1F7zWai0zW/2XsCuvBQjPFcTYaQX3tSXRSm8hsAoDdjArK/OFp6vcWYOE7lizP0Yc+8p16i7/NiXIiiQTp7c7Xus925VEtlKAjUdFhyaiLT7VxDagprMFwix4wZ05u0qj7cDWFd0W9OYHIu3JbJKMXRJ1aYNovugg+QqRN7fNHSi26VSgBpn+JfMuPo3aeqPWik/wI5Rz3BWarPQX4i5+dM0npwVOsX+KsOhC7vDg+OJsz4Q5zlnIeflUWL6QYMbf9WDfLmosLF4Qev3mJiOuHjoor/dMeBpA9iKDkMjYBNbRo414HCxjsHrB4EXNbHzNMDHCLuNBG6Sf+J4MZ/ElVsDSLxjIiGsTPhw8BPjxbfQtskj+dyNMKOOcUYIRBEIqbazz3lmjlRQhplxq673VklMMY6597vu+d89ec/zq7Mi4gQvh87ehYbpOuZEXj5g/Q7S7BFDAAB9DzG35SC853xtWVcnZQoH54jeOqYLR9NDuwxsVthTV7V99n/B7HSbAytbEyVTz/5NhJ8gGIjG0E5j3griULUd5Rg7tQR+90hJgNQKQH2btbSfPcaTOfIexc1db1BxUOhM1vWCpLaYuKr3FdNTt/T3PWCpEUWDKEtzYrjpzlL/wri3MITKsFvtF8QVV/NhVo97aKIBgdliNc10dWdXVDpVtsNn+2UIolrgqdWA4EY8so0YvB4a+aLzMXiMAuOHQrXY0tr+CL10JbvZzgjJJuB1cRkdT7DUqTvnswVUp5kkUSFVtIIFYK05+tQxT6992HHNWVhWxUsD1PkceIrlXuUVRogwmfdhyrf6zzaL8+c0L7GXMZOteAhAVQVwdJh+7nrX7x4LaIIfz2F2v7Dg/uDfz2Fa+4gFm2zHAor8UqimJG3VTJtZEoFXhnDYXvxMJFc6ku2bhbCxzij2z5UNuK0jmp1mnvkVNUfR+SEmj1Lr94Lym75PO7Fs0MIr3GdsWXRXSfgLTVY0FLqba97u1In8NAcY7IC6TjWLigwKEIm43NxTdaVTv9mcKkzuzBkKd8x/xt1p/9BbP7Wyb4bpo1K1gnOpbLvKz58pWl3B55RJ/Z5mRDLPtNQg14jdOEs9+h/V5UVpwrAI8kGbX8KPVPDIMfIqKDjJD9UyDOPhjZ3vFAyecwyq4akUE9mDOtJEK1hpDyi6Ae87sWAClXGTiwPwN7PXWwjxaR79ArHRIPeYKTunVW24sPr/3HPz2IwH8oKH4OlWEmt4BLM6W5g4kMcYbLwj2usodD1088stZA7VOsUSpEVl4w7NMb1EUHMRxAxLF0CIV+0L3iZb+ekB1vSDSFjAZ3hfLJf7gFaXrOKn+mhR+rWw/eTXIcAgl4HvFuBg1LOmOAwJH3eoVEjjwheKA4icbrQCmvAtpQ0mXG0agYp5mj4Rb6mdQ+RV4QBPbxMqh9C7o8nP0Wko2ocnCHeRGhN1XVyT2b9ACsL+6ylUy+yC3QEnaKRIJK91YtaoSrcWZMMwxuM0E9J68Z+YyjA0g8p1PfHAAIROy6Sa04VXOuT6A351FOWhKfTGsFJ3RTJGWYPoLk5FVK4OaYR9hkJvezwF9vQN1126r6isMGXWTqFW+3HL3I/jurlIdDWIVvYY+s6yq7lrFSPAGRdnU7PVwY/SvWbZGpXzy3BQ2LmAJlrONUsZs4oGkly0V267xbD5KMY8woNNsmWG1VVgLCra8aQBBcI4DP2BlNwxhiCtHlaz6OWFoCW0vMR3ErrG7JyMjTSCnvRcsEHgmPnwA6iNpJ2DrFb4gLlhKJyZGaWkA97H6FFdwEcLT6DRQQL++fOkVC4cYGW1TG/3iK5dShRSuiBulmihqgjR45Vi03o2RbQbP3sxt90VxQ6vzdlGfkXmmKmjOi080JSHkLntjvsBJnv7gKscOaTOkEaRQqAnCA4HWtB4XnMtOhpRmH2FH8tTXrIjAGNWEmudQLCkcVlGTQ965Kh0H6ixXbgImQP6b42B49sO5C8pc7iRlgyvSYvcnH9FgQ3azLbQG2cUW96SDojTQStxkOJyOuDGTHAnnWkz29aEwN9FT8EJ4yhXOg+jLTrCPKeEoJ9a7lDXOjEr8AgX4BmnMQ668oW0zYPyQiVMPxKRHtpfnEEyaKhdzNVThlxxDQNdrHeZiUFb6NoY2KwvSb7BnRcpJy+/g/zAYx3fYSN5QEaVD2Y1VsNWxB0BSO12MRsRY8JLfAezRMz5lURuLUnG1ToKk6Q30FughqWN6gBNcFxP/nY/iv+iaUQOa+2Nuym46wtI/DvSfzSp1jEi4SdYBE7YhTiVV5cX9gwboVDMVgZp5YBQlHOQvaDNfcCoCJuYhf5kz5kwiIKPjzgpcRJHPbOhJajeoeRL53cuMahhV8Z7IRr6M4hW0JzT7mzaMUzQpm866zwM7Cs07fJYXuWvjAMkbe5O6V4bu71sOG6JQ4oL8zIeXHheFVavzxmlIyBkgc9IZlEDplMPr8xlcyss4pVUdwK1e7CK2kTsSdq7g5SHRAl3pYUB9Ko4fsh4qleOyJv1z3KFSTSvwEcRO/Ew8ozEDYZSqpfoVW9uhJfYrNAXR0Z3VmeoAD+rVWtwP/13sE/3ICX3HhDG3CMc476dEEC0K3umSAD4j+ZQLVdFOsWL2C1TH5+4KiSWH+lMibo+B55hR3Gq40G1n25sGcN0mEcoU2wN9FCVyQLBhYOu9aHVLWjEKx2JIUZi5ySoHUAI9b8hGzaLMxCZDMLhv8MkcpTqEwz9KFDpCpqQhVmsGQN8m24wyB82FAKNmjgfKRsXRmsSESovAwXjBIoMKSG51p6Um8b3i7GISs7kjTq/PZoioCfJzfKdJTN0Q45kQEQuh9H88M3yEs3DbtRTKALraM0YC8laiMiOOe6ADmTcCiREeAWZelBaEXRaSuj2lx0xHaRYqF65O0Lo5OCFU18A8cMDE4MLYm9w2QSr9NgQAIcRxZsNpA7UJR0e71JL+VU+ISWFk5I97lra8uGg7GlQYhGd4Gc6rxsLFRiIeGO4abP4S4ekQ1fiqDCy87GZHd52fn5aaDGuvOmIofrzpVwMvtbreZ/855OaXTRcNiNE0wzGZSxbjg26v8ko8L537v/XCCWP2MFaArJpvnkep0pA+O86MWjRAZPQRfznZiSIaTppy6m3p6HrNSsY7fDtz7Cl4V/DJAjQDoyiL2uwf1UHVd2AIrzBUSlJaTj4k6NL97a/GqhWKU9RUmjnYKpm2r+JYUcrkCuZKvcYvrg8pDoUKQywY9GDWg03DUFSirlUXBS5SWn/KAntnf0IdHGL/7mwXqDG+LZYjbEdQmqUqq4y54TNmWUP7IgcAw5816YBzwiNIJiE9M4lPCzeI/FGBeYy3p6IAmH4AjXXmvQ4Iy0Y82NTobcAggT2Cdqz6Mx4TdGoq9fn2etrWKUNFyatAHydQTVUQ2S5OWVUlugcNvoUrlA8cJJz9MqOa/W3iVno4zDHfE7zhoY5f5lRTVZDhrQbR8LS4eRLz8iPMyBL6o4PiLlp89FjdokQLaSBmKHUwWp0na5fE3v9zny2YcDXG/jfI9sctulHRbdkI5a4GOPJx4oAJQzVZ/yYAado8KNZUdEFs9ZPiBsausotXMNebEgr0dyopuqfScFJ3ODNPHgclACPdccwv0YJGQdsN2lhoV4HVGBxcEUeUX/alr4nqpcc1CCR3vR7g40zteQg/JvWmFlUE4mAiTpHlYGrB7w+U2KdSwQz2QJKBe/5eiixWipmfP15AFWrK8Sh1GBBYLgzki1wTMhGQmagXqJ2+FuqJ8f0XzXCVJFHQdMAw8xco11HhM347alrAu+wmX3pDFABOvkC+WPX0Uhg1Z5MVHKNROxaR84YV3s12UcM+70cJ460SzEaKLyh472vOMD3XnaK7zxZcXlWqenEvcjmgGNR2OKbI1s8U+iwiW+HotHalp3e1MGDy6BMVIvajnAzkFHbeVsgjmJUkrP9OAwnEHYXVBqYx3q7LvXjoVR0mY8h+ZaOnh053pdsGkmbqhyryN01eVHySr+CkDYkSMeZ1xjPNVM+gVLTDKu2VGsMUJqWO4TwPDP0VOg2/8ITbAUaMGb4LjL7L+Pi11lEVMXTYIlAZ/QHmTENjyx3kDkBdfcvvQt6tKk6jYFM4EG5UXDTaF5+1ZjRz6W7MdJPC+wTkbDUim4p5QQH3b9kGk2Bkilyeur8Bc20wm5uJSBO95GfYDI1EZipoRaH7uVveneqz43tlTZGRQ4a7CNmMHgXyOQQOL6WQkgMUTQDT8vh21aSdz7ERiZT1jK9F+v6wgFvuEmGngSvIUR2CJkc5tx1QygfZnAruONobB1idCLB1FCfO7N1ZdRocT8/Wye+EnDiO9pzqIpnLDl4bkaRKW+ekBVwHn46Shw1X0tclt/0ROijuUB4kIInrVJU4buWf4YITJtjOJ6iKdr1u+flgQeFH70GxKjhdgt/MrwfB4K/sXczQ+9zYcrD4dhY6qZhZ010rrxggWA8JaZyg2pYij8ieYEg1aZJkZK9O1Re7sB0iouf60rK0Gd+AYlp7soqCBCDGwfKeUQhCBn0E0o0GS6PdmjLi0TtCYZeqazqwN+yNINIA8Lk3iPDnWUiIPLGNcHmZDxfeK0iAdxm/T7LnN+gemRL61hHIc0NCAZaiYJR+OHnLWSe8sLrK905B5eEJHNlWq4RmEXIaFTmo49f8w61+NwfEUyuJAwVqZCLFcyHBKAcIVj3sNzfEOXzVKIndxHw+AR93owhbCxUZf6Gs8cz6/1VdrFEPrv330+9s6BtMVPJ3zl/Uf9rUi0Z/opexfdL3ykF76e999GPfVv8fJv/Y/+/5hEMon1tqNFyVRevV9y9/uIvsG3dbB8GRRrgaEXfhx+2xeOFt+cEn3RZanNxdEe2+B6MHpNbrRE53PlDifPvFcp4kO78ILR0T4xyW/WGPyBsqGdoA7zJJCu1TKbGfhnqgnRbxbB2B3UZoeQ2bz2sTVnUwokTcTU21RxN1PYPS3Sar7T0eRIsyCNowr9amwoMU/od9s2APtiKNL6ENOlyKADstAEWKA+sdKDhrJ6BOhRJmZ+QJbAaZ3/5Fq0/lumCgEzGEbu3yi0Y4I4EgVAjqxh4HbuQn0GrRhOWyAfsglQJAVL1y/6yezS2k8RE2MstJLh92NOB3GCYgFXznF4d25qiP4ZCyI4RYGesut6FXK6GwPpKK8WHEkhYui0AyEmr5Ml3uBFtPFdnioI8RiCooa7Z1G1WuyIi3nSNglutc+xY8BkeW3JJXPK6jd2VIMpaSxpVtFq+R+ySK9J6WG5Qvt+C+QH1hyYUOVK7857nFmyDBYgZ/o+AnibzNVqyYCJQvyDXDTK+iXdkA71bY7TL3bvuLxLBQ8kbTvTEY9aqkQ3+MiLWbEgjLzOH+lXgco1ERgzd80rDCymlpaRQbOYnKG/ODoFl46lzT0cjM5FYVvv0qLUbD5lyJtMUaC1pFlTkNONx6lliaX9o0i/1vws5bNKn5OuENQEKmLlcP4o2ZmJjD4zzd3Fk32uQ4uRWkPSUqb4LBe3EXHdORNB2BWsws5daRnMfNVX7isPSb1hMQdAJi1/qmDMfRUlCU74pmnzjbXfL8PVG8NsW6IQM2Ne23iCPIpryJjYbVnm5hCvKpMa7HLViNiNc+xTfDIaKm3jctViD8A1M9YPJNk003VVr4Zo2MuGW8vil8SLaGpPXqG7I4DLdtl8a4Rbx1Lt4w5Huqaa1XzZBtj208EJVGcmKYEuaeN27zT9EE6a09JerXdEbpaNgNqYJdhP1NdqiPKsbDRUi86XvvNC7rME5mrSQtrzAZVndtSjCMqd8BmaeGR4l4YFULGRBeXIV9Y4yxLFdyoUNpiy2IhePSWzBofYPP0eIa2q5JP4j9G8at/AqoSsLAUuRXtvgsqX/zYwsE+of6oSDbUOo4RMJw+DOUTJq+hnqwKim9Yy/napyZNTc2rCq6V9jHtJbxGPDwlzWj/Sk3zF/BHOlT/fSjSq7FqlPI1q6J+ru8Aku008SFINXZfOfnZNOvGPMtEmn2gLPt+H4QLA+/SYe4j398auzhKIp2Pok3mPC5q1IN1HgR+mnEfc4NeeHYwd2/kpszR3cBn7ni9NbIqhtSWFW8xbUJuUPVOeeXu3j0IGZmFNiwaNZ6rH4/zQ2ODz6tFxRLsUYZu1bfd1uIvfQDt4YD/efKYv8VF8bHGDgK22w2Wqwpi43vNCOXFJZCGMqWiPbL8mil6tsmOTXAWCyMCw73e2rADZj2IK6rqksM3EXF2cbLb4vjB14wa/yXK5vwU+05MzERJ5nXsXsW21o7M+gO0js2OyKciP5uF2iXyb2DiptwQeHeqygkrNsqVCSlldxBMpwHi1vfc8RKpP/4L3Lmpq6DZcvhDDfxTCE3splacTcOtXdK2g303dIWBVe2wD/Gvja1cClFQ67gw0t1ZUttsUgQ1Veky8oOpS6ksYEc4bqseCbZy766SvL3FodmnahlWJRgVCNjPxhL/fk2wyvlKhITH/VQCipOI0dNcRa5B1M5HmOBjTLeZQJy237e2mobwmDyJNHePhdDmiknvLKaDbShL+Is1XTCJuLQd2wmdJL7+mKvs294whXQD+vtd88KKk0DXP8B1Xu9J+xo69VOuFgexgTrcvI6SyltuLix9OPuE6/iRJYoBMEXxU4shQMf4Fjqwf1PtnJ/wWSZd29rhZjRmTGgiGTAUQqRz+nCdjeMfYhsBD5Lv60KILWEvNEHfmsDs2L0A252351eUoYxAysVaCJVLdH9QFWAmqJDCODUcdoo12+gd6bW2boY0pBVHWL6LQDK5bYWh1V8vFvi0cRpfwv7cJiMX3AZNJuTddHehTIdU0YQ/sQ1dLoF2xQPcCuHKiuCWOY30DHe1OwcClLAhqAKyqlnIbH/8u9ScJpcS4kgp6HKDUdiOgRaRGSiUCRBjzI5gSksMZKqy7Sd51aeg0tgJ+x0TH9YH2Mgsap9N7ENZdEB0bey2DMTrBA1hn56SErNHf3tKtqyL9b6yXEP97/rc+jgD2N1LNUH6RM9AzP3kSipr06RkKOolR7HO768jjWiH1X92jA7dkg7gcNcjqsZCgfqWw0tPXdLg20cF6vnQypg7gLtkazrHAodyYfENPQZsdfnjMZiNu4nJO97D1/sQE+3vNFzrSDOKw+keLECYf7RJwVHeP/j79833oZ0egonYB2FlFE5qj02B/LVOMJQlsB8uNg3Leg4qtZwntsOSNidR0abbZmAK4sCzvt8Yiuz2yrNCJoH5O8XvX/vLeR/BBYTWj0sOPYM/jyxRd5+/JziKAABaPcw/34UA3aj/gLZxZgRCWN6m4m3demanNgsx0P237/Q+Ew5VYnJPkyCY0cIVHoFn2Ay/e7U4P19APbPFXEHX94N6KhEMPG7iwB3+I+O1jd5n6VSgHegxgaSawO6iQCYFgDsPSMsNOcUj4q3sF6KzGaH/0u5PQoAj/8zq6Uc9MoNrGqhYeb2jQo0WlGlXjxtanZLS24/OIN5Gx/2g684BPDQpwlqnkFcxpmP/osnOXrFuu4PqifouQH0eF5qCkvITQbJw/Zvy5mAHWC9oU+cTiYhJmSfKsCyt1cGVxisKu+NymEQIAyaCgud/V09qT3nk/9s/SWsYtha7yNpzBIMM40rCSGaJ9u6lEkl00vXBiEt7p9P5IBCiavynEOv7FgLqPdeqxRiCwuFVMolSIUBcoyfUC2e2FJSAUgYdVGFf0b0Kn2EZlK97yyxrT2MVgvtRikfdaAW8RwEEfN+B7/eK8bBdp7URpbqn1xcrC6d2UjdsKbzCjBFqkKkoZt7Mrhg6YagE7spkqj0jOrWM+UGQ0MUlG2evP1uE1p2xSv4dMK0dna6ENcNUF+xkaJ7B764NdxLCpuvhblltVRAf7vK5qPttJ/9RYFUUSGcLdibnz6mf7WkPO3MkUUhR2mAOuGv8IWw5XG1ZvoVMnjSAZe6T7WYA99GENxoHkMiKxHlCuK5Gd0INrISImHQrQmv6F4mqU/TTQ8nHMDzCRivKySQ8dqkpQgnUMnwIkaAuc6/FGq1hw3b2Sba398BhUwUZSAIO8XZvnuLdY2n6hOXws+gq9BHUKcKFA6kz6FDnpxLPICa3qGhnc97bo1FT/XJk48LrkHJ2CAtBv0RtN97N21plfpXHvZ8gMJb7Zc4cfI6MbPwsW7AilCSXMFIEUEmir8XLEklA0ztYbGpTTGqttp5hpFTTIqUyaAIqvMT9A/x+Ji5ejA4Bhxb/cl1pUdOD6epd3yilIdO6j297xInoiBPuEDW2/UfslDyhGkQs7Wy253bVnlT+SWg89zYIK/9KXFl5fe+jow2rd5FXv8zDPrmfMXiUPt9QBO/iK4QGbX5j/7Rx1c1vzsY8ONbP3lVIaPrhL4+1QrECTN3nyKavGG0gBBtHvTKhGoBHgMXHStFowN+HKrPriYu+OZ05Frn8okQrPaaxoKP1ULCS/cmKFN3gcH7HQlVjraCeQmtjg1pSQxeuqXiSKgLpxc/1OiZsU4+n4lz4hpahGyWBURLi4642n1gn9qz9bIsaCeEPJ0uJmenMWp2tJmIwLQ6VSgDYErOeBCfSj9P4G/vI7oIF+l/n5fp956QgxGvur77ynawAu3G9MdFbJbu49NZnWnnFcQHjxRuhUYvg1U/e84N4JTecciDAKb/KYIFXzloyuE1eYXf54MmhjTq7B/yBToDzzpx3tJCTo3HCmVPYfmtBRe3mPYEE/6RlTIxbf4fSOcaKFGk4gbaUWe44hVk9SZzhW80yfW5QWBHxmtUzvMhfVQli4gZTktIOZd9mjJ5hsbmzttaHQB29Am3dZkmx3g/qvYocyhZ2PXAWsNQiIaf+Q8W/MWPIK7/TjvCx5q2XRp4lVWydMc2wIQkhadDB0xsnw/kSEyGjLKjI4coVIwtubTF3E7MJ6LS6UOsJKj82XVAVPJJcepfewbzE91ivXZvOvYfsmMevwtPpfMzGmC7WJlyW2j0jh7AF1JLmwEJSKYwIvu6DHc3YnyLH9ZdIBnQ+nOVDRiP+REpqv++typYHIvoJyICGA40d8bR7HR2k7do6UQTHF4oriYeIQbxKe4Th6+/l1BjUtS9hqORh3MbgvYrStXTfSwaBOmAVQZzpYNqsAmQyjY56MUqty3c/xH6GuhNvNaG9vGbG6cPtBM8UA3e8r51D0AR9kozKuGGSMgLz3nAHxDNnc7GTwpLj7/6HeWp1iksDeTjwCLpxejuMtpMnGJgsiku1sOACwQ9ukzESiDRN77YNESxR5LphOlcASXA5uIts1LnBIcn1J7BLWs49DMALSnuz95gdOrTZr0u1SeYHinno/pE58xYoXbVO/S+FEMMs5qyWkMnp8Q3ClyTlZP52Y9nq7b8fITPuVXUk9ohG5EFHw4gAEcjFxfKb3xuAsEjx2z1wxNbSZMcgS9GKyW3R6KwJONgtA64LTyxWm8Bvudp0M1FdJPEGopM4Fvg7G/hsptkhCfHFegv4ENwxPeXmYhxwZy7js+BeM27t9ODBMynVCLJ7RWcBMteZJtvjOYHb5lOnCLYWNEMKC59BA7covu1cANa2PXL05iGdufOzkgFqqHBOrgQVUmLEc+Mkz4Rq8O6WkNr7atNkH4M8d+SD1t/tSzt3oFql+neVs+AwEI5JaBJaxARtY2Z4mKoUqxds4UpZ0sv3zIbNoo0J4fihldQTX3XNcuNcZmcrB5LTWMdzeRuAtBk3cZHYQF6gTi3PNuDJ0nmR+4LPLoHvxQIxRgJ9iNNXqf2SYJhcvCtJiVWo85TsyFOuq7EyBPJrAdhEgE0cTq16FQXhYPJFqSfiVn0IQnPOy0LbU4BeG94QjdYNB0CiQ3QaxQqD2ebSMiNjaVaw8WaM4Z5WnzcVDsr4eGweSLa2DE3BWViaxhZFIcSTjgxNCAfelg+hznVOYoe5VqTYs1g7WtfTm3e4/WduC6p+qqAM8H4ZyrJCGpewThTDPe6H7CzX/zQ8Tm+r65HeZn+MsmxUciEWPlAVaK/VBaQBWfoG/aRL/jSZIQfep/89GjasWmbaWzeEZ2R1FOjvyJT37O9B8046SRSKVEnXWlBqbkb5XCS3qFeuE9xb9+frEknxWB5h1D/hruz2iVDEAS7+qkEz5Ot5agHJc7WCdY94Ws61sURcX5nG8UELGBAHZ3i+3VulAyT0nKNNz4K2LBHBWJcTBX1wzf+//u/j/9+//v87+9/l9Lbh/L/uyNYiTsWV2LwsjaA6MxTuzFMqmxW8Jw/+IppdX8t/Clgi1rI1SN0UC/r6tX/4lUc2VV1OQReSeCsjUpKZchw4XUcjHfw6ryCV3R8s6VXm67vp4n+lcPV9gJwmbKQEsmrJi9c2vkwrm8HFbVYNTaRGq8D91t9n5+U+aD/hNtN3HjC/nC/vUoGFSCkXP+NlRcmLUqLbiUBl4LYf1U/CCvwtd3ryCH8gUmGITAxiH1O5rnGTz7y1LuFjmnFGQ1UWuM7HwfXtWl2fPFKklYwNUpF2IL/TmaRETjQiM5SJacI+3Gv5MBU8lP5Io6gWkawpyzNEVGqOdx4YlO1dCvjbWFZWbCmeiFKPSlMKtKcMFLs/KQxtgAHi7NZNCQ32bBAW2mbHflVZ8wXKi1JKVHkW20bnYnl3dKWJeWJOiX3oKPBD6Zbi0ZvSIuWktUHB8qDR8DMMh1ZfkBL9FS9x5r0hBGLJ8pUCJv3NYH+Ae8p40mZWd5m5fhobFjQeQvqTT4VKWIYfRL0tfaXKiVl75hHReuTJEcqVlug+eOIIc4bdIydtn2K0iNZPsYWQvQio2qbO3OqAlPHDDOB7DfjGEfVF51FqqNacd6QmgFKJpMfLp5DHTv4wXlONKVXF9zTJpDV4m1sYZqJPhotcsliZM8yksKkCkzpiXt+EcRQvSQqmBS9WdWkxMTJXPSw94jqI3varCjQxTazjlMH8jTS8ilaW8014/vwA/LNa+YiFoyyx3s/KswP3O8QW1jtq45yTM/DX9a8M4voTVaO2ebvw1EooDw/yg6Y1faY+WwrdVs5Yt0hQ5EwRfYXSFxray1YvSM+kYmlpLG2/9mm1MfmbKHXr44Ih8nVKb1M537ZANUkCtdsPZ80JVKVKabVHCadaLXg+IV8i5GSwpZti0h6diTaKs9sdpUKEpd7jDUpYmHtiX33SKiO3tuydkaxA7pEc9XIQEOfWJlszj5YpL5bKeQyT7aZSBOamvSHl8xsWvgo26IP/bqk+0EJUz+gkkcvlUlyPp2kdKFtt7y5aCdks9ZJJcFp5ZWeaWKgtnXMN3ORwGLBE0PtkEIek5FY2aVssUZHtsWIvnljMVJtuVIjpZup/5VL1yPOHWWHkOMc6YySWMckczD5jUj2mlLVquFaMU8leGVaqeXis+aRRL8zm4WuBk6cyWfGMxgtr8useQEx7k/PvRoZyd9nde1GUCV84gMX8Ogu/BWezYPSR27llzQnA97oo0pYyxobYUJfsj+ysTm9zJ+S4pk0TGo9VTG0KjqYhTmALfoDZVKla2b5yhv241PxFaLJs3i05K0AAIdcGxCJZmT3ZdT7CliR7q+kur7WdQjygYtOWRL9B8E4s4LI8KpAj7bE0dg7DLOaX+MGeAi0hMMSSWZEz+RudXbZCsGYS0QqiXjH9XQbd8sCB+nIVTq7/T/FDS+zWY9q7Z2fdq1tdLb6v3hKKVDAw5gjj6o9r1wHFROdHc18MJp4SJ2Ucvu+iQ9EgkekW8VCM+psM6y+/2SBy8tNN4a3L1MzP+OLsyvESo5gS7IQOnIqMmviJBVc6zbVG1n8eXiA3j46kmvvtJlewwNDrxk4SbJOtP/TV/lIVK9ueShNbbMHfwnLTLLhbZuO79ec5XvfgRwLFK+w1r5ZWW15rVFZrE+wKqNRv5KqsLNfpGgnoUU6Y71NxEmN7MyqwqAQqoIULOw/LbuUB2+uE75gJt+kq1qY4LoxV+qR/zalupea3D5+WMeaRIn0sAI6DDWDh158fqUb4YhAxhREbUN0qyyJYkBU4V2KARXDT65gW3gRsiv7xSPYEKLwzgriWcWgPr0sbZnv7m1XHNFW6xPdGNZUdxFiUYlmXNjDVWuu7LCkX/nVkrXaJhiYktBISC2xgBXQnNEP+cptWl1eG62a7CPXrnrkTQ5BQASbEqUZWMDiZUisKyHDeLFOaJILUo5f6iDt4ZO8MlqaKLto0AmTHVVbkGuyPa1R/ywZsWRoRDoRdNMMHwYTsklMVnlAd2S0282bgMI8fiJpDh69OSL6K3qbo20KfpNMurnYGQSr/stFqZ7hYsxKlLnKAKhsmB8AIpEQ4bd/NrTLTXefsE6ChRmKWjXKVgpGoPs8GAicgKVw4K0qgDgy1A6hFq1WRat3fHF+FkU+b6H4NWpOU3KXTxrIb2qSHAb+qhm8hiSROi/9ofapjxhyKxxntPpge6KL5Z4+WBMYkAcE6+0Hd3Yh2zBsK2MV3iW0Y6cvOCroXlRb2MMJtdWx+3dkFzGh2Pe3DZ9QpSqpaR/rE1ImOrHqYYyccpiLC22amJIjRWVAherTfpQLmo6/K2pna85GrDuQPlH1Tsar8isAJbXLafSwOof4gg9RkAGm/oYpBQQiPUoyDk2BCQ1k+KILq48ErFo4WSRhHLq/y7mgw3+L85PpP6xWr6cgp9sOjYjKagOrxF148uhuaWtjet953fh1IQiEzgC+d2IgBCcUZqgTAICm2bR8oCjDLBsmg+ThyhfD+zBalsKBY1Ce54Y/t9cwfbLu9SFwEgphfopNA3yNxgyDafUM3mYTovZNgPGdd4ZFFOj1vtfFW3u7N+iHEN1HkeesDMXKPyoCDCGVMo4GCCD6PBhQ3dRZIHy0Y/3MaE5zU9mTCrwwnZojtE+qNpMSkJSpmGe0EzLyFelMJqhfFQ7a50uXxZ8pCc2wxtAKWgHoeamR2O7R+bq7IbPYItO0esdRgoTaY38hZLJ5y02oIVwoPokGIzxAMDuanQ1vn2WDQ00Rh6o5QOaCRu99fwDbQcN0XAuqkFpxT/cfz3slGRVokrNU0iqiMAJFEbKScZdmSkTUznC0U+MfwFOGdLgsewRyPKwBZYSmy6U325iUhBQNxbAC3FLKDV9VSOuQpOOukJ/GAmu/tyEbX9DgEp6dv1zoU0IqzpG6gssSjIYRVPGgU1QAQYRgIT8gEV0EXr1sqeh2I6rXjtmoCYyEDCe/PkFEi/Q48FuT29p557iN+LCwk5CK/CZ2WdAdfQZh2Z9QGrzPLSNRj5igUWzl9Vi0rCqH8G1Kp4QMLkuwMCAypdviDXyOIk0AHTM8HBYKh3b0/F+DxoNj4ZdoZfCpQVdnZarqoMaHWnMLNVcyevytGsrXQEoIbubqWYNo7NRHzdc0zvT21fWVirj7g36iy6pxogfvgHp1xH1Turbz8QyyHnXeBJicpYUctbzApwzZ1HT+FPEXMAgUZetgeGMwt4G+DHiDT2Lu+PT21fjJCAfV16a/Wu1PqOkUHSTKYhWW6PhhHUlNtWzFnA7MbY+r64vkwdpfNB2JfWgWXAvkzd42K4lN9x7Wrg4kIKgXCb4mcW595MCPJ/cTfPAMQMFWwnqwde4w8HZYJFpQwcSMhjVz4B8p6ncSCN1X4klxoIH4BN2J6taBMj6lHkAOs8JJAmXq5xsQtrPIPIIp/HG6i21xMGcFgqDXSRF0xQg14d2uy6HgKE13LSvQe52oShF5Jx1R6avyL4thhXQZHfC94oZzuPUBKFYf1VvDaxIrtV6dNGSx7DO0i1p6CzBkuAmEqyWceQY7F9+U0ObYDzoa1iKao/cOD/v6Q9gHrrr1uCeOk8fST9MG23Ul0KmM3r+Wn6Hi6WAcL7gEeaykicvgjzkjSwFsAXIR81Zx4QJ6oosVyJkCcT+4xAldCcihqvTf94HHUPXYp3REIaR4dhpQF6+FK1H0i9i7Pvh8owu3lO4PT1iuqu+DkL2Bj9+kdfGAg2TXw03iNHyobxofLE2ibjsYDPgeEQlRMR7afXbSGQcnPjI2D+sdtmuQ771dbASUsDndU7t58jrrNGRzISvwioAlHs5FA+cBE5Ccznkd8NMV6BR6ksnKLPZnMUawRDU1MZ/ib3xCdkTblHKu4blNiylH5n213yM0zubEie0o4JhzcfAy3H5qh2l17uLooBNLaO+gzonTH2uF8PQu9EyH+pjGsACTMy4cHzsPdymUSXYJOMP3yTkXqvO/lpvt0cX5ekDEu9PUfBeZODkFuAjXCaGdi6ew4qxJ8PmFfwmPpkgQjQlWqomFY6UkjmcnAtJG75EVR+NpzGpP1Ef5qUUbfowrC3zcSLX3BxgWEgEx/v9cP8H8u1Mvt9/rMDYf6sjwU1xSOPBgzFEeJLMRVFtKo5QHsUYT8ZRLCah27599EuqoC9PYjYO6aoAMHB8X1OHwEAYouHfHB3nyb2B+SnZxM/vw/bCtORjLMSy5aZoEpvgdGvlJfNPFUu/p7Z4VVK1hiI0/UTuB3ZPq4ohEbm7Mntgc1evEtknaosgZSwnDC2BdMmibpeg48X8Ixl+/8+xXdbshQXUPPvx8jT3fkELivHSmqbhblfNFShWAyQnJ3WBU6SMYSIpTDmHjdLVAdlADdz9gCplZw6mTiHqDwIsxbm9ErGusiVpg2w8Q3khKV/R9Oj8PFeF43hmW/nSd99nZzhyjCX3QOZkkB6BsH4H866WGyv9E0hVAzPYah2tkRfQZMmP2rinfOeQalge0ovhduBjJs9a1GBwReerceify49ctOh5/65ATYuMsAkVltmvTLBk4oHpdl6i+p8DoNj4Fb2vhdFYer2JSEilEwPd5n5zNoGBXEjreg/wh2NFnNRaIUHSOXa4eJRwygZoX6vnWnqVdCRT1ARxeFrNBJ+tsdooMwqnYhE7zIxnD8pZH+P0Nu1wWxCPTADfNWmqx626IBJJq6NeapcGeOmbtXvl0TeWG0Y7OGGV4+EHTtNBIT5Wd0Bujl7inXgZgfXTM5efD3qDTJ54O9v3Bkv+tdIRlq1kXcVD0BEMirmFxglNPt5pedb1AnxuCYMChUykwsTIWqT23XDpvTiKEru1cTcEMeniB+HQDehxPXNmkotFdwUPnilB/u4Nx5Xc6l8J9jH1EgKZUUt8t8cyoZleDBEt8oibDmJRAoMKJ5Oe9CSWS5ZMEJvacsGVdXDWjp/Ype5x0p9PXB2PAwt2LRD3d+ftNgpuyvxlP8pB84oB1i73vAVpwyrmXW72hfW6Dzn9Jkj4++0VQ4d0KSx1AsDA4OtXXDo63/w+GD+zC7w5SJaxsmnlYRQ4dgdjA7tTl2KNLnpJ+mvkoDxtt1a4oPaX3EVqj96o9sRKBQqU7ZOiupeAIyLMD+Y3YwHx30XWHB5CQiw7q3mj1EDlP2eBsZbz79ayUMbyHQ7s8gu4Lgip1LiGJj7NQj905/+rgUYKAA5qdrlHKIknWmqfuR+PB8RdBkDg/NgnlT89G72h2NvySnj7UyBwD+mi/IWs1xWbxuVwUIVXun5cMqBtFbrccI+DILjsVQg6eeq0itiRfedn89CvyFtpkxaauEvSANuZmB1p8FGPbU94J9medwsZ9HkUYjmI7OH5HuxendLbxTaYrPuIfE2ffXFKhoNBUp33HsFAXmCV/Vxpq5AYgFoRr5Ay93ZLRlgaIPjhZjXZZChT+aE5iWAXMX0oSFQEtwjiuhQQItTQX5IYrKfKB+queTNplR1Hoflo5/I6aPPmACwQCE2jTOYo5Dz1cs7Sod0KTG/3kEDGk3kUaUCON19xSJCab3kNpWZhSWkO8l+SpW70Wn3g0ciOIJO5JXma6dbos6jyisuxXwUUhj2+1uGhcvuliKtWwsUTw4gi1c/diEEpZHoKoxTBeMDmhPhKTx7TXWRakV8imJR355DcIHkR9IREHxohP4TbyR5LtFU24umRPRmEYHbpe1LghyxPx7YgUHjNbbQFRQhh4KeU1EabXx8FS3JAxp2rwRDoeWkJgWRUSKw6gGP5U2PuO9V4ZuiKXGGzFQuRuf+tkSSsbBtRJKhCi3ENuLlXhPbjTKD4djXVnfXFds6Zb+1XiUrRfyayGxJq1+SYBEfbKlgjiSmk0orgTqzSS+DZ5rTqsJbttiNtp+KMqGE2AHGFw6jQqM5vD6vMptmXV9OAjq49Uf/Lx9Opam+Hn5O9p8qoBBAQixzQZ4eNVkO9sPzJAMyR1y4/RCQQ1s0pV5KAU5sKLw3tkcFbI/JqrjCsK4Mw+W8aod4lioYuawUiCyVWBE/qPaFi5bnkgpfu/ae47174rI1fqQoTbW0HrU6FAejq7ByM0V4zkZTg02/YJK2N7hUQRCeZ4BIgSEqgD8XsjzG6LIsSbuHoIdz/LhFzbNn1clci1NHWJ0/6/O8HJMdIpEZbqi1RrrFfoo/rI/7ufm2MPG5lUI0IYJ4MAiHRTSOFJ2oTverFHYXThkYFIoyFx6rMYFgaOKM4xNWdlOnIcKb/suptptgTOTdVIf4YgdaAjJnIAm4qNNHNQqqAzvi53GkyRCEoseUBrHohZsjUbkR8gfKtc/+Oa72lwxJ8Mq6HDfDATbfbJhzeIuFQJSiw1uZprHlzUf90WgqG76zO0eCB1WdPv1IT6sNxxh91GEL2YpgC97ikFHyoaH92ndwduqZ6IYjkg20DX33MWdoZk7QkcKUCgisIYslOaaLyvIIqRKWQj16jE1DlQWJJaPopWTJjXfixEjRJJo8g4++wuQjbq+WVYjsqCuNIQW3YjnxKe2M5ZKEqq+cX7ZVgnkbsU3RWIyXA1rxv4kGersYJjD//auldXGmcEbcfTeF16Y1708FB1HIfmWv6dSFi6oD4E+RIjCsEZ+kY7dKnwReJJw3xCjKvi3kGN42rvyhUlIz0Bp+fNSV5xwFiuBzG296e5s/oHoFtUyUplmPulIPl+e1CQIQVtjlzLzzzbV+D/OVQtYzo5ixtMi5BmHuG4N/uKfJk5UIREp7+12oZlKtPBomXSzAY0KgtbPzzZoHQxujnREUgBU+O/jKKhgxVhRPtbqyHiUaRwRpHv7pgRPyUrnE7fYkVblGmfTY28tFCvlILC04Tz3ivkNWVazA+OsYrxvRM/hiNn8Fc4bQBeUZABGx5S/xFf9Lbbmk298X7iFg2yeimvsQqqJ+hYbt6uq+Zf9jC+Jcwiccd61NKQtFvGWrgJiHB5lwi6fR8KzYS7EaEHf/ka9EC7H8D+WEa3TEACHBkNSj/cXxFeq4RllC+fUFm2xtstYLL2nos1DfzsC9vqDDdRVcPA3Ho95aEQHvExVThXPqym65llkKlfRXbPTRiDepdylHjmV9YTWAEjlD9DdQnCem7Aj/ml58On366392214B5zrmQz/9ySG2mFqEwjq5sFl5tYJPw5hNz8lyZPUTsr5E0F2C9VMPnZckWP7+mbwp/BiN7f4kf7vtGnZF2JGvjK/sDX1RtcFY5oPQnE4lIAYV49U3C9SP0LCY/9i/WIFK9ORjzM9kG/KGrAuwFmgdEpdLaiqQNpCTGZVuAO65afkY1h33hrqyLjZy92JK3/twdj9pafFcwfXONmPQWldPlMe7jlP24Js0v9m8bIJ9TgS2IuRvE9ZVRaCwSJYOtAfL5H/YS4FfzKWKbek+GFulheyKtDNlBtrdmr+KU+ibHTdalzFUmMfxw3f36x+3cQbJLItSilW9cuvZEMjKw987jykZRlsH/UI+HlKfo2tLwemBEeBFtmxF2xmItA/dAIfQ+rXnm88dqvXa+GapOYVt/2waFimXFx3TC2MUiOi5/Ml+3rj/YU6Ihx2hXgiDXFsUeQkRAD6wF3SCPi2flk7XwKAA4zboqynuELD312EJ88lmDEVOMa1W/K/a8tGylZRMrMoILyoMQzzbDJHNZrhH77L9qSC42HVmKiZ5S0016UTp83gOhCwz9XItK9fgXfK3F5d7nZCBUekoLxrutQaPHa16Rjsa0gTrzyjqTnmcIcrxg6X6dkKiucudc0DD5W4pJPf0vuDW8r5/uw24YfMuxFRpD2ovT2mFX79xH6Jf+MVdv2TYqR6/955QgVPe3JCD/WjAYcLA9tpXgFiEjge2J5ljeI/iUzg91KQuHkII4mmHZxC3XQORLAC6G7uFn5LOmlnXkjFdoO976moNTxElS8HdxWoPAkjjocDR136m2l+f5t6xaaNgdodOvTu0rievnhNAB79WNrVs6EsPgkgfahF9gSFzzAd+rJSraw5Mllit7vUP5YxA843lUpu6/5jAR0RvH4rRXkSg3nE+O5GFyfe+L0s5r3k05FyghSFnKo4TTgs07qj4nTLqOYj6qaW9knJTDkF5OFMYbmCP+8H16Ty482OjvERV6OFyw043L9w3hoJi408sR+SGo1WviXUu8d7qS+ehKjpKwxeCthsm2LBFSFeetx0x4AaKPxtp3CxdWqCsLrB1s/j5TAhc1jNZsXWl6tjo/WDoewxzg8T8NnhZ1niUwL/nhfygLanCnRwaFGDyLw+sfZhyZ1UtYTp8TYB6dE7R3VsKKH95CUxJ8u8N+9u2/9HUNKHW3x3w5GQrfOPafk2w5qZq8MaHT0ebeY3wIsp3rN9lrpIsW9c1ws3VNV+JwNz0Lo9+V7zZr6GD56We6gWVIvtmam5GPPkVAbr74r6SwhuL+TRXtW/0pgyX16VNl4/EAD50TnUPuwrW6OcUO2VlWXS0inq872kk7GUlW6o/ozFKq+Sip6LcTtSDfDrPTcCHhx75H8BeRon+KG2wRwzfDgWhALmiWOMO6h3pm1UCZEPEjScyk7tdLx6WrdA2N1QTPENvNnhCQjW6kl057/qv7IwRryHrZBCwVSbLLnFRiHdTwk8mlYixFt1slEcPD7FVht13HyqVeyD55HOXrh2ElAxJyinGeoFzwKA91zfrdLvDxJSjzmImfvTisreI25EDcVfGsmxLVbfU8PGe/7NmWWKjXcdTJ11jAlVIY/Bv/mcxg/Q10vCHwKG1GW/XbJq5nxDhyLqiorn7Wd7VEVL8UgVzpHMjQ+Z8DUgSukiVwWAKkeTlVVeZ7t1DGnCgJVIdBPZAEK5f8CDyDNo7tK4/5DBjdD5MPV86TaEhGsLVFPQSI68KlBYy84FievdU9gWh6XZrugvtCZmi9vfd6db6V7FmoEcRHnG36VZH8N4aZaldq9zZawt1uBFgxYYx+Gs/qW1jwANeFy+LCoymyM6zgG7j8bGzUyLhvrbJkTYAEdICEb4kMKusKT9V3eIwMLsjdUdgijMc+7iKrr+TxrVWG0U+W95SGrxnxGrE4eaJFfgvAjUM4SAy8UaRwE9j6ZQH5qYAWGtXByvDiLSDfOD0yFA3UCMKSyQ30fyy1mIRg4ZcgZHLNHWl+c9SeijOvbOJxoQy7lTN2r3Y8p6ovxvUY74aOYbuVezryqXA6U+fcp6wSV9X5/OZKP18tB56Ua0gMyxJI7XyNT7IrqN8GsB9rL/kP5KMrjXxgqKLDa+V5OCH6a5hmOWemMUsea9vQl9t5Oce76PrTyTv50ExOqngE3PHPfSL//AItPdB7kGnyTRhVUUFNdJJ2z7RtktZwgmQzhBG/G7QsjZmJfCE7k75EmdIKH7xlnmDrNM/XbTT6FzldcH/rcRGxlPrv4qDScqE7JSmQABJWqRT/TUcJSwoQM+1jvDigvrjjH8oeK2in1S+/yO1j8xAws/T5u0VnIvAPqaE1atNuN0cuRliLcH2j0nTL4JpcR7w9Qya0JoaHgsOiALLCCzRkl1UUESz+ze/gIXHGtDwgYrK6pCFKJ1webSDog4zTlPkgXZqxlQDiYMjhDpwTtBW2WxthWbov9dt2X9XFLFmcF+eEc1UaQ74gqZiZsdj63pH1qcv3Vy8JYciogIVKsJ8Yy3J9w/GhjWVSQAmrS0BPOWK+RKV+0lWqXgYMnIFwpcZVD7zPSp547i9HlflB8gVnSTGmmq1ClO081OW/UH11pEQMfkEdDFzjLC1Cdo/BdL3s7cXb8J++Hzz1rhOUVZFIPehRiZ8VYu6+7Er7j5PSZu9g/GBdmNzJmyCD9wiswj9BZw+T3iBrg81re36ihMLjoVLoWc+62a1U/7qVX5CpvTVF7rocSAKwv4cBVqZm7lLDS/qoXs4fMs/VQi6BtVbNA3uSzKpQfjH1o3x4LrvkOn40zhm6hjduDglzJUwA0POabgdXIndp9fzhOo23Pe+Rk9GSLX0d71Poqry8NQDTzNlsa+JTNG9+UrEf+ngxCjGEsDCc0bz+udVRyHQI1jmEO3S+IOQycEq7XwB6z3wfMfa73m8PVRp+iOgtZfeSBl01xn03vMaQJkyj7vnhGCklsCWVRUl4y+5oNUzQ63B2dbjDF3vikd/3RUMifPYnX5Glfuk2FsV/7RqjI9yKTbE8wJY+74p7qXO8+dIYgjtLD/N8TJtRh04N9tXJA4H59IkMmLElgvr0Q5OCeVfdAt+5hkh4pQgfRMHpL74XatLQpPiOyHRs/OdmHtBf8nOZcxVKzdGclIN16lE7kJ+pVMjspOI+5+TqLRO6m0ZpNXJoZRv9MPDRcAfJUtNZHyig/s2wwReakFgPPJwCQmu1I30/tcBbji+Na53i1W1N+BqoY7Zxo+U/M9XyJ4Ok2SSkBtoOrwuhAY3a03Eu6l8wFdIG1cN+e8hopTkiKF093KuH/BcB39rMiGDLn6XVhGKEaaT/vqb/lufuAdpGExevF1+J9itkFhCfymWr9vGb3BTK4j598zRH7+e+MU9maruZqb0pkGxRDRE1CD4Z8LV4vhgPidk5w2Bq816g3nHw1//j3JStz7NR9HIWELO8TMn3QrP/zZp//+Dv9p429/ogv+GATR+n/UdF+ns9xNkXZQJXY4t9jMkJNUFygAtzndXwjss+yWH9HAnLQQfhAskdZS2l01HLWv7L7us5uTH409pqitvfSOQg/c+Zt7k879P3K9+WV68n7+3cZfuRd/dDPP/03rn+d+/nBvWfgDlt8+LzjqJ/vx3CnNOwiXhho778C96iD+1TBvRZYeP+EH81LE0vVwOOrmCLB3iKzI1x+vJEsrPH4uF0UB4TJ4X3uDfOCo3PYpYe0MF4bouh0DQ/l43fxUF7Y+dpWuvTSffB0yO2UQUETI/LwCZE3BvnevJ7c9zUlY3H58xzke6DNFDQG8n0WtDN4LAYN4nogKav1ezOfK/z+t6tsCTp+dhx4ymjWuCJk1dEUifDP+HyS4iP/Vg9B2jTo9L4NbiBuDS4nuuHW6H+JDQn2JtqRKGkEQPEYE7uzazXIkcxIAqUq1esasZBETlEZY7y7Jo+RoV/IsjY9eIMkUvr42Hc0xqtsavZvhz1OLwSxMOTuqzlhb0WbdOwBH9EYiyBjatz40bUxTHbiWxqJ0uma19qhPruvcWJlbiSSH48OLDDpaHPszvyct41ZfTu10+vjox6kOqK6v0K/gEPphEvMl/vwSv+A4Hhm36JSP9IXTyCZDm4kKsqD5ay8b1Sad/vaiyO5N/sDfEV6Z4q95E+yfjxpqBoBETW2C7xl4pIO2bDODDFurUPwE7EWC2Uplq+AHmBHvir2PSgkR12/Ry65O0aZtQPeXi9mTlF/Wj5GQ+vFkYyhXsLTjrBSP9hwk4GPqDP5rBn5/l8b0mLRAvRSzXHc293bs3s8EsdE3m2exxidWVB4joHR+S+dz5/W+v00K3TqN14CDBth8eWcsTbiwXPsygHdGid0PEdy6HHm2v/IUuV5RVapYmzGsX90mpnIdNGcOOq64Dbc5GUbYpD9M7S+6cLY//QmjxFLP5cuTFRm3vA5rkFZroFnO3bjHF35uU3s8mvL7Tp9nyTc4mymTJ5sLIp7umSnGkO23faehtz3mmTS7fbVx5rP7x3HXIjRNeq/A3xCs9JNB08c9S9BF2O3bOur0ItslFxXgRPdaapBIi4dRpKGxVz7ir69t/bc9qTxjvtOyGOfiLGDhR4fYywHv1WdOplxIV87TpLBy3Wc0QP0P9s4G7FBNOdITS/tep3o3h1TEa5XDDii7fWtqRzUEReP2fbxz7bHWWJdbIOxOUJZtItNZpTFRfj6vm9sYjRxQVO+WTdiOhdPeTJ+8YirPvoeL88l5iLYOHd3b/Imkq+1ZN1El3UikhftuteEYxf1Wujof8Pr4ICTu5ezZyZ4tHQMxlzUHLYO2VMOoNMGL/20S5i2o2obfk+8qqdR7xzbRDbgU0lnuIgz4LelQ5XS7xbLuSQtNS95v3ZUOdaUx/Qd8qxCt6xf2E62yb/HukLO6RyorV8KgYl5YNc75y+KvefrxY+lc/64y9kvWP0a0bDz/rojq+RWjO06WeruWqNFU7r3HPIcLWRql8ICZsz2Ls/qOm/CLn6++X+Qf7mGspYCrZod/lpl6Rw4xN/yuq8gqV4B6aHk1hVE1SfILxWu5gvXqbfARYQpspcxKp1F/c8XOPzkZvmoSw+vEqBLdrq1fr3wAPv5NnM9i8F+jdAuxkP5Z71c6uhK3enlnGymr7UsWZKC12qgUiG8XXGQ9mxnqz4GSIlybF9eXmbqj2sHX+a1jf0gRoONHRdRSrIq03Ty89eQ1GbV/Bk+du4+V15zls+vvERvZ4E7ZbnxWTVjDjb4o/k8jlw44pTIrUGxxuJvBeO+heuhOjpFsO6lVJ/aXnJDa/bM0Ql1cLbXE/Pbv3EZ3vj3iVrB5irjupZTzlnv677NrI9UNYNqbPgp/HZXS+lJmk87wec+7YOxTDo2aw2l3NfDr34VNlvqWJBknuK7oSlZ6/T10zuOoPZOeoIk81N+sL843WJ2Q4Z0fZ3scsqC/JV2fuhWi1jGURSKZV637lf53Xnnx16/vKEXY89aVJ0fv91jGdfG+G4+sniwHes4hS+udOr4RfhFhG/F5gUG35QaU+McuLmclb5ZWmR+sG5V6nf+PxYzlrnFGxpZaK8eqqVo0NfmAWoGfXDiT/FnUbWvzGDOTr8aktOZWg4BYvz5YH12ZbfCcGtNk+dDAZNGWvHov+PIOnY9Prjg8h/wLRrT69suaMVZ5bNuK00lSVpnqSX1NON/81FoP92rYndionwgOiA8WMf4vc8l15KqEEG4yAm2+WAN5Brfu1sq9suWYqgoajgOYt/JCk1gC8wPkK+XKCtRX6TAtgvrnuBgNRmn6I8lVDipOVB9kX6Oxkp4ZKyd1M6Gj8/v2U7k+YQBL95Kb9PQENucJb0JlW3b5tObN7m/Z1j1ev388d7o15zgXsI9CikAGAViR6lkJv7nb4Ak40M2G8TJ447kN+pvfHiOFjSUSP6PM+QfbAywKJCBaxSVxpizHseZUyUBhq59vFwrkyGoRiHbo0apweEZeSLuNiQ+HAekOnarFg00dZNXaPeoHPTRR0FmEyqYExOVaaaO8c0uFUh7U4e/UxdBmthlBDgg257Q33j1hA7HTxSeTTSuVnPZbgW1nodwmG16aKBDKxEetv7D9OjO0JhrbJTnoe+kcGoDJazFSO8/fUN9Jy/g4XK5PUkw2dgPDGpJqBfhe7GA+cjzfE/EGsMM+FV9nj9IAhrSfT/J3QE5TEIYyk5UjsI6ZZcCPr6A8FZUF4g9nnpVmjX90MLSQysIPD0nFzqwCcSJmIb5mYv2Cmk+C1MDFkZQyCBq4c/Yai9LJ6xYkGS/x2s5/frIW2vmG2Wrv0APpCdgCA9snFvfpe8uc0OwdRs4G9973PGEBnQB5qKrCQ6m6X/H7NInZ7y/1674/ZXOVp7OeuCRk8JFS516VHrnH1HkIUIlTIljjHaQtEtkJtosYul77cVwjk3gW1Ajaa6zWeyHGLlpk3VHE2VFzT2yI/EvlGUSz2H9zYE1s4nsKMtMqNyKNtL/59CpFJki5Fou6VXGm8vWATEPwrUVOLvoA8jLuwOzVBCgHB2Cr5V6OwEWtJEKokJkfc87h+sNHTvMb0KVTp5284QTPupoWvQVUwUeogZR3kBMESYo0mfukewRVPKh5+rzLQb7HKjFFIgWhj1w3yN/qCNoPI8XFiUgBNT1hCHBsAz8L7Oyt8wQWUFj92ONn/APyJFg8hzueqoJdNj57ROrFbffuS/XxrSXLTRgj5uxZjpgQYceeMc2wJrahReSKpm3QjHfqExTLAB2ipVumE8pqcZv8LYXQiPHHsgb5BMW8zM5pvQit+mQx8XGaVDcfVbLyMTlY8xcfmm/RSAT/H09UQol5gIz7rESDmnrQ4bURIB4iRXMDQwxgex1GgtDxKp2HayIkR+E/aDmCttNm2C6lytWdfOVzD6X2SpDWjQDlMRvAp1symWv4my1bPCD+E1EmGnMGWhNwmycJnDV2WrQNxO45ukEb08AAffizYKVULp15I4vbNK5DzWwCSUADfmKhfGSUqii1L2UsE8rB7mLuHuUJZOx4+WiizHBJ/hwboaBzhpNOVvgFTf5cJsHef7L1HCI9dOUUbb+YxUJWn6dYOLz+THi91kzY5dtO5c+grX7v0jEbsuoOGnoIreDIg/sFMyG+TyCLIcAWd1IZ1UNFxE8Uie13ucm40U2fcxC0u3WLvLOxwu+F7MWUsHsdtFQZ7W+nlfCASiAKyh8rnP3EyDByvtJb6Kax6/HkLzT9SyEyTMVM1zPtM0MJY14DmsWh4MgD15Ea9Hd00AdkTZ0EiG5NAGuIBzQJJ0JR0na+OB7lQA6UKxMfihIQ7GCCnVz694QvykWXTxpS2soDu+smru1UdIxSvAszBFD1c8c6ZOobA8bJiJIvuycgIXBQIXWwhyTgZDQxJTRXgEwRNAawGSXO0a1DKjdihLVNp/taE/xYhsgwe+VpKEEB4LlraQyE84gEihxCnbfoyOuJIEXy2FIYw+JjRusybKlU2g/vhTSGTydvCvXhYBdtAXtS2v7LkHtmXh/8fly1do8FI/D0f8UbzVb5h+KRhMGSAmR2mhi0YG/uj7wgxcfzCrMvdjitUIpXDX8ae2JcF/36qUWIMwN6JsjaRGNj+jEteGDcFyTUb8X/NHSucKMJp7pduxtD6KuxVlyxxwaeiC1FbGBESO84lbyrAugYxdl+2N8/6AgWpo/IeoAOcsG35IA/b3AuSyoa55L7llBLlaWlEWvuCFd8f8NfcTUgzJv6CbB+6ohWwodlk9nGWFpBAOaz5uEW5xBvmjnHFeDsb0mXwayj3mdYq5gxxNf3H3/tnCgHwjSrpSgVxLmiTtuszdRUFIsn6LiMPjL808vL1uQhDbM7aA43mISXReqjSskynIRcHCJ9qeFopJfx9tqyUoGbSwJex/0aDE3plBPGtNBYgWbdLom3+Q/bjdizR2/AS/c/dH/d3G7pyl1qDXgtOFtEqidwLqxPYtrNEveasWq3vPUUtqTeu8gpov4bdOQRI2kneFvRNMrShyVeEupK1PoLDPMSfWMIJcs267mGB8X9CehQCF0gIyhpP10mbyM7lwW1e6TGvHBV1sg/UyTghHPGRqMyaebC6pbB1WKNCQtlai1GGvmq9zUKaUzLaXsXEBYtHxmFbEZ2kJhR164LhWW2Tlp1dhsGE7ZgIWRBOx3Zcu2DxgH+G83WTPceKG0TgQKKiiNNOlWgvqNEbnrk6fVD+AqRam2OguZb0YWSTX88N+i/ELSxbaUUpPx4vJUzYg/WonSeA8xUK6u7DPHgpqWpEe6D4cXg5uK9FIYVba47V/nb+wyOtk+zG8RrS4EA0ouwa04iByRLSvoJA2FzaobbZtXnq8GdbfqEp5I2dpfpj59TCVif6+E75p665faiX8gS213RqBxTZqfHP46nF6NSenOneuT+vgbLUbdTH2/t0REFXZJOEB6DHvx6N6g9956CYrY/AYcm9gELJXYkrSi+0F0geKDZgOCIYkLU/+GOW5aGj8mvLFgtFH5+XC8hvAE3CvHRfl4ofM/Qwk4x2A+R+nyc9gNu/9Tem7XW4XRnyRymf52z09cTOdr+PG6+P/Vb4QiXlwauc5WB1z3o+IJjlbxI8MyWtSzT+k4sKVbhF3xa+vDts3NxXa87iiu+xRH9cAprnOL2h6vV54iQRXuOAj1s8nLFK8gZ70ThIQcWdF19/2xaJmT0efrkNDkWbpAQPdo92Z8+Hn/aLjbOzB9AI/k12fPs9HhUNDJ1u6ax2VxD3R6PywN7BrLJ26z6s3QoMp76qzzwetrDABKSGkfW5PwS1GvYNUbK6uRqxfyVGNyFB0E+OugMM8kKwmJmupuRWO8XkXXXQECyRVw9UyIrtCtcc4oNqXqr7AURBmKn6Khz3eBN96LwIJrAGP9mr/59uTOSx631suyT+QujDd4beUFpZ0kJEEnjlP+X/Kr2kCKhnENTg4BsMTOmMqlj2WMFLRUlVG0fzdCBgUta9odrJfpVdFomTi6ak0tFjXTcdqqvWBAzjY6hVrH9sbt3Z9gn+AVDpTcQImefbB4edirjzrsNievve4ZT4EUZWV3TxEsIW+9MT/RJoKfZZYSRGfC1CwPG/9rdMOM8qR/LUYvw5f/emUSoD7YSFuOoqchdUg2UePd1eCtFSKgxLSZ764oy4lvRCIH6bowPxZWwxNFctksLeil47pfevcBipkkBIc4ngZG+kxGZ71a72KQ7VaZ6MZOZkQJZXM6kb/Ac0/XkJx8dvyfJcWbI3zONEaEPIW8GbkYjsZcwy+eMoKrYjDmvEEixHzkCSCRPRzhOfJZuLdcbx19EL23MA8rnjTZZ787FGMnkqnpuzB5/90w1gtUSRaWcb0eta8198VEeZMUSfIhyuc4/nywFQ9uqn7jdqXh+5wwv+RK9XouNPbYdoEelNGo34KyySwigsrfCe0v/PlWPvQvQg8R0KgHO18mTVThhQrlbEQ0Kp/JxPdjHyR7E1QPw/ut0r+HDDG7BwZFm9IqEUZRpv2WpzlMkOemeLcAt5CsrzskLGaVOAxyySzZV/D2EY7ydNZMf8e8VhHcKGHAWNszf1EOq8fNstijMY4JXyATwTdncFFqcNDfDo+mWFvxJJpc4sEZtjXyBdoFcxbUmniCoKq5jydUHNjYJxMqN1KzYV62MugcELVhS3Bnd+TLLOh7dws/zSXWzxEb4Nj4aFun5x4kDWLK5TUF/yCXB/cZYvI9kPgVsG2jShtXkxfgT+xzjJofXqPEnIXIQ1lnIdmVzBOM90EXvJUW6a0nZ/7XjJGl8ToO3H/fdxnxmTNKBZxnkpXLVgLXCZywGT3YyS75w/PAH5I/jMuRspej8xZObU9kREbRA+kqjmKRFaKGWAmFQspC+QLbKPf0RaK3OXvBSWqo46p70ws/eZpu6jCtZUgQy6r4tHMPUdAgWGGUYNbuv/1a6K+MVFsd3T183+T8capSo6m0+Sh57fEeG/95dykGJBQMj09DSW2bY0mUonDy9a8trLnnL5B5LW3Nl8rJZNysO8Zb+80zXxqUGFpud3Qzwb7bf+8mq6x0TAnJU9pDQR9YQmZhlna2xuxJt0aCO/f1SU8gblOrbIyMsxTlVUW69VJPzYU2HlRXcqE2lLLxnObZuz2tT9CivfTAUYfmzJlt/lOPgsR6VN64/xQd4Jlk/RV7UKVv2Gx/AWsmTAuCWKhdwC+4HmKEKYZh2Xis4KsUR1BeObs1c13wqFRnocdmuheaTV30gvVXZcouzHKK5zwrN52jXJEuX6dGx3BCpV/++4f3hyaW/cQJLFKqasjsMuO3B3WlMq2gyYfdK1e7L2pO/tRye2mwzwZPfdUMrl5wdLqdd2Kv/wVtnpyWYhd49L6rsOV+8HXPrWH2Kup89l2tz6bf80iYSd+V4LROSOHeamvexR524q4r43rTmtFzQvArpvWfLYFZrbFspBsXNUqqenjxNNsFXatZvlIhk7teUPfK+YL32F8McTnjv0BZNppb+vshoCrtLXjIWq3EJXpVXIlG6ZNL0dh6qEm2WMwDjD3LfOfkGh1/czYc/0qhiD2ozNnH4882MVVt3JbVFkbwowNCO3KL5IoYW5wlVeGCViOuv1svZx7FbzxKzA4zGqBlRRaRWCobXaVq4yYCWbZf8eiJwt3OY+MFiSJengcFP2t0JMfzOiJ7cECvpx7neg1Rc5x+7myPJOXt2FohVRyXtD+/rDoTOyGYInJelZMjolecVHUhUNqvdZWg2J2t0jPmiLFeRD/8fOT4o+NGILb+TufCo9ceBBm3JLVn+MO2675n7qiEX/6W+188cYg3Zn5NSTjgOKfWFSAANa6raCxSoVU851oJLY11WIoYK0du0ec5E4tCnAPoKh71riTsjVIp3gKvBbEYQiNYrmH22oLQWA2AdwMnID6PX9b58dR2QKo4qag1D1Z+L/FwEKTR7osOZPWECPJIHQqPUsM5i/CH5YupVPfFA5pHUBcsesh8eO5YhyWnaVRPZn/BmdXVumZWPxMP5e28zm2uqHgFoT9CymHYNNrzrrjlXZM06HnzDxYNlI5b/QosxLmmrqDFqmogQdqk0WLkUceoAvQxHgkIyvWU69BPFr24VB6+lx75Rna6dGtrmOxDnvBojvi1/4dHjVeg8owofPe1cOnxU1ioh016s/Vudv9mhV9f35At+Sh28h1bpp8xhr09+vf47Elx3Ms6hyp6QvB3t0vnLbOhwo660cp7K0vvepabK7YJfxEWWfrC2YzJfYOjygPwfwd/1amTqa0hZ5ueebhWYVMubRTwIjj+0Oq0ohU3zfRfuL8gt59XsHdwKtxTQQ4Y2qz6gisxnm2UdlmpEkgOsZz7iEk6QOt8BuPwr+NR01LTqXmJo1C76o1N274twJvl+I069TiLpenK/miRxhyY8jvYV6W1WuSwhH9q7kuwnJMtm7IWcqs7HsnyHSqWXLSpYtZGaR1V3t0gauninFPZGtWskF65rtti48UV9uV9KM8kfDYs0pgB00S+TlzTXV6P8mxq15b9En8sz3jWSszcifZa/NuufPNnNTb031pptt0+sRSH/7UG8pzbsgtt3OG3ut7B9JzDMt2mTZuyRNIV8D54TuTrpNcHtgmMlYJeiY9XS83NYJicjRjtJSf9BZLsQv629QdDsKQhTK5CnXhpk7vMNkHzPhm0ExW/VCGApHfPyBagtZQTQmPHx7g5IXXsrQDPzIVhv2LB6Ih138iSDww1JNHrDvzUxvp73MsQBVhW8EbrReaVUcLB1R3PUXyaYG4HpJUcLVxMgDxcPkVRQpL7VTAGabDzbKcvg12t5P8TSGQkrj/gOrpnbiDHwluA73xbXts/L7u468cRWSWRtgTwlQnA47EKg0OiZDgFxAKQQUcsbGomITgeXUAAyKe03eA7Mp4gnyKQmm0LXJtEk6ddksMJCuxDmmHzmVhO+XaN2A54MIh3niw5CF7PwiXFZrnA8wOdeHLvvhdoqIDG9PDI7UnWWHq526T8y6ixJPhkuVKZnoUruOpUgOOp3iIKBjk+yi1vHo5cItHXb1PIKzGaZlRS0g5d3MV2pD8FQdGYLZ73aae/eEIUePMc4NFz8pIUfLCrrF4jVWH5gQneN3S8vANBmUXrEcKGn6hIUN95y1vpsvLwbGpzV9L0ZKTan6TDXM05236uLJcIEMKVAxKNT0K8WljuwNny3BNQRfzovA85beI9zr1AGNYnYCVkR1aGngWURUrgqR+gRrQhxW81l3CHevjvGEPzPMTxdsIfB9dfGRbZU0cg/1mcubtECX4tvaedmNAvTxCJtc2QaoUalGfENCGK7IS/O8CRpdOVca8EWCRwv2sSWE8CJPW5PCugjCXPd3h6U60cPD+bdhtXZuYB6stcoveE7Sm5MM2yvfUHXFSW7KzLmi7/EeEWL0wqcOH9MOSKjhCHHmw+JGLcYE/7SBZQCRggox0ZZTAxrlzNNXYXL5fNIjkdT4YMqVUz6p8YDt049v4OXGdg3qTrtLBUXOZf7ahPlZAY/O+7Sp0bvGSHdyQ8B1LOsplqMb9Se8VAE7gIdSZvxbRSrfl+Lk5Qaqi5QJceqjitdErcHXg/3MryljPSIAMaaloFm1cVwBJ8DNmkDqoGROSHFetrgjQ5CahuKkdH5pRPigMrgTtlFI8ufJPJSUlGgTjbBSvpRc0zypiUn6U5KZqcRoyrtzhmJ7/caeZkmVRwJQeLOG8LY6vP5ChpKhc8Js0El+n6FXqbx9ItdtLtYP92kKfaTLtCi8StLZdENJa9Ex1nOoz1kQ7qxoiZFKRyLf4O4CHRT0T/0W9F8epNKVoeyxUXhy3sQMMsJjQJEyMOjmOhMFgOmmlscV4eFi1CldU92yjwleirEKPW3bPAuEhRZV7JsKV3Lr5cETAiFuX5Nw5UlF7d2HZ96Bh0sgFIL5KGaKSoVYVlvdKpZJVP5+NZ7xDEkQhmDgsDKciazJCXJ6ZN2B3FY2f6VZyGl/t4aunGIAk/BHaS+i+SpdRfnB/OktOvyjinWNfM9Ksr6WwtCa1hCmeRI6icpFM4o8quCLsikU0tMoZI/9EqXRMpKGaWzofl4nQuVQm17d5fU5qXCQeCDqVaL9XJ9qJ08n3G3EFZS28SHEb3cdRBdtO0YcTzil3QknNKEe/smQ1fTb0XbpyNB5xAeuIlf+5KWlEY0DqJbsnzJlQxJPOVyHiKMx5Xu9FcEv1Fbg6Fhm4t+Jyy5JC1W3YO8dYLsO0PXPbxodBgttTbH3rt9Cp1lJIk2r3O1Zqu94eRbnIz2f50lWolYzuKsj4PMok4abHLO8NAC884hiXx5Fy5pWKO0bWL7uEGXaJCtznhP67SlQ4xjWIfgq6EpZ28QMtuZK7JC0RGbl9nA4XtFLug/NLMoH1pGt9IonAJqcEDLyH6TDROcbsmGPaGIxMo41IUAnQVPMPGByp4mOmh9ZQMkBAcksUK55LsZj7E5z5XuZoyWCKu6nHmDq22xI/9Z8YdxJy4kWpD16jLVrpwGLWfyOD0Wd+cBzFBxVaGv7S5k9qwh/5t/LQEXsRqI3Q9Rm3QIoaZW9GlsDaKOUyykyWuhNOprSEi0s1G4rgoiX1V743EELti+pJu5og6X0g6oTynUqlhH9k6ezyRi05NGZHz0nvp3HOJr7ebrAUFrDjbkFBObEvdQWkkUbL0pEvMU46X58vF9j9F3j6kpyetNUBItrEubW9ZvMPM4qNqLlsSBJqOH3XbNwv/cXDXNxN8iFLzUhteisYY+RlHYOuP29/Cb+L+xv+35Rv7xudnZ6ohK4cMPfCG8KI7dNmjNk/H4e84pOxn/sZHK9psfvj8ncA8qJz7O8xqbxESDivGJOZzF7o5PJLQ7g34qAWoyuA+x3btU98LT6ZyGyceIXjrqob2CAVql4VOTQPUQYvHV/g4zAuCZGvYQBtf0wmd5lilrvuEn1BXLny01B4h4SMDlYsnNpm9d7m9h578ufpef9Z4WplqWQvqo52fyUA7J24eZD5av6SyGIV9kpmHNqyvdfzcpEMw97BvknV2fq+MFHun9BT3Lsf8pbzvisWiIQvYkng+8Vxk1V+dli1u56kY50LRjaPdotvT5BwqtwyF+emo/z9J3yVUVGfKrxQtJMOAQWoQii/4dp9wgybSa5mkucmRLtEQZ/pz0tL/NVcgWAd95nEQ3Tg6tNbuyn3Iepz65L3huMUUBntllWuu4DbtOFSMSbpILV4fy6wlM0SOvi6CpLh81c1LreIvKd61uEWBcDw1lUBUW1I0Z+m/PaRlX+PQ/oxg0Ye6KUiIiTF4ADNk59Ydpt5/rkxmq9tV5Kcp/eQLUVVmBzQNVuytQCP6Ezd0G8eLxWyHpmZWJ3bAzkWTtg4lZlw42SQezEmiUPaJUuR/qklVA/87S4ArFCpALdY3QRdUw3G3XbWUp6aq9z0zUizcPa7351p9JXOZyfdZBFnqt90VzQndXB/mwf8LC9STj5kenVpNuqOQQP3mIRJj7eV21FxG8VAxKrEn3c+XfmZ800EPb9/5lIlijscUbB6da0RQaMook0zug1G0tKi/JBC4rw7/D3m4ARzAkzMcVrDcT2SyFtUdWAsFlsPDFqV3N+EjyXaoEePwroaZCiLqEzb8MW+PNE9TmTC01EzWli51PzZvUqkmyuROU+V6ik+Le/9qT6nwzUzf9tP68tYei0YaDGx6kAd7jn1cKqOCuYbiELH9zYqcc4MnRJjkeGiqaGwLImhyeKs+xKJMBlOJ05ow9gGCKZ1VpnMKoSCTbMS+X+23y042zOb5MtcY/6oBeAo1Vy89OTyhpavFP78jXCcFH0t7Gx24hMEOm2gsEfGabVpQgvFqbQKMsknFRRmuPHcZu0Su/WMFphZvB2r/EGbG72rpGGho3h+Msz0uGzJ7hNK2uqQiE1qmn0zgacKYYZBCqsxV+sjbpoVdSilW/b94n2xNb648VmNIoizqEWhBnsen+d0kbCPmRItfWqSBeOd9Wne3c6bcd6uvXOJ6WdiSsuXq0ndhqrQ4QoWUjCjYtZ0EAhnSOP1m44xkf0O7jXghrzSJWxP4a/t72jU29Vu2rvu4n7HfHkkmQOMGSS+NPeLGO5I73mC2B7+lMiBQQZRM9/9liLIfowupUFAbPBbR+lxDM6M8Ptgh1paJq5Rvs7yEuLQv/7d1oU2woFSb3FMPWQOKMuCuJ7pDDjpIclus5TeEoMBy2YdVB4fxmesaCeMNsEgTHKS5WDSGyNUOoEpcC2OFWtIRf0w27ck34/DjxRTVIcc9+kqZE6iMSiVDsiKdP/Xz5XfEhm/sBhO50p1rvJDlkyyxuJ9SPgs7YeUJBjXdeAkE+P9OQJm6SZnn1svcduI78dYmbkE2mtziPrcjVisXG78spLvbZaSFx/Rks9zP4LKn0Cdz/3JsetkT06A8f/yCgMO6Mb1Hme0JJ7b2wZz1qleqTuKBGokhPVUZ0dVu+tnQYNEY1fmkZSz6+EGZ5EzL7657mreZGR3jUfaEk458PDniBzsSmBKhDRzfXameryJv9/D5m6HIqZ0R+ouCE54Dzp4IJuuD1e4Dc5i+PpSORJfG23uVgqixAMDvchMR0nZdH5brclYwRoJRWv/rlxGRI5ffD5NPGmIDt7vDE1434pYdVZIFh89Bs94HGGJbTwrN8T6lh1HZFTOB4lWzWj6EVqxSMvC0/ljWBQ3F2kc/mO2b6tWonT2JEqEwFts8rz2h+oWNds9ceR2cb7zZvJTDppHaEhK5avWqsseWa2Dt5BBhabdWSktS80oMQrL4TvAM9b5HMmyDnO+OkkbMXfUJG7eXqTIG6lqSOEbqVR+qYdP7uWb57WEJqzyh411GAVsDinPs7KvUeXItlcMdOUWzXBH6zscymV1LLVCtc8IePojzXHF9m5b5zGwBRdzcyUJkiu938ApmAayRdJrX1PmVguWUvt2ThQ62czItTyWJMW2An/hdDfMK7SiFQlGIdAbltHz3ycoh7j9V7GxNWBpbtcSdqm4XxRwTawc3cbZ+xfSv9qQfEkDKfZTwCkqWGI/ur250ItXlMlh6vUNWEYIg9A3GzbgmbqvTN8js2YMo87CU5y6nZ4dbJLDQJj9fc7yM7tZzJDZFtqOcU8+mZjYlq4VmifI23iHb1ZoT9E+kT2dolnP1AfiOkt7PQCSykBiXy5mv637IegWSKj9IKrYZf4Lu9+I7ub+mkRdlvYzehh/jaJ9n7HUH5b2IbgeNdkY7wx1yVzxS7pbvky6+nmVUtRllEFfweUQ0/nG017WoUYSxs+j2B4FV/F62EtHlMWZXYrjGHpthnNb1x66LKZ0Qe92INWHdfR/vqp02wMS8r1G4dJqHok8KmQ7947G13a4YXbsGgHcBvRuVu1eAi4/A5+ZixmdSXM73LupB/LH7O9yxLTVXJTyBbI1S49TIROrfVCOb/czZ9pM4JsZx8kUz8dQGv7gUWKxXvTH7QM/3J2OuXXgciUhqY+cgtaOliQQVOYthBLV3xpESZT3rmfEYNZxmpBbb24CRao86prn+i9TNOh8VxRJGXJfXHATJHs1T5txgc/opYrY8XjlGQQbRcoxIBcnVsMjmU1ymmIUL4dviJXndMAJ0Yet+c7O52/p98ytlmAsGBaTAmMhimAnvp1TWNGM9BpuitGj+t810CU2UhorrjPKGtThVC8WaXw04WFnT5fTjqmPyrQ0tN3CkLsctVy2xr0ZWgiWVZ1OrlFjjxJYsOiZv2cAoOvE+7sY0I/TwWcZqMoyIKNOftwP7w++Rfg67ljfovKYa50if3fzE/8aPYVey/Nq35+nH2sLPh/fP5TsylSKGOZ4k69d2PnH43+kq++sRXHQqGArWdwhx+hpwQC6JgT2uxehYU4Zbw7oNb6/HLikPyJROGK2ouyr+vzseESp9G50T4AyFrSqOQ0rroCYP4sMDFBrHn342EyZTMlSyk47rHSq89Y9/nI3zG5lX16Z5lxphguLOcZUndL8wNcrkyjH82jqg8Bo8OYkynrxZvbFno5lUS3OPr8Ko3mX9NoRPdYOKKjD07bvgFgpZ/RF+YzkWvJ/Hs/tUbfeGzGWLxNAjfDzHHMVSDwB5SabQLsIZHiBp43FjGkaienYoDd18hu2BGwOK7U3o70K/WY/kuuKdmdrykIBUdG2mvE91L1JtTbh20mOLbk1vCAamu7utlXeGU2ooVikbU/actcgmsC1FKk2qmj3GWeIWbj4tGIxE7BLcBWUvvcnd/lYxsMV4F917fWeFB/XbINN3qGvIyTpCalz1lVewdIGqeAS/gB8Mi+sA+BqDiX3VGD2eUunTRbSY+AuDy4E3Qx3hAhwnSXX+B0zuj3eQ1miS8Vux2z/l6/BkWtjKGU72aJkOCWhGcSf3+kFkkB15vGOsQrSdFr6qTj0gBYiOlnBO41170gOWHSUoBVRU2JjwppYdhIFDfu7tIRHccSNM5KZOFDPz0TGMAjzzEpeLwTWp+kn201kU6NjbiMQJx83+LX1e1tZ10kuChJZ/XBUQ1dwaBHjTDJDqOympEk8X2M3VtVw21JksChA8w1tTefO3RJ1FMbqZ01bHHkudDB/OhLfe7P5GOHaI28ZXKTMuqo0hLWQ4HabBsGG7NbP1RiXtETz074er6w/OerJWEqjmkq2y51q1BVI+JUudnVa3ogBpzdhFE7fC7kybrAt2Z6RqDjATAUEYeYK45WMupBKQRtQlU+uNsjnzj6ZmGrezA+ASrWxQ6LMkHRXqXwNq7ftv28dUx/ZSJciDXP2SWJsWaN0FjPX9Yko6LobZ7aYW/IdUktI9apTLyHS8DyWPyuoZyxN1TK/vtfxk3HwWh6JczZC8Ftn0bIJay2g+n5wd7lm9rEsKO+svqVmi+c1j88hSCxbzrg4+HEP0Nt1/B6YW1XVm09T1CpAKjc9n18hjqsaFGdfyva1ZG0Xu3ip6N6JGpyTSqY5h4BOlpLPaOnyw45PdXTN+DtAKg7DLrLFTnWusoSBHk3s0d7YouJHq85/R09Tfc37ENXZF48eAYLnq9GLioNcwDZrC6FW6godB8JnqYUPvn0pWLfQz0lM0Yy8Mybgn84Ds3Q9bDP10bLyOV+qzxa4Rd9Dhu7cju8mMaONXK3UqmBQ9qIg7etIwEqM/kECk/Dzja4Bs1xR+Q/tCbc8IKrSGsTdJJ0vge7IG20W687uVmK6icWQ6cD3lwFzgNMGtFvO5qyJeKflGLAAcQZOrkxVwy3cWvqlGpvjmf9Qe6Ap20MPbV92DPV0OhFM4kz8Yr0ffC2zLWSQ1kqY6QdQrttR3kh1YLtQd1kCEv5hVoPIRWl5ERcUTttBIrWp6Xs5Ehh5OUUwI5aEBvuiDmUoENmnVw1FohCrbRp1A1E+XSlWVOTi7ADW+5Ohb9z1vK4qx5R5lPdGCPBJZ00mC+Ssp8VUbgpGAvXWMuWQQRbCqI6Rr2jtxZxtfP7W/8onz+yz0Gs76LaT5HX9ecyiZCB/ZR/gFtMxPsDwohoeCRtiuLxE1GM1vUEUgBv86+eehL58/P56QFGQ/MqOe/vC76L63jzmeax4exd/OKTUvkXg+fOJUHych9xt/9goJMrapSgvXrj8+8vk/N80f22Sewj6cyGqt1B6mztoeklVHHraouhvHJaG/OuBz6DHKMpFmQULU1bRWlyYE0RPXYYkUycIemN7TLtgNCJX6BqdyxDKkegO7nJK5xQ7OVYDZTMf9bVHidtk6DQX9Et+V9M7esgbsYBdEeUpsB0Xvw2kd9+rI7V+m47u+O/tq7mw7262HU1WlS9uFzsV6JxIHNmUCy0QS9e077JGRFbG65z3/dOKB/Zk+yDdKpUmdXjn/aS3N5nv4fK7bMHHmPlHd4E2+iTbV5rpzScRnxk6KARuDTJ8Q1LpK2mP8gj1EbuJ9RIyY+EWK4hCiIDBAS1Tm2IEXAFfgKPgdL9O6mAa06wjCcUAL6EsxPQWO9VNegBPm/0GgkZbDxCynxujX/92vmGcjZRMAY45puak2sFLCLSwXpEsyy5fnF0jGJBhm+fNSHKKUUfy+276A7/feLOFxxUuHRNJI2Osenxyvf8DAGObT60pfTTlhEg9u/KKkhJqm5U1/+BEcSkpFDA5XeCqxwXmPac1jcuZ3JWQ+p0NdWzb/5v1ZvF8GtMTFFEdQjpLO0bwPb0BHNWnip3liDXI2fXf05jjvfJ0NpjLCUgfTh9CMFYVFKEd4Z/OG/2C+N435mnK+9t1gvCiVcaaH7rK4+PjCvpVNiz+t2QyqH1O8x3JKZVl6Q+Lp/XK8wMjVMslOq9FdSw5FtUs/CptXH9PW+wbWHgrV17R5jTVOtGtKFu3nb80T+E0tv9QkzW3J2dbaw/8ddAKZ0pxIaEqLjlPrji3VgJ3GvdFvlqD8075woxh4fVt0JZE0KVFsAvqhe0dqN9b35jtSpnYMXkU+vZq+IAHad3IHc2s/LYrnD1anfG46IFiMIr9oNbZDWvwthqYNqOigaKd/XlLU4XHfk/PXIjPsLy/9/kAtQ+/wKH+hI/IROWj5FPvTZAT9f7j4ZXQyG4M0TujMAFXYkKvEHv1xhySekgXGGqNxWeWKlf8dDAlLuB1cb/qOD+rk7cmwt+1yKpk9cudqBanTi6zTbXRtV8qylNtjyOVKy1HTz0GW9rjt6sSjAZcT5R+KdtyYb0zyqG9pSLuCw5WBwAn7fjBjKLLoxLXMI+52L9cLwIR2B6OllJZLHJ8vDxmWdtF+QJnmt1rsHPIWY20lftk8fYePkAIg6Hgn532QoIpegMxiWgAOfe5/U44APR8Ac0NeZrVh3gEhs12W+tVSiWiUQekf/YBECUy5fdYbA08dd7VzPAP9aiVcIB9k6tY7WdJ1wNV+bHeydNtmC6G5ICtFC1ZwmJU/j8hf0I8TRVKSiz5oYIa93EpUI78X8GYIAZabx47/n8LDAAJ0nNtP1rpROprqKMBRecShca6qXuTSI3jZBLOB3Vp381B5rCGhjSvh/NSVkYp2qIdP/Bg="; }, {} ], 6: [ function(require2, module2, exports2) { var data = require2("./dictionary-browser"); exports2.init = function() { exports2.dictionary = data.init(); }; exports2.offsetsByLength = new Uint32Array([ 0, 0, 0, 0, 0, 4096, 9216, 21504, 35840, 44032, 53248, 63488, 74752, 87040, 93696, 100864, 104704, 106752, 108928, 113536, 115968, 118528, 119872, 121280, 122016 ]); exports2.sizeBitsByLength = new Uint8Array([ 0, 0, 0, 0, 10, 10, 11, 11, 10, 10, 10, 10, 10, 9, 9, 8, 7, 7, 8, 7, 7, 6, 6, 5, 5 ]); exports2.minDictionaryWordLength = 4; exports2.maxDictionaryWordLength = 24; }, { "./dictionary-browser": 4 } ], 7: [ function(require2, module2, exports2) { function HuffmanCode(bits, value) { this.bits = bits; this.value = value; } exports2.HuffmanCode = HuffmanCode; var MAX_LENGTH = 15; function GetNextKey(key, len) { var step = 1 << len - 1; while (key & step) { step >>= 1; } return (key & step - 1) + step; } function ReplicateValue(table, i2, step, end, code) { do { end -= step; table[i2 + end] = new HuffmanCode( code.bits, code.value ); } while (end > 0); } function NextTableBitSize(count, len, root_bits) { var left = 1 << len - root_bits; while (len < MAX_LENGTH) { left -= count[len]; if (left <= 0) break; ++len; left <<= 1; } return len - root_bits; } exports2.BrotliBuildHuffmanTable = function(root_table, table, root_bits, code_lengths, code_lengths_size) { var start_table = table; var code; var len; var symbol3; var key; var step; var low; var mask; var table_bits; var table_size; var total_size; var sorted; var count = new Int32Array( MAX_LENGTH + 1 ); var offset = new Int32Array( MAX_LENGTH + 1 ); sorted = new Int32Array(code_lengths_size); for (symbol3 = 0; symbol3 < code_lengths_size; symbol3++) { count[code_lengths[symbol3]]++; } offset[1] = 0; for (len = 1; len < MAX_LENGTH; len++) { offset[len + 1] = offset[len] + count[len]; } for (symbol3 = 0; symbol3 < code_lengths_size; symbol3++) { if (code_lengths[symbol3] !== 0) { sorted[offset[code_lengths[symbol3]]++] = symbol3; } } table_bits = root_bits; table_size = 1 << table_bits; total_size = table_size; if (offset[MAX_LENGTH] === 1) { for (key = 0; key < total_size; ++key) { root_table[table + key] = new HuffmanCode( 0, sorted[0] & 65535 ); } return total_size; } key = 0; symbol3 = 0; for (len = 1, step = 2; len <= root_bits; ++len, step <<= 1) { for (; count[len] > 0; --count[len]) { code = new HuffmanCode( len & 255, sorted[symbol3++] & 65535 ); ReplicateValue( root_table, table + key, step, table_size, code ); key = GetNextKey(key, len); } } mask = total_size - 1; low = -1; for (len = root_bits + 1, step = 2; len <= MAX_LENGTH; ++len, step <<= 1) { for (; count[len] > 0; --count[len]) { if ((key & mask) !== low) { table += table_size; table_bits = NextTableBitSize( count, len, root_bits ); table_size = 1 << table_bits; total_size += table_size; low = key & mask; root_table[start_table + low] = new HuffmanCode( table_bits + root_bits & 255, table - start_table - low & 65535 ); } code = new HuffmanCode( len - root_bits & 255, sorted[symbol3++] & 65535 ); ReplicateValue( root_table, table + (key >> root_bits), step, table_size, code ); key = GetNextKey(key, len); } } return total_size; }; }, {} ], 8: [ function(require2, module2, exports2) { "use strict"; exports2.byteLength = byteLength; exports2.toByteArray = toByteArray; exports2.fromByteArray = fromByteArray; var lookup = []; var revLookup = []; var Arr = typeof Uint8Array !== "undefined" ? Uint8Array : Array; var code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; for (var i2 = 0, len = code.length; i2 < len; ++i2) { lookup[i2] = code[i2]; revLookup[code.charCodeAt(i2)] = i2; } revLookup["-".charCodeAt(0)] = 62; revLookup["_".charCodeAt(0)] = 63; function getLens(b64) { var len2 = b64.length; if (len2 % 4 > 0) { throw new Error( "Invalid string. Length must be a multiple of 4" ); } var validLen = b64.indexOf("="); if (validLen === -1) validLen = len2; var placeHoldersLen = validLen === len2 ? 0 : 4 - validLen % 4; return [validLen, placeHoldersLen]; } function byteLength(b64) { var lens = getLens(b64); var validLen = lens[0]; var placeHoldersLen = lens[1]; return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; } function _byteLength(b64, validLen, placeHoldersLen) { return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; } function toByteArray(b64) { var tmp; var lens = getLens(b64); var validLen = lens[0]; var placeHoldersLen = lens[1]; var arr = new Arr( _byteLength(b64, validLen, placeHoldersLen) ); var curByte = 0; var len2 = placeHoldersLen > 0 ? validLen - 4 : validLen; for (var i22 = 0; i22 < len2; i22 += 4) { tmp = revLookup[b64.charCodeAt(i22)] << 18 | revLookup[b64.charCodeAt(i22 + 1)] << 12 | revLookup[b64.charCodeAt(i22 + 2)] << 6 | revLookup[b64.charCodeAt(i22 + 3)]; arr[curByte++] = tmp >> 16 & 255; arr[curByte++] = tmp >> 8 & 255; arr[curByte++] = tmp & 255; } if (placeHoldersLen === 2) { tmp = revLookup[b64.charCodeAt(i22)] << 2 | revLookup[b64.charCodeAt(i22 + 1)] >> 4; arr[curByte++] = tmp & 255; } if (placeHoldersLen === 1) { tmp = revLookup[b64.charCodeAt(i22)] << 10 | revLookup[b64.charCodeAt(i22 + 1)] << 4 | revLookup[b64.charCodeAt(i22 + 2)] >> 2; arr[curByte++] = tmp >> 8 & 255; arr[curByte++] = tmp & 255; } return arr; } function tripletToBase64(num) { return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63]; } function encodeChunk(uint8, start2, end) { var tmp; var output = []; for (var i22 = start2; i22 < end; i22 += 3) { tmp = (uint8[i22] << 16 & 16711680) + (uint8[i22 + 1] << 8 & 65280) + (uint8[i22 + 2] & 255); output.push(tripletToBase64(tmp)); } return output.join(""); } function fromByteArray(uint8) { var tmp; var len2 = uint8.length; var extraBytes = len2 % 3; var parts = []; var maxChunkLength = 16383; for (var i22 = 0, len22 = len2 - extraBytes; i22 < len22; i22 += maxChunkLength) { parts.push( encodeChunk( uint8, i22, i22 + maxChunkLength > len22 ? len22 : i22 + maxChunkLength ) ); } if (extraBytes === 1) { tmp = uint8[len2 - 1]; parts.push( lookup[tmp >> 2] + lookup[tmp << 4 & 63] + "==" ); } else if (extraBytes === 2) { tmp = (uint8[len2 - 2] << 8) + uint8[len2 - 1]; parts.push( lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + "=" ); } return parts.join(""); } }, {} ], 9: [ function(require2, module2, exports2) { function PrefixCodeRange(offset, nbits) { this.offset = offset; this.nbits = nbits; } exports2.kBlockLengthPrefixCode = [ new PrefixCodeRange(1, 2), new PrefixCodeRange(5, 2), new PrefixCodeRange(9, 2), new PrefixCodeRange(13, 2), new PrefixCodeRange(17, 3), new PrefixCodeRange(25, 3), new PrefixCodeRange(33, 3), new PrefixCodeRange(41, 3), new PrefixCodeRange(49, 4), new PrefixCodeRange(65, 4), new PrefixCodeRange(81, 4), new PrefixCodeRange(97, 4), new PrefixCodeRange(113, 5), new PrefixCodeRange(145, 5), new PrefixCodeRange(177, 5), new PrefixCodeRange(209, 5), new PrefixCodeRange(241, 6), new PrefixCodeRange(305, 6), new PrefixCodeRange(369, 7), new PrefixCodeRange(497, 8), new PrefixCodeRange(753, 9), new PrefixCodeRange(1265, 10), new PrefixCodeRange(2289, 11), new PrefixCodeRange(4337, 12), new PrefixCodeRange(8433, 13), new PrefixCodeRange(16625, 24) ]; exports2.kInsertLengthPrefixCode = [ new PrefixCodeRange(0, 0), new PrefixCodeRange(1, 0), new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0), new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0), new PrefixCodeRange(6, 1), new PrefixCodeRange(8, 1), new PrefixCodeRange(10, 2), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 3), new PrefixCodeRange(26, 3), new PrefixCodeRange(34, 4), new PrefixCodeRange(50, 4), new PrefixCodeRange(66, 5), new PrefixCodeRange(98, 5), new PrefixCodeRange(130, 6), new PrefixCodeRange(194, 7), new PrefixCodeRange(322, 8), new PrefixCodeRange(578, 9), new PrefixCodeRange(1090, 10), new PrefixCodeRange(2114, 12), new PrefixCodeRange(6210, 14), new PrefixCodeRange(22594, 24) ]; exports2.kCopyLengthPrefixCode = [ new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0), new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0), new PrefixCodeRange(6, 0), new PrefixCodeRange(7, 0), new PrefixCodeRange(8, 0), new PrefixCodeRange(9, 0), new PrefixCodeRange(10, 1), new PrefixCodeRange(12, 1), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 2), new PrefixCodeRange(22, 3), new PrefixCodeRange(30, 3), new PrefixCodeRange(38, 4), new PrefixCodeRange(54, 4), new PrefixCodeRange(70, 5), new PrefixCodeRange(102, 5), new PrefixCodeRange(134, 6), new PrefixCodeRange(198, 7), new PrefixCodeRange(326, 8), new PrefixCodeRange(582, 9), new PrefixCodeRange(1094, 10), new PrefixCodeRange(2118, 24) ]; exports2.kInsertRangeLut = [0, 0, 8, 8, 0, 16, 8, 16, 16]; exports2.kCopyRangeLut = [0, 8, 0, 8, 16, 0, 16, 8, 16]; }, {} ], 10: [ function(require2, module2, exports2) { function BrotliInput(buffer) { this.buffer = buffer; this.pos = 0; } BrotliInput.prototype.read = function(buf, i2, count) { if (this.pos + count > this.buffer.length) { count = this.buffer.length - this.pos; } for (var p3 = 0; p3 < count; p3++) buf[i2 + p3] = this.buffer[this.pos + p3]; this.pos += count; return count; }; exports2.BrotliInput = BrotliInput; function BrotliOutput(buf) { this.buffer = buf; this.pos = 0; } BrotliOutput.prototype.write = function(buf, count) { if (this.pos + count > this.buffer.length) throw new Error( "Output buffer is not large enough" ); this.buffer.set(buf.subarray(0, count), this.pos); this.pos += count; return count; }; exports2.BrotliOutput = BrotliOutput; }, {} ], 11: [ function(require2, module2, exports2) { var BrotliDictionary = require2("./dictionary"); var kIdentity = 0; var kOmitLast1 = 1; var kOmitLast2 = 2; var kOmitLast3 = 3; var kOmitLast4 = 4; var kOmitLast5 = 5; var kOmitLast6 = 6; var kOmitLast7 = 7; var kOmitLast8 = 8; var kOmitLast9 = 9; var kUppercaseFirst = 10; var kUppercaseAll = 11; var kOmitFirst1 = 12; var kOmitFirst2 = 13; var kOmitFirst3 = 14; var kOmitFirst4 = 15; var kOmitFirst5 = 16; var kOmitFirst6 = 17; var kOmitFirst7 = 18; var kOmitFirst8 = 19; var kOmitFirst9 = 20; function Transform(prefix2, transform, suffix) { this.prefix = new Uint8Array(prefix2.length); this.transform = transform; this.suffix = new Uint8Array(suffix.length); for (var i2 = 0; i2 < prefix2.length; i2++) this.prefix[i2] = prefix2.charCodeAt(i2); for (var i2 = 0; i2 < suffix.length; i2++) this.suffix[i2] = suffix.charCodeAt(i2); } var kTransforms = [ new Transform("", kIdentity, ""), new Transform("", kIdentity, " "), new Transform(" ", kIdentity, " "), new Transform("", kOmitFirst1, ""), new Transform("", kUppercaseFirst, " "), new Transform("", kIdentity, " the "), new Transform(" ", kIdentity, ""), new Transform("s ", kIdentity, " "), new Transform("", kIdentity, " of "), new Transform("", kUppercaseFirst, ""), new Transform("", kIdentity, " and "), new Transform("", kOmitFirst2, ""), new Transform("", kOmitLast1, ""), new Transform(", ", kIdentity, " "), new Transform("", kIdentity, ", "), new Transform(" ", kUppercaseFirst, " "), new Transform("", kIdentity, " in "), new Transform("", kIdentity, " to "), new Transform("e ", kIdentity, " "), new Transform("", kIdentity, '"'), new Transform("", kIdentity, "."), new Transform("", kIdentity, '">'), new Transform("", kIdentity, "\n"), new Transform("", kOmitLast3, ""), new Transform("", kIdentity, "]"), new Transform("", kIdentity, " for "), new Transform("", kOmitFirst3, ""), new Transform("", kOmitLast2, ""), new Transform("", kIdentity, " a "), new Transform("", kIdentity, " that "), new Transform(" ", kUppercaseFirst, ""), new Transform("", kIdentity, ". "), new Transform(".", kIdentity, ""), new Transform(" ", kIdentity, ", "), new Transform("", kOmitFirst4, ""), new Transform("", kIdentity, " with "), new Transform("", kIdentity, "'"), new Transform("", kIdentity, " from "), new Transform("", kIdentity, " by "), new Transform("", kOmitFirst5, ""), new Transform("", kOmitFirst6, ""), new Transform(" the ", kIdentity, ""), new Transform("", kOmitLast4, ""), new Transform("", kIdentity, ". The "), new Transform("", kUppercaseAll, ""), new Transform("", kIdentity, " on "), new Transform("", kIdentity, " as "), new Transform("", kIdentity, " is "), new Transform("", kOmitLast7, ""), new Transform("", kOmitLast1, "ing "), new Transform("", kIdentity, "\n "), new Transform("", kIdentity, ":"), new Transform(" ", kIdentity, ". "), new Transform("", kIdentity, "ed "), new Transform("", kOmitFirst9, ""), new Transform("", kOmitFirst7, ""), new Transform("", kOmitLast6, ""), new Transform("", kIdentity, "("), new Transform("", kUppercaseFirst, ", "), new Transform("", kOmitLast8, ""), new Transform("", kIdentity, " at "), new Transform("", kIdentity, "ly "), new Transform(" the ", kIdentity, " of "), new Transform("", kOmitLast5, ""), new Transform("", kOmitLast9, ""), new Transform(" ", kUppercaseFirst, ", "), new Transform("", kUppercaseFirst, '"'), new Transform(".", kIdentity, "("), new Transform("", kUppercaseAll, " "), new Transform("", kUppercaseFirst, '">'), new Transform("", kIdentity, '="'), new Transform(" ", kIdentity, "."), new Transform(".com/", kIdentity, ""), new Transform(" the ", kIdentity, " of the "), new Transform("", kUppercaseFirst, "'"), new Transform("", kIdentity, ". This "), new Transform("", kIdentity, ","), new Transform(".", kIdentity, " "), new Transform("", kUppercaseFirst, "("), new Transform("", kUppercaseFirst, "."), new Transform("", kIdentity, " not "), new Transform(" ", kIdentity, '="'), new Transform("", kIdentity, "er "), new Transform(" ", kUppercaseAll, " "), new Transform("", kIdentity, "al "), new Transform(" ", kUppercaseAll, ""), new Transform("", kIdentity, "='"), new Transform("", kUppercaseAll, '"'), new Transform("", kUppercaseFirst, ". "), new Transform(" ", kIdentity, "("), new Transform("", kIdentity, "ful "), new Transform(" ", kUppercaseFirst, ". "), new Transform("", kIdentity, "ive "), new Transform("", kIdentity, "less "), new Transform("", kUppercaseAll, "'"), new Transform("", kIdentity, "est "), new Transform(" ", kUppercaseFirst, "."), new Transform("", kUppercaseAll, '">'), new Transform(" ", kIdentity, "='"), new Transform("", kUppercaseFirst, ","), new Transform("", kIdentity, "ize "), new Transform("", kUppercaseAll, "."), new Transform("\xC2\xA0", kIdentity, ""), new Transform(" ", kIdentity, ","), new Transform("", kUppercaseFirst, '="'), new Transform("", kUppercaseAll, '="'), new Transform("", kIdentity, "ous "), new Transform("", kUppercaseAll, ", "), new Transform("", kUppercaseFirst, "='"), new Transform(" ", kUppercaseFirst, ","), new Transform(" ", kUppercaseAll, '="'), new Transform(" ", kUppercaseAll, ", "), new Transform("", kUppercaseAll, ","), new Transform("", kUppercaseAll, "("), new Transform("", kUppercaseAll, ". "), new Transform(" ", kUppercaseAll, "."), new Transform("", kUppercaseAll, "='"), new Transform(" ", kUppercaseAll, ". "), new Transform(" ", kUppercaseFirst, '="'), new Transform(" ", kUppercaseAll, "='"), new Transform(" ", kUppercaseFirst, "='") ]; exports2.kTransforms = kTransforms; exports2.kNumTransforms = kTransforms.length; function ToUpperCase(p3, i2) { if (p3[i2] < 192) { if (p3[i2] >= 97 && p3[i2] <= 122) { p3[i2] ^= 32; } return 1; } if (p3[i2] < 224) { p3[i2 + 1] ^= 32; return 2; } p3[i2 + 2] ^= 5; return 3; } exports2.transformDictionaryWord = function(dst, idx, word, len, transform) { var prefix2 = kTransforms[transform].prefix; var suffix = kTransforms[transform].suffix; var t3 = kTransforms[transform].transform; var skip = t3 < kOmitFirst1 ? 0 : t3 - (kOmitFirst1 - 1); var i2 = 0; var start_idx = idx; var uppercase; if (skip > len) { skip = len; } var prefix_pos = 0; while (prefix_pos < prefix2.length) { dst[idx++] = prefix2[prefix_pos++]; } word += skip; len -= skip; if (t3 <= kOmitLast9) { len -= t3; } for (i2 = 0; i2 < len; i2++) { dst[idx++] = BrotliDictionary.dictionary[word + i2]; } uppercase = idx - len; if (t3 === kUppercaseFirst) { ToUpperCase(dst, uppercase); } else if (t3 === kUppercaseAll) { while (len > 0) { var step = ToUpperCase(dst, uppercase); uppercase += step; len -= step; } } var suffix_pos = 0; while (suffix_pos < suffix.length) { dst[idx++] = suffix[suffix_pos++]; } return idx - start_idx; }; }, { "./dictionary": 6 } ], 12: [ function(require2, module2, exports2) { module2.exports = require2("./dec/decode").BrotliDecompressBuffer; }, { "./dec/decode": 3 } ] }, {}, [12] )(12); })(); // packages/global-styles-ui/build-module/font-library/lib/inflate.mjs var __require3 = /* @__PURE__ */ ((x2) => typeof __require !== "undefined" ? __require : typeof Proxy !== "undefined" ? new Proxy(x2, { get: (a2, b2) => (typeof __require !== "undefined" ? __require : a2)[b2] }) : x2)(function(x2) { if (typeof __require !== "undefined") return __require.apply(this, arguments); throw Error('Dynamic require of "' + x2 + '" is not supported'); }); var inflate_default = (function() { var define, module, exports; return (/* @__PURE__ */ (function() { function r3(e2, n2, t3) { function o3(i22, f2) { if (!n2[i22]) { if (!e2[i22]) { var c6 = "function" == typeof __require3 && __require3; if (!f2 && c6) return c6(i22, true); if (u2) return u2(i22, true); var a2 = new Error("Cannot find module '" + i22 + "'"); throw a2.code = "MODULE_NOT_FOUND", a2; } var p3 = n2[i22] = { exports: {} }; e2[i22][0].call( p3.exports, function(r22) { var n22 = e2[i22][1][r22]; return o3(n22 || r22); }, p3, p3.exports, r3, e2, n2, t3 ); } return n2[i22].exports; } for (var u2 = "function" == typeof __require3 && __require3, i2 = 0; i2 < t3.length; i2++) o3(t3[i2]); return o3; } return r3; })())( { 1: [ function(require2, module2, exports2) { "use strict"; var TYPED_OK = typeof Uint8Array !== "undefined" && typeof Uint16Array !== "undefined" && typeof Int32Array !== "undefined"; function _has(obj, key) { return Object.prototype.hasOwnProperty.call(obj, key); } exports2.assign = function(obj) { var sources = Array.prototype.slice.call( arguments, 1 ); while (sources.length) { var source = sources.shift(); if (!source) { continue; } if (typeof source !== "object") { throw new TypeError( source + "must be non-object" ); } for (var p3 in source) { if (_has(source, p3)) { obj[p3] = source[p3]; } } } return obj; }; exports2.shrinkBuf = function(buf, size) { if (buf.length === size) { return buf; } if (buf.subarray) { return buf.subarray(0, size); } buf.length = size; return buf; }; var fnTyped = { arraySet: function(dest, src, src_offs, len, dest_offs) { if (src.subarray && dest.subarray) { dest.set( src.subarray(src_offs, src_offs + len), dest_offs ); return; } for (var i2 = 0; i2 < len; i2++) { dest[dest_offs + i2] = src[src_offs + i2]; } }, // Join array of chunks to single array. flattenChunks: function(chunks) { var i2, l2, len, pos, chunk2, result; len = 0; for (i2 = 0, l2 = chunks.length; i2 < l2; i2++) { len += chunks[i2].length; } result = new Uint8Array(len); pos = 0; for (i2 = 0, l2 = chunks.length; i2 < l2; i2++) { chunk2 = chunks[i2]; result.set(chunk2, pos); pos += chunk2.length; } return result; } }; var fnUntyped = { arraySet: function(dest, src, src_offs, len, dest_offs) { for (var i2 = 0; i2 < len; i2++) { dest[dest_offs + i2] = src[src_offs + i2]; } }, // Join array of chunks to single array. flattenChunks: function(chunks) { return [].concat.apply([], chunks); } }; exports2.setTyped = function(on) { if (on) { exports2.Buf8 = Uint8Array; exports2.Buf16 = Uint16Array; exports2.Buf32 = Int32Array; exports2.assign(exports2, fnTyped); } else { exports2.Buf8 = Array; exports2.Buf16 = Array; exports2.Buf32 = Array; exports2.assign(exports2, fnUntyped); } }; exports2.setTyped(TYPED_OK); }, {} ], 2: [ function(require2, module2, exports2) { "use strict"; var utils = require2("./common"); var STR_APPLY_OK = true; var STR_APPLY_UIA_OK = true; try { String.fromCharCode.apply(null, [0]); } catch (__150) { STR_APPLY_OK = false; } try { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__150) { STR_APPLY_UIA_OK = false; } var _utf8len = new utils.Buf8(256); for (var q = 0; q < 256; q++) { _utf8len[q] = q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1; } _utf8len[254] = _utf8len[254] = 1; exports2.string2buf = function(str) { var buf, c6, c22, m_pos, i2, str_len = str.length, buf_len = 0; for (m_pos = 0; m_pos < str_len; m_pos++) { c6 = str.charCodeAt(m_pos); if ((c6 & 64512) === 55296 && m_pos + 1 < str_len) { c22 = str.charCodeAt(m_pos + 1); if ((c22 & 64512) === 56320) { c6 = 65536 + (c6 - 55296 << 10) + (c22 - 56320); m_pos++; } } buf_len += c6 < 128 ? 1 : c6 < 2048 ? 2 : c6 < 65536 ? 3 : 4; } buf = new utils.Buf8(buf_len); for (i2 = 0, m_pos = 0; i2 < buf_len; m_pos++) { c6 = str.charCodeAt(m_pos); if ((c6 & 64512) === 55296 && m_pos + 1 < str_len) { c22 = str.charCodeAt(m_pos + 1); if ((c22 & 64512) === 56320) { c6 = 65536 + (c6 - 55296 << 10) + (c22 - 56320); m_pos++; } } if (c6 < 128) { buf[i2++] = c6; } else if (c6 < 2048) { buf[i2++] = 192 | c6 >>> 6; buf[i2++] = 128 | c6 & 63; } else if (c6 < 65536) { buf[i2++] = 224 | c6 >>> 12; buf[i2++] = 128 | c6 >>> 6 & 63; buf[i2++] = 128 | c6 & 63; } else { buf[i2++] = 240 | c6 >>> 18; buf[i2++] = 128 | c6 >>> 12 & 63; buf[i2++] = 128 | c6 >>> 6 & 63; buf[i2++] = 128 | c6 & 63; } } return buf; }; function buf2binstring(buf, len) { if (len < 65534) { if (buf.subarray && STR_APPLY_UIA_OK || !buf.subarray && STR_APPLY_OK) { return String.fromCharCode.apply( null, utils.shrinkBuf(buf, len) ); } } var result = ""; for (var i2 = 0; i2 < len; i2++) { result += String.fromCharCode(buf[i2]); } return result; } exports2.buf2binstring = function(buf) { return buf2binstring(buf, buf.length); }; exports2.binstring2buf = function(str) { var buf = new utils.Buf8(str.length); for (var i2 = 0, len = buf.length; i2 < len; i2++) { buf[i2] = str.charCodeAt(i2); } return buf; }; exports2.buf2string = function(buf, max) { var i2, out, c6, c_len; var len = max || buf.length; var utf16buf = new Array(len * 2); for (out = 0, i2 = 0; i2 < len; ) { c6 = buf[i2++]; if (c6 < 128) { utf16buf[out++] = c6; continue; } c_len = _utf8len[c6]; if (c_len > 4) { utf16buf[out++] = 65533; i2 += c_len - 1; continue; } c6 &= c_len === 2 ? 31 : c_len === 3 ? 15 : 7; while (c_len > 1 && i2 < len) { c6 = c6 << 6 | buf[i2++] & 63; c_len--; } if (c_len > 1) { utf16buf[out++] = 65533; continue; } if (c6 < 65536) { utf16buf[out++] = c6; } else { c6 -= 65536; utf16buf[out++] = 55296 | c6 >> 10 & 1023; utf16buf[out++] = 56320 | c6 & 1023; } } return buf2binstring(utf16buf, out); }; exports2.utf8border = function(buf, max) { var pos; max = max || buf.length; if (max > buf.length) { max = buf.length; } pos = max - 1; while (pos >= 0 && (buf[pos] & 192) === 128) { pos--; } if (pos < 0) { return max; } if (pos === 0) { return max; } return pos + _utf8len[buf[pos]] > max ? pos : max; }; }, { "./common": 1 } ], 3: [ function(require2, module2, exports2) { "use strict"; function adler32(adler, buf, len, pos) { var s1 = adler & 65535 | 0, s2 = adler >>> 16 & 65535 | 0, n2 = 0; while (len !== 0) { n2 = len > 2e3 ? 2e3 : len; len -= n2; do { s1 = s1 + buf[pos++] | 0; s2 = s2 + s1 | 0; } while (--n2); s1 %= 65521; s2 %= 65521; } return s1 | s2 << 16 | 0; } module2.exports = adler32; }, {} ], 4: [ function(require2, module2, exports2) { "use strict"; module2.exports = { /* Allowed flush values; see deflate() and inflate() below for details */ Z_NO_FLUSH: 0, Z_PARTIAL_FLUSH: 1, Z_SYNC_FLUSH: 2, Z_FULL_FLUSH: 3, Z_FINISH: 4, Z_BLOCK: 5, Z_TREES: 6, /* Return codes for the compression/decompression functions. Negative values * are errors, positive values are used for special but normal events. */ Z_OK: 0, Z_STREAM_END: 1, Z_NEED_DICT: 2, Z_ERRNO: -1, Z_STREAM_ERROR: -2, Z_DATA_ERROR: -3, //Z_MEM_ERROR: -4, Z_BUF_ERROR: -5, //Z_VERSION_ERROR: -6, /* compression levels */ Z_NO_COMPRESSION: 0, Z_BEST_SPEED: 1, Z_BEST_COMPRESSION: 9, Z_DEFAULT_COMPRESSION: -1, Z_FILTERED: 1, Z_HUFFMAN_ONLY: 2, Z_RLE: 3, Z_FIXED: 4, Z_DEFAULT_STRATEGY: 0, /* Possible values of the data_type field (though see inflate()) */ Z_BINARY: 0, Z_TEXT: 1, //Z_ASCII: 1, // = Z_TEXT (deprecated) Z_UNKNOWN: 2, /* The deflate compression method */ Z_DEFLATED: 8 //Z_NULL: null // Use -1 or null inline, depending on var type }; }, {} ], 5: [ function(require2, module2, exports2) { "use strict"; function makeTable() { var c6, table = []; for (var n2 = 0; n2 < 256; n2++) { c6 = n2; for (var k2 = 0; k2 < 8; k2++) { c6 = c6 & 1 ? 3988292384 ^ c6 >>> 1 : c6 >>> 1; } table[n2] = c6; } return table; } var crcTable = makeTable(); function crc32(crc, buf, len, pos) { var t3 = crcTable, end = pos + len; crc ^= -1; for (var i2 = pos; i2 < end; i2++) { crc = crc >>> 8 ^ t3[(crc ^ buf[i2]) & 255]; } return crc ^ -1; } module2.exports = crc32; }, {} ], 6: [ function(require2, module2, exports2) { "use strict"; function GZheader() { this.text = 0; this.time = 0; this.xflags = 0; this.os = 0; this.extra = null; this.extra_len = 0; this.name = ""; this.comment = ""; this.hcrc = 0; this.done = false; } module2.exports = GZheader; }, {} ], 7: [ function(require2, module2, exports2) { "use strict"; var BAD = 30; var TYPE = 12; module2.exports = function inflate_fast(strm, start2) { var state; var _in; var last; var _out; var beg; var end; var dmax; var wsize; var whave; var wnext; var s_window; var hold; var bits; var lcode; var dcode; var lmask; var dmask; var here; var op; var len; var dist; var from; var from_source; var input, output; state = strm.state; _in = strm.next_in; input = strm.input; last = _in + (strm.avail_in - 5); _out = strm.next_out; output = strm.output; beg = _out - (start2 - strm.avail_out); end = _out + (strm.avail_out - 257); dmax = state.dmax; wsize = state.wsize; whave = state.whave; wnext = state.wnext; s_window = state.window; hold = state.hold; bits = state.bits; lcode = state.lencode; dcode = state.distcode; lmask = (1 << state.lenbits) - 1; dmask = (1 << state.distbits) - 1; top: do { if (bits < 15) { hold += input[_in++] << bits; bits += 8; hold += input[_in++] << bits; bits += 8; } here = lcode[hold & lmask]; dolen: for (; ; ) { op = here >>> 24; hold >>>= op; bits -= op; op = here >>> 16 & 255; if (op === 0) { output[_out++] = here & 65535; } else if (op & 16) { len = here & 65535; op &= 15; if (op) { if (bits < op) { hold += input[_in++] << bits; bits += 8; } len += hold & (1 << op) - 1; hold >>>= op; bits -= op; } if (bits < 15) { hold += input[_in++] << bits; bits += 8; hold += input[_in++] << bits; bits += 8; } here = dcode[hold & dmask]; dodist: for (; ; ) { op = here >>> 24; hold >>>= op; bits -= op; op = here >>> 16 & 255; if (op & 16) { dist = here & 65535; op &= 15; if (bits < op) { hold += input[_in++] << bits; bits += 8; if (bits < op) { hold += input[_in++] << bits; bits += 8; } } dist += hold & (1 << op) - 1; if (dist > dmax) { strm.msg = "invalid distance too far back"; state.mode = BAD; break top; } hold >>>= op; bits -= op; op = _out - beg; if (dist > op) { op = dist - op; if (op > whave) { if (state.sane) { strm.msg = "invalid distance too far back"; state.mode = BAD; break top; } } from = 0; from_source = s_window; if (wnext === 0) { from += wsize - op; if (op < len) { len -= op; do { output[_out++] = s_window[from++]; } while (--op); from = _out - dist; from_source = output; } } else if (wnext < op) { from += wsize + wnext - op; op -= wnext; if (op < len) { len -= op; do { output[_out++] = s_window[from++]; } while (--op); from = 0; if (wnext < len) { op = wnext; len -= op; do { output[_out++] = s_window[from++]; } while (--op); from = _out - dist; from_source = output; } } } else { from += wnext - op; if (op < len) { len -= op; do { output[_out++] = s_window[from++]; } while (--op); from = _out - dist; from_source = output; } } while (len > 2) { output[_out++] = from_source[from++]; output[_out++] = from_source[from++]; output[_out++] = from_source[from++]; len -= 3; } if (len) { output[_out++] = from_source[from++]; if (len > 1) { output[_out++] = from_source[from++]; } } } else { from = _out - dist; do { output[_out++] = output[from++]; output[_out++] = output[from++]; output[_out++] = output[from++]; len -= 3; } while (len > 2); if (len) { output[_out++] = output[from++]; if (len > 1) { output[_out++] = output[from++]; } } } } else if ((op & 64) === 0) { here = dcode[(here & 65535) + (hold & (1 << op) - 1)]; continue dodist; } else { strm.msg = "invalid distance code"; state.mode = BAD; break top; } break; } } else if ((op & 64) === 0) { here = lcode[(here & 65535) + (hold & (1 << op) - 1)]; continue dolen; } else if (op & 32) { state.mode = TYPE; break top; } else { strm.msg = "invalid literal/length code"; state.mode = BAD; break top; } break; } } while (_in < last && _out < end); len = bits >> 3; _in -= len; bits -= len << 3; hold &= (1 << bits) - 1; strm.next_in = _in; strm.next_out = _out; strm.avail_in = _in < last ? 5 + (last - _in) : 5 - (_in - last); strm.avail_out = _out < end ? 257 + (end - _out) : 257 - (_out - end); state.hold = hold; state.bits = bits; return; }; }, {} ], 8: [ function(require2, module2, exports2) { "use strict"; var utils = require2("../utils/common"); var adler32 = require2("./adler32"); var crc32 = require2("./crc32"); var inflate_fast = require2("./inffast"); var inflate_table = require2("./inftrees"); var CODES = 0; var LENS = 1; var DISTS = 2; var Z_FINISH = 4; var Z_BLOCK = 5; var Z_TREES = 6; var Z_OK = 0; var Z_STREAM_END = 1; var Z_NEED_DICT = 2; var Z_STREAM_ERROR = -2; var Z_DATA_ERROR = -3; var Z_MEM_ERROR = -4; var Z_BUF_ERROR = -5; var Z_DEFLATED = 8; var HEAD = 1; var FLAGS = 2; var TIME = 3; var OS = 4; var EXLEN = 5; var EXTRA = 6; var NAME = 7; var COMMENT = 8; var HCRC = 9; var DICTID = 10; var DICT = 11; var TYPE = 12; var TYPEDO = 13; var STORED = 14; var COPY_ = 15; var COPY = 16; var TABLE = 17; var LENLENS = 18; var CODELENS = 19; var LEN_ = 20; var LEN = 21; var LENEXT = 22; var DIST = 23; var DISTEXT = 24; var MATCH = 25; var LIT = 26; var CHECK = 27; var LENGTH = 28; var DONE = 29; var BAD = 30; var MEM = 31; var SYNC = 32; var ENOUGH_LENS = 852; var ENOUGH_DISTS = 592; var MAX_WBITS = 15; var DEF_WBITS = MAX_WBITS; function zswap32(q) { return (q >>> 24 & 255) + (q >>> 8 & 65280) + ((q & 65280) << 8) + ((q & 255) << 24); } function InflateState() { this.mode = 0; this.last = false; this.wrap = 0; this.havedict = false; this.flags = 0; this.dmax = 0; this.check = 0; this.total = 0; this.head = null; this.wbits = 0; this.wsize = 0; this.whave = 0; this.wnext = 0; this.window = null; this.hold = 0; this.bits = 0; this.length = 0; this.offset = 0; this.extra = 0; this.lencode = null; this.distcode = null; this.lenbits = 0; this.distbits = 0; this.ncode = 0; this.nlen = 0; this.ndist = 0; this.have = 0; this.next = null; this.lens = new utils.Buf16( 320 ); this.work = new utils.Buf16( 288 ); this.lendyn = null; this.distdyn = null; this.sane = 0; this.back = 0; this.was = 0; } function inflateResetKeep(strm) { var state; if (!strm || !strm.state) { return Z_STREAM_ERROR; } state = strm.state; strm.total_in = strm.total_out = state.total = 0; strm.msg = ""; if (state.wrap) { strm.adler = state.wrap & 1; } state.mode = HEAD; state.last = 0; state.havedict = 0; state.dmax = 32768; state.head = null; state.hold = 0; state.bits = 0; state.lencode = state.lendyn = new utils.Buf32( ENOUGH_LENS ); state.distcode = state.distdyn = new utils.Buf32( ENOUGH_DISTS ); state.sane = 1; state.back = -1; return Z_OK; } function inflateReset(strm) { var state; if (!strm || !strm.state) { return Z_STREAM_ERROR; } state = strm.state; state.wsize = 0; state.whave = 0; state.wnext = 0; return inflateResetKeep(strm); } function inflateReset2(strm, windowBits) { var wrap; var state; if (!strm || !strm.state) { return Z_STREAM_ERROR; } state = strm.state; if (windowBits < 0) { wrap = 0; windowBits = -windowBits; } else { wrap = (windowBits >> 4) + 1; if (windowBits < 48) { windowBits &= 15; } } if (windowBits && (windowBits < 8 || windowBits > 15)) { return Z_STREAM_ERROR; } if (state.window !== null && state.wbits !== windowBits) { state.window = null; } state.wrap = wrap; state.wbits = windowBits; return inflateReset(strm); } function inflateInit2(strm, windowBits) { var ret; var state; if (!strm) { return Z_STREAM_ERROR; } state = new InflateState(); strm.state = state; state.window = null; ret = inflateReset2(strm, windowBits); if (ret !== Z_OK) { strm.state = null; } return ret; } function inflateInit(strm) { return inflateInit2(strm, DEF_WBITS); } var virgin = true; var lenfix, distfix; function fixedtables(state) { if (virgin) { var sym; lenfix = new utils.Buf32(512); distfix = new utils.Buf32(32); sym = 0; while (sym < 144) { state.lens[sym++] = 8; } while (sym < 256) { state.lens[sym++] = 9; } while (sym < 280) { state.lens[sym++] = 7; } while (sym < 288) { state.lens[sym++] = 8; } inflate_table( LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 } ); sym = 0; while (sym < 32) { state.lens[sym++] = 5; } inflate_table( DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 } ); virgin = false; } state.lencode = lenfix; state.lenbits = 9; state.distcode = distfix; state.distbits = 5; } function updatewindow(strm, src, end, copy) { var dist; var state = strm.state; if (state.window === null) { state.wsize = 1 << state.wbits; state.wnext = 0; state.whave = 0; state.window = new utils.Buf8(state.wsize); } if (copy >= state.wsize) { utils.arraySet( state.window, src, end - state.wsize, state.wsize, 0 ); state.wnext = 0; state.whave = state.wsize; } else { dist = state.wsize - state.wnext; if (dist > copy) { dist = copy; } utils.arraySet( state.window, src, end - copy, dist, state.wnext ); copy -= dist; if (copy) { utils.arraySet( state.window, src, end - copy, copy, 0 ); state.wnext = copy; state.whave = state.wsize; } else { state.wnext += dist; if (state.wnext === state.wsize) { state.wnext = 0; } if (state.whave < state.wsize) { state.whave += dist; } } } return 0; } function inflate(strm, flush2) { var state; var input, output; var next; var put; var have, left; var hold; var bits; var _in, _out; var copy; var from; var from_source; var here = 0; var here_bits, here_op, here_val; var last_bits, last_op, last_val; var len; var ret; var hbuf = new utils.Buf8( 4 ); var opts; var n2; var order = ( /* permutation of code lengths */ [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ] ); if (!strm || !strm.state || !strm.output || !strm.input && strm.avail_in !== 0) { return Z_STREAM_ERROR; } state = strm.state; if (state.mode === TYPE) { state.mode = TYPEDO; } put = strm.next_out; output = strm.output; left = strm.avail_out; next = strm.next_in; input = strm.input; have = strm.avail_in; hold = state.hold; bits = state.bits; _in = have; _out = left; ret = Z_OK; inf_leave: for (; ; ) { switch (state.mode) { case HEAD: if (state.wrap === 0) { state.mode = TYPEDO; break; } while (bits < 16) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } if (state.wrap & 2 && hold === 35615) { state.check = 0; hbuf[0] = hold & 255; hbuf[1] = hold >>> 8 & 255; state.check = crc32( state.check, hbuf, 2, 0 ); hold = 0; bits = 0; state.mode = FLAGS; break; } state.flags = 0; if (state.head) { state.head.done = false; } if (!(state.wrap & 1) || (((hold & 255) << 8) + (hold >> 8)) % 31) { strm.msg = "incorrect header check"; state.mode = BAD; break; } if ((hold & 15) !== Z_DEFLATED) { strm.msg = "unknown compression method"; state.mode = BAD; break; } hold >>>= 4; bits -= 4; len = (hold & 15) + 8; if (state.wbits === 0) { state.wbits = len; } else if (len > state.wbits) { strm.msg = "invalid window size"; state.mode = BAD; break; } state.dmax = 1 << len; strm.adler = state.check = 1; state.mode = hold & 512 ? DICTID : TYPE; hold = 0; bits = 0; break; case FLAGS: while (bits < 16) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } state.flags = hold; if ((state.flags & 255) !== Z_DEFLATED) { strm.msg = "unknown compression method"; state.mode = BAD; break; } if (state.flags & 57344) { strm.msg = "unknown header flags set"; state.mode = BAD; break; } if (state.head) { state.head.text = hold >> 8 & 1; } if (state.flags & 512) { hbuf[0] = hold & 255; hbuf[1] = hold >>> 8 & 255; state.check = crc32( state.check, hbuf, 2, 0 ); } hold = 0; bits = 0; state.mode = TIME; /* falls through */ case TIME: while (bits < 32) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } if (state.head) { state.head.time = hold; } if (state.flags & 512) { hbuf[0] = hold & 255; hbuf[1] = hold >>> 8 & 255; hbuf[2] = hold >>> 16 & 255; hbuf[3] = hold >>> 24 & 255; state.check = crc32( state.check, hbuf, 4, 0 ); } hold = 0; bits = 0; state.mode = OS; /* falls through */ case OS: while (bits < 16) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } if (state.head) { state.head.xflags = hold & 255; state.head.os = hold >> 8; } if (state.flags & 512) { hbuf[0] = hold & 255; hbuf[1] = hold >>> 8 & 255; state.check = crc32( state.check, hbuf, 2, 0 ); } hold = 0; bits = 0; state.mode = EXLEN; /* falls through */ case EXLEN: if (state.flags & 1024) { while (bits < 16) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } state.length = hold; if (state.head) { state.head.extra_len = hold; } if (state.flags & 512) { hbuf[0] = hold & 255; hbuf[1] = hold >>> 8 & 255; state.check = crc32( state.check, hbuf, 2, 0 ); } hold = 0; bits = 0; } else if (state.head) { state.head.extra = null; } state.mode = EXTRA; /* falls through */ case EXTRA: if (state.flags & 1024) { copy = state.length; if (copy > have) { copy = have; } if (copy) { if (state.head) { len = state.head.extra_len - state.length; if (!state.head.extra) { state.head.extra = new Array( state.head.extra_len ); } utils.arraySet( state.head.extra, input, next, // extra field is limited to 65536 bytes // - no need for additional size check copy, /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/ len ); } if (state.flags & 512) { state.check = crc32( state.check, input, copy, next ); } have -= copy; next += copy; state.length -= copy; } if (state.length) { break inf_leave; } } state.length = 0; state.mode = NAME; /* falls through */ case NAME: if (state.flags & 2048) { if (have === 0) { break inf_leave; } copy = 0; do { len = input[next + copy++]; if (state.head && len && state.length < 65536) { state.head.name += String.fromCharCode(len); } } while (len && copy < have); if (state.flags & 512) { state.check = crc32( state.check, input, copy, next ); } have -= copy; next += copy; if (len) { break inf_leave; } } else if (state.head) { state.head.name = null; } state.length = 0; state.mode = COMMENT; /* falls through */ case COMMENT: if (state.flags & 4096) { if (have === 0) { break inf_leave; } copy = 0; do { len = input[next + copy++]; if (state.head && len && state.length < 65536) { state.head.comment += String.fromCharCode(len); } } while (len && copy < have); if (state.flags & 512) { state.check = crc32( state.check, input, copy, next ); } have -= copy; next += copy; if (len) { break inf_leave; } } else if (state.head) { state.head.comment = null; } state.mode = HCRC; /* falls through */ case HCRC: if (state.flags & 512) { while (bits < 16) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } if (hold !== (state.check & 65535)) { strm.msg = "header crc mismatch"; state.mode = BAD; break; } hold = 0; bits = 0; } if (state.head) { state.head.hcrc = state.flags >> 9 & 1; state.head.done = true; } strm.adler = state.check = 0; state.mode = TYPE; break; case DICTID: while (bits < 32) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } strm.adler = state.check = zswap32(hold); hold = 0; bits = 0; state.mode = DICT; /* falls through */ case DICT: if (state.havedict === 0) { strm.next_out = put; strm.avail_out = left; strm.next_in = next; strm.avail_in = have; state.hold = hold; state.bits = bits; return Z_NEED_DICT; } strm.adler = state.check = 1; state.mode = TYPE; /* falls through */ case TYPE: if (flush2 === Z_BLOCK || flush2 === Z_TREES) { break inf_leave; } /* falls through */ case TYPEDO: if (state.last) { hold >>>= bits & 7; bits -= bits & 7; state.mode = CHECK; break; } while (bits < 3) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } state.last = hold & 1; hold >>>= 1; bits -= 1; switch (hold & 3) { case 0: state.mode = STORED; break; case 1: fixedtables(state); state.mode = LEN_; if (flush2 === Z_TREES) { hold >>>= 2; bits -= 2; break inf_leave; } break; case 2: state.mode = TABLE; break; case 3: strm.msg = "invalid block type"; state.mode = BAD; } hold >>>= 2; bits -= 2; break; case STORED: hold >>>= bits & 7; bits -= bits & 7; while (bits < 32) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } if ((hold & 65535) !== (hold >>> 16 ^ 65535)) { strm.msg = "invalid stored block lengths"; state.mode = BAD; break; } state.length = hold & 65535; hold = 0; bits = 0; state.mode = COPY_; if (flush2 === Z_TREES) { break inf_leave; } /* falls through */ case COPY_: state.mode = COPY; /* falls through */ case COPY: copy = state.length; if (copy) { if (copy > have) { copy = have; } if (copy > left) { copy = left; } if (copy === 0) { break inf_leave; } utils.arraySet( output, input, next, copy, put ); have -= copy; next += copy; left -= copy; put += copy; state.length -= copy; break; } state.mode = TYPE; break; case TABLE: while (bits < 14) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } state.nlen = (hold & 31) + 257; hold >>>= 5; bits -= 5; state.ndist = (hold & 31) + 1; hold >>>= 5; bits -= 5; state.ncode = (hold & 15) + 4; hold >>>= 4; bits -= 4; if (state.nlen > 286 || state.ndist > 30) { strm.msg = "too many length or distance symbols"; state.mode = BAD; break; } state.have = 0; state.mode = LENLENS; /* falls through */ case LENLENS: while (state.have < state.ncode) { while (bits < 3) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } state.lens[order[state.have++]] = hold & 7; hold >>>= 3; bits -= 3; } while (state.have < 19) { state.lens[order[state.have++]] = 0; } state.lencode = state.lendyn; state.lenbits = 7; opts = { bits: state.lenbits }; ret = inflate_table( CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts ); state.lenbits = opts.bits; if (ret) { strm.msg = "invalid code lengths set"; state.mode = BAD; break; } state.have = 0; state.mode = CODELENS; /* falls through */ case CODELENS: while (state.have < state.nlen + state.ndist) { for (; ; ) { here = state.lencode[hold & (1 << state.lenbits) - 1]; here_bits = here >>> 24; here_op = here >>> 16 & 255; here_val = here & 65535; if (here_bits <= bits) { break; } if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } if (here_val < 16) { hold >>>= here_bits; bits -= here_bits; state.lens[state.have++] = here_val; } else { if (here_val === 16) { n2 = here_bits + 2; while (bits < n2) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } hold >>>= here_bits; bits -= here_bits; if (state.have === 0) { strm.msg = "invalid bit length repeat"; state.mode = BAD; break; } len = state.lens[state.have - 1]; copy = 3 + (hold & 3); hold >>>= 2; bits -= 2; } else if (here_val === 17) { n2 = here_bits + 3; while (bits < n2) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } hold >>>= here_bits; bits -= here_bits; len = 0; copy = 3 + (hold & 7); hold >>>= 3; bits -= 3; } else { n2 = here_bits + 7; while (bits < n2) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } hold >>>= here_bits; bits -= here_bits; len = 0; copy = 11 + (hold & 127); hold >>>= 7; bits -= 7; } if (state.have + copy > state.nlen + state.ndist) { strm.msg = "invalid bit length repeat"; state.mode = BAD; break; } while (copy--) { state.lens[state.have++] = len; } } } if (state.mode === BAD) { break; } if (state.lens[256] === 0) { strm.msg = "invalid code -- missing end-of-block"; state.mode = BAD; break; } state.lenbits = 9; opts = { bits: state.lenbits }; ret = inflate_table( LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts ); state.lenbits = opts.bits; if (ret) { strm.msg = "invalid literal/lengths set"; state.mode = BAD; break; } state.distbits = 6; state.distcode = state.distdyn; opts = { bits: state.distbits }; ret = inflate_table( DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts ); state.distbits = opts.bits; if (ret) { strm.msg = "invalid distances set"; state.mode = BAD; break; } state.mode = LEN_; if (flush2 === Z_TREES) { break inf_leave; } /* falls through */ case LEN_: state.mode = LEN; /* falls through */ case LEN: if (have >= 6 && left >= 258) { strm.next_out = put; strm.avail_out = left; strm.next_in = next; strm.avail_in = have; state.hold = hold; state.bits = bits; inflate_fast(strm, _out); put = strm.next_out; output = strm.output; left = strm.avail_out; next = strm.next_in; input = strm.input; have = strm.avail_in; hold = state.hold; bits = state.bits; if (state.mode === TYPE) { state.back = -1; } break; } state.back = 0; for (; ; ) { here = state.lencode[hold & (1 << state.lenbits) - 1]; here_bits = here >>> 24; here_op = here >>> 16 & 255; here_val = here & 65535; if (here_bits <= bits) { break; } if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } if (here_op && (here_op & 240) === 0) { last_bits = here_bits; last_op = here_op; last_val = here_val; for (; ; ) { here = state.lencode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)]; here_bits = here >>> 24; here_op = here >>> 16 & 255; here_val = here & 65535; if (last_bits + here_bits <= bits) { break; } if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } hold >>>= last_bits; bits -= last_bits; state.back += last_bits; } hold >>>= here_bits; bits -= here_bits; state.back += here_bits; state.length = here_val; if (here_op === 0) { state.mode = LIT; break; } if (here_op & 32) { state.back = -1; state.mode = TYPE; break; } if (here_op & 64) { strm.msg = "invalid literal/length code"; state.mode = BAD; break; } state.extra = here_op & 15; state.mode = LENEXT; /* falls through */ case LENEXT: if (state.extra) { n2 = state.extra; while (bits < n2) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } state.length += hold & (1 << state.extra) - 1; hold >>>= state.extra; bits -= state.extra; state.back += state.extra; } state.was = state.length; state.mode = DIST; /* falls through */ case DIST: for (; ; ) { here = state.distcode[hold & (1 << state.distbits) - 1]; here_bits = here >>> 24; here_op = here >>> 16 & 255; here_val = here & 65535; if (here_bits <= bits) { break; } if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } if ((here_op & 240) === 0) { last_bits = here_bits; last_op = here_op; last_val = here_val; for (; ; ) { here = state.distcode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)]; here_bits = here >>> 24; here_op = here >>> 16 & 255; here_val = here & 65535; if (last_bits + here_bits <= bits) { break; } if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } hold >>>= last_bits; bits -= last_bits; state.back += last_bits; } hold >>>= here_bits; bits -= here_bits; state.back += here_bits; if (here_op & 64) { strm.msg = "invalid distance code"; state.mode = BAD; break; } state.offset = here_val; state.extra = here_op & 15; state.mode = DISTEXT; /* falls through */ case DISTEXT: if (state.extra) { n2 = state.extra; while (bits < n2) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } state.offset += hold & (1 << state.extra) - 1; hold >>>= state.extra; bits -= state.extra; state.back += state.extra; } if (state.offset > state.dmax) { strm.msg = "invalid distance too far back"; state.mode = BAD; break; } state.mode = MATCH; /* falls through */ case MATCH: if (left === 0) { break inf_leave; } copy = _out - left; if (state.offset > copy) { copy = state.offset - copy; if (copy > state.whave) { if (state.sane) { strm.msg = "invalid distance too far back"; state.mode = BAD; break; } } if (copy > state.wnext) { copy -= state.wnext; from = state.wsize - copy; } else { from = state.wnext - copy; } if (copy > state.length) { copy = state.length; } from_source = state.window; } else { from_source = output; from = put - state.offset; copy = state.length; } if (copy > left) { copy = left; } left -= copy; state.length -= copy; do { output[put++] = from_source[from++]; } while (--copy); if (state.length === 0) { state.mode = LEN; } break; case LIT: if (left === 0) { break inf_leave; } output[put++] = state.length; left--; state.mode = LEN; break; case CHECK: if (state.wrap) { while (bits < 32) { if (have === 0) { break inf_leave; } have--; hold |= input[next++] << bits; bits += 8; } _out -= left; strm.total_out += _out; state.total += _out; if (_out) { strm.adler = state.check = /*UPDATE(state.check, put - _out, _out);*/ state.flags ? crc32( state.check, output, _out, put - _out ) : adler32( state.check, output, _out, put - _out ); } _out = left; if ((state.flags ? hold : zswap32(hold)) !== state.check) { strm.msg = "incorrect data check"; state.mode = BAD; break; } hold = 0; bits = 0; } state.mode = LENGTH; /* falls through */ case LENGTH: if (state.wrap && state.flags) { while (bits < 32) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } if (hold !== (state.total & 4294967295)) { strm.msg = "incorrect length check"; state.mode = BAD; break; } hold = 0; bits = 0; } state.mode = DONE; /* falls through */ case DONE: ret = Z_STREAM_END; break inf_leave; case BAD: ret = Z_DATA_ERROR; break inf_leave; case MEM: return Z_MEM_ERROR; case SYNC: /* falls through */ default: return Z_STREAM_ERROR; } } strm.next_out = put; strm.avail_out = left; strm.next_in = next; strm.avail_in = have; state.hold = hold; state.bits = bits; if (state.wsize || _out !== strm.avail_out && state.mode < BAD && (state.mode < CHECK || flush2 !== Z_FINISH)) { if (updatewindow( strm, strm.output, strm.next_out, _out - strm.avail_out )) { state.mode = MEM; return Z_MEM_ERROR; } } _in -= strm.avail_in; _out -= strm.avail_out; strm.total_in += _in; strm.total_out += _out; state.total += _out; if (state.wrap && _out) { strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/ state.flags ? crc32( state.check, output, _out, strm.next_out - _out ) : adler32( state.check, output, _out, strm.next_out - _out ); } strm.data_type = state.bits + (state.last ? 64 : 0) + (state.mode === TYPE ? 128 : 0) + (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0); if ((_in === 0 && _out === 0 || flush2 === Z_FINISH) && ret === Z_OK) { ret = Z_BUF_ERROR; } return ret; } function inflateEnd(strm) { if (!strm || !strm.state) { return Z_STREAM_ERROR; } var state = strm.state; if (state.window) { state.window = null; } strm.state = null; return Z_OK; } function inflateGetHeader(strm, head2) { var state; if (!strm || !strm.state) { return Z_STREAM_ERROR; } state = strm.state; if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; } state.head = head2; head2.done = false; return Z_OK; } function inflateSetDictionary(strm, dictionary) { var dictLength = dictionary.length; var state; var dictid; var ret; if (!strm || !strm.state) { return Z_STREAM_ERROR; } state = strm.state; if (state.wrap !== 0 && state.mode !== DICT) { return Z_STREAM_ERROR; } if (state.mode === DICT) { dictid = 1; dictid = adler32( dictid, dictionary, dictLength, 0 ); if (dictid !== state.check) { return Z_DATA_ERROR; } } ret = updatewindow( strm, dictionary, dictLength, dictLength ); if (ret) { state.mode = MEM; return Z_MEM_ERROR; } state.havedict = 1; return Z_OK; } exports2.inflateReset = inflateReset; exports2.inflateReset2 = inflateReset2; exports2.inflateResetKeep = inflateResetKeep; exports2.inflateInit = inflateInit; exports2.inflateInit2 = inflateInit2; exports2.inflate = inflate; exports2.inflateEnd = inflateEnd; exports2.inflateGetHeader = inflateGetHeader; exports2.inflateSetDictionary = inflateSetDictionary; exports2.inflateInfo = "pako inflate (from Nodeca project)"; }, { "../utils/common": 1, "./adler32": 3, "./crc32": 5, "./inffast": 7, "./inftrees": 9 } ], 9: [ function(require2, module2, exports2) { "use strict"; var utils = require2("../utils/common"); var MAXBITS = 15; var ENOUGH_LENS = 852; var ENOUGH_DISTS = 592; var CODES = 0; var LENS = 1; var DISTS = 2; var lbase = [ /* Length codes 257..285 base */ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 ]; var lext = [ /* Length codes 257..285 extra */ 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78 ]; var dbase = [ /* Distance codes 0..29 base */ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0 ]; var dext = [ /* Distance codes 0..29 extra */ 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64 ]; module2.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) { var bits = opts.bits; var len = 0; var sym = 0; var min = 0, max = 0; var root = 0; var curr = 0; var drop = 0; var left = 0; var used = 0; var huff = 0; var incr; var fill; var low; var mask; var next; var base = null; var base_index = 0; var end; var count = new utils.Buf16(MAXBITS + 1); var offs = new utils.Buf16(MAXBITS + 1); var extra = null; var extra_index = 0; var here_bits, here_op, here_val; for (len = 0; len <= MAXBITS; len++) { count[len] = 0; } for (sym = 0; sym < codes; sym++) { count[lens[lens_index + sym]]++; } root = bits; for (max = MAXBITS; max >= 1; max--) { if (count[max] !== 0) { break; } } if (root > max) { root = max; } if (max === 0) { table[table_index++] = 1 << 24 | 64 << 16 | 0; table[table_index++] = 1 << 24 | 64 << 16 | 0; opts.bits = 1; return 0; } for (min = 1; min < max; min++) { if (count[min] !== 0) { break; } } if (root < min) { root = min; } left = 1; for (len = 1; len <= MAXBITS; len++) { left <<= 1; left -= count[len]; if (left < 0) { return -1; } } if (left > 0 && (type === CODES || max !== 1)) { return -1; } offs[1] = 0; for (len = 1; len < MAXBITS; len++) { offs[len + 1] = offs[len] + count[len]; } for (sym = 0; sym < codes; sym++) { if (lens[lens_index + sym] !== 0) { work[offs[lens[lens_index + sym]]++] = sym; } } if (type === CODES) { base = extra = work; end = 19; } else if (type === LENS) { base = lbase; base_index -= 257; extra = lext; extra_index -= 257; end = 256; } else { base = dbase; extra = dext; end = -1; } huff = 0; sym = 0; len = min; next = table_index; curr = root; drop = 0; low = -1; used = 1 << root; mask = used - 1; if (type === LENS && used > ENOUGH_LENS || type === DISTS && used > ENOUGH_DISTS) { return 1; } for (; ; ) { here_bits = len - drop; if (work[sym] < end) { here_op = 0; here_val = work[sym]; } else if (work[sym] > end) { here_op = extra[extra_index + work[sym]]; here_val = base[base_index + work[sym]]; } else { here_op = 32 + 64; here_val = 0; } incr = 1 << len - drop; fill = 1 << curr; min = fill; do { fill -= incr; table[next + (huff >> drop) + fill] = here_bits << 24 | here_op << 16 | here_val | 0; } while (fill !== 0); incr = 1 << len - 1; while (huff & incr) { incr >>= 1; } if (incr !== 0) { huff &= incr - 1; huff += incr; } else { huff = 0; } sym++; if (--count[len] === 0) { if (len === max) { break; } len = lens[lens_index + work[sym]]; } if (len > root && (huff & mask) !== low) { if (drop === 0) { drop = root; } next += min; curr = len - drop; left = 1 << curr; while (curr + drop < max) { left -= count[curr + drop]; if (left <= 0) { break; } curr++; left <<= 1; } used += 1 << curr; if (type === LENS && used > ENOUGH_LENS || type === DISTS && used > ENOUGH_DISTS) { return 1; } low = huff & mask; table[low] = root << 24 | curr << 16 | next - table_index | 0; } } if (huff !== 0) { table[next + huff] = len - drop << 24 | 64 << 16 | 0; } opts.bits = root; return 0; }; }, { "../utils/common": 1 } ], 10: [ function(require2, module2, exports2) { "use strict"; module2.exports = { 2: "need dictionary", 1: "stream end", 0: "", "-1": "file error", "-2": "stream error", "-3": "data error", "-4": "insufficient memory", "-5": "buffer error", "-6": "incompatible version" }; }, {} ], 11: [ function(require2, module2, exports2) { "use strict"; function ZStream() { this.input = null; this.next_in = 0; this.avail_in = 0; this.total_in = 0; this.output = null; this.next_out = 0; this.avail_out = 0; this.total_out = 0; this.msg = ""; this.state = null; this.data_type = 2; this.adler = 0; } module2.exports = ZStream; }, {} ], "/lib/inflate.js": [ function(require2, module2, exports2) { "use strict"; var zlib_inflate = require2("./zlib/inflate"); var utils = require2("./utils/common"); var strings = require2("./utils/strings"); var c6 = require2("./zlib/constants"); var msg = require2("./zlib/messages"); var ZStream = require2("./zlib/zstream"); var GZheader = require2("./zlib/gzheader"); var toString = Object.prototype.toString; function Inflate(options) { if (!(this instanceof Inflate)) return new Inflate(options); this.options = utils.assign( { chunkSize: 16384, windowBits: 0, to: "" }, options || {} ); var opt = this.options; if (opt.raw && opt.windowBits >= 0 && opt.windowBits < 16) { opt.windowBits = -opt.windowBits; if (opt.windowBits === 0) { opt.windowBits = -15; } } if (opt.windowBits >= 0 && opt.windowBits < 16 && !(options && options.windowBits)) { opt.windowBits += 32; } if (opt.windowBits > 15 && opt.windowBits < 48) { if ((opt.windowBits & 15) === 0) { opt.windowBits |= 15; } } this.err = 0; this.msg = ""; this.ended = false; this.chunks = []; this.strm = new ZStream(); this.strm.avail_out = 0; var status = zlib_inflate.inflateInit2( this.strm, opt.windowBits ); if (status !== c6.Z_OK) { throw new Error(msg[status]); } this.header = new GZheader(); zlib_inflate.inflateGetHeader(this.strm, this.header); if (opt.dictionary) { if (typeof opt.dictionary === "string") { opt.dictionary = strings.string2buf( opt.dictionary ); } else if (toString.call(opt.dictionary) === "[object ArrayBuffer]") { opt.dictionary = new Uint8Array( opt.dictionary ); } if (opt.raw) { status = zlib_inflate.inflateSetDictionary( this.strm, opt.dictionary ); if (status !== c6.Z_OK) { throw new Error(msg[status]); } } } } Inflate.prototype.push = function(data, mode) { var strm = this.strm; var chunkSize = this.options.chunkSize; var dictionary = this.options.dictionary; var status, _mode; var next_out_utf8, tail, utf8str; var allowBufError = false; if (this.ended) { return false; } _mode = mode === ~~mode ? mode : mode === true ? c6.Z_FINISH : c6.Z_NO_FLUSH; if (typeof data === "string") { strm.input = strings.binstring2buf(data); } else if (toString.call(data) === "[object ArrayBuffer]") { strm.input = new Uint8Array(data); } else { strm.input = data; } strm.next_in = 0; strm.avail_in = strm.input.length; do { if (strm.avail_out === 0) { strm.output = new utils.Buf8(chunkSize); strm.next_out = 0; strm.avail_out = chunkSize; } status = zlib_inflate.inflate( strm, c6.Z_NO_FLUSH ); if (status === c6.Z_NEED_DICT && dictionary) { status = zlib_inflate.inflateSetDictionary( this.strm, dictionary ); } if (status === c6.Z_BUF_ERROR && allowBufError === true) { status = c6.Z_OK; allowBufError = false; } if (status !== c6.Z_STREAM_END && status !== c6.Z_OK) { this.onEnd(status); this.ended = true; return false; } if (strm.next_out) { if (strm.avail_out === 0 || status === c6.Z_STREAM_END || strm.avail_in === 0 && (_mode === c6.Z_FINISH || _mode === c6.Z_SYNC_FLUSH)) { if (this.options.to === "string") { next_out_utf8 = strings.utf8border( strm.output, strm.next_out ); tail = strm.next_out - next_out_utf8; utf8str = strings.buf2string( strm.output, next_out_utf8 ); strm.next_out = tail; strm.avail_out = chunkSize - tail; if (tail) { utils.arraySet( strm.output, strm.output, next_out_utf8, tail, 0 ); } this.onData(utf8str); } else { this.onData( utils.shrinkBuf( strm.output, strm.next_out ) ); } } } if (strm.avail_in === 0 && strm.avail_out === 0) { allowBufError = true; } } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c6.Z_STREAM_END); if (status === c6.Z_STREAM_END) { _mode = c6.Z_FINISH; } if (_mode === c6.Z_FINISH) { status = zlib_inflate.inflateEnd(this.strm); this.onEnd(status); this.ended = true; return status === c6.Z_OK; } if (_mode === c6.Z_SYNC_FLUSH) { this.onEnd(c6.Z_OK); strm.avail_out = 0; return true; } return true; }; Inflate.prototype.onData = function(chunk2) { this.chunks.push(chunk2); }; Inflate.prototype.onEnd = function(status) { if (status === c6.Z_OK) { if (this.options.to === "string") { this.result = this.chunks.join(""); } else { this.result = utils.flattenChunks( this.chunks ); } } this.chunks = []; this.err = status; this.msg = this.strm.msg; }; function inflate(input, options) { var inflator = new Inflate(options); inflator.push(input, true); if (inflator.err) { throw inflator.msg || msg[inflator.err]; } return inflator.result; } function inflateRaw(input, options) { options = options || {}; options.raw = true; return inflate(input, options); } exports2.Inflate = Inflate; exports2.inflate = inflate; exports2.inflateRaw = inflateRaw; exports2.ungzip = inflate; }, { "./utils/common": 1, "./utils/strings": 2, "./zlib/constants": 4, "./zlib/gzheader": 6, "./zlib/inflate": 8, "./zlib/messages": 10, "./zlib/zstream": 11 } ] }, {}, [] )("/lib/inflate.js"); })(); // packages/global-styles-ui/build-module/font-library/lib/lib-font.browser.mjs var fetchFunction = globalThis.fetch; var Event2 = class { constructor(type, detail = {}, msg) { this.type = type; this.detail = detail; this.msg = msg; Object.defineProperty(this, `__mayPropagate`, { enumerable: false, writable: true }); this.__mayPropagate = true; } preventDefault() { } stopPropagation() { this.__mayPropagate = false; } valueOf() { return this; } toString() { return this.msg ? `[${this.type} event]: ${this.msg}` : `[${this.type} event]`; } }; var EventManager = class { constructor() { this.listeners = {}; } addEventListener(type, listener, useCapture) { let bin = this.listeners[type] || []; if (useCapture) bin.unshift(listener); else bin.push(listener); this.listeners[type] = bin; } removeEventListener(type, listener) { let bin = this.listeners[type] || []; let pos = bin.findIndex((e2) => e2 === listener); if (pos > -1) { bin.splice(pos, 1); this.listeners[type] = bin; } } dispatch(event) { let bin = this.listeners[event.type]; if (bin) { for (let l2 = 0, e2 = bin.length; l2 < e2; l2++) { if (!event.__mayPropagate) break; bin[l2](event); } } } }; var startDate = (/* @__PURE__ */ new Date(`1904-01-01T00:00:00+0000`)).getTime(); function asText(data) { return Array.from(data).map((v2) => String.fromCharCode(v2)).join(``); } var Parser = class { constructor(dict, dataview, name2) { this.name = (name2 || dict.tag || ``).trim(); this.length = dict.length; this.start = dict.offset; this.offset = 0; this.data = dataview; [ `getInt8`, `getUint8`, `getInt16`, `getUint16`, `getInt32`, `getUint32`, `getBigInt64`, `getBigUint64` ].forEach((name3) => { let fn = name3.replace(/get(Big)?/, "").toLowerCase(); let increment = parseInt(name3.replace(/[^\d]/g, "")) / 8; Object.defineProperty(this, fn, { get: () => this.getValue(name3, increment) }); }); } get currentPosition() { return this.start + this.offset; } set currentPosition(position) { this.start = position; this.offset = 0; } skip(n2 = 0, bits = 8) { this.offset += n2 * bits / 8; } getValue(type, increment) { let pos = this.start + this.offset; this.offset += increment; try { return this.data[type](pos); } catch (e2) { console.error(`parser`, type, increment, this); console.error(`parser`, this.start, this.offset); throw e2; } } flags(n2) { if (n2 === 8 || n2 === 16 || n2 === 32 || n2 === 64) { return this[`uint${n2}`].toString(2).padStart(n2, 0).split(``).map((v2) => v2 === "1"); } console.error( `Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long` ); console.trace(); } get tag() { const t3 = this.uint32; return asText([ t3 >> 24 & 255, t3 >> 16 & 255, t3 >> 8 & 255, t3 & 255 ]); } get fixed() { let major = this.int16; let minor = Math.round(1e3 * this.uint16 / 65356); return major + minor / 1e3; } get legacyFixed() { let major = this.uint16; let minor = this.uint16.toString(16).padStart(4, 0); return parseFloat(`${major}.${minor}`); } get uint24() { return (this.uint8 << 16) + (this.uint8 << 8) + this.uint8; } get uint128() { let value = 0; for (let i2 = 0; i2 < 5; i2++) { let byte = this.uint8; value = value * 128 + (byte & 127); if (byte < 128) break; } return value; } get longdatetime() { return new Date(startDate + 1e3 * parseInt(this.int64.toString())); } get fword() { return this.int16; } get ufword() { return this.uint16; } get Offset16() { return this.uint16; } get Offset32() { return this.uint32; } get F2DOT14() { const bits = p.uint16; const integer = [0, 1, -2, -1][bits >> 14]; const fraction = bits & 16383; return integer + fraction / 16384; } verifyLength() { if (this.offset != this.length) { console.error( `unexpected parsed table size (${this.offset}) for "${this.name}" (expected ${this.length})` ); } } readBytes(n2 = 0, position = 0, bits = 8, signed = false) { n2 = n2 || this.length; if (n2 === 0) return []; if (position) this.currentPosition = position; const fn = `${signed ? `` : `u`}int${bits}`, slice = []; while (n2--) slice.push(this[fn]); return slice; } }; var ParsedData = class { constructor(parser) { const pGetter = { enumerable: false, get: () => parser }; Object.defineProperty(this, `parser`, pGetter); const start2 = parser.currentPosition; const startGetter = { enumerable: false, get: () => start2 }; Object.defineProperty(this, `start`, startGetter); } load(struct) { Object.keys(struct).forEach((p22) => { let props = Object.getOwnPropertyDescriptor(struct, p22); if (props.get) { this[p22] = props.get.bind(this); } else if (props.value !== void 0) { this[p22] = props.value; } }); if (this.parser.length) { this.parser.verifyLength(); } } }; var SimpleTable = class extends ParsedData { constructor(dict, dataview, name2) { const { parser, start: start2 } = super( new Parser(dict, dataview, name2) ); const pGetter = { enumerable: false, get: () => parser }; Object.defineProperty(this, `p`, pGetter); const startGetter = { enumerable: false, get: () => start2 }; Object.defineProperty(this, `tableStart`, startGetter); } }; function lazy$1(object, property, getter) { let val; Object.defineProperty(object, property, { get: () => { if (val) return val; val = getter(); return val; }, enumerable: true }); } var SFNT = class extends SimpleTable { constructor(font2, dataview, createTable2) { const { p: p22 } = super({ offset: 0, length: 12 }, dataview, `sfnt`); this.version = p22.uint32; this.numTables = p22.uint16; this.searchRange = p22.uint16; this.entrySelector = p22.uint16; this.rangeShift = p22.uint16; p22.verifyLength(); this.directory = [...new Array(this.numTables)].map( (_) => new TableRecord(p22) ); this.tables = {}; this.directory.forEach((entry) => { const getter = () => createTable2( this.tables, { tag: entry.tag, offset: entry.offset, length: entry.length }, dataview ); lazy$1(this.tables, entry.tag.trim(), getter); }); } }; var TableRecord = class { constructor(p22) { this.tag = p22.tag; this.checksum = p22.uint32; this.offset = p22.uint32; this.length = p22.uint32; } }; var gzipDecode = inflate_default.inflate || void 0; var nativeGzipDecode = void 0; var WOFF$1 = class extends SimpleTable { constructor(font2, dataview, createTable2) { const { p: p22 } = super({ offset: 0, length: 44 }, dataview, `woff`); this.signature = p22.tag; this.flavor = p22.uint32; this.length = p22.uint32; this.numTables = p22.uint16; p22.uint16; this.totalSfntSize = p22.uint32; this.majorVersion = p22.uint16; this.minorVersion = p22.uint16; this.metaOffset = p22.uint32; this.metaLength = p22.uint32; this.metaOrigLength = p22.uint32; this.privOffset = p22.uint32; this.privLength = p22.uint32; p22.verifyLength(); this.directory = [...new Array(this.numTables)].map( (_) => new WoffTableDirectoryEntry(p22) ); buildWoffLazyLookups(this, dataview, createTable2); } }; var WoffTableDirectoryEntry = class { constructor(p22) { this.tag = p22.tag; this.offset = p22.uint32; this.compLength = p22.uint32; this.origLength = p22.uint32; this.origChecksum = p22.uint32; } }; function buildWoffLazyLookups(woff, dataview, createTable2) { woff.tables = {}; woff.directory.forEach((entry) => { lazy$1(woff.tables, entry.tag.trim(), () => { let offset = 0; let view = dataview; if (entry.compLength !== entry.origLength) { const data = dataview.buffer.slice( entry.offset, entry.offset + entry.compLength ); let unpacked; if (gzipDecode) { unpacked = gzipDecode(new Uint8Array(data)); } else if (nativeGzipDecode) { unpacked = nativeGzipDecode(new Uint8Array(data)); } else { const msg = `no brotli decoder available to decode WOFF2 font`; if (font.onerror) font.onerror(msg); throw new Error(msg); } view = new DataView(unpacked.buffer); } else { offset = entry.offset; } return createTable2( woff.tables, { tag: entry.tag, offset, length: entry.origLength }, view ); }); }); } var brotliDecode = unbrotli_default; var nativeBrotliDecode = void 0; var WOFF2$1 = class extends SimpleTable { constructor(font2, dataview, createTable2) { const { p: p22 } = super({ offset: 0, length: 48 }, dataview, `woff2`); this.signature = p22.tag; this.flavor = p22.uint32; this.length = p22.uint32; this.numTables = p22.uint16; p22.uint16; this.totalSfntSize = p22.uint32; this.totalCompressedSize = p22.uint32; this.majorVersion = p22.uint16; this.minorVersion = p22.uint16; this.metaOffset = p22.uint32; this.metaLength = p22.uint32; this.metaOrigLength = p22.uint32; this.privOffset = p22.uint32; this.privLength = p22.uint32; p22.verifyLength(); this.directory = [...new Array(this.numTables)].map( (_) => new Woff2TableDirectoryEntry(p22) ); let dictOffset = p22.currentPosition; this.directory[0].offset = 0; this.directory.forEach((e2, i2) => { let next = this.directory[i2 + 1]; if (next) { next.offset = e2.offset + (e2.transformLength !== void 0 ? e2.transformLength : e2.origLength); } }); let decoded; let buffer = dataview.buffer.slice(dictOffset); if (brotliDecode) { decoded = brotliDecode(new Uint8Array(buffer)); } else if (nativeBrotliDecode) { decoded = new Uint8Array(nativeBrotliDecode(buffer)); } else { const msg = `no brotli decoder available to decode WOFF2 font`; if (font2.onerror) font2.onerror(msg); throw new Error(msg); } buildWoff2LazyLookups(this, decoded, createTable2); } }; var Woff2TableDirectoryEntry = class { constructor(p22) { this.flags = p22.uint8; const tagNumber = this.tagNumber = this.flags & 63; if (tagNumber === 63) { this.tag = p22.tag; } else { this.tag = getWOFF2Tag(tagNumber); } const transformVersion = this.transformVersion = (this.flags & 192) >> 6; let hasTransforms = transformVersion !== 0; if (this.tag === `glyf` || this.tag === `loca`) { hasTransforms = this.transformVersion !== 3; } this.origLength = p22.uint128; if (hasTransforms) { this.transformLength = p22.uint128; } } }; function buildWoff2LazyLookups(woff2, decoded, createTable2) { woff2.tables = {}; woff2.directory.forEach((entry) => { lazy$1(woff2.tables, entry.tag.trim(), () => { const start2 = entry.offset; const end = start2 + (entry.transformLength ? entry.transformLength : entry.origLength); const data = new DataView(decoded.slice(start2, end).buffer); try { return createTable2( woff2.tables, { tag: entry.tag, offset: 0, length: entry.origLength }, data ); } catch (e2) { console.error(e2); } }); }); } function getWOFF2Tag(flag) { return [ `cmap`, `head`, `hhea`, `hmtx`, `maxp`, `name`, `OS/2`, `post`, `cvt `, `fpgm`, `glyf`, `loca`, `prep`, `CFF `, `VORG`, `EBDT`, `EBLC`, `gasp`, `hdmx`, `kern`, `LTSH`, `PCLT`, `VDMX`, `vhea`, `vmtx`, `BASE`, `GDEF`, `GPOS`, `GSUB`, `EBSC`, `JSTF`, `MATH`, `CBDT`, `CBLC`, `COLR`, `CPAL`, `SVG `, `sbix`, `acnt`, `avar`, `bdat`, `bloc`, `bsln`, `cvar`, `fdsc`, `feat`, `fmtx`, `fvar`, `gvar`, `hsty`, `just`, `lcar`, `mort`, `morx`, `opbd`, `prop`, `trak`, `Zapf`, `Silf`, `Glat`, `Gloc`, `Feat`, `Sill` ][flag & 63]; } var tableClasses = {}; var tableClassesLoaded = false; Promise.all([ Promise.resolve().then(function() { return cmap$1; }), Promise.resolve().then(function() { return head$1; }), Promise.resolve().then(function() { return hhea$1; }), Promise.resolve().then(function() { return hmtx$1; }), Promise.resolve().then(function() { return maxp$1; }), Promise.resolve().then(function() { return name$1; }), Promise.resolve().then(function() { return OS2$1; }), Promise.resolve().then(function() { return post$1; }), Promise.resolve().then(function() { return BASE$1; }), Promise.resolve().then(function() { return GDEF$1; }), Promise.resolve().then(function() { return GSUB$1; }), Promise.resolve().then(function() { return GPOS$1; }), Promise.resolve().then(function() { return SVG$1; }), Promise.resolve().then(function() { return fvar$1; }), Promise.resolve().then(function() { return cvt$1; }), Promise.resolve().then(function() { return fpgm$1; }), Promise.resolve().then(function() { return gasp$1; }), Promise.resolve().then(function() { return glyf$1; }), Promise.resolve().then(function() { return loca$1; }), Promise.resolve().then(function() { return prep$1; }), Promise.resolve().then(function() { return CFF$1; }), Promise.resolve().then(function() { return CFF2$1; }), Promise.resolve().then(function() { return VORG$1; }), Promise.resolve().then(function() { return EBLC$1; }), Promise.resolve().then(function() { return EBDT$1; }), Promise.resolve().then(function() { return EBSC$1; }), Promise.resolve().then(function() { return CBLC$1; }), Promise.resolve().then(function() { return CBDT$1; }), Promise.resolve().then(function() { return sbix$1; }), Promise.resolve().then(function() { return COLR$1; }), Promise.resolve().then(function() { return CPAL$1; }), Promise.resolve().then(function() { return DSIG$1; }), Promise.resolve().then(function() { return hdmx$1; }), Promise.resolve().then(function() { return kern$1; }), Promise.resolve().then(function() { return LTSH$1; }), Promise.resolve().then(function() { return MERG$1; }), Promise.resolve().then(function() { return meta$1; }), Promise.resolve().then(function() { return PCLT$1; }), Promise.resolve().then(function() { return VDMX$1; }), Promise.resolve().then(function() { return vhea$1; }), Promise.resolve().then(function() { return vmtx$1; }) ]).then((data) => { data.forEach((e2) => { let name2 = Object.keys(e2)[0]; tableClasses[name2] = e2[name2]; }); tableClassesLoaded = true; }); function createTable(tables, dict, dataview) { let name2 = dict.tag.replace(/[^\w\d]/g, ``); let Type = tableClasses[name2]; if (Type) return new Type(dict, dataview, tables); console.warn( `lib-font has no definition for ${name2}. The table was skipped.` ); return {}; } function loadTableClasses() { let count = 0; function checkLoaded(resolve, reject) { if (!tableClassesLoaded) { if (count > 10) { return reject(new Error(`loading took too long`)); } count++; return setTimeout(() => checkLoaded(resolve), 250); } resolve(createTable); } return new Promise((resolve, reject) => checkLoaded(resolve)); } function getFontCSSFormat(path, errorOnStyle) { let pos = path.lastIndexOf(`.`); let ext = (path.substring(pos + 1) || ``).toLowerCase(); let format6 = { ttf: `truetype`, otf: `opentype`, woff: `woff`, woff2: `woff2` }[ext]; if (format6) return format6; let msg = { eot: `The .eot format is not supported: it died in January 12, 2016, when Microsoft retired all versions of IE that didn't already support WOFF.`, svg: `The .svg format is not supported: SVG fonts (not to be confused with OpenType with embedded SVG) were so bad we took the entire fonts chapter out of the SVG specification again.`, fon: `The .fon format is not supported: this is an ancient Windows bitmap font format.`, ttc: `Based on the current CSS specification, font collections are not (yet?) supported.` }[ext]; if (!msg) msg = `${path} is not a known webfont format.`; if (errorOnStyle) { throw new Error(msg); } else { console.warn(`Could not load font: ${msg}`); } } async function setupFontFace(name2, url, options = {}) { if (!globalThis.document) return; let format6 = getFontCSSFormat(url, options.errorOnStyle); if (!format6) return; let style = document.createElement(`style`); style.className = `injected-by-Font-js`; let rules = []; if (options.styleRules) { rules = Object.entries(options.styleRules).map( ([key, value]) => `${key}: ${value};` ); } style.textContent = ` @font-face { font-family: "${name2}"; ${rules.join( ` ` )} src: url("${url}") format("${format6}"); }`; globalThis.document.head.appendChild(style); return style; } var TTF = [0, 1, 0, 0]; var OTF = [79, 84, 84, 79]; var WOFF = [119, 79, 70, 70]; var WOFF2 = [119, 79, 70, 50]; function match(ar1, ar2) { if (ar1.length !== ar2.length) return; for (let i2 = 0; i2 < ar1.length; i2++) { if (ar1[i2] !== ar2[i2]) return; } return true; } function validFontFormat(dataview) { const LEAD_BYTES = [ dataview.getUint8(0), dataview.getUint8(1), dataview.getUint8(2), dataview.getUint8(3) ]; if (match(LEAD_BYTES, TTF) || match(LEAD_BYTES, OTF)) return `SFNT`; if (match(LEAD_BYTES, WOFF)) return `WOFF`; if (match(LEAD_BYTES, WOFF2)) return `WOFF2`; } function checkFetchResponseStatus(response) { if (!response.ok) { throw new Error( `HTTP ${response.status} - ${response.statusText}` ); } return response; } var Font = class extends EventManager { constructor(name2, options = {}) { super(); this.name = name2; this.options = options; this.metrics = false; } get src() { return this.__src; } set src(src) { this.__src = src; (async () => { if (globalThis.document && !this.options.skipStyleSheet) { await setupFontFace(this.name, src, this.options); } this.loadFont(src); })(); } async loadFont(url, filename) { fetch(url).then( (response) => checkFetchResponseStatus(response) && response.arrayBuffer() ).then( (buffer) => this.fromDataBuffer(buffer, filename || url) ).catch((err) => { const evt = new Event2( `error`, err, `Failed to load font at ${filename || url}` ); this.dispatch(evt); if (this.onerror) this.onerror(evt); }); } async fromDataBuffer(buffer, filenameOrUrL) { this.fontData = new DataView(buffer); let type = validFontFormat(this.fontData); if (!type) { throw new Error( `${filenameOrUrL} is either an unsupported font format, or not a font at all.` ); } await this.parseBasicData(type); const evt = new Event2("load", { font: this }); this.dispatch(evt); if (this.onload) this.onload(evt); } async parseBasicData(type) { return loadTableClasses().then((createTable2) => { if (type === `SFNT`) { this.opentype = new SFNT(this, this.fontData, createTable2); } if (type === `WOFF`) { this.opentype = new WOFF$1(this, this.fontData, createTable2); } if (type === `WOFF2`) { this.opentype = new WOFF2$1(this, this.fontData, createTable2); } return this.opentype; }); } getGlyphId(char) { return this.opentype.tables.cmap.getGlyphId(char); } reverse(glyphid) { return this.opentype.tables.cmap.reverse(glyphid); } supports(char) { return this.getGlyphId(char) !== 0; } supportsVariation(variation) { return this.opentype.tables.cmap.supportsVariation(variation) !== false; } measureText(text, size = 16) { if (this.__unloaded) throw new Error( "Cannot measure text: font was unloaded. Please reload before calling measureText()" ); let d2 = document.createElement("div"); d2.textContent = text; d2.style.fontFamily = this.name; d2.style.fontSize = `${size}px`; d2.style.color = `transparent`; d2.style.background = `transparent`; d2.style.top = `0`; d2.style.left = `0`; d2.style.position = `absolute`; document.body.appendChild(d2); let bbox = d2.getBoundingClientRect(); document.body.removeChild(d2); const OS22 = this.opentype.tables["OS/2"]; bbox.fontSize = size; bbox.ascender = OS22.sTypoAscender; bbox.descender = OS22.sTypoDescender; return bbox; } unload() { if (this.styleElement.parentNode) { this.styleElement.parentNode.removeElement(this.styleElement); const evt = new Event2("unload", { font: this }); this.dispatch(evt); if (this.onunload) this.onunload(evt); } this._unloaded = true; } load() { if (this.__unloaded) { delete this.__unloaded; document.head.appendChild(this.styleElement); const evt = new Event2("load", { font: this }); this.dispatch(evt); if (this.onload) this.onload(evt); } } }; globalThis.Font = Font; var Subtable = class extends ParsedData { constructor(p22, plaformID, encodingID) { super(p22); this.plaformID = plaformID; this.encodingID = encodingID; } }; var Format0 = class extends Subtable { constructor(p22, platformID, encodingID) { super(p22, platformID, encodingID); this.format = 0; this.length = p22.uint16; this.language = p22.uint16; this.glyphIdArray = [...new Array(256)].map((_) => p22.uint8); } supports(charCode) { if (charCode.charCodeAt) { charCode = -1; console.warn( `supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.` ); } return 0 <= charCode && charCode <= 255; } reverse(glyphID) { console.warn(`reverse not implemented for cmap subtable format 0`); return {}; } getSupportedCharCodes() { return [{ start: 1, end: 256 }]; } }; var Format2 = class extends Subtable { constructor(p22, platformID, encodingID) { super(p22, platformID, encodingID); this.format = 2; this.length = p22.uint16; this.language = p22.uint16; this.subHeaderKeys = [...new Array(256)].map((_) => p22.uint16); const subHeaderCount = Math.max(...this.subHeaderKeys); const subHeaderOffset = p22.currentPosition; lazy$1(this, `subHeaders`, () => { p22.currentPosition = subHeaderOffset; return [...new Array(subHeaderCount)].map( (_) => new SubHeader(p22) ); }); const glyphIndexOffset = subHeaderOffset + subHeaderCount * 8; lazy$1(this, `glyphIndexArray`, () => { p22.currentPosition = glyphIndexOffset; return [...new Array(subHeaderCount)].map((_) => p22.uint16); }); } supports(charCode) { if (charCode.charCodeAt) { charCode = -1; console.warn( `supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented.` ); } const low = charCode && 255; const high = charCode && 65280; const subHeaderKey = this.subHeaders[high]; const subheader = this.subHeaders[subHeaderKey]; const first = subheader.firstCode; const last = first + subheader.entryCount; return first <= low && low <= last; } reverse(glyphID) { console.warn(`reverse not implemented for cmap subtable format 2`); return {}; } getSupportedCharCodes(preservePropNames = false) { if (preservePropNames) { return this.subHeaders.map((h2) => ({ firstCode: h2.firstCode, lastCode: h2.lastCode })); } return this.subHeaders.map((h2) => ({ start: h2.firstCode, end: h2.lastCode })); } }; var SubHeader = class { constructor(p22) { this.firstCode = p22.uint16; this.entryCount = p22.uint16; this.lastCode = this.first + this.entryCount; this.idDelta = p22.int16; this.idRangeOffset = p22.uint16; } }; var Format4 = class extends Subtable { constructor(p22, platformID, encodingID) { super(p22, platformID, encodingID); this.format = 4; this.length = p22.uint16; this.language = p22.uint16; this.segCountX2 = p22.uint16; this.segCount = this.segCountX2 / 2; this.searchRange = p22.uint16; this.entrySelector = p22.uint16; this.rangeShift = p22.uint16; const endCodePosition = p22.currentPosition; lazy$1( this, `endCode`, () => p22.readBytes(this.segCount, endCodePosition, 16) ); const startCodePosition = endCodePosition + 2 + this.segCountX2; lazy$1( this, `startCode`, () => p22.readBytes(this.segCount, startCodePosition, 16) ); const idDeltaPosition = startCodePosition + this.segCountX2; lazy$1( this, `idDelta`, () => p22.readBytes(this.segCount, idDeltaPosition, 16, true) ); const idRangePosition = idDeltaPosition + this.segCountX2; lazy$1( this, `idRangeOffset`, () => p22.readBytes(this.segCount, idRangePosition, 16) ); const glyphIdArrayPosition = idRangePosition + this.segCountX2; const glyphIdArrayLength = this.length - (glyphIdArrayPosition - this.tableStart); lazy$1( this, `glyphIdArray`, () => p22.readBytes(glyphIdArrayLength, glyphIdArrayPosition, 16) ); lazy$1( this, `segments`, () => this.buildSegments(idRangePosition, glyphIdArrayPosition, p22) ); } buildSegments(idRangePosition, glyphIdArrayPosition, p22) { const build = (_, i2) => { let startCode = this.startCode[i2], endCode = this.endCode[i2], idDelta = this.idDelta[i2], idRangeOffset = this.idRangeOffset[i2], idRangeOffsetPointer = idRangePosition + 2 * i2, glyphIDs = []; if (idRangeOffset === 0) { for (let i22 = startCode + idDelta, e2 = endCode + idDelta; i22 <= e2; i22++) { glyphIDs.push(i22); } } else { for (let i22 = 0, e2 = endCode - startCode; i22 <= e2; i22++) { p22.currentPosition = idRangeOffsetPointer + idRangeOffset + i22 * 2; glyphIDs.push(p22.uint16); } } return { startCode, endCode, idDelta, idRangeOffset, glyphIDs }; }; return [...new Array(this.segCount)].map(build); } reverse(glyphID) { let s2 = this.segments.find((v2) => v2.glyphIDs.includes(glyphID)); if (!s2) return {}; const code = s2.startCode + s2.glyphIDs.indexOf(glyphID); return { code, unicode: String.fromCodePoint(code) }; } getGlyphId(charCode) { if (charCode.charCodeAt) charCode = charCode.charCodeAt(0); if (55296 <= charCode && charCode <= 57343) return 0; if ((charCode & 65534) === 65534 || (charCode & 65535) === 65535) return 0; let segment = this.segments.find( (s2) => s2.startCode <= charCode && charCode <= s2.endCode ); if (!segment) return 0; return segment.glyphIDs[charCode - segment.startCode]; } supports(charCode) { return this.getGlyphId(charCode) !== 0; } getSupportedCharCodes(preservePropNames = false) { if (preservePropNames) return this.segments; return this.segments.map((v2) => ({ start: v2.startCode, end: v2.endCode })); } }; var Format6 = class extends Subtable { constructor(p22, platformID, encodingID) { super(p22, platformID, encodingID); this.format = 6; this.length = p22.uint16; this.language = p22.uint16; this.firstCode = p22.uint16; this.entryCount = p22.uint16; this.lastCode = this.firstCode + this.entryCount - 1; const getter = () => [...new Array(this.entryCount)].map((_) => p22.uint16); lazy$1(this, `glyphIdArray`, getter); } supports(charCode) { if (charCode.charCodeAt) { charCode = -1; console.warn( `supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.` ); } if (charCode < this.firstCode) return {}; if (charCode > this.firstCode + this.entryCount) return {}; const code = charCode - this.firstCode; return { code, unicode: String.fromCodePoint(code) }; } reverse(glyphID) { let pos = this.glyphIdArray.indexOf(glyphID); if (pos > -1) return this.firstCode + pos; } getSupportedCharCodes(preservePropNames = false) { if (preservePropNames) { return [{ firstCode: this.firstCode, lastCode: this.lastCode }]; } return [{ start: this.firstCode, end: this.lastCode }]; } }; var Format8 = class extends Subtable { constructor(p22, platformID, encodingID) { super(p22, platformID, encodingID); this.format = 8; p22.uint16; this.length = p22.uint32; this.language = p22.uint32; this.is32 = [...new Array(8192)].map((_) => p22.uint8); this.numGroups = p22.uint32; const getter = () => [...new Array(this.numGroups)].map( (_) => new SequentialMapGroup$1(p22) ); lazy$1(this, `groups`, getter); } supports(charCode) { if (charCode.charCodeAt) { charCode = -1; console.warn( `supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.` ); } return this.groups.findIndex( (s2) => s2.startcharCode <= charCode && charCode <= s2.endcharCode ) !== -1; } reverse(glyphID) { console.warn(`reverse not implemented for cmap subtable format 8`); return {}; } getSupportedCharCodes(preservePropNames = false) { if (preservePropNames) return this.groups; return this.groups.map((v2) => ({ start: v2.startcharCode, end: v2.endcharCode })); } }; var SequentialMapGroup$1 = class { constructor(p22) { this.startcharCode = p22.uint32; this.endcharCode = p22.uint32; this.startGlyphID = p22.uint32; } }; var Format10 = class extends Subtable { constructor(p22, platformID, encodingID) { super(p22, platformID, encodingID); this.format = 10; p22.uint16; this.length = p22.uint32; this.language = p22.uint32; this.startCharCode = p22.uint32; this.numChars = p22.uint32; this.endCharCode = this.startCharCode + this.numChars; const getter = () => [...new Array(this.numChars)].map((_) => p22.uint16); lazy$1(this, `glyphs`, getter); } supports(charCode) { if (charCode.charCodeAt) { charCode = -1; console.warn( `supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.` ); } if (charCode < this.startCharCode) return false; if (charCode > this.startCharCode + this.numChars) return false; return charCode - this.startCharCode; } reverse(glyphID) { console.warn(`reverse not implemented for cmap subtable format 10`); return {}; } getSupportedCharCodes(preservePropNames = false) { if (preservePropNames) { return [ { startCharCode: this.startCharCode, endCharCode: this.endCharCode } ]; } return [{ start: this.startCharCode, end: this.endCharCode }]; } }; var Format12 = class extends Subtable { constructor(p22, platformID, encodingID) { super(p22, platformID, encodingID); this.format = 12; p22.uint16; this.length = p22.uint32; this.language = p22.uint32; this.numGroups = p22.uint32; const getter = () => [...new Array(this.numGroups)].map( (_) => new SequentialMapGroup(p22) ); lazy$1(this, `groups`, getter); } supports(charCode) { if (charCode.charCodeAt) charCode = charCode.charCodeAt(0); if (55296 <= charCode && charCode <= 57343) return 0; if ((charCode & 65534) === 65534 || (charCode & 65535) === 65535) return 0; return this.groups.findIndex( (s2) => s2.startCharCode <= charCode && charCode <= s2.endCharCode ) !== -1; } reverse(glyphID) { for (let group of this.groups) { let start2 = group.startGlyphID; if (start2 > glyphID) continue; if (start2 === glyphID) return group.startCharCode; let end = start2 + (group.endCharCode - group.startCharCode); if (end < glyphID) continue; const code = group.startCharCode + (glyphID - start2); return { code, unicode: String.fromCodePoint(code) }; } return {}; } getSupportedCharCodes(preservePropNames = false) { if (preservePropNames) return this.groups; return this.groups.map((v2) => ({ start: v2.startCharCode, end: v2.endCharCode })); } }; var SequentialMapGroup = class { constructor(p22) { this.startCharCode = p22.uint32; this.endCharCode = p22.uint32; this.startGlyphID = p22.uint32; } }; var Format13 = class extends Subtable { constructor(p22, platformID, encodingID) { super(p22, platformID, encodingID); this.format = 13; p22.uint16; this.length = p22.uint32; this.language = p22.uint32; this.numGroups = p22.uint32; const getter = [...new Array(this.numGroups)].map( (_) => new ConstantMapGroup(p22) ); lazy$1(this, `groups`, getter); } supports(charCode) { if (charCode.charCodeAt) charCode = charCode.charCodeAt(0); return this.groups.findIndex( (s2) => s2.startCharCode <= charCode && charCode <= s2.endCharCode ) !== -1; } reverse(glyphID) { console.warn(`reverse not implemented for cmap subtable format 13`); return {}; } getSupportedCharCodes(preservePropNames = false) { if (preservePropNames) return this.groups; return this.groups.map((v2) => ({ start: v2.startCharCode, end: v2.endCharCode })); } }; var ConstantMapGroup = class { constructor(p22) { this.startCharCode = p22.uint32; this.endCharCode = p22.uint32; this.glyphID = p22.uint32; } }; var Format14 = class extends Subtable { constructor(p22, platformID, encodingID) { super(p22, platformID, encodingID); this.subTableStart = p22.currentPosition; this.format = 14; this.length = p22.uint32; this.numVarSelectorRecords = p22.uint32; lazy$1( this, `varSelectors`, () => [...new Array(this.numVarSelectorRecords)].map( (_) => new VariationSelector(p22) ) ); } supports() { console.warn(`supports not implemented for cmap subtable format 14`); return 0; } getSupportedCharCodes() { console.warn( `getSupportedCharCodes not implemented for cmap subtable format 14` ); return []; } reverse(glyphID) { console.warn(`reverse not implemented for cmap subtable format 14`); return {}; } supportsVariation(variation) { let v2 = this.varSelector.find( (uvs) => uvs.varSelector === variation ); return v2 ? v2 : false; } getSupportedVariations() { return this.varSelectors.map((v2) => v2.varSelector); } }; var VariationSelector = class { constructor(p22) { this.varSelector = p22.uint24; this.defaultUVSOffset = p22.Offset32; this.nonDefaultUVSOffset = p22.Offset32; } }; function createSubTable(parser, platformID, encodingID) { const format6 = parser.uint16; if (format6 === 0) return new Format0(parser, platformID, encodingID); if (format6 === 2) return new Format2(parser, platformID, encodingID); if (format6 === 4) return new Format4(parser, platformID, encodingID); if (format6 === 6) return new Format6(parser, platformID, encodingID); if (format6 === 8) return new Format8(parser, platformID, encodingID); if (format6 === 10) return new Format10(parser, platformID, encodingID); if (format6 === 12) return new Format12(parser, platformID, encodingID); if (format6 === 13) return new Format13(parser, platformID, encodingID); if (format6 === 14) return new Format14(parser, platformID, encodingID); return {}; } var cmap = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); this.version = p22.uint16; this.numTables = p22.uint16; this.encodingRecords = [...new Array(this.numTables)].map( (_) => new EncodingRecord(p22, this.tableStart) ); } getSubTable(tableID) { return this.encodingRecords[tableID].table; } getSupportedEncodings() { return this.encodingRecords.map((r3) => ({ platformID: r3.platformID, encodingId: r3.encodingID })); } getSupportedCharCodes(platformID, encodingID) { const recordID = this.encodingRecords.findIndex( (r3) => r3.platformID === platformID && r3.encodingID === encodingID ); if (recordID === -1) return false; const subtable = this.getSubTable(recordID); return subtable.getSupportedCharCodes(); } reverse(glyphid) { for (let i2 = 0; i2 < this.numTables; i2++) { let code = this.getSubTable(i2).reverse(glyphid); if (code) return code; } } getGlyphId(char) { let last = 0; this.encodingRecords.some((_, tableID) => { let t3 = this.getSubTable(tableID); if (!t3.getGlyphId) return false; last = t3.getGlyphId(char); return last !== 0; }); return last; } supports(char) { return this.encodingRecords.some((_, tableID) => { const t3 = this.getSubTable(tableID); return t3.supports && t3.supports(char) !== false; }); } supportsVariation(variation) { return this.encodingRecords.some((_, tableID) => { const t3 = this.getSubTable(tableID); return t3.supportsVariation && t3.supportsVariation(variation) !== false; }); } }; var EncodingRecord = class { constructor(p22, tableStart) { const platformID = this.platformID = p22.uint16; const encodingID = this.encodingID = p22.uint16; const offset = this.offset = p22.Offset32; lazy$1(this, `table`, () => { p22.currentPosition = tableStart + offset; return createSubTable(p22, platformID, encodingID); }); } }; var cmap$1 = Object.freeze({ __proto__: null, cmap }); var head = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); this.load({ majorVersion: p22.uint16, minorVersion: p22.uint16, fontRevision: p22.fixed, checkSumAdjustment: p22.uint32, magicNumber: p22.uint32, flags: p22.flags(16), unitsPerEm: p22.uint16, created: p22.longdatetime, modified: p22.longdatetime, xMin: p22.int16, yMin: p22.int16, xMax: p22.int16, yMax: p22.int16, macStyle: p22.flags(16), lowestRecPPEM: p22.uint16, fontDirectionHint: p22.uint16, indexToLocFormat: p22.uint16, glyphDataFormat: p22.uint16 }); } }; var head$1 = Object.freeze({ __proto__: null, head }); var hhea = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); this.majorVersion = p22.uint16; this.minorVersion = p22.uint16; this.ascender = p22.fword; this.descender = p22.fword; this.lineGap = p22.fword; this.advanceWidthMax = p22.ufword; this.minLeftSideBearing = p22.fword; this.minRightSideBearing = p22.fword; this.xMaxExtent = p22.fword; this.caretSlopeRise = p22.int16; this.caretSlopeRun = p22.int16; this.caretOffset = p22.int16; p22.int16; p22.int16; p22.int16; p22.int16; this.metricDataFormat = p22.int16; this.numberOfHMetrics = p22.uint16; p22.verifyLength(); } }; var hhea$1 = Object.freeze({ __proto__: null, hhea }); var hmtx = class extends SimpleTable { constructor(dict, dataview, tables) { const { p: p22 } = super(dict, dataview); const numberOfHMetrics = tables.hhea.numberOfHMetrics; const numGlyphs = tables.maxp.numGlyphs; const metricsStart = p22.currentPosition; lazy$1(this, `hMetrics`, () => { p22.currentPosition = metricsStart; return [...new Array(numberOfHMetrics)].map( (_) => new LongHorMetric(p22.uint16, p22.int16) ); }); if (numberOfHMetrics < numGlyphs) { const lsbStart = metricsStart + numberOfHMetrics * 4; lazy$1(this, `leftSideBearings`, () => { p22.currentPosition = lsbStart; return [...new Array(numGlyphs - numberOfHMetrics)].map( (_) => p22.int16 ); }); } } }; var LongHorMetric = class { constructor(w2, b2) { this.advanceWidth = w2; this.lsb = b2; } }; var hmtx$1 = Object.freeze({ __proto__: null, hmtx }); var maxp = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); this.version = p22.legacyFixed; this.numGlyphs = p22.uint16; if (this.version === 1) { this.maxPoints = p22.uint16; this.maxContours = p22.uint16; this.maxCompositePoints = p22.uint16; this.maxCompositeContours = p22.uint16; this.maxZones = p22.uint16; this.maxTwilightPoints = p22.uint16; this.maxStorage = p22.uint16; this.maxFunctionDefs = p22.uint16; this.maxInstructionDefs = p22.uint16; this.maxStackElements = p22.uint16; this.maxSizeOfInstructions = p22.uint16; this.maxComponentElements = p22.uint16; this.maxComponentDepth = p22.uint16; } p22.verifyLength(); } }; var maxp$1 = Object.freeze({ __proto__: null, maxp }); var name = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); this.format = p22.uint16; this.count = p22.uint16; this.stringOffset = p22.Offset16; this.nameRecords = [...new Array(this.count)].map( (_) => new NameRecord(p22, this) ); if (this.format === 1) { this.langTagCount = p22.uint16; this.langTagRecords = [...new Array(this.langTagCount)].map( (_) => new LangTagRecord(p22.uint16, p22.Offset16) ); } this.stringStart = this.tableStart + this.stringOffset; } get(nameID) { let record = this.nameRecords.find( (record2) => record2.nameID === nameID ); if (record) return record.string; } }; var LangTagRecord = class { constructor(length, offset) { this.length = length; this.offset = offset; } }; var NameRecord = class { constructor(p22, nameTable) { this.platformID = p22.uint16; this.encodingID = p22.uint16; this.languageID = p22.uint16; this.nameID = p22.uint16; this.length = p22.uint16; this.offset = p22.Offset16; lazy$1(this, `string`, () => { p22.currentPosition = nameTable.stringStart + this.offset; return decodeString(p22, this); }); } }; function decodeString(p22, record) { const { platformID, length } = record; if (length === 0) return ``; if (platformID === 0 || platformID === 3) { const str2 = []; for (let i2 = 0, e2 = length / 2; i2 < e2; i2++) str2[i2] = String.fromCharCode(p22.uint16); return str2.join(``); } const bytes = p22.readBytes(length); const str = []; bytes.forEach(function(b2, i2) { str[i2] = String.fromCharCode(b2); }); return str.join(``); } var name$1 = Object.freeze({ __proto__: null, name }); var OS2 = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); this.version = p22.uint16; this.xAvgCharWidth = p22.int16; this.usWeightClass = p22.uint16; this.usWidthClass = p22.uint16; this.fsType = p22.uint16; this.ySubscriptXSize = p22.int16; this.ySubscriptYSize = p22.int16; this.ySubscriptXOffset = p22.int16; this.ySubscriptYOffset = p22.int16; this.ySuperscriptXSize = p22.int16; this.ySuperscriptYSize = p22.int16; this.ySuperscriptXOffset = p22.int16; this.ySuperscriptYOffset = p22.int16; this.yStrikeoutSize = p22.int16; this.yStrikeoutPosition = p22.int16; this.sFamilyClass = p22.int16; this.panose = [...new Array(10)].map((_) => p22.uint8); this.ulUnicodeRange1 = p22.flags(32); this.ulUnicodeRange2 = p22.flags(32); this.ulUnicodeRange3 = p22.flags(32); this.ulUnicodeRange4 = p22.flags(32); this.achVendID = p22.tag; this.fsSelection = p22.uint16; this.usFirstCharIndex = p22.uint16; this.usLastCharIndex = p22.uint16; this.sTypoAscender = p22.int16; this.sTypoDescender = p22.int16; this.sTypoLineGap = p22.int16; this.usWinAscent = p22.uint16; this.usWinDescent = p22.uint16; if (this.version === 0) return p22.verifyLength(); this.ulCodePageRange1 = p22.flags(32); this.ulCodePageRange2 = p22.flags(32); if (this.version === 1) return p22.verifyLength(); this.sxHeight = p22.int16; this.sCapHeight = p22.int16; this.usDefaultChar = p22.uint16; this.usBreakChar = p22.uint16; this.usMaxContext = p22.uint16; if (this.version <= 4) return p22.verifyLength(); this.usLowerOpticalPointSize = p22.uint16; this.usUpperOpticalPointSize = p22.uint16; if (this.version === 5) return p22.verifyLength(); } }; var OS2$1 = Object.freeze({ __proto__: null, OS2 }); var post = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); this.version = p22.legacyFixed; this.italicAngle = p22.fixed; this.underlinePosition = p22.fword; this.underlineThickness = p22.fword; this.isFixedPitch = p22.uint32; this.minMemType42 = p22.uint32; this.maxMemType42 = p22.uint32; this.minMemType1 = p22.uint32; this.maxMemType1 = p22.uint32; if (this.version === 1 || this.version === 3) return p22.verifyLength(); this.numGlyphs = p22.uint16; if (this.version === 2) { this.glyphNameIndex = [...new Array(this.numGlyphs)].map( (_) => p22.uint16 ); this.namesOffset = p22.currentPosition; this.glyphNameOffsets = [1]; for (let i2 = 0; i2 < this.numGlyphs; i2++) { let index = this.glyphNameIndex[i2]; if (index < macStrings.length) { this.glyphNameOffsets.push(this.glyphNameOffsets[i2]); continue; } let bytelength = p22.int8; p22.skip(bytelength); this.glyphNameOffsets.push( this.glyphNameOffsets[i2] + bytelength + 1 ); } } if (this.version === 2.5) { this.offset = [...new Array(this.numGlyphs)].map( (_) => p22.int8 ); } } getGlyphName(glyphid) { if (this.version !== 2) { console.warn( `post table version ${this.version} does not support glyph name lookups` ); return ``; } let index = this.glyphNameIndex[glyphid]; if (index < 258) return macStrings[index]; let offset = this.glyphNameOffsets[glyphid]; let next = this.glyphNameOffsets[glyphid + 1]; let len = next - offset - 1; if (len === 0) return `.notdef.`; this.parser.currentPosition = this.namesOffset + offset; const data = this.parser.readBytes( len, this.namesOffset + offset, 8, true ); return data.map((b2) => String.fromCharCode(b2)).join(``); } }; var macStrings = [ `.notdef`, `.null`, `nonmarkingreturn`, `space`, `exclam`, `quotedbl`, `numbersign`, `dollar`, `percent`, `ampersand`, `quotesingle`, `parenleft`, `parenright`, `asterisk`, `plus`, `comma`, `hyphen`, `period`, `slash`, `zero`, `one`, `two`, `three`, `four`, `five`, `six`, `seven`, `eight`, `nine`, `colon`, `semicolon`, `less`, `equal`, `greater`, `question`, `at`, `A`, `B`, `C`, `D`, `E`, `F`, `G`, `H`, `I`, `J`, `K`, `L`, `M`, `N`, `O`, `P`, `Q`, `R`, `S`, `T`, `U`, `V`, `W`, `X`, `Y`, `Z`, `bracketleft`, `backslash`, `bracketright`, `asciicircum`, `underscore`, `grave`, `a`, `b`, `c`, `d`, `e`, `f`, `g`, `h`, `i`, `j`, `k`, `l`, `m`, `n`, `o`, `p`, `q`, `r`, `s`, `t`, `u`, `v`, `w`, `x`, `y`, `z`, `braceleft`, `bar`, `braceright`, `asciitilde`, `Adieresis`, `Aring`, `Ccedilla`, `Eacute`, `Ntilde`, `Odieresis`, `Udieresis`, `aacute`, `agrave`, `acircumflex`, `adieresis`, `atilde`, `aring`, `ccedilla`, `eacute`, `egrave`, `ecircumflex`, `edieresis`, `iacute`, `igrave`, `icircumflex`, `idieresis`, `ntilde`, `oacute`, `ograve`, `ocircumflex`, `odieresis`, `otilde`, `uacute`, `ugrave`, `ucircumflex`, `udieresis`, `dagger`, `degree`, `cent`, `sterling`, `section`, `bullet`, `paragraph`, `germandbls`, `registered`, `copyright`, `trademark`, `acute`, `dieresis`, `notequal`, `AE`, `Oslash`, `infinity`, `plusminus`, `lessequal`, `greaterequal`, `yen`, `mu`, `partialdiff`, `summation`, `product`, `pi`, `integral`, `ordfeminine`, `ordmasculine`, `Omega`, `ae`, `oslash`, `questiondown`, `exclamdown`, `logicalnot`, `radical`, `florin`, `approxequal`, `Delta`, `guillemotleft`, `guillemotright`, `ellipsis`, `nonbreakingspace`, `Agrave`, `Atilde`, `Otilde`, `OE`, `oe`, `endash`, `emdash`, `quotedblleft`, `quotedblright`, `quoteleft`, `quoteright`, `divide`, `lozenge`, `ydieresis`, `Ydieresis`, `fraction`, `currency`, `guilsinglleft`, `guilsinglright`, `fi`, `fl`, `daggerdbl`, `periodcentered`, `quotesinglbase`, `quotedblbase`, `perthousand`, `Acircumflex`, `Ecircumflex`, `Aacute`, `Edieresis`, `Egrave`, `Iacute`, `Icircumflex`, `Idieresis`, `Igrave`, `Oacute`, `Ocircumflex`, `apple`, `Ograve`, `Uacute`, `Ucircumflex`, `Ugrave`, `dotlessi`, `circumflex`, `tilde`, `macron`, `breve`, `dotaccent`, `ring`, `cedilla`, `hungarumlaut`, `ogonek`, `caron`, `Lslash`, `lslash`, `Scaron`, `scaron`, `Zcaron`, `zcaron`, `brokenbar`, `Eth`, `eth`, `Yacute`, `yacute`, `Thorn`, `thorn`, `minus`, `multiply`, `onesuperior`, `twosuperior`, `threesuperior`, `onehalf`, `onequarter`, `threequarters`, `franc`, `Gbreve`, `gbreve`, `Idotaccent`, `Scedilla`, `scedilla`, `Cacute`, `cacute`, `Ccaron`, `ccaron`, `dcroat` ]; var post$1 = Object.freeze({ __proto__: null, post }); var BASE = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); this.majorVersion = p22.uint16; this.minorVersion = p22.uint16; this.horizAxisOffset = p22.Offset16; this.vertAxisOffset = p22.Offset16; lazy$1( this, `horizAxis`, () => new AxisTable( { offset: dict.offset + this.horizAxisOffset }, dataview ) ); lazy$1( this, `vertAxis`, () => new AxisTable( { offset: dict.offset + this.vertAxisOffset }, dataview ) ); if (this.majorVersion === 1 && this.minorVersion === 1) { this.itemVarStoreOffset = p22.Offset32; lazy$1( this, `itemVarStore`, () => new AxisTable( { offset: dict.offset + this.itemVarStoreOffset }, dataview ) ); } } }; var AxisTable = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview, `AxisTable`); this.baseTagListOffset = p22.Offset16; this.baseScriptListOffset = p22.Offset16; lazy$1( this, `baseTagList`, () => new BaseTagListTable( { offset: dict.offset + this.baseTagListOffset }, dataview ) ); lazy$1( this, `baseScriptList`, () => new BaseScriptListTable( { offset: dict.offset + this.baseScriptListOffset }, dataview ) ); } }; var BaseTagListTable = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview, `BaseTagListTable`); this.baseTagCount = p22.uint16; this.baselineTags = [...new Array(this.baseTagCount)].map( (_) => p22.tag ); } }; var BaseScriptListTable = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview, `BaseScriptListTable`); this.baseScriptCount = p22.uint16; const recordStart = p22.currentPosition; lazy$1(this, `baseScriptRecords`, () => { p22.currentPosition = recordStart; return [...new Array(this.baseScriptCount)].map( (_) => new BaseScriptRecord(this.start, p22) ); }); } }; var BaseScriptRecord = class { constructor(baseScriptListTableStart, p22) { this.baseScriptTag = p22.tag; this.baseScriptOffset = p22.Offset16; lazy$1(this, `baseScriptTable`, () => { p22.currentPosition = baseScriptListTableStart + this.baseScriptOffset; return new BaseScriptTable(p22); }); } }; var BaseScriptTable = class { constructor(p22) { this.start = p22.currentPosition; this.baseValuesOffset = p22.Offset16; this.defaultMinMaxOffset = p22.Offset16; this.baseLangSysCount = p22.uint16; this.baseLangSysRecords = [...new Array(this.baseLangSysCount)].map( (_) => new BaseLangSysRecord(this.start, p22) ); lazy$1(this, `baseValues`, () => { p22.currentPosition = this.start + this.baseValuesOffset; return new BaseValuesTable(p22); }); lazy$1(this, `defaultMinMax`, () => { p22.currentPosition = this.start + this.defaultMinMaxOffset; return new MinMaxTable(p22); }); } }; var BaseLangSysRecord = class { constructor(baseScriptTableStart, p22) { this.baseLangSysTag = p22.tag; this.minMaxOffset = p22.Offset16; lazy$1(this, `minMax`, () => { p22.currentPosition = baseScriptTableStart + this.minMaxOffset; return new MinMaxTable(p22); }); } }; var BaseValuesTable = class { constructor(p22) { this.parser = p22; this.start = p22.currentPosition; this.defaultBaselineIndex = p22.uint16; this.baseCoordCount = p22.uint16; this.baseCoords = [...new Array(this.baseCoordCount)].map( (_) => p22.Offset16 ); } getTable(id) { this.parser.currentPosition = this.start + this.baseCoords[id]; return new BaseCoordTable(this.parser); } }; var MinMaxTable = class { constructor(p22) { this.minCoord = p22.Offset16; this.maxCoord = p22.Offset16; this.featMinMaxCount = p22.uint16; const recordStart = p22.currentPosition; lazy$1(this, `featMinMaxRecords`, () => { p22.currentPosition = recordStart; return [...new Array(this.featMinMaxCount)].map( (_) => new FeatMinMaxRecord(p22) ); }); } }; var FeatMinMaxRecord = class { constructor(p22) { this.featureTableTag = p22.tag; this.minCoord = p22.Offset16; this.maxCoord = p22.Offset16; } }; var BaseCoordTable = class { constructor(p22) { this.baseCoordFormat = p22.uint16; this.coordinate = p22.int16; if (this.baseCoordFormat === 2) { this.referenceGlyph = p22.uint16; this.baseCoordPoint = p22.uint16; } if (this.baseCoordFormat === 3) { this.deviceTable = p22.Offset16; } } }; var BASE$1 = Object.freeze({ __proto__: null, BASE }); var ClassDefinition = class { constructor(p22) { this.classFormat = p22.uint16; if (this.classFormat === 1) { this.startGlyphID = p22.uint16; this.glyphCount = p22.uint16; this.classValueArray = [...new Array(this.glyphCount)].map( (_) => p22.uint16 ); } if (this.classFormat === 2) { this.classRangeCount = p22.uint16; this.classRangeRecords = [ ...new Array(this.classRangeCount) ].map((_) => new ClassRangeRecord(p22)); } } }; var ClassRangeRecord = class { constructor(p22) { this.startGlyphID = p22.uint16; this.endGlyphID = p22.uint16; this.class = p22.uint16; } }; var CoverageTable = class extends ParsedData { constructor(p22) { super(p22); this.coverageFormat = p22.uint16; if (this.coverageFormat === 1) { this.glyphCount = p22.uint16; this.glyphArray = [...new Array(this.glyphCount)].map( (_) => p22.uint16 ); } if (this.coverageFormat === 2) { this.rangeCount = p22.uint16; this.rangeRecords = [...new Array(this.rangeCount)].map( (_) => new CoverageRangeRecord(p22) ); } } }; var CoverageRangeRecord = class { constructor(p22) { this.startGlyphID = p22.uint16; this.endGlyphID = p22.uint16; this.startCoverageIndex = p22.uint16; } }; var ItemVariationStoreTable = class { constructor(table, p22) { this.table = table; this.parser = p22; this.start = p22.currentPosition; this.format = p22.uint16; this.variationRegionListOffset = p22.Offset32; this.itemVariationDataCount = p22.uint16; this.itemVariationDataOffsets = [ ...new Array(this.itemVariationDataCount) ].map((_) => p22.Offset32); } }; var GDEF = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); this.majorVersion = p22.uint16; this.minorVersion = p22.uint16; this.glyphClassDefOffset = p22.Offset16; lazy$1(this, `glyphClassDefs`, () => { if (this.glyphClassDefOffset === 0) return void 0; p22.currentPosition = this.tableStart + this.glyphClassDefOffset; return new ClassDefinition(p22); }); this.attachListOffset = p22.Offset16; lazy$1(this, `attachList`, () => { if (this.attachListOffset === 0) return void 0; p22.currentPosition = this.tableStart + this.attachListOffset; return new AttachList(p22); }); this.ligCaretListOffset = p22.Offset16; lazy$1(this, `ligCaretList`, () => { if (this.ligCaretListOffset === 0) return void 0; p22.currentPosition = this.tableStart + this.ligCaretListOffset; return new LigCaretList(p22); }); this.markAttachClassDefOffset = p22.Offset16; lazy$1(this, `markAttachClassDef`, () => { if (this.markAttachClassDefOffset === 0) return void 0; p22.currentPosition = this.tableStart + this.markAttachClassDefOffset; return new ClassDefinition(p22); }); if (this.minorVersion >= 2) { this.markGlyphSetsDefOffset = p22.Offset16; lazy$1(this, `markGlyphSetsDef`, () => { if (this.markGlyphSetsDefOffset === 0) return void 0; p22.currentPosition = this.tableStart + this.markGlyphSetsDefOffset; return new MarkGlyphSetsTable(p22); }); } if (this.minorVersion === 3) { this.itemVarStoreOffset = p22.Offset32; lazy$1(this, `itemVarStore`, () => { if (this.itemVarStoreOffset === 0) return void 0; p22.currentPosition = this.tableStart + this.itemVarStoreOffset; return new ItemVariationStoreTable(p22); }); } } }; var AttachList = class extends ParsedData { constructor(p22) { super(p22); this.coverageOffset = p22.Offset16; this.glyphCount = p22.uint16; this.attachPointOffsets = [...new Array(this.glyphCount)].map( (_) => p22.Offset16 ); } getPoint(pointID) { this.parser.currentPosition = this.start + this.attachPointOffsets[pointID]; return new AttachPoint(this.parser); } }; var AttachPoint = class { constructor(p22) { this.pointCount = p22.uint16; this.pointIndices = [...new Array(this.pointCount)].map( (_) => p22.uint16 ); } }; var LigCaretList = class extends ParsedData { constructor(p22) { super(p22); this.coverageOffset = p22.Offset16; lazy$1(this, `coverage`, () => { p22.currentPosition = this.start + this.coverageOffset; return new CoverageTable(p22); }); this.ligGlyphCount = p22.uint16; this.ligGlyphOffsets = [...new Array(this.ligGlyphCount)].map( (_) => p22.Offset16 ); } getLigGlyph(ligGlyphID) { this.parser.currentPosition = this.start + this.ligGlyphOffsets[ligGlyphID]; return new LigGlyph(this.parser); } }; var LigGlyph = class extends ParsedData { constructor(p22) { super(p22); this.caretCount = p22.uint16; this.caretValueOffsets = [...new Array(this.caretCount)].map( (_) => p22.Offset16 ); } getCaretValue(caretID) { this.parser.currentPosition = this.start + this.caretValueOffsets[caretID]; return new CaretValue(this.parser); } }; var CaretValue = class { constructor(p22) { this.caretValueFormat = p22.uint16; if (this.caretValueFormat === 1) { this.coordinate = p22.int16; } if (this.caretValueFormat === 2) { this.caretValuePointIndex = p22.uint16; } if (this.caretValueFormat === 3) { this.coordinate = p22.int16; this.deviceOffset = p22.Offset16; } } }; var MarkGlyphSetsTable = class extends ParsedData { constructor(p22) { super(p22); this.markGlyphSetTableFormat = p22.uint16; this.markGlyphSetCount = p22.uint16; this.coverageOffsets = [...new Array(this.markGlyphSetCount)].map( (_) => p22.Offset32 ); } getMarkGlyphSet(markGlyphSetID) { this.parser.currentPosition = this.start + this.coverageOffsets[markGlyphSetID]; return new CoverageTable(this.parser); } }; var GDEF$1 = Object.freeze({ __proto__: null, GDEF }); var ScriptList = class extends ParsedData { static EMPTY = { scriptCount: 0, scriptRecords: [] }; constructor(p22) { super(p22); this.scriptCount = p22.uint16; this.scriptRecords = [...new Array(this.scriptCount)].map( (_) => new ScriptRecord(p22) ); } }; var ScriptRecord = class { constructor(p22) { this.scriptTag = p22.tag; this.scriptOffset = p22.Offset16; } }; var ScriptTable = class extends ParsedData { constructor(p22) { super(p22); this.defaultLangSys = p22.Offset16; this.langSysCount = p22.uint16; this.langSysRecords = [...new Array(this.langSysCount)].map( (_) => new LangSysRecord(p22) ); } }; var LangSysRecord = class { constructor(p22) { this.langSysTag = p22.tag; this.langSysOffset = p22.Offset16; } }; var LangSysTable = class { constructor(p22) { this.lookupOrder = p22.Offset16; this.requiredFeatureIndex = p22.uint16; this.featureIndexCount = p22.uint16; this.featureIndices = [...new Array(this.featureIndexCount)].map( (_) => p22.uint16 ); } }; var FeatureList = class extends ParsedData { static EMPTY = { featureCount: 0, featureRecords: [] }; constructor(p22) { super(p22); this.featureCount = p22.uint16; this.featureRecords = [...new Array(this.featureCount)].map( (_) => new FeatureRecord(p22) ); } }; var FeatureRecord = class { constructor(p22) { this.featureTag = p22.tag; this.featureOffset = p22.Offset16; } }; var FeatureTable = class extends ParsedData { constructor(p22) { super(p22); this.featureParams = p22.Offset16; this.lookupIndexCount = p22.uint16; this.lookupListIndices = [...new Array(this.lookupIndexCount)].map( (_) => p22.uint16 ); } getFeatureParams() { if (this.featureParams > 0) { const p22 = this.parser; p22.currentPosition = this.start + this.featureParams; const tag = this.featureTag; if (tag === `size`) return new Size(p22); if (tag.startsWith(`cc`)) return new CharacterVariant(p22); if (tag.startsWith(`ss`)) return new StylisticSet(p22); } } }; var CharacterVariant = class { constructor(p22) { this.format = p22.uint16; this.featUiLabelNameId = p22.uint16; this.featUiTooltipTextNameId = p22.uint16; this.sampleTextNameId = p22.uint16; this.numNamedParameters = p22.uint16; this.firstParamUiLabelNameId = p22.uint16; this.charCount = p22.uint16; this.character = [...new Array(this.charCount)].map( (_) => p22.uint24 ); } }; var Size = class { constructor(p22) { this.designSize = p22.uint16; this.subfamilyIdentifier = p22.uint16; this.subfamilyNameID = p22.uint16; this.smallEnd = p22.uint16; this.largeEnd = p22.uint16; } }; var StylisticSet = class { constructor(p22) { this.version = p22.uint16; this.UINameID = p22.uint16; } }; function undoCoverageOffsetParsing(instance) { instance.parser.currentPosition -= 2; delete instance.coverageOffset; delete instance.getCoverageTable; } var LookupType$1 = class extends ParsedData { constructor(p22) { super(p22); this.substFormat = p22.uint16; this.coverageOffset = p22.Offset16; } getCoverageTable() { let p22 = this.parser; p22.currentPosition = this.start + this.coverageOffset; return new CoverageTable(p22); } }; var SubstLookupRecord = class { constructor(p22) { this.glyphSequenceIndex = p22.uint16; this.lookupListIndex = p22.uint16; } }; var LookupType1$1 = class extends LookupType$1 { constructor(p22) { super(p22); this.deltaGlyphID = p22.int16; } }; var LookupType2$1 = class extends LookupType$1 { constructor(p22) { super(p22); this.sequenceCount = p22.uint16; this.sequenceOffsets = [...new Array(this.sequenceCount)].map( (_) => p22.Offset16 ); } getSequence(index) { let p22 = this.parser; p22.currentPosition = this.start + this.sequenceOffsets[index]; return new SequenceTable(p22); } }; var SequenceTable = class { constructor(p22) { this.glyphCount = p22.uint16; this.substituteGlyphIDs = [...new Array(this.glyphCount)].map( (_) => p22.uint16 ); } }; var LookupType3$1 = class extends LookupType$1 { constructor(p22) { super(p22); this.alternateSetCount = p22.uint16; this.alternateSetOffsets = [ ...new Array(this.alternateSetCount) ].map((_) => p22.Offset16); } getAlternateSet(index) { let p22 = this.parser; p22.currentPosition = this.start + this.alternateSetOffsets[index]; return new AlternateSetTable(p22); } }; var AlternateSetTable = class { constructor(p22) { this.glyphCount = p22.uint16; this.alternateGlyphIDs = [...new Array(this.glyphCount)].map( (_) => p22.uint16 ); } }; var LookupType4$1 = class extends LookupType$1 { constructor(p22) { super(p22); this.ligatureSetCount = p22.uint16; this.ligatureSetOffsets = [...new Array(this.ligatureSetCount)].map( (_) => p22.Offset16 ); } getLigatureSet(index) { let p22 = this.parser; p22.currentPosition = this.start + this.ligatureSetOffsets[index]; return new LigatureSetTable(p22); } }; var LigatureSetTable = class extends ParsedData { constructor(p22) { super(p22); this.ligatureCount = p22.uint16; this.ligatureOffsets = [...new Array(this.ligatureCount)].map( (_) => p22.Offset16 ); } getLigature(index) { let p22 = this.parser; p22.currentPosition = this.start + this.ligatureOffsets[index]; return new LigatureTable(p22); } }; var LigatureTable = class { constructor(p22) { this.ligatureGlyph = p22.uint16; this.componentCount = p22.uint16; this.componentGlyphIDs = [ ...new Array(this.componentCount - 1) ].map((_) => p22.uint16); } }; var LookupType5$1 = class extends LookupType$1 { constructor(p22) { super(p22); if (this.substFormat === 1) { this.subRuleSetCount = p22.uint16; this.subRuleSetOffsets = [ ...new Array(this.subRuleSetCount) ].map((_) => p22.Offset16); } if (this.substFormat === 2) { this.classDefOffset = p22.Offset16; this.subClassSetCount = p22.uint16; this.subClassSetOffsets = [ ...new Array(this.subClassSetCount) ].map((_) => p22.Offset16); } if (this.substFormat === 3) { undoCoverageOffsetParsing(this); this.glyphCount = p22.uint16; this.substitutionCount = p22.uint16; this.coverageOffsets = [...new Array(this.glyphCount)].map( (_) => p22.Offset16 ); this.substLookupRecords = [ ...new Array(this.substitutionCount) ].map((_) => new SubstLookupRecord(p22)); } } getSubRuleSet(index) { if (this.substFormat !== 1) throw new Error( `lookup type 5.${this.substFormat} has no subrule sets.` ); let p22 = this.parser; p22.currentPosition = this.start + this.subRuleSetOffsets[index]; return new SubRuleSetTable(p22); } getSubClassSet(index) { if (this.substFormat !== 2) throw new Error( `lookup type 5.${this.substFormat} has no subclass sets.` ); let p22 = this.parser; p22.currentPosition = this.start + this.subClassSetOffsets[index]; return new SubClassSetTable(p22); } getCoverageTable(index) { if (this.substFormat !== 3 && !index) return super.getCoverageTable(); if (!index) throw new Error( `lookup type 5.${this.substFormat} requires an coverage table index.` ); let p22 = this.parser; p22.currentPosition = this.start + this.coverageOffsets[index]; return new CoverageTable(p22); } }; var SubRuleSetTable = class extends ParsedData { constructor(p22) { super(p22); this.subRuleCount = p22.uint16; this.subRuleOffsets = [...new Array(this.subRuleCount)].map( (_) => p22.Offset16 ); } getSubRule(index) { let p22 = this.parser; p22.currentPosition = this.start + this.subRuleOffsets[index]; return new SubRuleTable(p22); } }; var SubRuleTable = class { constructor(p22) { this.glyphCount = p22.uint16; this.substitutionCount = p22.uint16; this.inputSequence = [...new Array(this.glyphCount - 1)].map( (_) => p22.uint16 ); this.substLookupRecords = [ ...new Array(this.substitutionCount) ].map((_) => new SubstLookupRecord(p22)); } }; var SubClassSetTable = class extends ParsedData { constructor(p22) { super(p22); this.subClassRuleCount = p22.uint16; this.subClassRuleOffsets = [ ...new Array(this.subClassRuleCount) ].map((_) => p22.Offset16); } getSubClass(index) { let p22 = this.parser; p22.currentPosition = this.start + this.subClassRuleOffsets[index]; return new SubClassRuleTable(p22); } }; var SubClassRuleTable = class extends SubRuleTable { constructor(p22) { super(p22); } }; var LookupType6$1 = class extends LookupType$1 { constructor(p22) { super(p22); if (this.substFormat === 1) { this.chainSubRuleSetCount = p22.uint16; this.chainSubRuleSetOffsets = [ ...new Array(this.chainSubRuleSetCount) ].map((_) => p22.Offset16); } if (this.substFormat === 2) { this.backtrackClassDefOffset = p22.Offset16; this.inputClassDefOffset = p22.Offset16; this.lookaheadClassDefOffset = p22.Offset16; this.chainSubClassSetCount = p22.uint16; this.chainSubClassSetOffsets = [ ...new Array(this.chainSubClassSetCount) ].map((_) => p22.Offset16); } if (this.substFormat === 3) { undoCoverageOffsetParsing(this); this.backtrackGlyphCount = p22.uint16; this.backtrackCoverageOffsets = [ ...new Array(this.backtrackGlyphCount) ].map((_) => p22.Offset16); this.inputGlyphCount = p22.uint16; this.inputCoverageOffsets = [ ...new Array(this.inputGlyphCount) ].map((_) => p22.Offset16); this.lookaheadGlyphCount = p22.uint16; this.lookaheadCoverageOffsets = [ ...new Array(this.lookaheadGlyphCount) ].map((_) => p22.Offset16); this.seqLookupCount = p22.uint16; this.seqLookupRecords = [ ...new Array(this.substitutionCount) ].map((_) => new SequenceLookupRecord(p22)); } } getChainSubRuleSet(index) { if (this.substFormat !== 1) throw new Error( `lookup type 6.${this.substFormat} has no chainsubrule sets.` ); let p22 = this.parser; p22.currentPosition = this.start + this.chainSubRuleSetOffsets[index]; return new ChainSubRuleSetTable(p22); } getChainSubClassSet(index) { if (this.substFormat !== 2) throw new Error( `lookup type 6.${this.substFormat} has no chainsubclass sets.` ); let p22 = this.parser; p22.currentPosition = this.start + this.chainSubClassSetOffsets[index]; return new ChainSubClassSetTable(p22); } getCoverageFromOffset(offset) { if (this.substFormat !== 3) throw new Error( `lookup type 6.${this.substFormat} does not use contextual coverage offsets.` ); let p22 = this.parser; p22.currentPosition = this.start + offset; return new CoverageTable(p22); } }; var ChainSubRuleSetTable = class extends ParsedData { constructor(p22) { super(p22); this.chainSubRuleCount = p22.uint16; this.chainSubRuleOffsets = [ ...new Array(this.chainSubRuleCount) ].map((_) => p22.Offset16); } getSubRule(index) { let p22 = this.parser; p22.currentPosition = this.start + this.chainSubRuleOffsets[index]; return new ChainSubRuleTable(p22); } }; var ChainSubRuleTable = class { constructor(p22) { this.backtrackGlyphCount = p22.uint16; this.backtrackSequence = [ ...new Array(this.backtrackGlyphCount) ].map((_) => p22.uint16); this.inputGlyphCount = p22.uint16; this.inputSequence = [...new Array(this.inputGlyphCount - 1)].map( (_) => p22.uint16 ); this.lookaheadGlyphCount = p22.uint16; this.lookAheadSequence = [ ...new Array(this.lookAheadGlyphCount) ].map((_) => p22.uint16); this.substitutionCount = p22.uint16; this.substLookupRecords = [...new Array(this.SubstCount)].map( (_) => new SubstLookupRecord(p22) ); } }; var ChainSubClassSetTable = class extends ParsedData { constructor(p22) { super(p22); this.chainSubClassRuleCount = p22.uint16; this.chainSubClassRuleOffsets = [ ...new Array(this.chainSubClassRuleCount) ].map((_) => p22.Offset16); } getSubClass(index) { let p22 = this.parser; p22.currentPosition = this.start + this.chainSubRuleOffsets[index]; return new ChainSubClassRuleTable(p22); } }; var ChainSubClassRuleTable = class { constructor(p22) { this.backtrackGlyphCount = p22.uint16; this.backtrackSequence = [ ...new Array(this.backtrackGlyphCount) ].map((_) => p22.uint16); this.inputGlyphCount = p22.uint16; this.inputSequence = [...new Array(this.inputGlyphCount - 1)].map( (_) => p22.uint16 ); this.lookaheadGlyphCount = p22.uint16; this.lookAheadSequence = [ ...new Array(this.lookAheadGlyphCount) ].map((_) => p22.uint16); this.substitutionCount = p22.uint16; this.substLookupRecords = [ ...new Array(this.substitutionCount) ].map((_) => new SequenceLookupRecord(p22)); } }; var SequenceLookupRecord = class extends ParsedData { constructor(p22) { super(p22); this.sequenceIndex = p22.uint16; this.lookupListIndex = p22.uint16; } }; var LookupType7$1 = class extends ParsedData { constructor(p22) { super(p22); this.substFormat = p22.uint16; this.extensionLookupType = p22.uint16; this.extensionOffset = p22.Offset32; } }; var LookupType8$1 = class extends LookupType$1 { constructor(p22) { super(p22); this.backtrackGlyphCount = p22.uint16; this.backtrackCoverageOffsets = [ ...new Array(this.backtrackGlyphCount) ].map((_) => p22.Offset16); this.lookaheadGlyphCount = p22.uint16; this.lookaheadCoverageOffsets = [ new Array(this.lookaheadGlyphCount) ].map((_) => p22.Offset16); this.glyphCount = p22.uint16; this.substituteGlyphIDs = [...new Array(this.glyphCount)].map( (_) => p22.uint16 ); } }; var GSUBtables = { buildSubtable: function(type, p22) { const subtable = new [ void 0, LookupType1$1, LookupType2$1, LookupType3$1, LookupType4$1, LookupType5$1, LookupType6$1, LookupType7$1, LookupType8$1 ][type](p22); subtable.type = type; return subtable; } }; var LookupType = class extends ParsedData { constructor(p22) { super(p22); } }; var LookupType1 = class extends LookupType { constructor(p22) { super(p22); console.log(`lookup type 1`); } }; var LookupType2 = class extends LookupType { constructor(p22) { super(p22); console.log(`lookup type 2`); } }; var LookupType3 = class extends LookupType { constructor(p22) { super(p22); console.log(`lookup type 3`); } }; var LookupType4 = class extends LookupType { constructor(p22) { super(p22); console.log(`lookup type 4`); } }; var LookupType5 = class extends LookupType { constructor(p22) { super(p22); console.log(`lookup type 5`); } }; var LookupType6 = class extends LookupType { constructor(p22) { super(p22); console.log(`lookup type 6`); } }; var LookupType7 = class extends LookupType { constructor(p22) { super(p22); console.log(`lookup type 7`); } }; var LookupType8 = class extends LookupType { constructor(p22) { super(p22); console.log(`lookup type 8`); } }; var LookupType9 = class extends LookupType { constructor(p22) { super(p22); console.log(`lookup type 9`); } }; var GPOStables = { buildSubtable: function(type, p22) { const subtable = new [ void 0, LookupType1, LookupType2, LookupType3, LookupType4, LookupType5, LookupType6, LookupType7, LookupType8, LookupType9 ][type](p22); subtable.type = type; return subtable; } }; var LookupList = class extends ParsedData { static EMPTY = { lookupCount: 0, lookups: [] }; constructor(p22) { super(p22); this.lookupCount = p22.uint16; this.lookups = [...new Array(this.lookupCount)].map( (_) => p22.Offset16 ); } }; var LookupTable = class extends ParsedData { constructor(p22, type) { super(p22); this.ctType = type; this.lookupType = p22.uint16; this.lookupFlag = p22.uint16; this.subTableCount = p22.uint16; this.subtableOffsets = [...new Array(this.subTableCount)].map( (_) => p22.Offset16 ); this.markFilteringSet = p22.uint16; } get rightToLeft() { return this.lookupFlag & true; } get ignoreBaseGlyphs() { return this.lookupFlag & true; } get ignoreLigatures() { return this.lookupFlag & true; } get ignoreMarks() { return this.lookupFlag & true; } get useMarkFilteringSet() { return this.lookupFlag & true; } get markAttachmentType() { return this.lookupFlag & true; } getSubTable(index) { const builder = this.ctType === `GSUB` ? GSUBtables : GPOStables; this.parser.currentPosition = this.start + this.subtableOffsets[index]; return builder.buildSubtable(this.lookupType, this.parser); } }; var CommonLayoutTable = class extends SimpleTable { constructor(dict, dataview, name2) { const { p: p22, tableStart } = super(dict, dataview, name2); this.majorVersion = p22.uint16; this.minorVersion = p22.uint16; this.scriptListOffset = p22.Offset16; this.featureListOffset = p22.Offset16; this.lookupListOffset = p22.Offset16; if (this.majorVersion === 1 && this.minorVersion === 1) { this.featureVariationsOffset = p22.Offset32; } const no_content = !(this.scriptListOffset || this.featureListOffset || this.lookupListOffset); lazy$1(this, `scriptList`, () => { if (no_content) return ScriptList.EMPTY; p22.currentPosition = tableStart + this.scriptListOffset; return new ScriptList(p22); }); lazy$1(this, `featureList`, () => { if (no_content) return FeatureList.EMPTY; p22.currentPosition = tableStart + this.featureListOffset; return new FeatureList(p22); }); lazy$1(this, `lookupList`, () => { if (no_content) return LookupList.EMPTY; p22.currentPosition = tableStart + this.lookupListOffset; return new LookupList(p22); }); if (this.featureVariationsOffset) { lazy$1(this, `featureVariations`, () => { if (no_content) return FeatureVariations.EMPTY; p22.currentPosition = tableStart + this.featureVariationsOffset; return new FeatureVariations(p22); }); } } getSupportedScripts() { return this.scriptList.scriptRecords.map((r3) => r3.scriptTag); } getScriptTable(scriptTag) { let record = this.scriptList.scriptRecords.find( (r3) => r3.scriptTag === scriptTag ); this.parser.currentPosition = this.scriptList.start + record.scriptOffset; let table = new ScriptTable(this.parser); table.scriptTag = scriptTag; return table; } ensureScriptTable(arg) { if (typeof arg === "string") { return this.getScriptTable(arg); } return arg; } getSupportedLangSys(scriptTable) { scriptTable = this.ensureScriptTable(scriptTable); const hasDefault = scriptTable.defaultLangSys !== 0; const supported = scriptTable.langSysRecords.map( (l2) => l2.langSysTag ); if (hasDefault) supported.unshift(`dflt`); return supported; } getDefaultLangSysTable(scriptTable) { scriptTable = this.ensureScriptTable(scriptTable); let offset = scriptTable.defaultLangSys; if (offset !== 0) { this.parser.currentPosition = scriptTable.start + offset; let table = new LangSysTable(this.parser); table.langSysTag = ``; table.defaultForScript = scriptTable.scriptTag; return table; } } getLangSysTable(scriptTable, langSysTag = `dflt`) { if (langSysTag === `dflt`) return this.getDefaultLangSysTable(scriptTable); scriptTable = this.ensureScriptTable(scriptTable); let record = scriptTable.langSysRecords.find( (l2) => l2.langSysTag === langSysTag ); this.parser.currentPosition = scriptTable.start + record.langSysOffset; let table = new LangSysTable(this.parser); table.langSysTag = langSysTag; return table; } getFeatures(langSysTable) { return langSysTable.featureIndices.map( (index) => this.getFeature(index) ); } getFeature(indexOrTag) { let record; if (parseInt(indexOrTag) == indexOrTag) { record = this.featureList.featureRecords[indexOrTag]; } else { record = this.featureList.featureRecords.find( (f2) => f2.featureTag === indexOrTag ); } if (!record) return; this.parser.currentPosition = this.featureList.start + record.featureOffset; let table = new FeatureTable(this.parser); table.featureTag = record.featureTag; return table; } getLookups(featureTable) { return featureTable.lookupListIndices.map( (index) => this.getLookup(index) ); } getLookup(lookupIndex, type) { let lookupOffset = this.lookupList.lookups[lookupIndex]; this.parser.currentPosition = this.lookupList.start + lookupOffset; return new LookupTable(this.parser, type); } }; var GSUB = class extends CommonLayoutTable { constructor(dict, dataview) { super(dict, dataview, `GSUB`); } getLookup(lookupIndex) { return super.getLookup(lookupIndex, `GSUB`); } }; var GSUB$1 = Object.freeze({ __proto__: null, GSUB }); var GPOS = class extends CommonLayoutTable { constructor(dict, dataview) { super(dict, dataview, `GPOS`); } getLookup(lookupIndex) { return super.getLookup(lookupIndex, `GPOS`); } }; var GPOS$1 = Object.freeze({ __proto__: null, GPOS }); var SVG67 = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); this.version = p22.uint16; this.offsetToSVGDocumentList = p22.Offset32; p22.currentPosition = this.tableStart + this.offsetToSVGDocumentList; this.documentList = new SVGDocumentList(p22); } }; var SVGDocumentList = class extends ParsedData { constructor(p22) { super(p22); this.numEntries = p22.uint16; this.documentRecords = [...new Array(this.numEntries)].map( (_) => new SVGDocumentRecord(p22) ); } getDocument(documentID) { let record = this.documentRecords[documentID]; if (!record) return ""; let offset = this.start + record.svgDocOffset; this.parser.currentPosition = offset; return this.parser.readBytes(record.svgDocLength); } getDocumentForGlyph(glyphID) { let id = this.documentRecords.findIndex( (d2) => d2.startGlyphID <= glyphID && glyphID <= d2.endGlyphID ); if (id === -1) return ""; return this.getDocument(id); } }; var SVGDocumentRecord = class { constructor(p22) { this.startGlyphID = p22.uint16; this.endGlyphID = p22.uint16; this.svgDocOffset = p22.Offset32; this.svgDocLength = p22.uint32; } }; var SVG$1 = Object.freeze({ __proto__: null, SVG: SVG67 }); var fvar = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); this.majorVersion = p22.uint16; this.minorVersion = p22.uint16; this.axesArrayOffset = p22.Offset16; p22.uint16; this.axisCount = p22.uint16; this.axisSize = p22.uint16; this.instanceCount = p22.uint16; this.instanceSize = p22.uint16; const axisStart = this.tableStart + this.axesArrayOffset; lazy$1(this, `axes`, () => { p22.currentPosition = axisStart; return [...new Array(this.axisCount)].map( (_) => new VariationAxisRecord(p22) ); }); const instanceStart = axisStart + this.axisCount * this.axisSize; lazy$1(this, `instances`, () => { let instances = []; for (let i2 = 0; i2 < this.instanceCount; i2++) { p22.currentPosition = instanceStart + i2 * this.instanceSize; instances.push( new InstanceRecord(p22, this.axisCount, this.instanceSize) ); } return instances; }); } getSupportedAxes() { return this.axes.map((a2) => a2.tag); } getAxis(name2) { return this.axes.find((a2) => a2.tag === name2); } }; var VariationAxisRecord = class { constructor(p22) { this.tag = p22.tag; this.minValue = p22.fixed; this.defaultValue = p22.fixed; this.maxValue = p22.fixed; this.flags = p22.flags(16); this.axisNameID = p22.uint16; } }; var InstanceRecord = class { constructor(p22, axisCount, size) { let start2 = p22.currentPosition; this.subfamilyNameID = p22.uint16; p22.uint16; this.coordinates = [...new Array(axisCount)].map( (_) => p22.fixed ); if (p22.currentPosition - start2 < size) { this.postScriptNameID = p22.uint16; } } }; var fvar$1 = Object.freeze({ __proto__: null, fvar }); var cvt = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); const n2 = dict.length / 2; lazy$1( this, `items`, () => [...new Array(n2)].map((_) => p22.fword) ); } }; var cvt$1 = Object.freeze({ __proto__: null, cvt }); var fpgm = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); lazy$1( this, `instructions`, () => [...new Array(dict.length)].map((_) => p22.uint8) ); } }; var fpgm$1 = Object.freeze({ __proto__: null, fpgm }); var gasp = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); this.version = p22.uint16; this.numRanges = p22.uint16; const getter = () => [...new Array(this.numRanges)].map( (_) => new GASPRange(p22) ); lazy$1(this, `gaspRanges`, getter); } }; var GASPRange = class { constructor(p22) { this.rangeMaxPPEM = p22.uint16; this.rangeGaspBehavior = p22.uint16; } }; var gasp$1 = Object.freeze({ __proto__: null, gasp }); var glyf = class extends SimpleTable { constructor(dict, dataview) { super(dict, dataview); } getGlyphData(offset, length) { this.parser.currentPosition = this.tableStart + offset; return this.parser.readBytes(length); } }; var glyf$1 = Object.freeze({ __proto__: null, glyf }); var loca = class extends SimpleTable { constructor(dict, dataview, tables) { const { p: p22 } = super(dict, dataview); const n2 = tables.maxp.numGlyphs + 1; if (tables.head.indexToLocFormat === 0) { this.x2 = true; lazy$1( this, `offsets`, () => [...new Array(n2)].map((_) => p22.Offset16) ); } else { lazy$1( this, `offsets`, () => [...new Array(n2)].map((_) => p22.Offset32) ); } } getGlyphDataOffsetAndLength(glyphID) { let offset = this.offsets[glyphID] * this.x2 ? 2 : 1; let nextOffset = this.offsets[glyphID + 1] * this.x2 ? 2 : 1; return { offset, length: nextOffset - offset }; } }; var loca$1 = Object.freeze({ __proto__: null, loca }); var prep = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); lazy$1( this, `instructions`, () => [...new Array(dict.length)].map((_) => p22.uint8) ); } }; var prep$1 = Object.freeze({ __proto__: null, prep }); var CFF = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); lazy$1(this, `data`, () => p22.readBytes()); } }; var CFF$1 = Object.freeze({ __proto__: null, CFF }); var CFF2 = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); lazy$1(this, `data`, () => p22.readBytes()); } }; var CFF2$1 = Object.freeze({ __proto__: null, CFF2 }); var VORG = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); this.majorVersion = p22.uint16; this.minorVersion = p22.uint16; this.defaultVertOriginY = p22.int16; this.numVertOriginYMetrics = p22.uint16; lazy$1( this, `vertORiginYMetrics`, () => [...new Array(this.numVertOriginYMetrics)].map( (_) => new VertOriginYMetric(p22) ) ); } }; var VertOriginYMetric = class { constructor(p22) { this.glyphIndex = p22.uint16; this.vertOriginY = p22.int16; } }; var VORG$1 = Object.freeze({ __proto__: null, VORG }); var BitmapSize = class { constructor(p22) { this.indexSubTableArrayOffset = p22.Offset32; this.indexTablesSize = p22.uint32; this.numberofIndexSubTables = p22.uint32; this.colorRef = p22.uint32; this.hori = new SbitLineMetrics(p22); this.vert = new SbitLineMetrics(p22); this.startGlyphIndex = p22.uint16; this.endGlyphIndex = p22.uint16; this.ppemX = p22.uint8; this.ppemY = p22.uint8; this.bitDepth = p22.uint8; this.flags = p22.int8; } }; var BitmapScale = class { constructor(p22) { this.hori = new SbitLineMetrics(p22); this.vert = new SbitLineMetrics(p22); this.ppemX = p22.uint8; this.ppemY = p22.uint8; this.substitutePpemX = p22.uint8; this.substitutePpemY = p22.uint8; } }; var SbitLineMetrics = class { constructor(p22) { this.ascender = p22.int8; this.descender = p22.int8; this.widthMax = p22.uint8; this.caretSlopeNumerator = p22.int8; this.caretSlopeDenominator = p22.int8; this.caretOffset = p22.int8; this.minOriginSB = p22.int8; this.minAdvanceSB = p22.int8; this.maxBeforeBL = p22.int8; this.minAfterBL = p22.int8; this.pad1 = p22.int8; this.pad2 = p22.int8; } }; var EBLC = class extends SimpleTable { constructor(dict, dataview, name2) { const { p: p22 } = super(dict, dataview, name2); this.majorVersion = p22.uint16; this.minorVersion = p22.uint16; this.numSizes = p22.uint32; lazy$1( this, `bitMapSizes`, () => [...new Array(this.numSizes)].map( (_) => new BitmapSize(p22) ) ); } }; var EBLC$1 = Object.freeze({ __proto__: null, EBLC }); var EBDT = class extends SimpleTable { constructor(dict, dataview, name2) { const { p: p22 } = super(dict, dataview, name2); this.majorVersion = p22.uint16; this.minorVersion = p22.uint16; } }; var EBDT$1 = Object.freeze({ __proto__: null, EBDT }); var EBSC = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); this.majorVersion = p22.uint16; this.minorVersion = p22.uint16; this.numSizes = p22.uint32; lazy$1( this, `bitmapScales`, () => [...new Array(this.numSizes)].map( (_) => new BitmapScale(p22) ) ); } }; var EBSC$1 = Object.freeze({ __proto__: null, EBSC }); var CBLC = class extends EBLC { constructor(dict, dataview) { super(dict, dataview, `CBLC`); } }; var CBLC$1 = Object.freeze({ __proto__: null, CBLC }); var CBDT = class extends EBDT { constructor(dict, dataview) { super(dict, dataview, `CBDT`); } }; var CBDT$1 = Object.freeze({ __proto__: null, CBDT }); var sbix = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); this.version = p22.uint16; this.flags = p22.flags(16); this.numStrikes = p22.uint32; lazy$1( this, `strikeOffsets`, () => [...new Array(this.numStrikes)].map((_) => p22.Offset32) ); } }; var sbix$1 = Object.freeze({ __proto__: null, sbix }); var COLR = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); this.version = p22.uint16; this.numBaseGlyphRecords = p22.uint16; this.baseGlyphRecordsOffset = p22.Offset32; this.layerRecordsOffset = p22.Offset32; this.numLayerRecords = p22.uint16; } getBaseGlyphRecord(glyphID) { let start2 = this.tableStart + this.baseGlyphRecordsOffset; this.parser.currentPosition = start2; let first = new BaseGlyphRecord(this.parser); let firstID = first.gID; let end = this.tableStart + this.layerRecordsOffset - 6; this.parser.currentPosition = end; let last = new BaseGlyphRecord(this.parser); let lastID = last.gID; if (firstID === glyphID) return first; if (lastID === glyphID) return last; while (true) { if (start2 === end) break; let mid = start2 + (end - start2) / 12; this.parser.currentPosition = mid; let middle = new BaseGlyphRecord(this.parser); let midID = middle.gID; if (midID === glyphID) return middle; else if (midID > glyphID) { end = mid; } else if (midID < glyphID) { start2 = mid; } } return false; } getLayers(glyphID) { let record = this.getBaseGlyphRecord(glyphID); this.parser.currentPosition = this.tableStart + this.layerRecordsOffset + 4 * record.firstLayerIndex; return [...new Array(record.numLayers)].map( (_) => new LayerRecord(p) ); } }; var BaseGlyphRecord = class { constructor(p22) { this.gID = p22.uint16; this.firstLayerIndex = p22.uint16; this.numLayers = p22.uint16; } }; var LayerRecord = class { constructor(p22) { this.gID = p22.uint16; this.paletteIndex = p22.uint16; } }; var COLR$1 = Object.freeze({ __proto__: null, COLR }); var CPAL = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); this.version = p22.uint16; this.numPaletteEntries = p22.uint16; const numPalettes = this.numPalettes = p22.uint16; this.numColorRecords = p22.uint16; this.offsetFirstColorRecord = p22.Offset32; this.colorRecordIndices = [...new Array(this.numPalettes)].map( (_) => p22.uint16 ); lazy$1(this, `colorRecords`, () => { p22.currentPosition = this.tableStart + this.offsetFirstColorRecord; return [...new Array(this.numColorRecords)].map( (_) => new ColorRecord(p22) ); }); if (this.version === 1) { this.offsetPaletteTypeArray = p22.Offset32; this.offsetPaletteLabelArray = p22.Offset32; this.offsetPaletteEntryLabelArray = p22.Offset32; lazy$1(this, `paletteTypeArray`, () => { p22.currentPosition = this.tableStart + this.offsetPaletteTypeArray; return new PaletteTypeArray(p22, numPalettes); }); lazy$1(this, `paletteLabelArray`, () => { p22.currentPosition = this.tableStart + this.offsetPaletteLabelArray; return new PaletteLabelsArray(p22, numPalettes); }); lazy$1(this, `paletteEntryLabelArray`, () => { p22.currentPosition = this.tableStart + this.offsetPaletteEntryLabelArray; return new PaletteEntryLabelArray(p22, numPalettes); }); } } }; var ColorRecord = class { constructor(p22) { this.blue = p22.uint8; this.green = p22.uint8; this.red = p22.uint8; this.alpha = p22.uint8; } }; var PaletteTypeArray = class { constructor(p22, numPalettes) { this.paletteTypes = [...new Array(numPalettes)].map( (_) => p22.uint32 ); } }; var PaletteLabelsArray = class { constructor(p22, numPalettes) { this.paletteLabels = [...new Array(numPalettes)].map( (_) => p22.uint16 ); } }; var PaletteEntryLabelArray = class { constructor(p22, numPalettes) { this.paletteEntryLabels = [...new Array(numPalettes)].map( (_) => p22.uint16 ); } }; var CPAL$1 = Object.freeze({ __proto__: null, CPAL }); var DSIG = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); this.version = p22.uint32; this.numSignatures = p22.uint16; this.flags = p22.uint16; this.signatureRecords = [...new Array(this.numSignatures)].map( (_) => new SignatureRecord(p22) ); } getData(signatureID) { const record = this.signatureRecords[signatureID]; this.parser.currentPosition = this.tableStart + record.offset; return new SignatureBlockFormat1(this.parser); } }; var SignatureRecord = class { constructor(p22) { this.format = p22.uint32; this.length = p22.uint32; this.offset = p22.Offset32; } }; var SignatureBlockFormat1 = class { constructor(p22) { p22.uint16; p22.uint16; this.signatureLength = p22.uint32; this.signature = p22.readBytes(this.signatureLength); } }; var DSIG$1 = Object.freeze({ __proto__: null, DSIG }); var hdmx = class extends SimpleTable { constructor(dict, dataview, tables) { const { p: p22 } = super(dict, dataview); const numGlyphs = tables.hmtx.numGlyphs; this.version = p22.uint16; this.numRecords = p22.int16; this.sizeDeviceRecord = p22.int32; this.records = [...new Array(numRecords)].map( (_) => new DeviceRecord(p22, numGlyphs) ); } }; var DeviceRecord = class { constructor(p22, numGlyphs) { this.pixelSize = p22.uint8; this.maxWidth = p22.uint8; this.widths = p22.readBytes(numGlyphs); } }; var hdmx$1 = Object.freeze({ __proto__: null, hdmx }); var kern = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); this.version = p22.uint16; this.nTables = p22.uint16; lazy$1(this, `tables`, () => { let offset = this.tableStart + 4; const tables = []; for (let i2 = 0; i2 < this.nTables; i2++) { p22.currentPosition = offset; let subtable = new KernSubTable(p22); tables.push(subtable); offset += subtable; } return tables; }); } }; var KernSubTable = class { constructor(p22) { this.version = p22.uint16; this.length = p22.uint16; this.coverage = p22.flags(8); this.format = p22.uint8; if (this.format === 0) { this.nPairs = p22.uint16; this.searchRange = p22.uint16; this.entrySelector = p22.uint16; this.rangeShift = p22.uint16; lazy$1( this, `pairs`, () => [...new Array(this.nPairs)].map((_) => new Pair(p22)) ); } if (this.format === 2) { console.warn( `Kern subtable format 2 is not supported: this parser currently only parses universal table data.` ); } } get horizontal() { return this.coverage[0]; } get minimum() { return this.coverage[1]; } get crossstream() { return this.coverage[2]; } get override() { return this.coverage[3]; } }; var Pair = class { constructor(p22) { this.left = p22.uint16; this.right = p22.uint16; this.value = p22.fword; } }; var kern$1 = Object.freeze({ __proto__: null, kern }); var LTSH = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); this.version = p22.uint16; this.numGlyphs = p22.uint16; this.yPels = p22.readBytes(this.numGlyphs); } }; var LTSH$1 = Object.freeze({ __proto__: null, LTSH }); var MERG = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); this.version = p22.uint16; this.mergeClassCount = p22.uint16; this.mergeDataOffset = p22.Offset16; this.classDefCount = p22.uint16; this.offsetToClassDefOffsets = p22.Offset16; lazy$1( this, `mergeEntryMatrix`, () => [...new Array(this.mergeClassCount)].map( (_) => p22.readBytes(this.mergeClassCount) ) ); console.warn(`Full MERG parsing is currently not supported.`); console.warn( `If you need this table parsed, please file an issue, or better yet, a PR.` ); } }; var MERG$1 = Object.freeze({ __proto__: null, MERG }); var meta = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); this.version = p22.uint32; this.flags = p22.uint32; p22.uint32; this.dataMapsCount = p22.uint32; this.dataMaps = [...new Array(this.dataMapsCount)].map( (_) => new DataMap(this.tableStart, p22) ); } }; var DataMap = class { constructor(tableStart, p22) { this.tableStart = tableStart; this.parser = p22; this.tag = p22.tag; this.dataOffset = p22.Offset32; this.dataLength = p22.uint32; } getData() { this.parser.currentField = this.tableStart + this.dataOffset; return this.parser.readBytes(this.dataLength); } }; var meta$1 = Object.freeze({ __proto__: null, meta }); var PCLT = class extends SimpleTable { constructor(dict, dataview) { super(dict, dataview); console.warn( `This font uses a PCLT table, which is currently not supported by this parser.` ); console.warn( `If you need this table parsed, please file an issue, or better yet, a PR.` ); } }; var PCLT$1 = Object.freeze({ __proto__: null, PCLT }); var VDMX = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); this.version = p22.uint16; this.numRecs = p22.uint16; this.numRatios = p22.uint16; this.ratRanges = [...new Array(this.numRatios)].map( (_) => new RatioRange(p22) ); this.offsets = [...new Array(this.numRatios)].map( (_) => p22.Offset16 ); this.VDMXGroups = [...new Array(this.numRecs)].map( (_) => new VDMXGroup(p22) ); } }; var RatioRange = class { constructor(p22) { this.bCharSet = p22.uint8; this.xRatio = p22.uint8; this.yStartRatio = p22.uint8; this.yEndRatio = p22.uint8; } }; var VDMXGroup = class { constructor(p22) { this.recs = p22.uint16; this.startsz = p22.uint8; this.endsz = p22.uint8; this.records = [...new Array(this.recs)].map( (_) => new vTable(p22) ); } }; var vTable = class { constructor(p22) { this.yPelHeight = p22.uint16; this.yMax = p22.int16; this.yMin = p22.int16; } }; var VDMX$1 = Object.freeze({ __proto__: null, VDMX }); var vhea = class extends SimpleTable { constructor(dict, dataview) { const { p: p22 } = super(dict, dataview); this.version = p22.fixed; this.ascent = this.vertTypoAscender = p22.int16; this.descent = this.vertTypoDescender = p22.int16; this.lineGap = this.vertTypoLineGap = p22.int16; this.advanceHeightMax = p22.int16; this.minTopSideBearing = p22.int16; this.minBottomSideBearing = p22.int16; this.yMaxExtent = p22.int16; this.caretSlopeRise = p22.int16; this.caretSlopeRun = p22.int16; this.caretOffset = p22.int16; this.reserved = p22.int16; this.reserved = p22.int16; this.reserved = p22.int16; this.reserved = p22.int16; this.metricDataFormat = p22.int16; this.numOfLongVerMetrics = p22.uint16; p22.verifyLength(); } }; var vhea$1 = Object.freeze({ __proto__: null, vhea }); var vmtx = class extends SimpleTable { constructor(dict, dataview, tables) { super(dict, dataview); const numOfLongVerMetrics = tables.vhea.numOfLongVerMetrics; const numGlyphs = tables.maxp.numGlyphs; const metricsStart = p.currentPosition; lazy(this, `vMetrics`, () => { p.currentPosition = metricsStart; return [...new Array(numOfLongVerMetrics)].map( (_) => new LongVertMetric(p.uint16, p.int16) ); }); if (numOfLongVerMetrics < numGlyphs) { const tsbStart = metricsStart + numOfLongVerMetrics * 4; lazy(this, `topSideBearings`, () => { p.currentPosition = tsbStart; return [...new Array(numGlyphs - numOfLongVerMetrics)].map( (_) => p.int16 ); }); } } }; var LongVertMetric = class { constructor(h2, b2) { this.advanceHeight = h2; this.topSideBearing = b2; } }; var vmtx$1 = Object.freeze({ __proto__: null, vmtx }); // packages/global-styles-ui/build-module/font-library/utils/make-families-from-faces.mjs var import_components38 = __toESM(require_components(), 1); var { kebabCase: kebabCase3 } = unlock2(import_components38.privateApis); // packages/global-styles-ui/build-module/font-library/upload-fonts.mjs var import_jsx_runtime109 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-library/modal.mjs var import_jsx_runtime110 = __toESM(require_jsx_runtime(), 1); var { Tabs } = unlock2(import_components40.privateApis); var DEFAULT_TAB = { id: "installed-fonts", title: (0, import_i18n28._x)("Library", "Font library") }; var UPLOAD_TAB = { id: "upload-fonts", title: (0, import_i18n28._x)("Upload", "noun") }; // packages/global-styles-ui/build-module/font-family-item.mjs var import_i18n29 = __toESM(require_i18n(), 1); var import_components41 = __toESM(require_components(), 1); var import_element34 = __toESM(require_element(), 1); var import_jsx_runtime111 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-families.mjs var import_jsx_runtime112 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-sizes/font-sizes-count.mjs var import_i18n31 = __toESM(require_i18n(), 1); var import_components43 = __toESM(require_components(), 1); var import_jsx_runtime113 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-typography.mjs var import_jsx_runtime114 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-typography-element.mjs var import_i18n33 = __toESM(require_i18n(), 1); var import_components45 = __toESM(require_components(), 1); var import_element37 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/typography-panel.mjs var import_block_editor8 = __toESM(require_block_editor(), 1); var import_jsx_runtime115 = __toESM(require_jsx_runtime(), 1); var { useSettingsForBlockElement: useSettingsForBlockElement4, TypographyPanel: StylesTypographyPanel2 } = unlock2(import_block_editor8.privateApis); // packages/global-styles-ui/build-module/typography-preview.mjs var import_jsx_runtime116 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-typography-element.mjs var import_jsx_runtime117 = __toESM(require_jsx_runtime(), 1); var elements = { text: { description: (0, import_i18n33.__)("Manage the fonts used on the site."), title: (0, import_i18n33.__)("Text") }, link: { description: (0, import_i18n33.__)("Manage the fonts and typography used on the links."), title: (0, import_i18n33.__)("Links") }, heading: { description: (0, import_i18n33.__)("Manage the fonts and typography used on headings."), title: (0, import_i18n33.__)("Headings") }, caption: { description: (0, import_i18n33.__)("Manage the fonts and typography used on captions."), title: (0, import_i18n33.__)("Captions") }, button: { description: (0, import_i18n33.__)("Manage the fonts and typography used on buttons."), title: (0, import_i18n33.__)("Buttons") } }; // packages/global-styles-ui/build-module/screen-colors.mjs var import_i18n35 = __toESM(require_i18n(), 1); var import_components48 = __toESM(require_components(), 1); var import_block_editor9 = __toESM(require_block_editor(), 1); // packages/global-styles-ui/build-module/palette.mjs var import_components47 = __toESM(require_components(), 1); var import_i18n34 = __toESM(require_i18n(), 1); var import_element38 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/color-indicator-wrapper.mjs var import_components46 = __toESM(require_components(), 1); var import_jsx_runtime118 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/palette.mjs var import_jsx_runtime119 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-colors.mjs var import_jsx_runtime120 = __toESM(require_jsx_runtime(), 1); var { useSettingsForBlockElement: useSettingsForBlockElement5, ColorPanel: StylesColorPanel2 } = unlock2( import_block_editor9.privateApis ); // packages/global-styles-ui/build-module/screen-color-palette.mjs var import_i18n38 = __toESM(require_i18n(), 1); var import_components53 = __toESM(require_components(), 1); // packages/global-styles-ui/build-module/color-palette-panel.mjs var import_compose6 = __toESM(require_compose(), 1); var import_components51 = __toESM(require_components(), 1); var import_i18n36 = __toESM(require_i18n(), 1); // packages/global-styles-ui/build-module/variations/variations-color.mjs var import_components50 = __toESM(require_components(), 1); // packages/global-styles-ui/build-module/preview-colors.mjs var import_components49 = __toESM(require_components(), 1); // packages/global-styles-ui/build-module/preset-colors.mjs var import_jsx_runtime121 = __toESM(require_jsx_runtime(), 1); function PresetColors() { const { paletteColors } = useStylesPreviewColors(); return paletteColors.slice(0, 4).map(({ slug, color }, index) => /* @__PURE__ */ (0, import_jsx_runtime121.jsx)( "div", { style: { flexGrow: 1, height: "100%", background: color } }, `${slug}-${index}` )); } // packages/global-styles-ui/build-module/preview-colors.mjs var import_jsx_runtime122 = __toESM(require_jsx_runtime(), 1); var firstFrameVariants2 = { start: { scale: 1, opacity: 1 }, hover: { scale: 0, opacity: 0 } }; var StylesPreviewColors = ({ label, isFocused, withHoverView }) => { return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)( preview_wrapper_default, { label, isFocused, withHoverView, children: ({ key }) => /* @__PURE__ */ (0, import_jsx_runtime122.jsx)( import_components49.__unstableMotion.div, { variants: firstFrameVariants2, style: { height: "100%", overflow: "hidden" }, children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)( import_components49.__experimentalHStack, { spacing: 0, justify: "center", style: { height: "100%", overflow: "hidden" }, children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(PresetColors, {}) } ) }, key ) } ); }; var preview_colors_default = StylesPreviewColors; // packages/global-styles-ui/build-module/variations/variations-color.mjs var import_jsx_runtime123 = __toESM(require_jsx_runtime(), 1); var propertiesToFilter2 = ["color"]; function ColorVariations({ title, gap = 2 }) { const colorVariations = useCurrentMergeThemeStyleVariationsWithUserConfig(propertiesToFilter2); if (colorVariations?.length <= 1) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(import_components50.__experimentalVStack, { spacing: 3, children: [ title && /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(Subtitle, { level: 3, children: title }), /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(import_components50.__experimentalGrid, { gap, children: colorVariations.map((variation, index) => /* @__PURE__ */ (0, import_jsx_runtime123.jsx)( Variation, { variation, isPill: true, properties: propertiesToFilter2, showTooltip: true, children: () => /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(preview_colors_default, {}) }, index )) }) ] }); } // packages/global-styles-ui/build-module/color-palette-panel.mjs var import_jsx_runtime124 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/gradients-palette-panel.mjs var import_compose7 = __toESM(require_compose(), 1); var import_components52 = __toESM(require_components(), 1); var import_i18n37 = __toESM(require_i18n(), 1); var import_jsx_runtime125 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-color-palette.mjs var import_jsx_runtime126 = __toESM(require_jsx_runtime(), 1); var { Tabs: Tabs2 } = unlock2(import_components53.privateApis); // packages/global-styles-ui/build-module/screen-background.mjs var import_i18n39 = __toESM(require_i18n(), 1); var import_block_editor11 = __toESM(require_block_editor(), 1); var import_components54 = __toESM(require_components(), 1); // packages/global-styles-ui/build-module/background-panel.mjs var import_block_editor10 = __toESM(require_block_editor(), 1); var import_jsx_runtime127 = __toESM(require_jsx_runtime(), 1); var { BackgroundPanel: StylesBackgroundPanel2 } = unlock2( import_block_editor10.privateApis ); // packages/global-styles-ui/build-module/screen-background.mjs var import_jsx_runtime128 = __toESM(require_jsx_runtime(), 1); var { useHasBackgroundPanel: useHasBackgroundPanel3 } = unlock2(import_block_editor11.privateApis); // packages/global-styles-ui/build-module/shadows-panel.mjs var import_components56 = __toESM(require_components(), 1); var import_i18n41 = __toESM(require_i18n(), 1); var import_element39 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/confirm-reset-shadow-dialog.mjs var import_components55 = __toESM(require_components(), 1); var import_i18n40 = __toESM(require_i18n(), 1); var import_jsx_runtime129 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/shadows-panel.mjs var import_jsx_runtime130 = __toESM(require_jsx_runtime(), 1); var { Menu } = unlock2(import_components56.privateApis); // packages/global-styles-ui/build-module/shadows-edit-panel.mjs var import_components57 = __toESM(require_components(), 1); var import_i18n42 = __toESM(require_i18n(), 1); var import_element40 = __toESM(require_element(), 1); var import_jsx_runtime131 = __toESM(require_jsx_runtime(), 1); var { Menu: Menu2 } = unlock2(import_components57.privateApis); var customShadowMenuItems = [ { label: (0, import_i18n42.__)("Rename"), action: "rename" }, { label: (0, import_i18n42.__)("Delete"), action: "delete" } ]; var presetShadowMenuItems = [ { label: (0, import_i18n42.__)("Reset"), action: "reset" } ]; // packages/global-styles-ui/build-module/screen-shadows.mjs var import_jsx_runtime132 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-layout.mjs var import_i18n43 = __toESM(require_i18n(), 1); var import_block_editor13 = __toESM(require_block_editor(), 1); // packages/global-styles-ui/build-module/dimensions-panel.mjs var import_block_editor12 = __toESM(require_block_editor(), 1); var import_element41 = __toESM(require_element(), 1); var import_jsx_runtime133 = __toESM(require_jsx_runtime(), 1); var { useSettingsForBlockElement: useSettingsForBlockElement6, DimensionsPanel: StylesDimensionsPanel2 } = unlock2(import_block_editor12.privateApis); // packages/global-styles-ui/build-module/screen-layout.mjs var import_jsx_runtime134 = __toESM(require_jsx_runtime(), 1); var { useHasDimensionsPanel: useHasDimensionsPanel4, useSettingsForBlockElement: useSettingsForBlockElement7 } = unlock2( import_block_editor13.privateApis ); // packages/global-styles-ui/build-module/screen-style-variations.mjs var import_components60 = __toESM(require_components(), 1); var import_i18n46 = __toESM(require_i18n(), 1); // packages/global-styles-ui/build-module/style-variations-content.mjs var import_i18n45 = __toESM(require_i18n(), 1); var import_components59 = __toESM(require_components(), 1); // packages/global-styles-ui/build-module/style-variations-container.mjs var import_core_data22 = __toESM(require_core_data(), 1); var import_data26 = __toESM(require_data(), 1); var import_element42 = __toESM(require_element(), 1); var import_components58 = __toESM(require_components(), 1); var import_i18n44 = __toESM(require_i18n(), 1); var import_jsx_runtime135 = __toESM(require_jsx_runtime(), 1); function StyleVariationsContainer({ gap = 2 }) { const { user } = (0, import_element42.useContext)(GlobalStylesContext); const userStyles = user?.styles; const variations = (0, import_data26.useSelect)((select3) => { const result = select3( import_core_data22.store ).__experimentalGetCurrentThemeGlobalStylesVariations(); return Array.isArray(result) ? result : void 0; }, []); const fullStyleVariations = variations?.filter( (variation) => { return !isVariationWithProperties(variation, ["color"]) && !isVariationWithProperties(variation, [ "typography", "spacing" ]); } ); const themeVariations = (0, import_element42.useMemo)(() => { const withEmptyVariation = [ { title: (0, import_i18n44.__)("Default"), settings: {}, styles: {} }, ...fullStyleVariations ?? [] ]; return [ ...withEmptyVariation.map((variation) => { const blockStyles = variation?.styles?.blocks ? { ...variation.styles.blocks } : {}; if (userStyles?.blocks) { Object.keys(userStyles.blocks).forEach((blockName) => { if (userStyles.blocks?.[blockName]?.css) { const variationBlockStyles = blockStyles[blockName] || {}; const customCSS = { css: `${blockStyles[blockName]?.css || ""} ${userStyles.blocks?.[blockName]?.css?.trim() || ""}` }; blockStyles[blockName] = { ...variationBlockStyles, ...customCSS }; } }); } const css = userStyles?.css || variation.styles?.css ? { css: `${variation.styles?.css || ""} ${userStyles?.css || ""}` } : {}; const blocks = Object.keys(blockStyles).length > 0 ? { blocks: blockStyles } : {}; const styles = { ...variation.styles, ...css, ...blocks }; return { ...variation, settings: variation.settings ?? {}, styles }; }) ]; }, [fullStyleVariations, userStyles?.blocks, userStyles?.css]); if (!fullStyleVariations || fullStyleVariations.length < 1) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)( import_components58.__experimentalGrid, { columns: 2, className: "global-styles-ui-style-variations-container", gap, children: themeVariations.map( (variation, index) => /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(Variation, { variation, children: (isFocused) => /* @__PURE__ */ (0, import_jsx_runtime135.jsx)( preview_styles_default, { label: variation?.title, withHoverView: true, isFocused, variation } ) }, index) ) } ); } var style_variations_container_default = StyleVariationsContainer; // packages/global-styles-ui/build-module/style-variations-content.mjs var import_jsx_runtime136 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-style-variations.mjs var import_jsx_runtime137 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-css.mjs var import_i18n47 = __toESM(require_i18n(), 1); var import_components61 = __toESM(require_components(), 1); var import_block_editor14 = __toESM(require_block_editor(), 1); var import_jsx_runtime138 = __toESM(require_jsx_runtime(), 1); var { AdvancedPanel: StylesAdvancedPanel2 } = unlock2(import_block_editor14.privateApis); // packages/global-styles-ui/build-module/screen-revisions/index.mjs var import_i18n50 = __toESM(require_i18n(), 1); var import_components64 = __toESM(require_components(), 1); var import_element44 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/screen-revisions/use-global-styles-revisions.mjs var import_data27 = __toESM(require_data(), 1); var import_core_data23 = __toESM(require_core_data(), 1); var import_element43 = __toESM(require_element(), 1); var SITE_EDITOR_AUTHORS_QUERY = { per_page: -1, _fields: "id,name,avatar_urls", context: "view", capabilities: ["edit_theme_options"] }; var DEFAULT_QUERY = { per_page: 100, page: 1 }; var EMPTY_ARRAY4 = []; function useGlobalStylesRevisions({ query } = {}) { const { user: userConfig } = (0, import_element43.useContext)(GlobalStylesContext); const _query = (0, import_element43.useMemo)( () => ({ ...DEFAULT_QUERY, ...query }), [query] ); const { authors, currentUser, isDirty, revisions, isLoadingGlobalStylesRevisions, revisionsCount } = (0, import_data27.useSelect)( (select3) => { const { __experimentalGetDirtyEntityRecords, getCurrentUser, getUsers, getRevisions, __experimentalGetCurrentGlobalStylesId, getEntityRecord, // @ts-expect-error isResolving } = select3(import_core_data23.store); const dirtyEntityRecords = __experimentalGetDirtyEntityRecords() || []; const _currentUser = getCurrentUser(); const _isDirty = dirtyEntityRecords.length > 0; const globalStylesId = __experimentalGetCurrentGlobalStylesId(); const globalStyles = globalStylesId ? getEntityRecord( "root", "globalStyles", globalStylesId ) : void 0; const _revisionsCount = ( // @ts-expect-error - _links is not typed in GlobalStylesRevision globalStyles?._links?.["version-history"]?.[0]?.count ?? 0 ); const globalStylesRevisions = globalStylesId ? getRevisions( "root", "globalStyles", globalStylesId, _query ) || EMPTY_ARRAY4 : EMPTY_ARRAY4; const _authors = getUsers(SITE_EDITOR_AUTHORS_QUERY) || EMPTY_ARRAY4; const _isResolving = globalStylesId ? isResolving("getRevisions", [ "root", "globalStyles", globalStylesId, _query ]) : false; return { authors: _authors, currentUser: _currentUser, isDirty: _isDirty, revisions: globalStylesRevisions, isLoadingGlobalStylesRevisions: _isResolving, revisionsCount: _revisionsCount }; }, [_query] ); return (0, import_element43.useMemo)(() => { if (!authors.length || isLoadingGlobalStylesRevisions) { return { revisions: EMPTY_ARRAY4, hasUnsavedChanges: isDirty, isLoading: true, revisionsCount }; } const _modifiedRevisions = revisions.map((revision) => { return { ...revision, author: authors.find( (author) => author.id === revision.author ) }; }); const fetchedRevisionsCount = revisions.length; if (fetchedRevisionsCount) { if (_modifiedRevisions[0].id !== "unsaved" && _query.page === 1) { _modifiedRevisions[0].isLatest = true; } if (isDirty && userConfig && Object.keys(userConfig).length > 0 && currentUser && _query.page === 1) { const unsavedRevision = { id: "unsaved", styles: userConfig?.styles, settings: userConfig?.settings, _links: userConfig?._links, author: { name: currentUser?.name || "", // @ts-expect-error - avatar_urls is not typed in User avatar_urls: currentUser?.avatar_urls || {} }, modified: /* @__PURE__ */ new Date() }; _modifiedRevisions.unshift(unsavedRevision); } if (_query.per_page && _query.page === Math.ceil(revisionsCount / _query.per_page)) { _modifiedRevisions.push({ id: "parent", styles: {}, settings: {} }); } } return { revisions: _modifiedRevisions, hasUnsavedChanges: isDirty, isLoading: false, revisionsCount }; }, [ isDirty, revisions, currentUser, authors, userConfig, isLoadingGlobalStylesRevisions, revisionsCount, _query.page, _query.per_page ]); } // packages/global-styles-ui/build-module/screen-revisions/revisions-buttons.mjs var import_i18n48 = __toESM(require_i18n(), 1); var import_components62 = __toESM(require_components(), 1); var import_date = __toESM(require_date(), 1); var import_core_data24 = __toESM(require_core_data(), 1); var import_data28 = __toESM(require_data(), 1); var import_keycodes4 = __toESM(require_keycodes(), 1); var import_jsx_runtime139 = __toESM(require_jsx_runtime(), 1); var DAY_IN_MILLISECONDS = 60 * 60 * 1e3 * 24; // packages/global-styles-ui/build-module/pagination/index.mjs var import_components63 = __toESM(require_components(), 1); var import_i18n49 = __toESM(require_i18n(), 1); var import_jsx_runtime140 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/screen-revisions/index.mjs var import_jsx_runtime141 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-sizes/font-sizes.mjs var import_i18n52 = __toESM(require_i18n(), 1); var import_components66 = __toESM(require_components(), 1); var import_element45 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/font-sizes/confirm-reset-font-sizes-dialog.mjs var import_components65 = __toESM(require_components(), 1); var import_i18n51 = __toESM(require_i18n(), 1); var import_jsx_runtime142 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-sizes/font-sizes.mjs var import_jsx_runtime143 = __toESM(require_jsx_runtime(), 1); var { Menu: Menu3 } = unlock2(import_components66.privateApis); // packages/global-styles-ui/build-module/font-sizes/font-size.mjs var import_i18n56 = __toESM(require_i18n(), 1); var import_components70 = __toESM(require_components(), 1); var import_element47 = __toESM(require_element(), 1); // packages/global-styles-ui/build-module/font-sizes/font-size-preview.mjs var import_block_editor15 = __toESM(require_block_editor(), 1); var import_i18n53 = __toESM(require_i18n(), 1); var import_jsx_runtime144 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-sizes/confirm-delete-font-size-dialog.mjs var import_components67 = __toESM(require_components(), 1); var import_i18n54 = __toESM(require_i18n(), 1); var import_jsx_runtime145 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-sizes/rename-font-size-dialog.mjs var import_components68 = __toESM(require_components(), 1); var import_i18n55 = __toESM(require_i18n(), 1); var import_element46 = __toESM(require_element(), 1); var import_jsx_runtime146 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/size-control/index.mjs var import_components69 = __toESM(require_components(), 1); var import_jsx_runtime147 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/font-sizes/font-size.mjs var import_jsx_runtime148 = __toESM(require_jsx_runtime(), 1); var { Menu: Menu4 } = unlock2(import_components70.privateApis); // packages/global-styles-ui/build-module/global-styles-ui.mjs var import_jsx_runtime149 = __toESM(require_jsx_runtime(), 1); // packages/global-styles-ui/build-module/with-global-styles-provider.mjs var import_jsx_runtime150 = __toESM(require_jsx_runtime(), 1); function withGlobalStylesProvider(Component) { return function WrappedComponent({ value, baseValue, onChange, ...props }) { return /* @__PURE__ */ (0, import_jsx_runtime150.jsx)( GlobalStylesProvider, { value, baseValue, onChange, children: /* @__PURE__ */ (0, import_jsx_runtime150.jsx)(Component, { ...props }) } ); }; } // packages/global-styles-ui/build-module/style-variations.mjs var StyleVariations = withGlobalStylesProvider(style_variations_container_default); // packages/global-styles-ui/build-module/color-variations.mjs var ColorVariations2 = withGlobalStylesProvider(ColorVariations); // packages/global-styles-ui/build-module/typography-variations.mjs var TypographyVariations2 = withGlobalStylesProvider(TypographyVariations); // packages/global-styles-ui/build-module/font-library/font-library.mjs var import_jsx_runtime151 = __toESM(require_jsx_runtime(), 1); // packages/edit-site/build-module/components/sidebar-navigation-screen-details-footer/index.mjs var import_i18n57 = __toESM(require_i18n(), 1); var import_url6 = __toESM(require_url(), 1); var import_components72 = __toESM(require_components(), 1); var import_jsx_runtime152 = __toESM(require_jsx_runtime(), 1); function SidebarNavigationScreenDetailsFooter({ record, revisionsCount, ...otherProps }) { const hrefProps = {}; const lastRevisionId = record?._links?.["predecessor-version"]?.[0]?.id ?? null; revisionsCount = revisionsCount || record?._links?.["version-history"]?.[0]?.count || 0; if (lastRevisionId && revisionsCount > 1) { hrefProps.href = (0, import_url6.addQueryArgs)("revision.php", { revision: record?._links["predecessor-version"][0].id }); hrefProps.as = "a"; } return /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( import_components72.__experimentalItemGroup, { size: "large", className: "edit-site-sidebar-navigation-screen-details-footer", children: /* @__PURE__ */ (0, import_jsx_runtime152.jsx)( SidebarNavigationItem, { icon: backup_default, ...hrefProps, ...otherProps, children: (0, import_i18n57.sprintf)( /* translators: %d: Number of Styles revisions. */ (0, import_i18n57._n)("%d Revision", "%d Revisions", revisionsCount), revisionsCount ) } ) } ); } // packages/edit-site/build-module/components/sidebar-navigation-screen-global-styles/index.mjs var import_jsx_runtime153 = __toESM(require_jsx_runtime(), 1); var { useLocation: useLocation10, useHistory: useHistory7 } = unlock(import_router11.privateApis); function SidebarNavigationItemGlobalStyles(props) { const { name: name2 } = useLocation10(); return /* @__PURE__ */ (0, import_jsx_runtime153.jsx)( SidebarNavigationItem, { ...props, "aria-current": name2 === "styles" } ); } function SidebarNavigationScreenGlobalStyles() { const history = useHistory7(); const { path } = useLocation10(); const { revisions, isLoading: isLoadingRevisions, revisionsCount } = useGlobalStylesRevisions(); const { openGeneralSidebar: openGeneralSidebar2 } = (0, import_data30.useDispatch)(store); const { setStylesPath } = unlock((0, import_data30.useDispatch)(import_editor8.store)); const { set: setPreference } = (0, import_data30.useDispatch)(import_preferences5.store); const openGlobalStyles = (0, import_element49.useCallback)(async () => { history.navigate((0, import_url7.addQueryArgs)(path, { canvas: "edit" }), { transition: "canvas-mode-edit-transition" }); return Promise.all([ setPreference("core", "distractionFree", false), openGeneralSidebar2("edit-site/global-styles") ]); }, [path, history, openGeneralSidebar2, setPreference]); const openRevisions = (0, import_element49.useCallback)(async () => { await openGlobalStyles(); setStylesPath("/revisions"); }, [openGlobalStyles, setStylesPath]); const shouldShowGlobalStylesFooter = !!revisionsCount && !isLoadingRevisions; return /* @__PURE__ */ (0, import_jsx_runtime153.jsx)(import_jsx_runtime153.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime153.jsx)( SidebarNavigationScreen, { title: (0, import_i18n58.__)("Design"), isRoot: true, description: (0, import_i18n58.__)( "Customize the appearance of your website using the block editor." ), content: /* @__PURE__ */ (0, import_jsx_runtime153.jsx)(MainSidebarNavigationContent, { activeItem: "styles-navigation-item" }), footer: shouldShowGlobalStylesFooter && /* @__PURE__ */ (0, import_jsx_runtime153.jsx)( SidebarNavigationScreenDetailsFooter, { record: revisions?.[0], revisionsCount, onClick: openRevisions } ) } ) }); } // packages/edit-site/build-module/components/sidebar-navigation-screen-main/index.mjs var import_jsx_runtime154 = __toESM(require_jsx_runtime(), 1); function MainSidebarNavigationContent({ isBlockBasedTheme = true }) { return /* @__PURE__ */ (0, import_jsx_runtime154.jsxs)(import_components73.__experimentalItemGroup, { className: "edit-site-sidebar-navigation-screen-main", children: [ isBlockBasedTheme && /* @__PURE__ */ (0, import_jsx_runtime154.jsxs)(import_jsx_runtime154.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime154.jsx)( SidebarNavigationItemGlobalStyles, { to: "/styles", uid: "global-styles-navigation-item", icon: styles_default, children: (0, import_i18n59.__)("Styles") } ), /* @__PURE__ */ (0, import_jsx_runtime154.jsx)( SidebarNavigationItem, { uid: "navigation-navigation-item", to: "/navigation", withChevron: true, icon: navigation_default, children: (0, import_i18n59.__)("Navigation") } ), /* @__PURE__ */ (0, import_jsx_runtime154.jsx)( SidebarNavigationItem, { uid: "page-navigation-item", to: "/page", withChevron: true, icon: page_default, children: (0, import_i18n59.__)("Pages") } ), /* @__PURE__ */ (0, import_jsx_runtime154.jsx)( SidebarNavigationItem, { uid: "template-navigation-item", to: "/template", withChevron: true, icon: layout_default, children: (0, import_i18n59.__)("Templates") } ) ] }), !isBlockBasedTheme && /* @__PURE__ */ (0, import_jsx_runtime154.jsx)( SidebarNavigationItem, { uid: "stylebook-navigation-item", to: "/stylebook", withChevron: true, icon: styles_default, children: (0, import_i18n59.__)("Styles") } ), /* @__PURE__ */ (0, import_jsx_runtime154.jsx)( SidebarNavigationItem, { uid: "patterns-navigation-item", to: "/pattern", withChevron: true, icon: symbol_default, children: (0, import_i18n59.__)("Patterns") } ) ] }); } function SidebarNavigationScreenMain({ customDescription }) { const isBlockBasedTheme = (0, import_data31.useSelect)( (select3) => select3(import_core_data25.store).getCurrentTheme()?.is_block_theme, [] ); let description; if (customDescription) { description = customDescription; } else if (isBlockBasedTheme) { description = (0, import_i18n59.__)( "Customize the appearance of your website using the block editor." ); } else { description = (0, import_i18n59.__)( "Explore block styles and patterns to refine your site." ); } return /* @__PURE__ */ (0, import_jsx_runtime154.jsx)( SidebarNavigationScreen, { isRoot: true, title: (0, import_i18n59.__)("Design"), description, content: /* @__PURE__ */ (0, import_jsx_runtime154.jsx)( MainSidebarNavigationContent, { isBlockBasedTheme } ) } ); } // packages/edit-site/build-module/components/sidebar-navigation-screen-unsupported/index.mjs var import_i18n60 = __toESM(require_i18n(), 1); var import_components74 = __toESM(require_components(), 1); var import_jsx_runtime155 = __toESM(require_jsx_runtime(), 1); function SidebarNavigationScreenUnsupported() { return /* @__PURE__ */ (0, import_jsx_runtime155.jsx)(import_components74.__experimentalSpacer, { padding: 3, children: /* @__PURE__ */ (0, import_jsx_runtime155.jsx)(import_components74.Notice, { status: "warning", isDismissible: false, children: (0, import_i18n60.__)( "The theme you are currently using does not support this screen." ) }) }); } // packages/edit-site/build-module/components/editor/index.mjs var import_data48 = __toESM(require_data(), 1); var import_components82 = __toESM(require_components(), 1); var import_compose10 = __toESM(require_compose(), 1); var import_editor20 = __toESM(require_editor(), 1); var import_i18n70 = __toESM(require_i18n(), 1); var import_core_data34 = __toESM(require_core_data(), 1); var import_block_library = __toESM(require_block_library(), 1); var import_element58 = __toESM(require_element(), 1); var import_notices3 = __toESM(require_notices(), 1); var import_router18 = __toESM(require_router(), 1); var import_html_entities4 = __toESM(require_html_entities(), 1); var import_block_editor18 = __toESM(require_block_editor(), 1); var import_url11 = __toESM(require_url(), 1); // packages/edit-site/build-module/components/welcome-guide/editor.mjs var import_data32 = __toESM(require_data(), 1); var import_components75 = __toESM(require_components(), 1); var import_i18n61 = __toESM(require_i18n(), 1); var import_element50 = __toESM(require_element(), 1); var import_preferences6 = __toESM(require_preferences(), 1); var import_core_data26 = __toESM(require_core_data(), 1); // packages/edit-site/build-module/components/welcome-guide/image.mjs var import_jsx_runtime156 = __toESM(require_jsx_runtime(), 1); function WelcomeGuideImage({ nonAnimatedSrc, animatedSrc }) { return /* @__PURE__ */ (0, import_jsx_runtime156.jsxs)("picture", { className: "edit-site-welcome-guide__image", children: [ /* @__PURE__ */ (0, import_jsx_runtime156.jsx)( "source", { srcSet: nonAnimatedSrc, media: "(prefers-reduced-motion: reduce)" } ), /* @__PURE__ */ (0, import_jsx_runtime156.jsx)("img", { src: animatedSrc, width: "312", height: "240", alt: "" }) ] }); } // packages/edit-site/build-module/components/welcome-guide/editor.mjs var import_jsx_runtime157 = __toESM(require_jsx_runtime(), 1); function WelcomeGuideEditor() { const { toggle } = (0, import_data32.useDispatch)(import_preferences6.store); const { isActive, isBlockBasedTheme } = (0, import_data32.useSelect)((select3) => { return { isActive: !!select3(import_preferences6.store).get( "core/edit-site", "welcomeGuide" ), isBlockBasedTheme: select3(import_core_data26.store).getCurrentTheme()?.is_block_theme }; }, []); if (!isActive || !isBlockBasedTheme) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime157.jsx)( import_components75.Guide, { className: "edit-site-welcome-guide guide-editor", contentLabel: (0, import_i18n61.__)("Welcome to the site editor"), finishButtonText: (0, import_i18n61.__)("Get started"), onFinish: () => toggle("core/edit-site", "welcomeGuide"), pages: [ { image: /* @__PURE__ */ (0, import_jsx_runtime157.jsx)( WelcomeGuideImage, { nonAnimatedSrc: "https://s.w.org/images/block-editor/edit-your-site.svg?1", animatedSrc: "https://s.w.org/images/block-editor/edit-your-site.gif?1" } ), content: /* @__PURE__ */ (0, import_jsx_runtime157.jsxs)(import_jsx_runtime157.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime157.jsx)("h1", { className: "edit-site-welcome-guide__heading", children: (0, import_i18n61.__)("Edit your site") }), /* @__PURE__ */ (0, import_jsx_runtime157.jsx)("p", { className: "edit-site-welcome-guide__text", children: (0, import_i18n61.__)( "Design everything on your site \u2014 from the header right down to the footer \u2014 using blocks." ) }), /* @__PURE__ */ (0, import_jsx_runtime157.jsx)("p", { className: "edit-site-welcome-guide__text", children: (0, import_element50.createInterpolateElement)( (0, import_i18n61.__)( "Click to start designing your blocks, and choose your typography, layout, and colors." ), { StylesIconImage: /* @__PURE__ */ (0, import_jsx_runtime157.jsx)( "img", { alt: (0, import_i18n61.__)("styles"), src: "data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 4c-4.4 0-8 3.6-8 8v.1c0 4.1 3.2 7.5 7.2 7.9h.8c4.4 0 8-3.6 8-8s-3.6-8-8-8zm0 15V5c3.9 0 7 3.1 7 7s-3.1 7-7 7z' fill='%231E1E1E'/%3E%3C/svg%3E%0A" } ) } ) }) ] }) } ] } ); } // packages/edit-site/build-module/components/welcome-guide/page.mjs var import_data33 = __toESM(require_data(), 1); var import_components76 = __toESM(require_components(), 1); var import_i18n62 = __toESM(require_i18n(), 1); var import_preferences7 = __toESM(require_preferences(), 1); var import_jsx_runtime158 = __toESM(require_jsx_runtime(), 1); function WelcomeGuidePage() { const { toggle } = (0, import_data33.useDispatch)(import_preferences7.store); const isVisible2 = (0, import_data33.useSelect)((select3) => { const isPageActive = !!select3(import_preferences7.store).get( "core/edit-site", "welcomeGuidePage" ); const isEditorActive = !!select3(import_preferences7.store).get( "core/edit-site", "welcomeGuide" ); return isPageActive && !isEditorActive; }, []); if (!isVisible2) { return null; } const heading = (0, import_i18n62.__)("Editing a page"); return /* @__PURE__ */ (0, import_jsx_runtime158.jsx)( import_components76.Guide, { className: "edit-site-welcome-guide guide-page", contentLabel: heading, finishButtonText: (0, import_i18n62.__)("Continue"), onFinish: () => toggle("core/edit-site", "welcomeGuidePage"), pages: [ { image: /* @__PURE__ */ (0, import_jsx_runtime158.jsx)( "video", { className: "edit-site-welcome-guide__video", autoPlay: true, loop: true, muted: true, width: "312", height: "240", children: /* @__PURE__ */ (0, import_jsx_runtime158.jsx)( "source", { src: "https://s.w.org/images/block-editor/editing-your-page.mp4", type: "video/mp4" } ) } ), content: /* @__PURE__ */ (0, import_jsx_runtime158.jsxs)(import_jsx_runtime158.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime158.jsx)("h1", { className: "edit-site-welcome-guide__heading", children: heading }), /* @__PURE__ */ (0, import_jsx_runtime158.jsx)("p", { className: "edit-site-welcome-guide__text", children: (0, import_i18n62.__)( // eslint-disable-next-line no-restricted-syntax -- 'sidebar' is a common web design term for layouts "It\u2019s now possible to edit page content in the site editor. To customise other parts of the page like the header and footer switch to editing the template using the settings sidebar." ) }) ] }) } ] } ); } // packages/edit-site/build-module/components/welcome-guide/template.mjs var import_data34 = __toESM(require_data(), 1); var import_components77 = __toESM(require_components(), 1); var import_i18n63 = __toESM(require_i18n(), 1); var import_preferences8 = __toESM(require_preferences(), 1); var import_editor9 = __toESM(require_editor(), 1); var import_jsx_runtime159 = __toESM(require_jsx_runtime(), 1); function WelcomeGuideTemplate() { const { toggle } = (0, import_data34.useDispatch)(import_preferences8.store); const { isActive, hasPreviousEntity } = (0, import_data34.useSelect)((select3) => { const { getEditorSettings } = select3(import_editor9.store); const { get } = select3(import_preferences8.store); return { isActive: get("core/edit-site", "welcomeGuideTemplate"), hasPreviousEntity: !!getEditorSettings().onNavigateToPreviousEntityRecord }; }, []); const isVisible2 = isActive && hasPreviousEntity; if (!isVisible2) { return null; } const heading = (0, import_i18n63.__)("Editing a template"); return /* @__PURE__ */ (0, import_jsx_runtime159.jsx)( import_components77.Guide, { className: "edit-site-welcome-guide guide-template", contentLabel: heading, finishButtonText: (0, import_i18n63.__)("Continue"), onFinish: () => toggle("core/edit-site", "welcomeGuideTemplate"), pages: [ { image: /* @__PURE__ */ (0, import_jsx_runtime159.jsx)( "video", { className: "edit-site-welcome-guide__video", autoPlay: true, loop: true, muted: true, width: "312", height: "240", children: /* @__PURE__ */ (0, import_jsx_runtime159.jsx)( "source", { src: "https://s.w.org/images/block-editor/editing-your-template.mp4", type: "video/mp4" } ) } ), content: /* @__PURE__ */ (0, import_jsx_runtime159.jsxs)(import_jsx_runtime159.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime159.jsx)("h1", { className: "edit-site-welcome-guide__heading", children: heading }), /* @__PURE__ */ (0, import_jsx_runtime159.jsx)("p", { className: "edit-site-welcome-guide__text", children: (0, import_i18n63.__)( "Note that the same template can be used by multiple pages, so any changes made here may affect other pages on the site. To switch back to editing the page content click the \u2018Back\u2019 button in the toolbar." ) }) ] }) } ] } ); } // packages/edit-site/build-module/components/welcome-guide/index.mjs var import_jsx_runtime160 = __toESM(require_jsx_runtime(), 1); function WelcomeGuide({ postType: postType2 }) { return /* @__PURE__ */ (0, import_jsx_runtime160.jsxs)(import_jsx_runtime160.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime160.jsx)(WelcomeGuideEditor, {}), postType2 === "page" && /* @__PURE__ */ (0, import_jsx_runtime160.jsx)(WelcomeGuidePage, {}), postType2 === "wp_template" && /* @__PURE__ */ (0, import_jsx_runtime160.jsx)(WelcomeGuideTemplate, {}) ] }); } // packages/edit-site/build-module/components/canvas-loader/index.mjs var import_components78 = __toESM(require_components(), 1); var import_core_data27 = __toESM(require_core_data(), 1); var import_data35 = __toESM(require_data(), 1); var import_editor11 = __toESM(require_editor(), 1); var import_jsx_runtime161 = __toESM(require_jsx_runtime(), 1); var { Theme } = unlock(import_components78.privateApis); var { useStyle: useStyle3 } = unlock(import_editor11.privateApis); function CanvasLoader({ id }) { const textColor = useStyle3("color.text"); const backgroundColor = useStyle3("color.background"); const { elapsed, total } = (0, import_data35.useSelect)((select3) => { const selectorsByStatus = select3(import_core_data27.store).countSelectorsByStatus(); const resolving = selectorsByStatus.resolving ?? 0; const finished = selectorsByStatus.finished ?? 0; return { elapsed: finished, total: finished + resolving }; }, []); return /* @__PURE__ */ (0, import_jsx_runtime161.jsx)("div", { className: "edit-site-canvas-loader", children: /* @__PURE__ */ (0, import_jsx_runtime161.jsx)(Theme, { accent: textColor, background: backgroundColor, children: /* @__PURE__ */ (0, import_jsx_runtime161.jsx)(import_components78.ProgressBar, { id, max: total, value: elapsed }) }) }); } // packages/edit-site/build-module/components/block-editor/use-site-editor-settings.mjs var import_data38 = __toESM(require_data(), 1); var import_element53 = __toESM(require_element(), 1); var import_router14 = __toESM(require_router(), 1); var import_compose9 = __toESM(require_compose(), 1); var import_editor14 = __toESM(require_editor(), 1); // packages/edit-site/build-module/components/block-editor/use-navigate-to-entity-record.mjs var import_data37 = __toESM(require_data(), 1); var import_router13 = __toESM(require_router(), 1); var import_element52 = __toESM(require_element(), 1); var import_url8 = __toESM(require_url(), 1); var import_core_data28 = __toESM(require_core_data(), 1); var import_editor13 = __toESM(require_editor(), 1); // packages/edit-site/build-module/components/block-editor/use-viewport-sync.mjs var import_element51 = __toESM(require_element(), 1); var import_data36 = __toESM(require_data(), 1); var import_router12 = __toESM(require_router(), 1); var import_editor12 = __toESM(require_editor(), 1); var { useLocation: useLocation11 } = unlock(import_router12.privateApis); var DEFAULT_DEVICE_TYPE = "Desktop"; var VALID_DEVICE_TYPES = ["desktop", "tablet", "mobile"]; var capitalize = (str) => str.charAt(0).toUpperCase() + str.slice(1); function useViewportSync() { const { query } = useLocation11(); const { setDeviceType } = (0, import_data36.useDispatch)(import_editor12.store); (0, import_element51.useEffect)(() => { const viewport = query?.viewport?.toLowerCase(); const isValid2 = VALID_DEVICE_TYPES.includes(viewport); setDeviceType(isValid2 ? capitalize(viewport) : DEFAULT_DEVICE_TYPE); }, [query?.viewport, setDeviceType]); } function ViewportSync() { useViewportSync(); return null; } // packages/edit-site/build-module/components/block-editor/use-navigate-to-entity-record.mjs var { useHistory: useHistory8, useLocation: useLocation12 } = unlock(import_router13.privateApis); var VALID_VIEWPORTS = ["desktop", "tablet", "mobile"]; function useNavigateToEntityRecord() { const history = useHistory8(); const location = useLocation12(); const { query, path } = location; const registry = (0, import_data37.useRegistry)(); const currentDeviceType = (0, import_data37.useSelect)( (select3) => select3(import_editor13.store).getDeviceType(), [] ); const onNavigateToEntityRecord = (0, import_element52.useCallback)( (params) => { const currentPostType = registry.select(import_editor13.store).getCurrentPostType(); const currentPostId = registry.select(import_editor13.store).getCurrentPostId(); const entityEdits = registry.select(import_core_data28.store).getEntityRecordEdits( "postType", currentPostType, currentPostId ); const externalClientId = entityEdits?.selection?.selectionStart?.clientId; const urlUpdates = { ...query }; if (externalClientId) { urlUpdates.selectedBlock = externalClientId; } const requestedViewport = typeof params.viewport === "string" ? params.viewport.toLowerCase() : void 0; const isValidRequestedViewport = VALID_VIEWPORTS.includes(requestedViewport); if (isValidRequestedViewport) { const currentViewportLower = (currentDeviceType || DEFAULT_DEVICE_TYPE).toLowerCase(); if (currentViewportLower === DEFAULT_DEVICE_TYPE.toLowerCase()) { delete urlUpdates.viewport; } else { urlUpdates.viewport = currentViewportLower; } } const hasUpdatesToSave = externalClientId || isValidRequestedViewport; if (hasUpdatesToSave) { history.navigate((0, import_url8.addQueryArgs)(path, urlUpdates), { replace: true }); } const queryArgs = { canvas: "edit", focusMode: true }; if (isValidRequestedViewport) { queryArgs.viewport = requestedViewport; } const url = (0, import_url8.addQueryArgs)( `/${params.postType}/${params.postId}`, queryArgs ); history.navigate(url); }, [history, path, query, registry, currentDeviceType] ); return onNavigateToEntityRecord; } // packages/edit-site/build-module/components/block-editor/use-site-editor-settings.mjs var { useLocation: useLocation13, useHistory: useHistory9 } = unlock(import_router14.privateApis); var { useGlobalStyles: useGlobalStyles2 } = unlock(import_editor14.privateApis); function useNavigateToPreviousEntityRecord() { const location = useLocation13(); const previousCanvas = (0, import_compose9.usePrevious)(location.query.canvas); const history = useHistory9(); const goBack = (0, import_element53.useMemo)(() => { const isFocusMode = location.query.focusMode || location?.params?.postId && FOCUSABLE_ENTITIES.includes(location?.params?.postType); const didComeFromEditorCanvas = previousCanvas === "edit"; const showBackButton = isFocusMode && didComeFromEditorCanvas; return showBackButton ? () => history.back() : void 0; }, [location, history, previousCanvas]); return goBack; } function useSpecificEditorSettings() { const { query } = useLocation13(); const { canvas = "view" } = query; const onNavigateToEntityRecord = useNavigateToEntityRecord(); const { merged: mergedConfig } = useGlobalStyles2(); const { settings: settings2, currentPostIsTrashed } = (0, import_data38.useSelect)((select3) => { const { getSettings: getSettings7 } = select3(store); const { getCurrentPostAttribute } = select3(import_editor14.store); return { settings: getSettings7(), currentPostIsTrashed: getCurrentPostAttribute("status") === "trash" }; }, []); const onNavigateToPreviousEntityRecord = useNavigateToPreviousEntityRecord(); const [globalStyles, globalSettings] = (0, import_element53.useMemo)(() => { return generateGlobalStyles(mergedConfig, [], { disableRootPadding: false }); }, [mergedConfig]); const defaultEditorSettings = (0, import_element53.useMemo)(() => { const nonGlobalStyles = (settings2?.styles ?? []).filter( (style) => !style.isGlobalStyles ); return { ...settings2, styles: [ ...nonGlobalStyles, ...globalStyles, { // Forming a "block formatting context" to prevent margin collapsing. // @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context css: canvas === "view" ? `body{min-height: 100vh; ${currentPostIsTrashed ? "" : "cursor: pointer;"}}` : void 0 } ], __experimentalFeatures: globalSettings, richEditingEnabled: true, supportsTemplateMode: true, focusMode: canvas !== "view", onNavigateToEntityRecord, onNavigateToPreviousEntityRecord, isPreviewMode: canvas === "view" }; }, [ settings2, globalStyles, globalSettings, canvas, currentPostIsTrashed, onNavigateToEntityRecord, onNavigateToPreviousEntityRecord ]); return defaultEditorSettings; } // packages/edit-site/build-module/components/plugin-template-setting-panel/index.mjs var import_editor15 = __toESM(require_editor(), 1); var import_data39 = __toESM(require_data(), 1); var import_components79 = __toESM(require_components(), 1); var import_deprecated3 = __toESM(require_deprecated(), 1); var import_jsx_runtime162 = __toESM(require_jsx_runtime(), 1); var { Fill, Slot } = (0, import_components79.createSlotFill)("PluginTemplateSettingPanel"); var PluginTemplateSettingPanel = ({ children }) => { (0, import_deprecated3.default)("wp.editSite.PluginTemplateSettingPanel", { since: "6.6", version: "6.8", alternative: "wp.editor.PluginDocumentSettingPanel" }); const isCurrentEntityTemplate = (0, import_data39.useSelect)( (select3) => select3(import_editor15.store).getCurrentPostType() === "wp_template", [] ); if (!isCurrentEntityTemplate) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime162.jsx)(Fill, { children }); }; PluginTemplateSettingPanel.Slot = Slot; var plugin_template_setting_panel_default = PluginTemplateSettingPanel; // packages/edit-site/build-module/components/more-menu/index.mjs var import_editor16 = __toESM(require_editor(), 1); // packages/edit-site/build-module/components/more-menu/site-export.mjs var import_i18n64 = __toESM(require_i18n(), 1); var import_components80 = __toESM(require_components(), 1); var import_api_fetch3 = __toESM(require_api_fetch(), 1); var import_data40 = __toESM(require_data(), 1); var import_blob = __toESM(require_blob(), 1); var import_core_data29 = __toESM(require_core_data(), 1); var import_notices2 = __toESM(require_notices(), 1); var import_jsx_runtime163 = __toESM(require_jsx_runtime(), 1); function SiteExport() { const canExport = (0, import_data40.useSelect)((select3) => { const targetHints = select3(import_core_data29.store).getCurrentTheme()?._links?.["wp:export-theme"]?.[0]?.targetHints ?? {}; return !!targetHints.allow?.includes("GET"); }, []); const { createErrorNotice } = (0, import_data40.useDispatch)(import_notices2.store); if (!canExport) { return null; } async function handleExport() { try { const response = await (0, import_api_fetch3.default)({ path: "/wp-block-editor/v1/export", parse: false, headers: { Accept: "application/zip" } }); const blob = await response.blob(); const contentDisposition = response.headers.get( "content-disposition" ); const contentDispositionMatches = contentDisposition.match(/=(.+)\.zip/); const fileName = contentDispositionMatches[1] ? contentDispositionMatches[1] : "edit-site-export"; (0, import_blob.downloadBlob)(fileName + ".zip", blob, "application/zip"); } catch (errorResponse) { let error = {}; try { error = await errorResponse.json(); } catch (e2) { } const errorMessage = error.message && error.code !== "unknown_error" ? error.message : (0, import_i18n64.__)("An error occurred while creating the site export."); createErrorNotice(errorMessage, { type: "snackbar" }); } } return /* @__PURE__ */ (0, import_jsx_runtime163.jsx)( import_components80.MenuItem, { role: "menuitem", icon: download_default, onClick: handleExport, info: (0, import_i18n64.__)( "Download your theme with updated templates and styles." ), children: (0, import_i18n64._x)("Export", "site exporter menu item") } ); } // packages/edit-site/build-module/components/more-menu/welcome-guide-menu-item.mjs var import_i18n65 = __toESM(require_i18n(), 1); var import_data41 = __toESM(require_data(), 1); var import_components81 = __toESM(require_components(), 1); var import_preferences9 = __toESM(require_preferences(), 1); var import_jsx_runtime164 = __toESM(require_jsx_runtime(), 1); function WelcomeGuideMenuItem() { const { toggle } = (0, import_data41.useDispatch)(import_preferences9.store); return /* @__PURE__ */ (0, import_jsx_runtime164.jsx)(import_components81.MenuItem, { onClick: () => toggle("core/edit-site", "welcomeGuide"), children: (0, import_i18n65.__)("Welcome Guide") }); } // packages/edit-site/build-module/components/more-menu/index.mjs var import_jsx_runtime165 = __toESM(require_jsx_runtime(), 1); var { ToolsMoreMenuGroup, PreferencesModal } = unlock(import_editor16.privateApis); function MoreMenu() { return /* @__PURE__ */ (0, import_jsx_runtime165.jsxs)(import_jsx_runtime165.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime165.jsxs)(ToolsMoreMenuGroup, { children: [ /* @__PURE__ */ (0, import_jsx_runtime165.jsx)(SiteExport, {}), /* @__PURE__ */ (0, import_jsx_runtime165.jsx)(WelcomeGuideMenuItem, {}) ] }), /* @__PURE__ */ (0, import_jsx_runtime165.jsx)(PreferencesModal, {}) ] }); } // packages/edit-site/build-module/components/block-editor/use-editor-iframe-props.mjs var import_data42 = __toESM(require_data(), 1); var import_keycodes5 = __toESM(require_keycodes(), 1); var import_element54 = __toESM(require_element(), 1); var import_i18n66 = __toESM(require_i18n(), 1); var import_editor17 = __toESM(require_editor(), 1); var import_router15 = __toESM(require_router(), 1); var import_url9 = __toESM(require_url(), 1); var { useLocation: useLocation14, useHistory: useHistory10 } = unlock(import_router15.privateApis); function useEditorIframeProps() { const { query, path } = useLocation14(); const history = useHistory10(); const { canvas = "view" } = query; const currentPostIsTrashed = (0, import_data42.useSelect)((select3) => { return select3(import_editor17.store).getCurrentPostAttribute("status") === "trash"; }, []); const [isFocused, setIsFocused] = (0, import_element54.useState)(false); (0, import_element54.useEffect)(() => { if (canvas === "edit") { setIsFocused(false); } }, [canvas]); const viewModeIframeProps = { "aria-label": (0, import_i18n66.__)("Edit"), "aria-disabled": currentPostIsTrashed, title: null, role: "button", tabIndex: 0, onFocus: () => setIsFocused(true), onBlur: () => setIsFocused(false), onKeyDown: (event) => { const { keyCode } = event; if ((keyCode === import_keycodes5.ENTER || keyCode === import_keycodes5.SPACE) && !currentPostIsTrashed) { event.preventDefault(); history.navigate((0, import_url9.addQueryArgs)(path, { canvas: "edit" }), { transition: "canvas-mode-edit-transition" }); } }, onClick: () => history.navigate((0, import_url9.addQueryArgs)(path, { canvas: "edit" }), { transition: "canvas-mode-edit-transition" }), onClickCapture: (event) => { if (currentPostIsTrashed) { event.preventDefault(); event.stopPropagation(); } }, readonly: true }; return { className: clsx_default("edit-site-visual-editor__editor-canvas", { "is-focused": isFocused && canvas === "view" }), ...canvas === "view" ? viewModeIframeProps : {} }; } // packages/edit-site/build-module/components/editor/use-editor-title.mjs var import_i18n68 = __toESM(require_i18n(), 1); var import_data44 = __toESM(require_data(), 1); var import_core_data31 = __toESM(require_core_data(), 1); var import_html_entities3 = __toESM(require_html_entities(), 1); var import_editor18 = __toESM(require_editor(), 1); // packages/edit-site/build-module/components/routes/use-title.mjs var import_element55 = __toESM(require_element(), 1); var import_data43 = __toESM(require_data(), 1); var import_core_data30 = __toESM(require_core_data(), 1); var import_i18n67 = __toESM(require_i18n(), 1); var import_a11y3 = __toESM(require_a11y(), 1); var import_html_entities2 = __toESM(require_html_entities(), 1); var import_router16 = __toESM(require_router(), 1); var { useLocation: useLocation15 } = unlock(import_router16.privateApis); function useTitle(title) { const location = useLocation15(); const siteTitle = (0, import_data43.useSelect)( (select3) => select3(import_core_data30.store).getEntityRecord("root", "site")?.title, [] ); const isInitialLocationRef = (0, import_element55.useRef)(true); (0, import_element55.useEffect)(() => { isInitialLocationRef.current = false; }, [location]); (0, import_element55.useEffect)(() => { if (isInitialLocationRef.current) { return; } if (title && siteTitle) { const formattedTitle = (0, import_i18n67.sprintf)( /* translators: Admin document title. 1: Admin screen name, 2: Network or site name. */ (0, import_i18n67.__)("%1$s \u2039 %2$s \u2039 Editor \u2014 WordPress"), (0, import_html_entities2.decodeEntities)(title), (0, import_html_entities2.decodeEntities)(siteTitle) ); document.title = formattedTitle; (0, import_a11y3.speak)(title, "assertive"); } }, [title, siteTitle, location]); } // packages/edit-site/build-module/components/editor/use-editor-title.mjs var { getTemplateInfo } = unlock(import_editor18.privateApis); function useEditorTitle(postType2, postId) { const { title, isLoaded } = (0, import_data44.useSelect)( (select3) => { const { getEditedEntityRecord, getCurrentTheme, hasFinishedResolution } = select3(import_core_data31.store); if (!postId) { return { isLoaded: false }; } const _record = getEditedEntityRecord( "postType", postType2, postId ); const { default_template_types: templateTypes = [] } = getCurrentTheme() ?? {}; const templateInfo = getTemplateInfo({ template: _record, templateTypes }); const _isLoaded = hasFinishedResolution("getEditedEntityRecord", [ "postType", postType2, postId ]); return { title: templateInfo.title, isLoaded: _isLoaded }; }, [postType2, postId] ); let editorTitle; if (isLoaded) { editorTitle = (0, import_i18n68.sprintf)( // translators: A breadcrumb trail for the Admin document title. 1: title of template being edited, 2: type of template (Template or Template Part). (0, import_i18n68._x)("%1$s \u2039 %2$s", "breadcrumb trail"), (0, import_html_entities3.decodeEntities)(title), POST_TYPE_LABELS[postType2] ?? POST_TYPE_LABELS[TEMPLATE_POST_TYPE] ); } useTitle(isLoaded && editorTitle); } var use_editor_title_default = useEditorTitle; // packages/edit-site/build-module/components/editor/use-adapt-editor-to-canvas.mjs var import_data45 = __toESM(require_data(), 1); var import_block_editor17 = __toESM(require_block_editor(), 1); var import_editor19 = __toESM(require_editor(), 1); var import_element56 = __toESM(require_element(), 1); var import_preferences10 = __toESM(require_preferences(), 1); function useAdaptEditorToCanvas(canvas) { const { clearSelectedBlock } = (0, import_data45.useDispatch)(import_block_editor17.store); const { editPost, setDeviceType, closePublishSidebar, setIsListViewOpened: setIsListViewOpened2, setIsInserterOpened: setIsInserterOpened2 } = (0, import_data45.useDispatch)(import_editor19.store); const { get: getPreference } = (0, import_data45.useSelect)(import_preferences10.store); const { getCurrentPost } = (0, import_data45.useSelect)(import_editor19.store); const registry = (0, import_data45.useRegistry)(); (0, import_element56.useLayoutEffect)(() => { const isMediumOrBigger = window.matchMedia("(min-width: 782px)").matches; registry.batch(() => { clearSelectedBlock(); if (getCurrentPost()?.type) { editPost({ selection: void 0 }, { undoIgnore: true }); } setDeviceType(DEFAULT_DEVICE_TYPE); closePublishSidebar(); setIsInserterOpened2(false); if (isMediumOrBigger && canvas === "edit" && getPreference("core", "showListViewByDefault") && !getPreference("core", "distractionFree")) { setIsListViewOpened2(true); } else { setIsListViewOpened2(false); } }); }, [ canvas, registry, clearSelectedBlock, editPost, setDeviceType, closePublishSidebar, setIsInserterOpened2, setIsListViewOpened2, getPreference, getCurrentPost ]); } // packages/edit-site/build-module/components/editor/use-resolve-edited-entity.mjs var import_element57 = __toESM(require_element(), 1); var import_data46 = __toESM(require_data(), 1); var import_core_data32 = __toESM(require_core_data(), 1); var import_router17 = __toESM(require_router(), 1); var { useLocation: useLocation16 } = unlock(import_router17.privateApis); var postTypesWithoutParentTemplate = [ ATTACHMENT_POST_TYPE, TEMPLATE_POST_TYPE, TEMPLATE_PART_POST_TYPE, NAVIGATION_POST_TYPE, PATTERN_TYPES.user ]; var authorizedPostTypes = ["page", "post"]; function getPostType(name2) { let postType2; if (name2 === "navigation-item") { postType2 = NAVIGATION_POST_TYPE; } else if (name2 === "pattern-item") { postType2 = PATTERN_TYPES.user; } else if (name2 === "template-part-item") { postType2 = TEMPLATE_PART_POST_TYPE; } else if (name2 === "templates") { postType2 = TEMPLATE_POST_TYPE; } else if (name2 === "template-item") { postType2 = TEMPLATE_POST_TYPE; } else if (name2 === "page-item" || name2 === "pages") { postType2 = "page"; } else if (name2 === "post-item" || name2 === "posts") { postType2 = "post"; } else if (name2 === "attachment-item") { postType2 = ATTACHMENT_POST_TYPE; } return postType2; } function useResolveEditedEntity() { const { editEntityRecord } = (0, import_data46.useDispatch)(import_core_data32.store); const { hasEntityRecord } = (0, import_data46.useSelect)(import_core_data32.store); const { name: name2, params = {}, query } = useLocation16(); const { postId = query?.postId } = params; const postType2 = getPostType(name2, postId) ?? query?.postType; const { selectedBlock } = query; const appliedSelectionRef = (0, import_element57.useRef)(null); const homePage = (0, import_data46.useSelect)((select3) => { const { getHomePage } = unlock(select3(import_core_data32.store)); return getHomePage(); }, []); const resolvedTemplateId = (0, import_data46.useSelect)( (select3) => { if (postTypesWithoutParentTemplate.includes(postType2) && postId) { return; } if (postId && postId.includes(",")) { return; } const { getTemplateId } = unlock(select3(import_core_data32.store)); if (postType2 && postId && authorizedPostTypes.includes(postType2)) { return getTemplateId(postType2, postId); } if (homePage?.postType === "page") { return getTemplateId("page", homePage?.postId); } if (homePage?.postType === "wp_template") { return homePage?.postId; } }, [homePage, postId, postType2] ); const context = (0, import_element57.useMemo)(() => { if (postTypesWithoutParentTemplate.includes(postType2) && postId) { return {}; } if (postType2 && postId && authorizedPostTypes.includes(postType2)) { return { postType: postType2, postId }; } if (homePage?.postType === "page") { return { postType: "page", postId: homePage?.postId }; } return {}; }, [homePage, postType2, postId]); let entity; if (postTypesWithoutParentTemplate.includes(postType2) && postId) { entity = { isReady: true, postType: postType2, postId, context }; } else if (!!homePage) { entity = { isReady: resolvedTemplateId !== void 0, postType: TEMPLATE_POST_TYPE, postId: resolvedTemplateId, context }; } else { entity = { isReady: false }; } if (selectedBlock && entity.isReady && appliedSelectionRef.current !== selectedBlock) { const selectionPostType = entity.context?.postId ? entity.context.postType : entity.postType; const selectionPostId = entity.context?.postId ? entity.context.postId : entity.postId; if (hasEntityRecord("postType", selectionPostType, selectionPostId)) { editEntityRecord( "postType", selectionPostType, selectionPostId, { selection: { selectionStart: { clientId: selectedBlock }, selectionEnd: { clientId: selectedBlock } } }, { undoIgnore: true } ); appliedSelectionRef.current = selectedBlock; } } return entity; } function useSyncDeprecatedEntityIntoState({ postType: postType2, postId, context, isReady }) { const { setEditedEntity: setEditedEntity2 } = (0, import_data46.useDispatch)(store); (0, import_element57.useEffect)(() => { if (isReady) { setEditedEntity2(postType2, String(postId), context); } }, [isReady, postType2, postId, context, setEditedEntity2]); } // packages/edit-site/build-module/components/editor/site-preview.mjs var import_i18n69 = __toESM(require_i18n(), 1); var import_data47 = __toESM(require_data(), 1); var import_core_data33 = __toESM(require_core_data(), 1); var import_dom2 = __toESM(require_dom(), 1); var import_url10 = __toESM(require_url(), 1); var import_jsx_runtime166 = __toESM(require_jsx_runtime(), 1); function SitePreview() { const siteUrl = (0, import_data47.useSelect)((select3) => { const { getEntityRecord } = select3(import_core_data33.store); const siteData = getEntityRecord("root", "__unstableBase"); return siteData?.home; }, []); return /* @__PURE__ */ (0, import_jsx_runtime166.jsx)( "iframe", { src: (0, import_url10.addQueryArgs)(siteUrl, { // Parameter for hiding the admin bar. wp_site_preview: 1 }), title: (0, import_i18n69.__)("Site Preview"), style: { display: "block", width: "100%", height: "100%", backgroundColor: "#fff" }, onLoad: (event) => { const document2 = event.target.contentDocument; const focusableElements = import_dom2.focus.focusable.find(document2); focusableElements.forEach((element) => { element.style.pointerEvents = "none"; element.tabIndex = -1; element.setAttribute("aria-hidden", "true"); }); } } ); } // packages/edit-site/build-module/components/editor/index.mjs var import_jsx_runtime167 = __toESM(require_jsx_runtime(), 1); var { Editor, BackButton } = unlock(import_editor20.privateApis); var { useHistory: useHistory11, useLocation: useLocation17 } = unlock(import_router18.privateApis); var { BlockKeyboardShortcuts } = unlock(import_block_library.privateApis); var toggleHomeIconVariants = { edit: { opacity: 0, scale: 0.2 }, hover: { opacity: 1, scale: 1, clipPath: "inset( 22% round 2px )" } }; var siteIconVariants = { edit: { clipPath: "inset(0% round 0px)" }, hover: { clipPath: "inset( 22% round 2px )" }, tap: { clipPath: "inset(0% round 0px)" } }; function getListPathForPostType(postType2) { switch (postType2) { case "navigation": return "/navigation"; case "wp_block": return "/pattern?postType=wp_block"; case "wp_template_part": return "/pattern?postType=wp_template_part"; case "wp_template": return "/template"; case "page": return "/page"; case "post": return "/"; } throw "Unknown post type"; } function getNavigationPath(location, postType2) { const { path, name: name2 } = location; if ([ "pattern-item", "template-part-item", "page-item", "template-item", "static-template-item", "post-item" ].includes(name2)) { return getListPathForPostType(postType2); } return (0, import_url11.addQueryArgs)(path, { canvas: void 0 }); } function EditSiteEditor({ isHomeRoute = false }) { const disableMotion = (0, import_compose10.useReducedMotion)(); const location = useLocation17(); const history = useHistory11(); const { canvas = "view" } = location.query; const isLoading = useIsSiteEditorLoading(); useAdaptEditorToCanvas(canvas); const entity = useResolveEditedEntity(); useSyncDeprecatedEntityIntoState(entity); const { postType: postType2, postId, context } = entity; const { isBlockBasedTheme, hasSiteIcon } = (0, import_data48.useSelect)((select3) => { const { getCurrentTheme, getEntityRecord } = select3(import_core_data34.store); const siteData = getEntityRecord("root", "__unstableBase", void 0); return { isBlockBasedTheme: getCurrentTheme()?.is_block_theme, hasSiteIcon: !!siteData?.site_icon_url }; }, []); const postWithTemplate = !!context?.postId; use_editor_title_default( postWithTemplate ? context.postType : postType2, postWithTemplate ? context.postId : postId ); const _isPreviewingTheme = isPreviewingTheme(); const iframeProps = useEditorIframeProps(); const isEditMode = canvas === "edit"; const loadingProgressId = (0, import_compose10.useInstanceId)( CanvasLoader, "edit-site-editor__loading-progress" ); const editorSettings = useSpecificEditorSettings(); const { resetZoomLevel } = unlock((0, import_data48.useDispatch)(import_block_editor18.store)); const { setCurrentRevisionId } = unlock((0, import_data48.useDispatch)(import_editor20.store)); const { createSuccessNotice } = (0, import_data48.useDispatch)(import_notices3.store); const onActionPerformed = (0, import_element58.useCallback)( (actionId, items) => { switch (actionId) { case "move-to-trash": case "delete-post": { history.navigate( getListPathForPostType( postWithTemplate ? context.postType : postType2 ) ); } break; case "duplicate-post": { const newItem = items[0]; const _title = typeof newItem.title === "string" ? newItem.title : newItem.title?.rendered; createSuccessNotice( (0, import_i18n70.sprintf)( // translators: %s: Title of the created post or template, e.g: "Hello world". (0, import_i18n70.__)('"%s" successfully created.'), (0, import_html_entities4.decodeEntities)(_title) || (0, import_i18n70.__)("(no title)") ), { type: "snackbar", id: "duplicate-post-action", actions: [ { label: (0, import_i18n70.__)("Edit"), onClick: () => { history.navigate( `/${newItem.type}/${newItem.id}?canvas=edit` ); } } ] } ); } break; } }, [ postType2, context?.postType, postWithTemplate, history, createSuccessNotice ] ); const isReady = !isLoading; const transition = { duration: disableMotion ? 0 : 0.2 }; return !isBlockBasedTheme && isHomeRoute ? /* @__PURE__ */ (0, import_jsx_runtime167.jsx)(SitePreview, {}) : /* @__PURE__ */ (0, import_jsx_runtime167.jsxs)(import_jsx_runtime167.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime167.jsx)(import_editor20.EditorKeyboardShortcutsRegister, {}), isEditMode && /* @__PURE__ */ (0, import_jsx_runtime167.jsx)(BlockKeyboardShortcuts, {}), !isReady ? /* @__PURE__ */ (0, import_jsx_runtime167.jsx)(CanvasLoader, { id: loadingProgressId }) : null, isEditMode && isReady && /* @__PURE__ */ (0, import_jsx_runtime167.jsx)( WelcomeGuide, { postType: postWithTemplate ? context.postType : postType2 } ), isReady && /* @__PURE__ */ (0, import_jsx_runtime167.jsxs)( Editor, { postType: postWithTemplate ? context.postType : postType2, postId: postWithTemplate ? context.postId : postId, templateId: postWithTemplate ? postId : void 0, settings: editorSettings, className: "edit-site-editor__editor-interface", customSaveButton: _isPreviewingTheme && /* @__PURE__ */ (0, import_jsx_runtime167.jsx)(SaveButton, { size: "compact" }), customSavePanel: _isPreviewingTheme && /* @__PURE__ */ (0, import_jsx_runtime167.jsx)(SavePanel, {}), iframeProps, onActionPerformed, extraSidebarPanels: !postWithTemplate && /* @__PURE__ */ (0, import_jsx_runtime167.jsx)(plugin_template_setting_panel_default.Slot, {}), children: [ isEditMode && /* @__PURE__ */ (0, import_jsx_runtime167.jsx)(ViewportSync, {}), isEditMode && /* @__PURE__ */ (0, import_jsx_runtime167.jsx)(BackButton, { children: ({ length }) => length <= 1 && /* @__PURE__ */ (0, import_jsx_runtime167.jsxs)( import_components82.__unstableMotion.div, { className: "edit-site-editor__view-mode-toggle", transition, animate: "edit", initial: "edit", whileHover: "hover", whileTap: "tap", children: [ /* @__PURE__ */ (0, import_jsx_runtime167.jsx)( import_components82.Button, { __next40pxDefaultSize: true, label: (0, import_i18n70.__)("Open Navigation"), showTooltip: true, tooltipPosition: "middle right", onClick: () => { resetZoomLevel(); setCurrentRevisionId(null); history.navigate( getNavigationPath( location, postWithTemplate ? context.postType : postType2 ), { transition: "canvas-mode-view-transition" } ); }, children: /* @__PURE__ */ (0, import_jsx_runtime167.jsx)( import_components82.__unstableMotion.div, { variants: siteIconVariants, children: /* @__PURE__ */ (0, import_jsx_runtime167.jsx)(site_icon_default, { className: "edit-site-editor__view-mode-toggle-icon" }) } ) } ), /* @__PURE__ */ (0, import_jsx_runtime167.jsx)( import_components82.__unstableMotion.div, { className: clsx_default( "edit-site-editor__back-icon", { "has-site-icon": hasSiteIcon } ), variants: toggleHomeIconVariants, children: /* @__PURE__ */ (0, import_jsx_runtime167.jsx)(icon_default, { icon: arrow_up_left_default }) } ) ] } ) }), /* @__PURE__ */ (0, import_jsx_runtime167.jsx)(MoreMenu, {}) ] } ) ] }); } // packages/edit-site/build-module/components/site-editor-routes/utils.mjs function isClassicThemeWithStyleBookSupport(siteData) { const isBlockTheme = siteData.currentTheme?.is_block_theme; const supportsEditorStyles = siteData.currentTheme?.theme_supports["editor-styles"]; const hasThemeJson = siteData.editorSettings?.supportsLayout; return !isBlockTheme && (supportsEditorStyles || hasThemeJson); } // packages/edit-site/build-module/components/site-editor-routes/home.mjs var import_jsx_runtime168 = __toESM(require_jsx_runtime(), 1); var homeRoute = { name: "home", path: "/", areas: { sidebar({ siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; return isBlockTheme || isClassicThemeWithStyleBookSupport(siteData) ? /* @__PURE__ */ (0, import_jsx_runtime168.jsx)(SidebarNavigationScreenMain, {}) : /* @__PURE__ */ (0, import_jsx_runtime168.jsx)(SidebarNavigationScreenUnsupported, {}); }, preview({ siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; return isBlockTheme || isClassicThemeWithStyleBookSupport(siteData) ? /* @__PURE__ */ (0, import_jsx_runtime168.jsx)(EditSiteEditor, { isHomeRoute: true }) : void 0; }, mobile({ siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; return isBlockTheme || isClassicThemeWithStyleBookSupport(siteData) ? /* @__PURE__ */ (0, import_jsx_runtime168.jsx)(SidebarNavigationScreenMain, {}) : /* @__PURE__ */ (0, import_jsx_runtime168.jsx)(SidebarNavigationScreenUnsupported, {}); } } }; // packages/edit-site/build-module/components/site-editor-routes/styles.mjs var import_router20 = __toESM(require_router(), 1); var import_editor23 = __toESM(require_editor(), 1); var import_url13 = __toESM(require_url(), 1); // packages/edit-site/build-module/components/sidebar-global-styles/index.mjs var import_i18n71 = __toESM(require_i18n(), 1); var import_element59 = __toESM(require_element(), 1); var import_router19 = __toESM(require_router(), 1); var import_editor22 = __toESM(require_editor(), 1); var import_compose11 = __toESM(require_compose(), 1); var import_components83 = __toESM(require_components(), 1); var import_url12 = __toESM(require_url(), 1); var import_jsx_runtime169 = __toESM(require_jsx_runtime(), 1); var { GlobalStylesUIWrapper, GlobalStylesActionMenu } = unlock(import_editor22.privateApis); var { useLocation: useLocation18, useHistory: useHistory12 } = unlock(import_router19.privateApis); var GlobalStylesPageActions = ({ isStyleBookOpened, setIsStyleBookOpened, path, onChangeSection }) => { const history = useHistory12(); return /* @__PURE__ */ (0, import_jsx_runtime169.jsxs)(import_components83.__experimentalHStack, { children: [ /* @__PURE__ */ (0, import_jsx_runtime169.jsx)( import_components83.Button, { isPressed: isStyleBookOpened, icon: seen_default, label: (0, import_i18n71.__)("Style Book"), onClick: () => { setIsStyleBookOpened(!isStyleBookOpened); const updatedPath = !isStyleBookOpened ? (0, import_url12.addQueryArgs)(path, { preview: "stylebook" }) : (0, import_url12.removeQueryArgs)(path, "preview"); history.navigate(updatedPath); }, size: "compact" } ), /* @__PURE__ */ (0, import_jsx_runtime169.jsx)( GlobalStylesActionMenu, { hideWelcomeGuide: true, onChangePath: onChangeSection } ) ] }); }; var useSection = () => { const { path, query } = useLocation18(); const history = useHistory12(); return (0, import_element59.useMemo)(() => { return [ query.section ?? "/", (updatedSection) => { history.navigate( (0, import_url12.addQueryArgs)(path, { section: updatedSection }) ); } ]; }, [path, query.section, history]); }; function SidebarGlobalStyles() { const { path } = useLocation18(); const [isStyleBookOpened, setIsStyleBookOpened] = (0, import_element59.useState)( path.includes("preview=stylebook") ); const isMobileViewport = (0, import_compose11.useViewportMatch)("medium", "<"); const [section, onChangeSection] = useSection(); return /* @__PURE__ */ (0, import_jsx_runtime169.jsx)( page_default2, { actions: !isMobileViewport ? /* @__PURE__ */ (0, import_jsx_runtime169.jsx)( GlobalStylesPageActions, { isStyleBookOpened, setIsStyleBookOpened, path, onChangeSection } ) : null, className: "edit-site-styles", title: (0, import_i18n71.__)("Styles"), headingLevel: 2, children: /* @__PURE__ */ (0, import_jsx_runtime169.jsx)( GlobalStylesUIWrapper, { path: section, onPathChange: onChangeSection } ) } ); } // packages/edit-site/build-module/components/site-editor-routes/styles.mjs var import_jsx_runtime170 = __toESM(require_jsx_runtime(), 1); var { useLocation: useLocation19, useHistory: useHistory13 } = unlock(import_router20.privateApis); var { StyleBookPreview } = unlock(import_editor23.privateApis); function MobileGlobalStylesUI() { const { query = {} } = useLocation19(); const { canvas } = query; if (canvas === "edit") { return /* @__PURE__ */ (0, import_jsx_runtime170.jsx)(EditSiteEditor, {}); } return /* @__PURE__ */ (0, import_jsx_runtime170.jsx)(SidebarGlobalStyles, {}); } function StylesPreviewArea() { const { path, query } = useLocation19(); const history = useHistory13(); const isStylebook = query.preview === "stylebook"; const section = query.section ?? "/"; const onChangeSection = (updatedSection) => { history.navigate( (0, import_url13.addQueryArgs)(path, { section: updatedSection }) ); }; if (isStylebook) { return /* @__PURE__ */ (0, import_jsx_runtime170.jsx)( StyleBookPreview, { path: section, onPathChange: onChangeSection } ); } return /* @__PURE__ */ (0, import_jsx_runtime170.jsx)(EditSiteEditor, {}); } var stylesRoute = { name: "styles", path: "/styles", areas: { content: /* @__PURE__ */ (0, import_jsx_runtime170.jsx)(SidebarGlobalStyles, {}), sidebar: /* @__PURE__ */ (0, import_jsx_runtime170.jsx)(SidebarNavigationScreenGlobalStyles, { backPath: "/" }), preview: /* @__PURE__ */ (0, import_jsx_runtime170.jsx)(StylesPreviewArea, {}), mobile: /* @__PURE__ */ (0, import_jsx_runtime170.jsx)(MobileGlobalStylesUI, {}) }, widths: { content: 380 } }; // packages/edit-site/build-module/components/site-editor-routes/navigation.mjs var import_router25 = __toESM(require_router(), 1); // packages/edit-site/build-module/components/sidebar-navigation-screen-navigation-menus/index.mjs var import_i18n80 = __toESM(require_i18n(), 1); var import_core_data38 = __toESM(require_core_data(), 1); var import_data54 = __toESM(require_data(), 1); var import_html_entities8 = __toESM(require_html_entities(), 1); var import_components89 = __toESM(require_components(), 1); // packages/edit-site/build-module/components/sidebar-navigation-screen-navigation-menus/constants.mjs var PRELOADED_NAVIGATION_MENUS_QUERY = { per_page: 100, status: ["publish", "draft"], order: "desc", orderby: "date" }; // packages/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.mjs var import_i18n77 = __toESM(require_i18n(), 1); var import_html_entities6 = __toESM(require_html_entities(), 1); // packages/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.mjs var import_components86 = __toESM(require_components(), 1); var import_i18n74 = __toESM(require_i18n(), 1); var import_element61 = __toESM(require_element(), 1); var import_router21 = __toESM(require_router(), 1); // packages/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/rename-modal.mjs var import_components84 = __toESM(require_components(), 1); var import_i18n72 = __toESM(require_i18n(), 1); var import_element60 = __toESM(require_element(), 1); var import_jsx_runtime171 = __toESM(require_jsx_runtime(), 1); var notEmptyString = (testString) => testString?.trim()?.length > 0; function RenameModal({ menuTitle, onClose, onSave }) { const [editedMenuTitle, setEditedMenuTitle] = (0, import_element60.useState)(menuTitle); const titleHasChanged = editedMenuTitle !== menuTitle; const isEditedMenuTitleValid = titleHasChanged && notEmptyString(editedMenuTitle); return /* @__PURE__ */ (0, import_jsx_runtime171.jsx)( import_components84.Modal, { title: (0, import_i18n72.__)("Rename"), onRequestClose: onClose, focusOnMount: "firstContentElement", size: "small", children: /* @__PURE__ */ (0, import_jsx_runtime171.jsx)("form", { className: "sidebar-navigation__rename-modal-form", children: /* @__PURE__ */ (0, import_jsx_runtime171.jsxs)(import_components84.__experimentalVStack, { spacing: "3", children: [ /* @__PURE__ */ (0, import_jsx_runtime171.jsx)( import_components84.TextControl, { __next40pxDefaultSize: true, value: editedMenuTitle, placeholder: (0, import_i18n72.__)("Navigation title"), onChange: setEditedMenuTitle, label: (0, import_i18n72.__)("Name") } ), /* @__PURE__ */ (0, import_jsx_runtime171.jsxs)(import_components84.__experimentalHStack, { justify: "right", children: [ /* @__PURE__ */ (0, import_jsx_runtime171.jsx)( import_components84.Button, { __next40pxDefaultSize: true, variant: "tertiary", onClick: onClose, children: (0, import_i18n72.__)("Cancel") } ), /* @__PURE__ */ (0, import_jsx_runtime171.jsx)( import_components84.Button, { __next40pxDefaultSize: true, accessibleWhenDisabled: true, disabled: !isEditedMenuTitleValid, variant: "primary", type: "submit", onClick: (e2) => { e2.preventDefault(); if (!isEditedMenuTitleValid) { return; } onSave({ title: editedMenuTitle }); onClose(); }, children: (0, import_i18n72.__)("Save") } ) ] }) ] }) }) } ); } // packages/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/delete-confirm-dialog.mjs var import_components85 = __toESM(require_components(), 1); var import_i18n73 = __toESM(require_i18n(), 1); var import_jsx_runtime172 = __toESM(require_jsx_runtime(), 1); function DeleteConfirmDialog({ onClose, onConfirm }) { return /* @__PURE__ */ (0, import_jsx_runtime172.jsx)( import_components85.__experimentalConfirmDialog, { isOpen: true, onConfirm: () => { onConfirm(); onClose(); }, onCancel: onClose, confirmButtonText: (0, import_i18n73.__)("Delete"), size: "medium", children: (0, import_i18n73.__)("Are you sure you want to delete this Navigation Menu?") } ); } // packages/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.mjs var import_jsx_runtime173 = __toESM(require_jsx_runtime(), 1); var { useHistory: useHistory14 } = unlock(import_router21.privateApis); var POPOVER_PROPS = { position: "bottom right" }; function ScreenNavigationMoreMenu(props) { const { onDelete, onSave, onDuplicate, menuTitle, menuId } = props; const [renameModalOpen, setRenameModalOpen] = (0, import_element61.useState)(false); const [deleteConfirmDialogOpen, setDeleteConfirmDialogOpen] = (0, import_element61.useState)(false); const history = useHistory14(); const closeModals = () => { setRenameModalOpen(false); setDeleteConfirmDialogOpen(false); }; const openRenameModal = () => setRenameModalOpen(true); const openDeleteConfirmDialog = () => setDeleteConfirmDialogOpen(true); return /* @__PURE__ */ (0, import_jsx_runtime173.jsxs)(import_jsx_runtime173.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime173.jsx)( import_components86.DropdownMenu, { className: "sidebar-navigation__more-menu", label: (0, import_i18n74.__)("Actions"), icon: more_vertical_default, popoverProps: POPOVER_PROPS, children: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime173.jsxs)(import_components86.MenuGroup, { children: [ /* @__PURE__ */ (0, import_jsx_runtime173.jsx)( import_components86.MenuItem, { onClick: () => { openRenameModal(); onClose(); }, children: (0, import_i18n74.__)("Rename") } ), /* @__PURE__ */ (0, import_jsx_runtime173.jsx)( import_components86.MenuItem, { onClick: () => { history.navigate( `/wp_navigation/${menuId}?canvas=edit` ); }, children: (0, import_i18n74.__)("Edit") } ), /* @__PURE__ */ (0, import_jsx_runtime173.jsx)( import_components86.MenuItem, { onClick: () => { onDuplicate(); onClose(); }, children: (0, import_i18n74.__)("Duplicate") } ), /* @__PURE__ */ (0, import_jsx_runtime173.jsx)( import_components86.MenuItem, { isDestructive: true, onClick: () => { openDeleteConfirmDialog(); onClose(); }, children: (0, import_i18n74.__)("Delete") } ) ] }) } ), deleteConfirmDialogOpen && /* @__PURE__ */ (0, import_jsx_runtime173.jsx)( DeleteConfirmDialog, { onClose: closeModals, onConfirm: onDelete } ), renameModalOpen && /* @__PURE__ */ (0, import_jsx_runtime173.jsx)( RenameModal, { onClose: closeModals, menuTitle, onSave } ) ] }); } // packages/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/navigation-menu-editor.mjs var import_element64 = __toESM(require_element(), 1); var import_data51 = __toESM(require_data(), 1); var import_block_editor21 = __toESM(require_block_editor(), 1); var import_blocks10 = __toESM(require_blocks(), 1); // packages/edit-site/build-module/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.mjs var import_block_editor20 = __toESM(require_block_editor(), 1); var import_data50 = __toESM(require_data(), 1); var import_blocks9 = __toESM(require_blocks(), 1); var import_element63 = __toESM(require_element(), 1); var import_core_data35 = __toESM(require_core_data(), 1); // packages/edit-site/build-module/components/sidebar-navigation-screen-navigation-menus/leaf-more-menu.mjs var import_components87 = __toESM(require_components(), 1); var import_data49 = __toESM(require_data(), 1); var import_element62 = __toESM(require_element(), 1); var import_i18n75 = __toESM(require_i18n(), 1); var import_block_editor19 = __toESM(require_block_editor(), 1); var import_router22 = __toESM(require_router(), 1); var import_jsx_runtime174 = __toESM(require_jsx_runtime(), 1); var POPOVER_PROPS2 = { className: "block-editor-block-settings-menu__popover", placement: "bottom-start" }; var { useHistory: useHistory15, useLocation: useLocation20 } = unlock(import_router22.privateApis); function LeafMoreMenu(props) { const history = useHistory15(); const { path } = useLocation20(); const { block } = props; const { clientId } = block; const { moveBlocksDown, moveBlocksUp, removeBlocks } = (0, import_data49.useDispatch)(import_block_editor19.store); const removeLabel = (0, import_i18n75.sprintf)( /* translators: %s: block name */ (0, import_i18n75.__)("Remove %s"), (0, import_block_editor19.BlockTitle)({ clientId, maximumLength: 25 }) ); const goToLabel = (0, import_i18n75.sprintf)( /* translators: %s: block name */ (0, import_i18n75.__)("Go to %s"), (0, import_block_editor19.BlockTitle)({ clientId, maximumLength: 25 }) ); const rootClientId = (0, import_data49.useSelect)( (select3) => { const { getBlockRootClientId } = select3(import_block_editor19.store); return getBlockRootClientId(clientId); }, [clientId] ); const onGoToPage = (0, import_element62.useCallback)( (selectedBlock) => { const { attributes, name: name2 } = selectedBlock; if (attributes.kind === "post-type" && attributes.id && attributes.type && history) { history.navigate( `/${attributes.type}/${attributes.id}?canvas=edit`, { state: { backPath: path } } ); } if (name2 === "core/page-list-item" && attributes.id && history) { history.navigate(`/page/${attributes.id}?canvas=edit`, { state: { backPath: path } }); } }, [path, history] ); return /* @__PURE__ */ (0, import_jsx_runtime174.jsx)( import_components87.DropdownMenu, { icon: more_vertical_default, label: (0, import_i18n75.__)("Options"), className: "block-editor-block-settings-menu", popoverProps: POPOVER_PROPS2, noIcons: true, ...props, children: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime174.jsxs)(import_jsx_runtime174.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime174.jsxs)(import_components87.MenuGroup, { children: [ /* @__PURE__ */ (0, import_jsx_runtime174.jsx)( import_components87.MenuItem, { icon: chevron_up_default, onClick: () => { moveBlocksUp([clientId], rootClientId); onClose(); }, children: (0, import_i18n75.__)("Move up") } ), /* @__PURE__ */ (0, import_jsx_runtime174.jsx)( import_components87.MenuItem, { icon: chevron_down_default, onClick: () => { moveBlocksDown([clientId], rootClientId); onClose(); }, children: (0, import_i18n75.__)("Move down") } ), block.attributes?.type === "page" && block.attributes?.id && /* @__PURE__ */ (0, import_jsx_runtime174.jsx)( import_components87.MenuItem, { onClick: () => { onGoToPage(block); onClose(); }, children: goToLabel } ) ] }), /* @__PURE__ */ (0, import_jsx_runtime174.jsx)(import_components87.MenuGroup, { children: /* @__PURE__ */ (0, import_jsx_runtime174.jsx)( import_components87.MenuItem, { onClick: () => { removeBlocks([clientId], false); onClose(); }, children: removeLabel } ) }) ] }) } ); } // packages/edit-site/build-module/components/sidebar-navigation-screen-navigation-menus/navigation-menu-content.mjs var import_jsx_runtime175 = __toESM(require_jsx_runtime(), 1); var { PrivateListView } = unlock(import_block_editor20.privateApis); var MAX_PAGE_COUNT = 100; var PAGES_QUERY = [ "postType", "page", { per_page: MAX_PAGE_COUNT, _fields: ["id", "link", "menu_order", "parent", "title", "type"], // TODO: When https://core.trac.wordpress.org/ticket/39037 REST API support for multiple orderby // values is resolved, update 'orderby' to [ 'menu_order', 'post_title' ] to provide a consistent // sort. orderby: "menu_order", order: "asc" } ]; function NavigationMenuContent({ rootClientId }) { const { listViewRootClientId, isLoading } = (0, import_data50.useSelect)( (select3) => { const { areInnerBlocksControlled, getBlockName, getBlockCount, getBlockOrder } = select3(import_block_editor20.store); const { isResolving } = select3(import_core_data35.store); const blockClientIds = getBlockOrder(rootClientId); const hasOnlyPageListBlock = blockClientIds.length === 1 && getBlockName(blockClientIds[0]) === "core/page-list"; const pageListHasBlocks = hasOnlyPageListBlock && getBlockCount(blockClientIds[0]) > 0; const isLoadingPages = isResolving( "getEntityRecords", PAGES_QUERY ); return { listViewRootClientId: pageListHasBlocks ? blockClientIds[0] : rootClientId, // This is a small hack to wait for the navigation block // to actually load its inner blocks. isLoading: !areInnerBlocksControlled(rootClientId) || isLoadingPages }; }, [rootClientId] ); const { replaceBlock, __unstableMarkNextChangeAsNotPersistent } = (0, import_data50.useDispatch)(import_block_editor20.store); const offCanvasOnselect = (0, import_element63.useCallback)( (block) => { if (block.name === "core/navigation-link" && !block.attributes.url) { __unstableMarkNextChangeAsNotPersistent(); replaceBlock( block.clientId, (0, import_blocks9.createBlock)("core/navigation-link", block.attributes) ); } }, [__unstableMarkNextChangeAsNotPersistent, replaceBlock] ); return /* @__PURE__ */ (0, import_jsx_runtime175.jsxs)(import_jsx_runtime175.Fragment, { children: [ !isLoading && /* @__PURE__ */ (0, import_jsx_runtime175.jsx)( PrivateListView, { rootClientId: listViewRootClientId, onSelect: offCanvasOnselect, blockSettingsMenu: LeafMoreMenu, showAppender: false, isExpanded: true } ), /* @__PURE__ */ (0, import_jsx_runtime175.jsx)("div", { className: "edit-site-sidebar-navigation-screen-navigation-menus__helper-block-editor", children: /* @__PURE__ */ (0, import_jsx_runtime175.jsx)(import_block_editor20.BlockList, {}) }) ] }); } // packages/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/navigation-menu-editor.mjs var import_jsx_runtime176 = __toESM(require_jsx_runtime(), 1); var noop2 = () => { }; function NavigationMenuEditor({ navigationMenuId }) { const { storedSettings } = (0, import_data51.useSelect)((select3) => { const { getSettings: getSettings7 } = unlock(select3(store)); return { storedSettings: getSettings7() }; }, []); const blocks = (0, import_element64.useMemo)(() => { if (!navigationMenuId) { return []; } return [(0, import_blocks10.createBlock)("core/navigation", { ref: navigationMenuId })]; }, [navigationMenuId]); if (!navigationMenuId || !blocks?.length) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime176.jsx)( import_block_editor21.BlockEditorProvider, { settings: storedSettings, value: blocks, onChange: noop2, onInput: noop2, children: /* @__PURE__ */ (0, import_jsx_runtime176.jsx)("div", { className: "edit-site-sidebar-navigation-screen-navigation-menus__content", children: /* @__PURE__ */ (0, import_jsx_runtime176.jsx)(NavigationMenuContent, { rootClientId: blocks[0].clientId }) }) } ); } // packages/edit-site/build-module/components/sidebar-navigation-screen-navigation-menus/build-navigation-label.mjs var import_i18n76 = __toESM(require_i18n(), 1); var import_html_entities5 = __toESM(require_html_entities(), 1); function buildNavigationLabel(title, id, status) { if (!title?.rendered) { return (0, import_i18n76.sprintf)((0, import_i18n76.__)("(no title %s)"), id); } if (status === "publish") { return (0, import_html_entities5.decodeEntities)(title?.rendered); } return (0, import_i18n76.sprintf)( // translators: 1: title of the menu. 2: status of the menu (draft, pending, etc.). (0, import_i18n76._x)("%1$s (%2$s)", "menu label"), (0, import_html_entities5.decodeEntities)(title?.rendered), status ); } // packages/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/single-navigation-menu.mjs var import_jsx_runtime177 = __toESM(require_jsx_runtime(), 1); function SingleNavigationMenu({ navigationMenu, backPath, handleDelete, handleDuplicate, handleSave }) { const menuTitle = navigationMenu?.title?.rendered; return /* @__PURE__ */ (0, import_jsx_runtime177.jsx)( SidebarNavigationScreenWrapper, { actions: /* @__PURE__ */ (0, import_jsx_runtime177.jsx)(import_jsx_runtime177.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime177.jsx)( ScreenNavigationMoreMenu, { menuId: navigationMenu?.id, menuTitle: (0, import_html_entities6.decodeEntities)(menuTitle), onDelete: handleDelete, onSave: handleSave, onDuplicate: handleDuplicate } ) }), backPath, title: buildNavigationLabel( navigationMenu?.title, navigationMenu?.id, navigationMenu?.status ), description: (0, import_i18n77.__)( "Navigation Menus are a curated collection of blocks that allow visitors to get around your site." ), children: /* @__PURE__ */ (0, import_jsx_runtime177.jsx)(NavigationMenuEditor, { navigationMenuId: navigationMenu?.id }) } ); } // packages/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.mjs var import_core_data37 = __toESM(require_core_data(), 1); var import_i18n79 = __toESM(require_i18n(), 1); var import_data53 = __toESM(require_data(), 1); var import_notices4 = __toESM(require_notices(), 1); var import_router24 = __toESM(require_router(), 1); // packages/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/index.mjs var import_core_data36 = __toESM(require_core_data(), 1); var import_components88 = __toESM(require_components(), 1); var import_i18n78 = __toESM(require_i18n(), 1); var import_data52 = __toESM(require_data(), 1); var import_html_entities7 = __toESM(require_html_entities(), 1); var import_router23 = __toESM(require_router(), 1); var import_jsx_runtime178 = __toESM(require_jsx_runtime(), 1); var { useLocation: useLocation21 } = unlock(import_router23.privateApis); var postType = `wp_navigation`; function SidebarNavigationScreenNavigationMenu({ backPath }) { const { params: { postId } } = useLocation21(); const { record: navigationMenu, isResolving } = (0, import_core_data36.useEntityRecord)( "postType", postType, postId ); const { isSaving, isDeleting } = (0, import_data52.useSelect)( (select3) => { const { isSavingEntityRecord, isDeletingEntityRecord } = select3(import_core_data36.store); return { isSaving: isSavingEntityRecord("postType", postType, postId), isDeleting: isDeletingEntityRecord( "postType", postType, postId ) }; }, [postId] ); const isLoading = isResolving || isSaving || isDeleting; const menuTitle = navigationMenu?.title?.rendered || navigationMenu?.slug; const { handleSave, handleDelete, handleDuplicate } = useNavigationMenuHandlers(); const _handleDelete = () => handleDelete(navigationMenu); const _handleSave = (edits) => handleSave(navigationMenu, edits); const _handleDuplicate = () => handleDuplicate(navigationMenu); if (isLoading) { return /* @__PURE__ */ (0, import_jsx_runtime178.jsx)( SidebarNavigationScreenWrapper, { description: (0, import_i18n78.__)( "Navigation Menus are a curated collection of blocks that allow visitors to get around your site." ), backPath, children: /* @__PURE__ */ (0, import_jsx_runtime178.jsx)(import_components88.Spinner, { className: "edit-site-sidebar-navigation-screen-navigation-menus__loading" }) } ); } if (!isLoading && !navigationMenu) { return /* @__PURE__ */ (0, import_jsx_runtime178.jsx)( SidebarNavigationScreenWrapper, { description: (0, import_i18n78.__)("Navigation Menu missing."), backPath } ); } if (!navigationMenu?.content?.raw) { return /* @__PURE__ */ (0, import_jsx_runtime178.jsx)( SidebarNavigationScreenWrapper, { actions: /* @__PURE__ */ (0, import_jsx_runtime178.jsx)( ScreenNavigationMoreMenu, { menuId: navigationMenu?.id, menuTitle: (0, import_html_entities7.decodeEntities)(menuTitle), onDelete: _handleDelete, onSave: _handleSave, onDuplicate: _handleDuplicate } ), backPath, title: buildNavigationLabel( navigationMenu?.title, navigationMenu?.id, navigationMenu?.status ), description: (0, import_i18n78.__)("This Navigation Menu is empty.") } ); } return /* @__PURE__ */ (0, import_jsx_runtime178.jsx)( SingleNavigationMenu, { navigationMenu, backPath, handleDelete: _handleDelete, handleSave: _handleSave, handleDuplicate: _handleDuplicate } ); } // packages/edit-site/build-module/components/sidebar-navigation-screen-navigation-menu/use-navigation-menu-handlers.mjs var { useHistory: useHistory16 } = unlock(import_router24.privateApis); function useDeleteNavigationMenu() { const { deleteEntityRecord } = (0, import_data53.useDispatch)(import_core_data37.store); const { createSuccessNotice, createErrorNotice } = (0, import_data53.useDispatch)(import_notices4.store); const history = useHistory16(); const handleDelete = async (navigationMenu) => { const postId = navigationMenu?.id; try { await deleteEntityRecord( "postType", postType, postId, { force: true }, { throwOnError: true } ); createSuccessNotice( (0, import_i18n79.__)("Navigation Menu successfully deleted."), { type: "snackbar" } ); history.navigate("/navigation"); } catch (error) { createErrorNotice( (0, import_i18n79.sprintf)( /* translators: %s: error message describing why the navigation menu could not be deleted. */ (0, import_i18n79.__)(`Unable to delete Navigation Menu (%s).`), error?.message ), { type: "snackbar" } ); } }; return handleDelete; } function useSaveNavigationMenu() { const { getEditedEntityRecord } = (0, import_data53.useSelect)((select3) => { const { getEditedEntityRecord: getEditedEntityRecordSelector } = select3(import_core_data37.store); return { getEditedEntityRecord: getEditedEntityRecordSelector }; }, []); const { editEntityRecord, __experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits } = (0, import_data53.useDispatch)(import_core_data37.store); const { createSuccessNotice, createErrorNotice } = (0, import_data53.useDispatch)(import_notices4.store); const handleSave = async (navigationMenu, edits) => { if (!edits) { return; } const postId = navigationMenu?.id; const originalRecord = getEditedEntityRecord( "postType", NAVIGATION_POST_TYPE, postId ); editEntityRecord("postType", postType, postId, edits); const recordPropertiesToSave = Object.keys(edits); try { await saveSpecifiedEntityEdits( "postType", postType, postId, recordPropertiesToSave, { throwOnError: true } ); createSuccessNotice((0, import_i18n79.__)("Renamed Navigation Menu"), { type: "snackbar" }); } catch (error) { editEntityRecord("postType", postType, postId, originalRecord); createErrorNotice( (0, import_i18n79.sprintf)( /* translators: %s: error message describing why the navigation menu could not be renamed. */ (0, import_i18n79.__)(`Unable to rename Navigation Menu (%s).`), error?.message ), { type: "snackbar" } ); } }; return handleSave; } function useDuplicateNavigationMenu() { const history = useHistory16(); const { saveEntityRecord } = (0, import_data53.useDispatch)(import_core_data37.store); const { createSuccessNotice, createErrorNotice } = (0, import_data53.useDispatch)(import_notices4.store); const handleDuplicate = async (navigationMenu) => { const menuTitle = navigationMenu?.title?.rendered || navigationMenu?.slug; try { const savedRecord = await saveEntityRecord( "postType", postType, { title: (0, import_i18n79.sprintf)( /* translators: %s: Navigation menu title */ (0, import_i18n79._x)("%s (Copy)", "navigation menu"), menuTitle ), content: navigationMenu?.content?.raw, status: "publish" }, { throwOnError: true } ); if (savedRecord) { createSuccessNotice((0, import_i18n79.__)("Duplicated Navigation Menu"), { type: "snackbar" }); history.navigate(`/wp_navigation/${savedRecord.id}`); } } catch (error) { createErrorNotice( (0, import_i18n79.sprintf)( /* translators: %s: error message describing why the navigation menu could not be deleted. */ (0, import_i18n79.__)(`Unable to duplicate Navigation Menu (%s).`), error?.message ), { type: "snackbar" } ); } }; return handleDuplicate; } function useNavigationMenuHandlers() { return { handleDelete: useDeleteNavigationMenu(), handleSave: useSaveNavigationMenu(), handleDuplicate: useDuplicateNavigationMenu() }; } // packages/edit-site/build-module/components/sidebar-navigation-screen-navigation-menus/index.mjs var import_jsx_runtime179 = __toESM(require_jsx_runtime(), 1); function buildMenuLabel(title, id, status) { if (!title) { return (0, import_i18n80.sprintf)((0, import_i18n80.__)("(no title %s)"), id); } if (status === "publish") { return (0, import_html_entities8.decodeEntities)(title); } return (0, import_i18n80.sprintf)( // translators: 1: title of the menu. 2: status of the menu (draft, pending, etc.). (0, import_i18n80._x)("%1$s (%2$s)", "menu label"), (0, import_html_entities8.decodeEntities)(title), status ); } function SidebarNavigationScreenNavigationMenus({ backPath }) { const { records: navigationMenus, isResolving: isResolvingNavigationMenus, hasResolved: hasResolvedNavigationMenus } = (0, import_core_data38.useEntityRecords)( "postType", NAVIGATION_POST_TYPE, PRELOADED_NAVIGATION_MENUS_QUERY ); const isLoading = isResolvingNavigationMenus && !hasResolvedNavigationMenus; const { getNavigationFallbackId } = unlock((0, import_data54.useSelect)(import_core_data38.store)); const isCreatingNavigationFallback = (0, import_data54.useSelect)( (select3) => select3(import_core_data38.store).isResolving("getNavigationFallbackId"), [] ); const firstNavigationMenu = navigationMenus?.[0]; if (!firstNavigationMenu && !isResolvingNavigationMenus && hasResolvedNavigationMenus && // Ensure a fallback navigation is created only once !isCreatingNavigationFallback) { getNavigationFallbackId(); } const { handleSave, handleDelete, handleDuplicate } = useNavigationMenuHandlers(); const hasNavigationMenus = !!navigationMenus?.length; if (isLoading) { return /* @__PURE__ */ (0, import_jsx_runtime179.jsx)(SidebarNavigationScreenWrapper, { backPath, children: /* @__PURE__ */ (0, import_jsx_runtime179.jsx)(import_components89.Spinner, { className: "edit-site-sidebar-navigation-screen-navigation-menus__loading" }) }); } if (!isLoading && !hasNavigationMenus) { return /* @__PURE__ */ (0, import_jsx_runtime179.jsx)( SidebarNavigationScreenWrapper, { description: (0, import_i18n80.__)("No Navigation Menus found."), backPath } ); } if (navigationMenus?.length === 1) { return /* @__PURE__ */ (0, import_jsx_runtime179.jsx)( SingleNavigationMenu, { navigationMenu: firstNavigationMenu, backPath, handleDelete: () => handleDelete(firstNavigationMenu), handleDuplicate: () => handleDuplicate(firstNavigationMenu), handleSave: (edits) => handleSave(firstNavigationMenu, edits) } ); } return /* @__PURE__ */ (0, import_jsx_runtime179.jsx)(SidebarNavigationScreenWrapper, { backPath, children: /* @__PURE__ */ (0, import_jsx_runtime179.jsx)(import_components89.__experimentalItemGroup, { className: "edit-site-sidebar-navigation-screen-navigation-menus", children: navigationMenus?.map(({ id, title, status }, index) => /* @__PURE__ */ (0, import_jsx_runtime179.jsx)( NavMenuItem, { postId: id, withChevron: true, icon: navigation_default, children: buildMenuLabel(title?.rendered, index + 1, status) }, id )) }) }); } function SidebarNavigationScreenWrapper({ children, actions, title, description, backPath }) { return /* @__PURE__ */ (0, import_jsx_runtime179.jsx)( SidebarNavigationScreen, { title: title || (0, import_i18n80.__)("Navigation"), actions, description: description || (0, import_i18n80.__)("Manage your Navigation Menus."), backPath, content: children } ); } var NavMenuItem = ({ postId, ...props }) => { return /* @__PURE__ */ (0, import_jsx_runtime179.jsx)( SidebarNavigationItem, { to: `/wp_navigation/${postId}`, ...props } ); }; // packages/edit-site/build-module/components/site-editor-routes/navigation.mjs var import_jsx_runtime180 = __toESM(require_jsx_runtime(), 1); var { useLocation: useLocation22 } = unlock(import_router25.privateApis); function MobileNavigationView() { const { query = {} } = useLocation22(); const { canvas = "view" } = query; return canvas === "edit" ? /* @__PURE__ */ (0, import_jsx_runtime180.jsx)(EditSiteEditor, {}) : /* @__PURE__ */ (0, import_jsx_runtime180.jsx)(SidebarNavigationScreenNavigationMenus, { backPath: "/" }); } var navigationRoute = { name: "navigation", path: "/navigation", areas: { sidebar({ siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; return isBlockTheme ? /* @__PURE__ */ (0, import_jsx_runtime180.jsx)(SidebarNavigationScreenNavigationMenus, { backPath: "/" }) : /* @__PURE__ */ (0, import_jsx_runtime180.jsx)(SidebarNavigationScreenUnsupported, {}); }, preview({ siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; return isBlockTheme ? /* @__PURE__ */ (0, import_jsx_runtime180.jsx)(EditSiteEditor, {}) : void 0; }, mobile({ siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; return isBlockTheme ? /* @__PURE__ */ (0, import_jsx_runtime180.jsx)(MobileNavigationView, {}) : /* @__PURE__ */ (0, import_jsx_runtime180.jsx)(SidebarNavigationScreenUnsupported, {}); } } }; // packages/edit-site/build-module/components/site-editor-routes/navigation-item.mjs var import_router26 = __toESM(require_router(), 1); var import_jsx_runtime181 = __toESM(require_jsx_runtime(), 1); var { useLocation: useLocation23 } = unlock(import_router26.privateApis); function MobileNavigationItemView() { const { query = {} } = useLocation23(); const { canvas = "view" } = query; return canvas === "edit" ? /* @__PURE__ */ (0, import_jsx_runtime181.jsx)(EditSiteEditor, {}) : /* @__PURE__ */ (0, import_jsx_runtime181.jsx)(SidebarNavigationScreenNavigationMenu, { backPath: "/navigation" }); } var navigationItemRoute = { name: "navigation-item", path: "/wp_navigation/:postId", areas: { sidebar({ siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; return isBlockTheme ? /* @__PURE__ */ (0, import_jsx_runtime181.jsx)(SidebarNavigationScreenNavigationMenu, { backPath: "/navigation" }) : /* @__PURE__ */ (0, import_jsx_runtime181.jsx)(SidebarNavigationScreenUnsupported, {}); }, preview({ siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; return isBlockTheme ? /* @__PURE__ */ (0, import_jsx_runtime181.jsx)(EditSiteEditor, {}) : /* @__PURE__ */ (0, import_jsx_runtime181.jsx)(SidebarNavigationScreenUnsupported, {}); }, mobile({ siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; return isBlockTheme ? /* @__PURE__ */ (0, import_jsx_runtime181.jsx)(MobileNavigationItemView, {}) : /* @__PURE__ */ (0, import_jsx_runtime181.jsx)(SidebarNavigationScreenUnsupported, {}); } } }; // packages/edit-site/build-module/components/sidebar-navigation-screen-patterns/index.mjs var import_components90 = __toESM(require_components(), 1); var import_editor27 = __toESM(require_editor(), 1); var import_i18n82 = __toESM(require_i18n(), 1); var import_router27 = __toESM(require_router(), 1); // packages/edit-site/build-module/components/sidebar-navigation-screen-patterns/category-item.mjs var import_jsx_runtime182 = __toESM(require_jsx_runtime(), 1); function CategoryItem({ count, icon, id, isActive, label, type }) { if (!count) { return; } const queryArgs = [`postType=${type}`]; if (id) { queryArgs.push(`categoryId=${id}`); } return /* @__PURE__ */ (0, import_jsx_runtime182.jsx)( SidebarNavigationItem, { icon, suffix: /* @__PURE__ */ (0, import_jsx_runtime182.jsx)("span", { children: count }), "aria-current": isActive ? "true" : void 0, to: `/pattern?${queryArgs.join("&")}`, children: label } ); } // packages/edit-site/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.mjs var import_element67 = __toESM(require_element(), 1); var import_i18n81 = __toESM(require_i18n(), 1); // packages/edit-site/build-module/components/sidebar-navigation-screen-patterns/use-default-pattern-categories.mjs var import_core_data39 = __toESM(require_core_data(), 1); var import_data55 = __toESM(require_data(), 1); function useDefaultPatternCategories() { const blockPatternCategories = (0, import_data55.useSelect)((select3) => { const { getSettings: getSettings7 } = unlock(select3(store)); const settings2 = getSettings7(); return settings2.__experimentalAdditionalBlockPatternCategories ?? settings2.__experimentalBlockPatternCategories; }); const restBlockPatternCategories = (0, import_data55.useSelect)( (select3) => select3(import_core_data39.store).getBlockPatternCategories() ); return [ ...blockPatternCategories || [], ...restBlockPatternCategories || [] ]; } // packages/edit-site/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.mjs var import_core_data40 = __toESM(require_core_data(), 1); var import_data56 = __toESM(require_data(), 1); var import_element65 = __toESM(require_element(), 1); // packages/edit-site/build-module/components/page-patterns/utils.mjs var filterOutDuplicatesByName = (currentItem, index, items) => index === items.findIndex((item) => currentItem.name === item.name); // packages/edit-site/build-module/components/sidebar-navigation-screen-patterns/use-theme-patterns.mjs function useThemePatterns() { const blockPatterns = (0, import_data56.useSelect)((select3) => { const { getSettings: getSettings7 } = unlock(select3(store)); return getSettings7().__experimentalAdditionalBlockPatterns ?? getSettings7().__experimentalBlockPatterns; }); const restBlockPatterns = (0, import_data56.useSelect)( (select3) => select3(import_core_data40.store).getBlockPatterns() ); const patterns = (0, import_element65.useMemo)( () => [...blockPatterns || [], ...restBlockPatterns || []].filter( (pattern) => !EXCLUDED_PATTERN_SOURCES.includes(pattern.source) ).filter(filterOutDuplicatesByName).filter((pattern) => pattern.inserter !== false), [blockPatterns, restBlockPatterns] ); return patterns; } // packages/edit-site/build-module/components/page-patterns/use-patterns.mjs var import_blocks11 = __toESM(require_blocks(), 1); var import_data57 = __toESM(require_data(), 1); var import_core_data41 = __toESM(require_core_data(), 1); var import_element66 = __toESM(require_element(), 1); // packages/edit-site/build-module/components/page-patterns/search-items.mjs var import_block_editor22 = __toESM(require_block_editor(), 1); var { extractWords, getNormalizedSearchTerms, normalizeString } = unlock( import_block_editor22.privateApis ); var defaultGetName = (item) => { if (item.type === PATTERN_TYPES.user) { return item.slug; } if (item.type === TEMPLATE_PART_POST_TYPE) { return ""; } return item.name || ""; }; var defaultGetTitle = (item) => { if (typeof item.title === "string") { return item.title; } if (item.title && item.title.rendered) { return item.title.rendered; } if (item.title && item.title.raw) { return item.title.raw; } return ""; }; var defaultGetDescription = (item) => { if (item.type === PATTERN_TYPES.user) { return item.excerpt.raw; } return item.description || ""; }; var defaultGetKeywords = (item) => item.keywords || []; var defaultHasCategory = () => false; var removeMatchingTerms = (unmatchedTerms, unprocessedTerms) => { return unmatchedTerms.filter( (term) => !getNormalizedSearchTerms(unprocessedTerms).some( (unprocessedTerm) => unprocessedTerm.includes(term) ) ); }; var searchItems = (items = [], searchInput = "", config2 = {}) => { const normalizedSearchTerms = getNormalizedSearchTerms(searchInput); const onlyFilterByCategory = config2.categoryId !== PATTERN_DEFAULT_CATEGORY && !normalizedSearchTerms.length; const searchRankConfig = { ...config2, onlyFilterByCategory }; const threshold = onlyFilterByCategory ? 0 : 1; const rankedItems = items.map((item) => { return [ item, getItemSearchRank(item, searchInput, searchRankConfig) ]; }).filter(([, rank]) => rank > threshold); if (normalizedSearchTerms.length === 0) { return rankedItems.map(([item]) => item); } rankedItems.sort(([, rank1], [, rank2]) => rank2 - rank1); return rankedItems.map(([item]) => item); }; function getItemSearchRank(item, searchTerm, config2) { const { categoryId, getName = defaultGetName, getTitle = defaultGetTitle, getDescription = defaultGetDescription, getKeywords = defaultGetKeywords, hasCategory = defaultHasCategory, onlyFilterByCategory } = config2; let rank = categoryId === PATTERN_DEFAULT_CATEGORY || categoryId === TEMPLATE_PART_ALL_AREAS_CATEGORY || categoryId === PATTERN_USER_CATEGORY && item.type === PATTERN_TYPES.user || hasCategory(item, categoryId) ? 1 : 0; if (!rank || onlyFilterByCategory) { return rank; } const name2 = getName(item); const title = getTitle(item); const description = getDescription(item); const keywords = getKeywords(item); const normalizedSearchInput = normalizeString(searchTerm); const normalizedTitle = normalizeString(title); if (normalizedSearchInput === normalizedTitle) { rank += 30; } else if (normalizedTitle.startsWith(normalizedSearchInput)) { rank += 20; } else { const terms = [name2, title, description, ...keywords].join(" "); const normalizedSearchTerms = extractWords(normalizedSearchInput); const unmatchedTerms = removeMatchingTerms( normalizedSearchTerms, terms ); if (unmatchedTerms.length === 0) { rank += 10; } } return rank; } // packages/edit-site/build-module/components/page-patterns/use-patterns.mjs var EMPTY_PATTERN_LIST = []; var selectTemplateParts = (0, import_data57.createSelector)( (select3, categoryId, search = "") => { const { getEntityRecords, getCurrentTheme, isResolving: isResolvingSelector } = select3(import_core_data41.store); const query = { per_page: -1 }; const templateParts = getEntityRecords("postType", TEMPLATE_PART_POST_TYPE, query) ?? EMPTY_PATTERN_LIST; const knownAreas = getCurrentTheme()?.default_template_part_areas || []; const templatePartAreas = knownAreas.map((area) => area.area); const templatePartHasCategory = (item, category) => { if (category !== TEMPLATE_PART_AREA_DEFAULT_CATEGORY) { return item.area === category; } return item.area === category || !templatePartAreas.includes(item.area); }; const isResolving = isResolvingSelector("getEntityRecords", [ "postType", TEMPLATE_PART_POST_TYPE, query ]); const patterns = searchItems(templateParts, search, { categoryId, hasCategory: templatePartHasCategory }); return { patterns, isResolving }; }, (select3) => [ select3(import_core_data41.store).getEntityRecords( "postType", TEMPLATE_PART_POST_TYPE, { per_page: -1 } ), select3(import_core_data41.store).isResolving("getEntityRecords", [ "postType", TEMPLATE_PART_POST_TYPE, { per_page: -1 } ]), select3(import_core_data41.store).getCurrentTheme()?.default_template_part_areas ] ); var selectThemePatterns = (0, import_data57.createSelector)( (select3) => { const { getSettings: getSettings7 } = unlock(select3(store)); const { isResolving: isResolvingSelector } = select3(import_core_data41.store); const settings2 = getSettings7(); const blockPatterns = settings2.__experimentalAdditionalBlockPatterns ?? settings2.__experimentalBlockPatterns; const restBlockPatterns = select3(import_core_data41.store).getBlockPatterns(); const patterns = [ ...blockPatterns || [], ...restBlockPatterns || [] ].filter( (pattern) => !EXCLUDED_PATTERN_SOURCES.includes(pattern.source) ).filter(filterOutDuplicatesByName).filter((pattern) => pattern.inserter !== false).map((pattern) => ({ ...pattern, keywords: pattern.keywords || [], type: PATTERN_TYPES.theme, blocks: (0, import_blocks11.parse)(pattern.content, { __unstableSkipMigrationLogs: true }) })); return { patterns, isResolving: isResolvingSelector("getBlockPatterns") }; }, (select3) => [ select3(import_core_data41.store).getBlockPatterns(), select3(import_core_data41.store).isResolving("getBlockPatterns"), unlock(select3(store)).getSettings() ] ); var selectPatterns = (0, import_data57.createSelector)( (select3, categoryId, syncStatus, search = "") => { const { patterns: themePatterns, isResolving: isResolvingThemePatterns } = selectThemePatterns(select3); const { patterns: userPatterns, isResolving: isResolvingUserPatterns, categories: userPatternCategories } = selectUserPatterns(select3); let patterns = [ ...themePatterns || [], ...userPatterns || [] ]; if (syncStatus) { patterns = patterns.filter((pattern) => { return pattern.type === PATTERN_TYPES.user ? (pattern.wp_pattern_sync_status || PATTERN_SYNC_TYPES.full) === syncStatus : syncStatus === PATTERN_SYNC_TYPES.unsynced; }); } if (categoryId) { patterns = searchItems(patterns, search, { categoryId, hasCategory: (item, currentCategory) => { if (item.type === PATTERN_TYPES.user) { return item.wp_pattern_category?.some( (catId) => userPatternCategories.find( (cat) => cat.id === catId )?.slug === currentCategory ); } return item.categories?.includes(currentCategory); } }); } else { patterns = searchItems(patterns, search, { hasCategory: (item) => { if (item.type === PATTERN_TYPES.user) { return userPatternCategories?.length && (!item.wp_pattern_category?.length || !item.wp_pattern_category?.some( (catId) => userPatternCategories.find( (cat) => cat.id === catId ) )); } return !item.hasOwnProperty("categories"); } }); } return { patterns, isResolving: isResolvingThemePatterns || isResolvingUserPatterns }; }, (select3) => [ selectThemePatterns(select3), selectUserPatterns(select3) ] ); var selectUserPatterns = (0, import_data57.createSelector)( (select3, syncStatus, search = "") => { const { getEntityRecords, isResolving: isResolvingSelector, getUserPatternCategories } = select3(import_core_data41.store); const query = { per_page: -1 }; const patternPosts = getEntityRecords( "postType", PATTERN_TYPES.user, query ); const userPatternCategories = getUserPatternCategories(); const categories = /* @__PURE__ */ new Map(); userPatternCategories.forEach( (userCategory) => categories.set(userCategory.id, userCategory) ); let patterns = patternPosts ?? EMPTY_PATTERN_LIST; const isResolving = isResolvingSelector("getEntityRecords", [ "postType", PATTERN_TYPES.user, query ]); if (syncStatus) { patterns = patterns.filter( (pattern) => pattern.wp_pattern_sync_status || PATTERN_SYNC_TYPES.full === syncStatus ); } patterns = searchItems(patterns, search, { // We exit user pattern retrieval early if we aren't in the // catch-all category for user created patterns, so it has // to be in the category. hasCategory: () => true }); return { patterns, isResolving, categories: userPatternCategories }; }, (select3) => [ select3(import_core_data41.store).getEntityRecords("postType", PATTERN_TYPES.user, { per_page: -1 }), select3(import_core_data41.store).isResolving("getEntityRecords", [ "postType", PATTERN_TYPES.user, { per_page: -1 } ]), select3(import_core_data41.store).getUserPatternCategories() ] ); function useAugmentPatternsWithPermissions(patterns) { const idsAndTypes = (0, import_element66.useMemo)( () => patterns?.filter((record) => record.type !== PATTERN_TYPES.theme).map((record) => [record.type, record.id]) ?? [], [patterns] ); const permissions = (0, import_data57.useSelect)( (select3) => { const { getEntityRecordPermissions } = unlock( select3(import_core_data41.store) ); return idsAndTypes.reduce((acc, [type, id]) => { acc[id] = getEntityRecordPermissions("postType", type, id); return acc; }, {}); }, [idsAndTypes] ); return (0, import_element66.useMemo)( () => patterns?.map((record) => ({ ...record, permissions: permissions?.[record.id] ?? {} })) ?? [], [patterns, permissions] ); } var usePatterns = (postType2, categoryId, { search = "", syncStatus } = {}) => { return (0, import_data57.useSelect)( (select3) => { if (postType2 === TEMPLATE_PART_POST_TYPE) { return selectTemplateParts(select3, categoryId, search); } else if (postType2 === PATTERN_TYPES.user && !!categoryId) { const appliedCategory = categoryId === "uncategorized" ? "" : categoryId; return selectPatterns( select3, appliedCategory, syncStatus, search ); } else if (postType2 === PATTERN_TYPES.user) { return selectUserPatterns(select3, syncStatus, search); } return { patterns: EMPTY_PATTERN_LIST, isResolving: false }; }, [categoryId, postType2, search, syncStatus] ); }; var use_patterns_default = usePatterns; // packages/edit-site/build-module/components/sidebar-navigation-screen-patterns/use-pattern-categories.mjs function usePatternCategories() { const defaultCategories = useDefaultPatternCategories(); defaultCategories.push({ name: TEMPLATE_PART_AREA_DEFAULT_CATEGORY, label: (0, import_i18n81.__)("Uncategorized") }); const themePatterns = useThemePatterns(); const { patterns: userPatterns, categories: userPatternCategories } = use_patterns_default(PATTERN_TYPES.user); const patternCategories = (0, import_element67.useMemo)(() => { const categoryMap = {}; const categoriesWithCounts = []; defaultCategories.forEach((category) => { if (!categoryMap[category.name]) { categoryMap[category.name] = { ...category, count: 0 }; } }); userPatternCategories.forEach((category) => { if (!categoryMap[category.name]) { categoryMap[category.name] = { ...category, count: 0 }; } }); themePatterns.forEach((pattern) => { pattern.categories?.forEach((category) => { if (categoryMap[category]) { categoryMap[category].count += 1; } }); if (!pattern.categories?.length) { categoryMap.uncategorized.count += 1; } }); userPatterns.forEach((pattern) => { pattern.wp_pattern_category?.forEach((catId) => { const category = userPatternCategories.find( (cat) => cat.id === catId )?.name; if (categoryMap[category]) { categoryMap[category].count += 1; } }); if (!pattern.wp_pattern_category?.length || !pattern.wp_pattern_category?.some( (catId) => userPatternCategories.find((cat) => cat.id === catId) )) { categoryMap.uncategorized.count += 1; } }); [...defaultCategories, ...userPatternCategories].forEach( (category) => { if (categoryMap[category.name].count && !categoriesWithCounts.find( (cat) => cat.name === category.name )) { categoriesWithCounts.push(categoryMap[category.name]); } } ); const sortedCategories = categoriesWithCounts.sort( (a2, b2) => a2.label.localeCompare(b2.label) ); sortedCategories.unshift({ name: PATTERN_USER_CATEGORY, label: (0, import_i18n81.__)("My patterns"), count: userPatterns.length }); sortedCategories.unshift({ name: PATTERN_DEFAULT_CATEGORY, label: (0, import_i18n81.__)("All patterns"), description: (0, import_i18n81.__)("A list of all patterns from all sources."), count: themePatterns.length + userPatterns.length }); return sortedCategories; }, [ defaultCategories, themePatterns, userPatternCategories, userPatterns ]); return { patternCategories, hasPatterns: !!patternCategories.length }; } // packages/edit-site/build-module/components/sidebar-navigation-screen-patterns/use-template-part-areas.mjs var import_core_data42 = __toESM(require_core_data(), 1); var import_data58 = __toESM(require_data(), 1); var import_block_library2 = __toESM(require_block_library(), 1); var { NAVIGATION_OVERLAY_TEMPLATE_PART_AREA } = unlock( import_block_library2.privateApis ); var useTemplatePartsGroupedByArea = (items) => { const allItems = items || []; const templatePartAreas = (0, import_data58.useSelect)( (select3) => select3(import_core_data42.store).getCurrentTheme()?.default_template_part_areas || [], [] ); const knownAreas = { header: {}, footer: {}, sidebar: {}, uncategorized: {}, [NAVIGATION_OVERLAY_TEMPLATE_PART_AREA]: {} }; templatePartAreas.forEach( (templatePartArea) => knownAreas[templatePartArea.area] = { ...templatePartArea, templateParts: [] } ); const groupedByArea = allItems.reduce((accumulator, item) => { const key = accumulator[item.area] ? item.area : TEMPLATE_PART_AREA_DEFAULT_CATEGORY; accumulator[key]?.templateParts?.push(item); return accumulator; }, knownAreas); return groupedByArea; }; function useTemplatePartAreas() { const { records: templateParts, isResolving: isLoading } = (0, import_core_data42.useEntityRecords)( "postType", TEMPLATE_PART_POST_TYPE, { per_page: -1 } ); return { hasTemplateParts: templateParts ? !!templateParts.length : false, isLoading, templatePartAreas: useTemplatePartsGroupedByArea(templateParts) }; } // packages/edit-site/build-module/components/sidebar-navigation-screen-patterns/index.mjs var import_jsx_runtime183 = __toESM(require_jsx_runtime(), 1); var { useLocation: useLocation24 } = unlock(import_router27.privateApis); function CategoriesGroup({ templatePartAreas, patternCategories, currentCategory, currentType }) { const [allPatterns, ...otherPatterns] = patternCategories; return /* @__PURE__ */ (0, import_jsx_runtime183.jsxs)(import_components90.__experimentalItemGroup, { className: "edit-site-sidebar-navigation-screen-patterns__group", children: [ /* @__PURE__ */ (0, import_jsx_runtime183.jsx)( CategoryItem, { count: Object.values(templatePartAreas).map(({ templateParts }) => templateParts?.length || 0).reduce((acc, val) => acc + val, 0), icon: (0, import_editor27.getTemplatePartIcon)(), label: (0, import_i18n82.__)("All template parts"), id: TEMPLATE_PART_ALL_AREAS_CATEGORY, type: TEMPLATE_PART_POST_TYPE, isActive: currentCategory === TEMPLATE_PART_ALL_AREAS_CATEGORY && currentType === TEMPLATE_PART_POST_TYPE }, "all" ), Object.entries(templatePartAreas).map( ([area, { label, templateParts, icon }]) => /* @__PURE__ */ (0, import_jsx_runtime183.jsx)( CategoryItem, { count: templateParts?.length, icon: (0, import_editor27.getTemplatePartIcon)(icon), label, id: area, type: TEMPLATE_PART_POST_TYPE, isActive: currentCategory === area && currentType === TEMPLATE_PART_POST_TYPE }, area ) ), /* @__PURE__ */ (0, import_jsx_runtime183.jsx)("div", { className: "edit-site-sidebar-navigation-screen-patterns__divider" }), allPatterns && /* @__PURE__ */ (0, import_jsx_runtime183.jsx)( CategoryItem, { count: allPatterns.count, label: allPatterns.label, icon: file_default, id: allPatterns.name, type: PATTERN_TYPES.user, isActive: currentCategory === `${allPatterns.name}` && currentType === PATTERN_TYPES.user }, allPatterns.name ), otherPatterns.map((category) => /* @__PURE__ */ (0, import_jsx_runtime183.jsx)( CategoryItem, { count: category.count, label: category.label, icon: file_default, id: category.name, type: PATTERN_TYPES.user, isActive: currentCategory === `${category.name}` && currentType === PATTERN_TYPES.user }, category.name )) ] }); } function SidebarNavigationScreenPatterns({ backPath }) { const { query: { postType: postType2 = "wp_block", categoryId } } = useLocation24(); const currentCategory = categoryId || (postType2 === PATTERN_TYPES.user ? PATTERN_DEFAULT_CATEGORY : TEMPLATE_PART_ALL_AREAS_CATEGORY); const { templatePartAreas, hasTemplateParts, isLoading } = useTemplatePartAreas(); const { patternCategories, hasPatterns } = usePatternCategories(); return /* @__PURE__ */ (0, import_jsx_runtime183.jsx)( SidebarNavigationScreen, { title: (0, import_i18n82.__)("Patterns"), description: (0, import_i18n82.__)( "Manage what patterns are available when editing the site." ), isRoot: !backPath, backPath, content: /* @__PURE__ */ (0, import_jsx_runtime183.jsxs)(import_jsx_runtime183.Fragment, { children: [ isLoading && (0, import_i18n82.__)("Loading items\u2026"), !isLoading && /* @__PURE__ */ (0, import_jsx_runtime183.jsxs)(import_jsx_runtime183.Fragment, { children: [ !hasTemplateParts && !hasPatterns && /* @__PURE__ */ (0, import_jsx_runtime183.jsx)(import_components90.__experimentalItemGroup, { className: "edit-site-sidebar-navigation-screen-patterns__group", children: /* @__PURE__ */ (0, import_jsx_runtime183.jsx)(import_components90.__experimentalItem, { children: (0, import_i18n82.__)("No items found") }) }), /* @__PURE__ */ (0, import_jsx_runtime183.jsx)( CategoriesGroup, { templatePartAreas, patternCategories, currentCategory, currentType: postType2 } ) ] }) ] }) } ); } // packages/edit-site/build-module/components/page-patterns/index.mjs var import_i18n139 = __toESM(require_i18n(), 1); var import_element141 = __toESM(require_element(), 1); var import_block_editor25 = __toESM(require_block_editor(), 1); // packages/dataviews/build-module/dataviews/index.mjs var import_element121 = __toESM(require_element(), 1); var import_compose23 = __toESM(require_compose(), 1); // packages/dataviews/build-module/components/dataviews-context/index.mjs var import_element68 = __toESM(require_element(), 1); // packages/dataviews/build-module/constants.mjs var import_i18n83 = __toESM(require_i18n(), 1); var OPERATOR_IS_ANY2 = "isAny"; var OPERATOR_IS_NONE2 = "isNone"; var OPERATOR_IS_ALL = "isAll"; var OPERATOR_IS_NOT_ALL = "isNotAll"; var OPERATOR_BETWEEN = "between"; var OPERATOR_IN_THE_PAST = "inThePast"; var OPERATOR_OVER = "over"; var OPERATOR_IS2 = "is"; var OPERATOR_IS_NOT = "isNot"; var OPERATOR_LESS_THAN = "lessThan"; var OPERATOR_GREATER_THAN = "greaterThan"; var OPERATOR_LESS_THAN_OR_EQUAL = "lessThanOrEqual"; var OPERATOR_GREATER_THAN_OR_EQUAL = "greaterThanOrEqual"; var OPERATOR_BEFORE2 = "before"; var OPERATOR_AFTER2 = "after"; var OPERATOR_BEFORE_INC = "beforeInc"; var OPERATOR_AFTER_INC = "afterInc"; var OPERATOR_CONTAINS = "contains"; var OPERATOR_NOT_CONTAINS = "notContains"; var OPERATOR_STARTS_WITH = "startsWith"; var OPERATOR_ON = "on"; var OPERATOR_NOT_ON = "notOn"; var SORTING_DIRECTIONS = ["asc", "desc"]; var sortArrows = { asc: "\u2191", desc: "\u2193" }; var sortValues = { asc: "ascending", desc: "descending" }; var sortLabels = { asc: (0, import_i18n83.__)("Sort ascending"), desc: (0, import_i18n83.__)("Sort descending") }; var sortIcons = { asc: arrow_up_default, desc: arrow_down_default }; var LAYOUT_TABLE2 = "table"; var LAYOUT_GRID2 = "grid"; var LAYOUT_LIST2 = "list"; var LAYOUT_ACTIVITY = "activity"; var LAYOUT_PICKER_GRID = "pickerGrid"; var LAYOUT_PICKER_TABLE = "pickerTable"; // packages/dataviews/build-module/components/dataviews-context/index.mjs var DataViewsContext = (0, import_element68.createContext)({ view: { type: LAYOUT_TABLE2 }, onChangeView: () => { }, fields: [], data: [], paginationInfo: { totalItems: 0, totalPages: 0 }, selection: [], onChangeSelection: () => { }, setOpenedFilter: () => { }, openedFilter: null, getItemId: (item) => item.id, isItemClickable: () => true, renderItemLink: void 0, containerWidth: 0, containerRef: (0, import_element68.createRef)(), resizeObserverRef: () => { }, defaultLayouts: { list: {}, grid: {}, table: {} }, filters: [], isShowingFilter: false, setIsShowingFilter: () => { }, hasInitiallyLoaded: false, hasInfiniteScrollHandler: false, config: { perPageSizes: [] } }); DataViewsContext.displayName = "DataViewsContext"; var dataviews_context_default = DataViewsContext; // packages/dataviews/build-module/components/dataviews-layouts/index.mjs var import_i18n103 = __toESM(require_i18n(), 1); // packages/dataviews/build-module/components/dataviews-layouts/table/index.mjs var import_i18n91 = __toESM(require_i18n(), 1); var import_components96 = __toESM(require_components(), 1); var import_element76 = __toESM(require_element(), 1); var import_keycodes6 = __toESM(require_keycodes(), 1); // packages/dataviews/build-module/components/dataviews-selection-checkbox/index.mjs var import_components91 = __toESM(require_components(), 1); var import_i18n84 = __toESM(require_i18n(), 1); var import_jsx_runtime184 = __toESM(require_jsx_runtime(), 1); function DataViewsSelectionCheckbox({ selection, onChangeSelection, item, getItemId: getItemId2, titleField, disabled, ...extraProps }) { const id = getItemId2(item); const checked = !disabled && selection.includes(id); const selectionLabel = titleField?.getValue?.({ item }) || (0, import_i18n84.__)("(no title)"); return /* @__PURE__ */ (0, import_jsx_runtime184.jsx)( import_components91.CheckboxControl, { className: "dataviews-selection-checkbox", "aria-label": selectionLabel, "aria-disabled": disabled, checked, onChange: () => { if (disabled) { return; } onChangeSelection( selection.includes(id) ? selection.filter((itemId) => id !== itemId) : [...selection, id] ); }, ...extraProps } ); } // packages/dataviews/build-module/components/dataviews-item-actions/index.mjs var import_components92 = __toESM(require_components(), 1); var import_i18n85 = __toESM(require_i18n(), 1); var import_element69 = __toESM(require_element(), 1); var import_data59 = __toESM(require_data(), 1); var import_compose12 = __toESM(require_compose(), 1); // packages/dataviews/build-module/lock-unlock.mjs var import_private_apis3 = __toESM(require_private_apis(), 1); var { lock: lock3, unlock: unlock3 } = (0, import_private_apis3.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", "@wordpress/dataviews" ); // packages/dataviews/build-module/components/dataviews-item-actions/index.mjs var import_jsx_runtime185 = __toESM(require_jsx_runtime(), 1); var { Menu: Menu5, kebabCase: kebabCase4 } = unlock3(import_components92.privateApis); function ButtonTrigger({ action, onClick, items, variant }) { const label = typeof action.label === "string" ? action.label : action.label(items); return /* @__PURE__ */ (0, import_jsx_runtime185.jsx)( import_components92.Button, { disabled: !!action.disabled, accessibleWhenDisabled: true, size: "compact", variant, onClick, children: label } ); } function MenuItemTrigger({ action, onClick, items }) { const label = typeof action.label === "string" ? action.label : action.label(items); return /* @__PURE__ */ (0, import_jsx_runtime185.jsx)(Menu5.Item, { disabled: action.disabled, onClick, children: /* @__PURE__ */ (0, import_jsx_runtime185.jsx)(Menu5.ItemLabel, { children: label }) }); } function ActionModal({ action, items, closeModal }) { const label = typeof action.label === "string" ? action.label : action.label(items); const modalHeader = typeof action.modalHeader === "function" ? action.modalHeader(items) : action.modalHeader; return /* @__PURE__ */ (0, import_jsx_runtime185.jsx)( import_components92.Modal, { title: modalHeader || label, __experimentalHideHeader: !!action.hideModalHeader, onRequestClose: closeModal, focusOnMount: action.modalFocusOnMount ?? true, size: action.modalSize || "medium", overlayClassName: `dataviews-action-modal dataviews-action-modal__${kebabCase4( action.id )}`, children: /* @__PURE__ */ (0, import_jsx_runtime185.jsx)(action.RenderModal, { items, closeModal }) } ); } function ActionsMenuGroup({ actions, item, registry, setActiveModalAction }) { const { primaryActions, regularActions } = (0, import_element69.useMemo)(() => { return actions.reduce( (acc, action) => { (action.isPrimary ? acc.primaryActions : acc.regularActions).push(action); return acc; }, { primaryActions: [], regularActions: [] } ); }, [actions]); const renderActionGroup = (actionList) => actionList.map((action) => /* @__PURE__ */ (0, import_jsx_runtime185.jsx)( MenuItemTrigger, { action, onClick: () => { if ("RenderModal" in action) { setActiveModalAction(action); return; } action.callback([item], { registry }); }, items: [item] }, action.id )); return /* @__PURE__ */ (0, import_jsx_runtime185.jsxs)(Menu5.Group, { children: [ renderActionGroup(primaryActions), renderActionGroup(regularActions) ] }); } function ItemActions({ item, actions, isCompact }) { const registry = (0, import_data59.useRegistry)(); const { primaryActions, eligibleActions } = (0, import_element69.useMemo)(() => { const _eligibleActions = actions.filter( (action) => !action.isEligible || action.isEligible(item) ); const _primaryActions = _eligibleActions.filter( (action) => action.isPrimary ); return { primaryActions: _primaryActions, eligibleActions: _eligibleActions }; }, [actions, item]); const isMobileViewport = (0, import_compose12.useViewportMatch)("medium", "<"); if (isCompact) { return /* @__PURE__ */ (0, import_jsx_runtime185.jsx)( CompactItemActions, { item, actions: eligibleActions, isSmall: true, registry } ); } return /* @__PURE__ */ (0, import_jsx_runtime185.jsxs)( Stack, { direction: "row", justify: "flex-end", className: "dataviews-item-actions", style: { flexShrink: 0, width: "auto" }, children: [ /* @__PURE__ */ (0, import_jsx_runtime185.jsx)( PrimaryActions, { item, actions: primaryActions, registry } ), (primaryActions.length < eligibleActions.length || // Since we hide primary actions on mobile, we need to show the menu // there if there are any actions at all. isMobileViewport) && /* @__PURE__ */ (0, import_jsx_runtime185.jsx)( CompactItemActions, { item, actions: eligibleActions, registry } ) ] } ); } function CompactItemActions({ item, actions, isSmall, registry }) { const [activeModalAction, setActiveModalAction] = (0, import_element69.useState)( null ); return /* @__PURE__ */ (0, import_jsx_runtime185.jsxs)(import_jsx_runtime185.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime185.jsxs)(Menu5, { placement: "bottom-end", children: [ /* @__PURE__ */ (0, import_jsx_runtime185.jsx)( Menu5.TriggerButton, { render: /* @__PURE__ */ (0, import_jsx_runtime185.jsx)( import_components92.Button, { size: isSmall ? "small" : "compact", icon: more_vertical_default, label: (0, import_i18n85.__)("Actions"), accessibleWhenDisabled: true, disabled: !actions.length, className: "dataviews-all-actions-button" } ) } ), /* @__PURE__ */ (0, import_jsx_runtime185.jsx)(Menu5.Popover, { children: /* @__PURE__ */ (0, import_jsx_runtime185.jsx)( ActionsMenuGroup, { actions, item, registry, setActiveModalAction } ) }) ] }), !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime185.jsx)( ActionModal, { action: activeModalAction, items: [item], closeModal: () => setActiveModalAction(null) } ) ] }); } function PrimaryActions({ item, actions, registry, buttonVariant }) { const [activeModalAction, setActiveModalAction] = (0, import_element69.useState)(null); const isMobileViewport = (0, import_compose12.useViewportMatch)("medium", "<"); if (isMobileViewport) { return null; } if (!Array.isArray(actions) || actions.length === 0) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime185.jsxs)(import_jsx_runtime185.Fragment, { children: [ actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime185.jsx)( ButtonTrigger, { action, onClick: () => { if ("RenderModal" in action) { setActiveModalAction(action); return; } action.callback([item], { registry }); }, items: [item], variant: buttonVariant }, action.id )), !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime185.jsx)( ActionModal, { action: activeModalAction, items: [item], closeModal: () => setActiveModalAction(null) } ) ] }); } // packages/dataviews/build-module/components/dataviews-bulk-actions/index.mjs var import_components93 = __toESM(require_components(), 1); var import_i18n87 = __toESM(require_i18n(), 1); var import_element70 = __toESM(require_element(), 1); var import_data60 = __toESM(require_data(), 1); var import_compose13 = __toESM(require_compose(), 1); // packages/dataviews/build-module/utils/get-footer-message.mjs var import_i18n86 = __toESM(require_i18n(), 1); function getFooterMessage(selectionCount, itemsCount, totalItems) { if (selectionCount > 0) { return (0, import_i18n86.sprintf)( /* translators: %d: number of items. */ (0, import_i18n86._n)("%d Item selected", "%d Items selected", selectionCount), selectionCount ); } if (totalItems > itemsCount) { return (0, import_i18n86.sprintf)( /* translators: %1$d: number of items. %2$d: total number of items. */ (0, import_i18n86._n)("%1$d of %2$d Item", "%1$d of %2$d Items", totalItems), itemsCount, totalItems ); } return (0, import_i18n86.sprintf)( /* translators: %d: number of items. */ (0, import_i18n86._n)("%d Item", "%d Items", itemsCount), itemsCount ); } // packages/dataviews/build-module/components/dataviews-bulk-actions/index.mjs var import_jsx_runtime186 = __toESM(require_jsx_runtime(), 1); function ActionWithModal({ action, items, ActionTriggerComponent }) { const [isModalOpen, setIsModalOpen] = (0, import_element70.useState)(false); const actionTriggerProps = { action, onClick: () => { setIsModalOpen(true); }, items }; return /* @__PURE__ */ (0, import_jsx_runtime186.jsxs)(import_jsx_runtime186.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime186.jsx)(ActionTriggerComponent, { ...actionTriggerProps }), isModalOpen && /* @__PURE__ */ (0, import_jsx_runtime186.jsx)( ActionModal, { action, items, closeModal: () => setIsModalOpen(false) } ) ] }); } function useHasAPossibleBulkAction(actions, item) { return (0, import_element70.useMemo)(() => { return actions.some((action) => { return action.supportsBulk && (!action.isEligible || action.isEligible(item)); }); }, [actions, item]); } function useSomeItemHasAPossibleBulkAction(actions, data) { return (0, import_element70.useMemo)(() => { return data.some((item) => { return actions.some((action) => { return action.supportsBulk && (!action.isEligible || action.isEligible(item)); }); }); }, [actions, data]); } function BulkSelectionCheckbox({ selection, onChangeSelection, data, actions, getItemId: getItemId2 }) { const selectableItems = (0, import_element70.useMemo)(() => { return data.filter((item) => { return actions.some( (action) => action.supportsBulk && (!action.isEligible || action.isEligible(item)) ); }); }, [data, actions]); const selectedItems = data.filter( (item) => selection.includes(getItemId2(item)) && selectableItems.includes(item) ); const areAllSelected = selectedItems.length === selectableItems.length; return /* @__PURE__ */ (0, import_jsx_runtime186.jsx)( import_components93.CheckboxControl, { className: "dataviews-view-table-selection-checkbox", checked: areAllSelected, indeterminate: !areAllSelected && !!selectedItems.length, onChange: () => { if (areAllSelected) { onChangeSelection([]); } else { onChangeSelection( selectableItems.map((item) => getItemId2(item)) ); } }, "aria-label": areAllSelected ? (0, import_i18n87.__)("Deselect all") : (0, import_i18n87.__)("Select all") } ); } function ActionTrigger({ action, onClick, isBusy, items }) { const label = typeof action.label === "string" ? action.label : action.label(items); const isMobile = (0, import_compose13.useViewportMatch)("medium", "<"); if (isMobile) { return /* @__PURE__ */ (0, import_jsx_runtime186.jsx)( import_components93.Button, { disabled: isBusy, accessibleWhenDisabled: true, label, icon: action.icon, size: "compact", onClick, isBusy } ); } return /* @__PURE__ */ (0, import_jsx_runtime186.jsx)( import_components93.Button, { disabled: isBusy, accessibleWhenDisabled: true, size: "compact", onClick, isBusy, children: label } ); } var EMPTY_ARRAY5 = []; function ActionButton({ action, selectedItems, actionInProgress, setActionInProgress }) { const registry = (0, import_data60.useRegistry)(); const selectedEligibleItems = (0, import_element70.useMemo)(() => { return selectedItems.filter((item) => { return !action.isEligible || action.isEligible(item); }); }, [action, selectedItems]); if ("RenderModal" in action) { return /* @__PURE__ */ (0, import_jsx_runtime186.jsx)( ActionWithModal, { action, items: selectedEligibleItems, ActionTriggerComponent: ActionTrigger }, action.id ); } return /* @__PURE__ */ (0, import_jsx_runtime186.jsx)( ActionTrigger, { action, onClick: async () => { setActionInProgress(action.id); await action.callback(selectedItems, { registry }); setActionInProgress(null); }, items: selectedEligibleItems, isBusy: actionInProgress === action.id }, action.id ); } function renderFooterContent(data, actions, getItemId2, selection, actionsToShow, selectedItems, actionInProgress, setActionInProgress, onChangeSelection, paginationInfo) { const message2 = getFooterMessage( selection.length, data.length, paginationInfo.totalItems ); return /* @__PURE__ */ (0, import_jsx_runtime186.jsxs)( Stack, { direction: "row", className: "dataviews-bulk-actions-footer__container", gap: "md", align: "center", children: [ /* @__PURE__ */ (0, import_jsx_runtime186.jsx)( BulkSelectionCheckbox, { selection, onChangeSelection, data, actions, getItemId: getItemId2 } ), /* @__PURE__ */ (0, import_jsx_runtime186.jsx)("span", { className: "dataviews-bulk-actions-footer__item-count", children: message2 }), /* @__PURE__ */ (0, import_jsx_runtime186.jsxs)( Stack, { direction: "row", className: "dataviews-bulk-actions-footer__action-buttons", gap: "xs", children: [ actionsToShow.map((action) => { return /* @__PURE__ */ (0, import_jsx_runtime186.jsx)( ActionButton, { action, selectedItems, actionInProgress, setActionInProgress }, action.id ); }), selectedItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime186.jsx)( import_components93.Button, { icon: close_small_default, showTooltip: true, tooltipPosition: "top", size: "compact", label: (0, import_i18n87.__)("Cancel"), disabled: !!actionInProgress, accessibleWhenDisabled: false, onClick: () => { onChangeSelection(EMPTY_ARRAY5); } } ) ] } ) ] } ); } function FooterContent({ selection, actions, onChangeSelection, data, getItemId: getItemId2, paginationInfo }) { const [actionInProgress, setActionInProgress] = (0, import_element70.useState)( null ); const footerContentRef = (0, import_element70.useRef)(void 0); const isMobile = (0, import_compose13.useViewportMatch)("medium", "<"); const bulkActions = (0, import_element70.useMemo)( () => actions.filter((action) => action.supportsBulk), [actions] ); const selectableItems = (0, import_element70.useMemo)(() => { return data.filter((item) => { return bulkActions.some( (action) => !action.isEligible || action.isEligible(item) ); }); }, [data, bulkActions]); const selectedItems = (0, import_element70.useMemo)(() => { return data.filter( (item) => selection.includes(getItemId2(item)) && selectableItems.includes(item) ); }, [selection, data, getItemId2, selectableItems]); const actionsToShow = (0, import_element70.useMemo)( () => actions.filter((action) => { return action.supportsBulk && (!isMobile || action.icon) && selectedItems.some( (item) => !action.isEligible || action.isEligible(item) ); }), [actions, selectedItems, isMobile] ); if (!actionInProgress) { if (footerContentRef.current) { footerContentRef.current = void 0; } return renderFooterContent( data, actions, getItemId2, selection, actionsToShow, selectedItems, actionInProgress, setActionInProgress, onChangeSelection, paginationInfo ); } else if (!footerContentRef.current) { footerContentRef.current = renderFooterContent( data, actions, getItemId2, selection, actionsToShow, selectedItems, actionInProgress, setActionInProgress, onChangeSelection, paginationInfo ); } return footerContentRef.current; } function BulkActionsFooter() { const { data, selection, actions = EMPTY_ARRAY5, onChangeSelection, getItemId: getItemId2, paginationInfo } = (0, import_element70.useContext)(dataviews_context_default); return /* @__PURE__ */ (0, import_jsx_runtime186.jsx)( FooterContent, { selection, onChangeSelection, data, actions, getItemId: getItemId2, paginationInfo } ); } // packages/dataviews/build-module/components/dataviews-layouts/table/column-header-menu.mjs var import_i18n88 = __toESM(require_i18n(), 1); var import_components94 = __toESM(require_components(), 1); var import_element71 = __toESM(require_element(), 1); // packages/dataviews/build-module/utils/get-hideable-fields.mjs function getHideableFields(view, fields) { const togglableFields = [ view?.titleField, view?.mediaField, view?.descriptionField ].filter(Boolean); return fields.filter( (f2) => !togglableFields.includes(f2.id) && f2.type !== "media" && f2.enableHiding !== false ); } // packages/dataviews/build-module/components/dataviews-layouts/table/column-header-menu.mjs var import_jsx_runtime187 = __toESM(require_jsx_runtime(), 1); var { Menu: Menu6 } = unlock3(import_components94.privateApis); function WithMenuSeparators({ children }) { return import_element71.Children.toArray(children).filter(Boolean).map((child, i2) => /* @__PURE__ */ (0, import_jsx_runtime187.jsxs)(import_element71.Fragment, { children: [ i2 > 0 && /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(Menu6.Separator, {}), child ] }, i2)); } var _HeaderMenu = (0, import_element71.forwardRef)(function HeaderMenu({ fieldId, view, fields, onChangeView, onHide, setOpenedFilter, canMove = true, canInsertLeft = true, canInsertRight = true }, ref) { const visibleFieldIds = view.fields ?? []; const index = visibleFieldIds?.indexOf(fieldId); const isSorted = view.sort?.field === fieldId; let isHidable = false; let isSortable = false; let canAddFilter = false; let operators = []; const field = fields.find((f2) => f2.id === fieldId); const { setIsShowingFilter } = (0, import_element71.useContext)(dataviews_context_default); if (!field) { return null; } isHidable = field.enableHiding !== false; isSortable = field.enableSorting !== false; const header = field.header; operators = !!field.filterBy && field.filterBy?.operators || []; canAddFilter = !view.filters?.some((_filter) => fieldId === _filter.field) && !!(field.hasElements || field.Edit) && field.filterBy !== false && !field.filterBy?.isPrimary; if (!isSortable && !canMove && !isHidable && !canAddFilter) { return header; } const hiddenFields = getHideableFields(view, fields).filter( (f2) => !visibleFieldIds.includes(f2.id) ); const canInsert = (canInsertLeft || canInsertRight) && !!hiddenFields.length; const isRtl = (0, import_i18n88.isRTL)(); return /* @__PURE__ */ (0, import_jsx_runtime187.jsxs)(Menu6, { children: [ /* @__PURE__ */ (0, import_jsx_runtime187.jsxs)( Menu6.TriggerButton, { render: /* @__PURE__ */ (0, import_jsx_runtime187.jsx)( import_components94.Button, { size: "compact", className: "dataviews-view-table-header-button", ref, variant: "tertiary" } ), children: [ header, view.sort && isSorted && /* @__PURE__ */ (0, import_jsx_runtime187.jsx)("span", { "aria-hidden": "true", children: sortArrows[view.sort.direction] }) ] } ), /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(Menu6.Popover, { style: { minWidth: "240px" }, children: /* @__PURE__ */ (0, import_jsx_runtime187.jsxs)(WithMenuSeparators, { children: [ isSortable && /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(Menu6.Group, { children: SORTING_DIRECTIONS.map( (direction) => { const isChecked = view.sort && isSorted && view.sort.direction === direction; const value = `${fieldId}-${direction}`; return /* @__PURE__ */ (0, import_jsx_runtime187.jsx)( Menu6.RadioItem, { name: "view-table-sorting", value, checked: isChecked, onChange: () => { onChangeView({ ...view, sort: { field: fieldId, direction }, showLevels: false }); }, children: /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(Menu6.ItemLabel, { children: sortLabels[direction] }) }, value ); } ) }), canAddFilter && /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(Menu6.Group, { children: /* @__PURE__ */ (0, import_jsx_runtime187.jsx)( Menu6.Item, { prefix: /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(import_components94.Icon, { icon: funnel_default }), onClick: () => { setOpenedFilter(fieldId); setIsShowingFilter(true); onChangeView({ ...view, page: 1, filters: [ ...view.filters || [], { field: fieldId, value: void 0, operator: operators[0] } ] }); }, children: /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(Menu6.ItemLabel, { children: (0, import_i18n88.__)("Add filter") }) } ) }), (canMove || isHidable || canInsert) && field && /* @__PURE__ */ (0, import_jsx_runtime187.jsxs)(Menu6.Group, { children: [ canMove && /* @__PURE__ */ (0, import_jsx_runtime187.jsx)( Menu6.Item, { prefix: /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(import_components94.Icon, { icon: arrow_left_default }), disabled: isRtl ? index >= visibleFieldIds.length - 1 : index < 1, onClick: () => { const targetIndex = isRtl ? index + 1 : index - 1; const newFields = [ ...visibleFieldIds ]; newFields.splice(index, 1); newFields.splice( targetIndex, 0, fieldId ); onChangeView({ ...view, fields: newFields }); }, children: /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(Menu6.ItemLabel, { children: (0, import_i18n88.__)("Move left") }) } ), canMove && /* @__PURE__ */ (0, import_jsx_runtime187.jsx)( Menu6.Item, { prefix: /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(import_components94.Icon, { icon: arrow_right_default }), disabled: isRtl ? index < 1 : index >= visibleFieldIds.length - 1, onClick: () => { const targetIndex = isRtl ? index - 1 : index + 1; const newFields = [ ...visibleFieldIds ]; newFields.splice(index, 1); newFields.splice( targetIndex, 0, fieldId ); onChangeView({ ...view, fields: newFields }); }, children: /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(Menu6.ItemLabel, { children: (0, import_i18n88.__)("Move right") }) } ), canInsertLeft && !!hiddenFields.length && /* @__PURE__ */ (0, import_jsx_runtime187.jsxs)(Menu6, { children: [ /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(Menu6.SubmenuTriggerItem, { children: /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(Menu6.ItemLabel, { children: (0, import_i18n88.__)("Insert left") }) }), /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(Menu6.Popover, { children: hiddenFields.map((hiddenField) => { const insertIndex = isRtl ? index + 1 : index; return /* @__PURE__ */ (0, import_jsx_runtime187.jsx)( Menu6.Item, { onClick: () => { onChangeView({ ...view, fields: [ ...visibleFieldIds.slice( 0, insertIndex ), hiddenField.id, ...visibleFieldIds.slice( insertIndex ) ] }); }, children: /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(Menu6.ItemLabel, { children: hiddenField.label }) }, hiddenField.id ); }) }) ] }), canInsertRight && !!hiddenFields.length && /* @__PURE__ */ (0, import_jsx_runtime187.jsxs)(Menu6, { children: [ /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(Menu6.SubmenuTriggerItem, { children: /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(Menu6.ItemLabel, { children: (0, import_i18n88.__)("Insert right") }) }), /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(Menu6.Popover, { children: hiddenFields.map((hiddenField) => { const insertIndex = isRtl ? index : index + 1; return /* @__PURE__ */ (0, import_jsx_runtime187.jsx)( Menu6.Item, { onClick: () => { onChangeView({ ...view, fields: [ ...visibleFieldIds.slice( 0, insertIndex ), hiddenField.id, ...visibleFieldIds.slice( insertIndex ) ] }); }, children: /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(Menu6.ItemLabel, { children: hiddenField.label }) }, hiddenField.id ); }) }) ] }), isHidable && field && /* @__PURE__ */ (0, import_jsx_runtime187.jsx)( Menu6.Item, { prefix: /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(import_components94.Icon, { icon: unseen_default }), onClick: () => { onHide(field); onChangeView({ ...view, fields: visibleFieldIds.filter( (id) => id !== fieldId ) }); }, children: /* @__PURE__ */ (0, import_jsx_runtime187.jsx)(Menu6.ItemLabel, { children: (0, import_i18n88.__)("Hide column") }) } ) ] }) ] }) }) ] }); }); var ColumnHeaderMenu = _HeaderMenu; var column_header_menu_default = ColumnHeaderMenu; // packages/dataviews/build-module/components/dataviews-layouts/utils/item-click-wrapper.mjs var import_element72 = __toESM(require_element(), 1); var import_jsx_runtime188 = __toESM(require_jsx_runtime(), 1); function getClickableItemProps({ item, isItemClickable, onClickItem, className }) { if (!isItemClickable(item) || !onClickItem) { return { className }; } return { className: className ? `${className} ${className}--clickable` : void 0, role: "button", tabIndex: 0, onClick: (event) => { event.stopPropagation(); onClickItem(item); }, onKeyDown: (event) => { if (event.key === "Enter" || event.key === "" || event.key === " ") { event.stopPropagation(); onClickItem(item); } } }; } function ItemClickWrapper({ item, isItemClickable, onClickItem, renderItemLink, className, children, ...extraProps }) { if (!isItemClickable(item)) { return /* @__PURE__ */ (0, import_jsx_runtime188.jsx)("div", { className, ...extraProps, children }); } if (renderItemLink) { const renderedElement = renderItemLink({ item, className: `${className} ${className}--clickable`, ...extraProps, children }); return (0, import_element72.cloneElement)(renderedElement, { onClick: (event) => { event.stopPropagation(); if (renderedElement.props.onClick) { renderedElement.props.onClick(event); } }, onKeyDown: (event) => { if (event.key === "Enter" || event.key === "" || event.key === " ") { event.stopPropagation(); if (renderedElement.props.onKeyDown) { renderedElement.props.onKeyDown(event); } } } }); } const clickProps = getClickableItemProps({ item, isItemClickable, onClickItem, className }); return /* @__PURE__ */ (0, import_jsx_runtime188.jsx)("div", { ...clickProps, ...extraProps, children }); } // packages/dataviews/build-module/components/dataviews-layouts/table/column-primary.mjs var import_jsx_runtime189 = __toESM(require_jsx_runtime(), 1); function ColumnPrimary({ item, level, titleField, mediaField, descriptionField: descriptionField2, onClickItem, renderItemLink, isItemClickable }) { return /* @__PURE__ */ (0, import_jsx_runtime189.jsxs)(Stack, { direction: "row", gap: "md", align: "flex-start", justify: "flex-start", children: [ mediaField && /* @__PURE__ */ (0, import_jsx_runtime189.jsx)( ItemClickWrapper, { item, isItemClickable, onClickItem, renderItemLink, className: "dataviews-view-table__cell-content-wrapper dataviews-column-primary__media", "aria-label": isItemClickable(item) && (!!onClickItem || !!renderItemLink) && !!titleField ? titleField.getValue?.({ item }) : void 0, children: /* @__PURE__ */ (0, import_jsx_runtime189.jsx)( mediaField.render, { item, field: mediaField, config: { sizes: "32px" } } ) } ), /* @__PURE__ */ (0, import_jsx_runtime189.jsxs)( Stack, { direction: "column", align: "flex-start", className: "dataviews-view-table__primary-column-content", children: [ titleField && /* @__PURE__ */ (0, import_jsx_runtime189.jsxs)( ItemClickWrapper, { item, isItemClickable, onClickItem, renderItemLink, className: "dataviews-view-table__cell-content-wrapper dataviews-title-field", children: [ level !== void 0 && level > 0 && /* @__PURE__ */ (0, import_jsx_runtime189.jsxs)("span", { className: "dataviews-view-table__level", children: [ Array(level).fill("\u2014").join(" "), "\xA0" ] }), /* @__PURE__ */ (0, import_jsx_runtime189.jsx)(titleField.render, { item, field: titleField }) ] } ), descriptionField2 && /* @__PURE__ */ (0, import_jsx_runtime189.jsx)( descriptionField2.render, { item, field: descriptionField2 } ) ] } ) ] }); } var column_primary_default = ColumnPrimary; // packages/dataviews/build-module/components/dataviews-layouts/table/use-is-horizontal-scroll-end.mjs var import_compose14 = __toESM(require_compose(), 1); var import_element73 = __toESM(require_element(), 1); var import_i18n89 = __toESM(require_i18n(), 1); var isScrolledToEnd = (element) => { if ((0, import_i18n89.isRTL)()) { const scrollLeft = Math.abs(element.scrollLeft); return scrollLeft <= 1; } return element.scrollLeft + element.clientWidth >= element.scrollWidth - 1; }; function useIsHorizontalScrollEnd({ scrollContainerRef, enabled = false }) { const [isHorizontalScrollEnd, setIsHorizontalScrollEnd] = (0, import_element73.useState)(false); const handleIsHorizontalScrollEnd = (0, import_compose14.useDebounce)( (0, import_element73.useCallback)(() => { const scrollContainer = scrollContainerRef.current; if (scrollContainer) { setIsHorizontalScrollEnd(isScrolledToEnd(scrollContainer)); } }, [scrollContainerRef, setIsHorizontalScrollEnd]), 200 ); (0, import_element73.useEffect)(() => { if (typeof window === "undefined" || !enabled || !scrollContainerRef.current) { return () => { }; } handleIsHorizontalScrollEnd(); scrollContainerRef.current.addEventListener( "scroll", handleIsHorizontalScrollEnd ); window.addEventListener("resize", handleIsHorizontalScrollEnd); return () => { scrollContainerRef.current?.removeEventListener( "scroll", handleIsHorizontalScrollEnd ); window.removeEventListener("resize", handleIsHorizontalScrollEnd); }; }, [scrollContainerRef, enabled]); return isHorizontalScrollEnd; } // packages/dataviews/build-module/components/dataviews-layouts/utils/get-data-by-group.mjs function getDataByGroup(data, groupByField) { return data.reduce((groups, item) => { const groupName = groupByField.getValue({ item }); if (!groups.has(groupName)) { groups.set(groupName, []); } groups.get(groupName)?.push(item); return groups; }, /* @__PURE__ */ new Map()); } // packages/dataviews/build-module/components/dataviews-view-config/properties-section.mjs var import_components95 = __toESM(require_components(), 1); var import_i18n90 = __toESM(require_i18n(), 1); var import_element74 = __toESM(require_element(), 1); var import_jsx_runtime190 = __toESM(require_jsx_runtime(), 1); function FieldItem({ field, isVisible: isVisible2, onToggleVisibility }) { return /* @__PURE__ */ (0, import_jsx_runtime190.jsx)(import_components95.__experimentalItem, { onClick: field.enableHiding ? onToggleVisibility : void 0, children: /* @__PURE__ */ (0, import_jsx_runtime190.jsxs)(Stack, { direction: "row", gap: "sm", justify: "flex-start", align: "center", children: [ /* @__PURE__ */ (0, import_jsx_runtime190.jsx)("div", { style: { height: 24, width: 24 }, children: isVisible2 && /* @__PURE__ */ (0, import_jsx_runtime190.jsx)(import_components95.Icon, { icon: check_default }) }), /* @__PURE__ */ (0, import_jsx_runtime190.jsx)("span", { className: "dataviews-view-config__label", children: field.label }) ] }) }); } function isDefined(item) { return !!item; } function PropertiesSection({ showLabel = true }) { const { view, fields, onChangeView } = (0, import_element74.useContext)(dataviews_context_default); const regularFields = getHideableFields(view, fields); if (!regularFields?.length) { return null; } const titleField = fields.find((f2) => f2.id === view.titleField); const previewField3 = fields.find((f2) => f2.id === view.mediaField); const descriptionField2 = fields.find( (f2) => f2.id === view.descriptionField ); const lockedFields = [ { field: titleField, isVisibleFlag: "showTitle" }, { field: previewField3, isVisibleFlag: "showMedia" }, { field: descriptionField2, isVisibleFlag: "showDescription" } ].filter(({ field }) => isDefined(field)); const visibleFieldIds = view.fields ?? []; const visibleRegularFieldsCount = regularFields.filter( (f2) => visibleFieldIds.includes(f2.id) ).length; const visibleLockedFields = lockedFields.filter( ({ isVisibleFlag }) => ( // @ts-expect-error view[isVisibleFlag] ?? true ) ); const totalVisibleFields = visibleLockedFields.length + visibleRegularFieldsCount; const isSingleVisibleLockedField = totalVisibleFields === 1 && visibleLockedFields.length === 1; return /* @__PURE__ */ (0, import_jsx_runtime190.jsxs)(Stack, { direction: "column", className: "dataviews-field-control", children: [ showLabel && /* @__PURE__ */ (0, import_jsx_runtime190.jsx)(import_components95.BaseControl.VisualLabel, { children: (0, import_i18n90.__)("Properties") }), /* @__PURE__ */ (0, import_jsx_runtime190.jsx)( Stack, { direction: "column", className: "dataviews-view-config__properties", children: /* @__PURE__ */ (0, import_jsx_runtime190.jsxs)(import_components95.__experimentalItemGroup, { isBordered: true, isSeparated: true, size: "medium", children: [ lockedFields.map(({ field, isVisibleFlag }) => { const isVisible2 = view[isVisibleFlag] ?? true; const fieldToRender = isSingleVisibleLockedField && isVisible2 ? { ...field, enableHiding: false } : field; return /* @__PURE__ */ (0, import_jsx_runtime190.jsx)( FieldItem, { field: fieldToRender, isVisible: isVisible2, onToggleVisibility: () => { onChangeView({ ...view, [isVisibleFlag]: !isVisible2 }); } }, field.id ); }), regularFields.map((field) => { const isVisible2 = visibleFieldIds.includes(field.id); const fieldToRender = totalVisibleFields === 1 && isVisible2 ? { ...field, enableHiding: false } : field; return /* @__PURE__ */ (0, import_jsx_runtime190.jsx)( FieldItem, { field: fieldToRender, isVisible: isVisible2, onToggleVisibility: () => { onChangeView({ ...view, fields: isVisible2 ? visibleFieldIds.filter( (fieldId) => fieldId !== field.id ) : [...visibleFieldIds, field.id] }); } }, field.id ); }) ] }) } ) ] }); } // packages/dataviews/build-module/hooks/use-delayed-loading.mjs var import_element75 = __toESM(require_element(), 1); function useDelayedLoading(isLoading, options = { delay: 400 }) { const [showLoader, setShowLoader] = (0, import_element75.useState)(false); (0, import_element75.useEffect)(() => { if (!isLoading) { return; } const timeout = setTimeout(() => { setShowLoader(true); }, options.delay); return () => { clearTimeout(timeout); setShowLoader(false); }; }, [isLoading, options.delay]); return showLoader; } // packages/dataviews/build-module/components/dataviews-layouts/table/index.mjs var import_jsx_runtime191 = __toESM(require_jsx_runtime(), 1); function getEffectiveAlign(explicitAlign, fieldType) { if (explicitAlign) { return explicitAlign; } if (fieldType === "integer" || fieldType === "number") { return "end"; } return void 0; } function TableColumnField({ item, fields, column, align }) { const field = fields.find((f2) => f2.id === column); if (!field) { return null; } const className = clsx_default("dataviews-view-table__cell-content-wrapper", { "dataviews-view-table__cell-align-end": align === "end", "dataviews-view-table__cell-align-center": align === "center" }); return /* @__PURE__ */ (0, import_jsx_runtime191.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime191.jsx)(field.render, { item, field }) }); } function TableRow({ hasBulkActions, item, level, actions, fields, id, view, titleField, mediaField, descriptionField: descriptionField2, selection, getItemId: getItemId2, isItemClickable, onClickItem, renderItemLink, onChangeSelection, isActionsColumnSticky, posinset }) { const { paginationInfo } = (0, import_element76.useContext)(dataviews_context_default); const hasPossibleBulkAction = useHasAPossibleBulkAction(actions, item); const isSelected2 = hasPossibleBulkAction && selection.includes(id); const { showTitle = true, showMedia = true, showDescription = true, infiniteScrollEnabled } = view; const isTouchDeviceRef = (0, import_element76.useRef)(false); const columns = view.fields ?? []; const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField2 && showDescription; return /* @__PURE__ */ (0, import_jsx_runtime191.jsxs)( "tr", { className: clsx_default("dataviews-view-table__row", { "is-selected": hasPossibleBulkAction && isSelected2, "has-bulk-actions": hasPossibleBulkAction }), onTouchStart: () => { isTouchDeviceRef.current = true; }, "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : void 0, "aria-posinset": posinset, role: infiniteScrollEnabled ? "article" : void 0, onMouseDown: (event) => { const isMetaClick = (0, import_keycodes6.isAppleOS)() ? event.metaKey : event.ctrlKey; if (event.button === 0 && isMetaClick && window.navigator.userAgent.toLowerCase().includes("firefox")) { event?.preventDefault(); } }, onClick: (event) => { if (!hasPossibleBulkAction) { return; } const isModifierKeyPressed = (0, import_keycodes6.isAppleOS)() ? event.metaKey : event.ctrlKey; if (isModifierKeyPressed && !isTouchDeviceRef.current && document.getSelection()?.type !== "Range") { onChangeSelection( selection.includes(id) ? selection.filter((itemId) => id !== itemId) : [...selection, id] ); } }, children: [ hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime191.jsx)("td", { className: "dataviews-view-table__checkbox-column", children: /* @__PURE__ */ (0, import_jsx_runtime191.jsx)("div", { className: "dataviews-view-table__cell-content-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime191.jsx)( DataViewsSelectionCheckbox, { item, selection, onChangeSelection, getItemId: getItemId2, titleField, disabled: !hasPossibleBulkAction } ) }) }), hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime191.jsx)("td", { children: /* @__PURE__ */ (0, import_jsx_runtime191.jsx)( column_primary_default, { item, level, titleField: showTitle ? titleField : void 0, mediaField: showMedia ? mediaField : void 0, descriptionField: showDescription ? descriptionField2 : void 0, isItemClickable, onClickItem, renderItemLink } ) }), columns.map((column) => { const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {}; const field = fields.find((f2) => f2.id === column); const effectiveAlign = getEffectiveAlign(align, field?.type); return /* @__PURE__ */ (0, import_jsx_runtime191.jsx)( "td", { style: { width, maxWidth, minWidth }, children: /* @__PURE__ */ (0, import_jsx_runtime191.jsx)( TableColumnField, { fields, item, column, align: effectiveAlign } ) }, column ); }), !!actions?.length && // Disable reason: we are not making the element interactive, // but preventing any click events from bubbling up to the // table row. This allows us to add a click handler to the row // itself (to toggle row selection) without erroneously // intercepting click events from ItemActions. /* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events */ /* @__PURE__ */ (0, import_jsx_runtime191.jsx)( "td", { className: clsx_default("dataviews-view-table__actions-column", { "dataviews-view-table__actions-column--sticky": true, "dataviews-view-table__actions-column--stuck": isActionsColumnSticky }), onClick: (e2) => e2.stopPropagation(), children: /* @__PURE__ */ (0, import_jsx_runtime191.jsx)(ItemActions, { item, actions }) } ) ] } ); } function ViewTable({ actions, data, fields, getItemId: getItemId2, getItemLevel: getItemLevel2, isLoading = false, onChangeView, onChangeSelection, selection, setOpenedFilter, onClickItem, isItemClickable, renderItemLink, view, className, empty }) { const { containerRef } = (0, import_element76.useContext)(dataviews_context_default); const isDelayedLoading = useDelayedLoading(isLoading); const headerMenuRefs = (0, import_element76.useRef)(/* @__PURE__ */ new Map()); const headerMenuToFocusRef = (0, import_element76.useRef)(void 0); const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0, import_element76.useState)(); const [contextMenuAnchor, setContextMenuAnchor] = (0, import_element76.useState)(null); (0, import_element76.useEffect)(() => { if (headerMenuToFocusRef.current) { headerMenuToFocusRef.current.focus(); headerMenuToFocusRef.current = void 0; } }); const tableNoticeId = (0, import_element76.useId)(); const isHorizontalScrollEnd = useIsHorizontalScrollEnd({ scrollContainerRef: containerRef, enabled: !!actions?.length }); const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data); if (nextHeaderMenuToFocus) { headerMenuToFocusRef.current = nextHeaderMenuToFocus; setNextHeaderMenuToFocus(void 0); return; } const onHide = (field) => { const hidden = headerMenuRefs.current.get(field.id); const fallback = hidden ? headerMenuRefs.current.get(hidden.fallback) : void 0; setNextHeaderMenuToFocus(fallback?.node); }; const handleHeaderContextMenu = (event) => { event.preventDefault(); event.stopPropagation(); const virtualAnchor = { getBoundingClientRect: () => ({ x: event.clientX, y: event.clientY, top: event.clientY, left: event.clientX, right: event.clientX, bottom: event.clientY, width: 0, height: 0, toJSON: () => ({}) }) }; window.requestAnimationFrame(() => { setContextMenuAnchor(virtualAnchor); }); }; const hasData = !!data?.length; const titleField = fields.find((field) => field.id === view.titleField); const mediaField = fields.find((field) => field.id === view.mediaField); const descriptionField2 = fields.find( (field) => field.id === view.descriptionField ); const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null; const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; const { showTitle = true, showMedia = true, showDescription = true } = view; const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField2 && showDescription; const columns = view.fields ?? []; const headerMenuRef = (column, index) => (node) => { if (node) { headerMenuRefs.current.set(column, { node, fallback: columns[index > 0 ? index - 1 : 1] }); } else { headerMenuRefs.current.delete(column); } }; const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; const isRtl = (0, import_i18n91.isRTL)(); if (!hasData) { return /* @__PURE__ */ (0, import_jsx_runtime191.jsx)( "div", { className: clsx_default("dataviews-no-results", { "is-refreshing": isDelayedLoading }), id: tableNoticeId, children: empty } ); } return /* @__PURE__ */ (0, import_jsx_runtime191.jsxs)(import_jsx_runtime191.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime191.jsxs)( "table", { className: clsx_default("dataviews-view-table", className, { [`has-${view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes( view.layout.density ), "has-bulk-actions": hasBulkActions, "is-refreshing": !isInfiniteScroll && isDelayedLoading }), "aria-busy": isLoading, "aria-describedby": tableNoticeId, role: isInfiniteScroll ? "feed" : void 0, inert: !isInfiniteScroll && isLoading ? "true" : void 0, children: [ /* @__PURE__ */ (0, import_jsx_runtime191.jsxs)("colgroup", { children: [ hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime191.jsx)("col", { className: "dataviews-view-table__col-checkbox" }), hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime191.jsx)("col", { className: "dataviews-view-table__col-first-data" }), columns.map((column, index) => /* @__PURE__ */ (0, import_jsx_runtime191.jsx)( "col", { className: clsx_default( `dataviews-view-table__col-${column}`, { "dataviews-view-table__col-first-data": !hasPrimaryColumn && index === 0 } ) }, `col-${column}` )), !!actions?.length && /* @__PURE__ */ (0, import_jsx_runtime191.jsx)("col", { className: "dataviews-view-table__col-actions" }) ] }), contextMenuAnchor && /* @__PURE__ */ (0, import_jsx_runtime191.jsx)( import_components96.Popover, { anchor: contextMenuAnchor, onClose: () => setContextMenuAnchor(null), placement: "bottom-start", children: /* @__PURE__ */ (0, import_jsx_runtime191.jsx)(PropertiesSection, { showLabel: false }) } ), /* @__PURE__ */ (0, import_jsx_runtime191.jsx)("thead", { onContextMenu: handleHeaderContextMenu, children: /* @__PURE__ */ (0, import_jsx_runtime191.jsxs)("tr", { className: "dataviews-view-table__row", children: [ hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime191.jsx)( "th", { className: "dataviews-view-table__checkbox-column", scope: "col", onContextMenu: handleHeaderContextMenu, children: /* @__PURE__ */ (0, import_jsx_runtime191.jsx)( BulkSelectionCheckbox, { selection, onChangeSelection, data, actions, getItemId: getItemId2 } ) } ), hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime191.jsx)("th", { scope: "col", children: titleField && /* @__PURE__ */ (0, import_jsx_runtime191.jsx)( column_header_menu_default, { ref: headerMenuRef( titleField.id, 0 ), fieldId: titleField.id, view, fields, onChangeView, onHide, setOpenedFilter, canMove: false, canInsertLeft: isRtl ? view.layout?.enableMoving ?? true : false, canInsertRight: isRtl ? false : view.layout?.enableMoving ?? true } ) }), columns.map((column, index) => { const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {}; const field = fields.find( (f2) => f2.id === column ); const effectiveAlign = getEffectiveAlign( align, field?.type ); const canInsertOrMove = view.layout?.enableMoving ?? true; return /* @__PURE__ */ (0, import_jsx_runtime191.jsx)( "th", { style: { width, maxWidth, minWidth, textAlign: effectiveAlign }, "aria-sort": view.sort?.direction && view.sort?.field === column ? sortValues[view.sort.direction] : void 0, scope: "col", children: /* @__PURE__ */ (0, import_jsx_runtime191.jsx)( column_header_menu_default, { ref: headerMenuRef(column, index), fieldId: column, view, fields, onChangeView, onHide, setOpenedFilter, canMove: canInsertOrMove, canInsertLeft: canInsertOrMove, canInsertRight: canInsertOrMove } ) }, column ); }), !!actions?.length && /* @__PURE__ */ (0, import_jsx_runtime191.jsx)( "th", { className: clsx_default( "dataviews-view-table__actions-column", { "dataviews-view-table__actions-column--sticky": true, "dataviews-view-table__actions-column--stuck": !isHorizontalScrollEnd } ), children: /* @__PURE__ */ (0, import_jsx_runtime191.jsx)("span", { className: "dataviews-view-table-header", children: (0, import_i18n91.__)("Actions") }) } ) ] }) }), hasData && groupField && dataByGroup ? Array.from(dataByGroup.entries()).map( ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime191.jsxs)("tbody", { children: [ /* @__PURE__ */ (0, import_jsx_runtime191.jsx)("tr", { className: "dataviews-view-table__group-header-row", children: /* @__PURE__ */ (0, import_jsx_runtime191.jsx)( "td", { colSpan: columns.length + (hasPrimaryColumn ? 1 : 0) + (hasBulkActions ? 1 : 0) + (actions?.length ? 1 : 0), className: "dataviews-view-table__group-header-cell", children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n91.sprintf)( // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". (0, import_i18n91.__)("%1$s: %2$s"), groupField.label, groupName ) } ) }), groupItems.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime191.jsx)( TableRow, { item, level: view.showLevels && typeof getItemLevel2 === "function" ? getItemLevel2(item) : void 0, hasBulkActions, actions, fields, id: getItemId2(item) || index.toString(), view, titleField, mediaField, descriptionField: descriptionField2, selection, getItemId: getItemId2, onChangeSelection, onClickItem, renderItemLink, isItemClickable, isActionsColumnSticky: !isHorizontalScrollEnd }, getItemId2(item) )) ] }, `group-${groupName}`) ) : /* @__PURE__ */ (0, import_jsx_runtime191.jsx)("tbody", { children: hasData && data.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime191.jsx)( TableRow, { item, level: view.showLevels && typeof getItemLevel2 === "function" ? getItemLevel2(item) : void 0, hasBulkActions, actions, fields, id: getItemId2(item) || index.toString(), view, titleField, mediaField, descriptionField: descriptionField2, selection, getItemId: getItemId2, onChangeSelection, onClickItem, renderItemLink, isItemClickable, isActionsColumnSticky: !isHorizontalScrollEnd, posinset: isInfiniteScroll ? index + 1 : void 0 }, getItemId2(item) )) }) ] } ), isInfiniteScroll && isLoading && /* @__PURE__ */ (0, import_jsx_runtime191.jsx)("div", { className: "dataviews-loading", id: tableNoticeId, children: /* @__PURE__ */ (0, import_jsx_runtime191.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime191.jsx)(import_components96.Spinner, {}) }) }) ] }); } var table_default = ViewTable; // packages/dataviews/build-module/components/dataviews-layouts/grid/index.mjs var import_components99 = __toESM(require_components(), 1); var import_i18n94 = __toESM(require_i18n(), 1); // packages/dataviews/build-module/components/dataviews-layouts/grid/composite-grid.mjs var import_components98 = __toESM(require_components(), 1); var import_i18n93 = __toESM(require_i18n(), 1); var import_compose15 = __toESM(require_compose(), 1); var import_keycodes7 = __toESM(require_keycodes(), 1); var import_element78 = __toESM(require_element(), 1); // packages/dataviews/build-module/components/dataviews-layouts/grid/preview-size-picker.mjs var import_components97 = __toESM(require_components(), 1); var import_i18n92 = __toESM(require_i18n(), 1); var import_element77 = __toESM(require_element(), 1); var import_jsx_runtime192 = __toESM(require_jsx_runtime(), 1); var imageSizes = [ { value: 120, breakpoint: 1 }, { value: 170, breakpoint: 1 }, { value: 230, breakpoint: 1 }, { value: 290, breakpoint: 1112 // at minimum image width, 4 images display at this container size }, { value: 350, breakpoint: 1636 // at minimum image width, 6 images display at this container size }, { value: 430, breakpoint: 588 // at minimum image width, 2 images display at this container size } ]; var DEFAULT_PREVIEW_SIZE = imageSizes[2].value; function useGridColumns() { const context = (0, import_element77.useContext)(dataviews_context_default); const view = context.view; return (0, import_element77.useMemo)(() => { const containerWidth = context.containerWidth; const gap = 32; const previewSize = view.layout?.previewSize ?? DEFAULT_PREVIEW_SIZE; const columns = Math.floor( (containerWidth + gap) / (previewSize + gap) ); return Math.max(1, columns); }, [context.containerWidth, view.layout?.previewSize]); } // packages/dataviews/build-module/components/dataviews-layouts/grid/composite-grid.mjs var import_jsx_runtime193 = __toESM(require_jsx_runtime(), 1); var { Badge: Badge3 } = unlock3(import_components98.privateApis); function chunk(array, size) { const chunks = []; for (let i2 = 0, j2 = array.length; i2 < j2; i2 += size) { chunks.push(array.slice(i2, i2 + size)); } return chunks; } var GridItem = (0, import_element78.forwardRef)(function GridItem2({ view, selection, onChangeSelection, onClickItem, isItemClickable, renderItemLink, getItemId: getItemId2, item, actions, mediaField, titleField, descriptionField: descriptionField2, regularFields, badgeFields, hasBulkActions, config: config2, ...props }, ref) { const { showTitle = true, showMedia = true, showDescription = true } = view; const hasBulkAction = useHasAPossibleBulkAction(actions, item); const id = getItemId2(item); const instanceId = (0, import_compose15.useInstanceId)(GridItem2); const isSelected2 = selection.includes(id); const mediaPlaceholder = /* @__PURE__ */ (0, import_jsx_runtime193.jsx)("span", { className: "dataviews-view-grid__media-placeholder" }); const rendersMediaField = showMedia && mediaField?.render; const renderedMediaField = rendersMediaField ? /* @__PURE__ */ (0, import_jsx_runtime193.jsx)( mediaField.render, { item, field: mediaField, config: config2 } ) : mediaPlaceholder; const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime193.jsx)(titleField.render, { item, field: titleField }) : null; let mediaA11yProps; let titleA11yProps; if (isItemClickable(item) && onClickItem) { if (renderedTitleField) { mediaA11yProps = { "aria-labelledby": `dataviews-view-grid__title-field-${instanceId}` }; titleA11yProps = { id: `dataviews-view-grid__title-field-${instanceId}` }; } else { mediaA11yProps = { "aria-label": (0, import_i18n93.__)("Navigate to item") }; } } return /* @__PURE__ */ (0, import_jsx_runtime193.jsxs)( Stack, { direction: "column", ...props, ref, className: clsx_default( props.className, "dataviews-view-grid__row__gridcell", "dataviews-view-grid__card", { "is-selected": hasBulkAction && isSelected2 } ), onClickCapture: (event) => { props.onClickCapture?.(event); if ((0, import_keycodes7.isAppleOS)() ? event.metaKey : event.ctrlKey) { event.stopPropagation(); event.preventDefault(); if (!hasBulkAction) { return; } onChangeSelection( selection.includes(id) ? selection.filter((itemId) => id !== itemId) : [...selection, id] ); } }, children: [ /* @__PURE__ */ (0, import_jsx_runtime193.jsx)( ItemClickWrapper, { item, isItemClickable, onClickItem, renderItemLink, className: clsx_default("dataviews-view-grid__media", { "dataviews-view-grid__media--placeholder": !rendersMediaField }), ...mediaA11yProps, children: renderedMediaField } ), hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime193.jsx)( DataViewsSelectionCheckbox, { item, selection, onChangeSelection, getItemId: getItemId2, titleField, disabled: !hasBulkAction } ), !!actions?.length && /* @__PURE__ */ (0, import_jsx_runtime193.jsx)("div", { className: "dataviews-view-grid__media-actions", children: /* @__PURE__ */ (0, import_jsx_runtime193.jsx)(ItemActions, { item, actions, isCompact: true }) }), showTitle && /* @__PURE__ */ (0, import_jsx_runtime193.jsx)("div", { className: "dataviews-view-grid__title", children: /* @__PURE__ */ (0, import_jsx_runtime193.jsx)( ItemClickWrapper, { item, isItemClickable, onClickItem, renderItemLink, className: "dataviews-view-grid__title-field dataviews-title-field", ...titleA11yProps, title: titleField?.getValueFormatted({ item, field: titleField }) || void 0, children: renderedTitleField } ) }), /* @__PURE__ */ (0, import_jsx_runtime193.jsxs)(Stack, { direction: "column", gap: "xs", children: [ showDescription && descriptionField2?.render && /* @__PURE__ */ (0, import_jsx_runtime193.jsx)( descriptionField2.render, { item, field: descriptionField2 } ), !!badgeFields?.length && /* @__PURE__ */ (0, import_jsx_runtime193.jsx)( Stack, { direction: "row", className: "dataviews-view-grid__badge-fields", gap: "sm", wrap: "wrap", align: "top", justify: "flex-start", children: badgeFields.map((field) => { return /* @__PURE__ */ (0, import_jsx_runtime193.jsx)( Badge3, { className: "dataviews-view-grid__field-value", children: /* @__PURE__ */ (0, import_jsx_runtime193.jsx)( field.render, { item, field } ) }, field.id ); }) } ), !!regularFields?.length && /* @__PURE__ */ (0, import_jsx_runtime193.jsx)( Stack, { direction: "column", className: "dataviews-view-grid__fields", gap: "xs", children: regularFields.map((field) => { return /* @__PURE__ */ (0, import_jsx_runtime193.jsx)( import_components98.Flex, { className: "dataviews-view-grid__field", gap: 1, justify: "flex-start", expanded: true, style: { height: "auto" }, direction: "row", children: /* @__PURE__ */ (0, import_jsx_runtime193.jsxs)(import_jsx_runtime193.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime193.jsx)(import_components98.Tooltip, { text: field.label, children: /* @__PURE__ */ (0, import_jsx_runtime193.jsx)(import_components98.FlexItem, { className: "dataviews-view-grid__field-name", children: field.header }) }), /* @__PURE__ */ (0, import_jsx_runtime193.jsx)( import_components98.FlexItem, { className: "dataviews-view-grid__field-value", style: { maxHeight: "none" }, children: /* @__PURE__ */ (0, import_jsx_runtime193.jsx)( field.render, { item, field } ) } ) ] }) }, field.id ); }) } ) ] }) ] } ); }); function CompositeGrid({ data, isInfiniteScroll, className, inert, isLoading, view, fields, selection, onChangeSelection, onClickItem, isItemClickable, renderItemLink, getItemId: getItemId2, actions }) { const { paginationInfo, resizeObserverRef } = (0, import_element78.useContext)(dataviews_context_default); const gridColumns = useGridColumns(); const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data); const titleField = fields.find( (field) => field.id === view?.titleField ); const mediaField = fields.find( (field) => field.id === view?.mediaField ); const descriptionField2 = fields.find( (field) => field.id === view?.descriptionField ); const otherFields = view.fields ?? []; const { regularFields, badgeFields } = otherFields.reduce( (accumulator, fieldId) => { const field = fields.find((f2) => f2.id === fieldId); if (!field) { return accumulator; } const key = view.layout?.badgeFields?.includes(fieldId) ? "badgeFields" : "regularFields"; accumulator[key].push(field); return accumulator; }, { regularFields: [], badgeFields: [] } ); const size = "900px"; const totalRows = Math.ceil(data.length / gridColumns); return /* @__PURE__ */ (0, import_jsx_runtime193.jsx)( import_components98.Composite, { role: isInfiniteScroll ? "feed" : "grid", className: clsx_default("dataviews-view-grid", className), focusWrap: true, "aria-busy": isLoading, "aria-rowcount": isInfiniteScroll ? void 0 : totalRows, ref: resizeObserverRef, inert, children: chunk(data, gridColumns).map((row, i2) => /* @__PURE__ */ (0, import_jsx_runtime193.jsx)( import_components98.Composite.Row, { render: /* @__PURE__ */ (0, import_jsx_runtime193.jsx)( "div", { role: "row", "aria-rowindex": i2 + 1, "aria-label": (0, import_i18n93.sprintf)( /* translators: %d: The row number in the grid */ (0, import_i18n93.__)("Row %d"), i2 + 1 ), className: "dataviews-view-grid__row", style: { gridTemplateColumns: `repeat( ${gridColumns}, minmax(0, 1fr) )` } } ), children: row.map((item, indexInRow) => { const index = i2 * gridColumns + indexInRow; return /* @__PURE__ */ (0, import_jsx_runtime193.jsx)( import_components98.Composite.Item, { render: (props) => /* @__PURE__ */ (0, import_jsx_runtime193.jsx)( GridItem, { ...props, role: isInfiniteScroll ? "article" : "gridcell", "aria-setsize": isInfiniteScroll ? paginationInfo.totalItems : void 0, "aria-posinset": isInfiniteScroll ? index + 1 : void 0, view, selection, onChangeSelection, onClickItem, isItemClickable, renderItemLink, getItemId: getItemId2, item, actions, mediaField, titleField, descriptionField: descriptionField2, regularFields, badgeFields, hasBulkActions, config: { sizes: size } } ) }, getItemId2(item) ); }) }, i2 )) } ); } // packages/dataviews/build-module/components/dataviews-layouts/grid/index.mjs var import_jsx_runtime194 = __toESM(require_jsx_runtime(), 1); function ViewGrid({ actions, data, fields, getItemId: getItemId2, isLoading, onChangeSelection, onClickItem, isItemClickable, renderItemLink, selection, view, className, empty }) { const isDelayedLoading = useDelayedLoading(!!isLoading); const hasData = !!data?.length; const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null; const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; if (!hasData) { return /* @__PURE__ */ (0, import_jsx_runtime194.jsx)( "div", { className: clsx_default("dataviews-no-results", { "is-refreshing": isDelayedLoading }), children: empty } ); } const gridProps = { className: clsx_default(className, { "is-refreshing": !isInfiniteScroll && isDelayedLoading }), inert: !isInfiniteScroll && !!isLoading ? "true" : void 0, isLoading, view, fields, selection, onChangeSelection, onClickItem, isItemClickable, renderItemLink, getItemId: getItemId2, actions }; return /* @__PURE__ */ (0, import_jsx_runtime194.jsxs)(import_jsx_runtime194.Fragment, { // Render multiple groups. children: [ hasData && groupField && dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime194.jsx)(Stack, { direction: "column", gap: "lg", children: Array.from(dataByGroup.entries()).map( ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime194.jsxs)( Stack, { direction: "column", gap: "sm", children: [ /* @__PURE__ */ (0, import_jsx_runtime194.jsx)("h3", { className: "dataviews-view-grid__group-header", children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n94.sprintf)( // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". (0, import_i18n94.__)("%1$s: %2$s"), groupField.label, groupName ) }), /* @__PURE__ */ (0, import_jsx_runtime194.jsx)( CompositeGrid, { ...gridProps, data: groupItems, isInfiniteScroll: false } ) ] }, groupName ) ) }), // Render a single grid with all data. !dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime194.jsx)( CompositeGrid, { ...gridProps, data, isInfiniteScroll: !!isInfiniteScroll } ), isInfiniteScroll && isLoading && /* @__PURE__ */ (0, import_jsx_runtime194.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime194.jsx)(import_components99.Spinner, {}) }) ] }); } var grid_default = ViewGrid; // packages/dataviews/build-module/components/dataviews-layouts/list/index.mjs var import_compose16 = __toESM(require_compose(), 1); var import_components100 = __toESM(require_components(), 1); var import_element79 = __toESM(require_element(), 1); var import_i18n95 = __toESM(require_i18n(), 1); var import_data61 = __toESM(require_data(), 1); var import_jsx_runtime195 = __toESM(require_jsx_runtime(), 1); var { Menu: Menu7 } = unlock3(import_components100.privateApis); function generateItemWrapperCompositeId(idPrefix) { return `${idPrefix}-item-wrapper`; } function generatePrimaryActionCompositeId(idPrefix, primaryActionId) { return `${idPrefix}-primary-action-${primaryActionId}`; } function generateDropdownTriggerCompositeId(idPrefix) { return `${idPrefix}-dropdown`; } function PrimaryActionGridCell({ idPrefix, primaryAction, item }) { const registry = (0, import_data61.useRegistry)(); const [isModalOpen, setIsModalOpen] = (0, import_element79.useState)(false); const compositeItemId = generatePrimaryActionCompositeId( idPrefix, primaryAction.id ); const label = typeof primaryAction.label === "string" ? primaryAction.label : primaryAction.label([item]); return "RenderModal" in primaryAction ? /* @__PURE__ */ (0, import_jsx_runtime195.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( import_components100.Composite.Item, { id: compositeItemId, render: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( import_components100.Button, { disabled: !!primaryAction.disabled, accessibleWhenDisabled: true, text: label, size: "small", onClick: () => setIsModalOpen(true) } ), children: isModalOpen && /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( ActionModal, { action: primaryAction, items: [item], closeModal: () => setIsModalOpen(false) } ) } ) }, primaryAction.id) : /* @__PURE__ */ (0, import_jsx_runtime195.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( import_components100.Composite.Item, { id: compositeItemId, render: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( import_components100.Button, { disabled: !!primaryAction.disabled, accessibleWhenDisabled: true, size: "small", onClick: () => { primaryAction.callback([item], { registry }); }, children: label } ) } ) }, primaryAction.id); } function ListItem({ view, actions, idPrefix, isSelected: isSelected2, item, titleField, mediaField, descriptionField: descriptionField2, onSelect, otherFields, onDropdownTriggerKeyDown, posinset }) { const { showTitle = true, showMedia = true, showDescription = true, infiniteScrollEnabled } = view; const itemRef = (0, import_element79.useRef)(null); const labelId = `${idPrefix}-label`; const descriptionId = `${idPrefix}-description`; const registry = (0, import_data61.useRegistry)(); const [isHovered, setIsHovered] = (0, import_element79.useState)(false); const [activeModalAction, setActiveModalAction] = (0, import_element79.useState)( null ); const handleHover = ({ type }) => { const isHover = type === "mouseenter"; setIsHovered(isHover); }; const { paginationInfo } = (0, import_element79.useContext)(dataviews_context_default); (0, import_element79.useEffect)(() => { if (isSelected2) { itemRef.current?.scrollIntoView({ behavior: "auto", block: "nearest", inline: "nearest" }); } }, [isSelected2]); const { primaryAction, eligibleActions } = (0, import_element79.useMemo)(() => { const _eligibleActions = actions.filter( (action) => !action.isEligible || action.isEligible(item) ); const _primaryActions = _eligibleActions.filter( (action) => action.isPrimary ); return { primaryAction: _primaryActions[0], eligibleActions: _eligibleActions }; }, [actions, item]); const hasOnlyOnePrimaryAction = primaryAction && actions.length === 1; const renderedMediaField = showMedia && mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime195.jsx)("div", { className: "dataviews-view-list__media-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( mediaField.render, { item, field: mediaField, config: { sizes: "52px" } } ) }) : null; const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime195.jsx)(titleField.render, { item, field: titleField }) : null; const usedActions = eligibleActions?.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime195.jsxs)( Stack, { direction: "row", gap: "md", className: "dataviews-view-list__item-actions", children: [ primaryAction && /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( PrimaryActionGridCell, { idPrefix, primaryAction, item } ), !hasOnlyOnePrimaryAction && /* @__PURE__ */ (0, import_jsx_runtime195.jsxs)("div", { role: "gridcell", children: [ /* @__PURE__ */ (0, import_jsx_runtime195.jsxs)(Menu7, { placement: "bottom-end", children: [ /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( Menu7.TriggerButton, { render: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( import_components100.Composite.Item, { id: generateDropdownTriggerCompositeId( idPrefix ), render: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( import_components100.Button, { size: "small", icon: more_vertical_default, label: (0, import_i18n95.__)("Actions"), accessibleWhenDisabled: true, disabled: !actions.length, onKeyDown: onDropdownTriggerKeyDown } ) } ) } ), /* @__PURE__ */ (0, import_jsx_runtime195.jsx)(Menu7.Popover, { children: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( ActionsMenuGroup, { actions: eligibleActions, item, registry, setActiveModalAction } ) }) ] }), !!activeModalAction && /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( ActionModal, { action: activeModalAction, items: [item], closeModal: () => setActiveModalAction(null) } ) ] }) ] } ); return /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( import_components100.Composite.Row, { ref: itemRef, render: ( /* aria-posinset breaks Composite.Row if passed to it directly. */ /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( "div", { "aria-posinset": posinset, "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : void 0 } ) ), role: infiniteScrollEnabled ? "article" : "row", className: clsx_default({ "is-selected": isSelected2, "is-hovered": isHovered }), onMouseEnter: handleHover, onMouseLeave: handleHover, children: /* @__PURE__ */ (0, import_jsx_runtime195.jsxs)( Stack, { direction: "row", className: "dataviews-view-list__item-wrapper", children: [ /* @__PURE__ */ (0, import_jsx_runtime195.jsx)("div", { role: "gridcell", children: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( import_components100.Composite.Item, { id: generateItemWrapperCompositeId(idPrefix), "aria-pressed": isSelected2, "aria-labelledby": labelId, "aria-describedby": descriptionId, className: "dataviews-view-list__item", onClick: () => onSelect(item) } ) }), /* @__PURE__ */ (0, import_jsx_runtime195.jsxs)( Stack, { direction: "row", gap: "md", justify: "start", align: "flex-start", style: { flex: 1, minWidth: 0 }, children: [ renderedMediaField, /* @__PURE__ */ (0, import_jsx_runtime195.jsxs)( Stack, { direction: "column", gap: "xs", className: "dataviews-view-list__field-wrapper", children: [ /* @__PURE__ */ (0, import_jsx_runtime195.jsxs)(Stack, { direction: "row", align: "center", children: [ /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( "div", { className: "dataviews-title-field dataviews-view-list__title-field", id: labelId, children: renderedTitleField } ), usedActions ] }), showDescription && descriptionField2?.render && /* @__PURE__ */ (0, import_jsx_runtime195.jsx)("div", { className: "dataviews-view-list__field", children: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( descriptionField2.render, { item, field: descriptionField2 } ) }), /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( "div", { className: "dataviews-view-list__fields", id: descriptionId, children: otherFields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime195.jsxs)( "div", { className: "dataviews-view-list__field", children: [ /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( import_components100.VisuallyHidden, { as: "span", className: "dataviews-view-list__field-label", children: field.label } ), /* @__PURE__ */ (0, import_jsx_runtime195.jsx)("span", { className: "dataviews-view-list__field-value", children: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( field.render, { item, field } ) }) ] }, field.id )) } ) ] } ) ] } ) ] } ) } ); } function isDefined2(item) { return !!item; } function ViewList(props) { const { actions, data, fields, getItemId: getItemId2, isLoading, onChangeSelection, selection, view, className, empty } = props; const baseId = (0, import_compose16.useInstanceId)(ViewList, "view-list"); const isDelayedLoading = useDelayedLoading(!!isLoading); const selectedItem = data?.findLast( (item) => selection.includes(getItemId2(item)) ); const titleField = fields.find((field) => field.id === view.titleField); const mediaField = fields.find((field) => field.id === view.mediaField); const descriptionField2 = fields.find( (field) => field.id === view.descriptionField ); const otherFields = (view?.fields ?? []).map((fieldId) => fields.find((f2) => fieldId === f2.id)).filter(isDefined2); const onSelect = (item) => onChangeSelection([getItemId2(item)]); const generateCompositeItemIdPrefix = (0, import_element79.useCallback)( (item) => `${baseId}-${getItemId2(item)}`, [baseId, getItemId2] ); const isActiveCompositeItem = (0, import_element79.useCallback)( (item, idToCheck) => { return idToCheck.startsWith( generateCompositeItemIdPrefix(item) ); }, [generateCompositeItemIdPrefix] ); const [activeCompositeId, setActiveCompositeId] = (0, import_element79.useState)(void 0); (0, import_element79.useEffect)(() => { if (selectedItem) { setActiveCompositeId( generateItemWrapperCompositeId( generateCompositeItemIdPrefix(selectedItem) ) ); } }, [selectedItem, generateCompositeItemIdPrefix]); const activeItemIndex = data.findIndex( (item) => isActiveCompositeItem(item, activeCompositeId ?? "") ); const previousActiveItemIndex = (0, import_compose16.usePrevious)(activeItemIndex); const isActiveIdInList = activeItemIndex !== -1; const selectCompositeItem = (0, import_element79.useCallback)( (targetIndex, generateCompositeId) => { const clampedIndex = Math.min( data.length - 1, Math.max(0, targetIndex) ); if (!data[clampedIndex]) { return; } const itemIdPrefix = generateCompositeItemIdPrefix( data[clampedIndex] ); const targetCompositeItemId = generateCompositeId(itemIdPrefix); setActiveCompositeId(targetCompositeItemId); document.getElementById(targetCompositeItemId)?.focus(); }, [data, generateCompositeItemIdPrefix] ); (0, import_element79.useEffect)(() => { const wasActiveIdInList = previousActiveItemIndex !== void 0 && previousActiveItemIndex !== -1; if (!isActiveIdInList && wasActiveIdInList) { selectCompositeItem( previousActiveItemIndex, generateItemWrapperCompositeId ); } }, [isActiveIdInList, selectCompositeItem, previousActiveItemIndex]); const onDropdownTriggerKeyDown = (0, import_element79.useCallback)( (event) => { if (event.key === "ArrowDown") { event.preventDefault(); selectCompositeItem( activeItemIndex + 1, generateDropdownTriggerCompositeId ); } if (event.key === "ArrowUp") { event.preventDefault(); selectCompositeItem( activeItemIndex - 1, generateDropdownTriggerCompositeId ); } }, [selectCompositeItem, activeItemIndex] ); const hasData = !!data?.length; const groupField = view.groupBy?.field ? fields.find((field) => field.id === view.groupBy?.field) : null; const dataByGroup = hasData && groupField ? getDataByGroup(data, groupField) : null; const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; if (!hasData) { return /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( "div", { className: clsx_default("dataviews-no-results", { "is-refreshing": isDelayedLoading }), children: empty } ); } if (hasData && groupField && dataByGroup) { return /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( import_components100.Composite, { id: `${baseId}`, render: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)("div", {}), className: "dataviews-view-list__group", role: "grid", activeId: activeCompositeId, setActiveId: setActiveCompositeId, children: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( Stack, { direction: "column", gap: "lg", className: clsx_default("dataviews-view-list", className), children: Array.from(dataByGroup.entries()).map( ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime195.jsxs)( Stack, { direction: "column", gap: "sm", children: [ /* @__PURE__ */ (0, import_jsx_runtime195.jsx)("h3", { className: "dataviews-view-list__group-header", children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n95.sprintf)( // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". (0, import_i18n95.__)("%1$s: %2$s"), groupField.label, groupName ) }), groupItems.map((item) => { const id = generateCompositeItemIdPrefix(item); return /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( ListItem, { view, idPrefix: id, actions, item, isSelected: item === selectedItem, onSelect, mediaField, titleField, descriptionField: descriptionField2, otherFields, onDropdownTriggerKeyDown }, id ); }) ] }, groupName ) ) } ) } ); } return /* @__PURE__ */ (0, import_jsx_runtime195.jsxs)(import_jsx_runtime195.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( import_components100.Composite, { id: baseId, render: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)("div", {}), className: clsx_default("dataviews-view-list", className, { [`has-${view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes( view.layout.density ), "is-refreshing": !isInfiniteScroll && isDelayedLoading }), role: view.infiniteScrollEnabled ? "feed" : "grid", activeId: activeCompositeId, setActiveId: setActiveCompositeId, inert: !isInfiniteScroll && !!isLoading ? "true" : void 0, children: data.map((item, index) => { const id = generateCompositeItemIdPrefix(item); return /* @__PURE__ */ (0, import_jsx_runtime195.jsx)( ListItem, { view, idPrefix: id, actions, item, isSelected: item === selectedItem, onSelect, mediaField, titleField, descriptionField: descriptionField2, otherFields, onDropdownTriggerKeyDown, posinset: view.infiniteScrollEnabled ? index + 1 : void 0 }, id ); }) } ), isInfiniteScroll && isLoading && /* @__PURE__ */ (0, import_jsx_runtime195.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime195.jsx)(import_components100.Spinner, {}) }) ] }); } // packages/dataviews/build-module/components/dataviews-layouts/activity/index.mjs var import_components102 = __toESM(require_components(), 1); // packages/dataviews/build-module/components/dataviews-layouts/activity/activity-group.mjs var import_i18n96 = __toESM(require_i18n(), 1); var import_element80 = __toESM(require_element(), 1); var import_jsx_runtime196 = __toESM(require_jsx_runtime(), 1); function ActivityGroup({ groupName, groupData, groupField, showLabel = true, children }) { const groupHeader = showLabel ? (0, import_element80.createInterpolateElement)( // translators: %s: The label of the field e.g. "Status". (0, import_i18n96.sprintf)((0, import_i18n96.__)("%s: "), groupField.label).trim(), { groupName: /* @__PURE__ */ (0, import_jsx_runtime196.jsx)( groupField.render, { item: groupData[0], field: groupField } ) } ) : /* @__PURE__ */ (0, import_jsx_runtime196.jsx)(groupField.render, { item: groupData[0], field: groupField }); return /* @__PURE__ */ (0, import_jsx_runtime196.jsxs)( Stack, { direction: "column", className: "dataviews-view-activity__group", children: [ /* @__PURE__ */ (0, import_jsx_runtime196.jsx)("h3", { className: "dataviews-view-activity__group-header", children: groupHeader }), children ] }, groupName ); } // packages/dataviews/build-module/components/dataviews-layouts/activity/activity-item.mjs var import_components101 = __toESM(require_components(), 1); var import_element81 = __toESM(require_element(), 1); var import_data62 = __toESM(require_data(), 1); var import_compose17 = __toESM(require_compose(), 1); var import_jsx_runtime197 = __toESM(require_jsx_runtime(), 1); function ActivityItem(props) { const { view, actions, item, titleField, mediaField, descriptionField: descriptionField2, otherFields, posinset, onClickItem, renderItemLink, isItemClickable } = props; const { showTitle = true, showMedia = true, showDescription = true, infiniteScrollEnabled } = view; const itemRef = (0, import_element81.useRef)(null); const registry = (0, import_data62.useRegistry)(); const { paginationInfo } = (0, import_element81.useContext)(dataviews_context_default); const { primaryActions, eligibleActions } = (0, import_element81.useMemo)(() => { const _eligibleActions = actions.filter( (action) => !action.isEligible || action.isEligible(item) ); const _primaryActions = _eligibleActions.filter( (action) => action.isPrimary ); return { primaryActions: _primaryActions, eligibleActions: _eligibleActions }; }, [actions, item]); const isMobileViewport = (0, import_compose17.useViewportMatch)("medium", "<"); const density = view.layout?.density ?? "balanced"; const mediaContent = showMedia && density !== "compact" && mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime197.jsx)( mediaField.render, { item, field: mediaField, config: { sizes: density === "comfortable" ? "32px" : "24px" } } ) : null; const renderedMediaField = /* @__PURE__ */ (0, import_jsx_runtime197.jsx)("div", { className: "dataviews-view-activity__item-type-icon", children: mediaContent || /* @__PURE__ */ (0, import_jsx_runtime197.jsx)( "span", { className: "dataviews-view-activity__item-bullet", "aria-hidden": "true" } ) }); const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime197.jsx)(titleField.render, { item, field: titleField }) : null; const verticalGap = (0, import_element81.useMemo)(() => { switch (density) { case "comfortable": return "md"; default: return "sm"; } }, [density]); return /* @__PURE__ */ (0, import_jsx_runtime197.jsx)( "div", { ref: itemRef, role: infiniteScrollEnabled ? "article" : void 0, "aria-posinset": posinset, "aria-setsize": infiniteScrollEnabled ? paginationInfo.totalItems : void 0, className: clsx_default( "dataviews-view-activity__item", density === "compact" && "is-compact", density === "balanced" && "is-balanced", density === "comfortable" && "is-comfortable" ), children: /* @__PURE__ */ (0, import_jsx_runtime197.jsxs)(Stack, { direction: "row", gap: "lg", justify: "start", align: "flex-start", children: [ /* @__PURE__ */ (0, import_jsx_runtime197.jsx)( Stack, { direction: "column", gap: "xs", align: "center", className: "dataviews-view-activity__item-type", children: renderedMediaField } ), /* @__PURE__ */ (0, import_jsx_runtime197.jsxs)( Stack, { direction: "column", gap: verticalGap, align: "flex-start", className: "dataviews-view-activity__item-content", children: [ renderedTitleField && /* @__PURE__ */ (0, import_jsx_runtime197.jsx)( ItemClickWrapper, { item, isItemClickable, onClickItem, renderItemLink, className: "dataviews-view-activity__item-title", children: renderedTitleField } ), showDescription && descriptionField2 && /* @__PURE__ */ (0, import_jsx_runtime197.jsx)("div", { className: "dataviews-view-activity__item-description", children: /* @__PURE__ */ (0, import_jsx_runtime197.jsx)( descriptionField2.render, { item, field: descriptionField2 } ) }), /* @__PURE__ */ (0, import_jsx_runtime197.jsx)("div", { className: "dataviews-view-activity__item-fields", children: otherFields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime197.jsxs)( "div", { className: "dataviews-view-activity__item-field", children: [ /* @__PURE__ */ (0, import_jsx_runtime197.jsx)( import_components101.VisuallyHidden, { as: "span", className: "dataviews-view-activity__item-field-label", children: field.label } ), /* @__PURE__ */ (0, import_jsx_runtime197.jsx)("span", { className: "dataviews-view-activity__item-field-value", children: /* @__PURE__ */ (0, import_jsx_runtime197.jsx)( field.render, { item, field } ) }) ] }, field.id )) }), !!primaryActions?.length && /* @__PURE__ */ (0, import_jsx_runtime197.jsx)( PrimaryActions, { item, actions: primaryActions, registry, buttonVariant: "secondary" } ) ] } ), (primaryActions.length < eligibleActions.length || // Since we hide primary actions on mobile, we need to show the menu // there if there are any actions at all. isMobileViewport && // At the same time, only show the menu if there are actions to show. eligibleActions.length > 0) && /* @__PURE__ */ (0, import_jsx_runtime197.jsx)("div", { className: "dataviews-view-activity__item-actions", children: /* @__PURE__ */ (0, import_jsx_runtime197.jsx)( ItemActions, { item, actions: eligibleActions, isCompact: true } ) }) ] }) } ); } var activity_item_default = ActivityItem; // packages/dataviews/build-module/components/dataviews-layouts/activity/activity-items.mjs var import_react7 = __toESM(require_react(), 1); function isDefined3(item) { return !!item; } function ActivityItems(props) { const { data, fields, getItemId: getItemId2, view } = props; const titleField = fields.find((field) => field.id === view.titleField); const mediaField = fields.find((field) => field.id === view.mediaField); const descriptionField2 = fields.find( (field) => field.id === view.descriptionField ); const otherFields = (view?.fields ?? []).map((fieldId) => fields.find((f2) => fieldId === f2.id)).filter(isDefined3); return data.map((item, index) => { return /* @__PURE__ */ (0, import_react7.createElement)( activity_item_default, { ...props, key: getItemId2(item), item, mediaField, titleField, descriptionField: descriptionField2, otherFields, posinset: view.infiniteScrollEnabled ? index + 1 : void 0 } ); }); } // packages/dataviews/build-module/components/dataviews-layouts/activity/index.mjs var import_jsx_runtime198 = __toESM(require_jsx_runtime(), 1); function ViewActivity(props) { const { empty, data, fields, isLoading, view, className } = props; const isDelayedLoading = useDelayedLoading(!!isLoading); const hasData = !!data?.length; const groupField = view.groupBy?.field ? fields.find((field) => field.id === view.groupBy?.field) : null; const dataByGroup = hasData && groupField ? getDataByGroup(data, groupField) : null; const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; if (!hasData) { return /* @__PURE__ */ (0, import_jsx_runtime198.jsx)( "div", { className: clsx_default("dataviews-no-results", { "is-refreshing": isDelayedLoading }), children: empty } ); } const isInert = !isInfiniteScroll && !!isLoading; const wrapperClassName = clsx_default("dataviews-view-activity", className, { "is-refreshing": !isInfiniteScroll && isDelayedLoading }); const groupedEntries = dataByGroup ? Array.from(dataByGroup.entries()) : []; if (hasData && groupField && dataByGroup) { return /* @__PURE__ */ (0, import_jsx_runtime198.jsx)( Stack, { direction: "column", gap: "sm", className: wrapperClassName, inert: isInert ? "true" : void 0, children: groupedEntries.map( ([groupName, groupData]) => /* @__PURE__ */ (0, import_jsx_runtime198.jsx)( ActivityGroup, { groupName, groupData, groupField, showLabel: view.groupBy?.showLabel !== false, children: /* @__PURE__ */ (0, import_jsx_runtime198.jsx)( ActivityItems, { ...props, data: groupData } ) }, groupName ) ) } ); } return /* @__PURE__ */ (0, import_jsx_runtime198.jsxs)(import_jsx_runtime198.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime198.jsx)( "div", { className: wrapperClassName, role: view.infiniteScrollEnabled ? "feed" : void 0, inert: isInert ? "true" : void 0, children: /* @__PURE__ */ (0, import_jsx_runtime198.jsx)(ActivityItems, { ...props }) } ), isInfiniteScroll && isLoading && /* @__PURE__ */ (0, import_jsx_runtime198.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime198.jsx)(import_components102.Spinner, {}) }) ] }); } // packages/dataviews/build-module/components/dataviews-layouts/picker-grid/index.mjs var import_components105 = __toESM(require_components(), 1); var import_i18n99 = __toESM(require_i18n(), 1); var import_compose18 = __toESM(require_compose(), 1); var import_element85 = __toESM(require_element(), 1); // packages/dataviews/build-module/components/dataviews-picker-footer/index.mjs var import_components104 = __toESM(require_components(), 1); var import_data63 = __toESM(require_data(), 1); var import_element83 = __toESM(require_element(), 1); var import_i18n98 = __toESM(require_i18n(), 1); // packages/dataviews/build-module/components/dataviews-pagination/index.mjs var import_components103 = __toESM(require_components(), 1); var import_element82 = __toESM(require_element(), 1); var import_i18n97 = __toESM(require_i18n(), 1); var import_jsx_runtime199 = __toESM(require_jsx_runtime(), 1); function DataViewsPagination() { const { view, onChangeView, paginationInfo: { totalItems = 0, totalPages } } = (0, import_element82.useContext)(dataviews_context_default); if (!totalItems || !totalPages || view.infiniteScrollEnabled) { return null; } const currentPage = view.page ?? 1; const pageSelectOptions = Array.from(Array(totalPages)).map( (_, i2) => { const page = i2 + 1; return { value: page.toString(), label: page.toString(), "aria-label": currentPage === page ? (0, import_i18n97.sprintf)( // translators: 1: current page number. 2: total number of pages. (0, import_i18n97.__)("Page %1$d of %2$d"), currentPage, totalPages ) : page.toString() }; } ); return !!totalItems && totalPages !== 1 && /* @__PURE__ */ (0, import_jsx_runtime199.jsxs)( Stack, { direction: "row", className: "dataviews-pagination", justify: "end", align: "center", gap: "xl", children: [ /* @__PURE__ */ (0, import_jsx_runtime199.jsx)( Stack, { direction: "row", justify: "flex-start", align: "center", gap: "xs", className: "dataviews-pagination__page-select", children: (0, import_element82.createInterpolateElement)( (0, import_i18n97.sprintf)( // translators: 1: Current page number, 2: Total number of pages. (0, import_i18n97._x)( "
Page
%1$s
of %2$d
", "paging" ), "", totalPages ), { div: /* @__PURE__ */ (0, import_jsx_runtime199.jsx)("div", { "aria-hidden": true }), CurrentPage: /* @__PURE__ */ (0, import_jsx_runtime199.jsx)( import_components103.SelectControl, { "aria-label": (0, import_i18n97.__)("Current page"), value: currentPage.toString(), options: pageSelectOptions, onChange: (newValue) => { onChangeView({ ...view, page: +newValue }); }, size: "small", variant: "minimal" } ) } ) } ), /* @__PURE__ */ (0, import_jsx_runtime199.jsxs)(Stack, { direction: "row", gap: "xs", align: "center", children: [ /* @__PURE__ */ (0, import_jsx_runtime199.jsx)( import_components103.Button, { onClick: () => onChangeView({ ...view, page: currentPage - 1 }), disabled: currentPage === 1, accessibleWhenDisabled: true, label: (0, import_i18n97.__)("Previous page"), icon: (0, import_i18n97.isRTL)() ? next_default : previous_default, showTooltip: true, size: "compact", tooltipPosition: "top" } ), /* @__PURE__ */ (0, import_jsx_runtime199.jsx)( import_components103.Button, { onClick: () => onChangeView({ ...view, page: currentPage + 1 }), disabled: currentPage >= totalPages, accessibleWhenDisabled: true, label: (0, import_i18n97.__)("Next page"), icon: (0, import_i18n97.isRTL)() ? previous_default : next_default, showTooltip: true, size: "compact", tooltipPosition: "top" } ) ] }) ] } ); } var dataviews_pagination_default = (0, import_element82.memo)(DataViewsPagination); // packages/dataviews/build-module/components/dataviews-picker-footer/index.mjs var import_jsx_runtime200 = __toESM(require_jsx_runtime(), 1); function useIsMultiselectPicker(actions) { return (0, import_element83.useMemo)(() => { return actions?.every((action) => action.supportsBulk); }, [actions]); } // packages/dataviews/build-module/components/dataviews-layouts/utils/grid-items.mjs var import_element84 = __toESM(require_element(), 1); var import_jsx_runtime201 = __toESM(require_jsx_runtime(), 1); var GridItems = (0, import_element84.forwardRef)(({ className, previewSize, ...props }, ref) => { return /* @__PURE__ */ (0, import_jsx_runtime201.jsx)( "div", { ref, className: clsx_default("dataviews-view-grid-items", className), style: { gridTemplateColumns: previewSize && `repeat(auto-fill, minmax(${previewSize}px, 1fr))` }, ...props } ); }); // packages/dataviews/build-module/components/dataviews-layouts/picker-grid/index.mjs var import_jsx_runtime202 = __toESM(require_jsx_runtime(), 1); var { Badge: Badge4 } = unlock3(import_components105.privateApis); function GridItem3({ view, multiselect, selection, onChangeSelection, getItemId: getItemId2, item, mediaField, titleField, descriptionField: descriptionField2, regularFields, badgeFields, config: config2, posinset, setsize }) { const { showTitle = true, showMedia = true, showDescription = true } = view; const id = getItemId2(item); const isSelected2 = selection.includes(id); const renderedMediaField = mediaField?.render ? /* @__PURE__ */ (0, import_jsx_runtime202.jsx)( mediaField.render, { item, field: mediaField, config: config2 } ) : null; const renderedTitleField = showTitle && titleField?.render ? /* @__PURE__ */ (0, import_jsx_runtime202.jsx)(titleField.render, { item, field: titleField }) : null; return /* @__PURE__ */ (0, import_jsx_runtime202.jsxs)( import_components105.Composite.Item, { "aria-label": titleField ? titleField.getValue({ item }) || (0, import_i18n99.__)("(no title)") : void 0, render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime202.jsx)(Stack, { direction: "column", children, ...props }), role: "option", "aria-posinset": posinset, "aria-setsize": setsize, className: clsx_default("dataviews-view-picker-grid__card", { "is-selected": isSelected2 }), "aria-selected": isSelected2, onClick: () => { if (isSelected2) { onChangeSelection( selection.filter((itemId) => id !== itemId) ); } else { const newSelection = multiselect ? [...selection, id] : [id]; onChangeSelection(newSelection); } }, children: [ showMedia && renderedMediaField && /* @__PURE__ */ (0, import_jsx_runtime202.jsx)("div", { className: "dataviews-view-picker-grid__media", children: renderedMediaField }), showMedia && renderedMediaField && /* @__PURE__ */ (0, import_jsx_runtime202.jsx)( DataViewsSelectionCheckbox, { item, selection, onChangeSelection, getItemId: getItemId2, titleField, disabled: false, "aria-hidden": true, tabIndex: -1 } ), showTitle && /* @__PURE__ */ (0, import_jsx_runtime202.jsx)( Stack, { direction: "row", justify: "space-between", className: "dataviews-view-picker-grid__title-actions", children: /* @__PURE__ */ (0, import_jsx_runtime202.jsx)("div", { className: "dataviews-view-picker-grid__title-field dataviews-title-field", children: renderedTitleField }) } ), /* @__PURE__ */ (0, import_jsx_runtime202.jsxs)(Stack, { direction: "column", gap: "xs", children: [ showDescription && descriptionField2?.render && /* @__PURE__ */ (0, import_jsx_runtime202.jsx)( descriptionField2.render, { item, field: descriptionField2 } ), !!badgeFields?.length && /* @__PURE__ */ (0, import_jsx_runtime202.jsx)( Stack, { direction: "row", className: "dataviews-view-picker-grid__badge-fields", gap: "sm", wrap: "wrap", align: "top", justify: "flex-start", children: badgeFields.map((field) => { return /* @__PURE__ */ (0, import_jsx_runtime202.jsx)( Badge4, { className: "dataviews-view-picker-grid__field-value", children: /* @__PURE__ */ (0, import_jsx_runtime202.jsx)( field.render, { item, field } ) }, field.id ); }) } ), !!regularFields?.length && /* @__PURE__ */ (0, import_jsx_runtime202.jsx)( Stack, { direction: "column", className: "dataviews-view-picker-grid__fields", gap: "xs", children: regularFields.map((field) => { return /* @__PURE__ */ (0, import_jsx_runtime202.jsx)( import_components105.Flex, { className: "dataviews-view-picker-grid__field", gap: 1, justify: "flex-start", expanded: true, style: { height: "auto" }, direction: "row", children: /* @__PURE__ */ (0, import_jsx_runtime202.jsxs)(import_jsx_runtime202.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime202.jsx)(import_components105.FlexItem, { className: "dataviews-view-picker-grid__field-name", children: field.header }), /* @__PURE__ */ (0, import_jsx_runtime202.jsx)( import_components105.FlexItem, { className: "dataviews-view-picker-grid__field-value", style: { maxHeight: "none" }, children: /* @__PURE__ */ (0, import_jsx_runtime202.jsx)( field.render, { item, field } ) } ) ] }) }, field.id ); }) } ) ] }) ] }, id ); } function GridGroup({ groupName, groupField, showLabel = true, children }) { const headerId = (0, import_compose18.useInstanceId)( GridGroup, "dataviews-view-picker-grid-group__header" ); return /* @__PURE__ */ (0, import_jsx_runtime202.jsxs)( Stack, { direction: "column", gap: "sm", role: "group", "aria-labelledby": headerId, children: [ /* @__PURE__ */ (0, import_jsx_runtime202.jsx)( "h3", { className: "dataviews-view-picker-grid-group__header", id: headerId, children: showLabel ? (0, import_i18n99.sprintf)( // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". (0, import_i18n99.__)("%1$s: %2$s"), groupField.label, groupName ) : groupName } ), children ] }, groupName ); } function ViewPickerGrid({ actions, data, fields, getItemId: getItemId2, isLoading, onChangeSelection, selection, view, className, empty }) { const { resizeObserverRef, paginationInfo, itemListLabel } = (0, import_element85.useContext)(dataviews_context_default); const titleField = fields.find( (field) => field.id === view?.titleField ); const mediaField = fields.find( (field) => field.id === view?.mediaField ); const descriptionField2 = fields.find( (field) => field.id === view?.descriptionField ); const otherFields = view.fields ?? []; const { regularFields, badgeFields } = otherFields.reduce( (accumulator, fieldId) => { const field = fields.find((f2) => f2.id === fieldId); if (!field) { return accumulator; } const key = view.layout?.badgeFields?.includes(fieldId) ? "badgeFields" : "regularFields"; accumulator[key].push(field); return accumulator; }, { regularFields: [], badgeFields: [] } ); const hasData = !!data?.length; const usedPreviewSize = view.layout?.previewSize; const isMultiselect = useIsMultiselectPicker(actions); const size = "900px"; const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null; const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; const currentPage = view?.page ?? 1; const perPage = view?.perPage ?? 0; const setSize = isInfiniteScroll ? paginationInfo?.totalItems : void 0; return /* @__PURE__ */ (0, import_jsx_runtime202.jsxs)(import_jsx_runtime202.Fragment, { // Render multiple groups. children: [ hasData && groupField && dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime202.jsx)( import_components105.Composite, { virtualFocus: true, orientation: "horizontal", role: "listbox", "aria-multiselectable": isMultiselect, className: clsx_default( "dataviews-view-picker-grid", className ), "aria-label": itemListLabel, render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime202.jsx)( Stack, { direction: "column", gap: "lg", children, ...props } ), children: Array.from(dataByGroup.entries()).map( ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime202.jsx)( GridGroup, { groupName, groupField, showLabel: view.groupBy?.showLabel !== false, children: /* @__PURE__ */ (0, import_jsx_runtime202.jsx)( GridItems, { previewSize: usedPreviewSize, style: { gridTemplateColumns: usedPreviewSize && `repeat(auto-fill, minmax(${usedPreviewSize}px, 1fr))` }, "aria-busy": isLoading, ref: resizeObserverRef, children: groupItems.map((item) => { const posInSet = (currentPage - 1) * perPage + data.indexOf(item) + 1; return /* @__PURE__ */ (0, import_jsx_runtime202.jsx)( GridItem3, { view, multiselect: isMultiselect, selection, onChangeSelection, getItemId: getItemId2, item, mediaField, titleField, descriptionField: descriptionField2, regularFields, badgeFields, config: { sizes: size }, posinset: posInSet, setsize: setSize }, getItemId2(item) ); }) } ) }, groupName ) ) } ), // Render a single grid with all data. hasData && !dataByGroup && /* @__PURE__ */ (0, import_jsx_runtime202.jsx)( import_components105.Composite, { render: /* @__PURE__ */ (0, import_jsx_runtime202.jsx)( GridItems, { className: clsx_default( "dataviews-view-picker-grid", className ), previewSize: usedPreviewSize, "aria-busy": isLoading, ref: resizeObserverRef } ), virtualFocus: true, orientation: "horizontal", role: "listbox", "aria-multiselectable": isMultiselect, "aria-label": itemListLabel, children: data.map((item, index) => { let posinset = isInfiniteScroll ? index + 1 : void 0; if (!isInfiniteScroll) { posinset = (currentPage - 1) * perPage + index + 1; } return /* @__PURE__ */ (0, import_jsx_runtime202.jsx)( GridItem3, { view, multiselect: isMultiselect, selection, onChangeSelection, getItemId: getItemId2, item, mediaField, titleField, descriptionField: descriptionField2, regularFields, badgeFields, config: { sizes: size }, posinset, setsize: setSize }, getItemId2(item) ); }) } ), // Render empty state. !hasData && /* @__PURE__ */ (0, import_jsx_runtime202.jsx)( "div", { className: clsx_default({ "dataviews-loading": isLoading, "dataviews-no-results": !isLoading }), children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime202.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime202.jsx)(import_components105.Spinner, {}) }) : empty } ), hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime202.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime202.jsx)(import_components105.Spinner, {}) }) ] }); } var picker_grid_default = ViewPickerGrid; // packages/dataviews/build-module/components/dataviews-layouts/picker-table/index.mjs var import_i18n100 = __toESM(require_i18n(), 1); var import_components106 = __toESM(require_components(), 1); var import_element86 = __toESM(require_element(), 1); var import_jsx_runtime203 = __toESM(require_jsx_runtime(), 1); function TableColumnField2({ item, fields, column, align }) { const field = fields.find((f2) => f2.id === column); if (!field) { return null; } const className = clsx_default("dataviews-view-table__cell-content-wrapper", { "dataviews-view-table__cell-align-end": align === "end", "dataviews-view-table__cell-align-center": align === "center" }); return /* @__PURE__ */ (0, import_jsx_runtime203.jsx)("div", { className, children: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(field.render, { item, field }) }); } function TableRow2({ item, fields, id, view, titleField, mediaField, descriptionField: descriptionField2, selection, getItemId: getItemId2, onChangeSelection, multiselect, posinset }) { const { paginationInfo } = (0, import_element86.useContext)(dataviews_context_default); const isSelected2 = selection.includes(id); const [isHovered, setIsHovered] = (0, import_element86.useState)(false); const { showTitle = true, showMedia = true, showDescription = true, infiniteScrollEnabled } = view; const handleMouseEnter = () => { setIsHovered(true); }; const handleMouseLeave = () => { setIsHovered(false); }; const columns = view.fields ?? []; const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField2 && showDescription; return /* @__PURE__ */ (0, import_jsx_runtime203.jsxs)( import_components106.Composite.Item, { render: ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime203.jsx)( "tr", { className: clsx_default("dataviews-view-table__row", { "is-selected": isSelected2, "is-hovered": isHovered }), onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, children, ...props } ), "aria-selected": isSelected2, "aria-setsize": paginationInfo.totalItems || void 0, "aria-posinset": posinset, role: infiniteScrollEnabled ? "article" : "option", onClick: () => { if (isSelected2) { onChangeSelection( selection.filter((itemId) => id !== itemId) ); } else { const newSelection = multiselect ? [...selection, id] : [id]; onChangeSelection(newSelection); } }, children: [ /* @__PURE__ */ (0, import_jsx_runtime203.jsx)( "td", { className: "dataviews-view-table__checkbox-column", role: "presentation", children: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)("div", { className: "dataviews-view-table__cell-content-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)( DataViewsSelectionCheckbox, { item, selection, onChangeSelection, getItemId: getItemId2, titleField, disabled: false, "aria-hidden": true, tabIndex: -1 } ) }) } ), hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime203.jsx)("td", { role: "presentation", children: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)( column_primary_default, { item, titleField: showTitle ? titleField : void 0, mediaField: showMedia ? mediaField : void 0, descriptionField: showDescription ? descriptionField2 : void 0, isItemClickable: () => false } ) }), columns.map((column) => { const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {}; return /* @__PURE__ */ (0, import_jsx_runtime203.jsx)( "td", { style: { width, maxWidth, minWidth }, role: "presentation", children: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)( TableColumnField2, { fields, item, column, align } ) }, column ); }) ] }, id ); } function ViewPickerTable({ actions, data, fields, getItemId: getItemId2, isLoading = false, onChangeView, onChangeSelection, selection, setOpenedFilter, view, className, empty }) { const headerMenuRefs = (0, import_element86.useRef)(/* @__PURE__ */ new Map()); const headerMenuToFocusRef = (0, import_element86.useRef)(void 0); const [nextHeaderMenuToFocus, setNextHeaderMenuToFocus] = (0, import_element86.useState)(); const isMultiselect = useIsMultiselectPicker(actions) ?? false; (0, import_element86.useEffect)(() => { if (headerMenuToFocusRef.current) { headerMenuToFocusRef.current.focus(); headerMenuToFocusRef.current = void 0; } }); const tableNoticeId = (0, import_element86.useId)(); if (nextHeaderMenuToFocus) { headerMenuToFocusRef.current = nextHeaderMenuToFocus; setNextHeaderMenuToFocus(void 0); return; } const onHide = (field) => { const hidden = headerMenuRefs.current.get(field.id); const fallback = hidden ? headerMenuRefs.current.get(hidden.fallback) : void 0; setNextHeaderMenuToFocus(fallback?.node); }; const hasData = !!data?.length; const titleField = fields.find((field) => field.id === view.titleField); const mediaField = fields.find((field) => field.id === view.mediaField); const descriptionField2 = fields.find( (field) => field.id === view.descriptionField ); const groupField = view.groupBy?.field ? fields.find((f2) => f2.id === view.groupBy?.field) : null; const dataByGroup = groupField ? getDataByGroup(data, groupField) : null; const { showTitle = true, showMedia = true, showDescription = true } = view; const hasPrimaryColumn = titleField && showTitle || mediaField && showMedia || descriptionField2 && showDescription; const columns = view.fields ?? []; const headerMenuRef = (column, index) => (node) => { if (node) { headerMenuRefs.current.set(column, { node, fallback: columns[index > 0 ? index - 1 : 1] }); } else { headerMenuRefs.current.delete(column); } }; const isInfiniteScroll = view.infiniteScrollEnabled && !dataByGroup; return /* @__PURE__ */ (0, import_jsx_runtime203.jsxs)(import_jsx_runtime203.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime203.jsxs)( "table", { className: clsx_default( "dataviews-view-table", "dataviews-view-picker-table", className, { [`has-${view.layout?.density}-density`]: view.layout?.density && ["compact", "comfortable"].includes( view.layout.density ) } ), "aria-busy": isLoading, "aria-describedby": tableNoticeId, role: isInfiniteScroll ? "feed" : "listbox", children: [ /* @__PURE__ */ (0, import_jsx_runtime203.jsx)("thead", { role: "presentation", children: /* @__PURE__ */ (0, import_jsx_runtime203.jsxs)( "tr", { className: "dataviews-view-table__row", role: "presentation", children: [ /* @__PURE__ */ (0, import_jsx_runtime203.jsx)("th", { className: "dataviews-view-table__checkbox-column", children: isMultiselect && /* @__PURE__ */ (0, import_jsx_runtime203.jsx)( BulkSelectionCheckbox, { selection, onChangeSelection, data, actions, getItemId: getItemId2 } ) }), hasPrimaryColumn && /* @__PURE__ */ (0, import_jsx_runtime203.jsx)("th", { children: titleField && /* @__PURE__ */ (0, import_jsx_runtime203.jsx)( column_header_menu_default, { ref: headerMenuRef( titleField.id, 0 ), fieldId: titleField.id, view, fields, onChangeView, onHide, setOpenedFilter, canMove: false } ) }), columns.map((column, index) => { const { width, maxWidth, minWidth, align } = view.layout?.styles?.[column] ?? {}; return /* @__PURE__ */ (0, import_jsx_runtime203.jsx)( "th", { style: { width, maxWidth, minWidth, textAlign: align }, "aria-sort": view.sort?.direction && view.sort?.field === column ? sortValues[view.sort.direction] : void 0, scope: "col", children: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)( column_header_menu_default, { ref: headerMenuRef(column, index), fieldId: column, view, fields, onChangeView, onHide, setOpenedFilter, canMove: view.layout?.enableMoving ?? true } ) }, column ); }) ] } ) }), hasData && groupField && dataByGroup ? Array.from(dataByGroup.entries()).map( ([groupName, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime203.jsxs)( import_components106.Composite, { virtualFocus: true, orientation: "vertical", render: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)("tbody", { role: "group" }), children: [ /* @__PURE__ */ (0, import_jsx_runtime203.jsx)( "tr", { className: "dataviews-view-table__group-header-row", role: "presentation", children: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)( "td", { colSpan: columns.length + (hasPrimaryColumn ? 1 : 0) + 1, className: "dataviews-view-table__group-header-cell", role: "presentation", children: view.groupBy?.showLabel === false ? groupName : (0, import_i18n100.sprintf)( // translators: 1: The label of the field e.g. "Date". 2: The value of the field, e.g.: "May 2022". (0, import_i18n100.__)("%1$s: %2$s"), groupField.label, groupName ) } ) } ), groupItems.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime203.jsx)( TableRow2, { item, fields, id: getItemId2(item) || index.toString(), view, titleField, mediaField, descriptionField: descriptionField2, selection, getItemId: getItemId2, onChangeSelection, multiselect: isMultiselect }, getItemId2(item) )) ] }, `group-${groupName}` ) ) : /* @__PURE__ */ (0, import_jsx_runtime203.jsx)( import_components106.Composite, { render: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)("tbody", { role: "presentation" }), virtualFocus: true, orientation: "vertical", children: hasData && data.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime203.jsx)( TableRow2, { item, fields, id: getItemId2(item) || index.toString(), view, titleField, mediaField, descriptionField: descriptionField2, selection, getItemId: getItemId2, onChangeSelection, multiselect: isMultiselect, posinset: index + 1 }, getItemId2(item) )) } ) ] } ), /* @__PURE__ */ (0, import_jsx_runtime203.jsxs)( "div", { className: clsx_default({ "dataviews-loading": isLoading, "dataviews-no-results": !hasData && !isLoading }), id: tableNoticeId, children: [ !hasData && (isLoading ? /* @__PURE__ */ (0, import_jsx_runtime203.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(import_components106.Spinner, {}) }) : empty), hasData && isLoading && /* @__PURE__ */ (0, import_jsx_runtime203.jsx)("p", { className: "dataviews-loading-more", children: /* @__PURE__ */ (0, import_jsx_runtime203.jsx)(import_components106.Spinner, {}) }) ] } ) ] }); } var picker_table_default = ViewPickerTable; // packages/dataviews/build-module/components/dataviews-layouts/utils/preview-size-picker.mjs var import_components107 = __toESM(require_components(), 1); var import_i18n101 = __toESM(require_i18n(), 1); var import_element87 = __toESM(require_element(), 1); var import_jsx_runtime204 = __toESM(require_jsx_runtime(), 1); var imageSizes2 = [ { value: 120, breakpoint: 1 }, { value: 170, breakpoint: 1 }, { value: 230, breakpoint: 1 }, { value: 290, breakpoint: 1112 // at minimum image width, 4 images display at this container size }, { value: 350, breakpoint: 1636 // at minimum image width, 6 images display at this container size }, { value: 430, breakpoint: 588 // at minimum image width, 2 images display at this container size } ]; function PreviewSizePicker() { const context = (0, import_element87.useContext)(dataviews_context_default); const view = context.view; const breakValues = imageSizes2.filter((size) => { return context.containerWidth >= size.breakpoint; }); const layoutPreviewSize = view.layout?.previewSize ?? 230; const previewSizeToUse = breakValues.map((size, index) => ({ ...size, index })).filter((size) => size.value <= layoutPreviewSize).sort((a2, b2) => b2.value - a2.value)[0]?.index ?? 0; const marks = breakValues.map((size, index) => { return { value: index }; }); return /* @__PURE__ */ (0, import_jsx_runtime204.jsx)( import_components107.RangeControl, { __next40pxDefaultSize: true, showTooltip: false, label: (0, import_i18n101.__)("Preview size"), value: previewSizeToUse, min: 0, max: breakValues.length - 1, withInputField: false, onChange: (value = 0) => { context.onChangeView({ ...view, layout: { ...view.layout, previewSize: breakValues[value].value } }); }, step: 1, marks } ); } // packages/dataviews/build-module/components/dataviews-layouts/utils/density-picker.mjs var import_components108 = __toESM(require_components(), 1); var import_i18n102 = __toESM(require_i18n(), 1); var import_element88 = __toESM(require_element(), 1); var import_jsx_runtime205 = __toESM(require_jsx_runtime(), 1); function DensityPicker() { const context = (0, import_element88.useContext)(dataviews_context_default); const view = context.view; return /* @__PURE__ */ (0, import_jsx_runtime205.jsxs)( import_components108.__experimentalToggleGroupControl, { size: "__unstable-large", label: (0, import_i18n102.__)("Density"), value: view.layout?.density || "balanced", onChange: (value) => { context.onChangeView({ ...view, layout: { ...view.layout, density: value } }); }, isBlock: true, children: [ /* @__PURE__ */ (0, import_jsx_runtime205.jsx)( import_components108.__experimentalToggleGroupControlOption, { value: "comfortable", label: (0, import_i18n102._x)( "Comfortable", "Density option for DataView layout" ) }, "comfortable" ), /* @__PURE__ */ (0, import_jsx_runtime205.jsx)( import_components108.__experimentalToggleGroupControlOption, { value: "balanced", label: (0, import_i18n102._x)("Balanced", "Density option for DataView layout") }, "balanced" ), /* @__PURE__ */ (0, import_jsx_runtime205.jsx)( import_components108.__experimentalToggleGroupControlOption, { value: "compact", label: (0, import_i18n102._x)("Compact", "Density option for DataView layout") }, "compact" ) ] } ); } // packages/dataviews/build-module/components/dataviews-layouts/index.mjs var VIEW_LAYOUTS = [ { type: LAYOUT_TABLE2, label: (0, import_i18n103.__)("Table"), component: table_default, icon: block_table_default, viewConfigOptions: DensityPicker }, { type: LAYOUT_GRID2, label: (0, import_i18n103.__)("Grid"), component: grid_default, icon: category_default, viewConfigOptions: PreviewSizePicker }, { type: LAYOUT_LIST2, label: (0, import_i18n103.__)("List"), component: ViewList, icon: (0, import_i18n103.isRTL)() ? format_list_bullets_rtl_default : format_list_bullets_default, viewConfigOptions: DensityPicker }, { type: LAYOUT_ACTIVITY, label: (0, import_i18n103.__)("Activity"), component: ViewActivity, icon: scheduled_default, viewConfigOptions: DensityPicker }, { type: LAYOUT_PICKER_GRID, label: (0, import_i18n103.__)("Grid"), component: picker_grid_default, icon: category_default, viewConfigOptions: PreviewSizePicker, isPicker: true }, { type: LAYOUT_PICKER_TABLE, label: (0, import_i18n103.__)("Table"), component: picker_table_default, icon: block_table_default, viewConfigOptions: DensityPicker, isPicker: true } ]; // packages/dataviews/build-module/components/dataviews-filters/filters.mjs var import_element96 = __toESM(require_element(), 1); // packages/dataviews/build-module/components/dataviews-filters/filter.mjs var import_components111 = __toESM(require_components(), 1); var import_i18n106 = __toESM(require_i18n(), 1); var import_element93 = __toESM(require_element(), 1); // node_modules/@ariakit/core/esm/__chunks/XMCVU3LR.js function noop3(..._) { } function applyState(argument, currentValue) { if (isUpdater(argument)) { const value = isLazyValue(currentValue) ? currentValue() : currentValue; return argument(value); } return argument; } function isUpdater(argument) { return typeof argument === "function"; } function isLazyValue(value) { return typeof value === "function"; } function hasOwnProperty(object, prop) { if (typeof Object.hasOwn === "function") { return Object.hasOwn(object, prop); } return Object.prototype.hasOwnProperty.call(object, prop); } function chain(...fns) { return (...args) => { for (const fn of fns) { if (typeof fn === "function") { fn(...args); } } }; } function normalizeString2(str) { return str.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); } function omit(object, keys) { const result = { ...object }; for (const key of keys) { if (hasOwnProperty(result, key)) { delete result[key]; } } return result; } function pick(object, paths) { const result = {}; for (const key of paths) { if (hasOwnProperty(object, key)) { result[key] = object[key]; } } return result; } function identity(value) { return value; } function invariant(condition, message2) { if (condition) return; if (typeof message2 !== "string") throw new Error("Invariant failed"); throw new Error(message2); } function getKeys(obj) { return Object.keys(obj); } function isFalsyBooleanCallback(booleanOrCallback, ...args) { const result = typeof booleanOrCallback === "function" ? booleanOrCallback(...args) : booleanOrCallback; if (result == null) return false; return !result; } function disabledFromProps(props) { return props.disabled || props["aria-disabled"] === true || props["aria-disabled"] === "true"; } function removeUndefinedValues(obj) { const result = {}; for (const key in obj) { if (obj[key] !== void 0) { result[key] = obj[key]; } } return result; } function defaultValue(...values) { for (const value of values) { if (value !== void 0) return value; } return void 0; } // node_modules/@ariakit/react-core/esm/__chunks/YXGXYGQX.js var import_react8 = __toESM(require_react(), 1); function setRef(ref, value) { if (typeof ref === "function") { ref(value); } else if (ref) { ref.current = value; } } function isValidElementWithRef(element) { if (!element) return false; if (!(0, import_react8.isValidElement)(element)) return false; if ("ref" in element.props) return true; if ("ref" in element) return true; return false; } function getRefProperty(element) { if (!isValidElementWithRef(element)) return null; const props = { ...element.props }; return props.ref || element.ref; } function mergeProps2(base, overrides) { const props = { ...base }; for (const key in overrides) { if (!hasOwnProperty(overrides, key)) continue; if (key === "className") { const prop = "className"; props[prop] = base[prop] ? `${base[prop]} ${overrides[prop]}` : overrides[prop]; continue; } if (key === "style") { const prop = "style"; props[prop] = base[prop] ? { ...base[prop], ...overrides[prop] } : overrides[prop]; continue; } const overrideValue = overrides[key]; if (typeof overrideValue === "function" && key.startsWith("on")) { const baseValue = base[key]; if (typeof baseValue === "function") { props[key] = (...args) => { overrideValue(...args); baseValue(...args); }; continue; } } props[key] = overrideValue; } return props; } // node_modules/@ariakit/core/esm/__chunks/3DNM6L6E.js var canUseDOM = checkIsBrowser(); function checkIsBrowser() { var _a; return typeof window !== "undefined" && !!((_a = window.document) == null ? void 0 : _a.createElement); } function getDocument(node) { if (!node) return document; if ("self" in node) return node.document; return node.ownerDocument || document; } function getActiveElement(node, activeDescendant = false) { var _a; const { activeElement } = getDocument(node); if (!(activeElement == null ? void 0 : activeElement.nodeName)) { return null; } if (isFrame(activeElement) && ((_a = activeElement.contentDocument) == null ? void 0 : _a.body)) { return getActiveElement( activeElement.contentDocument.body, activeDescendant ); } if (activeDescendant) { const id = activeElement.getAttribute("aria-activedescendant"); if (id) { const element = getDocument(activeElement).getElementById(id); if (element) { return element; } } } return activeElement; } function contains(parent, child) { return parent === child || parent.contains(child); } function isFrame(element) { return element.tagName === "IFRAME"; } function isButton(element) { const tagName = element.tagName.toLowerCase(); if (tagName === "button") return true; if (tagName === "input" && element.type) { return buttonInputTypes.indexOf(element.type) !== -1; } return false; } var buttonInputTypes = [ "button", "color", "file", "image", "reset", "submit" ]; function isVisible(element) { if (typeof element.checkVisibility === "function") { return element.checkVisibility(); } const htmlElement = element; return htmlElement.offsetWidth > 0 || htmlElement.offsetHeight > 0 || element.getClientRects().length > 0; } function isTextField(element) { try { const isTextInput = element instanceof HTMLInputElement && element.selectionStart !== null; const isTextArea = element.tagName === "TEXTAREA"; return isTextInput || isTextArea || false; } catch (_error) { return false; } } function isTextbox(element) { return element.isContentEditable || isTextField(element); } function getTextboxValue(element) { if (isTextField(element)) { return element.value; } if (element.isContentEditable) { const range = getDocument(element).createRange(); range.selectNodeContents(element); return range.toString(); } return ""; } function getTextboxSelection(element) { let start2 = 0; let end = 0; if (isTextField(element)) { start2 = element.selectionStart || 0; end = element.selectionEnd || 0; } else if (element.isContentEditable) { const selection = getDocument(element).getSelection(); if ((selection == null ? void 0 : selection.rangeCount) && selection.anchorNode && contains(element, selection.anchorNode) && selection.focusNode && contains(element, selection.focusNode)) { const range = selection.getRangeAt(0); const nextRange = range.cloneRange(); nextRange.selectNodeContents(element); nextRange.setEnd(range.startContainer, range.startOffset); start2 = nextRange.toString().length; nextRange.setEnd(range.endContainer, range.endOffset); end = nextRange.toString().length; } } return { start: start2, end }; } function getPopupRole(element, fallback) { const allowedPopupRoles = ["dialog", "menu", "listbox", "tree", "grid"]; const role = element == null ? void 0 : element.getAttribute("role"); if (role && allowedPopupRoles.indexOf(role) !== -1) { return role; } return fallback; } function getScrollingElement(element) { if (!element) return null; const isScrollableOverflow = (overflow) => { if (overflow === "auto") return true; if (overflow === "scroll") return true; return false; }; if (element.clientHeight && element.scrollHeight > element.clientHeight) { const { overflowY } = getComputedStyle(element); if (isScrollableOverflow(overflowY)) return element; } else if (element.clientWidth && element.scrollWidth > element.clientWidth) { const { overflowX } = getComputedStyle(element); if (isScrollableOverflow(overflowX)) return element; } return getScrollingElement(element.parentElement) || document.scrollingElement || document.body; } function setSelectionRange(element, ...args) { if (/text|search|password|tel|url/i.test(element.type)) { element.setSelectionRange(...args); } } function sortBasedOnDOMPosition(items, getElement) { const pairs = items.map((item, index) => [index, item]); let isOrderDifferent = false; pairs.sort(([indexA, a2], [indexB, b2]) => { const elementA = getElement(a2); const elementB = getElement(b2); if (elementA === elementB) return 0; if (!elementA || !elementB) return 0; if (isElementPreceding(elementA, elementB)) { if (indexA > indexB) { isOrderDifferent = true; } return -1; } if (indexA < indexB) { isOrderDifferent = true; } return 1; }); if (isOrderDifferent) { return pairs.map(([_, item]) => item); } return items; } function isElementPreceding(a2, b2) { return Boolean( b2.compareDocumentPosition(a2) & Node.DOCUMENT_POSITION_PRECEDING ); } // node_modules/@ariakit/core/esm/__chunks/SNHYQNEZ.js function isTouchDevice() { return canUseDOM && !!navigator.maxTouchPoints; } function isApple() { if (!canUseDOM) return false; return /mac|iphone|ipad|ipod/i.test(navigator.platform); } function isSafari() { return canUseDOM && isApple() && /apple/i.test(navigator.vendor); } function isFirefox() { return canUseDOM && /firefox\//i.test(navigator.userAgent); } // node_modules/@ariakit/core/esm/utils/events.js function isPortalEvent(event) { return Boolean( event.currentTarget && !contains(event.currentTarget, event.target) ); } function isSelfTarget(event) { return event.target === event.currentTarget; } function isOpeningInNewTab(event) { const element = event.currentTarget; if (!element) return false; const isAppleDevice = isApple(); if (isAppleDevice && !event.metaKey) return false; if (!isAppleDevice && !event.ctrlKey) return false; const tagName = element.tagName.toLowerCase(); if (tagName === "a") return true; if (tagName === "button" && element.type === "submit") return true; if (tagName === "input" && element.type === "submit") return true; return false; } function isDownloading(event) { const element = event.currentTarget; if (!element) return false; const tagName = element.tagName.toLowerCase(); if (!event.altKey) return false; if (tagName === "a") return true; if (tagName === "button" && element.type === "submit") return true; if (tagName === "input" && element.type === "submit") return true; return false; } function fireBlurEvent(element, eventInit) { const event = new FocusEvent("blur", eventInit); const defaultAllowed = element.dispatchEvent(event); const bubbleInit = { ...eventInit, bubbles: true }; element.dispatchEvent(new FocusEvent("focusout", bubbleInit)); return defaultAllowed; } function fireKeyboardEvent(element, type, eventInit) { const event = new KeyboardEvent(type, eventInit); return element.dispatchEvent(event); } function fireClickEvent(element, eventInit) { const event = new MouseEvent("click", eventInit); return element.dispatchEvent(event); } function isFocusEventOutside(event, container) { const containerElement = container || event.currentTarget; const relatedTarget = event.relatedTarget; return !relatedTarget || !contains(containerElement, relatedTarget); } function queueBeforeEvent(element, type, callback, timeout) { const createTimer = (callback2) => { if (timeout) { const timerId2 = setTimeout(callback2, timeout); return () => clearTimeout(timerId2); } const timerId = requestAnimationFrame(callback2); return () => cancelAnimationFrame(timerId); }; const cancelTimer = createTimer(() => { element.removeEventListener(type, callSync, true); callback(); }); const callSync = () => { cancelTimer(); callback(); }; element.addEventListener(type, callSync, { once: true, capture: true }); return cancelTimer; } function addGlobalEventListener(type, listener, options, scope = window) { const children = []; try { scope.document.addEventListener(type, listener, options); for (const frame of Array.from(scope.frames)) { children.push(addGlobalEventListener(type, listener, options, frame)); } } catch (e2) { } const removeEventListener = () => { try { scope.document.removeEventListener(type, listener, options); } catch (e2) { } for (const remove of children) { remove(); } }; return removeEventListener; } // node_modules/@ariakit/react-core/esm/__chunks/KPHZR4MB.js var React7 = __toESM(require_react(), 1); var import_react9 = __toESM(require_react(), 1); var _React = { ...React7 }; var useReactId = _React.useId; var useReactDeferredValue = _React.useDeferredValue; var useReactInsertionEffect = _React.useInsertionEffect; var useSafeLayoutEffect = canUseDOM ? import_react9.useLayoutEffect : import_react9.useEffect; function useInitialValue(value) { const [initialValue] = (0, import_react9.useState)(value); return initialValue; } function useLiveRef(value) { const ref = (0, import_react9.useRef)(value); useSafeLayoutEffect(() => { ref.current = value; }); return ref; } function useEvent(callback) { const ref = (0, import_react9.useRef)(() => { throw new Error("Cannot call an event handler while rendering."); }); if (useReactInsertionEffect) { useReactInsertionEffect(() => { ref.current = callback; }); } else { ref.current = callback; } return (0, import_react9.useCallback)((...args) => { var _a; return (_a = ref.current) == null ? void 0 : _a.call(ref, ...args); }, []); } function useTransactionState(callback) { const [state, setState] = (0, import_react9.useState)(null); useSafeLayoutEffect(() => { if (state == null) return; if (!callback) return; let prevState = null; callback((prev) => { prevState = prev; return state; }); return () => { callback(prevState); }; }, [state, callback]); return [state, setState]; } function useMergeRefs(...refs) { return (0, import_react9.useMemo)(() => { if (!refs.some(Boolean)) return; return (value) => { for (const ref of refs) { setRef(ref, value); } }; }, refs); } function useId5(defaultId) { if (useReactId) { const reactId = useReactId(); if (defaultId) return defaultId; return reactId; } const [id, setId] = (0, import_react9.useState)(defaultId); useSafeLayoutEffect(() => { if (defaultId || id) return; const random = Math.random().toString(36).slice(2, 8); setId(`id-${random}`); }, [defaultId, id]); return defaultId || id; } function useTagName(refOrElement, type) { const stringOrUndefined = (type2) => { if (typeof type2 !== "string") return; return type2; }; const [tagName, setTagName] = (0, import_react9.useState)(() => stringOrUndefined(type)); useSafeLayoutEffect(() => { const element = refOrElement && "current" in refOrElement ? refOrElement.current : refOrElement; setTagName((element == null ? void 0 : element.tagName.toLowerCase()) || stringOrUndefined(type)); }, [refOrElement, type]); return tagName; } function useAttribute(refOrElement, attributeName, defaultValue2) { const initialValue = useInitialValue(defaultValue2); const [attribute, setAttribute] = (0, import_react9.useState)(initialValue); (0, import_react9.useEffect)(() => { const element = refOrElement && "current" in refOrElement ? refOrElement.current : refOrElement; if (!element) return; const callback = () => { const value = element.getAttribute(attributeName); setAttribute(value == null ? initialValue : value); }; const observer = new MutationObserver(callback); observer.observe(element, { attributeFilter: [attributeName] }); callback(); return () => observer.disconnect(); }, [refOrElement, attributeName, initialValue]); return attribute; } function useUpdateEffect(effect, deps) { const mounted = (0, import_react9.useRef)(false); (0, import_react9.useEffect)(() => { if (mounted.current) { return effect(); } mounted.current = true; }, deps); (0, import_react9.useEffect)( () => () => { mounted.current = false; }, [] ); } function useUpdateLayoutEffect(effect, deps) { const mounted = (0, import_react9.useRef)(false); useSafeLayoutEffect(() => { if (mounted.current) { return effect(); } mounted.current = true; }, deps); useSafeLayoutEffect( () => () => { mounted.current = false; }, [] ); } function useForceUpdate2() { return (0, import_react9.useReducer)(() => [], []); } function useBooleanEvent(booleanOrCallback) { return useEvent( typeof booleanOrCallback === "function" ? booleanOrCallback : () => booleanOrCallback ); } function useWrapElement(props, callback, deps = []) { const wrapElement = (0, import_react9.useCallback)( (element) => { if (props.wrapElement) { element = props.wrapElement(element); } return callback(element); }, [...deps, props.wrapElement] ); return { ...props, wrapElement }; } function useMetadataProps(props, key, value) { const parent = props.onLoadedMetadataCapture; const onLoadedMetadataCapture = (0, import_react9.useMemo)(() => { return Object.assign(() => { }, { ...parent, [key]: value }); }, [parent, key, value]); return [parent == null ? void 0 : parent[key], { onLoadedMetadataCapture }]; } var hasInstalledGlobalEventListeners = false; function useIsMouseMoving() { (0, import_react9.useEffect)(() => { if (hasInstalledGlobalEventListeners) return; addGlobalEventListener("mousemove", setMouseMoving, true); addGlobalEventListener("mousedown", resetMouseMoving, true); addGlobalEventListener("mouseup", resetMouseMoving, true); addGlobalEventListener("keydown", resetMouseMoving, true); addGlobalEventListener("scroll", resetMouseMoving, true); hasInstalledGlobalEventListeners = true; }, []); const isMouseMoving = useEvent(() => mouseMoving); return isMouseMoving; } var mouseMoving = false; var previousScreenX = 0; var previousScreenY = 0; function hasMouseMovement(event) { const movementX = event.movementX || event.screenX - previousScreenX; const movementY = event.movementY || event.screenY - previousScreenY; previousScreenX = event.screenX; previousScreenY = event.screenY; return movementX || movementY || false; } function setMouseMoving(event) { if (!hasMouseMovement(event)) return; mouseMoving = true; } function resetMouseMoving() { mouseMoving = false; } // node_modules/@ariakit/react-core/esm/__chunks/GWSL6KNJ.js var React8 = __toESM(require_react(), 1); var import_jsx_runtime206 = __toESM(require_jsx_runtime(), 1); function forwardRef22(render4) { const Role = React8.forwardRef( // @ts-ignore Incompatible with React 19 types. Ignore for now. (props, ref) => render4({ ...props, ref }) ); Role.displayName = render4.displayName || render4.name; return Role; } function memo22(Component, propsAreEqual) { return React8.memo(Component, propsAreEqual); } function createElement5(Type, props) { const { wrapElement, render: render4, ...rest } = props; const mergedRef = useMergeRefs(props.ref, getRefProperty(render4)); let element; if (React8.isValidElement(render4)) { const renderProps = { // @ts-ignore Incompatible with React 19 types. Ignore for now. ...render4.props, ref: mergedRef }; element = React8.cloneElement(render4, mergeProps2(rest, renderProps)); } else if (render4) { element = render4(rest); } else { element = /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(Type, { ...rest }); } if (wrapElement) { return wrapElement(element); } return element; } function createHook(useProps) { const useRole = (props = {}) => { return useProps(props); }; useRole.displayName = useProps.name; return useRole; } function createStoreContext(providers = [], scopedProviders = []) { const context = React8.createContext(void 0); const scopedContext = React8.createContext(void 0); const useContext210 = () => React8.useContext(context); const useScopedContext = (onlyScoped = false) => { const scoped = React8.useContext(scopedContext); const store2 = useContext210(); if (onlyScoped) return scoped; return scoped || store2; }; const useProviderContext = () => { const scoped = React8.useContext(scopedContext); const store2 = useContext210(); if (scoped && scoped === store2) return; return store2; }; const ContextProvider = (props) => { return providers.reduceRight( (children, Provider) => /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(Provider, { ...props, children }), /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(context.Provider, { ...props }) ); }; const ScopedContextProvider = (props) => { return /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(ContextProvider, { ...props, children: scopedProviders.reduceRight( (children, Provider) => /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(Provider, { ...props, children }), /* @__PURE__ */ (0, import_jsx_runtime206.jsx)(scopedContext.Provider, { ...props }) ) }); }; return { context, scopedContext, useContext: useContext210, useScopedContext, useProviderContext, ContextProvider, ScopedContextProvider }; } // node_modules/@ariakit/react-core/esm/__chunks/SMPCIMZM.js var ctx2 = createStoreContext(); var useCollectionContext = ctx2.useContext; var useCollectionScopedContext = ctx2.useScopedContext; var useCollectionProviderContext = ctx2.useProviderContext; var CollectionContextProvider = ctx2.ContextProvider; var CollectionScopedContextProvider = ctx2.ScopedContextProvider; // node_modules/@ariakit/react-core/esm/__chunks/AVVXDJMZ.js var import_react10 = __toESM(require_react(), 1); var ctx3 = createStoreContext( [CollectionContextProvider], [CollectionScopedContextProvider] ); var useCompositeContext = ctx3.useContext; var useCompositeScopedContext = ctx3.useScopedContext; var useCompositeProviderContext = ctx3.useProviderContext; var CompositeContextProvider = ctx3.ContextProvider; var CompositeScopedContextProvider = ctx3.ScopedContextProvider; var CompositeItemContext = (0, import_react10.createContext)( void 0 ); var CompositeRowContext = (0, import_react10.createContext)( void 0 ); // node_modules/@ariakit/react-core/esm/__chunks/5VQZOHHZ.js function findFirstEnabledItem(items, excludeId) { return items.find((item) => { if (excludeId) { return !item.disabled && item.id !== excludeId; } return !item.disabled; }); } function getEnabledItem(store2, id) { if (!id) return null; return store2.item(id) || null; } function groupItemsByRows(items) { const rows = []; for (const item of items) { const row = rows.find((currentRow) => { var _a; return ((_a = currentRow[0]) == null ? void 0 : _a.rowId) === item.rowId; }); if (row) { row.push(item); } else { rows.push([item]); } } return rows; } function selectTextField(element, collapseToEnd = false) { if (isTextField(element)) { element.setSelectionRange( collapseToEnd ? element.value.length : 0, element.value.length ); } else if (element.isContentEditable) { const selection = getDocument(element).getSelection(); selection == null ? void 0 : selection.selectAllChildren(element); if (collapseToEnd) { selection == null ? void 0 : selection.collapseToEnd(); } } } var FOCUS_SILENTLY = /* @__PURE__ */ Symbol("FOCUS_SILENTLY"); function focusSilently(element) { element[FOCUS_SILENTLY] = true; element.focus({ preventScroll: true }); } function silentlyFocused(element) { const isSilentlyFocused = element[FOCUS_SILENTLY]; delete element[FOCUS_SILENTLY]; return isSilentlyFocused; } function isItem(store2, element, exclude) { if (!element) return false; if (element === exclude) return false; const item = store2.item(element.id); if (!item) return false; if (exclude && item.element === exclude) return false; return true; } // node_modules/@ariakit/react-core/esm/__chunks/Z2O3VLAQ.js var import_react11 = __toESM(require_react(), 1); var TagName = "div"; var useCollectionItem = createHook( function useCollectionItem2({ store: store2, shouldRegisterItem = true, getItem = identity, // @ts-expect-error This prop may come from a collection renderer. element, ...props }) { const context = useCollectionContext(); store2 = store2 || context; const id = useId5(props.id); const ref = (0, import_react11.useRef)(element); (0, import_react11.useEffect)(() => { const element2 = ref.current; if (!id) return; if (!element2) return; if (!shouldRegisterItem) return; const item = getItem({ id, element: element2 }); return store2 == null ? void 0 : store2.renderItem(item); }, [id, shouldRegisterItem, getItem, store2]); props = { ...props, ref: useMergeRefs(ref, props.ref) }; return removeUndefinedValues(props); } ); var CollectionItem = forwardRef22(function CollectionItem2(props) { const htmlProps = useCollectionItem(props); return createElement5(TagName, htmlProps); }); // node_modules/@ariakit/react-core/esm/__chunks/SWN3JYXT.js var import_react12 = __toESM(require_react(), 1); var FocusableContext = (0, import_react12.createContext)(true); // node_modules/@ariakit/core/esm/utils/focus.js var selector = "input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], summary, iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])"; function isFocusable(element) { if (!element.matches(selector)) return false; if (!isVisible(element)) return false; if (element.closest("[inert]")) return false; return true; } function getClosestFocusable(element) { while (element && !isFocusable(element)) { element = element.closest(selector); } return element || null; } function hasFocus(element) { const activeElement = getActiveElement(element); if (!activeElement) return false; if (activeElement === element) return true; const activeDescendant = activeElement.getAttribute("aria-activedescendant"); if (!activeDescendant) return false; return activeDescendant === element.id; } function hasFocusWithin(element) { const activeElement = getActiveElement(element); if (!activeElement) return false; if (contains(element, activeElement)) return true; const activeDescendant = activeElement.getAttribute("aria-activedescendant"); if (!activeDescendant) return false; if (!("id" in element)) return false; if (activeDescendant === element.id) return true; return !!element.querySelector(`#${CSS.escape(activeDescendant)}`); } function focusIfNeeded(element) { if (!hasFocusWithin(element) && isFocusable(element)) { element.focus(); } } function focusIntoView(element, options) { if (!("scrollIntoView" in element)) { element.focus(); } else { element.focus({ preventScroll: true }); element.scrollIntoView({ block: "nearest", inline: "nearest", ...options }); } } // node_modules/@ariakit/react-core/esm/__chunks/U6HHPQDW.js var import_react13 = __toESM(require_react(), 1); var TagName2 = "div"; var isSafariBrowser = isSafari(); var alwaysFocusVisibleInputTypes = [ "text", "search", "url", "tel", "email", "password", "number", "date", "month", "week", "time", "datetime", "datetime-local" ]; var safariFocusAncestorSymbol = /* @__PURE__ */ Symbol("safariFocusAncestor"); function markSafariFocusAncestor(element, value) { if (!element) return; element[safariFocusAncestorSymbol] = value; } function isAlwaysFocusVisible(element) { const { tagName, readOnly, type } = element; if (tagName === "TEXTAREA" && !readOnly) return true; if (tagName === "SELECT" && !readOnly) return true; if (tagName === "INPUT" && !readOnly) { return alwaysFocusVisibleInputTypes.includes(type); } if (element.isContentEditable) return true; const role = element.getAttribute("role"); if (role === "combobox" && element.dataset.name) { return true; } return false; } function getLabels(element) { if ("labels" in element) { return element.labels; } return null; } function isNativeCheckboxOrRadio(element) { const tagName = element.tagName.toLowerCase(); if (tagName === "input" && element.type) { return element.type === "radio" || element.type === "checkbox"; } return false; } function isNativeTabbable(tagName) { if (!tagName) return true; return tagName === "button" || tagName === "summary" || tagName === "input" || tagName === "select" || tagName === "textarea" || tagName === "a"; } function supportsDisabledAttribute(tagName) { if (!tagName) return true; return tagName === "button" || tagName === "input" || tagName === "select" || tagName === "textarea"; } function getTabIndex(focusable, trulyDisabled, nativeTabbable, supportsDisabled, tabIndexProp) { if (!focusable) { return tabIndexProp; } if (trulyDisabled) { if (nativeTabbable && !supportsDisabled) { return -1; } return; } if (nativeTabbable) { return tabIndexProp; } return tabIndexProp || 0; } function useDisableEvent(onEvent, disabled) { return useEvent((event) => { onEvent == null ? void 0 : onEvent(event); if (event.defaultPrevented) return; if (disabled) { event.stopPropagation(); event.preventDefault(); } }); } var hasInstalledGlobalEventListeners2 = false; var isKeyboardModality = true; function onGlobalMouseDown(event) { const target = event.target; if (target && "hasAttribute" in target) { if (!target.hasAttribute("data-focus-visible")) { isKeyboardModality = false; } } } function onGlobalKeyDown(event) { if (event.metaKey) return; if (event.ctrlKey) return; if (event.altKey) return; isKeyboardModality = true; } var useFocusable = createHook( function useFocusable2({ focusable = true, accessibleWhenDisabled, autoFocus, onFocusVisible, ...props }) { const ref = (0, import_react13.useRef)(null); (0, import_react13.useEffect)(() => { if (!focusable) return; if (hasInstalledGlobalEventListeners2) return; addGlobalEventListener("mousedown", onGlobalMouseDown, true); addGlobalEventListener("keydown", onGlobalKeyDown, true); hasInstalledGlobalEventListeners2 = true; }, [focusable]); if (isSafariBrowser) { (0, import_react13.useEffect)(() => { if (!focusable) return; const element = ref.current; if (!element) return; if (!isNativeCheckboxOrRadio(element)) return; const labels = getLabels(element); if (!labels) return; const onMouseUp = () => queueMicrotask(() => element.focus()); for (const label of labels) { label.addEventListener("mouseup", onMouseUp); } return () => { for (const label of labels) { label.removeEventListener("mouseup", onMouseUp); } }; }, [focusable]); } const disabled = focusable && disabledFromProps(props); const trulyDisabled = !!disabled && !accessibleWhenDisabled; const [focusVisible, setFocusVisible] = (0, import_react13.useState)(false); (0, import_react13.useEffect)(() => { if (!focusable) return; if (trulyDisabled && focusVisible) { setFocusVisible(false); } }, [focusable, trulyDisabled, focusVisible]); (0, import_react13.useEffect)(() => { if (!focusable) return; if (!focusVisible) return; const element = ref.current; if (!element) return; if (typeof IntersectionObserver === "undefined") return; const observer = new IntersectionObserver(() => { if (!isFocusable(element)) { setFocusVisible(false); } }); observer.observe(element); return () => observer.disconnect(); }, [focusable, focusVisible]); const onKeyPressCapture = useDisableEvent( props.onKeyPressCapture, disabled ); const onMouseDownCapture = useDisableEvent( props.onMouseDownCapture, disabled ); const onClickCapture = useDisableEvent(props.onClickCapture, disabled); const onMouseDownProp = props.onMouseDown; const onMouseDown = useEvent((event) => { onMouseDownProp == null ? void 0 : onMouseDownProp(event); if (event.defaultPrevented) return; if (!focusable) return; const element = event.currentTarget; if (!isSafariBrowser) return; if (isPortalEvent(event)) return; if (!isButton(element) && !isNativeCheckboxOrRadio(element)) return; let receivedFocus = false; const onFocus = () => { receivedFocus = true; }; const options = { capture: true, once: true }; element.addEventListener("focusin", onFocus, options); const focusableContainer = getClosestFocusable(element.parentElement); markSafariFocusAncestor(focusableContainer, true); queueBeforeEvent(element, "mouseup", () => { element.removeEventListener("focusin", onFocus, true); markSafariFocusAncestor(focusableContainer, false); if (receivedFocus) return; focusIfNeeded(element); }); }); const handleFocusVisible = (event, currentTarget) => { if (currentTarget) { event.currentTarget = currentTarget; } if (!focusable) return; const element = event.currentTarget; if (!element) return; if (!hasFocus(element)) return; onFocusVisible == null ? void 0 : onFocusVisible(event); if (event.defaultPrevented) return; element.dataset.focusVisible = "true"; setFocusVisible(true); }; const onKeyDownCaptureProp = props.onKeyDownCapture; const onKeyDownCapture = useEvent((event) => { onKeyDownCaptureProp == null ? void 0 : onKeyDownCaptureProp(event); if (event.defaultPrevented) return; if (!focusable) return; if (focusVisible) return; if (event.metaKey) return; if (event.altKey) return; if (event.ctrlKey) return; if (!isSelfTarget(event)) return; const element = event.currentTarget; const applyFocusVisible = () => handleFocusVisible(event, element); queueBeforeEvent(element, "focusout", applyFocusVisible); }); const onFocusCaptureProp = props.onFocusCapture; const onFocusCapture = useEvent((event) => { onFocusCaptureProp == null ? void 0 : onFocusCaptureProp(event); if (event.defaultPrevented) return; if (!focusable) return; if (!isSelfTarget(event)) { setFocusVisible(false); return; } const element = event.currentTarget; const applyFocusVisible = () => handleFocusVisible(event, element); if (isKeyboardModality || isAlwaysFocusVisible(event.target)) { queueBeforeEvent(event.target, "focusout", applyFocusVisible); } else { setFocusVisible(false); } }); const onBlurProp = props.onBlur; const onBlur = useEvent((event) => { onBlurProp == null ? void 0 : onBlurProp(event); if (!focusable) return; if (!isFocusEventOutside(event)) return; event.currentTarget.removeAttribute("data-focus-visible"); setFocusVisible(false); }); const autoFocusOnShow = (0, import_react13.useContext)(FocusableContext); const autoFocusRef = useEvent((element) => { if (!focusable) return; if (!autoFocus) return; if (!element) return; if (!autoFocusOnShow) return; queueMicrotask(() => { if (hasFocus(element)) return; if (!isFocusable(element)) return; element.focus(); }); }); const tagName = useTagName(ref); const nativeTabbable = focusable && isNativeTabbable(tagName); const supportsDisabled = focusable && supportsDisabledAttribute(tagName); const styleProp = props.style; const style = (0, import_react13.useMemo)(() => { if (trulyDisabled) { return { pointerEvents: "none", ...styleProp }; } return styleProp; }, [trulyDisabled, styleProp]); props = { "data-focus-visible": focusable && focusVisible || void 0, "data-autofocus": autoFocus || void 0, "aria-disabled": disabled || void 0, ...props, ref: useMergeRefs(ref, autoFocusRef, props.ref), style, tabIndex: getTabIndex( focusable, trulyDisabled, nativeTabbable, supportsDisabled, props.tabIndex ), disabled: supportsDisabled && trulyDisabled ? true : void 0, // TODO: Test Focusable contentEditable. contentEditable: disabled ? void 0 : props.contentEditable, onKeyPressCapture, onClickCapture, onMouseDownCapture, onMouseDown, onKeyDownCapture, onFocusCapture, onBlur }; return removeUndefinedValues(props); } ); var Focusable = forwardRef22(function Focusable2(props) { const htmlProps = useFocusable(props); return createElement5(TagName2, htmlProps); }); // node_modules/@ariakit/react-core/esm/__chunks/PZ3OL7I2.js var import_react14 = __toESM(require_react(), 1); var TagName3 = "button"; function isNativeClick(event) { if (!event.isTrusted) return false; const element = event.currentTarget; if (event.key === "Enter") { return isButton(element) || element.tagName === "SUMMARY" || element.tagName === "A"; } if (event.key === " ") { return isButton(element) || element.tagName === "SUMMARY" || element.tagName === "INPUT" || element.tagName === "SELECT"; } return false; } var symbol = /* @__PURE__ */ Symbol("command"); var useCommand = createHook( function useCommand2({ clickOnEnter = true, clickOnSpace = true, ...props }) { const ref = (0, import_react14.useRef)(null); const [isNativeButton, setIsNativeButton] = (0, import_react14.useState)(false); (0, import_react14.useEffect)(() => { if (!ref.current) return; setIsNativeButton(isButton(ref.current)); }, []); const [active, setActive] = (0, import_react14.useState)(false); const activeRef = (0, import_react14.useRef)(false); const disabled = disabledFromProps(props); const [isDuplicate, metadataProps] = useMetadataProps(props, symbol, true); const onKeyDownProp = props.onKeyDown; const onKeyDown = useEvent((event) => { onKeyDownProp == null ? void 0 : onKeyDownProp(event); const element = event.currentTarget; if (event.defaultPrevented) return; if (isDuplicate) return; if (disabled) return; if (!isSelfTarget(event)) return; if (isTextField(element)) return; if (element.isContentEditable) return; const isEnter = clickOnEnter && event.key === "Enter"; const isSpace = clickOnSpace && event.key === " "; const shouldPreventEnter = event.key === "Enter" && !clickOnEnter; const shouldPreventSpace = event.key === " " && !clickOnSpace; if (shouldPreventEnter || shouldPreventSpace) { event.preventDefault(); return; } if (isEnter || isSpace) { const nativeClick = isNativeClick(event); if (isEnter) { if (!nativeClick) { event.preventDefault(); const { view, ...eventInit } = event; const click = () => fireClickEvent(element, eventInit); if (isFirefox()) { queueBeforeEvent(element, "keyup", click); } else { queueMicrotask(click); } } } else if (isSpace) { activeRef.current = true; if (!nativeClick) { event.preventDefault(); setActive(true); } } } }); const onKeyUpProp = props.onKeyUp; const onKeyUp = useEvent((event) => { onKeyUpProp == null ? void 0 : onKeyUpProp(event); if (event.defaultPrevented) return; if (isDuplicate) return; if (disabled) return; if (event.metaKey) return; const isSpace = clickOnSpace && event.key === " "; if (activeRef.current && isSpace) { activeRef.current = false; if (!isNativeClick(event)) { event.preventDefault(); setActive(false); const element = event.currentTarget; const { view, ...eventInit } = event; queueMicrotask(() => fireClickEvent(element, eventInit)); } } }); props = { "data-active": active || void 0, type: isNativeButton ? "button" : void 0, ...metadataProps, ...props, ref: useMergeRefs(ref, props.ref), onKeyDown, onKeyUp }; props = useFocusable(props); return props; } ); var Command = forwardRef22(function Command2(props) { const htmlProps = useCommand(props); return createElement5(TagName3, htmlProps); }); // node_modules/@ariakit/core/esm/__chunks/SXKM4CGU.js function getInternal(store2, key) { const internals = store2.__unstableInternals; invariant(internals, "Invalid store"); return internals[key]; } function createStore(initialState, ...stores) { let state = initialState; let prevStateBatch = state; let lastUpdate = /* @__PURE__ */ Symbol(); let destroy = noop3; const instances = /* @__PURE__ */ new Set(); const updatedKeys = /* @__PURE__ */ new Set(); const setups = /* @__PURE__ */ new Set(); const listeners = /* @__PURE__ */ new Set(); const batchListeners = /* @__PURE__ */ new Set(); const disposables = /* @__PURE__ */ new WeakMap(); const listenerKeys = /* @__PURE__ */ new WeakMap(); const storeSetup = (callback) => { setups.add(callback); return () => setups.delete(callback); }; const storeInit = () => { const initialized = instances.size; const instance = /* @__PURE__ */ Symbol(); instances.add(instance); const maybeDestroy = () => { instances.delete(instance); if (instances.size) return; destroy(); }; if (initialized) return maybeDestroy; const desyncs = getKeys(state).map( (key) => chain( ...stores.map((store2) => { var _a; const storeState = (_a = store2 == null ? void 0 : store2.getState) == null ? void 0 : _a.call(store2); if (!storeState) return; if (!hasOwnProperty(storeState, key)) return; return sync2(store2, [key], (state2) => { setState( key, state2[key], // @ts-expect-error - Not public API. This is just to prevent // infinite loops. true ); }); }) ) ); const teardowns = []; for (const setup2 of setups) { teardowns.push(setup2()); } const cleanups = stores.map(init); destroy = chain(...desyncs, ...teardowns, ...cleanups); return maybeDestroy; }; const sub = (keys, listener, set = listeners) => { set.add(listener); listenerKeys.set(listener, keys); return () => { var _a; (_a = disposables.get(listener)) == null ? void 0 : _a(); disposables.delete(listener); listenerKeys.delete(listener); set.delete(listener); }; }; const storeSubscribe = (keys, listener) => sub(keys, listener); const storeSync = (keys, listener) => { disposables.set(listener, listener(state, state)); return sub(keys, listener); }; const storeBatch = (keys, listener) => { disposables.set(listener, listener(state, prevStateBatch)); return sub(keys, listener, batchListeners); }; const storePick = (keys) => createStore(pick(state, keys), finalStore); const storeOmit = (keys) => createStore(omit(state, keys), finalStore); const getState = () => state; const setState = (key, value, fromStores = false) => { var _a; if (!hasOwnProperty(state, key)) return; const nextValue = applyState(value, state[key]); if (nextValue === state[key]) return; if (!fromStores) { for (const store2 of stores) { (_a = store2 == null ? void 0 : store2.setState) == null ? void 0 : _a.call(store2, key, nextValue); } } const prevState = state; state = { ...state, [key]: nextValue }; const thisUpdate = /* @__PURE__ */ Symbol(); lastUpdate = thisUpdate; updatedKeys.add(key); const run = (listener, prev, uKeys) => { var _a2; const keys = listenerKeys.get(listener); const updated = (k2) => uKeys ? uKeys.has(k2) : k2 === key; if (!keys || keys.some(updated)) { (_a2 = disposables.get(listener)) == null ? void 0 : _a2(); disposables.set(listener, listener(state, prev)); } }; for (const listener of listeners) { run(listener, prevState); } queueMicrotask(() => { if (lastUpdate !== thisUpdate) return; const snapshot = state; for (const listener of batchListeners) { run(listener, prevStateBatch, updatedKeys); } prevStateBatch = snapshot; updatedKeys.clear(); }); }; const finalStore = { getState, setState, __unstableInternals: { setup: storeSetup, init: storeInit, subscribe: storeSubscribe, sync: storeSync, batch: storeBatch, pick: storePick, omit: storeOmit } }; return finalStore; } function setup(store2, ...args) { if (!store2) return; return getInternal(store2, "setup")(...args); } function init(store2, ...args) { if (!store2) return; return getInternal(store2, "init")(...args); } function subscribe(store2, ...args) { if (!store2) return; return getInternal(store2, "subscribe")(...args); } function sync2(store2, ...args) { if (!store2) return; return getInternal(store2, "sync")(...args); } function batch(store2, ...args) { if (!store2) return; return getInternal(store2, "batch")(...args); } function omit2(store2, ...args) { if (!store2) return; return getInternal(store2, "omit")(...args); } function pick2(store2, ...args) { if (!store2) return; return getInternal(store2, "pick")(...args); } function mergeStore(...stores) { var _a; const initialState = {}; for (const store22 of stores) { const nextState = (_a = store22 == null ? void 0 : store22.getState) == null ? void 0 : _a.call(store22); if (nextState) { Object.assign(initialState, nextState); } } const store2 = createStore(initialState, ...stores); return Object.assign({}, ...stores, store2); } function throwOnConflictingProps(props, store2) { if (false) return; if (!store2) return; const defaultKeys = Object.entries(props).filter(([key, value]) => key.startsWith("default") && value !== void 0).map(([key]) => { var _a; const stateKey = key.replace("default", ""); return `${((_a = stateKey[0]) == null ? void 0 : _a.toLowerCase()) || ""}${stateKey.slice(1)}`; }); if (!defaultKeys.length) return; const storeState = store2.getState(); const conflictingProps = defaultKeys.filter( (key) => hasOwnProperty(storeState, key) ); if (!conflictingProps.length) return; throw new Error( `Passing a store prop in conjunction with a default state is not supported. const store = useSelectStore(); ^ ^ Instead, pass the default state to the topmost store: const store = useSelectStore({ defaultValue: "Apple" }); See https://github.com/ariakit/ariakit/pull/2745 for more details. If there's a particular need for this, please submit a feature request at https://github.com/ariakit/ariakit ` ); } // node_modules/@ariakit/react-core/esm/__chunks/Q5W46E73.js var React9 = __toESM(require_react(), 1); var import_shim = __toESM(require_shim(), 1); var { useSyncExternalStore } = import_shim.default; var noopSubscribe = () => () => { }; function useStoreState(store2, keyOrSelector = identity) { const storeSubscribe = React9.useCallback( (callback) => { if (!store2) return noopSubscribe(); return subscribe(store2, null, callback); }, [store2] ); const getSnapshot = () => { const key = typeof keyOrSelector === "string" ? keyOrSelector : null; const selector2 = typeof keyOrSelector === "function" ? keyOrSelector : null; const state = store2 == null ? void 0 : store2.getState(); if (selector2) return selector2(state); if (!state) return; if (!key) return; if (!hasOwnProperty(state, key)) return; return state[key]; }; return useSyncExternalStore(storeSubscribe, getSnapshot, getSnapshot); } function useStoreStateObject(store2, object) { const objRef = React9.useRef( {} ); const storeSubscribe = React9.useCallback( (callback) => { if (!store2) return noopSubscribe(); return subscribe(store2, null, callback); }, [store2] ); const getSnapshot = () => { const state = store2 == null ? void 0 : store2.getState(); let updated = false; const obj = objRef.current; for (const prop in object) { const keyOrSelector = object[prop]; if (typeof keyOrSelector === "function") { const value = keyOrSelector(state); if (value !== obj[prop]) { obj[prop] = value; updated = true; } } if (typeof keyOrSelector === "string") { if (!state) continue; if (!hasOwnProperty(state, keyOrSelector)) continue; const value = state[keyOrSelector]; if (value !== obj[prop]) { obj[prop] = value; updated = true; } } } if (updated) { objRef.current = { ...obj }; } return objRef.current; }; return useSyncExternalStore(storeSubscribe, getSnapshot, getSnapshot); } function useStoreProps(store2, props, key, setKey) { const value = hasOwnProperty(props, key) ? props[key] : void 0; const setValue = setKey ? props[setKey] : void 0; const propsRef = useLiveRef({ value, setValue }); useSafeLayoutEffect(() => { return sync2(store2, [key], (state, prev) => { const { value: value2, setValue: setValue2 } = propsRef.current; if (!setValue2) return; if (state[key] === prev[key]) return; if (state[key] === value2) return; setValue2(state[key]); }); }, [store2, key]); useSafeLayoutEffect(() => { if (value === void 0) return; store2.setState(key, value); return batch(store2, [key], () => { if (value === void 0) return; store2.setState(key, value); }); }); } function useStore(createStore2, props) { const [store2, setStore] = React9.useState(() => createStore2(props)); useSafeLayoutEffect(() => init(store2), [store2]); const useState210 = React9.useCallback( (keyOrSelector) => useStoreState(store2, keyOrSelector), [store2] ); const memoizedStore = React9.useMemo( () => ({ ...store2, useState: useState210 }), [store2, useState210] ); const updateStore = useEvent(() => { setStore((store22) => createStore2({ ...props, ...store22.getState() })); }); return [memoizedStore, updateStore]; } // node_modules/@ariakit/react-core/esm/__chunks/WZWDIE3S.js var import_react15 = __toESM(require_react(), 1); var import_jsx_runtime207 = __toESM(require_jsx_runtime(), 1); var TagName4 = "button"; function isEditableElement(element) { if (isTextbox(element)) return true; return element.tagName === "INPUT" && !isButton(element); } function getNextPageOffset(scrollingElement, pageUp = false) { const height = scrollingElement.clientHeight; const { top } = scrollingElement.getBoundingClientRect(); const pageSize = Math.max(height * 0.875, height - 40) * 1.5; const pageOffset = pageUp ? height - pageSize + top : pageSize + top; if (scrollingElement.tagName === "HTML") { return pageOffset + scrollingElement.scrollTop; } return pageOffset; } function getItemOffset(itemElement, pageUp = false) { const { top } = itemElement.getBoundingClientRect(); if (pageUp) { return top + itemElement.clientHeight; } return top; } function findNextPageItemId(element, store2, next, pageUp = false) { var _a; if (!store2) return; if (!next) return; const { renderedItems } = store2.getState(); const scrollingElement = getScrollingElement(element); if (!scrollingElement) return; const nextPageOffset = getNextPageOffset(scrollingElement, pageUp); let id; let prevDifference; for (let i2 = 0; i2 < renderedItems.length; i2 += 1) { const previousId = id; id = next(i2); if (!id) break; if (id === previousId) continue; const itemElement = (_a = getEnabledItem(store2, id)) == null ? void 0 : _a.element; if (!itemElement) continue; const itemOffset = getItemOffset(itemElement, pageUp); const difference = itemOffset - nextPageOffset; const absDifference = Math.abs(difference); if (pageUp && difference <= 0 || !pageUp && difference >= 0) { if (prevDifference !== void 0 && prevDifference < absDifference) { id = previousId; } break; } prevDifference = absDifference; } return id; } function targetIsAnotherItem(event, store2) { if (isSelfTarget(event)) return false; return isItem(store2, event.target); } var useCompositeItem = createHook( function useCompositeItem2({ store: store2, rowId: rowIdProp, preventScrollOnKeyDown = false, moveOnKeyPress = true, tabbable = false, getItem: getItemProp, "aria-setsize": ariaSetSizeProp, "aria-posinset": ariaPosInSetProp, ...props }) { const context = useCompositeContext(); store2 = store2 || context; const id = useId5(props.id); const ref = (0, import_react15.useRef)(null); const row = (0, import_react15.useContext)(CompositeRowContext); const disabled = disabledFromProps(props); const trulyDisabled = disabled && !props.accessibleWhenDisabled; const { rowId, baseElement, isActiveItem, ariaSetSize, ariaPosInSet, isTabbable } = useStoreStateObject(store2, { rowId(state) { if (rowIdProp) return rowIdProp; if (!state) return; if (!(row == null ? void 0 : row.baseElement)) return; if (row.baseElement !== state.baseElement) return; return row.id; }, baseElement(state) { return (state == null ? void 0 : state.baseElement) || void 0; }, isActiveItem(state) { return !!state && state.activeId === id; }, ariaSetSize(state) { if (ariaSetSizeProp != null) return ariaSetSizeProp; if (!state) return; if (!(row == null ? void 0 : row.ariaSetSize)) return; if (row.baseElement !== state.baseElement) return; return row.ariaSetSize; }, ariaPosInSet(state) { if (ariaPosInSetProp != null) return ariaPosInSetProp; if (!state) return; if (!(row == null ? void 0 : row.ariaPosInSet)) return; if (row.baseElement !== state.baseElement) return; const itemsInRow = state.renderedItems.filter( (item) => item.rowId === rowId ); return row.ariaPosInSet + itemsInRow.findIndex((item) => item.id === id); }, isTabbable(state) { if (!(state == null ? void 0 : state.renderedItems.length)) return true; if (state.virtualFocus) return false; if (tabbable) return true; if (state.activeId === null) return false; const item = store2 == null ? void 0 : store2.item(state.activeId); if (item == null ? void 0 : item.disabled) return true; if (!(item == null ? void 0 : item.element)) return true; return state.activeId === id; } }); const getItem = (0, import_react15.useCallback)( (item) => { var _a; const nextItem = { ...item, id: id || item.id, rowId, disabled: !!trulyDisabled, children: (_a = item.element) == null ? void 0 : _a.textContent }; if (getItemProp) { return getItemProp(nextItem); } return nextItem; }, [id, rowId, trulyDisabled, getItemProp] ); const onFocusProp = props.onFocus; const hasFocusedComposite = (0, import_react15.useRef)(false); const onFocus = useEvent((event) => { onFocusProp == null ? void 0 : onFocusProp(event); if (event.defaultPrevented) return; if (isPortalEvent(event)) return; if (!id) return; if (!store2) return; if (targetIsAnotherItem(event, store2)) return; const { virtualFocus, baseElement: baseElement2 } = store2.getState(); store2.setActiveId(id); if (isTextbox(event.currentTarget)) { selectTextField(event.currentTarget); } if (!virtualFocus) return; if (!isSelfTarget(event)) return; if (isEditableElement(event.currentTarget)) return; if (!(baseElement2 == null ? void 0 : baseElement2.isConnected)) return; if (isSafari() && event.currentTarget.hasAttribute("data-autofocus")) { event.currentTarget.scrollIntoView({ block: "nearest", inline: "nearest" }); } hasFocusedComposite.current = true; const fromComposite = event.relatedTarget === baseElement2 || isItem(store2, event.relatedTarget); if (fromComposite) { focusSilently(baseElement2); } else { baseElement2.focus(); } }); const onBlurCaptureProp = props.onBlurCapture; const onBlurCapture = useEvent((event) => { onBlurCaptureProp == null ? void 0 : onBlurCaptureProp(event); if (event.defaultPrevented) return; const state = store2 == null ? void 0 : store2.getState(); if ((state == null ? void 0 : state.virtualFocus) && hasFocusedComposite.current) { hasFocusedComposite.current = false; event.preventDefault(); event.stopPropagation(); } }); const onKeyDownProp = props.onKeyDown; const preventScrollOnKeyDownProp = useBooleanEvent(preventScrollOnKeyDown); const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); const onKeyDown = useEvent((event) => { onKeyDownProp == null ? void 0 : onKeyDownProp(event); if (event.defaultPrevented) return; if (!isSelfTarget(event)) return; if (!store2) return; const { currentTarget } = event; const state = store2.getState(); const item = store2.item(id); const isGrid2 = !!(item == null ? void 0 : item.rowId); const isVertical = state.orientation !== "horizontal"; const isHorizontal = state.orientation !== "vertical"; const canHomeEnd = () => { if (isGrid2) return true; if (isHorizontal) return true; if (!state.baseElement) return true; if (!isTextField(state.baseElement)) return true; return false; }; const keyMap = { ArrowUp: (isGrid2 || isVertical) && store2.up, ArrowRight: (isGrid2 || isHorizontal) && store2.next, ArrowDown: (isGrid2 || isVertical) && store2.down, ArrowLeft: (isGrid2 || isHorizontal) && store2.previous, Home: () => { if (!canHomeEnd()) return; if (!isGrid2 || event.ctrlKey) { return store2 == null ? void 0 : store2.first(); } return store2 == null ? void 0 : store2.previous(-1); }, End: () => { if (!canHomeEnd()) return; if (!isGrid2 || event.ctrlKey) { return store2 == null ? void 0 : store2.last(); } return store2 == null ? void 0 : store2.next(-1); }, PageUp: () => { return findNextPageItemId(currentTarget, store2, store2 == null ? void 0 : store2.up, true); }, PageDown: () => { return findNextPageItemId(currentTarget, store2, store2 == null ? void 0 : store2.down); } }; const action = keyMap[event.key]; if (action) { if (isTextbox(currentTarget)) { const selection = getTextboxSelection(currentTarget); const isLeft = isHorizontal && event.key === "ArrowLeft"; const isRight = isHorizontal && event.key === "ArrowRight"; const isUp = isVertical && event.key === "ArrowUp"; const isDown = isVertical && event.key === "ArrowDown"; if (isRight || isDown) { const { length: valueLength } = getTextboxValue(currentTarget); if (selection.end !== valueLength) return; } else if ((isLeft || isUp) && selection.start !== 0) return; } const nextId2 = action(); if (preventScrollOnKeyDownProp(event) || nextId2 !== void 0) { if (!moveOnKeyPressProp(event)) return; event.preventDefault(); store2.move(nextId2); } } }); const providerValue = (0, import_react15.useMemo)( () => ({ id, baseElement }), [id, baseElement] ); props = useWrapElement( props, (element) => /* @__PURE__ */ (0, import_jsx_runtime207.jsx)(CompositeItemContext.Provider, { value: providerValue, children: element }), [providerValue] ); props = { id, "data-active-item": isActiveItem || void 0, ...props, ref: useMergeRefs(ref, props.ref), tabIndex: isTabbable ? props.tabIndex : -1, onFocus, onBlurCapture, onKeyDown }; props = useCommand(props); props = useCollectionItem({ store: store2, ...props, getItem, shouldRegisterItem: id ? props.shouldRegisterItem : false }); return removeUndefinedValues({ ...props, "aria-setsize": ariaSetSize, "aria-posinset": ariaPosInSet }); } ); var CompositeItem = memo22( forwardRef22(function CompositeItem2(props) { const htmlProps = useCompositeItem(props); return createElement5(TagName4, htmlProps); }) ); // node_modules/@ariakit/core/esm/__chunks/7PRQYBBV.js function toArray2(arg) { if (Array.isArray(arg)) { return arg; } return typeof arg !== "undefined" ? [arg] : []; } function flatten2DArray(array) { const flattened = []; for (const row of array) { flattened.push(...row); } return flattened; } function reverseArray(array) { return array.slice().reverse(); } // node_modules/@ariakit/react-core/esm/__chunks/ZMWF7ASR.js var import_react16 = __toESM(require_react(), 1); var import_jsx_runtime208 = __toESM(require_jsx_runtime(), 1); var TagName5 = "div"; function isGrid(items) { return items.some((item) => !!item.rowId); } function isPrintableKey(event) { const target = event.target; if (target && !isTextField(target)) return false; return event.key.length === 1 && !event.ctrlKey && !event.metaKey; } function isModifierKey(event) { return event.key === "Shift" || event.key === "Control" || event.key === "Alt" || event.key === "Meta"; } function useKeyboardEventProxy(store2, onKeyboardEvent, previousElementRef) { return useEvent((event) => { var _a; onKeyboardEvent == null ? void 0 : onKeyboardEvent(event); if (event.defaultPrevented) return; if (event.isPropagationStopped()) return; if (!isSelfTarget(event)) return; if (isModifierKey(event)) return; if (isPrintableKey(event)) return; const state = store2.getState(); const activeElement = (_a = getEnabledItem(store2, state.activeId)) == null ? void 0 : _a.element; if (!activeElement) return; const { view, ...eventInit } = event; const previousElement = previousElementRef == null ? void 0 : previousElementRef.current; if (activeElement !== previousElement) { activeElement.focus(); } if (!fireKeyboardEvent(activeElement, event.type, eventInit)) { event.preventDefault(); } if (event.currentTarget.contains(activeElement)) { event.stopPropagation(); } }); } function findFirstEnabledItemInTheLastRow(items) { return findFirstEnabledItem( flatten2DArray(reverseArray(groupItemsByRows(items))) ); } function useScheduleFocus(store2) { const [scheduled, setScheduled] = (0, import_react16.useState)(false); const schedule2 = (0, import_react16.useCallback)(() => setScheduled(true), []); const activeItem = store2.useState( (state) => getEnabledItem(store2, state.activeId) ); (0, import_react16.useEffect)(() => { const activeElement = activeItem == null ? void 0 : activeItem.element; if (!scheduled) return; if (!activeElement) return; setScheduled(false); activeElement.focus({ preventScroll: true }); }, [activeItem, scheduled]); return schedule2; } var useComposite = createHook( function useComposite2({ store: store2, composite = true, focusOnMove = composite, moveOnKeyPress = true, ...props }) { const context = useCompositeProviderContext(); store2 = store2 || context; invariant( store2, "Composite must receive a `store` prop or be wrapped in a CompositeProvider component." ); const ref = (0, import_react16.useRef)(null); const previousElementRef = (0, import_react16.useRef)(null); const scheduleFocus = useScheduleFocus(store2); const moves = store2.useState("moves"); const [, setBaseElement] = useTransactionState( composite ? store2.setBaseElement : null ); (0, import_react16.useEffect)(() => { var _a; if (!store2) return; if (!moves) return; if (!composite) return; if (!focusOnMove) return; const { activeId: activeId2 } = store2.getState(); const itemElement = (_a = getEnabledItem(store2, activeId2)) == null ? void 0 : _a.element; if (!itemElement) return; focusIntoView(itemElement); }, [store2, moves, composite, focusOnMove]); useSafeLayoutEffect(() => { if (!store2) return; if (!moves) return; if (!composite) return; const { baseElement, activeId: activeId2 } = store2.getState(); const isSelfAcive = activeId2 === null; if (!isSelfAcive) return; if (!baseElement) return; const previousElement = previousElementRef.current; previousElementRef.current = null; if (previousElement) { fireBlurEvent(previousElement, { relatedTarget: baseElement }); } if (!hasFocus(baseElement)) { baseElement.focus(); } }, [store2, moves, composite]); const activeId = store2.useState("activeId"); const virtualFocus = store2.useState("virtualFocus"); useSafeLayoutEffect(() => { var _a; if (!store2) return; if (!composite) return; if (!virtualFocus) return; const previousElement = previousElementRef.current; previousElementRef.current = null; if (!previousElement) return; const activeElement = (_a = getEnabledItem(store2, activeId)) == null ? void 0 : _a.element; const relatedTarget = activeElement || getActiveElement(previousElement); if (relatedTarget === previousElement) return; fireBlurEvent(previousElement, { relatedTarget }); }, [store2, activeId, virtualFocus, composite]); const onKeyDownCapture = useKeyboardEventProxy( store2, props.onKeyDownCapture, previousElementRef ); const onKeyUpCapture = useKeyboardEventProxy( store2, props.onKeyUpCapture, previousElementRef ); const onFocusCaptureProp = props.onFocusCapture; const onFocusCapture = useEvent((event) => { onFocusCaptureProp == null ? void 0 : onFocusCaptureProp(event); if (event.defaultPrevented) return; if (!store2) return; const { virtualFocus: virtualFocus2 } = store2.getState(); if (!virtualFocus2) return; const previousActiveElement = event.relatedTarget; const isSilentlyFocused = silentlyFocused(event.currentTarget); if (isSelfTarget(event) && isSilentlyFocused) { event.stopPropagation(); previousElementRef.current = previousActiveElement; } }); const onFocusProp = props.onFocus; const onFocus = useEvent((event) => { onFocusProp == null ? void 0 : onFocusProp(event); if (event.defaultPrevented) return; if (!composite) return; if (!store2) return; const { relatedTarget } = event; const { virtualFocus: virtualFocus2 } = store2.getState(); if (virtualFocus2) { if (isSelfTarget(event) && !isItem(store2, relatedTarget)) { queueMicrotask(scheduleFocus); } } else if (isSelfTarget(event)) { store2.setActiveId(null); } }); const onBlurCaptureProp = props.onBlurCapture; const onBlurCapture = useEvent((event) => { var _a; onBlurCaptureProp == null ? void 0 : onBlurCaptureProp(event); if (event.defaultPrevented) return; if (!store2) return; const { virtualFocus: virtualFocus2, activeId: activeId2 } = store2.getState(); if (!virtualFocus2) return; const activeElement = (_a = getEnabledItem(store2, activeId2)) == null ? void 0 : _a.element; const nextActiveElement = event.relatedTarget; const nextActiveElementIsItem = isItem(store2, nextActiveElement); const previousElement = previousElementRef.current; previousElementRef.current = null; if (isSelfTarget(event) && nextActiveElementIsItem) { if (nextActiveElement === activeElement) { if (previousElement && previousElement !== nextActiveElement) { fireBlurEvent(previousElement, event); } } else if (activeElement) { fireBlurEvent(activeElement, event); } else if (previousElement) { fireBlurEvent(previousElement, event); } event.stopPropagation(); } else { const targetIsItem = isItem(store2, event.target); if (!targetIsItem && activeElement) { fireBlurEvent(activeElement, event); } } }); const onKeyDownProp = props.onKeyDown; const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); const onKeyDown = useEvent((event) => { var _a; onKeyDownProp == null ? void 0 : onKeyDownProp(event); if (event.nativeEvent.isComposing) return; if (event.defaultPrevented) return; if (!store2) return; if (!isSelfTarget(event)) return; const { orientation, renderedItems, activeId: activeId2 } = store2.getState(); const activeItem = getEnabledItem(store2, activeId2); if ((_a = activeItem == null ? void 0 : activeItem.element) == null ? void 0 : _a.isConnected) return; const isVertical = orientation !== "horizontal"; const isHorizontal = orientation !== "vertical"; const grid = isGrid(renderedItems); const isHorizontalKey = event.key === "ArrowLeft" || event.key === "ArrowRight" || event.key === "Home" || event.key === "End"; if (isHorizontalKey && isTextField(event.currentTarget)) return; const up = () => { if (grid) { const item = findFirstEnabledItemInTheLastRow(renderedItems); return item == null ? void 0 : item.id; } return store2 == null ? void 0 : store2.last(); }; const keyMap = { ArrowUp: (grid || isVertical) && up, ArrowRight: (grid || isHorizontal) && store2.first, ArrowDown: (grid || isVertical) && store2.first, ArrowLeft: (grid || isHorizontal) && store2.last, Home: store2.first, End: store2.last, PageUp: store2.first, PageDown: store2.last }; const action = keyMap[event.key]; if (action) { const id = action(); if (id !== void 0) { if (!moveOnKeyPressProp(event)) return; event.preventDefault(); store2.move(id); } } }); props = useWrapElement( props, (element) => /* @__PURE__ */ (0, import_jsx_runtime208.jsx)(CompositeContextProvider, { value: store2, children: element }), [store2] ); const activeDescendant = store2.useState((state) => { var _a; if (!store2) return; if (!composite) return; if (!state.virtualFocus) return; return (_a = getEnabledItem(store2, state.activeId)) == null ? void 0 : _a.id; }); props = { "aria-activedescendant": activeDescendant, ...props, ref: useMergeRefs(ref, setBaseElement, props.ref), onKeyDownCapture, onKeyUpCapture, onFocusCapture, onFocus, onBlurCapture, onKeyDown }; const focusable = store2.useState( (state) => composite && (state.virtualFocus || state.activeId === null) ); props = useFocusable({ focusable, ...props }); return props; } ); var Composite6 = forwardRef22(function Composite22(props) { const htmlProps = useComposite(props); return createElement5(TagName5, htmlProps); }); // node_modules/@ariakit/react-core/esm/__chunks/LVDQFHCH.js var ctx4 = createStoreContext(); var useDisclosureContext = ctx4.useContext; var useDisclosureScopedContext = ctx4.useScopedContext; var useDisclosureProviderContext = ctx4.useProviderContext; var DisclosureContextProvider = ctx4.ContextProvider; var DisclosureScopedContextProvider = ctx4.ScopedContextProvider; // node_modules/@ariakit/react-core/esm/__chunks/A62MDFCW.js var import_react17 = __toESM(require_react(), 1); var ctx5 = createStoreContext( [DisclosureContextProvider], [DisclosureScopedContextProvider] ); var useDialogContext = ctx5.useContext; var useDialogScopedContext = ctx5.useScopedContext; var useDialogProviderContext = ctx5.useProviderContext; var DialogContextProvider = ctx5.ContextProvider; var DialogScopedContextProvider = ctx5.ScopedContextProvider; var DialogHeadingContext = (0, import_react17.createContext)(void 0); var DialogDescriptionContext = (0, import_react17.createContext)(void 0); // node_modules/@ariakit/react-core/esm/__chunks/6B3RXHKP.js var import_react18 = __toESM(require_react(), 1); var import_react_dom2 = __toESM(require_react_dom(), 1); var import_jsx_runtime209 = __toESM(require_jsx_runtime(), 1); var TagName6 = "div"; function afterTimeout(timeoutMs, cb) { const timeoutId = setTimeout(cb, timeoutMs); return () => clearTimeout(timeoutId); } function afterPaint2(cb) { let raf2 = requestAnimationFrame(() => { raf2 = requestAnimationFrame(cb); }); return () => cancelAnimationFrame(raf2); } function parseCSSTime(...times) { return times.join(", ").split(", ").reduce((longestTime, currentTimeString) => { const multiplier = currentTimeString.endsWith("ms") ? 1 : 1e3; const currentTime = Number.parseFloat(currentTimeString || "0s") * multiplier; if (currentTime > longestTime) return currentTime; return longestTime; }, 0); } function isHidden(mounted, hidden, alwaysVisible) { return !alwaysVisible && hidden !== false && (!mounted || !!hidden); } var useDisclosureContent = createHook(function useDisclosureContent2({ store: store2, alwaysVisible, ...props }) { const context = useDisclosureProviderContext(); store2 = store2 || context; invariant( store2, "DisclosureContent must receive a `store` prop or be wrapped in a DisclosureProvider component." ); const ref = (0, import_react18.useRef)(null); const id = useId5(props.id); const [transition, setTransition] = (0, import_react18.useState)(null); const open = store2.useState("open"); const mounted = store2.useState("mounted"); const animated2 = store2.useState("animated"); const contentElement = store2.useState("contentElement"); const otherElement = useStoreState(store2.disclosure, "contentElement"); useSafeLayoutEffect(() => { if (!ref.current) return; store2 == null ? void 0 : store2.setContentElement(ref.current); }, [store2]); useSafeLayoutEffect(() => { let previousAnimated; store2 == null ? void 0 : store2.setState("animated", (animated22) => { previousAnimated = animated22; return true; }); return () => { if (previousAnimated === void 0) return; store2 == null ? void 0 : store2.setState("animated", previousAnimated); }; }, [store2]); useSafeLayoutEffect(() => { if (!animated2) return; if (!(contentElement == null ? void 0 : contentElement.isConnected)) { setTransition(null); return; } return afterPaint2(() => { setTransition(open ? "enter" : mounted ? "leave" : null); }); }, [animated2, contentElement, open, mounted]); useSafeLayoutEffect(() => { if (!store2) return; if (!animated2) return; if (!transition) return; if (!contentElement) return; const stopAnimation = () => store2 == null ? void 0 : store2.setState("animating", false); const stopAnimationSync = () => (0, import_react_dom2.flushSync)(stopAnimation); if (transition === "leave" && open) return; if (transition === "enter" && !open) return; if (typeof animated2 === "number") { const timeout2 = animated2; return afterTimeout(timeout2, stopAnimationSync); } const { transitionDuration, animationDuration, transitionDelay, animationDelay } = getComputedStyle(contentElement); const { transitionDuration: transitionDuration2 = "0", animationDuration: animationDuration2 = "0", transitionDelay: transitionDelay2 = "0", animationDelay: animationDelay2 = "0" } = otherElement ? getComputedStyle(otherElement) : {}; const delay = parseCSSTime( transitionDelay, animationDelay, transitionDelay2, animationDelay2 ); const duration = parseCSSTime( transitionDuration, animationDuration, transitionDuration2, animationDuration2 ); const timeout = delay + duration; if (!timeout) { if (transition === "enter") { store2.setState("animated", false); } stopAnimation(); return; } const frameRate = 1e3 / 60; const maxTimeout = Math.max(timeout - frameRate, 0); return afterTimeout(maxTimeout, stopAnimationSync); }, [store2, animated2, contentElement, otherElement, open, transition]); props = useWrapElement( props, (element) => /* @__PURE__ */ (0, import_jsx_runtime209.jsx)(DialogScopedContextProvider, { value: store2, children: element }), [store2] ); const hidden = isHidden(mounted, props.hidden, alwaysVisible); const styleProp = props.style; const style = (0, import_react18.useMemo)(() => { if (hidden) { return { ...styleProp, display: "none" }; } return styleProp; }, [hidden, styleProp]); props = { id, "data-open": open || void 0, "data-enter": transition === "enter" || void 0, "data-leave": transition === "leave" || void 0, hidden, ...props, ref: useMergeRefs(id ? store2.setContentElement : null, ref, props.ref), style }; return removeUndefinedValues(props); }); var DisclosureContentImpl = forwardRef22(function DisclosureContentImpl2(props) { const htmlProps = useDisclosureContent(props); return createElement5(TagName6, htmlProps); }); var DisclosureContent = forwardRef22(function DisclosureContent2({ unmountOnHide, ...props }) { const context = useDisclosureProviderContext(); const store2 = props.store || context; const mounted = useStoreState( store2, (state) => !unmountOnHide || (state == null ? void 0 : state.mounted) ); if (mounted === false) return null; return /* @__PURE__ */ (0, import_jsx_runtime209.jsx)(DisclosureContentImpl, { ...props }); }); // node_modules/@ariakit/core/esm/__chunks/75BJEVSH.js function createDisclosureStore(props = {}) { const store2 = mergeStore( props.store, omit2(props.disclosure, ["contentElement", "disclosureElement"]) ); throwOnConflictingProps(props, store2); const syncState = store2 == null ? void 0 : store2.getState(); const open = defaultValue( props.open, syncState == null ? void 0 : syncState.open, props.defaultOpen, false ); const animated2 = defaultValue(props.animated, syncState == null ? void 0 : syncState.animated, false); const initialState = { open, animated: animated2, animating: !!animated2 && open, mounted: open, contentElement: defaultValue(syncState == null ? void 0 : syncState.contentElement, null), disclosureElement: defaultValue(syncState == null ? void 0 : syncState.disclosureElement, null) }; const disclosure = createStore(initialState, store2); setup( disclosure, () => sync2(disclosure, ["animated", "animating"], (state) => { if (state.animated) return; disclosure.setState("animating", false); }) ); setup( disclosure, () => subscribe(disclosure, ["open"], () => { if (!disclosure.getState().animated) return; disclosure.setState("animating", true); }) ); setup( disclosure, () => sync2(disclosure, ["open", "animating"], (state) => { disclosure.setState("mounted", state.open || state.animating); }) ); return { ...disclosure, disclosure: props.disclosure, setOpen: (value) => disclosure.setState("open", value), show: () => disclosure.setState("open", true), hide: () => disclosure.setState("open", false), toggle: () => disclosure.setState("open", (open2) => !open2), stopAnimation: () => disclosure.setState("animating", false), setContentElement: (value) => disclosure.setState("contentElement", value), setDisclosureElement: (value) => disclosure.setState("disclosureElement", value) }; } // node_modules/@ariakit/react-core/esm/__chunks/WLZ6H5FH.js function useDisclosureStoreProps(store2, update4, props) { useUpdateEffect(update4, [props.store, props.disclosure]); useStoreProps(store2, props, "open", "setOpen"); useStoreProps(store2, props, "mounted", "setMounted"); useStoreProps(store2, props, "animated"); return Object.assign(store2, { disclosure: props.disclosure }); } // node_modules/@ariakit/react-core/esm/__chunks/JMU4N4M5.js var ctx6 = createStoreContext( [DialogContextProvider], [DialogScopedContextProvider] ); var usePopoverContext = ctx6.useContext; var usePopoverScopedContext = ctx6.useScopedContext; var usePopoverProviderContext = ctx6.useProviderContext; var PopoverContextProvider = ctx6.ContextProvider; var PopoverScopedContextProvider = ctx6.ScopedContextProvider; // node_modules/@ariakit/core/esm/__chunks/N5XGANPW.js function getCommonParent(items) { var _a; const firstItem = items.find((item) => !!item.element); const lastItem = [...items].reverse().find((item) => !!item.element); let parentElement = (_a = firstItem == null ? void 0 : firstItem.element) == null ? void 0 : _a.parentElement; while (parentElement && (lastItem == null ? void 0 : lastItem.element)) { const parent = parentElement; if (lastItem && parent.contains(lastItem.element)) { return parentElement; } parentElement = parentElement.parentElement; } return getDocument(parentElement).body; } function getPrivateStore(store2) { return store2 == null ? void 0 : store2.__unstablePrivateStore; } function createCollectionStore(props = {}) { var _a; throwOnConflictingProps(props, props.store); const syncState = (_a = props.store) == null ? void 0 : _a.getState(); const items = defaultValue( props.items, syncState == null ? void 0 : syncState.items, props.defaultItems, [] ); const itemsMap = new Map(items.map((item) => [item.id, item])); const initialState = { items, renderedItems: defaultValue(syncState == null ? void 0 : syncState.renderedItems, []) }; const syncPrivateStore = getPrivateStore(props.store); const privateStore = createStore( { items, renderedItems: initialState.renderedItems }, syncPrivateStore ); const collection = createStore(initialState, props.store); const sortItems = (renderedItems) => { const sortedItems = sortBasedOnDOMPosition(renderedItems, (i2) => i2.element); privateStore.setState("renderedItems", sortedItems); collection.setState("renderedItems", sortedItems); }; setup(collection, () => init(privateStore)); setup(privateStore, () => { return batch(privateStore, ["items"], (state) => { collection.setState("items", state.items); }); }); setup(privateStore, () => { return batch(privateStore, ["renderedItems"], (state) => { let firstRun = true; let raf2 = requestAnimationFrame(() => { const { renderedItems } = collection.getState(); if (state.renderedItems === renderedItems) return; sortItems(state.renderedItems); }); if (typeof IntersectionObserver !== "function") { return () => cancelAnimationFrame(raf2); } const ioCallback = () => { if (firstRun) { firstRun = false; return; } cancelAnimationFrame(raf2); raf2 = requestAnimationFrame(() => sortItems(state.renderedItems)); }; const root = getCommonParent(state.renderedItems); const observer = new IntersectionObserver(ioCallback, { root }); for (const item of state.renderedItems) { if (!item.element) continue; observer.observe(item.element); } return () => { cancelAnimationFrame(raf2); observer.disconnect(); }; }); }); const mergeItem = (item, setItems, canDeleteFromMap = false) => { let prevItem; setItems((items2) => { const index = items2.findIndex(({ id }) => id === item.id); const nextItems = items2.slice(); if (index !== -1) { prevItem = items2[index]; const nextItem = { ...prevItem, ...item }; nextItems[index] = nextItem; itemsMap.set(item.id, nextItem); } else { nextItems.push(item); itemsMap.set(item.id, item); } return nextItems; }); const unmergeItem = () => { setItems((items2) => { if (!prevItem) { if (canDeleteFromMap) { itemsMap.delete(item.id); } return items2.filter(({ id }) => id !== item.id); } const index = items2.findIndex(({ id }) => id === item.id); if (index === -1) return items2; const nextItems = items2.slice(); nextItems[index] = prevItem; itemsMap.set(item.id, prevItem); return nextItems; }); }; return unmergeItem; }; const registerItem = (item) => mergeItem( item, (getItems) => privateStore.setState("items", getItems), true ); return { ...collection, registerItem, renderItem: (item) => chain( registerItem(item), mergeItem( item, (getItems) => privateStore.setState("renderedItems", getItems) ) ), item: (id) => { if (!id) return null; let item = itemsMap.get(id); if (!item) { const { items: items2 } = privateStore.getState(); item = items2.find((item2) => item2.id === id); if (item) { itemsMap.set(id, item); } } return item || null; }, // @ts-expect-error Internal __unstablePrivateStore: privateStore }; } // node_modules/@ariakit/react-core/esm/__chunks/GVAFFF2B.js function useCollectionStoreProps(store2, update4, props) { useUpdateEffect(update4, [props.store]); useStoreProps(store2, props, "items", "setItems"); return store2; } // node_modules/@ariakit/core/esm/__chunks/RVTIKFRL.js var NULL_ITEM = { id: null }; function findFirstEnabledItem2(items, excludeId) { return items.find((item) => { if (excludeId) { return !item.disabled && item.id !== excludeId; } return !item.disabled; }); } function getEnabledItems(items, excludeId) { return items.filter((item) => { if (excludeId) { return !item.disabled && item.id !== excludeId; } return !item.disabled; }); } function getItemsInRow(items, rowId) { return items.filter((item) => item.rowId === rowId); } function flipItems(items, activeId, shouldInsertNullItem = false) { const index = items.findIndex((item) => item.id === activeId); return [ ...items.slice(index + 1), ...shouldInsertNullItem ? [NULL_ITEM] : [], ...items.slice(0, index) ]; } function groupItemsByRows2(items) { const rows = []; for (const item of items) { const row = rows.find((currentRow) => { var _a; return ((_a = currentRow[0]) == null ? void 0 : _a.rowId) === item.rowId; }); if (row) { row.push(item); } else { rows.push([item]); } } return rows; } function getMaxRowLength(array) { let maxLength = 0; for (const { length } of array) { if (length > maxLength) { maxLength = length; } } return maxLength; } function createEmptyItem(rowId) { return { id: "__EMPTY_ITEM__", disabled: true, rowId }; } function normalizeRows(rows, activeId, focusShift) { const maxLength = getMaxRowLength(rows); for (const row of rows) { for (let i2 = 0; i2 < maxLength; i2 += 1) { const item = row[i2]; if (!item || focusShift && item.disabled) { const isFirst = i2 === 0; const previousItem = isFirst && focusShift ? findFirstEnabledItem2(row) : row[i2 - 1]; row[i2] = previousItem && activeId !== previousItem.id && focusShift ? previousItem : createEmptyItem(previousItem == null ? void 0 : previousItem.rowId); } } } return rows; } function verticalizeItems(items) { const rows = groupItemsByRows2(items); const maxLength = getMaxRowLength(rows); const verticalized = []; for (let i2 = 0; i2 < maxLength; i2 += 1) { for (const row of rows) { const item = row[i2]; if (item) { verticalized.push({ ...item, // If there's no rowId, it means that it's not a grid composite, but // a single row instead. So, instead of verticalizing it, that is, // assigning a different rowId based on the column index, we keep it // undefined so they will be part of the same row. This is useful // when using up/down on one-dimensional composites. rowId: item.rowId ? `${i2}` : void 0 }); } } } return verticalized; } function createCompositeStore(props = {}) { var _a; const syncState = (_a = props.store) == null ? void 0 : _a.getState(); const collection = createCollectionStore(props); const activeId = defaultValue( props.activeId, syncState == null ? void 0 : syncState.activeId, props.defaultActiveId ); const initialState = { ...collection.getState(), id: defaultValue( props.id, syncState == null ? void 0 : syncState.id, `id-${Math.random().toString(36).slice(2, 8)}` ), activeId, baseElement: defaultValue(syncState == null ? void 0 : syncState.baseElement, null), includesBaseElement: defaultValue( props.includesBaseElement, syncState == null ? void 0 : syncState.includesBaseElement, activeId === null ), moves: defaultValue(syncState == null ? void 0 : syncState.moves, 0), orientation: defaultValue( props.orientation, syncState == null ? void 0 : syncState.orientation, "both" ), rtl: defaultValue(props.rtl, syncState == null ? void 0 : syncState.rtl, false), virtualFocus: defaultValue( props.virtualFocus, syncState == null ? void 0 : syncState.virtualFocus, false ), focusLoop: defaultValue(props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, false), focusWrap: defaultValue(props.focusWrap, syncState == null ? void 0 : syncState.focusWrap, false), focusShift: defaultValue(props.focusShift, syncState == null ? void 0 : syncState.focusShift, false) }; const composite = createStore(initialState, collection, props.store); setup( composite, () => sync2(composite, ["renderedItems", "activeId"], (state) => { composite.setState("activeId", (activeId2) => { var _a2; if (activeId2 !== void 0) return activeId2; return (_a2 = findFirstEnabledItem2(state.renderedItems)) == null ? void 0 : _a2.id; }); }) ); const getNextId = (direction = "next", options = {}) => { var _a2, _b; const defaultState = composite.getState(); const { skip = 0, activeId: activeId2 = defaultState.activeId, focusShift = defaultState.focusShift, focusLoop = defaultState.focusLoop, focusWrap = defaultState.focusWrap, includesBaseElement = defaultState.includesBaseElement, renderedItems = defaultState.renderedItems, rtl = defaultState.rtl } = options; const isVerticalDirection = direction === "up" || direction === "down"; const isNextDirection = direction === "next" || direction === "down"; const canReverse = isNextDirection ? rtl && !isVerticalDirection : !rtl || isVerticalDirection; const canShift = focusShift && !skip; let items = !isVerticalDirection ? renderedItems : flatten2DArray( normalizeRows(groupItemsByRows2(renderedItems), activeId2, canShift) ); items = canReverse ? reverseArray(items) : items; items = isVerticalDirection ? verticalizeItems(items) : items; if (activeId2 == null) { return (_a2 = findFirstEnabledItem2(items)) == null ? void 0 : _a2.id; } const activeItem = items.find((item) => item.id === activeId2); if (!activeItem) { return (_b = findFirstEnabledItem2(items)) == null ? void 0 : _b.id; } const isGrid2 = items.some((item) => item.rowId); const activeIndex = items.indexOf(activeItem); const nextItems = items.slice(activeIndex + 1); const nextItemsInRow = getItemsInRow(nextItems, activeItem.rowId); if (skip) { const nextEnabledItemsInRow = getEnabledItems(nextItemsInRow, activeId2); const nextItem2 = nextEnabledItemsInRow.slice(skip)[0] || // If we can't find an item, just return the last one. nextEnabledItemsInRow[nextEnabledItemsInRow.length - 1]; return nextItem2 == null ? void 0 : nextItem2.id; } const canLoop = focusLoop && (isVerticalDirection ? focusLoop !== "horizontal" : focusLoop !== "vertical"); const canWrap = isGrid2 && focusWrap && (isVerticalDirection ? focusWrap !== "horizontal" : focusWrap !== "vertical"); const hasNullItem = isNextDirection ? (!isGrid2 || isVerticalDirection) && canLoop && includesBaseElement : isVerticalDirection ? includesBaseElement : false; if (canLoop) { const loopItems = canWrap && !hasNullItem ? items : getItemsInRow(items, activeItem.rowId); const sortedItems = flipItems(loopItems, activeId2, hasNullItem); const nextItem2 = findFirstEnabledItem2(sortedItems, activeId2); return nextItem2 == null ? void 0 : nextItem2.id; } if (canWrap) { const nextItem2 = findFirstEnabledItem2( // We can use nextItems, which contains all the next items, including // items from other rows, to wrap between rows. However, if there is a // null item (the composite container), we'll only use the next items in // the row. So moving next from the last item will focus on the // composite container. On grid composites, horizontal navigation never // focuses on the composite container, only vertical. hasNullItem ? nextItemsInRow : nextItems, activeId2 ); const nextId2 = hasNullItem ? (nextItem2 == null ? void 0 : nextItem2.id) || null : nextItem2 == null ? void 0 : nextItem2.id; return nextId2; } const nextItem = findFirstEnabledItem2(nextItemsInRow, activeId2); if (!nextItem && hasNullItem) { return null; } return nextItem == null ? void 0 : nextItem.id; }; return { ...collection, ...composite, setBaseElement: (element) => composite.setState("baseElement", element), setActiveId: (id) => composite.setState("activeId", id), move: (id) => { if (id === void 0) return; composite.setState("activeId", id); composite.setState("moves", (moves) => moves + 1); }, first: () => { var _a2; return (_a2 = findFirstEnabledItem2(composite.getState().renderedItems)) == null ? void 0 : _a2.id; }, last: () => { var _a2; return (_a2 = findFirstEnabledItem2(reverseArray(composite.getState().renderedItems))) == null ? void 0 : _a2.id; }, next: (options) => { if (options !== void 0 && typeof options === "number") { options = { skip: options }; } return getNextId("next", options); }, previous: (options) => { if (options !== void 0 && typeof options === "number") { options = { skip: options }; } return getNextId("previous", options); }, down: (options) => { if (options !== void 0 && typeof options === "number") { options = { skip: options }; } return getNextId("down", options); }, up: (options) => { if (options !== void 0 && typeof options === "number") { options = { skip: options }; } return getNextId("up", options); } }; } // node_modules/@ariakit/react-core/esm/__chunks/IQYAUKXT.js function useCompositeStoreOptions(props) { const id = useId5(props.id); return { id, ...props }; } function useCompositeStoreProps(store2, update4, props) { store2 = useCollectionStoreProps(store2, update4, props); useStoreProps(store2, props, "activeId", "setActiveId"); useStoreProps(store2, props, "includesBaseElement"); useStoreProps(store2, props, "virtualFocus"); useStoreProps(store2, props, "orientation"); useStoreProps(store2, props, "rtl"); useStoreProps(store2, props, "focusLoop"); useStoreProps(store2, props, "focusWrap"); useStoreProps(store2, props, "focusShift"); return store2; } // node_modules/@ariakit/react-core/esm/__chunks/CVCFNOHX.js var import_react19 = __toESM(require_react(), 1); var ComboboxListRoleContext = (0, import_react19.createContext)( void 0 ); var ctx7 = createStoreContext( [PopoverContextProvider, CompositeContextProvider], [PopoverScopedContextProvider, CompositeScopedContextProvider] ); var useComboboxContext = ctx7.useContext; var useComboboxScopedContext = ctx7.useScopedContext; var useComboboxProviderContext = ctx7.useProviderContext; var ComboboxContextProvider = ctx7.ContextProvider; var ComboboxScopedContextProvider = ctx7.ScopedContextProvider; var ComboboxItemValueContext = (0, import_react19.createContext)( void 0 ); var ComboboxItemCheckedContext = (0, import_react19.createContext)(false); // node_modules/@ariakit/core/esm/__chunks/KMAUV3TY.js function createDialogStore(props = {}) { return createDisclosureStore(props); } // node_modules/@ariakit/react-core/esm/__chunks/4NYSH4UO.js function useDialogStoreProps(store2, update4, props) { return useDisclosureStoreProps(store2, update4, props); } // node_modules/@ariakit/core/esm/__chunks/BFGNM53A.js function createPopoverStore({ popover: otherPopover, ...props } = {}) { const store2 = mergeStore( props.store, omit2(otherPopover, [ "arrowElement", "anchorElement", "contentElement", "popoverElement", "disclosureElement" ]) ); throwOnConflictingProps(props, store2); const syncState = store2 == null ? void 0 : store2.getState(); const dialog = createDialogStore({ ...props, store: store2 }); const placement = defaultValue( props.placement, syncState == null ? void 0 : syncState.placement, "bottom" ); const initialState = { ...dialog.getState(), placement, currentPlacement: placement, anchorElement: defaultValue(syncState == null ? void 0 : syncState.anchorElement, null), popoverElement: defaultValue(syncState == null ? void 0 : syncState.popoverElement, null), arrowElement: defaultValue(syncState == null ? void 0 : syncState.arrowElement, null), rendered: /* @__PURE__ */ Symbol("rendered") }; const popover = createStore(initialState, dialog, store2); return { ...dialog, ...popover, setAnchorElement: (element) => popover.setState("anchorElement", element), setPopoverElement: (element) => popover.setState("popoverElement", element), setArrowElement: (element) => popover.setState("arrowElement", element), render: () => popover.setState("rendered", /* @__PURE__ */ Symbol("rendered")) }; } // node_modules/@ariakit/react-core/esm/__chunks/B6FLPFJM.js function usePopoverStoreProps(store2, update4, props) { useUpdateEffect(update4, [props.popover]); useStoreProps(store2, props, "placement"); return useDialogStoreProps(store2, update4, props); } // node_modules/@ariakit/react-core/esm/__chunks/4POTBZ2J.js var TagName7 = "div"; var usePopoverAnchor = createHook( function usePopoverAnchor2({ store: store2, ...props }) { const context = usePopoverProviderContext(); store2 = store2 || context; props = { ...props, ref: useMergeRefs(store2 == null ? void 0 : store2.setAnchorElement, props.ref) }; return props; } ); var PopoverAnchor = forwardRef22(function PopoverAnchor2(props) { const htmlProps = usePopoverAnchor(props); return createElement5(TagName7, htmlProps); }); // node_modules/@ariakit/react-core/esm/__chunks/X6LNAU2F.js var import_react20 = __toESM(require_react(), 1); var TagName8 = "div"; function getMouseDestination(event) { const relatedTarget = event.relatedTarget; if ((relatedTarget == null ? void 0 : relatedTarget.nodeType) === Node.ELEMENT_NODE) { return relatedTarget; } return null; } function hoveringInside(event) { const nextElement = getMouseDestination(event); if (!nextElement) return false; return contains(event.currentTarget, nextElement); } var symbol2 = /* @__PURE__ */ Symbol("composite-hover"); function movingToAnotherItem(event) { let dest = getMouseDestination(event); if (!dest) return false; do { if (hasOwnProperty(dest, symbol2) && dest[symbol2]) return true; dest = dest.parentElement; } while (dest); return false; } var useCompositeHover = createHook( function useCompositeHover2({ store: store2, focusOnHover = true, blurOnHoverEnd = !!focusOnHover, ...props }) { const context = useCompositeContext(); store2 = store2 || context; invariant( store2, "CompositeHover must be wrapped in a Composite component." ); const isMouseMoving = useIsMouseMoving(); const onMouseMoveProp = props.onMouseMove; const focusOnHoverProp = useBooleanEvent(focusOnHover); const onMouseMove = useEvent((event) => { onMouseMoveProp == null ? void 0 : onMouseMoveProp(event); if (event.defaultPrevented) return; if (!isMouseMoving()) return; if (!focusOnHoverProp(event)) return; if (!hasFocusWithin(event.currentTarget)) { const baseElement = store2 == null ? void 0 : store2.getState().baseElement; if (baseElement && !hasFocus(baseElement)) { baseElement.focus(); } } store2 == null ? void 0 : store2.setActiveId(event.currentTarget.id); }); const onMouseLeaveProp = props.onMouseLeave; const blurOnHoverEndProp = useBooleanEvent(blurOnHoverEnd); const onMouseLeave = useEvent((event) => { var _a; onMouseLeaveProp == null ? void 0 : onMouseLeaveProp(event); if (event.defaultPrevented) return; if (!isMouseMoving()) return; if (hoveringInside(event)) return; if (movingToAnotherItem(event)) return; if (!focusOnHoverProp(event)) return; if (!blurOnHoverEndProp(event)) return; store2 == null ? void 0 : store2.setActiveId(null); (_a = store2 == null ? void 0 : store2.getState().baseElement) == null ? void 0 : _a.focus(); }); const ref = (0, import_react20.useCallback)((element) => { if (!element) return; element[symbol2] = true; }, []); props = { ...props, ref: useMergeRefs(ref, props.ref), onMouseMove, onMouseLeave }; return removeUndefinedValues(props); } ); var CompositeHover = memo22( forwardRef22(function CompositeHover2(props) { const htmlProps = useCompositeHover(props); return createElement5(TagName8, htmlProps); }) ); // node_modules/@ariakit/react-core/esm/combobox/combobox.js var import_react21 = __toESM(require_react(), 1); var TagName9 = "input"; function isFirstItemAutoSelected(items, activeValue, autoSelect) { if (!autoSelect) return false; const firstItem = items.find((item) => !item.disabled && item.value); return (firstItem == null ? void 0 : firstItem.value) === activeValue; } function hasCompletionString(value, activeValue) { if (!activeValue) return false; if (value == null) return false; value = normalizeString2(value); return activeValue.length > value.length && activeValue.toLowerCase().indexOf(value.toLowerCase()) === 0; } function isInputEvent(event) { return event.type === "input"; } function isAriaAutoCompleteValue(value) { return value === "inline" || value === "list" || value === "both" || value === "none"; } function getDefaultAutoSelectId(items) { const item = items.find((item2) => { var _a; if (item2.disabled) return false; return ((_a = item2.element) == null ? void 0 : _a.getAttribute("role")) !== "tab"; }); return item == null ? void 0 : item.id; } var useCombobox = createHook( function useCombobox2({ store: store2, focusable = true, autoSelect: autoSelectProp = false, getAutoSelectId, setValueOnChange, showMinLength = 0, showOnChange, showOnMouseDown, showOnClick = showOnMouseDown, showOnKeyDown, showOnKeyPress = showOnKeyDown, blurActiveItemOnClick, setValueOnClick = true, moveOnKeyPress = true, autoComplete = "list", ...props }) { const context = useComboboxProviderContext(); store2 = store2 || context; invariant( store2, "Combobox must receive a `store` prop or be wrapped in a ComboboxProvider component." ); const ref = (0, import_react21.useRef)(null); const [valueUpdated, forceValueUpdate] = useForceUpdate2(); const canAutoSelectRef = (0, import_react21.useRef)(false); const composingRef = (0, import_react21.useRef)(false); const autoSelect = store2.useState( (state) => state.virtualFocus && autoSelectProp ); const inline = autoComplete === "inline" || autoComplete === "both"; const [canInline, setCanInline] = (0, import_react21.useState)(inline); useUpdateLayoutEffect(() => { if (!inline) return; setCanInline(true); }, [inline]); const storeValue = store2.useState("value"); const prevSelectedValueRef = (0, import_react21.useRef)(void 0); (0, import_react21.useEffect)(() => { return sync2(store2, ["selectedValue", "activeId"], (_, prev) => { prevSelectedValueRef.current = prev.selectedValue; }); }, []); const inlineActiveValue = store2.useState((state) => { var _a; if (!inline) return; if (!canInline) return; if (state.activeValue && Array.isArray(state.selectedValue)) { if (state.selectedValue.includes(state.activeValue)) return; if ((_a = prevSelectedValueRef.current) == null ? void 0 : _a.includes(state.activeValue)) return; } return state.activeValue; }); const items = store2.useState("renderedItems"); const open = store2.useState("open"); const contentElement = store2.useState("contentElement"); const value = (0, import_react21.useMemo)(() => { if (!inline) return storeValue; if (!canInline) return storeValue; const firstItemAutoSelected = isFirstItemAutoSelected( items, inlineActiveValue, autoSelect ); if (firstItemAutoSelected) { if (hasCompletionString(storeValue, inlineActiveValue)) { const slice = (inlineActiveValue == null ? void 0 : inlineActiveValue.slice(storeValue.length)) || ""; return storeValue + slice; } return storeValue; } return inlineActiveValue || storeValue; }, [inline, canInline, items, inlineActiveValue, autoSelect, storeValue]); (0, import_react21.useEffect)(() => { const element = ref.current; if (!element) return; const onCompositeItemMove = () => setCanInline(true); element.addEventListener("combobox-item-move", onCompositeItemMove); return () => { element.removeEventListener("combobox-item-move", onCompositeItemMove); }; }, []); (0, import_react21.useEffect)(() => { if (!inline) return; if (!canInline) return; if (!inlineActiveValue) return; const firstItemAutoSelected = isFirstItemAutoSelected( items, inlineActiveValue, autoSelect ); if (!firstItemAutoSelected) return; if (!hasCompletionString(storeValue, inlineActiveValue)) return; let cleanup = noop3; queueMicrotask(() => { const element = ref.current; if (!element) return; const { start: prevStart, end: prevEnd } = getTextboxSelection(element); const nextStart = storeValue.length; const nextEnd = inlineActiveValue.length; setSelectionRange(element, nextStart, nextEnd); cleanup = () => { if (!hasFocus(element)) return; const { start: start2, end } = getTextboxSelection(element); if (start2 !== nextStart) return; if (end !== nextEnd) return; setSelectionRange(element, prevStart, prevEnd); }; }); return () => cleanup(); }, [ valueUpdated, inline, canInline, inlineActiveValue, items, autoSelect, storeValue ]); const scrollingElementRef = (0, import_react21.useRef)(null); const getAutoSelectIdProp = useEvent(getAutoSelectId); const autoSelectIdRef = (0, import_react21.useRef)(null); (0, import_react21.useEffect)(() => { if (!open) return; if (!contentElement) return; const scrollingElement = getScrollingElement(contentElement); if (!scrollingElement) return; scrollingElementRef.current = scrollingElement; const onUserScroll = () => { canAutoSelectRef.current = false; }; const onScroll = () => { if (!store2) return; if (!canAutoSelectRef.current) return; const { activeId } = store2.getState(); if (activeId === null) return; if (activeId === autoSelectIdRef.current) return; canAutoSelectRef.current = false; }; const options = { passive: true, capture: true }; scrollingElement.addEventListener("wheel", onUserScroll, options); scrollingElement.addEventListener("touchmove", onUserScroll, options); scrollingElement.addEventListener("scroll", onScroll, options); return () => { scrollingElement.removeEventListener("wheel", onUserScroll, true); scrollingElement.removeEventListener("touchmove", onUserScroll, true); scrollingElement.removeEventListener("scroll", onScroll, true); }; }, [open, contentElement, store2]); useSafeLayoutEffect(() => { if (!storeValue) return; if (composingRef.current) return; canAutoSelectRef.current = true; }, [storeValue]); useSafeLayoutEffect(() => { if (autoSelect !== "always" && open) return; canAutoSelectRef.current = open; }, [autoSelect, open]); const resetValueOnSelect = store2.useState("resetValueOnSelect"); useUpdateEffect(() => { var _a, _b; const canAutoSelect = canAutoSelectRef.current; if (!store2) return; if (!open) return; if (!canAutoSelect && !resetValueOnSelect) return; const { baseElement, contentElement: contentElement2, activeId } = store2.getState(); if (baseElement && !hasFocus(baseElement)) return; if (contentElement2 == null ? void 0 : contentElement2.hasAttribute("data-placing")) { const observer = new MutationObserver(forceValueUpdate); observer.observe(contentElement2, { attributeFilter: ["data-placing"] }); return () => observer.disconnect(); } if (autoSelect && canAutoSelect) { const userAutoSelectId = getAutoSelectIdProp(items); const autoSelectId = userAutoSelectId !== void 0 ? userAutoSelectId : (_a = getDefaultAutoSelectId(items)) != null ? _a : store2.first(); autoSelectIdRef.current = autoSelectId; store2.move(autoSelectId != null ? autoSelectId : null); } else { const element = (_b = store2.item(activeId || store2.first())) == null ? void 0 : _b.element; if (element && "scrollIntoView" in element) { element.scrollIntoView({ block: "nearest", inline: "nearest" }); } } return; }, [ store2, open, valueUpdated, storeValue, autoSelect, resetValueOnSelect, getAutoSelectIdProp, items ]); (0, import_react21.useEffect)(() => { if (!inline) return; const combobox = ref.current; if (!combobox) return; const elements2 = [combobox, contentElement].filter( (value2) => !!value2 ); const onBlur2 = (event) => { if (elements2.every((el) => isFocusEventOutside(event, el))) { store2 == null ? void 0 : store2.setValue(value); } }; for (const element of elements2) { element.addEventListener("focusout", onBlur2); } return () => { for (const element of elements2) { element.removeEventListener("focusout", onBlur2); } }; }, [inline, contentElement, store2, value]); const canShow = (event) => { const currentTarget = event.currentTarget; return currentTarget.value.length >= showMinLength; }; const onChangeProp = props.onChange; const showOnChangeProp = useBooleanEvent(showOnChange != null ? showOnChange : canShow); const setValueOnChangeProp = useBooleanEvent( // If the combobox is combined with tags, the value will be set by the tag // input component. setValueOnChange != null ? setValueOnChange : !store2.tag ); const onChange = useEvent((event) => { onChangeProp == null ? void 0 : onChangeProp(event); if (event.defaultPrevented) return; if (!store2) return; const currentTarget = event.currentTarget; const { value: value2, selectionStart, selectionEnd } = currentTarget; const nativeEvent = event.nativeEvent; canAutoSelectRef.current = true; if (isInputEvent(nativeEvent)) { if (nativeEvent.isComposing) { canAutoSelectRef.current = false; composingRef.current = true; } if (inline) { const textInserted = nativeEvent.inputType === "insertText" || nativeEvent.inputType === "insertCompositionText"; const caretAtEnd = selectionStart === value2.length; setCanInline(textInserted && caretAtEnd); } } if (setValueOnChangeProp(event)) { const isSameValue = value2 === store2.getState().value; store2.setValue(value2); queueMicrotask(() => { setSelectionRange(currentTarget, selectionStart, selectionEnd); }); if (inline && autoSelect && isSameValue) { forceValueUpdate(); } } if (showOnChangeProp(event)) { store2.show(); } if (!autoSelect || !canAutoSelectRef.current) { store2.setActiveId(null); } }); const onCompositionEndProp = props.onCompositionEnd; const onCompositionEnd = useEvent((event) => { canAutoSelectRef.current = true; composingRef.current = false; onCompositionEndProp == null ? void 0 : onCompositionEndProp(event); if (event.defaultPrevented) return; if (!autoSelect) return; forceValueUpdate(); }); const onMouseDownProp = props.onMouseDown; const blurActiveItemOnClickProp = useBooleanEvent( blurActiveItemOnClick != null ? blurActiveItemOnClick : (() => !!(store2 == null ? void 0 : store2.getState().includesBaseElement)) ); const setValueOnClickProp = useBooleanEvent(setValueOnClick); const showOnClickProp = useBooleanEvent(showOnClick != null ? showOnClick : canShow); const onMouseDown = useEvent((event) => { onMouseDownProp == null ? void 0 : onMouseDownProp(event); if (event.defaultPrevented) return; if (event.button) return; if (event.ctrlKey) return; if (!store2) return; if (blurActiveItemOnClickProp(event)) { store2.setActiveId(null); } if (setValueOnClickProp(event)) { store2.setValue(value); } if (showOnClickProp(event)) { queueBeforeEvent(event.currentTarget, "mouseup", store2.show); } }); const onKeyDownProp = props.onKeyDown; const showOnKeyPressProp = useBooleanEvent(showOnKeyPress != null ? showOnKeyPress : canShow); const onKeyDown = useEvent((event) => { onKeyDownProp == null ? void 0 : onKeyDownProp(event); if (!event.repeat) { canAutoSelectRef.current = false; } if (event.defaultPrevented) return; if (event.ctrlKey) return; if (event.altKey) return; if (event.shiftKey) return; if (event.metaKey) return; if (!store2) return; const { open: open2 } = store2.getState(); if (open2) return; if (event.key === "ArrowUp" || event.key === "ArrowDown") { if (showOnKeyPressProp(event)) { event.preventDefault(); store2.show(); } } }); const onBlurProp = props.onBlur; const onBlur = useEvent((event) => { canAutoSelectRef.current = false; onBlurProp == null ? void 0 : onBlurProp(event); if (event.defaultPrevented) return; }); const id = useId5(props.id); const ariaAutoComplete = isAriaAutoCompleteValue(autoComplete) ? autoComplete : void 0; const isActiveItem = store2.useState((state) => state.activeId === null); props = { id, role: "combobox", "aria-autocomplete": ariaAutoComplete, "aria-haspopup": getPopupRole(contentElement, "listbox"), "aria-expanded": open, "aria-controls": contentElement == null ? void 0 : contentElement.id, "data-active-item": isActiveItem || void 0, value, ...props, ref: useMergeRefs(ref, props.ref), onChange, onCompositionEnd, onMouseDown, onKeyDown, onBlur }; props = useComposite({ store: store2, focusable, ...props, // Enable inline autocomplete when the user moves from the combobox input // to an item. moveOnKeyPress: (event) => { if (isFalsyBooleanCallback(moveOnKeyPress, event)) return false; if (inline) setCanInline(true); return true; } }); props = usePopoverAnchor({ store: store2, ...props }); return { autoComplete: "off", ...props }; } ); var Combobox = forwardRef22(function Combobox2(props) { const htmlProps = useCombobox(props); return createElement5(TagName9, htmlProps); }); // node_modules/@ariakit/react-core/esm/__chunks/IBXZ2LQC.js var import_react22 = __toESM(require_react(), 1); var import_jsx_runtime210 = __toESM(require_jsx_runtime(), 1); var TagName10 = "div"; function isSelected(storeValue, itemValue) { if (itemValue == null) return; if (storeValue == null) return false; if (Array.isArray(storeValue)) { return storeValue.includes(itemValue); } return storeValue === itemValue; } function getItemRole(popupRole) { var _a; const itemRoleByPopupRole = { menu: "menuitem", listbox: "option", tree: "treeitem" }; const key = popupRole; return (_a = itemRoleByPopupRole[key]) != null ? _a : "option"; } var useComboboxItem = createHook( function useComboboxItem2({ store: store2, value, hideOnClick, setValueOnClick, selectValueOnClick = true, resetValueOnSelect, focusOnHover = false, moveOnKeyPress = true, getItem: getItemProp, ...props }) { var _a; const context = useComboboxScopedContext(); store2 = store2 || context; invariant( store2, "ComboboxItem must be wrapped in a ComboboxList or ComboboxPopover component." ); const { resetValueOnSelectState, multiSelectable, selected } = useStoreStateObject(store2, { resetValueOnSelectState: "resetValueOnSelect", multiSelectable(state) { return Array.isArray(state.selectedValue); }, selected(state) { return isSelected(state.selectedValue, value); } }); const getItem = (0, import_react22.useCallback)( (item) => { const nextItem = { ...item, value }; if (getItemProp) { return getItemProp(nextItem); } return nextItem; }, [value, getItemProp] ); setValueOnClick = setValueOnClick != null ? setValueOnClick : !multiSelectable; hideOnClick = hideOnClick != null ? hideOnClick : value != null && !multiSelectable; const onClickProp = props.onClick; const setValueOnClickProp = useBooleanEvent(setValueOnClick); const selectValueOnClickProp = useBooleanEvent(selectValueOnClick); const resetValueOnSelectProp = useBooleanEvent( (_a = resetValueOnSelect != null ? resetValueOnSelect : resetValueOnSelectState) != null ? _a : multiSelectable ); const hideOnClickProp = useBooleanEvent(hideOnClick); const onClick = useEvent((event) => { onClickProp == null ? void 0 : onClickProp(event); if (event.defaultPrevented) return; if (isDownloading(event)) return; if (isOpeningInNewTab(event)) return; if (value != null) { if (selectValueOnClickProp(event)) { if (resetValueOnSelectProp(event)) { store2 == null ? void 0 : store2.resetValue(); } store2 == null ? void 0 : store2.setSelectedValue((prevValue) => { if (!Array.isArray(prevValue)) return value; if (prevValue.includes(value)) { return prevValue.filter((v2) => v2 !== value); } return [...prevValue, value]; }); } if (setValueOnClickProp(event)) { store2 == null ? void 0 : store2.setValue(value); } } if (hideOnClickProp(event)) { store2 == null ? void 0 : store2.hide(); } }); const onKeyDownProp = props.onKeyDown; const onKeyDown = useEvent((event) => { onKeyDownProp == null ? void 0 : onKeyDownProp(event); if (event.defaultPrevented) return; const baseElement = store2 == null ? void 0 : store2.getState().baseElement; if (!baseElement) return; if (hasFocus(baseElement)) return; const printable = event.key.length === 1; if (printable || event.key === "Backspace" || event.key === "Delete") { queueMicrotask(() => baseElement.focus()); if (isTextField(baseElement)) { store2 == null ? void 0 : store2.setValue(baseElement.value); } } }); if (multiSelectable && selected != null) { props = { "aria-selected": selected, ...props }; } props = useWrapElement( props, (element) => /* @__PURE__ */ (0, import_jsx_runtime210.jsx)(ComboboxItemValueContext.Provider, { value, children: /* @__PURE__ */ (0, import_jsx_runtime210.jsx)(ComboboxItemCheckedContext.Provider, { value: selected != null ? selected : false, children: element }) }), [value, selected] ); const popupRole = (0, import_react22.useContext)(ComboboxListRoleContext); props = { role: getItemRole(popupRole), children: value, ...props, onClick, onKeyDown }; const moveOnKeyPressProp = useBooleanEvent(moveOnKeyPress); props = useCompositeItem({ store: store2, ...props, getItem, // Dispatch a custom event on the combobox input when moving to an item // with the keyboard so the Combobox component can enable inline // autocompletion. moveOnKeyPress: (event) => { if (!moveOnKeyPressProp(event)) return false; const moveEvent = new Event("combobox-item-move"); const baseElement = store2 == null ? void 0 : store2.getState().baseElement; baseElement == null ? void 0 : baseElement.dispatchEvent(moveEvent); return true; } }); props = useCompositeHover({ store: store2, focusOnHover, ...props }); return props; } ); var ComboboxItem = memo22( forwardRef22(function ComboboxItem2(props) { const htmlProps = useComboboxItem(props); return createElement5(TagName10, htmlProps); }) ); // node_modules/@ariakit/react-core/esm/combobox/combobox-item-value.js var import_react23 = __toESM(require_react(), 1); var import_jsx_runtime211 = __toESM(require_jsx_runtime(), 1); var TagName11 = "span"; function normalizeValue(value) { return normalizeString2(value).toLowerCase(); } function getOffsets(string, values) { const offsets = []; for (const value of values) { let pos = 0; const length = value.length; while (string.indexOf(value, pos) !== -1) { const index = string.indexOf(value, pos); if (index !== -1) { offsets.push([index, length]); } pos = index + 1; } } return offsets; } function filterOverlappingOffsets(offsets) { return offsets.filter(([offset, length], i2, arr) => { return !arr.some( ([o3, l2], j2) => j2 !== i2 && o3 <= offset && o3 + l2 >= offset + length ); }); } function sortOffsets(offsets) { return offsets.sort(([a2], [b2]) => a2 - b2); } function splitValue(itemValue, userValue) { if (!itemValue) return itemValue; if (!userValue) return itemValue; const userValues = toArray2(userValue).filter(Boolean).map(normalizeValue); const parts = []; const span = (value, autocomplete = false) => /* @__PURE__ */ (0, import_jsx_runtime211.jsx)( "span", { "data-autocomplete-value": autocomplete ? "" : void 0, "data-user-value": autocomplete ? void 0 : "", children: value }, parts.length ); const offsets = sortOffsets( filterOverlappingOffsets( // Convert userValues into a set to avoid duplicates getOffsets(normalizeValue(itemValue), new Set(userValues)) ) ); if (!offsets.length) { parts.push(span(itemValue, true)); return parts; } const [firstOffset] = offsets[0]; const values = [ itemValue.slice(0, firstOffset), ...offsets.flatMap(([offset, length], i2) => { var _a; const value = itemValue.slice(offset, offset + length); const nextOffset = (_a = offsets[i2 + 1]) == null ? void 0 : _a[0]; const nextValue = itemValue.slice(offset + length, nextOffset); return [value, nextValue]; }) ]; values.forEach((value, i2) => { if (!value) return; parts.push(span(value, i2 % 2 === 0)); }); return parts; } var useComboboxItemValue = createHook(function useComboboxItemValue2({ store: store2, value, userValue, ...props }) { const context = useComboboxScopedContext(); store2 = store2 || context; const itemContext = (0, import_react23.useContext)(ComboboxItemValueContext); const itemValue = value != null ? value : itemContext; const inputValue = useStoreState(store2, (state) => userValue != null ? userValue : state == null ? void 0 : state.value); const children = (0, import_react23.useMemo)(() => { if (!itemValue) return; if (!inputValue) return itemValue; return splitValue(itemValue, inputValue); }, [itemValue, inputValue]); props = { children, ...props }; return removeUndefinedValues(props); }); var ComboboxItemValue = forwardRef22(function ComboboxItemValue2(props) { const htmlProps = useComboboxItemValue(props); return createElement5(TagName11, htmlProps); }); // node_modules/@ariakit/react-core/esm/combobox/combobox-label.js var TagName12 = "label"; var useComboboxLabel = createHook( function useComboboxLabel2({ store: store2, ...props }) { const context = useComboboxProviderContext(); store2 = store2 || context; invariant( store2, "ComboboxLabel must receive a `store` prop or be wrapped in a ComboboxProvider component." ); const comboboxId = store2.useState((state) => { var _a; return (_a = state.baseElement) == null ? void 0 : _a.id; }); props = { htmlFor: comboboxId, ...props }; return removeUndefinedValues(props); } ); var ComboboxLabel = memo22( forwardRef22(function ComboboxLabel2(props) { const htmlProps = useComboboxLabel(props); return createElement5(TagName12, htmlProps); }) ); // node_modules/@ariakit/react-core/esm/__chunks/2G6YEJT4.js var import_react24 = __toESM(require_react(), 1); var import_jsx_runtime212 = __toESM(require_jsx_runtime(), 1); var TagName13 = "div"; var useComboboxList = createHook( function useComboboxList2({ store: store2, alwaysVisible, ...props }) { const scopedContext = useComboboxScopedContext(true); const context = useComboboxContext(); store2 = store2 || context; const scopedContextSameStore = !!store2 && store2 === scopedContext; invariant( store2, "ComboboxList must receive a `store` prop or be wrapped in a ComboboxProvider component." ); const ref = (0, import_react24.useRef)(null); const id = useId5(props.id); const mounted = store2.useState("mounted"); const hidden = isHidden(mounted, props.hidden, alwaysVisible); const style = hidden ? { ...props.style, display: "none" } : props.style; const multiSelectable = store2.useState( (state) => Array.isArray(state.selectedValue) ); const role = useAttribute(ref, "role", props.role); const isCompositeRole = role === "listbox" || role === "tree" || role === "grid"; const ariaMultiSelectable = isCompositeRole ? multiSelectable || void 0 : void 0; const [hasListboxInside, setHasListboxInside] = (0, import_react24.useState)(false); const contentElement = store2.useState("contentElement"); useSafeLayoutEffect(() => { if (!mounted) return; const element = ref.current; if (!element) return; if (contentElement !== element) return; const callback = () => { setHasListboxInside(!!element.querySelector("[role='listbox']")); }; const observer = new MutationObserver(callback); observer.observe(element, { subtree: true, childList: true, attributeFilter: ["role"] }); callback(); return () => observer.disconnect(); }, [mounted, contentElement]); if (!hasListboxInside) { props = { role: "listbox", "aria-multiselectable": ariaMultiSelectable, ...props }; } props = useWrapElement( props, (element) => /* @__PURE__ */ (0, import_jsx_runtime212.jsx)(ComboboxScopedContextProvider, { value: store2, children: /* @__PURE__ */ (0, import_jsx_runtime212.jsx)(ComboboxListRoleContext.Provider, { value: role, children: element }) }), [store2, role] ); const setContentElement = id && (!scopedContext || !scopedContextSameStore) ? store2.setContentElement : null; props = { id, hidden, ...props, ref: useMergeRefs(setContentElement, ref, props.ref), style }; return removeUndefinedValues(props); } ); var ComboboxList = forwardRef22(function ComboboxList2(props) { const htmlProps = useComboboxList(props); return createElement5(TagName13, htmlProps); }); // node_modules/@ariakit/react-core/esm/__chunks/XSIEPKGA.js var import_react25 = __toESM(require_react(), 1); var TagValueContext = (0, import_react25.createContext)(null); var TagRemoveIdContext = (0, import_react25.createContext)( null ); var ctx8 = createStoreContext( [CompositeContextProvider], [CompositeScopedContextProvider] ); var useTagContext = ctx8.useContext; var useTagScopedContext = ctx8.useScopedContext; var useTagProviderContext = ctx8.useProviderContext; var TagContextProvider = ctx8.ContextProvider; var TagScopedContextProvider = ctx8.ScopedContextProvider; // node_modules/@ariakit/core/esm/combobox/combobox-store.js var isTouchSafari = isSafari() && isTouchDevice(); function createComboboxStore({ tag, ...props } = {}) { const store2 = mergeStore(props.store, pick2(tag, ["value", "rtl"])); throwOnConflictingProps(props, store2); const tagState = tag == null ? void 0 : tag.getState(); const syncState = store2 == null ? void 0 : store2.getState(); const activeId = defaultValue( props.activeId, syncState == null ? void 0 : syncState.activeId, props.defaultActiveId, null ); const composite = createCompositeStore({ ...props, activeId, includesBaseElement: defaultValue( props.includesBaseElement, syncState == null ? void 0 : syncState.includesBaseElement, true ), orientation: defaultValue( props.orientation, syncState == null ? void 0 : syncState.orientation, "vertical" ), focusLoop: defaultValue(props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, true), focusWrap: defaultValue(props.focusWrap, syncState == null ? void 0 : syncState.focusWrap, true), virtualFocus: defaultValue( props.virtualFocus, syncState == null ? void 0 : syncState.virtualFocus, true ) }); const popover = createPopoverStore({ ...props, placement: defaultValue( props.placement, syncState == null ? void 0 : syncState.placement, "bottom-start" ) }); const value = defaultValue( props.value, syncState == null ? void 0 : syncState.value, props.defaultValue, "" ); const selectedValue = defaultValue( props.selectedValue, syncState == null ? void 0 : syncState.selectedValue, tagState == null ? void 0 : tagState.values, props.defaultSelectedValue, "" ); const multiSelectable = Array.isArray(selectedValue); const initialState = { ...composite.getState(), ...popover.getState(), value, selectedValue, resetValueOnSelect: defaultValue( props.resetValueOnSelect, syncState == null ? void 0 : syncState.resetValueOnSelect, multiSelectable ), resetValueOnHide: defaultValue( props.resetValueOnHide, syncState == null ? void 0 : syncState.resetValueOnHide, multiSelectable && !tag ), activeValue: syncState == null ? void 0 : syncState.activeValue }; const combobox = createStore(initialState, composite, popover, store2); if (isTouchSafari) { setup( combobox, () => sync2(combobox, ["virtualFocus"], () => { combobox.setState("virtualFocus", false); }) ); } setup(combobox, () => { if (!tag) return; return chain( sync2(combobox, ["selectedValue"], (state) => { if (!Array.isArray(state.selectedValue)) return; tag.setValues(state.selectedValue); }), sync2(tag, ["values"], (state) => { combobox.setState("selectedValue", state.values); }) ); }); setup( combobox, () => sync2(combobox, ["resetValueOnHide", "mounted"], (state) => { if (!state.resetValueOnHide) return; if (state.mounted) return; combobox.setState("value", value); }) ); setup( combobox, () => sync2(combobox, ["open"], (state) => { if (state.open) return; combobox.setState("activeId", activeId); combobox.setState("moves", 0); }) ); setup( combobox, () => sync2(combobox, ["moves", "activeId"], (state, prevState) => { if (state.moves === prevState.moves) { combobox.setState("activeValue", void 0); } }) ); setup( combobox, () => batch(combobox, ["moves", "renderedItems"], (state, prev) => { if (state.moves === prev.moves) return; const { activeId: activeId2 } = combobox.getState(); const activeItem = composite.item(activeId2); combobox.setState("activeValue", activeItem == null ? void 0 : activeItem.value); }) ); return { ...popover, ...composite, ...combobox, tag, setValue: (value2) => combobox.setState("value", value2), resetValue: () => combobox.setState("value", initialState.value), setSelectedValue: (selectedValue2) => combobox.setState("selectedValue", selectedValue2) }; } // node_modules/@ariakit/react-core/esm/__chunks/SVN33SY6.js function useComboboxStoreOptions(props) { const tag = useTagContext(); props = { ...props, tag: props.tag !== void 0 ? props.tag : tag }; return useCompositeStoreOptions(props); } function useComboboxStoreProps(store2, update4, props) { useUpdateEffect(update4, [props.tag]); useStoreProps(store2, props, "value", "setValue"); useStoreProps(store2, props, "selectedValue", "setSelectedValue"); useStoreProps(store2, props, "resetValueOnHide"); useStoreProps(store2, props, "resetValueOnSelect"); return Object.assign( useCompositeStoreProps( usePopoverStoreProps(store2, update4, props), update4, props ), { tag: props.tag } ); } function useComboboxStore(props = {}) { props = useComboboxStoreOptions(props); const [store2, update4] = useStore(createComboboxStore, props); return useComboboxStoreProps(store2, update4, props); } // node_modules/@ariakit/react-core/esm/combobox/combobox-provider.js var import_jsx_runtime213 = __toESM(require_jsx_runtime(), 1); function ComboboxProvider(props = {}) { const store2 = useComboboxStore(props); return /* @__PURE__ */ (0, import_jsx_runtime213.jsx)(ComboboxContextProvider, { value: store2, children: props.children }); } // packages/dataviews/build-module/components/dataviews-filters/search-widget.mjs var import_remove_accents = __toESM(require_remove_accents(), 1); var import_compose19 = __toESM(require_compose(), 1); var import_i18n104 = __toESM(require_i18n(), 1); var import_element90 = __toESM(require_element(), 1); var import_components109 = __toESM(require_components(), 1); // packages/dataviews/build-module/components/dataviews-filters/utils.mjs var EMPTY_ARRAY6 = []; var getCurrentValue = (filterDefinition, currentFilter) => { if (filterDefinition.singleSelection) { return currentFilter?.value; } if (Array.isArray(currentFilter?.value)) { return currentFilter.value; } if (!Array.isArray(currentFilter?.value) && !!currentFilter?.value) { return [currentFilter.value]; } return EMPTY_ARRAY6; }; // packages/dataviews/build-module/hooks/use-elements.mjs var import_element89 = __toESM(require_element(), 1); var EMPTY_ARRAY7 = []; function useElements({ elements: elements2, getElements }) { const staticElements = Array.isArray(elements2) && elements2.length > 0 ? elements2 : EMPTY_ARRAY7; const [records, setRecords] = (0, import_element89.useState)(staticElements); const [isLoading, setIsLoading] = (0, import_element89.useState)(false); (0, import_element89.useEffect)(() => { if (!getElements) { setRecords(staticElements); return; } let cancelled = false; setIsLoading(true); getElements().then((fetchedElements) => { if (!cancelled) { const dynamicElements = Array.isArray(fetchedElements) && fetchedElements.length > 0 ? fetchedElements : staticElements; setRecords(dynamicElements); } }).catch(() => { if (!cancelled) { setRecords(staticElements); } }).finally(() => { if (!cancelled) { setIsLoading(false); } }); return () => { cancelled = true; }; }, [getElements, staticElements]); return { elements: records, isLoading }; } // packages/dataviews/build-module/components/dataviews-filters/search-widget.mjs var import_jsx_runtime214 = __toESM(require_jsx_runtime(), 1); function normalizeSearchInput(input = "") { return (0, import_remove_accents.default)(input.trim().toLowerCase()); } var getNewValue = (filterDefinition, currentFilter, value) => { if (filterDefinition.singleSelection) { return value; } if (Array.isArray(currentFilter?.value)) { return currentFilter.value.includes(value) ? currentFilter.value.filter((v2) => v2 !== value) : [...currentFilter.value, value]; } return [value]; }; function generateFilterElementCompositeItemId(prefix2, filterElementValue) { return `${prefix2}-${filterElementValue}`; } var MultiSelectionOption = ({ selected }) => { return /* @__PURE__ */ (0, import_jsx_runtime214.jsx)( "span", { className: clsx_default( "dataviews-filters__search-widget-listitem-multi-selection", { "is-selected": selected } ), children: selected && /* @__PURE__ */ (0, import_jsx_runtime214.jsx)(import_components109.Icon, { icon: check_default }) } ); }; var SingleSelectionOption = ({ selected }) => { return /* @__PURE__ */ (0, import_jsx_runtime214.jsx)( "span", { className: clsx_default( "dataviews-filters__search-widget-listitem-single-selection", { "is-selected": selected } ) } ); }; function ListBox({ view, filter, onChangeView }) { const baseId = (0, import_compose19.useInstanceId)(ListBox, "dataviews-filter-list-box"); const [activeCompositeId, setActiveCompositeId] = (0, import_element90.useState)( // When there are one or less operators, the first item is set as active // (by setting the initial `activeId` to `undefined`). // With 2 or more operators, the focus is moved on the operators control // (by setting the initial `activeId` to `null`), meaning that there won't // be an active item initially. Focus is then managed via the // `onFocusVisible` callback. filter.operators?.length === 1 ? void 0 : null ); const currentFilter = view.filters?.find( (f2) => f2.field === filter.field ); const currentValue = getCurrentValue(filter, currentFilter); return /* @__PURE__ */ (0, import_jsx_runtime214.jsx)( import_components109.Composite, { virtualFocus: true, focusLoop: true, activeId: activeCompositeId, setActiveId: setActiveCompositeId, role: "listbox", className: "dataviews-filters__search-widget-listbox", "aria-label": (0, import_i18n104.sprintf)( /* translators: List of items for a filter. 1: Filter name. e.g.: "List of: Author". */ (0, import_i18n104.__)("List of: %1$s"), filter.name ), onFocusVisible: () => { if (!activeCompositeId && filter.elements.length) { setActiveCompositeId( generateFilterElementCompositeItemId( baseId, filter.elements[0].value ) ); } }, render: /* @__PURE__ */ (0, import_jsx_runtime214.jsx)(import_components109.Composite.Typeahead, {}), children: filter.elements.map((element) => /* @__PURE__ */ (0, import_jsx_runtime214.jsxs)( import_components109.Composite.Hover, { render: /* @__PURE__ */ (0, import_jsx_runtime214.jsx)( import_components109.Composite.Item, { id: generateFilterElementCompositeItemId( baseId, element.value ), render: /* @__PURE__ */ (0, import_jsx_runtime214.jsx)( "div", { "aria-label": element.label, role: "option", className: "dataviews-filters__search-widget-listitem" } ), onClick: () => { const newFilters = currentFilter ? [ ...(view.filters ?? []).map( (_filter) => { if (_filter.field === filter.field) { return { ..._filter, operator: currentFilter.operator || filter.operators[0], value: getNewValue( filter, currentFilter, element.value ) }; } return _filter; } ) ] : [ ...view.filters ?? [], { field: filter.field, operator: filter.operators[0], value: getNewValue( filter, currentFilter, element.value ) } ]; onChangeView({ ...view, page: 1, filters: newFilters }); } } ), children: [ filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime214.jsx)( SingleSelectionOption, { selected: currentValue === element.value } ), !filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime214.jsx)( MultiSelectionOption, { selected: currentValue.includes(element.value) } ), /* @__PURE__ */ (0, import_jsx_runtime214.jsx)( "span", { className: "dataviews-filters__search-widget-listitem-value", title: element.label, children: element.label } ) ] }, element.value )) } ); } function ComboboxList22({ view, filter, onChangeView }) { const [searchValue, setSearchValue] = (0, import_element90.useState)(""); const deferredSearchValue = (0, import_element90.useDeferredValue)(searchValue); const currentFilter = view.filters?.find( (_filter) => _filter.field === filter.field ); const currentValue = getCurrentValue(filter, currentFilter); const matches = (0, import_element90.useMemo)(() => { const normalizedSearch = normalizeSearchInput(deferredSearchValue); return filter.elements.filter( (item) => normalizeSearchInput(item.label).includes(normalizedSearch) ); }, [filter.elements, deferredSearchValue]); return /* @__PURE__ */ (0, import_jsx_runtime214.jsxs)( ComboboxProvider, { selectedValue: currentValue, setSelectedValue: (value) => { const newFilters = currentFilter ? [ ...(view.filters ?? []).map((_filter) => { if (_filter.field === filter.field) { return { ..._filter, operator: currentFilter.operator || filter.operators[0], value }; } return _filter; }) ] : [ ...view.filters ?? [], { field: filter.field, operator: filter.operators[0], value } ]; onChangeView({ ...view, page: 1, filters: newFilters }); }, setValue: setSearchValue, children: [ /* @__PURE__ */ (0, import_jsx_runtime214.jsxs)("div", { className: "dataviews-filters__search-widget-filter-combobox__wrapper", children: [ /* @__PURE__ */ (0, import_jsx_runtime214.jsx)( ComboboxLabel, { render: /* @__PURE__ */ (0, import_jsx_runtime214.jsx)(import_components109.VisuallyHidden, { children: (0, import_i18n104.__)("Search items") }), children: (0, import_i18n104.__)("Search items") } ), /* @__PURE__ */ (0, import_jsx_runtime214.jsx)( Combobox, { autoSelect: "always", placeholder: (0, import_i18n104.__)("Search"), className: "dataviews-filters__search-widget-filter-combobox__input" } ), /* @__PURE__ */ (0, import_jsx_runtime214.jsx)("div", { className: "dataviews-filters__search-widget-filter-combobox__icon", children: /* @__PURE__ */ (0, import_jsx_runtime214.jsx)(import_components109.Icon, { icon: search_default }) }) ] }), /* @__PURE__ */ (0, import_jsx_runtime214.jsxs)( ComboboxList, { className: "dataviews-filters__search-widget-filter-combobox-list", alwaysVisible: true, children: [ matches.map((element) => { return /* @__PURE__ */ (0, import_jsx_runtime214.jsxs)( ComboboxItem, { resetValueOnSelect: false, value: element.value, className: "dataviews-filters__search-widget-listitem", hideOnClick: false, setValueOnClick: false, focusOnHover: true, children: [ filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime214.jsx)( SingleSelectionOption, { selected: currentValue === element.value } ), !filter.singleSelection && /* @__PURE__ */ (0, import_jsx_runtime214.jsx)( MultiSelectionOption, { selected: currentValue.includes( element.value ) } ), /* @__PURE__ */ (0, import_jsx_runtime214.jsxs)( "span", { className: "dataviews-filters__search-widget-listitem-value", title: element.label, children: [ /* @__PURE__ */ (0, import_jsx_runtime214.jsx)( ComboboxItemValue, { className: "dataviews-filters__search-widget-filter-combobox-item-value", value: element.label } ), !!element.description && /* @__PURE__ */ (0, import_jsx_runtime214.jsx)("span", { className: "dataviews-filters__search-widget-listitem-description", children: element.description }) ] } ) ] }, element.value ); }), !matches.length && /* @__PURE__ */ (0, import_jsx_runtime214.jsx)("p", { children: (0, import_i18n104.__)("No results found") }) ] } ) ] } ); } function SearchWidget(props) { const { elements: elements2, isLoading } = useElements({ elements: props.filter.elements, getElements: props.filter.getElements }); if (isLoading) { return /* @__PURE__ */ (0, import_jsx_runtime214.jsx)("div", { className: "dataviews-filters__search-widget-no-elements", children: /* @__PURE__ */ (0, import_jsx_runtime214.jsx)(import_components109.Spinner, {}) }); } if (elements2.length === 0) { return /* @__PURE__ */ (0, import_jsx_runtime214.jsx)("div", { className: "dataviews-filters__search-widget-no-elements", children: (0, import_i18n104.__)("No elements found") }); } const Widget = elements2.length > 10 ? ComboboxList22 : ListBox; return /* @__PURE__ */ (0, import_jsx_runtime214.jsx)(Widget, { ...props, filter: { ...props.filter, elements: elements2 } }); } // packages/dataviews/build-module/components/dataviews-filters/input-widget.mjs var import_es62 = __toESM(require_es6(), 1); var import_compose20 = __toESM(require_compose(), 1); var import_element91 = __toESM(require_element(), 1); var import_components110 = __toESM(require_components(), 1); var import_jsx_runtime215 = __toESM(require_jsx_runtime(), 1); function InputWidget({ filter, view, onChangeView, fields }) { const currentFilter = view.filters?.find( (f2) => f2.field === filter.field ); const currentValue = getCurrentValue(filter, currentFilter); const field = (0, import_element91.useMemo)(() => { const currentField = fields.find((f2) => f2.id === filter.field); if (currentField) { return { ...currentField, // Deactivate validation for filters. isValid: {}, // Configure getValue/setValue as if Item was a plain object. getValue: ({ item }) => item[currentField.id], setValue: ({ value }) => ({ [currentField.id]: value }) }; } return currentField; }, [fields, filter.field]); const data = (0, import_element91.useMemo)(() => { return (view.filters ?? []).reduce( (acc, activeFilter) => { acc[activeFilter.field] = activeFilter.value; return acc; }, {} ); }, [view.filters]); const handleChange = (0, import_compose20.useEvent)((updatedData) => { if (!field || !currentFilter) { return; } const nextValue = field.getValue({ item: updatedData }); if ((0, import_es62.default)(nextValue, currentValue)) { return; } onChangeView({ ...view, filters: (view.filters ?? []).map( (_filter) => _filter.field === filter.field ? { ..._filter, operator: currentFilter.operator || filter.operators[0], // Consider empty strings as undefined: // // - undefined as value means the filter is unset: the filter widget displays no value and the search returns all records // - empty string as value means "search empty string": returns only the records that have an empty string as value // // In practice, this means the filter will not be able to find an empty string as the value. value: nextValue === "" ? void 0 : nextValue } : _filter ) }); }); if (!field || !field.Edit || !currentFilter) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime215.jsx)( import_components110.Flex, { className: "dataviews-filters__user-input-widget", gap: 2.5, direction: "column", children: /* @__PURE__ */ (0, import_jsx_runtime215.jsx)( field.Edit, { hideLabelFromVision: true, data, field, operator: currentFilter.operator, onChange: handleChange } ) } ); } // packages/dataviews/node_modules/date-fns/constants.js var daysInYear = 365.2425; var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1e3; var minTime = -maxTime; var millisecondsInWeek = 6048e5; var millisecondsInDay = 864e5; var secondsInHour = 3600; var secondsInDay = secondsInHour * 24; var secondsInWeek = secondsInDay * 7; var secondsInYear = secondsInDay * daysInYear; var secondsInMonth = secondsInYear / 12; var secondsInQuarter = secondsInMonth * 3; var constructFromSymbol = /* @__PURE__ */ Symbol.for("constructDateFrom"); // packages/dataviews/node_modules/date-fns/constructFrom.js function constructFrom(date, value) { if (typeof date === "function") return date(value); if (date && typeof date === "object" && constructFromSymbol in date) return date[constructFromSymbol](value); if (date instanceof Date) return new date.constructor(value); return new Date(value); } // packages/dataviews/node_modules/date-fns/toDate.js function toDate(argument, context) { return constructFrom(context || argument, argument); } // packages/dataviews/node_modules/date-fns/addDays.js function addDays(date, amount, options) { const _date = toDate(date, options?.in); if (isNaN(amount)) return constructFrom(options?.in || date, NaN); if (!amount) return _date; _date.setDate(_date.getDate() + amount); return _date; } // packages/dataviews/node_modules/date-fns/addMonths.js function addMonths(date, amount, options) { const _date = toDate(date, options?.in); if (isNaN(amount)) return constructFrom(options?.in || date, NaN); if (!amount) { return _date; } const dayOfMonth = _date.getDate(); const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime()); endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0); const daysInMonth = endOfDesiredMonth.getDate(); if (dayOfMonth >= daysInMonth) { return endOfDesiredMonth; } else { _date.setFullYear( endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth ); return _date; } } // packages/dataviews/node_modules/date-fns/_lib/defaultOptions.js var defaultOptions = {}; function getDefaultOptions() { return defaultOptions; } // packages/dataviews/node_modules/date-fns/startOfWeek.js function startOfWeek(date, options) { const defaultOptions2 = getDefaultOptions(); const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0; const _date = toDate(date, options?.in); const day = _date.getDay(); const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn; _date.setDate(_date.getDate() - diff); _date.setHours(0, 0, 0, 0); return _date; } // packages/dataviews/node_modules/date-fns/startOfISOWeek.js function startOfISOWeek(date, options) { return startOfWeek(date, { ...options, weekStartsOn: 1 }); } // packages/dataviews/node_modules/date-fns/getISOWeekYear.js function getISOWeekYear(date, options) { const _date = toDate(date, options?.in); const year = _date.getFullYear(); const fourthOfJanuaryOfNextYear = constructFrom(_date, 0); fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4); fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0); const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear); const fourthOfJanuaryOfThisYear = constructFrom(_date, 0); fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4); fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0); const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear); if (_date.getTime() >= startOfNextYear.getTime()) { return year + 1; } else if (_date.getTime() >= startOfThisYear.getTime()) { return year; } else { return year - 1; } } // packages/dataviews/node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js function getTimezoneOffsetInMilliseconds(date) { const _date = toDate(date); const utcDate = new Date( Date.UTC( _date.getFullYear(), _date.getMonth(), _date.getDate(), _date.getHours(), _date.getMinutes(), _date.getSeconds(), _date.getMilliseconds() ) ); utcDate.setUTCFullYear(_date.getFullYear()); return +date - +utcDate; } // packages/dataviews/node_modules/date-fns/_lib/normalizeDates.js function normalizeDates(context, ...dates) { const normalize = constructFrom.bind( null, context || dates.find((date) => typeof date === "object") ); return dates.map(normalize); } // packages/dataviews/node_modules/date-fns/startOfDay.js function startOfDay(date, options) { const _date = toDate(date, options?.in); _date.setHours(0, 0, 0, 0); return _date; } // packages/dataviews/node_modules/date-fns/differenceInCalendarDays.js function differenceInCalendarDays(laterDate, earlierDate, options) { const [laterDate_, earlierDate_] = normalizeDates( options?.in, laterDate, earlierDate ); const laterStartOfDay = startOfDay(laterDate_); const earlierStartOfDay = startOfDay(earlierDate_); const laterTimestamp = +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay); const earlierTimestamp = +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay); return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay); } // packages/dataviews/node_modules/date-fns/startOfISOWeekYear.js function startOfISOWeekYear(date, options) { const year = getISOWeekYear(date, options); const fourthOfJanuary = constructFrom(options?.in || date, 0); fourthOfJanuary.setFullYear(year, 0, 4); fourthOfJanuary.setHours(0, 0, 0, 0); return startOfISOWeek(fourthOfJanuary); } // packages/dataviews/node_modules/date-fns/addWeeks.js function addWeeks(date, amount, options) { return addDays(date, amount * 7, options); } // packages/dataviews/node_modules/date-fns/addYears.js function addYears(date, amount, options) { return addMonths(date, amount * 12, options); } // packages/dataviews/node_modules/date-fns/isDate.js function isDate(value) { return value instanceof Date || typeof value === "object" && Object.prototype.toString.call(value) === "[object Date]"; } // packages/dataviews/node_modules/date-fns/isValid.js function isValid(date) { return !(!isDate(date) && typeof date !== "number" || isNaN(+toDate(date))); } // packages/dataviews/node_modules/date-fns/startOfMonth.js function startOfMonth(date, options) { const _date = toDate(date, options?.in); _date.setDate(1); _date.setHours(0, 0, 0, 0); return _date; } // packages/dataviews/node_modules/date-fns/startOfYear.js function startOfYear(date, options) { const date_ = toDate(date, options?.in); date_.setFullYear(date_.getFullYear(), 0, 1); date_.setHours(0, 0, 0, 0); return date_; } // packages/dataviews/node_modules/date-fns/locale/en-US/_lib/formatDistance.js var formatDistanceLocale = { lessThanXSeconds: { one: "less than a second", other: "less than {{count}} seconds" }, xSeconds: { one: "1 second", other: "{{count}} seconds" }, halfAMinute: "half a minute", lessThanXMinutes: { one: "less than a minute", other: "less than {{count}} minutes" }, xMinutes: { one: "1 minute", other: "{{count}} minutes" }, aboutXHours: { one: "about 1 hour", other: "about {{count}} hours" }, xHours: { one: "1 hour", other: "{{count}} hours" }, xDays: { one: "1 day", other: "{{count}} days" }, aboutXWeeks: { one: "about 1 week", other: "about {{count}} weeks" }, xWeeks: { one: "1 week", other: "{{count}} weeks" }, aboutXMonths: { one: "about 1 month", other: "about {{count}} months" }, xMonths: { one: "1 month", other: "{{count}} months" }, aboutXYears: { one: "about 1 year", other: "about {{count}} years" }, xYears: { one: "1 year", other: "{{count}} years" }, overXYears: { one: "over 1 year", other: "over {{count}} years" }, almostXYears: { one: "almost 1 year", other: "almost {{count}} years" } }; var formatDistance = (token, count, options) => { let result; const tokenValue = formatDistanceLocale[token]; if (typeof tokenValue === "string") { result = tokenValue; } else if (count === 1) { result = tokenValue.one; } else { result = tokenValue.other.replace("{{count}}", count.toString()); } if (options?.addSuffix) { if (options.comparison && options.comparison > 0) { return "in " + result; } else { return result + " ago"; } } return result; }; // packages/dataviews/node_modules/date-fns/locale/_lib/buildFormatLongFn.js function buildFormatLongFn(args) { return (options = {}) => { const width = options.width ? String(options.width) : args.defaultWidth; const format6 = args.formats[width] || args.formats[args.defaultWidth]; return format6; }; } // packages/dataviews/node_modules/date-fns/locale/en-US/_lib/formatLong.js var dateFormats = { full: "EEEE, MMMM do, y", long: "MMMM do, y", medium: "MMM d, y", short: "MM/dd/yyyy" }; var timeFormats = { full: "h:mm:ss a zzzz", long: "h:mm:ss a z", medium: "h:mm:ss a", short: "h:mm a" }; var dateTimeFormats = { full: "{{date}} 'at' {{time}}", long: "{{date}} 'at' {{time}}", medium: "{{date}}, {{time}}", short: "{{date}}, {{time}}" }; var formatLong = { date: buildFormatLongFn({ formats: dateFormats, defaultWidth: "full" }), time: buildFormatLongFn({ formats: timeFormats, defaultWidth: "full" }), dateTime: buildFormatLongFn({ formats: dateTimeFormats, defaultWidth: "full" }) }; // packages/dataviews/node_modules/date-fns/locale/en-US/_lib/formatRelative.js var formatRelativeLocale = { lastWeek: "'last' eeee 'at' p", yesterday: "'yesterday at' p", today: "'today at' p", tomorrow: "'tomorrow at' p", nextWeek: "eeee 'at' p", other: "P" }; var formatRelative = (token, _date, _baseDate, _options) => formatRelativeLocale[token]; // packages/dataviews/node_modules/date-fns/locale/_lib/buildLocalizeFn.js function buildLocalizeFn(args) { return (value, options) => { const context = options?.context ? String(options.context) : "standalone"; let valuesArray; if (context === "formatting" && args.formattingValues) { const defaultWidth = args.defaultFormattingWidth || args.defaultWidth; const width = options?.width ? String(options.width) : defaultWidth; valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth]; } else { const defaultWidth = args.defaultWidth; const width = options?.width ? String(options.width) : args.defaultWidth; valuesArray = args.values[width] || args.values[defaultWidth]; } const index = args.argumentCallback ? args.argumentCallback(value) : value; return valuesArray[index]; }; } // packages/dataviews/node_modules/date-fns/locale/en-US/_lib/localize.js var eraValues = { narrow: ["B", "A"], abbreviated: ["BC", "AD"], wide: ["Before Christ", "Anno Domini"] }; var quarterValues = { narrow: ["1", "2", "3", "4"], abbreviated: ["Q1", "Q2", "Q3", "Q4"], wide: ["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"] }; var monthValues = { narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], abbreviated: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ], wide: [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ] }; var dayValues = { narrow: ["S", "M", "T", "W", "T", "F", "S"], short: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], abbreviated: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], wide: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ] }; var dayPeriodValues = { narrow: { am: "a", pm: "p", midnight: "mi", noon: "n", morning: "morning", afternoon: "afternoon", evening: "evening", night: "night" }, abbreviated: { am: "AM", pm: "PM", midnight: "midnight", noon: "noon", morning: "morning", afternoon: "afternoon", evening: "evening", night: "night" }, wide: { am: "a.m.", pm: "p.m.", midnight: "midnight", noon: "noon", morning: "morning", afternoon: "afternoon", evening: "evening", night: "night" } }; var formattingDayPeriodValues = { narrow: { am: "a", pm: "p", midnight: "mi", noon: "n", morning: "in the morning", afternoon: "in the afternoon", evening: "in the evening", night: "at night" }, abbreviated: { am: "AM", pm: "PM", midnight: "midnight", noon: "noon", morning: "in the morning", afternoon: "in the afternoon", evening: "in the evening", night: "at night" }, wide: { am: "a.m.", pm: "p.m.", midnight: "midnight", noon: "noon", morning: "in the morning", afternoon: "in the afternoon", evening: "in the evening", night: "at night" } }; var ordinalNumber = (dirtyNumber, _options) => { const number = Number(dirtyNumber); const rem100 = number % 100; if (rem100 > 20 || rem100 < 10) { switch (rem100 % 10) { case 1: return number + "st"; case 2: return number + "nd"; case 3: return number + "rd"; } } return number + "th"; }; var localize = { ordinalNumber, era: buildLocalizeFn({ values: eraValues, defaultWidth: "wide" }), quarter: buildLocalizeFn({ values: quarterValues, defaultWidth: "wide", argumentCallback: (quarter) => quarter - 1 }), month: buildLocalizeFn({ values: monthValues, defaultWidth: "wide" }), day: buildLocalizeFn({ values: dayValues, defaultWidth: "wide" }), dayPeriod: buildLocalizeFn({ values: dayPeriodValues, defaultWidth: "wide", formattingValues: formattingDayPeriodValues, defaultFormattingWidth: "wide" }) }; // packages/dataviews/node_modules/date-fns/locale/_lib/buildMatchFn.js function buildMatchFn(args) { return (string, options = {}) => { const width = options.width; const matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth]; const matchResult = string.match(matchPattern); if (!matchResult) { return null; } const matchedString = matchResult[0]; const parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth]; const key = Array.isArray(parsePatterns) ? findIndex2(parsePatterns, (pattern) => pattern.test(matchedString)) : ( // [TODO] -- I challenge you to fix the type findKey(parsePatterns, (pattern) => pattern.test(matchedString)) ); let value; value = args.valueCallback ? args.valueCallback(key) : key; value = options.valueCallback ? ( // [TODO] -- I challenge you to fix the type options.valueCallback(value) ) : value; const rest = string.slice(matchedString.length); return { value, rest }; }; } function findKey(object, predicate) { for (const key in object) { if (Object.prototype.hasOwnProperty.call(object, key) && predicate(object[key])) { return key; } } return void 0; } function findIndex2(array, predicate) { for (let key = 0; key < array.length; key++) { if (predicate(array[key])) { return key; } } return void 0; } // packages/dataviews/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js function buildMatchPatternFn(args) { return (string, options = {}) => { const matchResult = string.match(args.matchPattern); if (!matchResult) return null; const matchedString = matchResult[0]; const parseResult = string.match(args.parsePattern); if (!parseResult) return null; let value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0]; value = options.valueCallback ? options.valueCallback(value) : value; const rest = string.slice(matchedString.length); return { value, rest }; }; } // packages/dataviews/node_modules/date-fns/locale/en-US/_lib/match.js var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i; var parseOrdinalNumberPattern = /\d+/i; var matchEraPatterns = { narrow: /^(b|a)/i, abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i, wide: /^(before christ|before common era|anno domini|common era)/i }; var parseEraPatterns = { any: [/^b/i, /^(a|c)/i] }; var matchQuarterPatterns = { narrow: /^[1234]/i, abbreviated: /^q[1234]/i, wide: /^[1234](th|st|nd|rd)? quarter/i }; var parseQuarterPatterns = { any: [/1/i, /2/i, /3/i, /4/i] }; var matchMonthPatterns = { narrow: /^[jfmasond]/i, abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i, wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i }; var parseMonthPatterns = { narrow: [ /^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i ], any: [ /^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i ] }; var matchDayPatterns = { narrow: /^[smtwf]/i, short: /^(su|mo|tu|we|th|fr|sa)/i, abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i, wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i }; var parseDayPatterns = { narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i], any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i] }; var matchDayPeriodPatterns = { narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i, any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i }; var parseDayPeriodPatterns = { any: { am: /^a/i, pm: /^p/i, midnight: /^mi/i, noon: /^no/i, morning: /morning/i, afternoon: /afternoon/i, evening: /evening/i, night: /night/i } }; var match2 = { ordinalNumber: buildMatchPatternFn({ matchPattern: matchOrdinalNumberPattern, parsePattern: parseOrdinalNumberPattern, valueCallback: (value) => parseInt(value, 10) }), era: buildMatchFn({ matchPatterns: matchEraPatterns, defaultMatchWidth: "wide", parsePatterns: parseEraPatterns, defaultParseWidth: "any" }), quarter: buildMatchFn({ matchPatterns: matchQuarterPatterns, defaultMatchWidth: "wide", parsePatterns: parseQuarterPatterns, defaultParseWidth: "any", valueCallback: (index) => index + 1 }), month: buildMatchFn({ matchPatterns: matchMonthPatterns, defaultMatchWidth: "wide", parsePatterns: parseMonthPatterns, defaultParseWidth: "any" }), day: buildMatchFn({ matchPatterns: matchDayPatterns, defaultMatchWidth: "wide", parsePatterns: parseDayPatterns, defaultParseWidth: "any" }), dayPeriod: buildMatchFn({ matchPatterns: matchDayPeriodPatterns, defaultMatchWidth: "any", parsePatterns: parseDayPeriodPatterns, defaultParseWidth: "any" }) }; // packages/dataviews/node_modules/date-fns/locale/en-US.js var enUS = { code: "en-US", formatDistance, formatLong, formatRelative, localize, match: match2, options: { weekStartsOn: 0, firstWeekContainsDate: 1 } }; // packages/dataviews/node_modules/date-fns/getDayOfYear.js function getDayOfYear(date, options) { const _date = toDate(date, options?.in); const diff = differenceInCalendarDays(_date, startOfYear(_date)); const dayOfYear = diff + 1; return dayOfYear; } // packages/dataviews/node_modules/date-fns/getISOWeek.js function getISOWeek(date, options) { const _date = toDate(date, options?.in); const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date); return Math.round(diff / millisecondsInWeek) + 1; } // packages/dataviews/node_modules/date-fns/getWeekYear.js function getWeekYear(date, options) { const _date = toDate(date, options?.in); const year = _date.getFullYear(); const defaultOptions2 = getDefaultOptions(); const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1; const firstWeekOfNextYear = constructFrom(options?.in || date, 0); firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate); firstWeekOfNextYear.setHours(0, 0, 0, 0); const startOfNextYear = startOfWeek(firstWeekOfNextYear, options); const firstWeekOfThisYear = constructFrom(options?.in || date, 0); firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate); firstWeekOfThisYear.setHours(0, 0, 0, 0); const startOfThisYear = startOfWeek(firstWeekOfThisYear, options); if (+_date >= +startOfNextYear) { return year + 1; } else if (+_date >= +startOfThisYear) { return year; } else { return year - 1; } } // packages/dataviews/node_modules/date-fns/startOfWeekYear.js function startOfWeekYear(date, options) { const defaultOptions2 = getDefaultOptions(); const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1; const year = getWeekYear(date, options); const firstWeek = constructFrom(options?.in || date, 0); firstWeek.setFullYear(year, 0, firstWeekContainsDate); firstWeek.setHours(0, 0, 0, 0); const _date = startOfWeek(firstWeek, options); return _date; } // packages/dataviews/node_modules/date-fns/getWeek.js function getWeek(date, options) { const _date = toDate(date, options?.in); const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options); return Math.round(diff / millisecondsInWeek) + 1; } // packages/dataviews/node_modules/date-fns/_lib/addLeadingZeros.js function addLeadingZeros(number, targetLength) { const sign = number < 0 ? "-" : ""; const output = Math.abs(number).toString().padStart(targetLength, "0"); return sign + output; } // packages/dataviews/node_modules/date-fns/_lib/format/lightFormatters.js var lightFormatters = { // Year y(date, token) { const signedYear = date.getFullYear(); const year = signedYear > 0 ? signedYear : 1 - signedYear; return addLeadingZeros(token === "yy" ? year % 100 : year, token.length); }, // Month M(date, token) { const month = date.getMonth(); return token === "M" ? String(month + 1) : addLeadingZeros(month + 1, 2); }, // Day of the month d(date, token) { return addLeadingZeros(date.getDate(), token.length); }, // AM or PM a(date, token) { const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? "pm" : "am"; switch (token) { case "a": case "aa": return dayPeriodEnumValue.toUpperCase(); case "aaa": return dayPeriodEnumValue; case "aaaaa": return dayPeriodEnumValue[0]; case "aaaa": default: return dayPeriodEnumValue === "am" ? "a.m." : "p.m."; } }, // Hour [1-12] h(date, token) { return addLeadingZeros(date.getHours() % 12 || 12, token.length); }, // Hour [0-23] H(date, token) { return addLeadingZeros(date.getHours(), token.length); }, // Minute m(date, token) { return addLeadingZeros(date.getMinutes(), token.length); }, // Second s(date, token) { return addLeadingZeros(date.getSeconds(), token.length); }, // Fraction of second S(date, token) { const numberOfDigits = token.length; const milliseconds = date.getMilliseconds(); const fractionalSeconds = Math.trunc( milliseconds * Math.pow(10, numberOfDigits - 3) ); return addLeadingZeros(fractionalSeconds, token.length); } }; // packages/dataviews/node_modules/date-fns/_lib/format/formatters.js var dayPeriodEnum = { am: "am", pm: "pm", midnight: "midnight", noon: "noon", morning: "morning", afternoon: "afternoon", evening: "evening", night: "night" }; var formatters = { // Era G: function(date, token, localize2) { const era = date.getFullYear() > 0 ? 1 : 0; switch (token) { // AD, BC case "G": case "GG": case "GGG": return localize2.era(era, { width: "abbreviated" }); // A, B case "GGGGG": return localize2.era(era, { width: "narrow" }); // Anno Domini, Before Christ case "GGGG": default: return localize2.era(era, { width: "wide" }); } }, // Year y: function(date, token, localize2) { if (token === "yo") { const signedYear = date.getFullYear(); const year = signedYear > 0 ? signedYear : 1 - signedYear; return localize2.ordinalNumber(year, { unit: "year" }); } return lightFormatters.y(date, token); }, // Local week-numbering year Y: function(date, token, localize2, options) { const signedWeekYear = getWeekYear(date, options); const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; if (token === "YY") { const twoDigitYear = weekYear % 100; return addLeadingZeros(twoDigitYear, 2); } if (token === "Yo") { return localize2.ordinalNumber(weekYear, { unit: "year" }); } return addLeadingZeros(weekYear, token.length); }, // ISO week-numbering year R: function(date, token) { const isoWeekYear = getISOWeekYear(date); return addLeadingZeros(isoWeekYear, token.length); }, // Extended year. This is a single number designating the year of this calendar system. // The main difference between `y` and `u` localizers are B.C. years: // | Year | `y` | `u` | // |------|-----|-----| // | AC 1 | 1 | 1 | // | BC 1 | 1 | 0 | // | BC 2 | 2 | -1 | // Also `yy` always returns the last two digits of a year, // while `uu` pads single digit years to 2 characters and returns other years unchanged. u: function(date, token) { const year = date.getFullYear(); return addLeadingZeros(year, token.length); }, // Quarter Q: function(date, token, localize2) { const quarter = Math.ceil((date.getMonth() + 1) / 3); switch (token) { // 1, 2, 3, 4 case "Q": return String(quarter); // 01, 02, 03, 04 case "QQ": return addLeadingZeros(quarter, 2); // 1st, 2nd, 3rd, 4th case "Qo": return localize2.ordinalNumber(quarter, { unit: "quarter" }); // Q1, Q2, Q3, Q4 case "QQQ": return localize2.quarter(quarter, { width: "abbreviated", context: "formatting" }); // 1, 2, 3, 4 (narrow quarter; could be not numerical) case "QQQQQ": return localize2.quarter(quarter, { width: "narrow", context: "formatting" }); // 1st quarter, 2nd quarter, ... case "QQQQ": default: return localize2.quarter(quarter, { width: "wide", context: "formatting" }); } }, // Stand-alone quarter q: function(date, token, localize2) { const quarter = Math.ceil((date.getMonth() + 1) / 3); switch (token) { // 1, 2, 3, 4 case "q": return String(quarter); // 01, 02, 03, 04 case "qq": return addLeadingZeros(quarter, 2); // 1st, 2nd, 3rd, 4th case "qo": return localize2.ordinalNumber(quarter, { unit: "quarter" }); // Q1, Q2, Q3, Q4 case "qqq": return localize2.quarter(quarter, { width: "abbreviated", context: "standalone" }); // 1, 2, 3, 4 (narrow quarter; could be not numerical) case "qqqqq": return localize2.quarter(quarter, { width: "narrow", context: "standalone" }); // 1st quarter, 2nd quarter, ... case "qqqq": default: return localize2.quarter(quarter, { width: "wide", context: "standalone" }); } }, // Month M: function(date, token, localize2) { const month = date.getMonth(); switch (token) { case "M": case "MM": return lightFormatters.M(date, token); // 1st, 2nd, ..., 12th case "Mo": return localize2.ordinalNumber(month + 1, { unit: "month" }); // Jan, Feb, ..., Dec case "MMM": return localize2.month(month, { width: "abbreviated", context: "formatting" }); // J, F, ..., D case "MMMMM": return localize2.month(month, { width: "narrow", context: "formatting" }); // January, February, ..., December case "MMMM": default: return localize2.month(month, { width: "wide", context: "formatting" }); } }, // Stand-alone month L: function(date, token, localize2) { const month = date.getMonth(); switch (token) { // 1, 2, ..., 12 case "L": return String(month + 1); // 01, 02, ..., 12 case "LL": return addLeadingZeros(month + 1, 2); // 1st, 2nd, ..., 12th case "Lo": return localize2.ordinalNumber(month + 1, { unit: "month" }); // Jan, Feb, ..., Dec case "LLL": return localize2.month(month, { width: "abbreviated", context: "standalone" }); // J, F, ..., D case "LLLLL": return localize2.month(month, { width: "narrow", context: "standalone" }); // January, February, ..., December case "LLLL": default: return localize2.month(month, { width: "wide", context: "standalone" }); } }, // Local week of year w: function(date, token, localize2, options) { const week = getWeek(date, options); if (token === "wo") { return localize2.ordinalNumber(week, { unit: "week" }); } return addLeadingZeros(week, token.length); }, // ISO week of year I: function(date, token, localize2) { const isoWeek = getISOWeek(date); if (token === "Io") { return localize2.ordinalNumber(isoWeek, { unit: "week" }); } return addLeadingZeros(isoWeek, token.length); }, // Day of the month d: function(date, token, localize2) { if (token === "do") { return localize2.ordinalNumber(date.getDate(), { unit: "date" }); } return lightFormatters.d(date, token); }, // Day of year D: function(date, token, localize2) { const dayOfYear = getDayOfYear(date); if (token === "Do") { return localize2.ordinalNumber(dayOfYear, { unit: "dayOfYear" }); } return addLeadingZeros(dayOfYear, token.length); }, // Day of week E: function(date, token, localize2) { const dayOfWeek = date.getDay(); switch (token) { // Tue case "E": case "EE": case "EEE": return localize2.day(dayOfWeek, { width: "abbreviated", context: "formatting" }); // T case "EEEEE": return localize2.day(dayOfWeek, { width: "narrow", context: "formatting" }); // Tu case "EEEEEE": return localize2.day(dayOfWeek, { width: "short", context: "formatting" }); // Tuesday case "EEEE": default: return localize2.day(dayOfWeek, { width: "wide", context: "formatting" }); } }, // Local day of week e: function(date, token, localize2, options) { const dayOfWeek = date.getDay(); const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; switch (token) { // Numerical value (Nth day of week with current locale or weekStartsOn) case "e": return String(localDayOfWeek); // Padded numerical value case "ee": return addLeadingZeros(localDayOfWeek, 2); // 1st, 2nd, ..., 7th case "eo": return localize2.ordinalNumber(localDayOfWeek, { unit: "day" }); case "eee": return localize2.day(dayOfWeek, { width: "abbreviated", context: "formatting" }); // T case "eeeee": return localize2.day(dayOfWeek, { width: "narrow", context: "formatting" }); // Tu case "eeeeee": return localize2.day(dayOfWeek, { width: "short", context: "formatting" }); // Tuesday case "eeee": default: return localize2.day(dayOfWeek, { width: "wide", context: "formatting" }); } }, // Stand-alone local day of week c: function(date, token, localize2, options) { const dayOfWeek = date.getDay(); const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7; switch (token) { // Numerical value (same as in `e`) case "c": return String(localDayOfWeek); // Padded numerical value case "cc": return addLeadingZeros(localDayOfWeek, token.length); // 1st, 2nd, ..., 7th case "co": return localize2.ordinalNumber(localDayOfWeek, { unit: "day" }); case "ccc": return localize2.day(dayOfWeek, { width: "abbreviated", context: "standalone" }); // T case "ccccc": return localize2.day(dayOfWeek, { width: "narrow", context: "standalone" }); // Tu case "cccccc": return localize2.day(dayOfWeek, { width: "short", context: "standalone" }); // Tuesday case "cccc": default: return localize2.day(dayOfWeek, { width: "wide", context: "standalone" }); } }, // ISO day of week i: function(date, token, localize2) { const dayOfWeek = date.getDay(); const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek; switch (token) { // 2 case "i": return String(isoDayOfWeek); // 02 case "ii": return addLeadingZeros(isoDayOfWeek, token.length); // 2nd case "io": return localize2.ordinalNumber(isoDayOfWeek, { unit: "day" }); // Tue case "iii": return localize2.day(dayOfWeek, { width: "abbreviated", context: "formatting" }); // T case "iiiii": return localize2.day(dayOfWeek, { width: "narrow", context: "formatting" }); // Tu case "iiiiii": return localize2.day(dayOfWeek, { width: "short", context: "formatting" }); // Tuesday case "iiii": default: return localize2.day(dayOfWeek, { width: "wide", context: "formatting" }); } }, // AM or PM a: function(date, token, localize2) { const hours = date.getHours(); const dayPeriodEnumValue = hours / 12 >= 1 ? "pm" : "am"; switch (token) { case "a": case "aa": return localize2.dayPeriod(dayPeriodEnumValue, { width: "abbreviated", context: "formatting" }); case "aaa": return localize2.dayPeriod(dayPeriodEnumValue, { width: "abbreviated", context: "formatting" }).toLowerCase(); case "aaaaa": return localize2.dayPeriod(dayPeriodEnumValue, { width: "narrow", context: "formatting" }); case "aaaa": default: return localize2.dayPeriod(dayPeriodEnumValue, { width: "wide", context: "formatting" }); } }, // AM, PM, midnight, noon b: function(date, token, localize2) { const hours = date.getHours(); let dayPeriodEnumValue; if (hours === 12) { dayPeriodEnumValue = dayPeriodEnum.noon; } else if (hours === 0) { dayPeriodEnumValue = dayPeriodEnum.midnight; } else { dayPeriodEnumValue = hours / 12 >= 1 ? "pm" : "am"; } switch (token) { case "b": case "bb": return localize2.dayPeriod(dayPeriodEnumValue, { width: "abbreviated", context: "formatting" }); case "bbb": return localize2.dayPeriod(dayPeriodEnumValue, { width: "abbreviated", context: "formatting" }).toLowerCase(); case "bbbbb": return localize2.dayPeriod(dayPeriodEnumValue, { width: "narrow", context: "formatting" }); case "bbbb": default: return localize2.dayPeriod(dayPeriodEnumValue, { width: "wide", context: "formatting" }); } }, // in the morning, in the afternoon, in the evening, at night B: function(date, token, localize2) { const hours = date.getHours(); let dayPeriodEnumValue; if (hours >= 17) { dayPeriodEnumValue = dayPeriodEnum.evening; } else if (hours >= 12) { dayPeriodEnumValue = dayPeriodEnum.afternoon; } else if (hours >= 4) { dayPeriodEnumValue = dayPeriodEnum.morning; } else { dayPeriodEnumValue = dayPeriodEnum.night; } switch (token) { case "B": case "BB": case "BBB": return localize2.dayPeriod(dayPeriodEnumValue, { width: "abbreviated", context: "formatting" }); case "BBBBB": return localize2.dayPeriod(dayPeriodEnumValue, { width: "narrow", context: "formatting" }); case "BBBB": default: return localize2.dayPeriod(dayPeriodEnumValue, { width: "wide", context: "formatting" }); } }, // Hour [1-12] h: function(date, token, localize2) { if (token === "ho") { let hours = date.getHours() % 12; if (hours === 0) hours = 12; return localize2.ordinalNumber(hours, { unit: "hour" }); } return lightFormatters.h(date, token); }, // Hour [0-23] H: function(date, token, localize2) { if (token === "Ho") { return localize2.ordinalNumber(date.getHours(), { unit: "hour" }); } return lightFormatters.H(date, token); }, // Hour [0-11] K: function(date, token, localize2) { const hours = date.getHours() % 12; if (token === "Ko") { return localize2.ordinalNumber(hours, { unit: "hour" }); } return addLeadingZeros(hours, token.length); }, // Hour [1-24] k: function(date, token, localize2) { let hours = date.getHours(); if (hours === 0) hours = 24; if (token === "ko") { return localize2.ordinalNumber(hours, { unit: "hour" }); } return addLeadingZeros(hours, token.length); }, // Minute m: function(date, token, localize2) { if (token === "mo") { return localize2.ordinalNumber(date.getMinutes(), { unit: "minute" }); } return lightFormatters.m(date, token); }, // Second s: function(date, token, localize2) { if (token === "so") { return localize2.ordinalNumber(date.getSeconds(), { unit: "second" }); } return lightFormatters.s(date, token); }, // Fraction of second S: function(date, token) { return lightFormatters.S(date, token); }, // Timezone (ISO-8601. If offset is 0, output is always `'Z'`) X: function(date, token, _localize) { const timezoneOffset = date.getTimezoneOffset(); if (timezoneOffset === 0) { return "Z"; } switch (token) { // Hours and optional minutes case "X": return formatTimezoneWithOptionalMinutes(timezoneOffset); // Hours, minutes and optional seconds without `:` delimiter // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets // so this token always has the same output as `XX` case "XXXX": case "XX": return formatTimezone(timezoneOffset); // Hours, minutes and optional seconds with `:` delimiter // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets // so this token always has the same output as `XXX` case "XXXXX": case "XXX": // Hours and minutes with `:` delimiter default: return formatTimezone(timezoneOffset, ":"); } }, // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent) x: function(date, token, _localize) { const timezoneOffset = date.getTimezoneOffset(); switch (token) { // Hours and optional minutes case "x": return formatTimezoneWithOptionalMinutes(timezoneOffset); // Hours, minutes and optional seconds without `:` delimiter // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets // so this token always has the same output as `xx` case "xxxx": case "xx": return formatTimezone(timezoneOffset); // Hours, minutes and optional seconds with `:` delimiter // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets // so this token always has the same output as `xxx` case "xxxxx": case "xxx": // Hours and minutes with `:` delimiter default: return formatTimezone(timezoneOffset, ":"); } }, // Timezone (GMT) O: function(date, token, _localize) { const timezoneOffset = date.getTimezoneOffset(); switch (token) { // Short case "O": case "OO": case "OOO": return "GMT" + formatTimezoneShort(timezoneOffset, ":"); // Long case "OOOO": default: return "GMT" + formatTimezone(timezoneOffset, ":"); } }, // Timezone (specific non-location) z: function(date, token, _localize) { const timezoneOffset = date.getTimezoneOffset(); switch (token) { // Short case "z": case "zz": case "zzz": return "GMT" + formatTimezoneShort(timezoneOffset, ":"); // Long case "zzzz": default: return "GMT" + formatTimezone(timezoneOffset, ":"); } }, // Seconds timestamp t: function(date, token, _localize) { const timestamp = Math.trunc(+date / 1e3); return addLeadingZeros(timestamp, token.length); }, // Milliseconds timestamp T: function(date, token, _localize) { return addLeadingZeros(+date, token.length); } }; function formatTimezoneShort(offset, delimiter = "") { const sign = offset > 0 ? "-" : "+"; const absOffset = Math.abs(offset); const hours = Math.trunc(absOffset / 60); const minutes = absOffset % 60; if (minutes === 0) { return sign + String(hours); } return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2); } function formatTimezoneWithOptionalMinutes(offset, delimiter) { if (offset % 60 === 0) { const sign = offset > 0 ? "-" : "+"; return sign + addLeadingZeros(Math.abs(offset) / 60, 2); } return formatTimezone(offset, delimiter); } function formatTimezone(offset, delimiter = "") { const sign = offset > 0 ? "-" : "+"; const absOffset = Math.abs(offset); const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2); const minutes = addLeadingZeros(absOffset % 60, 2); return sign + hours + delimiter + minutes; } // packages/dataviews/node_modules/date-fns/_lib/format/longFormatters.js var dateLongFormatter = (pattern, formatLong2) => { switch (pattern) { case "P": return formatLong2.date({ width: "short" }); case "PP": return formatLong2.date({ width: "medium" }); case "PPP": return formatLong2.date({ width: "long" }); case "PPPP": default: return formatLong2.date({ width: "full" }); } }; var timeLongFormatter = (pattern, formatLong2) => { switch (pattern) { case "p": return formatLong2.time({ width: "short" }); case "pp": return formatLong2.time({ width: "medium" }); case "ppp": return formatLong2.time({ width: "long" }); case "pppp": default: return formatLong2.time({ width: "full" }); } }; var dateTimeLongFormatter = (pattern, formatLong2) => { const matchResult = pattern.match(/(P+)(p+)?/) || []; const datePattern = matchResult[1]; const timePattern = matchResult[2]; if (!timePattern) { return dateLongFormatter(pattern, formatLong2); } let dateTimeFormat; switch (datePattern) { case "P": dateTimeFormat = formatLong2.dateTime({ width: "short" }); break; case "PP": dateTimeFormat = formatLong2.dateTime({ width: "medium" }); break; case "PPP": dateTimeFormat = formatLong2.dateTime({ width: "long" }); break; case "PPPP": default: dateTimeFormat = formatLong2.dateTime({ width: "full" }); break; } return dateTimeFormat.replace("{{date}}", dateLongFormatter(datePattern, formatLong2)).replace("{{time}}", timeLongFormatter(timePattern, formatLong2)); }; var longFormatters = { p: timeLongFormatter, P: dateTimeLongFormatter }; // packages/dataviews/node_modules/date-fns/_lib/protectedTokens.js var dayOfYearTokenRE = /^D+$/; var weekYearTokenRE = /^Y+$/; var throwTokens = ["D", "DD", "YY", "YYYY"]; function isProtectedDayOfYearToken(token) { return dayOfYearTokenRE.test(token); } function isProtectedWeekYearToken(token) { return weekYearTokenRE.test(token); } function warnOrThrowProtectedError(token, format6, input) { const _message = message(token, format6, input); console.warn(_message); if (throwTokens.includes(token)) throw new RangeError(_message); } function message(token, format6, input) { const subject = token[0] === "Y" ? "years" : "days of the month"; return `Use \`${token.toLowerCase()}\` instead of \`${token}\` (in \`${format6}\`) for formatting ${subject} to the input \`${input}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`; } // packages/dataviews/node_modules/date-fns/format.js var formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g; var longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g; var escapedStringRegExp = /^'([^]*?)'?$/; var doubleQuoteRegExp = /''/g; var unescapedLatinCharacterRegExp = /[a-zA-Z]/; function format(date, formatStr, options) { const defaultOptions2 = getDefaultOptions(); const locale = options?.locale ?? defaultOptions2.locale ?? enUS; const firstWeekContainsDate = options?.firstWeekContainsDate ?? options?.locale?.options?.firstWeekContainsDate ?? defaultOptions2.firstWeekContainsDate ?? defaultOptions2.locale?.options?.firstWeekContainsDate ?? 1; const weekStartsOn = options?.weekStartsOn ?? options?.locale?.options?.weekStartsOn ?? defaultOptions2.weekStartsOn ?? defaultOptions2.locale?.options?.weekStartsOn ?? 0; const originalDate = toDate(date, options?.in); if (!isValid(originalDate)) { throw new RangeError("Invalid time value"); } let parts = formatStr.match(longFormattingTokensRegExp).map((substring) => { const firstCharacter = substring[0]; if (firstCharacter === "p" || firstCharacter === "P") { const longFormatter = longFormatters[firstCharacter]; return longFormatter(substring, locale.formatLong); } return substring; }).join("").match(formattingTokensRegExp).map((substring) => { if (substring === "''") { return { isToken: false, value: "'" }; } const firstCharacter = substring[0]; if (firstCharacter === "'") { return { isToken: false, value: cleanEscapedString(substring) }; } if (formatters[firstCharacter]) { return { isToken: true, value: substring }; } if (firstCharacter.match(unescapedLatinCharacterRegExp)) { throw new RangeError( "Format string contains an unescaped latin alphabet character `" + firstCharacter + "`" ); } return { isToken: false, value: substring }; }); if (locale.localize.preprocessor) { parts = locale.localize.preprocessor(originalDate, parts); } const formatterOptions = { firstWeekContainsDate, weekStartsOn, locale }; return parts.map((part) => { if (!part.isToken) return part.value; const token = part.value; if (!options?.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token) || !options?.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) { warnOrThrowProtectedError(token, formatStr, String(date)); } const formatter = formatters[token[0]]; return formatter(originalDate, token, locale.localize, formatterOptions); }).join(""); } function cleanEscapedString(input) { const matched = input.match(escapedStringRegExp); if (!matched) { return input; } return matched[1].replace(doubleQuoteRegExp, "'"); } // packages/dataviews/node_modules/date-fns/subDays.js function subDays(date, amount, options) { return addDays(date, -amount, options); } // packages/dataviews/node_modules/date-fns/subMonths.js function subMonths(date, amount, options) { return addMonths(date, -amount, options); } // packages/dataviews/node_modules/date-fns/subWeeks.js function subWeeks(date, amount, options) { return addWeeks(date, -amount, options); } // packages/dataviews/node_modules/date-fns/subYears.js function subYears(date, amount, options) { return addYears(date, -amount, options); } // packages/dataviews/build-module/utils/operators.mjs var import_i18n105 = __toESM(require_i18n(), 1); var import_element92 = __toESM(require_element(), 1); var import_date2 = __toESM(require_date(), 1); var import_jsx_runtime216 = __toESM(require_jsx_runtime(), 1); var filterTextWrappers = { Name: /* @__PURE__ */ (0, import_jsx_runtime216.jsx)("span", { className: "dataviews-filters__summary-filter-text-name" }), Value: /* @__PURE__ */ (0, import_jsx_runtime216.jsx)("span", { className: "dataviews-filters__summary-filter-text-value" }) }; function getRelativeDate(value, unit) { switch (unit) { case "days": return subDays(/* @__PURE__ */ new Date(), value); case "weeks": return subWeeks(/* @__PURE__ */ new Date(), value); case "months": return subMonths(/* @__PURE__ */ new Date(), value); case "years": return subYears(/* @__PURE__ */ new Date(), value); default: return /* @__PURE__ */ new Date(); } } var isNoneOperatorDefinition = { /* translators: DataViews operator name */ label: (0, import_i18n105.__)("Is none of"), filterText: (filter, activeElements) => (0, import_element92.createInterpolateElement)( (0, import_i18n105.sprintf)( /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is none of: Admin, Editor". */ (0, import_i18n105.__)("%1$s is none of: %2$s"), filter.name, activeElements.map((element) => element.label).join(", ") ), filterTextWrappers ), filter: ((item, field, filterValue) => { if (!filterValue?.length) { return true; } const fieldValue = field.getValue({ item }); if (Array.isArray(fieldValue)) { return !filterValue.some( (fv) => fieldValue.includes(fv) ); } else if (typeof fieldValue === "string") { return !filterValue.includes(fieldValue); } return false; }), selection: "multi" }; var OPERATORS = [ { name: OPERATOR_IS_ANY2, /* translators: DataViews operator name */ label: (0, import_i18n105.__)("Includes"), filterText: (filter, activeElements) => (0, import_element92.createInterpolateElement)( (0, import_i18n105.sprintf)( /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is any: Admin, Editor". */ (0, import_i18n105.__)("%1$s includes: %2$s"), filter.name, activeElements.map((element) => element.label).join(", ") ), filterTextWrappers ), filter(item, field, filterValue) { if (!filterValue?.length) { return true; } const fieldValue = field.getValue({ item }); if (Array.isArray(fieldValue)) { return filterValue.some( (fv) => fieldValue.includes(fv) ); } else if (typeof fieldValue === "string") { return filterValue.includes(fieldValue); } return false; }, selection: "multi" }, { name: OPERATOR_IS_NONE2, ...isNoneOperatorDefinition }, { name: OPERATOR_IS_ALL, /* translators: DataViews operator name */ label: (0, import_i18n105.__)("Includes all"), filterText: (filter, activeElements) => (0, import_element92.createInterpolateElement)( (0, import_i18n105.sprintf)( /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author includes all: Admin, Editor". */ (0, import_i18n105.__)("%1$s includes all: %2$s"), filter.name, activeElements.map((element) => element.label).join(", ") ), filterTextWrappers ), filter(item, field, filterValue) { if (!filterValue?.length) { return true; } return filterValue.every((value) => { return field.getValue({ item })?.includes(value); }); }, selection: "multi" }, { name: OPERATOR_IS_NOT_ALL, ...isNoneOperatorDefinition }, { name: OPERATOR_BETWEEN, /* translators: DataViews operator name */ label: (0, import_i18n105.__)("Between (inc)"), filterText: (filter, activeElements) => (0, import_element92.createInterpolateElement)( (0, import_i18n105.sprintf)( /* translators: 1: Filter name (e.g. "Item count"). 2: Filter value min. 3: Filter value max. e.g.: "Item count between (inc): 10 and 180". */ (0, import_i18n105.__)( "%1$s between (inc): %2$s and %3$s" ), filter.name, activeElements[0].label[0], activeElements[0].label[1] ), filterTextWrappers ), filter(item, field, filterValue) { if (!Array.isArray(filterValue) || filterValue.length !== 2 || filterValue[0] === void 0 || filterValue[1] === void 0) { return true; } const fieldValue = field.getValue({ item }); if (typeof fieldValue === "number" || fieldValue instanceof Date || typeof fieldValue === "string") { return fieldValue >= filterValue[0] && fieldValue <= filterValue[1]; } return false; }, selection: "custom" }, { name: OPERATOR_IN_THE_PAST, /* translators: DataViews operator name */ label: (0, import_i18n105.__)("In the past"), filterText: (filter, activeElements) => (0, import_element92.createInterpolateElement)( (0, import_i18n105.sprintf)( /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "7 days"): "Date is in the past: 7 days". */ (0, import_i18n105.__)( "%1$s is in the past: %2$s" ), filter.name, `${activeElements[0].value.value} ${activeElements[0].value.unit}` ), filterTextWrappers ), filter(item, field, filterValue) { if (filterValue?.value === void 0 || filterValue?.unit === void 0) { return true; } const targetDate = getRelativeDate( filterValue.value, filterValue.unit ); const fieldValue = (0, import_date2.getDate)(field.getValue({ item })); return fieldValue >= targetDate && fieldValue <= /* @__PURE__ */ new Date(); }, selection: "custom" }, { name: OPERATOR_OVER, /* translators: DataViews operator name */ label: (0, import_i18n105.__)("Over"), filterText: (filter, activeElements) => (0, import_element92.createInterpolateElement)( (0, import_i18n105.sprintf)( /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "7 days"): "Date is over: 7 days". */ (0, import_i18n105.__)("%1$s is over: %2$s"), filter.name, `${activeElements[0].value.value} ${activeElements[0].value.unit}` ), filterTextWrappers ), filter(item, field, filterValue) { if (filterValue?.value === void 0 || filterValue?.unit === void 0) { return true; } const targetDate = getRelativeDate( filterValue.value, filterValue.unit ); const fieldValue = (0, import_date2.getDate)(field.getValue({ item })); return fieldValue < targetDate; }, selection: "custom" }, { name: OPERATOR_IS2, /* translators: DataViews operator name */ label: (0, import_i18n105.__)("Is"), filterText: (filter, activeElements) => (0, import_element92.createInterpolateElement)( (0, import_i18n105.sprintf)( /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is: Admin". */ (0, import_i18n105.__)("%1$s is: %2$s"), filter.name, activeElements[0].label ), filterTextWrappers ), filter(item, field, filterValue) { return filterValue === field.getValue({ item }) || filterValue === void 0; }, selection: "single" }, { name: OPERATOR_IS_NOT, /* translators: DataViews operator name */ label: (0, import_i18n105.__)("Is not"), filterText: (filter, activeElements) => (0, import_element92.createInterpolateElement)( (0, import_i18n105.sprintf)( /* translators: 1: Filter name (e.g. "Author"). 2: Filter value (e.g. "Admin"): "Author is not: Admin". */ (0, import_i18n105.__)("%1$s is not: %2$s"), filter.name, activeElements[0].label ), filterTextWrappers ), filter(item, field, filterValue) { return filterValue !== field.getValue({ item }); }, selection: "single" }, { name: OPERATOR_LESS_THAN, /* translators: DataViews operator name */ label: (0, import_i18n105.__)("Less than"), filterText: (filter, activeElements) => (0, import_element92.createInterpolateElement)( (0, import_i18n105.sprintf)( /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is less than: 10". */ (0, import_i18n105.__)("%1$s is less than: %2$s"), filter.name, activeElements[0].label ), filterTextWrappers ), filter(item, field, filterValue) { if (filterValue === void 0) { return true; } const fieldValue = field.getValue({ item }); return fieldValue < filterValue; }, selection: "single" }, { name: OPERATOR_GREATER_THAN, /* translators: DataViews operator name */ label: (0, import_i18n105.__)("Greater than"), filterText: (filter, activeElements) => (0, import_element92.createInterpolateElement)( (0, import_i18n105.sprintf)( /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is greater than: 10". */ (0, import_i18n105.__)( "%1$s is greater than: %2$s" ), filter.name, activeElements[0].label ), filterTextWrappers ), filter(item, field, filterValue) { if (filterValue === void 0) { return true; } const fieldValue = field.getValue({ item }); return fieldValue > filterValue; }, selection: "single" }, { name: OPERATOR_LESS_THAN_OR_EQUAL, /* translators: DataViews operator name */ label: (0, import_i18n105.__)("Less than or equal"), filterText: (filter, activeElements) => (0, import_element92.createInterpolateElement)( (0, import_i18n105.sprintf)( /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is less than or equal to: 10". */ (0, import_i18n105.__)( "%1$s is less than or equal to: %2$s" ), filter.name, activeElements[0].label ), filterTextWrappers ), filter(item, field, filterValue) { if (filterValue === void 0) { return true; } const fieldValue = field.getValue({ item }); return fieldValue <= filterValue; }, selection: "single" }, { name: OPERATOR_GREATER_THAN_OR_EQUAL, /* translators: DataViews operator name */ label: (0, import_i18n105.__)("Greater than or equal"), filterText: (filter, activeElements) => (0, import_element92.createInterpolateElement)( (0, import_i18n105.sprintf)( /* translators: 1: Filter name (e.g. "Count"). 2: Filter value (e.g. "10"): "Count is greater than or equal to: 10". */ (0, import_i18n105.__)( "%1$s is greater than or equal to: %2$s" ), filter.name, activeElements[0].label ), filterTextWrappers ), filter(item, field, filterValue) { if (filterValue === void 0) { return true; } const fieldValue = field.getValue({ item }); return fieldValue >= filterValue; }, selection: "single" }, { name: OPERATOR_BEFORE2, /* translators: DataViews operator name */ label: (0, import_i18n105.__)("Before"), filterText: (filter, activeElements) => (0, import_element92.createInterpolateElement)( (0, import_i18n105.sprintf)( /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is before: 2024-01-01". */ (0, import_i18n105.__)("%1$s is before: %2$s"), filter.name, activeElements[0].label ), filterTextWrappers ), filter(item, field, filterValue) { if (filterValue === void 0) { return true; } const filterDate = (0, import_date2.getDate)(filterValue); const fieldDate = (0, import_date2.getDate)(field.getValue({ item })); return fieldDate < filterDate; }, selection: "single" }, { name: OPERATOR_AFTER2, /* translators: DataViews operator name */ label: (0, import_i18n105.__)("After"), filterText: (filter, activeElements) => (0, import_element92.createInterpolateElement)( (0, import_i18n105.sprintf)( /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is after: 2024-01-01". */ (0, import_i18n105.__)("%1$s is after: %2$s"), filter.name, activeElements[0].label ), filterTextWrappers ), filter(item, field, filterValue) { if (filterValue === void 0) { return true; } const filterDate = (0, import_date2.getDate)(filterValue); const fieldDate = (0, import_date2.getDate)(field.getValue({ item })); return fieldDate > filterDate; }, selection: "single" }, { name: OPERATOR_BEFORE_INC, /* translators: DataViews operator name */ label: (0, import_i18n105.__)("Before (inc)"), filterText: (filter, activeElements) => (0, import_element92.createInterpolateElement)( (0, import_i18n105.sprintf)( /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is on or before: 2024-01-01". */ (0, import_i18n105.__)( "%1$s is on or before: %2$s" ), filter.name, activeElements[0].label ), filterTextWrappers ), filter(item, field, filterValue) { if (filterValue === void 0) { return true; } const filterDate = (0, import_date2.getDate)(filterValue); const fieldDate = (0, import_date2.getDate)(field.getValue({ item })); return fieldDate <= filterDate; }, selection: "single" }, { name: OPERATOR_AFTER_INC, /* translators: DataViews operator name */ label: (0, import_i18n105.__)("After (inc)"), filterText: (filter, activeElements) => (0, import_element92.createInterpolateElement)( (0, import_i18n105.sprintf)( /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is on or after: 2024-01-01". */ (0, import_i18n105.__)( "%1$s is on or after: %2$s" ), filter.name, activeElements[0].label ), filterTextWrappers ), filter(item, field, filterValue) { if (filterValue === void 0) { return true; } const filterDate = (0, import_date2.getDate)(filterValue); const fieldDate = (0, import_date2.getDate)(field.getValue({ item })); return fieldDate >= filterDate; }, selection: "single" }, { name: OPERATOR_CONTAINS, /* translators: DataViews operator name */ label: (0, import_i18n105.__)("Contains"), filterText: (filter, activeElements) => (0, import_element92.createInterpolateElement)( (0, import_i18n105.sprintf)( /* translators: 1: Filter name (e.g. "Title"). 2: Filter value (e.g. "Hello"): "Title contains: Hello". */ (0, import_i18n105.__)("%1$s contains: %2$s"), filter.name, activeElements[0].label ), filterTextWrappers ), filter(item, field, filterValue) { if (filterValue === void 0) { return true; } const fieldValue = field.getValue({ item }); return typeof fieldValue === "string" && filterValue && fieldValue.toLowerCase().includes(String(filterValue).toLowerCase()); }, selection: "single" }, { name: OPERATOR_NOT_CONTAINS, /* translators: DataViews operator name */ label: (0, import_i18n105.__)("Doesn't contain"), filterText: (filter, activeElements) => (0, import_element92.createInterpolateElement)( (0, import_i18n105.sprintf)( /* translators: 1: Filter name (e.g. "Title"). 2: Filter value (e.g. "Hello"): "Title doesn't contain: Hello". */ (0, import_i18n105.__)( "%1$s doesn't contain: %2$s" ), filter.name, activeElements[0].label ), filterTextWrappers ), filter(item, field, filterValue) { if (filterValue === void 0) { return true; } const fieldValue = field.getValue({ item }); return typeof fieldValue === "string" && filterValue && !fieldValue.toLowerCase().includes(String(filterValue).toLowerCase()); }, selection: "single" }, { name: OPERATOR_STARTS_WITH, /* translators: DataViews operator name */ label: (0, import_i18n105.__)("Starts with"), filterText: (filter, activeElements) => (0, import_element92.createInterpolateElement)( (0, import_i18n105.sprintf)( /* translators: 1: Filter name (e.g. "Title"). 2: Filter value (e.g. "Hello"): "Title starts with: Hello". */ (0, import_i18n105.__)("%1$s starts with: %2$s"), filter.name, activeElements[0].label ), filterTextWrappers ), filter(item, field, filterValue) { if (filterValue === void 0) { return true; } const fieldValue = field.getValue({ item }); return typeof fieldValue === "string" && filterValue && fieldValue.toLowerCase().startsWith(String(filterValue).toLowerCase()); }, selection: "single" }, { name: OPERATOR_ON, /* translators: DataViews operator name */ label: (0, import_i18n105.__)("On"), filterText: (filter, activeElements) => (0, import_element92.createInterpolateElement)( (0, import_i18n105.sprintf)( /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is: 2024-01-01". */ (0, import_i18n105.__)("%1$s is: %2$s"), filter.name, activeElements[0].label ), filterTextWrappers ), filter(item, field, filterValue) { if (filterValue === void 0) { return true; } const filterDate = (0, import_date2.getDate)(filterValue); const fieldDate = (0, import_date2.getDate)(field.getValue({ item })); return filterDate.getTime() === fieldDate.getTime(); }, selection: "single" }, { name: OPERATOR_NOT_ON, /* translators: DataViews operator name */ label: (0, import_i18n105.__)("Not on"), filterText: (filter, activeElements) => (0, import_element92.createInterpolateElement)( (0, import_i18n105.sprintf)( /* translators: 1: Filter name (e.g. "Date"). 2: Filter value (e.g. "2024-01-01"): "Date is not: 2024-01-01". */ (0, import_i18n105.__)("%1$s is not: %2$s"), filter.name, activeElements[0].label ), filterTextWrappers ), filter(item, field, filterValue) { if (filterValue === void 0) { return true; } const filterDate = (0, import_date2.getDate)(filterValue); const fieldDate = (0, import_date2.getDate)(field.getValue({ item })); return filterDate.getTime() !== fieldDate.getTime(); }, selection: "single" } ]; var getOperatorByName = (name2) => OPERATORS.find((op) => op.name === name2); var getAllOperatorNames = () => OPERATORS.map((op) => op.name); var isSingleSelectionOperator = (name2) => OPERATORS.filter((op) => op.selection === "single").some( (op) => op.name === name2 ); var isRegisteredOperator = (name2) => OPERATORS.some((op) => op.name === name2); // packages/dataviews/build-module/components/dataviews-filters/filter.mjs var import_jsx_runtime217 = __toESM(require_jsx_runtime(), 1); var ENTER4 = "Enter"; var SPACE3 = " "; var FilterText = ({ activeElements, filterInView, filter }) => { if (activeElements === void 0 || activeElements.length === 0) { return filter.name; } const operator = getOperatorByName(filterInView?.operator); if (operator !== void 0) { return operator.filterText(filter, activeElements); } return (0, import_i18n106.sprintf)( /* translators: 1: Filter name e.g.: "Unknown status for Author". */ (0, import_i18n106.__)("Unknown status for %1$s"), filter.name ); }; function OperatorSelector({ filter, view, onChangeView }) { const operatorOptions = filter.operators?.map((operator) => ({ value: operator, label: getOperatorByName(operator)?.label || operator })); const currentFilter = view.filters?.find( (_filter) => _filter.field === filter.field ); const value = currentFilter?.operator || filter.operators[0]; return operatorOptions.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime217.jsxs)( Stack, { direction: "row", gap: "sm", justify: "flex-start", className: "dataviews-filters__summary-operators-container", align: "center", children: [ /* @__PURE__ */ (0, import_jsx_runtime217.jsx)(import_components111.FlexItem, { className: "dataviews-filters__summary-operators-filter-name", children: filter.name }), /* @__PURE__ */ (0, import_jsx_runtime217.jsx)( import_components111.SelectControl, { className: "dataviews-filters__summary-operators-filter-select", label: (0, import_i18n106.__)("Conditions"), value, options: operatorOptions, onChange: (newValue) => { const newOperator = newValue; const currentOperator = currentFilter?.operator; const newFilters = currentFilter ? [ ...(view.filters ?? []).map( (_filter) => { if (_filter.field === filter.field) { const currentOpSelectionModel = getOperatorByName( currentOperator )?.selection; const newOpSelectionModel = getOperatorByName( newOperator )?.selection; const shouldResetValue = currentOpSelectionModel !== newOpSelectionModel || [ currentOpSelectionModel, newOpSelectionModel ].includes("custom"); return { ..._filter, value: shouldResetValue ? void 0 : _filter.value, operator: newOperator }; } return _filter; } ) ] : [ ...view.filters ?? [], { field: filter.field, operator: newOperator, value: void 0 } ]; onChangeView({ ...view, page: 1, filters: newFilters }); }, size: "small", variant: "minimal", hideLabelFromVision: true } ) ] } ); } function Filter({ addFilterRef, openedFilter, fields, ...commonProps }) { const toggleRef = (0, import_element93.useRef)(null); const { filter, view, onChangeView } = commonProps; const filterInView = view.filters?.find( (f2) => f2.field === filter.field ); let activeElements = []; const field = (0, import_element93.useMemo)(() => { const currentField = fields.find((f2) => f2.id === filter.field); if (currentField) { return { ...currentField, // Configure getValue as if Item was a plain object. // See related input-widget.tsx getValue: ({ item }) => item[currentField.id] }; } return currentField; }, [fields, filter.field]); const { elements: elements2 } = useElements({ elements: filter.elements, getElements: filter.getElements }); if (elements2.length > 0) { activeElements = elements2.filter((element) => { if (filter.singleSelection) { return element.value === filterInView?.value; } return filterInView?.value?.includes(element.value); }); } else if (Array.isArray(filterInView?.value)) { const label = filterInView.value.map((v2) => { const formattedValue = field?.getValueFormatted({ item: { [field.id]: v2 }, field }); return formattedValue || String(v2); }); activeElements = [ { value: filterInView.value, // @ts-ignore label } ]; } else if (typeof filterInView?.value === "object") { activeElements = [ { value: filterInView.value, label: filterInView.value } ]; } else if (filterInView?.value !== void 0) { const label = field !== void 0 ? field.getValueFormatted({ item: { [field.id]: filterInView.value }, field }) : String(filterInView.value); activeElements = [ { value: filterInView.value, label } ]; } const isPrimary = filter.isPrimary; const isLocked = filterInView?.isLocked; const hasValues = !isLocked && filterInView?.value !== void 0; const canResetOrRemove = !isLocked && (!isPrimary || hasValues); return /* @__PURE__ */ (0, import_jsx_runtime217.jsx)( import_components111.Dropdown, { defaultOpen: openedFilter === filter.field, contentClassName: "dataviews-filters__summary-popover", popoverProps: { placement: "bottom-start", role: "dialog" }, onClose: () => { toggleRef.current?.focus(); }, renderToggle: ({ isOpen, onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime217.jsxs)("div", { className: "dataviews-filters__summary-chip-container", children: [ /* @__PURE__ */ (0, import_jsx_runtime217.jsx)( import_components111.Tooltip, { text: (0, import_i18n106.sprintf)( /* translators: 1: Filter name. */ (0, import_i18n106.__)("Filter by: %1$s"), filter.name.toLowerCase() ), placement: "top", children: /* @__PURE__ */ (0, import_jsx_runtime217.jsx)( "div", { className: clsx_default( "dataviews-filters__summary-chip", { "has-reset": canResetOrRemove, "has-values": hasValues, "is-not-clickable": isLocked } ), role: "button", tabIndex: isLocked ? -1 : 0, onClick: () => { if (!isLocked) { onToggle(); } }, onKeyDown: (event) => { if (!isLocked && [ENTER4, SPACE3].includes(event.key)) { onToggle(); event.preventDefault(); } }, "aria-disabled": isLocked, "aria-pressed": isOpen, "aria-expanded": isOpen, ref: toggleRef, children: /* @__PURE__ */ (0, import_jsx_runtime217.jsx)( FilterText, { activeElements, filterInView, filter } ) } ) } ), canResetOrRemove && /* @__PURE__ */ (0, import_jsx_runtime217.jsx)( import_components111.Tooltip, { text: isPrimary ? (0, import_i18n106.__)("Reset") : (0, import_i18n106.__)("Remove"), placement: "top", children: /* @__PURE__ */ (0, import_jsx_runtime217.jsx)( "button", { className: clsx_default( "dataviews-filters__summary-chip-remove", { "has-values": hasValues } ), onClick: () => { onChangeView({ ...view, page: 1, filters: view.filters?.filter( (_filter) => _filter.field !== filter.field ) }); if (!isPrimary) { addFilterRef.current?.focus(); } else { toggleRef.current?.focus(); } }, children: /* @__PURE__ */ (0, import_jsx_runtime217.jsx)(import_components111.Icon, { icon: close_small_default }) } ) } ) ] }), renderContent: () => { return /* @__PURE__ */ (0, import_jsx_runtime217.jsxs)(Stack, { direction: "column", justify: "flex-start", children: [ /* @__PURE__ */ (0, import_jsx_runtime217.jsx)(OperatorSelector, { ...commonProps }), commonProps.filter.hasElements ? /* @__PURE__ */ (0, import_jsx_runtime217.jsx)( SearchWidget, { ...commonProps, filter: { ...commonProps.filter, elements: elements2 } } ) : /* @__PURE__ */ (0, import_jsx_runtime217.jsx)(InputWidget, { ...commonProps, fields }) ] }); } } ); } // packages/dataviews/build-module/components/dataviews-filters/add-filter.mjs var import_components112 = __toESM(require_components(), 1); var import_i18n107 = __toESM(require_i18n(), 1); var import_element94 = __toESM(require_element(), 1); var import_jsx_runtime218 = __toESM(require_jsx_runtime(), 1); var { Menu: Menu8 } = unlock3(import_components112.privateApis); function AddFilterMenu({ filters, view, onChangeView, setOpenedFilter, triggerProps }) { const inactiveFilters = filters.filter((filter) => !filter.isVisible); return /* @__PURE__ */ (0, import_jsx_runtime218.jsxs)(Menu8, { children: [ /* @__PURE__ */ (0, import_jsx_runtime218.jsx)(Menu8.TriggerButton, { ...triggerProps }), /* @__PURE__ */ (0, import_jsx_runtime218.jsx)(Menu8.Popover, { children: inactiveFilters.map((filter) => { return /* @__PURE__ */ (0, import_jsx_runtime218.jsx)( Menu8.Item, { onClick: () => { setOpenedFilter(filter.field); onChangeView({ ...view, page: 1, filters: [ ...view.filters || [], { field: filter.field, value: void 0, operator: filter.operators[0] } ] }); }, children: /* @__PURE__ */ (0, import_jsx_runtime218.jsx)(Menu8.ItemLabel, { children: filter.name }) }, filter.field ); }) }) ] }); } function AddFilter({ filters, view, onChangeView, setOpenedFilter }, ref) { if (!filters.length || filters.every(({ isPrimary }) => isPrimary)) { return null; } const inactiveFilters = filters.filter((filter) => !filter.isVisible); return /* @__PURE__ */ (0, import_jsx_runtime218.jsx)( AddFilterMenu, { triggerProps: { render: /* @__PURE__ */ (0, import_jsx_runtime218.jsx)( import_components112.Button, { accessibleWhenDisabled: true, size: "compact", className: "dataviews-filters-button", variant: "tertiary", disabled: !inactiveFilters.length, ref } ), children: (0, import_i18n107.__)("Add filter") }, ...{ filters, view, onChangeView, setOpenedFilter } } ); } var add_filter_default = (0, import_element94.forwardRef)(AddFilter); // packages/dataviews/build-module/components/dataviews-filters/reset-filters.mjs var import_components113 = __toESM(require_components(), 1); var import_i18n108 = __toESM(require_i18n(), 1); var import_jsx_runtime219 = __toESM(require_jsx_runtime(), 1); function ResetFilter({ filters, view, onChangeView }) { const isPrimary = (field) => filters.some( (_filter) => _filter.field === field && _filter.isPrimary ); const isDisabled = !view.search && !view.filters?.some( (_filter) => !_filter.isLocked && (_filter.value !== void 0 || !isPrimary(_filter.field)) ); return /* @__PURE__ */ (0, import_jsx_runtime219.jsx)( import_components113.Button, { disabled: isDisabled, accessibleWhenDisabled: true, size: "compact", variant: "tertiary", className: "dataviews-filters__reset-button", onClick: () => { onChangeView({ ...view, page: 1, search: "", filters: view.filters?.filter((f2) => !!f2.isLocked) || [] }); }, children: (0, import_i18n108.__)("Reset") } ); } // packages/dataviews/build-module/components/dataviews-filters/use-filters.mjs var import_element95 = __toESM(require_element(), 1); function useFilters(fields, view) { return (0, import_element95.useMemo)(() => { const filters = []; fields.forEach((field) => { if (field.filterBy === false || !field.hasElements && !field.Edit) { return; } const operators = field.filterBy.operators; const isPrimary = !!field.filterBy?.isPrimary; const isLocked = view.filters?.some( (f2) => f2.field === field.id && !!f2.isLocked ) ?? false; filters.push({ field: field.id, name: field.label, elements: field.elements, getElements: field.getElements, hasElements: field.hasElements, singleSelection: operators.some( (op) => isSingleSelectionOperator(op) ), operators, isVisible: isLocked || isPrimary || !!view.filters?.some( (f2) => f2.field === field.id && isRegisteredOperator(f2.operator) ), isPrimary, isLocked }); }); filters.sort((a2, b2) => { if (a2.isLocked && !b2.isLocked) { return -1; } if (!a2.isLocked && b2.isLocked) { return 1; } if (a2.isPrimary && !b2.isPrimary) { return -1; } if (!a2.isPrimary && b2.isPrimary) { return 1; } return a2.name.localeCompare(b2.name); }); return filters; }, [fields, view]); } var use_filters_default = useFilters; // packages/dataviews/build-module/components/dataviews-filters/filters.mjs var import_jsx_runtime220 = __toESM(require_jsx_runtime(), 1); function Filters({ className }) { const { fields, view, onChangeView, openedFilter, setOpenedFilter } = (0, import_element96.useContext)(dataviews_context_default); const addFilterRef = (0, import_element96.useRef)(null); const filters = use_filters_default(fields, view); const addFilter = /* @__PURE__ */ (0, import_jsx_runtime220.jsx)( add_filter_default, { filters, view, onChangeView, ref: addFilterRef, setOpenedFilter }, "add-filter" ); const visibleFilters = filters.filter((filter) => filter.isVisible); if (visibleFilters.length === 0) { return null; } const filterComponents = [ ...visibleFilters.map((filter) => { return /* @__PURE__ */ (0, import_jsx_runtime220.jsx)( Filter, { filter, view, fields, onChangeView, addFilterRef, openedFilter }, filter.field ); }), addFilter ]; filterComponents.push( /* @__PURE__ */ (0, import_jsx_runtime220.jsx)( ResetFilter, { filters, view, onChangeView }, "reset-filters" ) ); return /* @__PURE__ */ (0, import_jsx_runtime220.jsx)( Stack, { direction: "row", justify: "flex-start", gap: "sm", style: { width: "fit-content" }, wrap: "wrap", className, children: filterComponents } ); } var filters_default = (0, import_element96.memo)(Filters); // packages/dataviews/build-module/components/dataviews-filters/toggle.mjs var import_element97 = __toESM(require_element(), 1); var import_components114 = __toESM(require_components(), 1); var import_i18n109 = __toESM(require_i18n(), 1); var import_jsx_runtime221 = __toESM(require_jsx_runtime(), 1); function FiltersToggle() { const { filters, view, onChangeView, setOpenedFilter, isShowingFilter, setIsShowingFilter } = (0, import_element97.useContext)(dataviews_context_default); const buttonRef = (0, import_element97.useRef)(null); const onChangeViewWithFilterVisibility = (0, import_element97.useCallback)( (_view) => { onChangeView(_view); setIsShowingFilter(true); }, [onChangeView, setIsShowingFilter] ); if (filters.length === 0) { return null; } const hasVisibleFilters = filters.some((filter) => filter.isVisible); const addFilterButtonProps = { label: (0, import_i18n109.__)("Add filter"), "aria-expanded": false, isPressed: false }; const toggleFiltersButtonProps = { label: (0, import_i18n109._x)("Filter", "verb"), "aria-expanded": isShowingFilter, isPressed: isShowingFilter, onClick: () => { if (!isShowingFilter) { setOpenedFilter(null); } setIsShowingFilter(!isShowingFilter); } }; const hasPrimaryOrLockedFilters = filters.some( (filter) => filter.isPrimary || filter.isLocked ); const buttonComponent = /* @__PURE__ */ (0, import_jsx_runtime221.jsx)( import_components114.Button, { ref: buttonRef, className: "dataviews-filters__visibility-toggle", size: "compact", icon: funnel_default, disabled: hasPrimaryOrLockedFilters, accessibleWhenDisabled: true, ...hasVisibleFilters ? toggleFiltersButtonProps : addFilterButtonProps } ); return /* @__PURE__ */ (0, import_jsx_runtime221.jsx)("div", { className: "dataviews-filters__container-visibility-toggle", children: !hasVisibleFilters ? /* @__PURE__ */ (0, import_jsx_runtime221.jsx)( AddFilterMenu, { filters, view, onChangeView: onChangeViewWithFilterVisibility, setOpenedFilter, triggerProps: { render: buttonComponent } } ) : /* @__PURE__ */ (0, import_jsx_runtime221.jsx)( FilterVisibilityToggle, { buttonRef, filtersCount: view.filters?.length, children: buttonComponent } ) }); } function FilterVisibilityToggle({ buttonRef, filtersCount, children }) { (0, import_element97.useEffect)( () => () => { buttonRef.current?.focus(); }, [buttonRef] ); return /* @__PURE__ */ (0, import_jsx_runtime221.jsxs)(import_jsx_runtime221.Fragment, { children: [ children, !!filtersCount && /* @__PURE__ */ (0, import_jsx_runtime221.jsx)("span", { className: "dataviews-filters-toggle__count", children: filtersCount }) ] }); } var toggle_default = FiltersToggle; // packages/dataviews/build-module/components/dataviews-filters/filters-toggled.mjs var import_element98 = __toESM(require_element(), 1); var import_jsx_runtime222 = __toESM(require_jsx_runtime(), 1); function FiltersToggled(props) { const { isShowingFilter } = (0, import_element98.useContext)(dataviews_context_default); if (!isShowingFilter) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime222.jsx)(filters_default, { ...props }); } var filters_toggled_default = FiltersToggled; // packages/dataviews/build-module/components/dataviews-layout/index.mjs var import_element99 = __toESM(require_element(), 1); var import_components115 = __toESM(require_components(), 1); var import_i18n110 = __toESM(require_i18n(), 1); var import_jsx_runtime223 = __toESM(require_jsx_runtime(), 1); function DataViewsLayout({ className }) { const { actions = [], data, fields, getItemId: getItemId2, getItemLevel: getItemLevel2, hasInitiallyLoaded, isLoading, view, onChangeView, selection, onChangeSelection, setOpenedFilter, onClickItem, isItemClickable, renderItemLink, defaultLayouts: defaultLayouts4, empty = /* @__PURE__ */ (0, import_jsx_runtime223.jsx)("p", { children: (0, import_i18n110.__)("No results") }) } = (0, import_element99.useContext)(dataviews_context_default); const isDelayedInitialLoading = useDelayedLoading(!hasInitiallyLoaded, { delay: 200 }); if (!hasInitiallyLoaded) { if (!isDelayedInitialLoading) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime223.jsx)("div", { className: "dataviews-loading", children: /* @__PURE__ */ (0, import_jsx_runtime223.jsx)("p", { children: /* @__PURE__ */ (0, import_jsx_runtime223.jsx)(import_components115.Spinner, {}) }) }); } const ViewComponent = VIEW_LAYOUTS.find( (v2) => v2.type === view.type && defaultLayouts4[v2.type] )?.component; return /* @__PURE__ */ (0, import_jsx_runtime223.jsx)( ViewComponent, { className, actions, data, fields, getItemId: getItemId2, getItemLevel: getItemLevel2, isLoading, onChangeView, onChangeSelection, selection, setOpenedFilter, onClickItem, renderItemLink, isItemClickable, view, empty } ); } // packages/dataviews/build-module/components/dataviews-footer/index.mjs var import_element100 = __toESM(require_element(), 1); var import_jsx_runtime224 = __toESM(require_jsx_runtime(), 1); var EMPTY_ARRAY8 = []; function DataViewsFooter() { const { view, paginationInfo: { totalItems = 0, totalPages }, data, actions = EMPTY_ARRAY8, isLoading, hasInitiallyLoaded, hasInfiniteScrollHandler } = (0, import_element100.useContext)(dataviews_context_default); const isRefreshing = !!isLoading && hasInitiallyLoaded && !hasInfiniteScrollHandler && !!data?.length; const isDelayedRefreshing = useDelayedLoading(!!isRefreshing); const hasBulkActions = useSomeItemHasAPossibleBulkAction(actions, data) && [LAYOUT_TABLE2, LAYOUT_GRID2].includes(view.type); if (!isRefreshing && (!totalItems || !totalPages || totalPages <= 1 && !hasBulkActions)) { return null; } return (!!totalItems || isRefreshing) && /* @__PURE__ */ (0, import_jsx_runtime224.jsx)( "div", { className: "dataviews-footer", inert: isRefreshing ? "true" : void 0, children: /* @__PURE__ */ (0, import_jsx_runtime224.jsxs)( Stack, { direction: "row", justify: "end", align: "center", className: clsx_default("dataviews-footer__content", { "is-refreshing": isDelayedRefreshing }), gap: "sm", children: [ hasBulkActions && /* @__PURE__ */ (0, import_jsx_runtime224.jsx)(BulkActionsFooter, {}), /* @__PURE__ */ (0, import_jsx_runtime224.jsx)(dataviews_pagination_default, {}) ] } ) } ); } // packages/dataviews/build-module/components/dataviews-search/index.mjs var import_i18n111 = __toESM(require_i18n(), 1); var import_element101 = __toESM(require_element(), 1); var import_components116 = __toESM(require_components(), 1); var import_compose21 = __toESM(require_compose(), 1); var import_jsx_runtime225 = __toESM(require_jsx_runtime(), 1); var DataViewsSearch = (0, import_element101.memo)(function Search({ label }) { const { view, onChangeView } = (0, import_element101.useContext)(dataviews_context_default); const [search, setSearch, debouncedSearch] = (0, import_compose21.useDebouncedInput)( view.search ); (0, import_element101.useEffect)(() => { setSearch(view.search ?? ""); }, [view.search, setSearch]); const onChangeViewRef = (0, import_element101.useRef)(onChangeView); const viewRef = (0, import_element101.useRef)(view); (0, import_element101.useEffect)(() => { onChangeViewRef.current = onChangeView; viewRef.current = view; }, [onChangeView, view]); (0, import_element101.useEffect)(() => { if (debouncedSearch !== viewRef.current?.search) { onChangeViewRef.current({ ...viewRef.current, page: 1, search: debouncedSearch }); } }, [debouncedSearch]); const searchLabel = label || (0, import_i18n111.__)("Search"); return /* @__PURE__ */ (0, import_jsx_runtime225.jsx)( import_components116.SearchControl, { className: "dataviews-search", onChange: setSearch, value: search, label: searchLabel, placeholder: searchLabel, size: "compact" } ); }); var dataviews_search_default = DataViewsSearch; // packages/dataviews/build-module/components/dataviews-view-config/index.mjs var import_components118 = __toESM(require_components(), 1); var import_i18n113 = __toESM(require_i18n(), 1); var import_element103 = __toESM(require_element(), 1); var import_warning = __toESM(require_warning(), 1); var import_compose22 = __toESM(require_compose(), 1); // packages/dataviews/build-module/components/dataviews-view-config/infinite-scroll-toggle.mjs var import_components117 = __toESM(require_components(), 1); var import_i18n112 = __toESM(require_i18n(), 1); var import_element102 = __toESM(require_element(), 1); var import_jsx_runtime226 = __toESM(require_jsx_runtime(), 1); function InfiniteScrollToggle() { const context = (0, import_element102.useContext)(dataviews_context_default); const { view, onChangeView } = context; const infiniteScrollEnabled = view.infiniteScrollEnabled ?? false; if (!context.hasInfiniteScrollHandler) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime226.jsx)( import_components117.ToggleControl, { label: (0, import_i18n112.__)("Enable infinite scroll"), help: (0, import_i18n112.__)( "Automatically load more content as you scroll, instead of showing pagination links." ), checked: infiniteScrollEnabled, onChange: (newValue) => { onChangeView({ ...view, infiniteScrollEnabled: newValue }); } } ); } // packages/dataviews/build-module/components/dataviews-view-config/index.mjs var import_jsx_runtime227 = __toESM(require_jsx_runtime(), 1); var { Menu: Menu9 } = unlock3(import_components118.privateApis); var DATAVIEWS_CONFIG_POPOVER_PROPS = { className: "dataviews-config__popover", placement: "bottom-end", offset: 9 }; function ViewTypeMenu() { const { view, onChangeView, defaultLayouts: defaultLayouts4 } = (0, import_element103.useContext)(dataviews_context_default); const availableLayouts = Object.keys(defaultLayouts4); if (availableLayouts.length <= 1) { return null; } const activeView = VIEW_LAYOUTS.find((v2) => view.type === v2.type); return /* @__PURE__ */ (0, import_jsx_runtime227.jsxs)(Menu9, { children: [ /* @__PURE__ */ (0, import_jsx_runtime227.jsx)( Menu9.TriggerButton, { render: /* @__PURE__ */ (0, import_jsx_runtime227.jsx)( import_components118.Button, { size: "compact", icon: activeView?.icon, label: (0, import_i18n113.__)("Layout") } ) } ), /* @__PURE__ */ (0, import_jsx_runtime227.jsx)(Menu9.Popover, { children: availableLayouts.map((layout) => { const config2 = VIEW_LAYOUTS.find( (v2) => v2.type === layout ); if (!config2) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime227.jsx)( Menu9.RadioItem, { value: layout, name: "view-actions-available-view", checked: layout === view.type, hideOnClick: true, onChange: (e2) => { switch (e2.target.value) { case "list": case "grid": case "table": case "pickerGrid": case "pickerTable": case "activity": const viewWithoutLayout = { ...view }; if ("layout" in viewWithoutLayout) { delete viewWithoutLayout.layout; } return onChangeView({ ...viewWithoutLayout, type: e2.target.value, ...defaultLayouts4[e2.target.value] }); } (0, import_warning.default)("Invalid dataview"); }, children: /* @__PURE__ */ (0, import_jsx_runtime227.jsx)(Menu9.ItemLabel, { children: config2.label }) }, layout ); }) }) ] }); } function SortFieldControl() { const { view, fields, onChangeView } = (0, import_element103.useContext)(dataviews_context_default); const orderOptions = (0, import_element103.useMemo)(() => { const sortableFields = fields.filter( (field) => field.enableSorting !== false ); return sortableFields.map((field) => { return { label: field.label, value: field.id }; }); }, [fields]); return /* @__PURE__ */ (0, import_jsx_runtime227.jsx)( import_components118.SelectControl, { __next40pxDefaultSize: true, label: (0, import_i18n113.__)("Sort by"), value: view.sort?.field, options: orderOptions, onChange: (value) => { onChangeView({ ...view, sort: { direction: view?.sort?.direction || "desc", field: value }, showLevels: false }); } } ); } function SortDirectionControl() { const { view, fields, onChangeView } = (0, import_element103.useContext)(dataviews_context_default); const sortableFields = fields.filter( (field) => field.enableSorting !== false ); if (sortableFields.length === 0) { return null; } let value = view.sort?.direction; if (!value && view.sort?.field) { value = "desc"; } return /* @__PURE__ */ (0, import_jsx_runtime227.jsx)( import_components118.__experimentalToggleGroupControl, { className: "dataviews-view-config__sort-direction", __next40pxDefaultSize: true, isBlock: true, label: (0, import_i18n113.__)("Order"), value, onChange: (newDirection) => { if (newDirection === "asc" || newDirection === "desc") { onChangeView({ ...view, sort: { direction: newDirection, field: view.sort?.field || // If there is no field assigned as the sorting field assign the first sortable field. fields.find( (field) => field.enableSorting !== false )?.id || "" }, showLevels: false }); return; } (0, import_warning.default)("Invalid direction"); }, children: SORTING_DIRECTIONS.map((direction) => { return /* @__PURE__ */ (0, import_jsx_runtime227.jsx)( import_components118.__experimentalToggleGroupControlOptionIcon, { value: direction, icon: sortIcons[direction], label: sortLabels[direction] }, direction ); }) } ); } function ItemsPerPageControl() { const { view, config: config2, onChangeView } = (0, import_element103.useContext)(dataviews_context_default); const { infiniteScrollEnabled } = view; if (!config2 || !config2.perPageSizes || config2.perPageSizes.length < 2 || config2.perPageSizes.length > 6 || infiniteScrollEnabled) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime227.jsx)( import_components118.__experimentalToggleGroupControl, { __next40pxDefaultSize: true, isBlock: true, label: (0, import_i18n113.__)("Items per page"), value: view.perPage || 10, disabled: !view?.sort?.field, onChange: (newItemsPerPage) => { const newItemsPerPageNumber = typeof newItemsPerPage === "number" || newItemsPerPage === void 0 ? newItemsPerPage : parseInt(newItemsPerPage, 10); onChangeView({ ...view, perPage: newItemsPerPageNumber, page: 1 }); }, children: config2.perPageSizes.map((value) => { return /* @__PURE__ */ (0, import_jsx_runtime227.jsx)( import_components118.__experimentalToggleGroupControlOption, { value, label: value.toString() }, value ); }) } ); } function ResetViewButton() { const { onReset } = (0, import_element103.useContext)(dataviews_context_default); if (onReset === void 0) { return null; } const isDisabled = onReset === false; return /* @__PURE__ */ (0, import_jsx_runtime227.jsx)( import_components118.Button, { variant: "tertiary", size: "compact", disabled: isDisabled, accessibleWhenDisabled: true, className: "dataviews-view-config__reset-button", onClick: () => { if (typeof onReset === "function") { onReset(); } }, children: (0, import_i18n113.__)("Reset view") } ); } function DataviewsViewConfigDropdown() { const { view, onReset } = (0, import_element103.useContext)(dataviews_context_default); const popoverId = (0, import_compose22.useInstanceId)( _DataViewsViewConfig, "dataviews-view-config-dropdown" ); const activeLayout = VIEW_LAYOUTS.find( (layout) => layout.type === view.type ); const isModified = typeof onReset === "function"; return /* @__PURE__ */ (0, import_jsx_runtime227.jsx)( import_components118.Dropdown, { expandOnMobile: true, popoverProps: { ...DATAVIEWS_CONFIG_POPOVER_PROPS, id: popoverId }, renderToggle: ({ onToggle, isOpen }) => { return /* @__PURE__ */ (0, import_jsx_runtime227.jsxs)("div", { className: "dataviews-view-config__toggle-wrapper", children: [ /* @__PURE__ */ (0, import_jsx_runtime227.jsx)( import_components118.Button, { size: "compact", icon: cog_default, label: (0, import_i18n113._x)( "View options", "View is used as a noun" ), onClick: onToggle, "aria-expanded": isOpen ? "true" : "false", "aria-controls": popoverId } ), isModified && /* @__PURE__ */ (0, import_jsx_runtime227.jsx)("span", { className: "dataviews-view-config__modified-indicator" }) ] }); }, renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime227.jsx)( import_components118.__experimentalDropdownContentWrapper, { paddingSize: "medium", className: "dataviews-config__popover-content-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime227.jsxs)( Stack, { direction: "column", className: "dataviews-view-config", gap: "xl", children: [ /* @__PURE__ */ (0, import_jsx_runtime227.jsxs)( Stack, { direction: "row", justify: "space-between", align: "center", className: "dataviews-view-config__header", children: [ /* @__PURE__ */ (0, import_jsx_runtime227.jsx)( import_components118.__experimentalHeading, { level: 2, className: "dataviews-settings-section__title", children: (0, import_i18n113.__)("Appearance") } ), /* @__PURE__ */ (0, import_jsx_runtime227.jsx)(ResetViewButton, {}) ] } ), /* @__PURE__ */ (0, import_jsx_runtime227.jsxs)(Stack, { direction: "column", gap: "lg", children: [ /* @__PURE__ */ (0, import_jsx_runtime227.jsxs)( Stack, { direction: "row", gap: "sm", className: "dataviews-view-config__sort-controls", children: [ /* @__PURE__ */ (0, import_jsx_runtime227.jsx)(SortFieldControl, {}), /* @__PURE__ */ (0, import_jsx_runtime227.jsx)(SortDirectionControl, {}) ] } ), !!activeLayout?.viewConfigOptions && /* @__PURE__ */ (0, import_jsx_runtime227.jsx)(activeLayout.viewConfigOptions, {}), /* @__PURE__ */ (0, import_jsx_runtime227.jsx)(InfiniteScrollToggle, {}), /* @__PURE__ */ (0, import_jsx_runtime227.jsx)(ItemsPerPageControl, {}), /* @__PURE__ */ (0, import_jsx_runtime227.jsx)(PropertiesSection, {}) ] }) ] } ) } ) } ); } function _DataViewsViewConfig() { return /* @__PURE__ */ (0, import_jsx_runtime227.jsxs)(import_jsx_runtime227.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime227.jsx)(ViewTypeMenu, {}), /* @__PURE__ */ (0, import_jsx_runtime227.jsx)(DataviewsViewConfigDropdown, {}) ] }); } var DataViewsViewConfig = (0, import_element103.memo)(_DataViewsViewConfig); var dataviews_view_config_default = DataViewsViewConfig; // packages/dataviews/build-module/components/dataform-controls/checkbox.mjs var import_components119 = __toESM(require_components(), 1); var import_element104 = __toESM(require_element(), 1); // packages/dataviews/build-module/components/dataform-controls/utils/get-custom-validity.mjs function getCustomValidity(isValid2, validity) { let customValidity; if (isValid2?.required && validity?.required) { customValidity = validity?.required?.message ? validity.required : void 0; } else if (isValid2?.pattern && validity?.pattern) { customValidity = validity.pattern; } else if (isValid2?.min && validity?.min) { customValidity = validity.min; } else if (isValid2?.max && validity?.max) { customValidity = validity.max; } else if (isValid2?.minLength && validity?.minLength) { customValidity = validity.minLength; } else if (isValid2?.maxLength && validity?.maxLength) { customValidity = validity.maxLength; } else if (isValid2?.elements && validity?.elements) { customValidity = validity.elements; } else if (validity?.custom) { customValidity = validity.custom; } return customValidity; } // packages/dataviews/build-module/components/dataform-controls/checkbox.mjs var import_jsx_runtime228 = __toESM(require_jsx_runtime(), 1); var { ValidatedCheckboxControl } = unlock3(import_components119.privateApis); function Checkbox({ field, onChange, data, hideLabelFromVision, markWhenOptional, validity }) { const { getValue, setValue, label, description, isValid: isValid2 } = field; const onChangeControl = (0, import_element104.useCallback)(() => { onChange( setValue({ item: data, value: !getValue({ item: data }) }) ); }, [data, getValue, onChange, setValue]); return /* @__PURE__ */ (0, import_jsx_runtime228.jsx)( ValidatedCheckboxControl, { required: !!field.isValid?.required, markWhenOptional, customValidity: getCustomValidity(isValid2, validity), hidden: hideLabelFromVision, label, help: description, checked: getValue({ item: data }), onChange: onChangeControl } ); } // packages/dataviews/build-module/components/dataform-controls/combobox.mjs var import_components120 = __toESM(require_components(), 1); var import_element105 = __toESM(require_element(), 1); var import_jsx_runtime229 = __toESM(require_jsx_runtime(), 1); var { ValidatedComboboxControl } = unlock3(import_components120.privateApis); function Combobox3({ data, field, onChange, hideLabelFromVision, validity }) { const { label, description, placeholder, getValue, setValue, isValid: isValid2 } = field; const value = getValue({ item: data }) ?? ""; const onChangeControl = (0, import_element105.useCallback)( (newValue) => onChange(setValue({ item: data, value: newValue ?? "" })), [data, onChange, setValue] ); const { elements: elements2, isLoading } = useElements({ elements: field.elements, getElements: field.getElements }); if (isLoading) { return /* @__PURE__ */ (0, import_jsx_runtime229.jsx)(import_components120.Spinner, {}); } return /* @__PURE__ */ (0, import_jsx_runtime229.jsx)( ValidatedComboboxControl, { required: !!field.isValid?.required, customValidity: getCustomValidity(isValid2, validity), label, value, help: description, placeholder, options: elements2, onChange: onChangeControl, hideLabelFromVision, allowReset: true, expandOnFocus: true } ); } // packages/dataviews/build-module/components/dataform-controls/datetime.mjs var import_components122 = __toESM(require_components(), 1); var import_element107 = __toESM(require_element(), 1); var import_i18n115 = __toESM(require_i18n(), 1); var import_date4 = __toESM(require_date(), 1); // packages/dataviews/build-module/components/dataform-controls/utils/relative-date-control.mjs var import_components121 = __toESM(require_components(), 1); var import_element106 = __toESM(require_element(), 1); var import_i18n114 = __toESM(require_i18n(), 1); var import_jsx_runtime230 = __toESM(require_jsx_runtime(), 1); var TIME_UNITS_OPTIONS = { [OPERATOR_IN_THE_PAST]: [ { value: "days", label: (0, import_i18n114.__)("Days") }, { value: "weeks", label: (0, import_i18n114.__)("Weeks") }, { value: "months", label: (0, import_i18n114.__)("Months") }, { value: "years", label: (0, import_i18n114.__)("Years") } ], [OPERATOR_OVER]: [ { value: "days", label: (0, import_i18n114.__)("Days ago") }, { value: "weeks", label: (0, import_i18n114.__)("Weeks ago") }, { value: "months", label: (0, import_i18n114.__)("Months ago") }, { value: "years", label: (0, import_i18n114.__)("Years ago") } ] }; function RelativeDateControl({ className, data, field, onChange, hideLabelFromVision, operator }) { const options = TIME_UNITS_OPTIONS[operator === OPERATOR_IN_THE_PAST ? "inThePast" : "over"]; const { id, label, getValue, setValue } = field; const fieldValue = getValue({ item: data }); const { value: relValue = "", unit = options[0].value } = fieldValue && typeof fieldValue === "object" ? fieldValue : {}; const onChangeValue = (0, import_element106.useCallback)( (newValue) => onChange( setValue({ item: data, value: { value: Number(newValue), unit } }) ), [onChange, setValue, data, unit] ); const onChangeUnit = (0, import_element106.useCallback)( (newUnit) => onChange( setValue({ item: data, value: { value: relValue, unit: newUnit } }) ), [onChange, setValue, data, relValue] ); return /* @__PURE__ */ (0, import_jsx_runtime230.jsx)( import_components121.BaseControl, { id, className: clsx_default(className, "dataviews-controls__relative-date"), label, hideLabelFromVision, children: /* @__PURE__ */ (0, import_jsx_runtime230.jsxs)(Stack, { direction: "row", gap: "sm", children: [ /* @__PURE__ */ (0, import_jsx_runtime230.jsx)( import_components121.__experimentalNumberControl, { __next40pxDefaultSize: true, className: "dataviews-controls__relative-date-number", spinControls: "none", min: 1, step: 1, value: relValue, onChange: onChangeValue } ), /* @__PURE__ */ (0, import_jsx_runtime230.jsx)( import_components121.SelectControl, { className: "dataviews-controls__relative-date-unit", __next40pxDefaultSize: true, label: (0, import_i18n114.__)("Unit"), value: unit, options, onChange: onChangeUnit, hideLabelFromVision: true } ) ] }) } ); } // packages/dataviews/build-module/field-types/utils/parse-date-time.mjs var import_date3 = __toESM(require_date(), 1); function parseDateTime(dateTimeString) { if (!dateTimeString) { return null; } const parsed = (0, import_date3.getDate)(dateTimeString); return parsed && isValid(parsed) ? parsed : null; } // packages/dataviews/build-module/components/dataform-controls/datetime.mjs var import_jsx_runtime231 = __toESM(require_jsx_runtime(), 1); var { DateCalendar, ValidatedInputControl } = unlock3(import_components122.privateApis); var formatDateTime = (value) => { if (!value) { return ""; } return (0, import_date4.dateI18n)("Y-m-d\\TH:i", (0, import_date4.getDate)(value)); }; function CalendarDateTimeControl({ data, field, onChange, hideLabelFromVision, markWhenOptional, validity }) { const { id, label, description, setValue, getValue, isValid: isValid2 } = field; const fieldValue = getValue({ item: data }); const value = typeof fieldValue === "string" ? fieldValue : void 0; const [calendarMonth, setCalendarMonth] = (0, import_element107.useState)(() => { const parsedDate = parseDateTime(value); return parsedDate || /* @__PURE__ */ new Date(); }); const inputControlRef = (0, import_element107.useRef)(null); const validationTimeoutRef = (0, import_element107.useRef)(void 0); const previousFocusRef = (0, import_element107.useRef)(null); const onChangeCallback = (0, import_element107.useCallback)( (newValue) => onChange(setValue({ item: data, value: newValue })), [data, onChange, setValue] ); (0, import_element107.useEffect)(() => { return () => { if (validationTimeoutRef.current) { clearTimeout(validationTimeoutRef.current); } }; }, []); const onSelectDate = (0, import_element107.useCallback)( (newDate) => { let dateTimeValue; if (newDate) { const wpDate = (0, import_date4.dateI18n)("Y-m-d", newDate); let wpTime; if (value) { wpTime = (0, import_date4.dateI18n)("H:i", (0, import_date4.getDate)(value)); } else { wpTime = (0, import_date4.dateI18n)("H:i", newDate); } const finalDateTime = (0, import_date4.getDate)(`${wpDate}T${wpTime}`); dateTimeValue = finalDateTime.toISOString(); onChangeCallback(dateTimeValue); if (validationTimeoutRef.current) { clearTimeout(validationTimeoutRef.current); } } else { onChangeCallback(void 0); } previousFocusRef.current = inputControlRef.current && inputControlRef.current.ownerDocument.activeElement; validationTimeoutRef.current = setTimeout(() => { if (inputControlRef.current) { inputControlRef.current.focus(); inputControlRef.current.blur(); onChangeCallback(dateTimeValue); if (previousFocusRef.current && previousFocusRef.current instanceof HTMLElement) { previousFocusRef.current.focus(); } } }, 0); }, [onChangeCallback, value] ); const handleManualDateTimeChange = (0, import_element107.useCallback)( (newValue) => { if (newValue) { const dateTime = (0, import_date4.getDate)(newValue); onChangeCallback(dateTime.toISOString()); const parsedDate = parseDateTime(dateTime.toISOString()); if (parsedDate) { setCalendarMonth(parsedDate); } } else { onChangeCallback(void 0); } }, [onChangeCallback] ); const { format: fieldFormat } = field; const weekStartsOn = fieldFormat.weekStartsOn ?? (0, import_date4.getSettings)().l10n.startOfWeek; const { timezone: { string: timezoneString } } = (0, import_date4.getSettings)(); let displayLabel = label; if (isValid2?.required && !markWhenOptional && !hideLabelFromVision) { displayLabel = `${label} (${(0, import_i18n115.__)("Required")})`; } else if (!isValid2?.required && markWhenOptional && !hideLabelFromVision) { displayLabel = `${label} (${(0, import_i18n115.__)("Optional")})`; } return /* @__PURE__ */ (0, import_jsx_runtime231.jsx)( import_components122.BaseControl, { id, label: displayLabel, help: description, hideLabelFromVision, children: /* @__PURE__ */ (0, import_jsx_runtime231.jsxs)(Stack, { direction: "column", gap: "lg", children: [ /* @__PURE__ */ (0, import_jsx_runtime231.jsx)( DateCalendar, { style: { width: "100%" }, selected: value ? parseDateTime(value) || void 0 : void 0, onSelect: onSelectDate, month: calendarMonth, onMonthChange: setCalendarMonth, timeZone: timezoneString || void 0, weekStartsOn } ), /* @__PURE__ */ (0, import_jsx_runtime231.jsx)( ValidatedInputControl, { ref: inputControlRef, __next40pxDefaultSize: true, required: !!isValid2?.required, customValidity: getCustomValidity(isValid2, validity), type: "datetime-local", label: (0, import_i18n115.__)("Date time"), hideLabelFromVision: true, value: formatDateTime(value), onChange: handleManualDateTimeChange } ) ] }) } ); } function DateTime({ data, field, onChange, hideLabelFromVision, markWhenOptional, operator, validity }) { if (operator === OPERATOR_IN_THE_PAST || operator === OPERATOR_OVER) { return /* @__PURE__ */ (0, import_jsx_runtime231.jsx)( RelativeDateControl, { className: "dataviews-controls__datetime", data, field, onChange, hideLabelFromVision, operator } ); } return /* @__PURE__ */ (0, import_jsx_runtime231.jsx)( CalendarDateTimeControl, { data, field, onChange, hideLabelFromVision, markWhenOptional, validity } ); } // packages/dataviews/build-module/components/dataform-controls/date.mjs var import_components123 = __toESM(require_components(), 1); var import_element108 = __toESM(require_element(), 1); var import_i18n116 = __toESM(require_i18n(), 1); var import_date5 = __toESM(require_date(), 1); var import_jsx_runtime232 = __toESM(require_jsx_runtime(), 1); var { DateCalendar: DateCalendar2, DateRangeCalendar } = unlock3(import_components123.privateApis); var DATE_PRESETS = [ { id: "today", label: (0, import_i18n116.__)("Today"), getValue: () => (0, import_date5.getDate)(null) }, { id: "yesterday", label: (0, import_i18n116.__)("Yesterday"), getValue: () => { const today = (0, import_date5.getDate)(null); return subDays(today, 1); } }, { id: "past-week", label: (0, import_i18n116.__)("Past week"), getValue: () => { const today = (0, import_date5.getDate)(null); return subDays(today, 7); } }, { id: "past-month", label: (0, import_i18n116.__)("Past month"), getValue: () => { const today = (0, import_date5.getDate)(null); return subMonths(today, 1); } } ]; var DATE_RANGE_PRESETS = [ { id: "last-7-days", label: (0, import_i18n116.__)("Last 7 days"), getValue: () => { const today = (0, import_date5.getDate)(null); return [subDays(today, 7), today]; } }, { id: "last-30-days", label: (0, import_i18n116.__)("Last 30 days"), getValue: () => { const today = (0, import_date5.getDate)(null); return [subDays(today, 30), today]; } }, { id: "month-to-date", label: (0, import_i18n116.__)("Month to date"), getValue: () => { const today = (0, import_date5.getDate)(null); return [startOfMonth(today), today]; } }, { id: "last-year", label: (0, import_i18n116.__)("Last year"), getValue: () => { const today = (0, import_date5.getDate)(null); return [subYears(today, 1), today]; } }, { id: "year-to-date", label: (0, import_i18n116.__)("Year to date"), getValue: () => { const today = (0, import_date5.getDate)(null); return [startOfYear(today), today]; } } ]; var parseDate = (dateString) => { if (!dateString) { return null; } const parsed = (0, import_date5.getDate)(dateString); return parsed && isValid(parsed) ? parsed : null; }; var formatDate = (date) => { if (!date) { return ""; } return typeof date === "string" ? date : format(date, "yyyy-MM-dd"); }; function ValidatedDateControl({ field, validity, inputRefs, isTouched, setIsTouched, children }) { const { isValid: isValid2 } = field; const [customValidity, setCustomValidity] = (0, import_element108.useState)(void 0); const validateRefs = (0, import_element108.useCallback)(() => { const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs]; for (const ref of refs) { const input = ref.current; if (input && !input.validity.valid) { setCustomValidity({ type: "invalid", message: input.validationMessage }); return; } } setCustomValidity(void 0); }, [inputRefs]); (0, import_element108.useEffect)(() => { const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs]; const result = validity ? getCustomValidity(isValid2, validity) : void 0; for (const ref of refs) { const input = ref.current; if (input) { input.setCustomValidity( result?.type === "invalid" && result.message ? result.message : "" ); } } }, [inputRefs, isValid2, validity]); (0, import_element108.useEffect)(() => { const refs = Array.isArray(inputRefs) ? inputRefs : [inputRefs]; const handleInvalid = (event) => { event.preventDefault(); setIsTouched(true); }; for (const ref of refs) { ref.current?.addEventListener("invalid", handleInvalid); } return () => { for (const ref of refs) { ref.current?.removeEventListener("invalid", handleInvalid); } }; }, [inputRefs, setIsTouched]); (0, import_element108.useEffect)(() => { if (!isTouched) { return; } const result = validity ? getCustomValidity(isValid2, validity) : void 0; if (result) { setCustomValidity(result); } else { validateRefs(); } }, [isTouched, isValid2, validity, validateRefs]); const onBlur = (event) => { if (isTouched) { return; } if (!event.relatedTarget || !event.currentTarget.contains(event.relatedTarget)) { setIsTouched(true); } }; return /* @__PURE__ */ (0, import_jsx_runtime232.jsxs)("div", { onBlur, children: [ children, /* @__PURE__ */ (0, import_jsx_runtime232.jsx)("div", { "aria-live": "polite", children: customValidity && /* @__PURE__ */ (0, import_jsx_runtime232.jsxs)( "p", { className: clsx_default( "components-validated-control__indicator", customValidity.type === "invalid" ? "is-invalid" : void 0 ), children: [ /* @__PURE__ */ (0, import_jsx_runtime232.jsx)( import_components123.Icon, { className: "components-validated-control__indicator-icon", icon: error_default, size: 16, fill: "currentColor" } ), customValidity.message ] } ) }) ] }); } function CalendarDateControl({ data, field, onChange, hideLabelFromVision, markWhenOptional, validity }) { const { id, label, setValue, getValue, isValid: isValid2, format: fieldFormat } = field; const [selectedPresetId, setSelectedPresetId] = (0, import_element108.useState)( null ); const weekStartsOn = fieldFormat.weekStartsOn ?? (0, import_date5.getSettings)().l10n.startOfWeek; const fieldValue = getValue({ item: data }); const value = typeof fieldValue === "string" ? fieldValue : void 0; const [calendarMonth, setCalendarMonth] = (0, import_element108.useState)(() => { const parsedDate = parseDate(value); return parsedDate || /* @__PURE__ */ new Date(); }); const [isTouched, setIsTouched] = (0, import_element108.useState)(false); const validityTargetRef = (0, import_element108.useRef)(null); const onChangeCallback = (0, import_element108.useCallback)( (newValue) => onChange(setValue({ item: data, value: newValue })), [data, onChange, setValue] ); const onSelectDate = (0, import_element108.useCallback)( (newDate) => { const dateValue = newDate ? format(newDate, "yyyy-MM-dd") : void 0; onChangeCallback(dateValue); setSelectedPresetId(null); setIsTouched(true); }, [onChangeCallback] ); const handlePresetClick = (0, import_element108.useCallback)( (preset) => { const presetDate = preset.getValue(); const dateValue = formatDate(presetDate); setCalendarMonth(presetDate); onChangeCallback(dateValue); setSelectedPresetId(preset.id); setIsTouched(true); }, [onChangeCallback] ); const handleManualDateChange = (0, import_element108.useCallback)( (newValue) => { onChangeCallback(newValue); if (newValue) { const parsedDate = parseDate(newValue); if (parsedDate) { setCalendarMonth(parsedDate); } } setSelectedPresetId(null); setIsTouched(true); }, [onChangeCallback] ); const { timezone: { string: timezoneString } } = (0, import_date5.getSettings)(); let displayLabel = label; if (isValid2?.required && !markWhenOptional) { displayLabel = `${label} (${(0, import_i18n116.__)("Required")})`; } else if (!isValid2?.required && markWhenOptional) { displayLabel = `${label} (${(0, import_i18n116.__)("Optional")})`; } return /* @__PURE__ */ (0, import_jsx_runtime232.jsx)( ValidatedDateControl, { field, validity, inputRefs: validityTargetRef, isTouched, setIsTouched, children: /* @__PURE__ */ (0, import_jsx_runtime232.jsx)( import_components123.BaseControl, { id, className: "dataviews-controls__date", label: displayLabel, hideLabelFromVision, children: /* @__PURE__ */ (0, import_jsx_runtime232.jsxs)(Stack, { direction: "column", gap: "lg", children: [ /* @__PURE__ */ (0, import_jsx_runtime232.jsxs)( Stack, { direction: "row", gap: "sm", wrap: "wrap", justify: "flex-start", children: [ DATE_PRESETS.map((preset) => { const isSelected2 = selectedPresetId === preset.id; return /* @__PURE__ */ (0, import_jsx_runtime232.jsx)( import_components123.Button, { className: "dataviews-controls__date-preset", variant: "tertiary", isPressed: isSelected2, size: "small", onClick: () => handlePresetClick(preset), children: preset.label }, preset.id ); }), /* @__PURE__ */ (0, import_jsx_runtime232.jsx)( import_components123.Button, { className: "dataviews-controls__date-preset", variant: "tertiary", isPressed: !selectedPresetId, size: "small", disabled: !!selectedPresetId, accessibleWhenDisabled: false, children: (0, import_i18n116.__)("Custom") } ) ] } ), /* @__PURE__ */ (0, import_jsx_runtime232.jsx)( import_components123.__experimentalInputControl, { __next40pxDefaultSize: true, ref: validityTargetRef, type: "date", label: (0, import_i18n116.__)("Date"), hideLabelFromVision: true, value, onChange: handleManualDateChange, required: !!field.isValid?.required } ), /* @__PURE__ */ (0, import_jsx_runtime232.jsx)( DateCalendar2, { style: { width: "100%" }, selected: value ? parseDate(value) || void 0 : void 0, onSelect: onSelectDate, month: calendarMonth, onMonthChange: setCalendarMonth, timeZone: timezoneString || void 0, weekStartsOn } ) ] }) } ) } ); } function CalendarDateRangeControl({ data, field, onChange, hideLabelFromVision, markWhenOptional, validity }) { const { id, label, getValue, setValue, format: fieldFormat } = field; let value; const fieldValue = getValue({ item: data }); if (Array.isArray(fieldValue) && fieldValue.length === 2 && fieldValue.every((date) => typeof date === "string")) { value = fieldValue; } const weekStartsOn = fieldFormat.weekStartsOn ?? (0, import_date5.getSettings)().l10n.startOfWeek; const onChangeCallback = (0, import_element108.useCallback)( (newValue) => { onChange( setValue({ item: data, value: newValue }) ); }, [data, onChange, setValue] ); const [selectedPresetId, setSelectedPresetId] = (0, import_element108.useState)( null ); const selectedRange = (0, import_element108.useMemo)(() => { if (!value) { return { from: void 0, to: void 0 }; } const [from, to2] = value; return { from: parseDate(from) || void 0, to: parseDate(to2) || void 0 }; }, [value]); const [calendarMonth, setCalendarMonth] = (0, import_element108.useState)(() => { return selectedRange.from || /* @__PURE__ */ new Date(); }); const [isTouched, setIsTouched] = (0, import_element108.useState)(false); const fromInputRef = (0, import_element108.useRef)(null); const toInputRef = (0, import_element108.useRef)(null); const updateDateRange = (0, import_element108.useCallback)( (fromDate, toDate2) => { if (fromDate && toDate2) { onChangeCallback([ formatDate(fromDate), formatDate(toDate2) ]); } else if (!fromDate && !toDate2) { onChangeCallback(void 0); } }, [onChangeCallback] ); const onSelectCalendarRange = (0, import_element108.useCallback)( (newRange) => { updateDateRange(newRange?.from, newRange?.to); setSelectedPresetId(null); setIsTouched(true); }, [updateDateRange] ); const handlePresetClick = (0, import_element108.useCallback)( (preset) => { const [startDate2, endDate] = preset.getValue(); setCalendarMonth(startDate2); updateDateRange(startDate2, endDate); setSelectedPresetId(preset.id); setIsTouched(true); }, [updateDateRange] ); const handleManualDateChange = (0, import_element108.useCallback)( (fromOrTo, newValue) => { const [currentFrom, currentTo] = value || [ void 0, void 0 ]; const updatedFrom = fromOrTo === "from" ? newValue : currentFrom; const updatedTo = fromOrTo === "to" ? newValue : currentTo; updateDateRange(updatedFrom, updatedTo); if (newValue) { const parsedDate = parseDate(newValue); if (parsedDate) { setCalendarMonth(parsedDate); } } setSelectedPresetId(null); setIsTouched(true); }, [value, updateDateRange] ); const { timezone } = (0, import_date5.getSettings)(); let displayLabel = label; if (field.isValid?.required && !markWhenOptional) { displayLabel = `${label} (${(0, import_i18n116.__)("Required")})`; } else if (!field.isValid?.required && markWhenOptional) { displayLabel = `${label} (${(0, import_i18n116.__)("Optional")})`; } return /* @__PURE__ */ (0, import_jsx_runtime232.jsx)( ValidatedDateControl, { field, validity, inputRefs: [fromInputRef, toInputRef], isTouched, setIsTouched, children: /* @__PURE__ */ (0, import_jsx_runtime232.jsx)( import_components123.BaseControl, { id, className: "dataviews-controls__date", label: displayLabel, hideLabelFromVision, children: /* @__PURE__ */ (0, import_jsx_runtime232.jsxs)(Stack, { direction: "column", gap: "lg", children: [ /* @__PURE__ */ (0, import_jsx_runtime232.jsxs)( Stack, { direction: "row", gap: "sm", wrap: "wrap", justify: "flex-start", children: [ DATE_RANGE_PRESETS.map((preset) => { const isSelected2 = selectedPresetId === preset.id; return /* @__PURE__ */ (0, import_jsx_runtime232.jsx)( import_components123.Button, { className: "dataviews-controls__date-preset", variant: "tertiary", isPressed: isSelected2, size: "small", onClick: () => handlePresetClick(preset), children: preset.label }, preset.id ); }), /* @__PURE__ */ (0, import_jsx_runtime232.jsx)( import_components123.Button, { className: "dataviews-controls__date-preset", variant: "tertiary", isPressed: !selectedPresetId, size: "small", accessibleWhenDisabled: false, disabled: !!selectedPresetId, children: (0, import_i18n116.__)("Custom") } ) ] } ), /* @__PURE__ */ (0, import_jsx_runtime232.jsxs)( Stack, { direction: "row", gap: "sm", justify: "space-between", className: "dataviews-controls__date-range-inputs", children: [ /* @__PURE__ */ (0, import_jsx_runtime232.jsx)( import_components123.__experimentalInputControl, { __next40pxDefaultSize: true, ref: fromInputRef, type: "date", label: (0, import_i18n116.__)("From"), hideLabelFromVision: true, value: value?.[0], onChange: (newValue) => handleManualDateChange("from", newValue), required: !!field.isValid?.required } ), /* @__PURE__ */ (0, import_jsx_runtime232.jsx)( import_components123.__experimentalInputControl, { __next40pxDefaultSize: true, ref: toInputRef, type: "date", label: (0, import_i18n116.__)("To"), hideLabelFromVision: true, value: value?.[1], onChange: (newValue) => handleManualDateChange("to", newValue), required: !!field.isValid?.required } ) ] } ), /* @__PURE__ */ (0, import_jsx_runtime232.jsx)( DateRangeCalendar, { style: { width: "100%" }, selected: selectedRange, onSelect: onSelectCalendarRange, month: calendarMonth, onMonthChange: setCalendarMonth, timeZone: timezone.string || void 0, weekStartsOn } ) ] }) } ) } ); } function DateControl({ data, field, onChange, hideLabelFromVision, markWhenOptional, operator, validity }) { if (operator === OPERATOR_IN_THE_PAST || operator === OPERATOR_OVER) { return /* @__PURE__ */ (0, import_jsx_runtime232.jsx)( RelativeDateControl, { className: "dataviews-controls__date", data, field, onChange, hideLabelFromVision, operator } ); } if (operator === OPERATOR_BETWEEN) { return /* @__PURE__ */ (0, import_jsx_runtime232.jsx)( CalendarDateRangeControl, { data, field, onChange, hideLabelFromVision, markWhenOptional, validity } ); } return /* @__PURE__ */ (0, import_jsx_runtime232.jsx)( CalendarDateControl, { data, field, onChange, hideLabelFromVision, markWhenOptional, validity } ); } // packages/dataviews/build-module/components/dataform-controls/select.mjs var import_components124 = __toESM(require_components(), 1); var import_element109 = __toESM(require_element(), 1); var import_jsx_runtime233 = __toESM(require_jsx_runtime(), 1); var { ValidatedSelectControl } = unlock3(import_components124.privateApis); function Select({ data, field, onChange, hideLabelFromVision, markWhenOptional, validity }) { const { type, label, description, getValue, setValue, isValid: isValid2 } = field; const isMultiple = type === "array"; const value = getValue({ item: data }) ?? (isMultiple ? [] : ""); const onChangeControl = (0, import_element109.useCallback)( (newValue) => onChange(setValue({ item: data, value: newValue })), [data, onChange, setValue] ); const { elements: elements2, isLoading } = useElements({ elements: field.elements, getElements: field.getElements }); if (isLoading) { return /* @__PURE__ */ (0, import_jsx_runtime233.jsx)(import_components124.Spinner, {}); } return /* @__PURE__ */ (0, import_jsx_runtime233.jsx)( ValidatedSelectControl, { required: !!field.isValid?.required, markWhenOptional, customValidity: getCustomValidity(isValid2, validity), label, value, help: description, options: elements2, onChange: onChangeControl, __next40pxDefaultSize: true, hideLabelFromVision, multiple: isMultiple } ); } // packages/dataviews/build-module/components/dataform-controls/adaptive-select.mjs var import_jsx_runtime234 = __toESM(require_jsx_runtime(), 1); var ELEMENTS_THRESHOLD = 10; function AdaptiveSelect(props) { const { field } = props; const { elements: elements2 } = useElements({ elements: field.elements, getElements: field.getElements }); if (elements2.length >= ELEMENTS_THRESHOLD) { return /* @__PURE__ */ (0, import_jsx_runtime234.jsx)(Combobox3, { ...props }); } return /* @__PURE__ */ (0, import_jsx_runtime234.jsx)(Select, { ...props }); } // packages/dataviews/build-module/components/dataform-controls/email.mjs var import_components126 = __toESM(require_components(), 1); // packages/dataviews/build-module/components/dataform-controls/utils/validated-input.mjs var import_components125 = __toESM(require_components(), 1); var import_element110 = __toESM(require_element(), 1); var import_jsx_runtime235 = __toESM(require_jsx_runtime(), 1); var { ValidatedInputControl: ValidatedInputControl2 } = unlock3(import_components125.privateApis); function ValidatedText({ data, field, onChange, hideLabelFromVision, markWhenOptional, type, prefix: prefix2, suffix, validity }) { const { label, placeholder, description, getValue, setValue, isValid: isValid2 } = field; const value = getValue({ item: data }); const onChangeControl = (0, import_element110.useCallback)( (newValue) => onChange( setValue({ item: data, value: newValue }) ), [data, setValue, onChange] ); return /* @__PURE__ */ (0, import_jsx_runtime235.jsx)( ValidatedInputControl2, { required: !!isValid2.required, markWhenOptional, customValidity: getCustomValidity(isValid2, validity), label, placeholder, value: value ?? "", help: description, onChange: onChangeControl, hideLabelFromVision, type, prefix: prefix2, suffix, pattern: isValid2.pattern ? isValid2.pattern.constraint : void 0, minLength: isValid2.minLength ? isValid2.minLength.constraint : void 0, maxLength: isValid2.maxLength ? isValid2.maxLength.constraint : void 0, __next40pxDefaultSize: true } ); } // packages/dataviews/build-module/components/dataform-controls/email.mjs var import_jsx_runtime236 = __toESM(require_jsx_runtime(), 1); function Email({ data, field, onChange, hideLabelFromVision, markWhenOptional, validity }) { return /* @__PURE__ */ (0, import_jsx_runtime236.jsx)( ValidatedText, { ...{ data, field, onChange, hideLabelFromVision, markWhenOptional, validity, type: "email", prefix: /* @__PURE__ */ (0, import_jsx_runtime236.jsx)(import_components126.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime236.jsx)(import_components126.Icon, { icon: envelope_default }) }) } } ); } // packages/dataviews/build-module/components/dataform-controls/telephone.mjs var import_components127 = __toESM(require_components(), 1); var import_jsx_runtime237 = __toESM(require_jsx_runtime(), 1); function Telephone({ data, field, onChange, hideLabelFromVision, markWhenOptional, validity }) { return /* @__PURE__ */ (0, import_jsx_runtime237.jsx)( ValidatedText, { ...{ data, field, onChange, hideLabelFromVision, markWhenOptional, validity, type: "tel", prefix: /* @__PURE__ */ (0, import_jsx_runtime237.jsx)(import_components127.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime237.jsx)(import_components127.Icon, { icon: mobile_default }) }) } } ); } // packages/dataviews/build-module/components/dataform-controls/url.mjs var import_components128 = __toESM(require_components(), 1); var import_jsx_runtime238 = __toESM(require_jsx_runtime(), 1); function Url({ data, field, onChange, hideLabelFromVision, markWhenOptional, validity }) { return /* @__PURE__ */ (0, import_jsx_runtime238.jsx)( ValidatedText, { ...{ data, field, onChange, hideLabelFromVision, markWhenOptional, validity, type: "url", prefix: /* @__PURE__ */ (0, import_jsx_runtime238.jsx)(import_components128.__experimentalInputControlPrefixWrapper, { variant: "icon", children: /* @__PURE__ */ (0, import_jsx_runtime238.jsx)(import_components128.Icon, { icon: link_default }) }) } } ); } // packages/dataviews/build-module/components/dataform-controls/utils/validated-number.mjs var import_components129 = __toESM(require_components(), 1); var import_element111 = __toESM(require_element(), 1); var import_i18n117 = __toESM(require_i18n(), 1); var import_jsx_runtime239 = __toESM(require_jsx_runtime(), 1); var { ValidatedNumberControl } = unlock3(import_components129.privateApis); function toNumberOrEmpty(value) { if (value === "" || value === void 0) { return ""; } const number = Number(value); return Number.isFinite(number) ? number : ""; } function BetweenControls({ value, onChange, hideLabelFromVision, step }) { const [min = "", max = ""] = value; const onChangeMin = (0, import_element111.useCallback)( (newValue) => onChange([toNumberOrEmpty(newValue), max]), [onChange, max] ); const onChangeMax = (0, import_element111.useCallback)( (newValue) => onChange([min, toNumberOrEmpty(newValue)]), [onChange, min] ); return /* @__PURE__ */ (0, import_jsx_runtime239.jsx)( import_components129.BaseControl, { help: (0, import_i18n117.__)("The max. value must be greater than the min. value."), children: /* @__PURE__ */ (0, import_jsx_runtime239.jsxs)(import_components129.Flex, { direction: "row", gap: 4, children: [ /* @__PURE__ */ (0, import_jsx_runtime239.jsx)( import_components129.__experimentalNumberControl, { label: (0, import_i18n117.__)("Min."), value: min, max: max ? Number(max) - step : void 0, onChange: onChangeMin, __next40pxDefaultSize: true, hideLabelFromVision, step } ), /* @__PURE__ */ (0, import_jsx_runtime239.jsx)( import_components129.__experimentalNumberControl, { label: (0, import_i18n117.__)("Max."), value: max, min: min ? Number(min) + step : void 0, onChange: onChangeMax, __next40pxDefaultSize: true, hideLabelFromVision, step } ) ] }) } ); } function ValidatedNumber({ data, field, onChange, hideLabelFromVision, markWhenOptional, operator, validity }) { const decimals = field.format?.decimals ?? 0; const step = Math.pow(10, Math.abs(decimals) * -1); const { label, description, getValue, setValue, isValid: isValid2 } = field; const value = getValue({ item: data }) ?? ""; const onChangeControl = (0, import_element111.useCallback)( (newValue) => { onChange( setValue({ item: data, // Do not convert an empty string or undefined to a number, // otherwise there's a mismatch between the UI control (empty) // and the data relied by onChange (0). value: ["", void 0].includes(newValue) ? void 0 : Number(newValue) }) ); }, [data, onChange, setValue] ); const onChangeBetweenControls = (0, import_element111.useCallback)( (newValue) => { onChange( setValue({ item: data, value: newValue }) ); }, [data, onChange, setValue] ); if (operator === OPERATOR_BETWEEN) { let valueBetween = ["", ""]; if (Array.isArray(value) && value.length === 2 && value.every( (element) => typeof element === "number" || element === "" )) { valueBetween = value; } return /* @__PURE__ */ (0, import_jsx_runtime239.jsx)( BetweenControls, { value: valueBetween, onChange: onChangeBetweenControls, hideLabelFromVision, step } ); } return /* @__PURE__ */ (0, import_jsx_runtime239.jsx)( ValidatedNumberControl, { required: !!isValid2.required, markWhenOptional, customValidity: getCustomValidity(isValid2, validity), label, help: description, value, onChange: onChangeControl, __next40pxDefaultSize: true, hideLabelFromVision, step, min: isValid2.min ? isValid2.min.constraint : void 0, max: isValid2.max ? isValid2.max.constraint : void 0 } ); } // packages/dataviews/build-module/components/dataform-controls/integer.mjs var import_jsx_runtime240 = __toESM(require_jsx_runtime(), 1); function Integer(props) { return /* @__PURE__ */ (0, import_jsx_runtime240.jsx)(ValidatedNumber, { ...props }); } // packages/dataviews/build-module/components/dataform-controls/number.mjs var import_jsx_runtime241 = __toESM(require_jsx_runtime(), 1); function Number2(props) { return /* @__PURE__ */ (0, import_jsx_runtime241.jsx)(ValidatedNumber, { ...props }); } // packages/dataviews/build-module/components/dataform-controls/radio.mjs var import_components130 = __toESM(require_components(), 1); var import_element112 = __toESM(require_element(), 1); var import_jsx_runtime242 = __toESM(require_jsx_runtime(), 1); var { ValidatedRadioControl } = unlock3(import_components130.privateApis); function Radio({ data, field, onChange, hideLabelFromVision, markWhenOptional, validity }) { const { label, description, getValue, setValue, isValid: isValid2 } = field; const { elements: elements2, isLoading } = useElements({ elements: field.elements, getElements: field.getElements }); const value = getValue({ item: data }); const onChangeControl = (0, import_element112.useCallback)( (newValue) => onChange(setValue({ item: data, value: newValue })), [data, onChange, setValue] ); if (isLoading) { return /* @__PURE__ */ (0, import_jsx_runtime242.jsx)(import_components130.Spinner, {}); } return /* @__PURE__ */ (0, import_jsx_runtime242.jsx)( ValidatedRadioControl, { required: !!field.isValid?.required, markWhenOptional, customValidity: getCustomValidity(isValid2, validity), label, help: description, onChange: onChangeControl, options: elements2, selected: value, hideLabelFromVision } ); } // packages/dataviews/build-module/components/dataform-controls/text.mjs var import_element113 = __toESM(require_element(), 1); var import_jsx_runtime243 = __toESM(require_jsx_runtime(), 1); function Text12({ data, field, onChange, hideLabelFromVision, markWhenOptional, config: config2, validity }) { const { prefix: prefix2, suffix } = config2 || {}; return /* @__PURE__ */ (0, import_jsx_runtime243.jsx)( ValidatedText, { ...{ data, field, onChange, hideLabelFromVision, markWhenOptional, validity, prefix: prefix2 ? (0, import_element113.createElement)(prefix2) : void 0, suffix: suffix ? (0, import_element113.createElement)(suffix) : void 0 } } ); } // packages/dataviews/build-module/components/dataform-controls/toggle.mjs var import_components131 = __toESM(require_components(), 1); var import_element114 = __toESM(require_element(), 1); var import_jsx_runtime244 = __toESM(require_jsx_runtime(), 1); var { ValidatedToggleControl } = unlock3(import_components131.privateApis); function Toggle({ field, onChange, data, hideLabelFromVision, markWhenOptional, validity }) { const { label, description, getValue, setValue, isValid: isValid2 } = field; const onChangeControl = (0, import_element114.useCallback)(() => { onChange( setValue({ item: data, value: !getValue({ item: data }) }) ); }, [onChange, setValue, data, getValue]); return /* @__PURE__ */ (0, import_jsx_runtime244.jsx)( ValidatedToggleControl, { required: !!isValid2.required, markWhenOptional, customValidity: getCustomValidity(isValid2, validity), hidden: hideLabelFromVision, label, help: description, checked: getValue({ item: data }), onChange: onChangeControl } ); } // packages/dataviews/build-module/components/dataform-controls/textarea.mjs var import_components132 = __toESM(require_components(), 1); var import_element115 = __toESM(require_element(), 1); var import_jsx_runtime245 = __toESM(require_jsx_runtime(), 1); var { ValidatedTextareaControl } = unlock3(import_components132.privateApis); function Textarea({ data, field, onChange, hideLabelFromVision, markWhenOptional, config: config2, validity }) { const { rows = 4 } = config2 || {}; const { label, placeholder, description, setValue, isValid: isValid2 } = field; const value = field.getValue({ item: data }); const onChangeControl = (0, import_element115.useCallback)( (newValue) => onChange(setValue({ item: data, value: newValue })), [data, onChange, setValue] ); return /* @__PURE__ */ (0, import_jsx_runtime245.jsx)( ValidatedTextareaControl, { required: !!isValid2.required, markWhenOptional, customValidity: getCustomValidity(isValid2, validity), label, placeholder, value: value ?? "", help: description, onChange: onChangeControl, rows, minLength: isValid2.minLength ? isValid2.minLength.constraint : void 0, maxLength: isValid2.maxLength ? isValid2.maxLength.constraint : void 0, __next40pxDefaultSize: true, hideLabelFromVision } ); } // packages/dataviews/build-module/components/dataform-controls/toggle-group.mjs var import_components133 = __toESM(require_components(), 1); var import_element116 = __toESM(require_element(), 1); var import_jsx_runtime246 = __toESM(require_jsx_runtime(), 1); var { ValidatedToggleGroupControl } = unlock3(import_components133.privateApis); function ToggleGroup({ data, field, onChange, hideLabelFromVision, markWhenOptional, validity }) { const { getValue, setValue, isValid: isValid2 } = field; const value = getValue({ item: data }); const onChangeControl = (0, import_element116.useCallback)( (newValue) => onChange(setValue({ item: data, value: newValue })), [data, onChange, setValue] ); const { elements: elements2, isLoading } = useElements({ elements: field.elements, getElements: field.getElements }); if (isLoading) { return /* @__PURE__ */ (0, import_jsx_runtime246.jsx)(import_components133.Spinner, {}); } if (elements2.length === 0) { return null; } const selectedOption = elements2.find((el) => el.value === value); return /* @__PURE__ */ (0, import_jsx_runtime246.jsx)( ValidatedToggleGroupControl, { required: !!field.isValid?.required, markWhenOptional, customValidity: getCustomValidity(isValid2, validity), __next40pxDefaultSize: true, isBlock: true, label: field.label, help: selectedOption?.description || field.description, onChange: onChangeControl, value, hideLabelFromVision, children: elements2.map((el) => /* @__PURE__ */ (0, import_jsx_runtime246.jsx)( import_components133.__experimentalToggleGroupControlOption, { label: el.label, value: el.value }, el.value )) } ); } // packages/dataviews/build-module/components/dataform-controls/array.mjs var import_components134 = __toESM(require_components(), 1); var import_element117 = __toESM(require_element(), 1); var import_jsx_runtime247 = __toESM(require_jsx_runtime(), 1); var { ValidatedFormTokenField } = unlock3(import_components134.privateApis); function ArrayControl({ data, field, onChange, hideLabelFromVision, markWhenOptional, validity }) { const { label, placeholder, getValue, setValue, isValid: isValid2 } = field; const value = getValue({ item: data }); const { elements: elements2, isLoading } = useElements({ elements: field.elements, getElements: field.getElements }); const arrayValueAsElements = (0, import_element117.useMemo)( () => Array.isArray(value) ? value.map((token) => { const element = elements2?.find( (suggestion) => suggestion.value === token ); return element || { value: token, label: token }; }) : [], [value, elements2] ); const onChangeControl = (0, import_element117.useCallback)( (tokens) => { const valueTokens = tokens.map((token) => { if (typeof token === "object" && "value" in token) { return token.value; } return token; }); onChange(setValue({ item: data, value: valueTokens })); }, [onChange, setValue, data] ); if (isLoading) { return /* @__PURE__ */ (0, import_jsx_runtime247.jsx)(import_components134.Spinner, {}); } return /* @__PURE__ */ (0, import_jsx_runtime247.jsx)( ValidatedFormTokenField, { required: !!isValid2?.required, markWhenOptional, customValidity: getCustomValidity(isValid2, validity), label: hideLabelFromVision ? void 0 : label, value: arrayValueAsElements, onChange: onChangeControl, placeholder, suggestions: elements2?.map((element) => element.value), __experimentalValidateInput: (token) => { if (field.isValid?.elements && elements2) { return elements2.some( (element) => element.value === token || element.label === token ); } return true; }, __experimentalExpandOnFocus: elements2 && elements2.length > 0, __experimentalShowHowTo: !field.isValid?.elements, displayTransform: (token) => { if (typeof token === "object" && "label" in token) { return token.label; } if (typeof token === "string" && elements2) { const element = elements2.find( (el) => el.value === token ); return element?.label || token; } return token; }, __experimentalRenderItem: ({ item }) => { if (typeof item === "string" && elements2) { const element = elements2.find( (el) => el.value === item ); return /* @__PURE__ */ (0, import_jsx_runtime247.jsx)("span", { children: element?.label || item }); } return /* @__PURE__ */ (0, import_jsx_runtime247.jsx)("span", { children: item }); } } ); } // packages/dataviews/build-module/components/dataform-controls/color.mjs var import_components135 = __toESM(require_components(), 1); var import_element118 = __toESM(require_element(), 1); var import_i18n118 = __toESM(require_i18n(), 1); var import_jsx_runtime248 = __toESM(require_jsx_runtime(), 1); var { ValidatedInputControl: ValidatedInputControl3 } = unlock3(import_components135.privateApis); var ColorPickerDropdown = ({ color, onColorChange }) => { const validColor = color && w(color).isValid() ? color : "#ffffff"; return /* @__PURE__ */ (0, import_jsx_runtime248.jsx)( import_components135.Dropdown, { className: "dataviews-controls__color-picker-dropdown", popoverProps: { resize: false }, renderToggle: ({ onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime248.jsx)( import_components135.Button, { onClick: onToggle, "aria-label": (0, import_i18n118.__)("Open color picker"), size: "small", icon: () => /* @__PURE__ */ (0, import_jsx_runtime248.jsx)(import_components135.ColorIndicator, { colorValue: validColor }) } ), renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime248.jsx)(import_components135.__experimentalDropdownContentWrapper, { paddingSize: "none", children: /* @__PURE__ */ (0, import_jsx_runtime248.jsx)( import_components135.ColorPicker, { color: validColor, onChange: onColorChange, enableAlpha: true } ) }) } ); }; function Color({ data, field, onChange, hideLabelFromVision, markWhenOptional, validity }) { const { label, placeholder, description, setValue, isValid: isValid2 } = field; const value = field.getValue({ item: data }) || ""; const handleColorChange = (0, import_element118.useCallback)( (newColor) => { onChange(setValue({ item: data, value: newColor })); }, [data, onChange, setValue] ); const handleInputChange = (0, import_element118.useCallback)( (newValue) => { onChange(setValue({ item: data, value: newValue || "" })); }, [data, onChange, setValue] ); return /* @__PURE__ */ (0, import_jsx_runtime248.jsx)( ValidatedInputControl3, { required: !!field.isValid?.required, markWhenOptional, customValidity: getCustomValidity(isValid2, validity), label, placeholder, value, help: description, onChange: handleInputChange, hideLabelFromVision, type: "text", prefix: /* @__PURE__ */ (0, import_jsx_runtime248.jsx)(import_components135.__experimentalInputControlPrefixWrapper, { variant: "control", children: /* @__PURE__ */ (0, import_jsx_runtime248.jsx)( ColorPickerDropdown, { color: value, onColorChange: handleColorChange } ) }) } ); } // packages/dataviews/build-module/components/dataform-controls/password.mjs var import_components136 = __toESM(require_components(), 1); var import_element119 = __toESM(require_element(), 1); var import_i18n119 = __toESM(require_i18n(), 1); var import_jsx_runtime249 = __toESM(require_jsx_runtime(), 1); function Password({ data, field, onChange, hideLabelFromVision, markWhenOptional, validity }) { const [isVisible2, setIsVisible] = (0, import_element119.useState)(false); const toggleVisibility = (0, import_element119.useCallback)(() => { setIsVisible((prev) => !prev); }, []); return /* @__PURE__ */ (0, import_jsx_runtime249.jsx)( ValidatedText, { ...{ data, field, onChange, hideLabelFromVision, markWhenOptional, validity, type: isVisible2 ? "text" : "password", suffix: /* @__PURE__ */ (0, import_jsx_runtime249.jsx)(import_components136.__experimentalInputControlSuffixWrapper, { variant: "control", children: /* @__PURE__ */ (0, import_jsx_runtime249.jsx)( import_components136.Button, { icon: isVisible2 ? unseen_default : seen_default, onClick: toggleVisibility, size: "small", label: isVisible2 ? (0, import_i18n119.__)("Hide password") : (0, import_i18n119.__)("Show password") } ) }) } } ); } // packages/dataviews/build-module/field-types/utils/has-elements.mjs function hasElements(field) { return Array.isArray(field.elements) && field.elements.length > 0 || typeof field.getElements === "function"; } // packages/dataviews/build-module/components/dataform-controls/index.mjs var import_jsx_runtime250 = __toESM(require_jsx_runtime(), 1); var FORM_CONTROLS = { adaptiveSelect: AdaptiveSelect, array: ArrayControl, checkbox: Checkbox, color: Color, combobox: Combobox3, datetime: DateTime, date: DateControl, email: Email, telephone: Telephone, url: Url, integer: Integer, number: Number2, password: Password, radio: Radio, select: Select, text: Text12, toggle: Toggle, textarea: Textarea, toggleGroup: ToggleGroup }; function isEditConfig(value) { return value && typeof value === "object" && typeof value.control === "string"; } function createConfiguredControl(config2) { const { control, ...controlConfig } = config2; const BaseControlType = getControlByType(control); if (BaseControlType === null) { return null; } return function ConfiguredControl(props) { return /* @__PURE__ */ (0, import_jsx_runtime250.jsx)(BaseControlType, { ...props, config: controlConfig }); }; } function getControl(field, fallback) { if (typeof field.Edit === "function") { return field.Edit; } if (typeof field.Edit === "string") { return getControlByType(field.Edit); } if (isEditConfig(field.Edit)) { return createConfiguredControl(field.Edit); } if (hasElements(field) && field.type !== "array") { return getControlByType("adaptiveSelect"); } if (fallback === null) { return null; } return getControlByType(fallback); } function getControlByType(type) { if (Object.keys(FORM_CONTROLS).includes(type)) { return FORM_CONTROLS[type]; } return null; } // packages/dataviews/build-module/field-types/utils/get-filter-by.mjs function getFilterBy(field, defaultOperators, validOperators) { if (field.filterBy === false) { return false; } const operators = field.filterBy?.operators?.filter( (op) => validOperators.includes(op) ) ?? defaultOperators; if (operators.length === 0) { return false; } return { isPrimary: !!field.filterBy?.isPrimary, operators }; } var get_filter_by_default = getFilterBy; // packages/dataviews/build-module/field-types/utils/get-value-from-id.mjs var getValueFromId = (id) => ({ item }) => { const path = id.split("."); let value = item; for (const segment of path) { if (value.hasOwnProperty(segment)) { value = value[segment]; } else { value = void 0; } } return value; }; var get_value_from_id_default = getValueFromId; // packages/dataviews/build-module/field-types/utils/set-value-from-id.mjs var setValueFromId = (id) => ({ value }) => { const path = id.split("."); const result = {}; let current = result; for (const segment of path.slice(0, -1)) { current[segment] = {}; current = current[segment]; } current[path.at(-1)] = value; return result; }; var set_value_from_id_default = setValueFromId; // packages/dataviews/build-module/field-types/email.mjs var import_i18n120 = __toESM(require_i18n(), 1); // packages/dataviews/build-module/field-types/utils/render-from-elements.mjs function RenderFromElements({ item, field }) { const { elements: elements2, isLoading } = useElements({ elements: field.elements, getElements: field.getElements }); const value = field.getValue({ item }); if (isLoading) { return value; } if (elements2.length === 0) { return value; } return elements2?.find((element) => element.value === value)?.label || field.getValue({ item }); } // packages/dataviews/build-module/field-types/utils/render-default.mjs var import_jsx_runtime251 = __toESM(require_jsx_runtime(), 1); function render({ item, field }) { if (field.hasElements) { return /* @__PURE__ */ (0, import_jsx_runtime251.jsx)(RenderFromElements, { item, field }); } return field.getValueFormatted({ item, field }); } // packages/dataviews/build-module/field-types/utils/sort-text.mjs var sort_text_default = (a2, b2, direction) => { return direction === "asc" ? a2.localeCompare(b2) : b2.localeCompare(a2); }; // packages/dataviews/build-module/field-types/utils/is-valid-required.mjs function isValidRequired(item, field) { const value = field.getValue({ item }); return ![void 0, "", null].includes(value); } // packages/dataviews/build-module/field-types/utils/is-valid-min-length.mjs function isValidMinLength(item, field) { if (typeof field.isValid.minLength?.constraint !== "number") { return false; } const value = field.getValue({ item }); if ([void 0, "", null].includes(value)) { return true; } return String(value).length >= field.isValid.minLength.constraint; } // packages/dataviews/build-module/field-types/utils/is-valid-max-length.mjs function isValidMaxLength(item, field) { if (typeof field.isValid.maxLength?.constraint !== "number") { return false; } const value = field.getValue({ item }); if ([void 0, "", null].includes(value)) { return true; } return String(value).length <= field.isValid.maxLength.constraint; } // packages/dataviews/build-module/field-types/utils/is-valid-pattern.mjs function isValidPattern(item, field) { if (field.isValid.pattern?.constraint === void 0) { return true; } try { const regexp = new RegExp(field.isValid.pattern.constraint); const value = field.getValue({ item }); if ([void 0, "", null].includes(value)) { return true; } return regexp.test(String(value)); } catch { return false; } } // packages/dataviews/build-module/field-types/utils/is-valid-elements.mjs function isValidElements(item, field) { const elements2 = field.elements ?? []; const validValues = elements2.map((el) => el.value); if (validValues.length === 0) { return true; } const value = field.getValue({ item }); return [].concat(value).every((v2) => validValues.includes(v2)); } // packages/dataviews/build-module/field-types/utils/get-value-formatted-default.mjs function getValueFormatted({ item, field }) { return field.getValue({ item }); } var get_value_formatted_default_default = getValueFormatted; // packages/dataviews/build-module/field-types/email.mjs var emailRegex = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/; function isValidCustom(item, field) { const value = field.getValue({ item }); if (![void 0, "", null].includes(value) && !emailRegex.test(value)) { return (0, import_i18n120.__)("Value must be a valid email address."); } return null; } var email_default = { type: "email", render, Edit: "email", sort: sort_text_default, enableSorting: true, enableGlobalSearch: false, defaultOperators: [OPERATOR_IS_ANY2, OPERATOR_IS_NONE2], validOperators: [ OPERATOR_IS2, OPERATOR_IS_NOT, OPERATOR_CONTAINS, OPERATOR_NOT_CONTAINS, OPERATOR_STARTS_WITH, // Multiple selection OPERATOR_IS_ANY2, OPERATOR_IS_NONE2, OPERATOR_IS_ALL, OPERATOR_IS_NOT_ALL ], format: {}, getValueFormatted: get_value_formatted_default_default, validate: { required: isValidRequired, pattern: isValidPattern, minLength: isValidMinLength, maxLength: isValidMaxLength, elements: isValidElements, custom: isValidCustom } }; // packages/dataviews/build-module/field-types/integer.mjs var import_i18n121 = __toESM(require_i18n(), 1); // packages/dataviews/build-module/field-types/utils/sort-number.mjs var sort_number_default = (a2, b2, direction) => { return direction === "asc" ? a2 - b2 : b2 - a2; }; // packages/dataviews/build-module/field-types/utils/is-valid-min.mjs function isValidMin(item, field) { if (typeof field.isValid.min?.constraint !== "number") { return false; } const value = field.getValue({ item }); if ([void 0, "", null].includes(value)) { return true; } return Number(value) >= field.isValid.min.constraint; } // packages/dataviews/build-module/field-types/utils/is-valid-max.mjs function isValidMax(item, field) { if (typeof field.isValid.max?.constraint !== "number") { return false; } const value = field.getValue({ item }); if ([void 0, "", null].includes(value)) { return true; } return Number(value) <= field.isValid.max.constraint; } // packages/dataviews/build-module/field-types/integer.mjs var format2 = { separatorThousand: "," }; function getValueFormatted2({ item, field }) { let value = field.getValue({ item }); if (value === null || value === void 0) { return ""; } value = Number(value); if (!Number.isFinite(value)) { return String(value); } let formatInteger; if (field.type !== "integer") { formatInteger = format2; } else { formatInteger = field.format; } const { separatorThousand } = formatInteger; const integerValue = Math.trunc(value); if (!separatorThousand) { return String(integerValue); } return String(integerValue).replace( /\B(?=(\d{3})+(?!\d))/g, separatorThousand ); } function isValidCustom2(item, field) { const value = field.getValue({ item }); if (![void 0, "", null].includes(value) && !Number.isInteger(value)) { return (0, import_i18n121.__)("Value must be an integer."); } return null; } var integer_default = { type: "integer", render, Edit: "integer", sort: sort_number_default, enableSorting: true, enableGlobalSearch: false, defaultOperators: [ OPERATOR_IS2, OPERATOR_IS_NOT, OPERATOR_LESS_THAN, OPERATOR_GREATER_THAN, OPERATOR_LESS_THAN_OR_EQUAL, OPERATOR_GREATER_THAN_OR_EQUAL, OPERATOR_BETWEEN ], validOperators: [ // Single-selection OPERATOR_IS2, OPERATOR_IS_NOT, OPERATOR_LESS_THAN, OPERATOR_GREATER_THAN, OPERATOR_LESS_THAN_OR_EQUAL, OPERATOR_GREATER_THAN_OR_EQUAL, OPERATOR_BETWEEN, // Multiple-selection OPERATOR_IS_ANY2, OPERATOR_IS_NONE2, OPERATOR_IS_ALL, OPERATOR_IS_NOT_ALL ], format: format2, getValueFormatted: getValueFormatted2, validate: { required: isValidRequired, min: isValidMin, max: isValidMax, elements: isValidElements, custom: isValidCustom2 } }; // packages/dataviews/build-module/field-types/number.mjs var import_i18n122 = __toESM(require_i18n(), 1); var format3 = { separatorThousand: ",", separatorDecimal: ".", decimals: 2 }; function getValueFormatted3({ item, field }) { let value = field.getValue({ item }); if (value === null || value === void 0) { return ""; } value = Number(value); if (!Number.isFinite(value)) { return String(value); } let formatNumber; if (field.type !== "number") { formatNumber = format3; } else { formatNumber = field.format; } const { separatorThousand, separatorDecimal, decimals } = formatNumber; const fixedValue = value.toFixed(decimals); const [integerPart, decimalPart] = fixedValue.split("."); const formattedInteger = separatorThousand ? integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, separatorThousand) : integerPart; return decimals === 0 ? formattedInteger : formattedInteger + separatorDecimal + decimalPart; } function isEmpty2(value) { return value === "" || value === void 0 || value === null; } function isValidCustom3(item, field) { const value = field.getValue({ item }); if (!isEmpty2(value) && !Number.isFinite(value)) { return (0, import_i18n122.__)("Value must be a number."); } return null; } var number_default = { type: "number", render, Edit: "number", sort: sort_number_default, enableSorting: true, enableGlobalSearch: false, defaultOperators: [ OPERATOR_IS2, OPERATOR_IS_NOT, OPERATOR_LESS_THAN, OPERATOR_GREATER_THAN, OPERATOR_LESS_THAN_OR_EQUAL, OPERATOR_GREATER_THAN_OR_EQUAL, OPERATOR_BETWEEN ], validOperators: [ // Single-selection OPERATOR_IS2, OPERATOR_IS_NOT, OPERATOR_LESS_THAN, OPERATOR_GREATER_THAN, OPERATOR_LESS_THAN_OR_EQUAL, OPERATOR_GREATER_THAN_OR_EQUAL, OPERATOR_BETWEEN, // Multiple-selection OPERATOR_IS_ANY2, OPERATOR_IS_NONE2, OPERATOR_IS_ALL, OPERATOR_IS_NOT_ALL ], format: format3, getValueFormatted: getValueFormatted3, validate: { required: isValidRequired, min: isValidMin, max: isValidMax, elements: isValidElements, custom: isValidCustom3 } }; // packages/dataviews/build-module/field-types/text.mjs var text_default = { type: "text", render, Edit: "text", sort: sort_text_default, enableSorting: true, enableGlobalSearch: false, defaultOperators: [OPERATOR_IS_ANY2, OPERATOR_IS_NONE2], validOperators: [ // Single selection OPERATOR_IS2, OPERATOR_IS_NOT, OPERATOR_CONTAINS, OPERATOR_NOT_CONTAINS, OPERATOR_STARTS_WITH, // Multiple selection OPERATOR_IS_ANY2, OPERATOR_IS_NONE2, OPERATOR_IS_ALL, OPERATOR_IS_NOT_ALL ], format: {}, getValueFormatted: get_value_formatted_default_default, validate: { required: isValidRequired, pattern: isValidPattern, minLength: isValidMinLength, maxLength: isValidMaxLength, elements: isValidElements } }; // packages/dataviews/build-module/field-types/datetime.mjs var import_date7 = __toESM(require_date(), 1); var format4 = { datetime: (0, import_date7.getSettings)().formats.datetime, weekStartsOn: (0, import_date7.getSettings)().l10n.startOfWeek }; function getValueFormatted4({ item, field }) { const value = field.getValue({ item }); if (["", void 0, null].includes(value)) { return ""; } let formatDatetime; if (field.type !== "datetime") { formatDatetime = format4; } else { formatDatetime = field.format; } return (0, import_date7.dateI18n)(formatDatetime.datetime, (0, import_date7.getDate)(value)); } var sort = (a2, b2, direction) => { const timeA = new Date(a2).getTime(); const timeB = new Date(b2).getTime(); return direction === "asc" ? timeA - timeB : timeB - timeA; }; var datetime_default = { type: "datetime", render, Edit: "datetime", sort, enableSorting: true, enableGlobalSearch: false, defaultOperators: [ OPERATOR_ON, OPERATOR_NOT_ON, OPERATOR_BEFORE2, OPERATOR_AFTER2, OPERATOR_BEFORE_INC, OPERATOR_AFTER_INC, OPERATOR_IN_THE_PAST, OPERATOR_OVER ], validOperators: [ OPERATOR_ON, OPERATOR_NOT_ON, OPERATOR_BEFORE2, OPERATOR_AFTER2, OPERATOR_BEFORE_INC, OPERATOR_AFTER_INC, OPERATOR_IN_THE_PAST, OPERATOR_OVER ], format: format4, getValueFormatted: getValueFormatted4, validate: { required: isValidRequired, elements: isValidElements } }; // packages/dataviews/build-module/field-types/date.mjs var import_date8 = __toESM(require_date(), 1); var format5 = { date: (0, import_date8.getSettings)().formats.date, weekStartsOn: (0, import_date8.getSettings)().l10n.startOfWeek }; function getValueFormatted5({ item, field }) { const value = field.getValue({ item }); if (["", void 0, null].includes(value)) { return ""; } let formatDate2; if (field.type !== "date") { formatDate2 = format5; } else { formatDate2 = field.format; } return (0, import_date8.dateI18n)(formatDate2.date, (0, import_date8.getDate)(value)); } var sort2 = (a2, b2, direction) => { const timeA = new Date(a2).getTime(); const timeB = new Date(b2).getTime(); return direction === "asc" ? timeA - timeB : timeB - timeA; }; var date_default = { type: "date", render, Edit: "date", sort: sort2, enableSorting: true, enableGlobalSearch: false, defaultOperators: [ OPERATOR_ON, OPERATOR_NOT_ON, OPERATOR_BEFORE2, OPERATOR_AFTER2, OPERATOR_BEFORE_INC, OPERATOR_AFTER_INC, OPERATOR_IN_THE_PAST, OPERATOR_OVER, OPERATOR_BETWEEN ], validOperators: [ OPERATOR_ON, OPERATOR_NOT_ON, OPERATOR_BEFORE2, OPERATOR_AFTER2, OPERATOR_BEFORE_INC, OPERATOR_AFTER_INC, OPERATOR_IN_THE_PAST, OPERATOR_OVER, OPERATOR_BETWEEN ], format: format5, getValueFormatted: getValueFormatted5, validate: { required: isValidRequired, elements: isValidElements } }; // packages/dataviews/build-module/field-types/boolean.mjs var import_i18n123 = __toESM(require_i18n(), 1); // packages/dataviews/build-module/field-types/utils/is-valid-required-for-bool.mjs function isValidRequiredForBool(item, field) { const value = field.getValue({ item }); return value === true; } // packages/dataviews/build-module/field-types/boolean.mjs function getValueFormatted6({ item, field }) { const value = field.getValue({ item }); if (value === true) { return (0, import_i18n123.__)("True"); } if (value === false) { return (0, import_i18n123.__)("False"); } return ""; } function isValidCustom4(item, field) { const value = field.getValue({ item }); if (![void 0, "", null].includes(value) && ![true, false].includes(value)) { return (0, import_i18n123.__)("Value must be true, false, or undefined"); } return null; } var sort3 = (a2, b2, direction) => { const boolA = Boolean(a2); const boolB = Boolean(b2); if (boolA === boolB) { return 0; } if (direction === "asc") { return boolA ? 1 : -1; } return boolA ? -1 : 1; }; var boolean_default = { type: "boolean", render, Edit: "checkbox", sort: sort3, validate: { required: isValidRequiredForBool, elements: isValidElements, custom: isValidCustom4 }, enableSorting: true, enableGlobalSearch: false, defaultOperators: [OPERATOR_IS2, OPERATOR_IS_NOT], validOperators: [OPERATOR_IS2, OPERATOR_IS_NOT], format: {}, getValueFormatted: getValueFormatted6 }; // packages/dataviews/build-module/field-types/media.mjs var media_default2 = { type: "media", render: () => null, Edit: null, sort: () => 0, enableSorting: false, enableGlobalSearch: false, defaultOperators: [], validOperators: [], format: {}, getValueFormatted: get_value_formatted_default_default, // cannot validate any constraint, so // the only available validation for the field author // would be providing a custom validator. validate: {} }; // packages/dataviews/build-module/field-types/array.mjs var import_i18n124 = __toESM(require_i18n(), 1); // packages/dataviews/build-module/field-types/utils/is-valid-required-for-array.mjs function isValidRequiredForArray(item, field) { const value = field.getValue({ item }); return Array.isArray(value) && value.length > 0 && value.every( (element) => ![void 0, "", null].includes(element) ); } // packages/dataviews/build-module/field-types/array.mjs function getValueFormatted7({ item, field }) { const value = field.getValue({ item }); const arr = Array.isArray(value) ? value : []; return arr.join(", "); } function render2({ item, field }) { return getValueFormatted7({ item, field }); } function isValidCustom5(item, field) { const value = field.getValue({ item }); if (![void 0, "", null].includes(value) && !Array.isArray(value)) { return (0, import_i18n124.__)("Value must be an array."); } if (!value.every((v2) => typeof v2 === "string")) { return (0, import_i18n124.__)("Every value must be a string."); } return null; } var sort4 = (a2, b2, direction) => { const arrA = Array.isArray(a2) ? a2 : []; const arrB = Array.isArray(b2) ? b2 : []; if (arrA.length !== arrB.length) { return direction === "asc" ? arrA.length - arrB.length : arrB.length - arrA.length; } const joinedA = arrA.join(","); const joinedB = arrB.join(","); return direction === "asc" ? joinedA.localeCompare(joinedB) : joinedB.localeCompare(joinedA); }; var array_default = { type: "array", render: render2, Edit: "array", sort: sort4, enableSorting: true, enableGlobalSearch: false, defaultOperators: [OPERATOR_IS_ANY2, OPERATOR_IS_NONE2], validOperators: [ OPERATOR_IS_ANY2, OPERATOR_IS_NONE2, OPERATOR_IS_ALL, OPERATOR_IS_NOT_ALL ], format: {}, getValueFormatted: getValueFormatted7, validate: { required: isValidRequiredForArray, elements: isValidElements, custom: isValidCustom5 } }; // packages/dataviews/build-module/field-types/password.mjs function getValueFormatted8({ item, field }) { return field.getValue({ item }) ? "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022" : ""; } var password_default = { type: "password", render, Edit: "password", sort: () => 0, // Passwords should not be sortable for security reasons enableSorting: false, enableGlobalSearch: false, defaultOperators: [], validOperators: [], format: {}, getValueFormatted: getValueFormatted8, validate: { required: isValidRequired, pattern: isValidPattern, minLength: isValidMinLength, maxLength: isValidMaxLength, elements: isValidElements } }; // packages/dataviews/build-module/field-types/telephone.mjs var telephone_default = { type: "telephone", render, Edit: "telephone", sort: sort_text_default, enableSorting: true, enableGlobalSearch: false, defaultOperators: [OPERATOR_IS_ANY2, OPERATOR_IS_NONE2], validOperators: [ OPERATOR_IS2, OPERATOR_IS_NOT, OPERATOR_CONTAINS, OPERATOR_NOT_CONTAINS, OPERATOR_STARTS_WITH, // Multiple selection OPERATOR_IS_ANY2, OPERATOR_IS_NONE2, OPERATOR_IS_ALL, OPERATOR_IS_NOT_ALL ], format: {}, getValueFormatted: get_value_formatted_default_default, validate: { required: isValidRequired, pattern: isValidPattern, minLength: isValidMinLength, maxLength: isValidMaxLength, elements: isValidElements } }; // packages/dataviews/build-module/field-types/color.mjs var import_i18n125 = __toESM(require_i18n(), 1); var import_jsx_runtime252 = __toESM(require_jsx_runtime(), 1); function render3({ item, field }) { if (field.hasElements) { return /* @__PURE__ */ (0, import_jsx_runtime252.jsx)(RenderFromElements, { item, field }); } const value = get_value_formatted_default_default({ item, field }); if (!value || !w(value).isValid()) { return value; } return /* @__PURE__ */ (0, import_jsx_runtime252.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [ /* @__PURE__ */ (0, import_jsx_runtime252.jsx)( "div", { style: { width: "16px", height: "16px", borderRadius: "50%", backgroundColor: value, border: "1px solid #ddd", flexShrink: 0 } } ), /* @__PURE__ */ (0, import_jsx_runtime252.jsx)("span", { children: value }) ] }); } function isValidCustom6(item, field) { const value = field.getValue({ item }); if (![void 0, "", null].includes(value) && !w(value).isValid()) { return (0, import_i18n125.__)("Value must be a valid color."); } return null; } var sort5 = (a2, b2, direction) => { const colorA = w(a2); const colorB = w(b2); if (!colorA.isValid() && !colorB.isValid()) { return 0; } if (!colorA.isValid()) { return direction === "asc" ? 1 : -1; } if (!colorB.isValid()) { return direction === "asc" ? -1 : 1; } const hslA = colorA.toHsl(); const hslB = colorB.toHsl(); if (hslA.h !== hslB.h) { return direction === "asc" ? hslA.h - hslB.h : hslB.h - hslA.h; } if (hslA.s !== hslB.s) { return direction === "asc" ? hslA.s - hslB.s : hslB.s - hslA.s; } return direction === "asc" ? hslA.l - hslB.l : hslB.l - hslA.l; }; var color_default = { type: "color", render: render3, Edit: "color", sort: sort5, enableSorting: true, enableGlobalSearch: false, defaultOperators: [OPERATOR_IS_ANY2, OPERATOR_IS_NONE2], validOperators: [ OPERATOR_IS2, OPERATOR_IS_NOT, OPERATOR_IS_ANY2, OPERATOR_IS_NONE2 ], format: {}, getValueFormatted: get_value_formatted_default_default, validate: { required: isValidRequired, elements: isValidElements, custom: isValidCustom6 } }; // packages/dataviews/build-module/field-types/url.mjs var url_default = { type: "url", render, Edit: "url", sort: sort_text_default, enableSorting: true, enableGlobalSearch: false, defaultOperators: [OPERATOR_IS_ANY2, OPERATOR_IS_NONE2], validOperators: [ OPERATOR_IS2, OPERATOR_IS_NOT, OPERATOR_CONTAINS, OPERATOR_NOT_CONTAINS, OPERATOR_STARTS_WITH, // Multiple selection OPERATOR_IS_ANY2, OPERATOR_IS_NONE2, OPERATOR_IS_ALL, OPERATOR_IS_NOT_ALL ], format: {}, getValueFormatted: get_value_formatted_default_default, validate: { required: isValidRequired, pattern: isValidPattern, minLength: isValidMinLength, maxLength: isValidMaxLength, elements: isValidElements } }; // packages/dataviews/build-module/field-types/no-type.mjs var sort6 = (a2, b2, direction) => { if (typeof a2 === "number" && typeof b2 === "number") { return sort_number_default(a2, b2, direction); } return sort_text_default(a2, b2, direction); }; var no_type_default = { // type: no type for this one render, Edit: null, sort: sort6, enableSorting: true, enableGlobalSearch: false, defaultOperators: [OPERATOR_IS2, OPERATOR_IS_NOT], validOperators: getAllOperatorNames(), format: {}, getValueFormatted: get_value_formatted_default_default, validate: { required: isValidRequired, elements: isValidElements } }; // packages/dataviews/build-module/field-types/utils/get-is-valid.mjs function getIsValid(field, fieldType) { let required; if (field.isValid?.required === true && fieldType.validate.required !== void 0) { required = { constraint: true, validate: fieldType.validate.required }; } let elements2; if ((field.isValid?.elements === true || // elements is enabled unless the field opts-out field.isValid?.elements === void 0 && (!!field.elements || !!field.getElements)) && fieldType.validate.elements !== void 0) { elements2 = { constraint: true, validate: fieldType.validate.elements }; } let min; if (typeof field.isValid?.min === "number" && fieldType.validate.min !== void 0) { min = { constraint: field.isValid.min, validate: fieldType.validate.min }; } let max; if (typeof field.isValid?.max === "number" && fieldType.validate.max !== void 0) { max = { constraint: field.isValid.max, validate: fieldType.validate.max }; } let minLength; if (typeof field.isValid?.minLength === "number" && fieldType.validate.minLength !== void 0) { minLength = { constraint: field.isValid.minLength, validate: fieldType.validate.minLength }; } let maxLength; if (typeof field.isValid?.maxLength === "number" && fieldType.validate.maxLength !== void 0) { maxLength = { constraint: field.isValid.maxLength, validate: fieldType.validate.maxLength }; } let pattern; if (field.isValid?.pattern !== void 0 && fieldType.validate.pattern !== void 0) { pattern = { constraint: field.isValid?.pattern, validate: fieldType.validate.pattern }; } const custom = field.isValid?.custom ?? fieldType.validate.custom; return { required, elements: elements2, min, max, minLength, maxLength, pattern, custom }; } // packages/dataviews/build-module/field-types/utils/get-filter.mjs function getFilter(fieldType) { return fieldType.validOperators.reduce((accumulator, operator) => { const operatorObj = getOperatorByName(operator); if (operatorObj?.filter) { accumulator[operator] = operatorObj.filter; } return accumulator; }, {}); } // packages/dataviews/build-module/field-types/utils/get-format.mjs function getFormat(field, fieldType) { return { ...fieldType.format, ...field.format }; } var get_format_default = getFormat; // packages/dataviews/build-module/field-types/index.mjs function getFieldTypeByName(type) { const found = [ email_default, integer_default, number_default, text_default, datetime_default, date_default, boolean_default, media_default2, array_default, password_default, telephone_default, color_default, url_default ].find((fieldType) => fieldType?.type === type); if (!!found) { return found; } return no_type_default; } function normalizeFields(fields) { return fields.map((field) => { const fieldType = getFieldTypeByName(field.type); const getValue = field.getValue || get_value_from_id_default(field.id); const sort7 = function(a2, b2, direction) { const aValue = getValue({ item: a2 }); const bValue = getValue({ item: b2 }); return field.sort ? field.sort(aValue, bValue, direction) : fieldType.sort(aValue, bValue, direction); }; return { id: field.id, label: field.label || field.id, header: field.header || field.label || field.id, description: field.description, placeholder: field.placeholder, getValue, setValue: field.setValue || set_value_from_id_default(field.id), elements: field.elements, getElements: field.getElements, hasElements: hasElements(field), isVisible: field.isVisible, enableHiding: field.enableHiding ?? true, readOnly: field.readOnly ?? false, // The type provides defaults for the following props type: fieldType.type, render: field.render ?? fieldType.render, Edit: getControl(field, fieldType.Edit), sort: sort7, enableSorting: field.enableSorting ?? fieldType.enableSorting, enableGlobalSearch: field.enableGlobalSearch ?? fieldType.enableGlobalSearch, isValid: getIsValid(field, fieldType), filterBy: get_filter_by_default( field, fieldType.defaultOperators, fieldType.validOperators ), filter: getFilter(fieldType), format: get_format_default(field, fieldType), getValueFormatted: field.getValueFormatted ?? fieldType.getValueFormatted }; }); } // packages/dataviews/build-module/hooks/use-data.mjs var import_element120 = __toESM(require_element(), 1); function useData(data, isLoading, paginationInfo) { const previousDataRef = (0, import_element120.useRef)(data); const previousPaginationInfoRef = (0, import_element120.useRef)(paginationInfo); const [hasInitiallyLoaded, setHasInitiallyLoaded] = (0, import_element120.useState)( !isLoading ); (0, import_element120.useEffect)(() => { if (!isLoading) { previousDataRef.current = data; previousPaginationInfoRef.current = paginationInfo; setHasInitiallyLoaded(true); } }, [data, isLoading, paginationInfo]); return { data: isLoading && previousDataRef.current?.length ? previousDataRef.current : data, paginationInfo: isLoading && previousDataRef.current?.length ? previousPaginationInfoRef.current : paginationInfo, hasInitiallyLoaded }; } // packages/dataviews/build-module/dataviews/index.mjs var import_jsx_runtime253 = __toESM(require_jsx_runtime(), 1); var defaultGetItemId = (item) => item.id; var defaultIsItemClickable = () => true; var EMPTY_ARRAY9 = []; var dataViewsLayouts = VIEW_LAYOUTS.filter( (viewLayout) => !viewLayout.isPicker ); function DefaultUI({ header, search = true, searchLabel = void 0 }) { return /* @__PURE__ */ (0, import_jsx_runtime253.jsxs)(import_jsx_runtime253.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime253.jsxs)( Stack, { direction: "row", align: "top", justify: "space-between", className: "dataviews__view-actions", gap: "xs", children: [ /* @__PURE__ */ (0, import_jsx_runtime253.jsxs)( Stack, { direction: "row", justify: "start", gap: "sm", className: "dataviews__search", children: [ search && /* @__PURE__ */ (0, import_jsx_runtime253.jsx)(dataviews_search_default, { label: searchLabel }), /* @__PURE__ */ (0, import_jsx_runtime253.jsx)(toggle_default, {}) ] } ), /* @__PURE__ */ (0, import_jsx_runtime253.jsxs)(Stack, { direction: "row", gap: "xs", style: { flexShrink: 0 }, children: [ /* @__PURE__ */ (0, import_jsx_runtime253.jsx)(dataviews_view_config_default, {}), header ] }) ] } ), /* @__PURE__ */ (0, import_jsx_runtime253.jsx)(filters_toggled_default, { className: "dataviews-filters__container" }), /* @__PURE__ */ (0, import_jsx_runtime253.jsx)(DataViewsLayout, {}), /* @__PURE__ */ (0, import_jsx_runtime253.jsx)(DataViewsFooter, {}) ] }); } function DataViews({ view, onChangeView, fields, search = true, searchLabel = void 0, actions = EMPTY_ARRAY9, data, getItemId: getItemId2 = defaultGetItemId, getItemLevel: getItemLevel2, isLoading = false, paginationInfo, defaultLayouts: defaultLayoutsProperty, selection: selectionProperty, onChangeSelection, onClickItem, renderItemLink, isItemClickable = defaultIsItemClickable, header, children, config: config2 = { perPageSizes: [10, 20, 50, 100] }, empty, onReset }) { const { infiniteScrollHandler } = paginationInfo; const containerRef = (0, import_element121.useRef)(null); const [containerWidth, setContainerWidth] = (0, import_element121.useState)(0); const resizeObserverRef = (0, import_compose23.useResizeObserver)( (resizeObserverEntries) => { setContainerWidth( resizeObserverEntries[0].borderBoxSize[0].inlineSize ); }, { box: "border-box" } ); const [selectionState, setSelectionState] = (0, import_element121.useState)([]); const isUncontrolled = selectionProperty === void 0 || onChangeSelection === void 0; const selection = isUncontrolled ? selectionState : selectionProperty; const [openedFilter, setOpenedFilter] = (0, import_element121.useState)(null); function setSelectionWithChange(value) { const newValue = typeof value === "function" ? value(selection) : value; if (isUncontrolled) { setSelectionState(newValue); } if (onChangeSelection) { onChangeSelection(newValue); } } const _fields = (0, import_element121.useMemo)(() => normalizeFields(fields), [fields]); const _selection = (0, import_element121.useMemo)(() => { return selection.filter( (id) => data.some((item) => getItemId2(item) === id) ); }, [selection, data, getItemId2]); const filters = use_filters_default(_fields, view); const hasPrimaryOrLockedFilters = (0, import_element121.useMemo)( () => (filters || []).some( (filter) => filter.isPrimary || filter.isLocked ), [filters] ); const [isShowingFilter, setIsShowingFilter] = (0, import_element121.useState)( hasPrimaryOrLockedFilters ); (0, import_element121.useEffect)(() => { if (hasPrimaryOrLockedFilters && !isShowingFilter) { setIsShowingFilter(true); } }, [hasPrimaryOrLockedFilters, isShowingFilter]); (0, import_element121.useEffect)(() => { if (!view.infiniteScrollEnabled || !containerRef.current) { return; } const handleScroll = (0, import_compose23.throttle)((event) => { const target = event.target; const scrollTop = target.scrollTop; const scrollHeight = target.scrollHeight; const clientHeight = target.clientHeight; if (scrollTop + clientHeight >= scrollHeight - 100) { infiniteScrollHandler?.(); } }, 100); const container = containerRef.current; container.addEventListener("scroll", handleScroll); return () => { container.removeEventListener("scroll", handleScroll); handleScroll.cancel(); }; }, [infiniteScrollHandler, view.infiniteScrollEnabled]); const defaultLayouts4 = (0, import_element121.useMemo)( () => Object.fromEntries( Object.entries(defaultLayoutsProperty).filter( ([layoutType]) => { return dataViewsLayouts.some( (viewLayout) => viewLayout.type === layoutType ); } ) ), [defaultLayoutsProperty] ); const { data: displayData, paginationInfo: displayPaginationInfo, hasInitiallyLoaded } = useData(data, isLoading, paginationInfo); if (!defaultLayouts4[view.type]) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime253.jsx)( dataviews_context_default.Provider, { value: { view, onChangeView, fields: _fields, actions, data: displayData, isLoading, paginationInfo: displayPaginationInfo, selection: _selection, onChangeSelection: setSelectionWithChange, openedFilter, setOpenedFilter, getItemId: getItemId2, getItemLevel: getItemLevel2, isItemClickable, onClickItem, renderItemLink, containerWidth, containerRef, resizeObserverRef, defaultLayouts: defaultLayouts4, filters, isShowingFilter, setIsShowingFilter, config: config2, empty, hasInitiallyLoaded, hasInfiniteScrollHandler: !!infiniteScrollHandler, onReset }, children: /* @__PURE__ */ (0, import_jsx_runtime253.jsx)("div", { className: "dataviews-wrapper", ref: containerRef, children: children ?? /* @__PURE__ */ (0, import_jsx_runtime253.jsx)( DefaultUI, { header, search, searchLabel } ) }) } ); } var DataViewsSubComponents = DataViews; DataViewsSubComponents.BulkActionToolbar = BulkActionsFooter; DataViewsSubComponents.Filters = filters_default; DataViewsSubComponents.FiltersToggled = filters_toggled_default; DataViewsSubComponents.FiltersToggle = toggle_default; DataViewsSubComponents.Layout = DataViewsLayout; DataViewsSubComponents.LayoutSwitcher = ViewTypeMenu; DataViewsSubComponents.Pagination = DataViewsPagination; DataViewsSubComponents.Search = dataviews_search_default; DataViewsSubComponents.ViewConfig = DataviewsViewConfigDropdown; DataViewsSubComponents.Footer = DataViewsFooter; var dataviews_default = DataViewsSubComponents; // packages/dataviews/build-module/dataform/index.mjs var import_element133 = __toESM(require_element(), 1); // packages/dataviews/build-module/components/dataform-context/index.mjs var import_element122 = __toESM(require_element(), 1); var import_jsx_runtime254 = __toESM(require_jsx_runtime(), 1); var DataFormContext = (0, import_element122.createContext)({ fields: [] }); DataFormContext.displayName = "DataFormContext"; function DataFormProvider({ fields, children }) { return /* @__PURE__ */ (0, import_jsx_runtime254.jsx)(DataFormContext.Provider, { value: { fields }, children }); } var dataform_context_default = DataFormContext; // packages/dataviews/build-module/components/dataform-layouts/data-form-layout.mjs var import_element132 = __toESM(require_element(), 1); // packages/dataviews/build-module/components/dataform-layouts/regular/index.mjs var import_element123 = __toESM(require_element(), 1); var import_components137 = __toESM(require_components(), 1); // packages/dataviews/build-module/components/dataform-layouts/normalize-form.mjs var DEFAULT_LAYOUT = { type: "regular", labelPosition: "top" }; var normalizeCardSummaryField = (sum) => { if (typeof sum === "string") { return [{ id: sum, visibility: "when-collapsed" }]; } return sum.map((item) => { if (typeof item === "string") { return { id: item, visibility: "when-collapsed" }; } return { id: item.id, visibility: item.visibility }; }); }; function normalizeLayout(layout) { let normalizedLayout = DEFAULT_LAYOUT; if (layout?.type === "regular") { normalizedLayout = { type: "regular", labelPosition: layout?.labelPosition ?? "top" }; } else if (layout?.type === "panel") { const summary = layout.summary ?? []; const normalizedSummary = Array.isArray(summary) ? summary : [summary]; normalizedLayout = { type: "panel", labelPosition: layout?.labelPosition ?? "side", openAs: layout?.openAs ?? "dropdown", summary: normalizedSummary, editVisibility: layout?.editVisibility ?? "on-hover" }; } else if (layout?.type === "card") { if (layout.withHeader === false) { normalizedLayout = { type: "card", withHeader: false, isOpened: true, summary: [], isCollapsible: false }; } else { const summary = layout.summary ?? []; normalizedLayout = { type: "card", withHeader: true, isOpened: typeof layout.isOpened === "boolean" ? layout.isOpened : true, summary: normalizeCardSummaryField(summary), isCollapsible: layout.isCollapsible === void 0 ? true : layout.isCollapsible }; } } else if (layout?.type === "row") { normalizedLayout = { type: "row", alignment: layout?.alignment ?? "center", styles: layout?.styles ?? {} }; } else if (layout?.type === "details") { normalizedLayout = { type: "details", summary: layout?.summary ?? "" }; } return normalizedLayout; } function normalizeForm(form) { const normalizedFormLayout = normalizeLayout(form?.layout); const normalizedFields = (form.fields ?? []).map( (field) => { if (typeof field === "string") { return { id: field, layout: normalizedFormLayout }; } const fieldLayout = field.layout ? normalizeLayout(field.layout) : normalizedFormLayout; return { id: field.id, layout: fieldLayout, ...!!field.label && { label: field.label }, ...!!field.description && { description: field.description }, ..."children" in field && Array.isArray(field.children) && { children: normalizeForm({ fields: field.children, layout: DEFAULT_LAYOUT }).fields } }; } ); return { layout: normalizedFormLayout, fields: normalizedFields }; } var normalize_form_default = normalizeForm; // packages/dataviews/build-module/components/dataform-layouts/regular/index.mjs var import_jsx_runtime255 = __toESM(require_jsx_runtime(), 1); function Header2({ title }) { return /* @__PURE__ */ (0, import_jsx_runtime255.jsx)( Stack, { direction: "column", className: "dataforms-layouts-regular__header", gap: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime255.jsx)(Stack, { direction: "row", align: "center", children: /* @__PURE__ */ (0, import_jsx_runtime255.jsx)(import_components137.__experimentalHeading, { level: 2, size: 13, children: title }) }) } ); } function FormRegularField({ data, field, onChange, hideLabelFromVision, markWhenOptional, validity }) { const { fields } = (0, import_element123.useContext)(dataform_context_default); const layout = field.layout; const form = (0, import_element123.useMemo)( () => ({ layout: DEFAULT_LAYOUT, fields: !!field.children ? field.children : [] }), [field] ); if (!!field.children) { return /* @__PURE__ */ (0, import_jsx_runtime255.jsxs)(import_jsx_runtime255.Fragment, { children: [ !hideLabelFromVision && field.label && /* @__PURE__ */ (0, import_jsx_runtime255.jsx)(Header2, { title: field.label }), /* @__PURE__ */ (0, import_jsx_runtime255.jsx)( DataFormLayout, { data, form, onChange, validity: validity?.children } ) ] }); } const labelPosition = layout.labelPosition; const fieldDefinition = fields.find( (fieldDef) => fieldDef.id === field.id ); if (!fieldDefinition || !fieldDefinition.Edit) { return null; } if (labelPosition === "side") { return /* @__PURE__ */ (0, import_jsx_runtime255.jsxs)( Stack, { direction: "row", className: "dataforms-layouts-regular__field", gap: "sm", children: [ /* @__PURE__ */ (0, import_jsx_runtime255.jsx)( "div", { className: clsx_default( "dataforms-layouts-regular__field-label", `dataforms-layouts-regular__field-label--label-position-${labelPosition}` ), children: /* @__PURE__ */ (0, import_jsx_runtime255.jsx)(import_components137.BaseControl.VisualLabel, { children: fieldDefinition.label }) } ), /* @__PURE__ */ (0, import_jsx_runtime255.jsx)("div", { className: "dataforms-layouts-regular__field-control", children: fieldDefinition.readOnly === true ? /* @__PURE__ */ (0, import_jsx_runtime255.jsx)( fieldDefinition.render, { item: data, field: fieldDefinition } ) : /* @__PURE__ */ (0, import_jsx_runtime255.jsx)( fieldDefinition.Edit, { data, field: fieldDefinition, onChange, hideLabelFromVision: true, markWhenOptional, validity }, fieldDefinition.id ) }) ] } ); } return /* @__PURE__ */ (0, import_jsx_runtime255.jsx)("div", { className: "dataforms-layouts-regular__field", children: fieldDefinition.readOnly === true ? /* @__PURE__ */ (0, import_jsx_runtime255.jsx)(import_jsx_runtime255.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime255.jsxs)(import_jsx_runtime255.Fragment, { children: [ !hideLabelFromVision && labelPosition !== "none" && /* @__PURE__ */ (0, import_jsx_runtime255.jsx)(import_components137.BaseControl.VisualLabel, { children: fieldDefinition.label }), /* @__PURE__ */ (0, import_jsx_runtime255.jsx)( fieldDefinition.render, { item: data, field: fieldDefinition } ) ] }) }) : /* @__PURE__ */ (0, import_jsx_runtime255.jsx)( fieldDefinition.Edit, { data, field: fieldDefinition, onChange, hideLabelFromVision: labelPosition === "none" ? true : hideLabelFromVision, markWhenOptional, validity } ) }); } // packages/dataviews/build-module/components/dataform-layouts/panel/modal.mjs var import_deepmerge3 = __toESM(require_cjs(), 1); var import_components140 = __toESM(require_components(), 1); var import_i18n128 = __toESM(require_i18n(), 1); var import_element128 = __toESM(require_element(), 1); var import_compose25 = __toESM(require_compose(), 1); // packages/dataviews/build-module/components/dataform-layouts/panel/summary-button.mjs var import_components139 = __toESM(require_components(), 1); var import_i18n126 = __toESM(require_i18n(), 1); var import_compose24 = __toESM(require_compose(), 1); var import_element124 = __toESM(require_element(), 1); // packages/dataviews/build-module/components/dataform-layouts/panel/utils/get-label-classname.mjs function getLabelClassName(labelPosition, showError) { return clsx_default( "dataforms-layouts-panel__field-label", `dataforms-layouts-panel__field-label--label-position-${labelPosition}`, { "has-error": showError } ); } var get_label_classname_default = getLabelClassName; // packages/dataviews/build-module/components/dataform-layouts/panel/utils/get-label-content.mjs var import_components138 = __toESM(require_components(), 1); var import_jsx_runtime256 = __toESM(require_jsx_runtime(), 1); function getLabelContent(showError, errorMessage, fieldLabel) { return showError ? /* @__PURE__ */ (0, import_jsx_runtime256.jsx)(import_components138.Tooltip, { text: errorMessage, placement: "top", children: /* @__PURE__ */ (0, import_jsx_runtime256.jsxs)("span", { className: "dataforms-layouts-panel__field-label-error-content", children: [ /* @__PURE__ */ (0, import_jsx_runtime256.jsx)(import_components138.Icon, { icon: error_default, size: 16 }), fieldLabel ] }) }) : fieldLabel; } var get_label_content_default = getLabelContent; // packages/dataviews/build-module/components/dataform-layouts/panel/utils/get-first-validation-error.mjs function getFirstValidationError(validity) { if (!validity) { return void 0; } const validityRules = Object.keys(validity).filter( (key) => key !== "children" ); for (const key of validityRules) { const rule = validity[key]; if (rule === void 0) { continue; } if (rule.type === "invalid") { if (rule.message) { return rule.message; } if (key === "required") { return "A required field is empty"; } return "Unidentified validation error"; } } if (validity.children) { for (const childValidity of Object.values(validity.children)) { const childError = getFirstValidationError(childValidity); if (childError) { return childError; } } } return void 0; } var get_first_validation_error_default = getFirstValidationError; // packages/dataviews/build-module/components/dataform-layouts/panel/summary-button.mjs var import_jsx_runtime257 = __toESM(require_jsx_runtime(), 1); function SummaryButton({ data, field, fieldLabel, summaryFields, validity, touched, disabled, onClick, "aria-expanded": ariaExpanded }) { const { labelPosition, editVisibility } = field.layout; const errorMessage = get_first_validation_error_default(validity); const showError = touched && !!errorMessage; const labelClassName = get_label_classname_default(labelPosition, showError); const labelContent = get_label_content_default(showError, errorMessage, fieldLabel); const className = clsx_default( "dataforms-layouts-panel__field-trigger", `dataforms-layouts-panel__field-trigger--label-${labelPosition}`, { "is-disabled": disabled, "dataforms-layouts-panel__field-trigger--edit-always": editVisibility === "always" } ); const controlId = (0, import_compose24.useInstanceId)( SummaryButton, "dataforms-layouts-panel__field-control" ); const ariaLabel = showError ? (0, import_i18n126.sprintf)( // translators: %s: Field name. (0, import_i18n126._x)("Edit %s (has errors)", "field"), fieldLabel || "" ) : (0, import_i18n126.sprintf)( // translators: %s: Field name. (0, import_i18n126._x)("Edit %s", "field"), fieldLabel || "" ); const rowRef = (0, import_element124.useRef)(null); const handleRowClick = () => { const selection = rowRef.current?.ownerDocument.defaultView?.getSelection(); if (selection && selection.toString().length > 0) { return; } onClick(); }; const handleKeyDown = (event) => { if (event.target === event.currentTarget && (event.key === "Enter" || event.key === " ")) { event.preventDefault(); onClick(); } }; return /* @__PURE__ */ (0, import_jsx_runtime257.jsxs)( "div", { ref: rowRef, className, onClick: !disabled ? handleRowClick : void 0, onKeyDown: !disabled ? handleKeyDown : void 0, children: [ labelPosition !== "none" && /* @__PURE__ */ (0, import_jsx_runtime257.jsx)("span", { className: labelClassName, children: labelContent }), labelPosition === "none" && showError && /* @__PURE__ */ (0, import_jsx_runtime257.jsx)(import_components139.Tooltip, { text: errorMessage, placement: "top", children: /* @__PURE__ */ (0, import_jsx_runtime257.jsx)("span", { className: "dataforms-layouts-panel__field-label-error-content", children: /* @__PURE__ */ (0, import_jsx_runtime257.jsx)(import_components139.Icon, { icon: error_default, size: 16 }) }) }), /* @__PURE__ */ (0, import_jsx_runtime257.jsx)( "span", { id: `${controlId}`, className: "dataforms-layouts-panel__field-control", children: summaryFields.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime257.jsx)( "span", { style: { display: "flex", flexDirection: "column", alignItems: "flex-start", width: "100%", gap: "2px" }, children: summaryFields.map((summaryField) => /* @__PURE__ */ (0, import_jsx_runtime257.jsx)( "span", { style: { width: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime257.jsx)( summaryField.render, { item: data, field: summaryField } ) }, summaryField.id )) } ) : summaryFields.map((summaryField) => /* @__PURE__ */ (0, import_jsx_runtime257.jsx)( summaryField.render, { item: data, field: summaryField }, summaryField.id )) } ), !disabled && /* @__PURE__ */ (0, import_jsx_runtime257.jsx)( import_components139.Button, { className: "dataforms-layouts-panel__field-trigger-icon", label: ariaLabel, showTooltip: false, icon: pencil_default, size: "small", "aria-expanded": ariaExpanded, "aria-haspopup": "dialog", "aria-describedby": `${controlId}` } ) ] } ); } // packages/dataviews/build-module/hooks/use-form-validity.mjs var import_deepmerge2 = __toESM(require_cjs(), 1); var import_es63 = __toESM(require_es6(), 1); var import_element125 = __toESM(require_element(), 1); var import_i18n127 = __toESM(require_i18n(), 1); function isFormValid(formValidity) { if (!formValidity) { return true; } return Object.values(formValidity).every((fieldValidation) => { return Object.entries(fieldValidation).every( ([key, validation]) => { if (key === "children" && validation && typeof validation === "object") { return isFormValid(validation); } return validation.type !== "invalid" && validation.type !== "validating"; } ); }); } function getFormFieldsToValidate(form, fields) { const normalizedForm = normalize_form_default(form); if (normalizedForm.fields.length === 0) { return []; } const fieldsMap = /* @__PURE__ */ new Map(); fields.forEach((field) => { fieldsMap.set(field.id, field); }); function processFormField(formField) { if ("children" in formField && Array.isArray(formField.children)) { const processedChildren = formField.children.map(processFormField).filter((child) => child !== null); if (processedChildren.length === 0) { return null; } const fieldDef2 = fieldsMap.get(formField.id); if (fieldDef2) { const [normalizedField2] = normalizeFields([ fieldDef2 ]); return { id: formField.id, children: processedChildren, field: normalizedField2 }; } return { id: formField.id, children: processedChildren }; } const fieldDef = fieldsMap.get(formField.id); if (!fieldDef) { return null; } const [normalizedField] = normalizeFields([fieldDef]); return { id: formField.id, children: [], field: normalizedField }; } const toValidate = normalizedForm.fields.map(processFormField).filter((field) => field !== null); return toValidate; } function setValidityAtPath(formValidity, fieldValidity, path) { if (!formValidity) { formValidity = {}; } if (path.length === 0) { return formValidity; } const result = { ...formValidity }; let current = result; for (let i2 = 0; i2 < path.length - 1; i2++) { const segment = path[i2]; if (!current[segment]) { current[segment] = {}; } current[segment] = { ...current[segment] }; current = current[segment]; } const finalKey = path[path.length - 1]; current[finalKey] = { ...current[finalKey] || {}, ...fieldValidity }; return result; } function removeValidationProperty(formValidity, path, property) { if (!formValidity || path.length === 0) { return formValidity; } const result = { ...formValidity }; let current = result; for (let i2 = 0; i2 < path.length - 1; i2++) { const segment = path[i2]; if (!current[segment]) { return formValidity; } current[segment] = { ...current[segment] }; current = current[segment]; } const finalKey = path[path.length - 1]; if (!current[finalKey]) { return formValidity; } const fieldValidity = { ...current[finalKey] }; delete fieldValidity[property]; if (Object.keys(fieldValidity).length === 0) { delete current[finalKey]; } else { current[finalKey] = fieldValidity; } if (Object.keys(result).length === 0) { return void 0; } return result; } function handleElementsValidationAsync(promise, formField, promiseHandler) { const { elementsCounterRef, setFormValidity, path, item } = promiseHandler; const currentToken = (elementsCounterRef.current[formField.id] || 0) + 1; elementsCounterRef.current[formField.id] = currentToken; promise.then((result) => { if (currentToken !== elementsCounterRef.current[formField.id]) { return; } if (!Array.isArray(result)) { setFormValidity((prev) => { const newFormValidity = setValidityAtPath( prev, { elements: { type: "invalid", message: (0, import_i18n127.__)("Could not validate elements.") } }, [...path, formField.id] ); return newFormValidity; }); return; } if (formField.field?.isValid.elements && !formField.field.isValid.elements.validate(item, { ...formField.field, elements: result })) { setFormValidity((prev) => { const newFormValidity = setValidityAtPath( prev, { elements: { type: "invalid", message: (0, import_i18n127.__)( "Value must be one of the elements." ) } }, [...path, formField.id] ); return newFormValidity; }); } else { setFormValidity((prev) => { return removeValidationProperty( prev, [...path, formField.id], "elements" ); }); } }).catch((error) => { if (currentToken !== elementsCounterRef.current[formField.id]) { return; } let errorMessage; if (error instanceof Error) { errorMessage = error.message; } else { errorMessage = String(error) || (0, import_i18n127.__)( "Unknown error when running elements validation asynchronously." ); } setFormValidity((prev) => { const newFormValidity = setValidityAtPath( prev, { elements: { type: "invalid", message: errorMessage } }, [...path, formField.id] ); return newFormValidity; }); }); } function handleCustomValidationAsync(promise, formField, promiseHandler) { const { customCounterRef, setFormValidity, path } = promiseHandler; const currentToken = (customCounterRef.current[formField.id] || 0) + 1; customCounterRef.current[formField.id] = currentToken; promise.then((result) => { if (currentToken !== customCounterRef.current[formField.id]) { return; } if (result === null) { setFormValidity((prev) => { return removeValidationProperty( prev, [...path, formField.id], "custom" ); }); return; } if (typeof result === "string") { setFormValidity((prev) => { const newFormValidity = setValidityAtPath( prev, { custom: { type: "invalid", message: result } }, [...path, formField.id] ); return newFormValidity; }); return; } setFormValidity((prev) => { const newFormValidity = setValidityAtPath( prev, { custom: { type: "invalid", message: (0, import_i18n127.__)("Validation could not be processed.") } }, [...path, formField.id] ); return newFormValidity; }); }).catch((error) => { if (currentToken !== customCounterRef.current[formField.id]) { return; } let errorMessage; if (error instanceof Error) { errorMessage = error.message; } else { errorMessage = String(error) || (0, import_i18n127.__)( "Unknown error when running custom validation asynchronously." ); } setFormValidity((prev) => { const newFormValidity = setValidityAtPath( prev, { custom: { type: "invalid", message: errorMessage } }, [...path, formField.id] ); return newFormValidity; }); }); } function validateFormField(item, formField, promiseHandler) { if (formField.field?.isValid.required && !formField.field.isValid.required.validate(item, formField.field)) { return { required: { type: "invalid" } }; } if (formField.field?.isValid.pattern && !formField.field.isValid.pattern.validate(item, formField.field)) { return { pattern: { type: "invalid", message: (0, import_i18n127.__)("Value does not match the required pattern.") } }; } if (formField.field?.isValid.min && !formField.field.isValid.min.validate(item, formField.field)) { return { min: { type: "invalid", message: (0, import_i18n127.__)("Value is below the minimum.") } }; } if (formField.field?.isValid.max && !formField.field.isValid.max.validate(item, formField.field)) { return { max: { type: "invalid", message: (0, import_i18n127.__)("Value is above the maximum.") } }; } if (formField.field?.isValid.minLength && !formField.field.isValid.minLength.validate(item, formField.field)) { return { minLength: { type: "invalid", message: (0, import_i18n127.__)("Value is too short.") } }; } if (formField.field?.isValid.maxLength && !formField.field.isValid.maxLength.validate(item, formField.field)) { return { maxLength: { type: "invalid", message: (0, import_i18n127.__)("Value is too long.") } }; } if (formField.field?.isValid.elements && formField.field.hasElements && !formField.field.getElements && Array.isArray(formField.field.elements) && !formField.field.isValid.elements.validate(item, formField.field)) { return { elements: { type: "invalid", message: (0, import_i18n127.__)("Value must be one of the elements.") } }; } let customError; if (!!formField.field && formField.field.isValid.custom) { try { const value = formField.field.getValue({ item }); customError = formField.field.isValid.custom( (0, import_deepmerge2.default)( item, formField.field.setValue({ item, value }) ), formField.field ); } catch (error) { let errorMessage; if (error instanceof Error) { errorMessage = error.message; } else { errorMessage = String(error) || (0, import_i18n127.__)("Unknown error when running custom validation."); } return { custom: { type: "invalid", message: errorMessage } }; } } if (typeof customError === "string") { return { custom: { type: "invalid", message: customError } }; } const fieldValidity = {}; if (!!formField.field && formField.field.isValid.elements && formField.field.hasElements && typeof formField.field.getElements === "function") { handleElementsValidationAsync( formField.field.getElements(), formField, promiseHandler ); fieldValidity.elements = { type: "validating", message: (0, import_i18n127.__)("Validating\u2026") }; } if (customError instanceof Promise) { handleCustomValidationAsync(customError, formField, promiseHandler); fieldValidity.custom = { type: "validating", message: (0, import_i18n127.__)("Validating\u2026") }; } if (Object.keys(fieldValidity).length > 0) { return fieldValidity; } if (formField.children.length > 0) { const result = {}; formField.children.forEach((child) => { result[child.id] = validateFormField(item, child, { ...promiseHandler, path: [...promiseHandler.path, formField.id, "children"] }); }); const filteredResult = {}; Object.entries(result).forEach(([key, value]) => { if (value !== void 0) { filteredResult[key] = value; } }); if (Object.keys(filteredResult).length === 0) { return void 0; } return { children: filteredResult }; } return void 0; } function getFormFieldValue(formField, item) { const fieldValue = formField?.field?.getValue({ item }); if (formField.children.length === 0) { return fieldValue; } const childrenValues = formField.children.map( (child) => getFormFieldValue(child, item) ); if (!childrenValues) { return fieldValue; } return { value: fieldValue, children: childrenValues }; } function useFormValidity(item, fields, form) { const [formValidity, setFormValidity] = (0, import_element125.useState)(); const customCounterRef = (0, import_element125.useRef)({}); const elementsCounterRef = (0, import_element125.useRef)({}); const previousValuesRef = (0, import_element125.useRef)({}); const validate = (0, import_element125.useCallback)(() => { const promiseHandler = { customCounterRef, elementsCounterRef, setFormValidity, path: [], item }; const formFieldsToValidate = getFormFieldsToValidate(form, fields); if (formFieldsToValidate.length === 0) { setFormValidity(void 0); return; } const newFormValidity = {}; const untouchedFields = []; formFieldsToValidate.forEach((formField) => { const value = getFormFieldValue(formField, item); if (previousValuesRef.current.hasOwnProperty(formField.id) && (0, import_es63.default)( previousValuesRef.current[formField.id], value )) { untouchedFields.push(formField.id); return; } previousValuesRef.current[formField.id] = value; const fieldValidity = validateFormField( item, formField, promiseHandler ); if (fieldValidity !== void 0) { newFormValidity[formField.id] = fieldValidity; } }); setFormValidity((existingFormValidity) => { let validity = { ...existingFormValidity, ...newFormValidity }; const fieldsToKeep = [ ...untouchedFields, ...Object.keys(newFormValidity) ]; Object.keys(validity).forEach((key) => { if (validity && !fieldsToKeep.includes(key)) { delete validity[key]; } }); if (Object.keys(validity).length === 0) { validity = void 0; } const areEqual = (0, import_es63.default)(existingFormValidity, validity); if (areEqual) { return existingFormValidity; } return validity; }); }, [item, fields, form]); (0, import_element125.useEffect)(() => { validate(); }, [validate]); return { validity: formValidity, isValid: isFormValid(formValidity) }; } var use_form_validity_default = useFormValidity; // packages/dataviews/build-module/hooks/use-report-validity.mjs var import_element126 = __toESM(require_element(), 1); function useReportValidity(ref, shouldReport) { (0, import_element126.useEffect)(() => { if (shouldReport && ref.current) { const inputs = ref.current.querySelectorAll( "input, textarea, select" ); inputs.forEach((input) => { input.reportValidity(); }); } }, [shouldReport, ref]); } // packages/dataviews/build-module/components/dataform-layouts/panel/utils/use-field-from-form-field.mjs var import_element127 = __toESM(require_element(), 1); // packages/dataviews/build-module/components/dataform-layouts/get-summary-fields.mjs function extractSummaryIds(summary) { if (Array.isArray(summary)) { return summary.map( (item) => typeof item === "string" ? item : item.id ); } return []; } var getSummaryFields = (summaryField, fields) => { if (Array.isArray(summaryField) && summaryField.length > 0) { const summaryIds = extractSummaryIds(summaryField); return summaryIds.map( (summaryId) => fields.find((_field) => _field.id === summaryId) ).filter((_field) => _field !== void 0); } return []; }; // packages/dataviews/build-module/components/dataform-layouts/panel/utils/use-field-from-form-field.mjs var getFieldDefinition = (field, fields) => { const fieldDefinition = fields.find((_field) => _field.id === field.id); if (!fieldDefinition) { return fields.find((_field) => { if (!!field.children) { const simpleChildren = field.children.filter( (child) => !child.children ); if (simpleChildren.length === 0) { return false; } return _field.id === simpleChildren[0].id; } return _field.id === field.id; }); } return fieldDefinition; }; function useFieldFromFormField(field) { const { fields } = (0, import_element127.useContext)(dataform_context_default); const layout = field.layout; const summaryFields = getSummaryFields(layout.summary, fields); const fieldDefinition = getFieldDefinition(field, fields); const fieldLabel = !!field.children ? field.label : fieldDefinition?.label; if (summaryFields.length === 0) { return { summaryFields: fieldDefinition ? [fieldDefinition] : [], fieldDefinition, fieldLabel }; } return { summaryFields, fieldDefinition, fieldLabel }; } var use_field_from_form_field_default = useFieldFromFormField; // packages/dataviews/build-module/components/dataform-layouts/panel/modal.mjs var import_jsx_runtime258 = __toESM(require_jsx_runtime(), 1); function ModalContent({ data, field, onChange, fieldLabel, onClose, touched }) { const { fields } = (0, import_element128.useContext)(dataform_context_default); const [changes, setChanges] = (0, import_element128.useState)({}); const modalData = (0, import_element128.useMemo)(() => { return (0, import_deepmerge3.default)(data, changes, { arrayMerge: (target, source) => source }); }, [data, changes]); const form = (0, import_element128.useMemo)( () => ({ layout: DEFAULT_LAYOUT, fields: !!field.children ? field.children : ( // If not explicit children return the field id itself. [{ id: field.id, layout: DEFAULT_LAYOUT }] ) }), [field] ); const fieldsAsFieldType = fields.map((f2) => ({ ...f2, Edit: f2.Edit === null ? void 0 : f2.Edit, isValid: { required: f2.isValid.required?.constraint, elements: f2.isValid.elements?.constraint, min: f2.isValid.min?.constraint, max: f2.isValid.max?.constraint, pattern: f2.isValid.pattern?.constraint, minLength: f2.isValid.minLength?.constraint, maxLength: f2.isValid.maxLength?.constraint } })); const { validity } = use_form_validity_default(modalData, fieldsAsFieldType, form); const onApply = () => { onChange(changes); onClose(); }; const handleOnChange = (newValue) => { setChanges( (prev) => (0, import_deepmerge3.default)(prev, newValue, { arrayMerge: (target, source) => source }) ); }; const focusOnMountRef = (0, import_compose25.useFocusOnMount)("firstInputElement"); const contentRef = (0, import_element128.useRef)(null); const mergedRef = (0, import_compose25.useMergeRefs)([focusOnMountRef, contentRef]); useReportValidity(contentRef, touched); return /* @__PURE__ */ (0, import_jsx_runtime258.jsxs)( import_components140.Modal, { className: "dataforms-layouts-panel__modal", onRequestClose: onClose, isFullScreen: false, title: fieldLabel, size: "medium", children: [ /* @__PURE__ */ (0, import_jsx_runtime258.jsx)("div", { ref: mergedRef, children: /* @__PURE__ */ (0, import_jsx_runtime258.jsx)( DataFormLayout, { data: modalData, form, onChange: handleOnChange, validity, children: (FieldLayout, childField, childFieldValidity, markWhenOptional) => /* @__PURE__ */ (0, import_jsx_runtime258.jsx)( FieldLayout, { data: modalData, field: childField, onChange: handleOnChange, hideLabelFromVision: form.fields.length < 2, markWhenOptional, validity: childFieldValidity }, childField.id ) } ) }), /* @__PURE__ */ (0, import_jsx_runtime258.jsxs)( Stack, { direction: "row", className: "dataforms-layouts-panel__modal-footer", gap: "md", children: [ /* @__PURE__ */ (0, import_jsx_runtime258.jsx)(import_components140.__experimentalSpacer, { style: { flex: 1 } }), /* @__PURE__ */ (0, import_jsx_runtime258.jsx)( import_components140.Button, { variant: "tertiary", onClick: onClose, __next40pxDefaultSize: true, children: (0, import_i18n128.__)("Cancel") } ), /* @__PURE__ */ (0, import_jsx_runtime258.jsx)( import_components140.Button, { variant: "primary", onClick: onApply, __next40pxDefaultSize: true, children: (0, import_i18n128.__)("Apply") } ) ] } ) ] } ); } function PanelModal({ data, field, onChange, validity }) { const [touched, setTouched] = (0, import_element128.useState)(false); const [isOpen, setIsOpen] = (0, import_element128.useState)(false); const { fieldDefinition, fieldLabel, summaryFields } = use_field_from_form_field_default(field); if (!fieldDefinition) { return null; } const handleClose = () => { setIsOpen(false); setTouched(true); }; return /* @__PURE__ */ (0, import_jsx_runtime258.jsxs)(import_jsx_runtime258.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime258.jsx)( SummaryButton, { data, field, fieldLabel, summaryFields, validity, touched, disabled: fieldDefinition.readOnly === true, onClick: () => setIsOpen(true), "aria-expanded": isOpen } ), isOpen && /* @__PURE__ */ (0, import_jsx_runtime258.jsx)( ModalContent, { data, field, onChange, fieldLabel: fieldLabel ?? "", onClose: handleClose, touched } ) ] }); } var modal_default2 = PanelModal; // packages/dataviews/build-module/components/dataform-layouts/panel/dropdown.mjs var import_components141 = __toESM(require_components(), 1); var import_i18n129 = __toESM(require_i18n(), 1); var import_element129 = __toESM(require_element(), 1); var import_compose26 = __toESM(require_compose(), 1); var import_jsx_runtime259 = __toESM(require_jsx_runtime(), 1); function DropdownHeader({ title, onClose }) { return /* @__PURE__ */ (0, import_jsx_runtime259.jsx)( Stack, { direction: "column", className: "dataforms-layouts-panel__dropdown-header", gap: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime259.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", children: [ title && /* @__PURE__ */ (0, import_jsx_runtime259.jsx)(import_components141.__experimentalHeading, { level: 2, size: 13, children: title }), /* @__PURE__ */ (0, import_jsx_runtime259.jsx)(import_components141.__experimentalSpacer, { style: { flex: 1 } }), onClose && /* @__PURE__ */ (0, import_jsx_runtime259.jsx)( import_components141.Button, { label: (0, import_i18n129.__)("Close"), icon: close_small_default, onClick: onClose, size: "small" } ) ] }) } ); } function DropdownContentWithValidation({ touched, children }) { const ref = (0, import_element129.useRef)(null); useReportValidity(ref, touched); return /* @__PURE__ */ (0, import_jsx_runtime259.jsx)("div", { ref, children }); } function PanelDropdown({ data, field, onChange, validity }) { const [touched, setTouched] = (0, import_element129.useState)(false); const [popoverAnchor, setPopoverAnchor] = (0, import_element129.useState)( null ); const popoverProps = (0, import_element129.useMemo)( () => ({ // Anchor the popover to the middle of the entire row so that it doesn't // move around when the label changes. anchor: popoverAnchor, placement: "left-start", offset: 36, shift: true }), [popoverAnchor] ); const [dialogRef, dialogProps] = (0, import_compose26.__experimentalUseDialog)({ focusOnMount: "firstInputElement" }); const form = (0, import_element129.useMemo)( () => ({ layout: DEFAULT_LAYOUT, fields: !!field.children ? field.children : ( // If not explicit children return the field id itself. [{ id: field.id, layout: DEFAULT_LAYOUT }] ) }), [field] ); const formValidity = (0, import_element129.useMemo)(() => { if (validity === void 0) { return void 0; } if (!!field.children) { return validity?.children; } return { [field.id]: validity }; }, [validity, field]); const { fieldDefinition, fieldLabel, summaryFields } = use_field_from_form_field_default(field); if (!fieldDefinition) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime259.jsx)( "div", { ref: setPopoverAnchor, className: "dataforms-layouts-panel__field-dropdown-anchor", children: /* @__PURE__ */ (0, import_jsx_runtime259.jsx)( import_components141.Dropdown, { contentClassName: "dataforms-layouts-panel__field-dropdown", popoverProps, focusOnMount: false, onToggle: (willOpen) => { if (!willOpen) { setTouched(true); } }, renderToggle: ({ isOpen, onToggle }) => /* @__PURE__ */ (0, import_jsx_runtime259.jsx)( SummaryButton, { data, field, fieldLabel, summaryFields, validity, touched, disabled: fieldDefinition.readOnly === true, onClick: onToggle, "aria-expanded": isOpen } ), renderContent: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime259.jsx)(DropdownContentWithValidation, { touched, children: /* @__PURE__ */ (0, import_jsx_runtime259.jsxs)("div", { ref: dialogRef, ...dialogProps, children: [ /* @__PURE__ */ (0, import_jsx_runtime259.jsx)( DropdownHeader, { title: fieldLabel, onClose } ), /* @__PURE__ */ (0, import_jsx_runtime259.jsx)( DataFormLayout, { data, form, onChange, validity: formValidity, children: (FieldLayout, childField, childFieldValidity, markWhenOptional) => /* @__PURE__ */ (0, import_jsx_runtime259.jsx)( FieldLayout, { data, field: childField, onChange, hideLabelFromVision: (form?.fields ?? []).length < 2, markWhenOptional, validity: childFieldValidity }, childField.id ) } ) ] }) }) } ) } ); } var dropdown_default = PanelDropdown; // packages/dataviews/build-module/components/dataform-layouts/panel/index.mjs var import_jsx_runtime260 = __toESM(require_jsx_runtime(), 1); function FormPanelField({ data, field, onChange, validity }) { const layout = field.layout; if (layout.openAs === "modal") { return /* @__PURE__ */ (0, import_jsx_runtime260.jsx)( modal_default2, { data, field, onChange, validity } ); } return /* @__PURE__ */ (0, import_jsx_runtime260.jsx)( dropdown_default, { data, field, onChange, validity } ); } // packages/dataviews/build-module/components/dataform-layouts/card/index.mjs var import_components142 = __toESM(require_components(), 1); var import_compose27 = __toESM(require_compose(), 1); var import_element130 = __toESM(require_element(), 1); var import_i18n131 = __toESM(require_i18n(), 1); // packages/dataviews/build-module/components/dataform-layouts/validation-badge.mjs var import_i18n130 = __toESM(require_i18n(), 1); var import_jsx_runtime261 = __toESM(require_jsx_runtime(), 1); function countInvalidFields(validity) { if (!validity) { return 0; } let count = 0; const validityRules = Object.keys(validity).filter( (key) => key !== "children" ); for (const key of validityRules) { const rule = validity[key]; if (rule?.type === "invalid") { count++; } } if (validity.children) { for (const childValidity of Object.values(validity.children)) { count += countInvalidFields(childValidity); } } return count; } function ValidationBadge({ validity }) { const invalidCount = countInvalidFields(validity); if (invalidCount === 0) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime261.jsx)(Badge, { intent: "high", children: (0, import_i18n130.sprintf)( /* translators: %d: Number of fields that need attention */ (0, import_i18n130._n)( "%d field needs attention", "%d fields need attention", invalidCount ), invalidCount ) }); } // packages/dataviews/build-module/components/dataform-layouts/card/index.mjs var import_jsx_runtime262 = __toESM(require_jsx_runtime(), 1); function isSummaryFieldVisible(summaryField, summaryConfig, isOpen) { if (!summaryConfig || Array.isArray(summaryConfig) && summaryConfig.length === 0) { return false; } const summaryConfigArray = Array.isArray(summaryConfig) ? summaryConfig : [summaryConfig]; const fieldConfig = summaryConfigArray.find((config2) => { if (typeof config2 === "string") { return config2 === summaryField.id; } if (typeof config2 === "object" && "id" in config2) { return config2.id === summaryField.id; } return false; }); if (!fieldConfig) { return false; } if (typeof fieldConfig === "string") { return true; } if (typeof fieldConfig === "object" && "visibility" in fieldConfig) { return fieldConfig.visibility === "always" || fieldConfig.visibility === "when-collapsed" && !isOpen; } return true; } function FormCardField({ data, field, onChange, hideLabelFromVision, markWhenOptional, validity }) { const { fields } = (0, import_element130.useContext)(dataform_context_default); const layout = field.layout; const cardBodyRef = (0, import_element130.useRef)(null); const bodyId = (0, import_compose27.useInstanceId)( FormCardField, "dataforms-layouts-card-card-body" ); const form = (0, import_element130.useMemo)( () => ({ layout: DEFAULT_LAYOUT, fields: field.children ?? [] }), [field] ); const { isOpened, isCollapsible } = layout; const [internalIsOpen, setIsOpen] = (0, import_element130.useState)(isOpened); const [touched, setTouched] = (0, import_element130.useState)(false); (0, import_element130.useEffect)(() => { setIsOpen(isOpened); }, [isOpened]); const toggle = (0, import_element130.useCallback)(() => { setIsOpen((prev) => { if (prev) { setTouched(true); } return !prev; }); }, []); const isOpen = isCollapsible ? internalIsOpen : true; const handleBlur = (0, import_element130.useCallback)(() => { setTouched(true); }, [setTouched]); useReportValidity(cardBodyRef, isOpen && touched); const summaryFields = getSummaryFields(layout.summary, fields); const visibleSummaryFields = summaryFields.filter( (summaryField) => isSummaryFieldVisible(summaryField, layout.summary, isOpen) ); const validationBadge = touched && layout.isCollapsible ? /* @__PURE__ */ (0, import_jsx_runtime262.jsx)(ValidationBadge, { validity }) : null; const sizeCard = { blockStart: "medium", blockEnd: "medium", inlineStart: "medium", inlineEnd: "medium" }; let label = field.label; let withHeader; let bodyContent; if (field.children) { withHeader = !!label && layout.withHeader; bodyContent = /* @__PURE__ */ (0, import_jsx_runtime262.jsxs)(import_jsx_runtime262.Fragment, { children: [ field.description && /* @__PURE__ */ (0, import_jsx_runtime262.jsx)("div", { className: "dataforms-layouts-card__field-description", children: field.description }), /* @__PURE__ */ (0, import_jsx_runtime262.jsx)( DataFormLayout, { data, form, onChange, validity: validity?.children } ) ] }); } else { const fieldDefinition = fields.find( (fieldDef) => fieldDef.id === field.id ); if (!fieldDefinition || !fieldDefinition.Edit) { return null; } const SingleFieldLayout = getFormFieldLayout("regular")?.component; if (!SingleFieldLayout) { return null; } label = fieldDefinition.label; withHeader = !!label && layout.withHeader; bodyContent = /* @__PURE__ */ (0, import_jsx_runtime262.jsx)( SingleFieldLayout, { data, field, onChange, hideLabelFromVision: hideLabelFromVision || withHeader, markWhenOptional, validity } ); } const sizeCardBody = { blockStart: withHeader ? "none" : "medium", blockEnd: "medium", inlineStart: "medium", inlineEnd: "medium" }; return /* @__PURE__ */ (0, import_jsx_runtime262.jsxs)(import_components142.Card, { className: "dataforms-layouts-card__field", size: sizeCard, children: [ withHeader && /* @__PURE__ */ (0, import_jsx_runtime262.jsxs)( import_components142.CardHeader, { className: "dataforms-layouts-card__field-header", onClick: isCollapsible ? toggle : void 0, style: { cursor: isCollapsible ? "pointer" : void 0 }, isBorderless: true, children: [ /* @__PURE__ */ (0, import_jsx_runtime262.jsxs)( "div", { style: { // Match the expand/collapse button's height to avoid layout // differences when that button is not displayed. height: isCollapsible ? void 0 : "40px", width: "100%", display: "flex", justifyContent: "space-between", alignItems: "center" }, children: [ /* @__PURE__ */ (0, import_jsx_runtime262.jsx)("span", { className: "dataforms-layouts-card__field-header-label", children: label }), validationBadge, visibleSummaryFields.length > 0 && layout.withHeader && /* @__PURE__ */ (0, import_jsx_runtime262.jsx)("div", { className: "dataforms-layouts-card__field-summary", children: visibleSummaryFields.map( (summaryField) => /* @__PURE__ */ (0, import_jsx_runtime262.jsx)( summaryField.render, { item: data, field: summaryField }, summaryField.id ) ) }) ] } ), isCollapsible && /* @__PURE__ */ (0, import_jsx_runtime262.jsx)( import_components142.Button, { __next40pxDefaultSize: true, variant: "tertiary", icon: isOpen ? chevron_up_default : chevron_down_default, "aria-expanded": isOpen, "aria-controls": bodyId, "aria-label": isOpen ? (0, import_i18n131.__)("Collapse") : (0, import_i18n131.__)("Expand") } ) ] } ), (isOpen || !withHeader) && // If it doesn't have a header, keep it open. // Otherwise, the card will not be visible. /* @__PURE__ */ (0, import_jsx_runtime262.jsx)( import_components142.CardBody, { id: bodyId, size: sizeCardBody, className: "dataforms-layouts-card__field-control", ref: cardBodyRef, onBlur: handleBlur, children: bodyContent } ) ] }); } // packages/dataviews/build-module/components/dataform-layouts/row/index.mjs var import_components143 = __toESM(require_components(), 1); var import_jsx_runtime263 = __toESM(require_jsx_runtime(), 1); function Header3({ title }) { return /* @__PURE__ */ (0, import_jsx_runtime263.jsx)( Stack, { direction: "column", className: "dataforms-layouts-row__header", gap: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime263.jsx)(Stack, { direction: "row", align: "center", children: /* @__PURE__ */ (0, import_jsx_runtime263.jsx)(import_components143.__experimentalHeading, { level: 2, size: 13, children: title }) }) } ); } var EMPTY_WRAPPER = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime263.jsx)(import_jsx_runtime263.Fragment, { children }); function FormRowField({ data, field, onChange, hideLabelFromVision, markWhenOptional, validity }) { const layout = field.layout; if (!!field.children) { const form = { layout: DEFAULT_LAYOUT, fields: field.children }; return /* @__PURE__ */ (0, import_jsx_runtime263.jsxs)("div", { className: "dataforms-layouts-row__field", children: [ !hideLabelFromVision && field.label && /* @__PURE__ */ (0, import_jsx_runtime263.jsx)(Header3, { title: field.label }), /* @__PURE__ */ (0, import_jsx_runtime263.jsx)(Stack, { direction: "row", align: layout.alignment, gap: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime263.jsx)( DataFormLayout, { data, form, onChange, validity: validity?.children, as: EMPTY_WRAPPER, children: (FieldLayout, childField, childFieldValidity) => /* @__PURE__ */ (0, import_jsx_runtime263.jsx)( "div", { className: "dataforms-layouts-row__field-control", style: layout.styles[childField.id], children: /* @__PURE__ */ (0, import_jsx_runtime263.jsx)( FieldLayout, { data, field: childField, onChange, hideLabelFromVision, markWhenOptional, validity: childFieldValidity } ) }, childField.id ) } ) }) ] }); } const RegularLayout = getFormFieldLayout("regular")?.component; if (!RegularLayout) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime263.jsx)(import_jsx_runtime263.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime263.jsx)("div", { className: "dataforms-layouts-row__field-control", children: /* @__PURE__ */ (0, import_jsx_runtime263.jsx)( RegularLayout, { data, field, onChange, markWhenOptional, validity } ) }) }); } // packages/dataviews/build-module/components/dataform-layouts/details/index.mjs var import_element131 = __toESM(require_element(), 1); var import_i18n132 = __toESM(require_i18n(), 1); var import_jsx_runtime264 = __toESM(require_jsx_runtime(), 1); function FormDetailsField({ data, field, onChange, validity }) { const { fields } = (0, import_element131.useContext)(dataform_context_default); const detailsRef = (0, import_element131.useRef)(null); const contentRef = (0, import_element131.useRef)(null); const [touched, setTouched] = (0, import_element131.useState)(false); const [isOpen, setIsOpen] = (0, import_element131.useState)(false); const form = (0, import_element131.useMemo)( () => ({ layout: DEFAULT_LAYOUT, fields: field.children ?? [] }), [field] ); (0, import_element131.useEffect)(() => { const details = detailsRef.current; if (!details) { return; } const handleToggle = () => { const nowOpen = details.open; if (!nowOpen) { setTouched(true); } setIsOpen(nowOpen); }; details.addEventListener("toggle", handleToggle); return () => { details.removeEventListener("toggle", handleToggle); }; }, []); useReportValidity(contentRef, isOpen && touched); const handleBlur = (0, import_element131.useCallback)(() => { setTouched(true); }, []); if (!field.children) { return null; } const summaryFieldId = field.layout.summary ?? ""; const summaryField = summaryFieldId ? fields.find((fieldDef) => fieldDef.id === summaryFieldId) : void 0; let summaryContent; if (summaryField && summaryField.render) { summaryContent = /* @__PURE__ */ (0, import_jsx_runtime264.jsx)(summaryField.render, { item: data, field: summaryField }); } else { summaryContent = field.label || (0, import_i18n132.__)("More details"); } return /* @__PURE__ */ (0, import_jsx_runtime264.jsxs)( "details", { ref: detailsRef, className: "dataforms-layouts-details__details", children: [ /* @__PURE__ */ (0, import_jsx_runtime264.jsx)("summary", { className: "dataforms-layouts-details__summary", children: /* @__PURE__ */ (0, import_jsx_runtime264.jsxs)( Stack, { direction: "row", align: "center", gap: "md", className: "dataforms-layouts-details__summary-content", children: [ summaryContent, touched && /* @__PURE__ */ (0, import_jsx_runtime264.jsx)(ValidationBadge, { validity }) ] } ) }), /* @__PURE__ */ (0, import_jsx_runtime264.jsx)( "div", { ref: contentRef, className: "dataforms-layouts-details__content", onBlur: handleBlur, children: /* @__PURE__ */ (0, import_jsx_runtime264.jsx)( DataFormLayout, { data, form, onChange, validity: validity?.children } ) } ) ] } ); } // packages/dataviews/build-module/components/dataform-layouts/index.mjs var import_jsx_runtime265 = __toESM(require_jsx_runtime(), 1); var FORM_FIELD_LAYOUTS = [ { type: "regular", component: FormRegularField, wrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime265.jsx)( Stack, { direction: "column", className: "dataforms-layouts__wrapper", gap: "lg", children } ) }, { type: "panel", component: FormPanelField, wrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime265.jsx)( Stack, { direction: "column", className: "dataforms-layouts__wrapper", gap: "md", children } ) }, { type: "card", component: FormCardField, wrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime265.jsx)( Stack, { direction: "column", className: "dataforms-layouts__wrapper", gap: "xl", children } ) }, { type: "row", component: FormRowField, wrapper: ({ children, layout }) => /* @__PURE__ */ (0, import_jsx_runtime265.jsx)( Stack, { direction: "column", className: "dataforms-layouts__wrapper", gap: "lg", children: /* @__PURE__ */ (0, import_jsx_runtime265.jsx)("div", { className: "dataforms-layouts-row__field", children: /* @__PURE__ */ (0, import_jsx_runtime265.jsx)( Stack, { direction: "row", gap: "lg", align: layout.alignment, children } ) }) } ) }, { type: "details", component: FormDetailsField } ]; function getFormFieldLayout(type) { return FORM_FIELD_LAYOUTS.find((layout) => layout.type === type); } // packages/dataviews/build-module/components/dataform-layouts/data-form-layout.mjs var import_jsx_runtime266 = __toESM(require_jsx_runtime(), 1); var DEFAULT_WRAPPER = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime266.jsx)(Stack, { direction: "column", className: "dataforms-layouts__wrapper", gap: "lg", children }); function DataFormLayout({ data, form, onChange, validity, children, as }) { const { fields: fieldDefinitions } = (0, import_element132.useContext)(dataform_context_default); const markWhenOptional = (0, import_element132.useMemo)(() => { const requiredCount = fieldDefinitions.filter( (f2) => !!f2.isValid?.required ).length; const optionalCount = fieldDefinitions.length - requiredCount; return requiredCount > optionalCount; }, [fieldDefinitions]); function getFieldDefinition2(field) { return fieldDefinitions.find( (fieldDefinition) => fieldDefinition.id === field.id ); } const Wrapper = as ?? getFormFieldLayout(form.layout.type)?.wrapper ?? DEFAULT_WRAPPER; return /* @__PURE__ */ (0, import_jsx_runtime266.jsx)(Wrapper, { layout: form.layout, children: form.fields.map((formField) => { const FieldLayout = getFormFieldLayout(formField.layout.type)?.component; if (!FieldLayout) { return null; } const fieldDefinition = !formField.children ? getFieldDefinition2(formField) : void 0; if (fieldDefinition && fieldDefinition.isVisible && !fieldDefinition.isVisible(data)) { return null; } if (children) { return children( FieldLayout, formField, validity?.[formField.id], markWhenOptional ); } return /* @__PURE__ */ (0, import_jsx_runtime266.jsx)( FieldLayout, { data, field: formField, onChange, markWhenOptional, validity: validity?.[formField.id] }, formField.id ); }) }); } // packages/dataviews/build-module/dataform/index.mjs var import_jsx_runtime267 = __toESM(require_jsx_runtime(), 1); function DataForm({ data, form, fields, onChange, validity }) { const normalizedForm = (0, import_element133.useMemo)(() => normalize_form_default(form), [form]); const normalizedFields = (0, import_element133.useMemo)( () => normalizeFields(fields), [fields] ); if (!form.fields) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime267.jsx)(DataFormProvider, { fields: normalizedFields, children: /* @__PURE__ */ (0, import_jsx_runtime267.jsx)( DataFormLayout, { data, form: normalizedForm, onChange, validity } ) }); } // packages/dataviews/build-module/utils/filter-sort-and-paginate.mjs var import_remove_accents2 = __toESM(require_remove_accents(), 1); var import_deprecated4 = __toESM(require_deprecated(), 1); function normalizeSearchInput2(input = "") { return (0, import_remove_accents2.default)(input.trim().toLowerCase()); } var EMPTY_ARRAY10 = []; function filterSortAndPaginate(data, view, fields) { if (!data) { return { data: EMPTY_ARRAY10, paginationInfo: { totalItems: 0, totalPages: 0 } }; } const _fields = normalizeFields(fields); let filteredData = [...data]; if (view.search) { const normalizedSearch = normalizeSearchInput2(view.search); filteredData = filteredData.filter((item) => { return _fields.filter((field) => field.enableGlobalSearch).some((field) => { const fieldValue = field.getValue({ item }); const values = Array.isArray(fieldValue) ? fieldValue : [fieldValue]; return values.some( (value) => normalizeSearchInput2(String(value)).includes( normalizedSearch ) ); }); }); } if (view.filters && view.filters?.length > 0) { view.filters.forEach((filter) => { const field = _fields.find( (_field) => _field.id === filter.field ); if (field) { if (filter.operator === OPERATOR_IS_NOT_ALL) { (0, import_deprecated4.default)("The 'isNotAll' filter operator", { since: "7.0", alternative: "'isNone'" }); } const handler = field.filter[filter.operator]; if (handler) { filteredData = filteredData.filter( (item) => handler(item, field, filter.value) ); } } }); } const sortByField = view.sort?.field ? _fields.find((field) => { return field.enableSorting !== false && field.id === view.sort?.field; }) : null; const groupByField = view.groupBy?.field ? _fields.find((field) => { return field.enableSorting !== false && field.id === view.groupBy?.field; }) : null; if (sortByField || groupByField) { filteredData.sort((a2, b2) => { if (groupByField) { const groupCompare = groupByField.sort( a2, b2, view.groupBy?.direction ?? "asc" ); if (groupCompare !== 0) { return groupCompare; } } if (sortByField) { return sortByField.sort(a2, b2, view.sort?.direction ?? "desc"); } return 0; }); } let totalItems = filteredData.length; let totalPages = 1; if (view.page !== void 0 && view.perPage !== void 0) { const start2 = (view.page - 1) * view.perPage; totalItems = filteredData?.length || 0; totalPages = Math.ceil(totalItems / view.perPage); filteredData = filteredData?.slice(start2, start2 + view.perPage); } return { data: filteredData, paginationInfo: { totalItems, totalPages } }; } // packages/edit-site/build-module/components/page-patterns/index.mjs var import_core_data48 = __toESM(require_core_data(), 1); var import_editor31 = __toESM(require_editor(), 1); var import_router31 = __toESM(require_router(), 1); // node_modules/dequal/dist/index.mjs var has = Object.prototype.hasOwnProperty; function find(iter, tar, key) { for (key of iter.keys()) { if (dequal(key, tar)) return key; } } function dequal(foo, bar) { var ctor, len, tmp; if (foo === bar) return true; if (foo && bar && (ctor = foo.constructor) === bar.constructor) { if (ctor === Date) return foo.getTime() === bar.getTime(); if (ctor === RegExp) return foo.toString() === bar.toString(); if (ctor === Array) { if ((len = foo.length) === bar.length) { while (len-- && dequal(foo[len], bar[len])) ; } return len === -1; } if (ctor === Set) { if (foo.size !== bar.size) { return false; } for (len of foo) { tmp = len; if (tmp && typeof tmp === "object") { tmp = find(bar, tmp); if (!tmp) return false; } if (!bar.has(tmp)) return false; } return true; } if (ctor === Map) { if (foo.size !== bar.size) { return false; } for (len of foo) { tmp = len[0]; if (tmp && typeof tmp === "object") { tmp = find(bar, tmp); if (!tmp) return false; } if (!dequal(len[1], bar.get(tmp))) { return false; } } return true; } if (ctor === ArrayBuffer) { foo = new Uint8Array(foo); bar = new Uint8Array(bar); } else if (ctor === DataView) { if ((len = foo.byteLength) === bar.byteLength) { while (len-- && foo.getInt8(len) === bar.getInt8(len)) ; } return len === -1; } if (ArrayBuffer.isView(foo)) { if ((len = foo.byteLength) === bar.byteLength) { while (len-- && foo[len] === bar[len]) ; } return len === -1; } if (!ctor || typeof foo === "object") { len = 0; for (ctor in foo) { if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false; if (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false; } return Object.keys(bar).length === len; } } return foo !== foo && bar !== bar; } // packages/views/build-module/use-view.mjs var import_element134 = __toESM(require_element(), 1); var import_data64 = __toESM(require_data(), 1); var import_preferences11 = __toESM(require_preferences(), 1); // packages/views/build-module/preference-keys.mjs function generatePreferenceKey(kind, name2, slug) { return `dataviews-${kind}-${name2}-${slug}`; } // packages/views/build-module/filter-utils.mjs var SCALAR_VALUES = [ "titleField", "mediaField", "descriptionField", "showTitle", "showMedia", "showDescription", "showLevels", "infiniteScrollEnabled" ]; function mergeActiveViewOverrides(view, activeViewOverrides, defaultView) { if (!activeViewOverrides) { return view; } let result = view; for (const key of SCALAR_VALUES) { if (key in activeViewOverrides) { result = { ...result, [key]: activeViewOverrides[key] }; } } if (activeViewOverrides.filters && activeViewOverrides.filters.length > 0) { const activeFields = new Set( activeViewOverrides.filters.map((f2) => f2.field) ); const preserved = (view.filters ?? []).filter( (f2) => !activeFields.has(f2.field) ); result = { ...result, filters: [...preserved, ...activeViewOverrides.filters] }; } if (activeViewOverrides.sort) { const isDefaultSort = defaultView && view.sort?.field === defaultView.sort?.field && view.sort?.direction === defaultView.sort?.direction; if (isDefaultSort) { result = { ...result, sort: activeViewOverrides.sort }; } } if (activeViewOverrides.layout) { result = { ...result, layout: { ...result.layout, ...activeViewOverrides.layout } }; } if (activeViewOverrides.groupBy) { result = { ...result, groupBy: activeViewOverrides.groupBy }; } return result; } function stripActiveViewOverrides(view, activeViewOverrides, defaultView) { if (!activeViewOverrides) { return view; } let result = view; for (const key of SCALAR_VALUES) { if (key in activeViewOverrides) { const { [key]: _, ...rest } = result; result = rest; } } if (activeViewOverrides.filters && activeViewOverrides.filters.length > 0) { const activeFields = new Set( activeViewOverrides.filters.map((f2) => f2.field) ); result = { ...result, filters: (view.filters ?? []).filter( (f2) => !activeFields.has(f2.field) ) }; } if (activeViewOverrides.sort && view.sort?.field === activeViewOverrides.sort.field && view.sort?.direction === activeViewOverrides.sort.direction) { result = { ...result, sort: defaultView?.sort }; } if (activeViewOverrides.layout && "layout" in result && result.layout) { const layout = { ...result.layout }; for (const key of Object.keys(activeViewOverrides.layout)) { delete layout[key]; } result = { ...result, layout: Object.keys(layout).length > 0 ? layout : void 0 }; } if (activeViewOverrides.groupBy && "groupBy" in result) { const { groupBy: _, ...rest } = result; result = rest; } return result; } // packages/views/build-module/use-view.mjs function omit3(obj, keys) { const result = { ...obj }; for (const key of keys) { delete result[key]; } return result; } function useView(config2) { const { kind, name: name2, slug, defaultView, activeViewOverrides, queryParams, onChangeQueryParams } = config2; const preferenceKey = generatePreferenceKey(kind, name2, slug); const persistedView = (0, import_data64.useSelect)( (select3) => { return select3(import_preferences11.store).get( "core/views", preferenceKey ); }, [preferenceKey] ); const { set } = (0, import_data64.useDispatch)(import_preferences11.store); const baseView = persistedView ?? defaultView; const page = Number(queryParams?.page ?? baseView.page ?? 1); const search = queryParams?.search ?? baseView.search ?? ""; const view = (0, import_element134.useMemo)(() => { return mergeActiveViewOverrides( { ...baseView, page, search }, activeViewOverrides, defaultView ); }, [baseView, page, search, activeViewOverrides, defaultView]); const isModified = !!persistedView; const updateView = (0, import_element134.useCallback)( (newView) => { const urlParams = { page: newView?.page, search: newView?.search }; const preferenceView = stripActiveViewOverrides( omit3(newView, ["page", "search"]), activeViewOverrides, defaultView ); if (onChangeQueryParams && !dequal(urlParams, { page, search })) { onChangeQueryParams(urlParams); } const comparableBaseView = stripActiveViewOverrides( baseView, activeViewOverrides, defaultView ); const comparableDefaultView = stripActiveViewOverrides( defaultView, activeViewOverrides, defaultView ); if (!dequal(comparableBaseView, preferenceView)) { if (dequal(preferenceView, comparableDefaultView)) { set("core/views", preferenceKey, void 0); } else { set("core/views", preferenceKey, preferenceView); } } }, [ onChangeQueryParams, page, search, baseView, defaultView, activeViewOverrides, set, preferenceKey ] ); const resetToDefault = (0, import_element134.useCallback)(() => { set("core/views", preferenceKey, void 0); }, [preferenceKey, set]); return { view, isModified, updateView, resetToDefault }; } // packages/views/build-module/load-view.mjs var import_data65 = __toESM(require_data(), 1); var import_preferences12 = __toESM(require_preferences(), 1); async function loadView(config2) { const { kind, name: name2, slug, defaultView, activeViewOverrides, queryParams } = config2; const preferenceKey = generatePreferenceKey(kind, name2, slug); const persistedView = (0, import_data65.select)(import_preferences12.store).get( "core/views", preferenceKey ); const baseView = persistedView ?? defaultView; const page = queryParams?.page ?? 1; const search = queryParams?.search ?? ""; return mergeActiveViewOverrides( { ...baseView, page, search }, activeViewOverrides, defaultView ); } // packages/edit-site/build-module/components/page-patterns/index.mjs var import_data71 = __toESM(require_data(), 1); var import_url17 = __toESM(require_url(), 1); // packages/edit-site/build-module/components/page-patterns/use-pattern-settings.mjs var import_core_data43 = __toESM(require_core_data(), 1); var import_data66 = __toESM(require_data(), 1); var import_element135 = __toESM(require_element(), 1); var import_block_editor23 = __toESM(require_block_editor(), 1); var import_editor28 = __toESM(require_editor(), 1); var { useGlobalStyles: useGlobalStyles3 } = unlock(import_editor28.privateApis); var { globalStylesDataKey } = unlock(import_block_editor23.privateApis); function usePatternSettings() { const { merged: mergedConfig } = useGlobalStyles3(); const storedSettings = (0, import_data66.useSelect)((select3) => { const { getSettings: getSettings7 } = unlock(select3(store)); return getSettings7(); }, []); const settingsBlockPatterns = storedSettings.__experimentalAdditionalBlockPatterns ?? // WP 6.0 storedSettings.__experimentalBlockPatterns; const restBlockPatterns = (0, import_data66.useSelect)( (select3) => select3(import_core_data43.store).getBlockPatterns(), [] ); const blockPatterns = (0, import_element135.useMemo)( () => [ ...settingsBlockPatterns || [], ...restBlockPatterns || [] ].filter(filterOutDuplicatesByName), [settingsBlockPatterns, restBlockPatterns] ); const [globalStyles, globalSettings] = (0, import_element135.useMemo)(() => { return generateGlobalStyles(mergedConfig, [], { disableRootPadding: false }); }, [mergedConfig]); const settings2 = (0, import_element135.useMemo)(() => { const { __experimentalAdditionalBlockPatterns, styles, __experimentalFeatures, ...restStoredSettings } = storedSettings; const nonGlobalStyles = (styles ?? []).filter( (style) => !style.isGlobalStyles ); return { ...restStoredSettings, styles: [...nonGlobalStyles, ...globalStyles], __experimentalFeatures: globalSettings, [globalStylesDataKey]: mergedConfig.styles ?? {}, __experimentalBlockPatterns: blockPatterns, isPreviewMode: true }; }, [ storedSettings, blockPatterns, globalStyles, globalSettings, mergedConfig ]); return settings2; } // packages/edit-site/build-module/components/page-patterns/actions.mjs var import_components147 = __toESM(require_components(), 1); var import_i18n136 = __toESM(require_i18n(), 1); // packages/edit-site/build-module/components/add-new-pattern/index.mjs var import_components144 = __toESM(require_components(), 1); var import_element136 = __toESM(require_element(), 1); var import_i18n133 = __toESM(require_i18n(), 1); var import_data67 = __toESM(require_data(), 1); var import_router28 = __toESM(require_router(), 1); var import_patterns2 = __toESM(require_patterns(), 1); var import_notices5 = __toESM(require_notices(), 1); var import_core_data44 = __toESM(require_core_data(), 1); var import_editor29 = __toESM(require_editor(), 1); var import_jsx_runtime268 = __toESM(require_jsx_runtime(), 1); var { useHistory: useHistory17, useLocation: useLocation25 } = unlock(import_router28.privateApis); var { CreatePatternModal, useAddPatternCategory } = unlock( import_patterns2.privateApis ); var { CreateTemplatePartModal } = unlock(import_editor29.privateApis); function AddNewPattern() { const history = useHistory17(); const location = useLocation25(); const [showPatternModal, setShowPatternModal] = (0, import_element136.useState)(false); const [showTemplatePartModal, setShowTemplatePartModal] = (0, import_element136.useState)(false); const { createPatternFromFile } = unlock((0, import_data67.useDispatch)(import_patterns2.store)); const { createSuccessNotice, createErrorNotice } = (0, import_data67.useDispatch)(import_notices5.store); const patternUploadInputRef = (0, import_element136.useRef)(); const { isBlockBasedTheme, addNewPatternLabel, addNewTemplatePartLabel, canCreatePattern, canCreateTemplatePart } = (0, import_data67.useSelect)((select3) => { const { getCurrentTheme, getPostType: getPostType2, canUser } = select3(import_core_data44.store); return { isBlockBasedTheme: getCurrentTheme()?.is_block_theme, addNewPatternLabel: getPostType2(PATTERN_TYPES.user)?.labels?.add_new_item, addNewTemplatePartLabel: getPostType2(TEMPLATE_PART_POST_TYPE)?.labels?.add_new_item, // Blocks refers to the wp_block post type, this checks the ability to create a post of that type. canCreatePattern: canUser("create", { kind: "postType", name: PATTERN_TYPES.user }), canCreateTemplatePart: canUser("create", { kind: "postType", name: TEMPLATE_PART_POST_TYPE }) }; }, []); function handleCreatePattern({ pattern }) { setShowPatternModal(false); history.navigate( `/${PATTERN_TYPES.user}/${pattern.id}?canvas=edit` ); } function handleCreateTemplatePart(templatePart) { setShowTemplatePartModal(false); history.navigate( `/${TEMPLATE_PART_POST_TYPE}/${templatePart.id}?canvas=edit` ); } function handleError() { setShowPatternModal(false); setShowTemplatePartModal(false); } const controls = []; if (canCreatePattern) { controls.push({ icon: symbol_default, onClick: () => setShowPatternModal(true), title: addNewPatternLabel }); } if (isBlockBasedTheme && canCreateTemplatePart) { controls.push({ icon: symbol_filled_default, onClick: () => setShowTemplatePartModal(true), title: addNewTemplatePartLabel }); } if (canCreatePattern) { controls.push({ icon: upload_default, onClick: () => { patternUploadInputRef.current.click(); }, title: (0, import_i18n133.__)("Import pattern from JSON") }); } const { categoryMap, findOrCreateTerm } = useAddPatternCategory(); if (controls.length === 0) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime268.jsxs)(import_jsx_runtime268.Fragment, { children: [ addNewPatternLabel && /* @__PURE__ */ (0, import_jsx_runtime268.jsx)( import_components144.DropdownMenu, { controls, icon: null, toggleProps: { variant: "primary", showTooltip: false, __next40pxDefaultSize: true }, text: addNewPatternLabel, label: addNewPatternLabel } ), showPatternModal && /* @__PURE__ */ (0, import_jsx_runtime268.jsx)( CreatePatternModal, { onClose: () => setShowPatternModal(false), onSuccess: handleCreatePattern, onError: handleError } ), showTemplatePartModal && /* @__PURE__ */ (0, import_jsx_runtime268.jsx)( CreateTemplatePartModal, { closeModal: () => setShowTemplatePartModal(false), blocks: [], onCreate: handleCreateTemplatePart, onError: handleError } ), /* @__PURE__ */ (0, import_jsx_runtime268.jsx)( "input", { type: "file", accept: ".json", hidden: true, ref: patternUploadInputRef, onChange: async (event) => { const file = event.target.files?.[0]; if (!file) { return; } try { let currentCategoryId; if (location.query.postType !== TEMPLATE_PART_POST_TYPE) { const currentCategory = Array.from( categoryMap.values() ).find( (term) => term.name === location.query.categoryId ); if (currentCategory) { currentCategoryId = currentCategory.id || await findOrCreateTerm( currentCategory.label ); } } const pattern = await createPatternFromFile( file, currentCategoryId ? [currentCategoryId] : void 0 ); if (!currentCategoryId && location.query.categoryId !== "my-patterns") { history.navigate( `/pattern?categoryId=${PATTERN_DEFAULT_CATEGORY}` ); } createSuccessNotice( (0, import_i18n133.sprintf)( // translators: %s: The imported pattern's title. (0, import_i18n133.__)('Imported "%s" from JSON.'), pattern.title.raw ), { type: "snackbar", id: "import-pattern-success" } ); } catch (err) { createErrorNotice(err.message, { type: "snackbar", id: "import-pattern-error" }); } finally { event.target.value = ""; } } } ) ] }); } // packages/edit-site/build-module/components/page-patterns/rename-category-menu-item.mjs var import_components145 = __toESM(require_components(), 1); var import_element137 = __toESM(require_element(), 1); var import_i18n134 = __toESM(require_i18n(), 1); var import_patterns3 = __toESM(require_patterns(), 1); var import_jsx_runtime269 = __toESM(require_jsx_runtime(), 1); var { RenamePatternCategoryModal } = unlock(import_patterns3.privateApis); function RenameCategoryMenuItem({ category, onClose }) { const [isModalOpen, setIsModalOpen] = (0, import_element137.useState)(false); return /* @__PURE__ */ (0, import_jsx_runtime269.jsxs)(import_jsx_runtime269.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime269.jsx)(import_components145.MenuItem, { onClick: () => setIsModalOpen(true), children: (0, import_i18n134.__)("Rename") }), isModalOpen && /* @__PURE__ */ (0, import_jsx_runtime269.jsx)( RenameModal2, { category, onClose: () => { setIsModalOpen(false); onClose(); } } ) ] }); } function RenameModal2({ category, onClose }) { const normalizedCategory = { id: category.id, slug: category.slug, name: category.label }; const existingCategories = usePatternCategories(); return /* @__PURE__ */ (0, import_jsx_runtime269.jsx)( RenamePatternCategoryModal, { category: normalizedCategory, existingCategories, onClose, overlayClassName: "edit-site-list__rename-modal", focusOnMount: "firstContentElement", size: "small" } ); } // packages/edit-site/build-module/components/page-patterns/delete-category-menu-item.mjs var import_components146 = __toESM(require_components(), 1); var import_core_data45 = __toESM(require_core_data(), 1); var import_data68 = __toESM(require_data(), 1); var import_element138 = __toESM(require_element(), 1); var import_html_entities9 = __toESM(require_html_entities(), 1); var import_i18n135 = __toESM(require_i18n(), 1); var import_notices6 = __toESM(require_notices(), 1); var import_router29 = __toESM(require_router(), 1); var import_jsx_runtime270 = __toESM(require_jsx_runtime(), 1); var { useHistory: useHistory18 } = unlock(import_router29.privateApis); function DeleteCategoryMenuItem({ category, onClose }) { const [isModalOpen, setIsModalOpen] = (0, import_element138.useState)(false); const history = useHistory18(); const { createSuccessNotice, createErrorNotice } = (0, import_data68.useDispatch)(import_notices6.store); const { deleteEntityRecord, invalidateResolution } = (0, import_data68.useDispatch)(import_core_data45.store); const onDelete = async () => { try { await deleteEntityRecord( "taxonomy", "wp_pattern_category", category.id, { force: true }, { throwOnError: true } ); invalidateResolution("getUserPatternCategories"); invalidateResolution("getEntityRecords", [ "postType", PATTERN_TYPES.user, { per_page: -1 } ]); createSuccessNotice( (0, import_i18n135.sprintf)( /* translators: %s: The pattern category's name */ (0, import_i18n135._x)('"%s" deleted.', "pattern category"), category.label ), { type: "snackbar", id: "pattern-category-delete" } ); onClose?.(); history.navigate( `/pattern?categoryId=${PATTERN_DEFAULT_CATEGORY}` ); } catch (error) { const errorMessage = error.message && error.code !== "unknown_error" ? error.message : (0, import_i18n135.__)( "An error occurred while deleting the pattern category." ); createErrorNotice(errorMessage, { type: "snackbar", id: "pattern-category-delete" }); } }; return /* @__PURE__ */ (0, import_jsx_runtime270.jsxs)(import_jsx_runtime270.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime270.jsx)(import_components146.MenuItem, { isDestructive: true, onClick: () => setIsModalOpen(true), children: (0, import_i18n135.__)("Delete") }), /* @__PURE__ */ (0, import_jsx_runtime270.jsx)( import_components146.__experimentalConfirmDialog, { isOpen: isModalOpen, onConfirm: onDelete, onCancel: () => setIsModalOpen(false), confirmButtonText: (0, import_i18n135.__)("Delete"), className: "edit-site-patterns__delete-modal", title: (0, import_i18n135.sprintf)( // translators: %s: The pattern category's name. (0, import_i18n135._x)('Delete "%s"?', "pattern category"), (0, import_html_entities9.decodeEntities)(category.label) ), size: "medium", __experimentalHideHeader: false, children: (0, import_i18n135.sprintf)( // translators: %s: The pattern category's name. (0, import_i18n135.__)( 'Are you sure you want to delete the category "%s"? The patterns will not be deleted.' ), (0, import_html_entities9.decodeEntities)(category.label) ) } ) ] }); } // packages/edit-site/build-module/components/page-patterns/actions.mjs var import_jsx_runtime271 = __toESM(require_jsx_runtime(), 1); function PatternsActions({ categoryId, type }) { const { patternCategories } = usePatternCategories(); let patternCategory; if (type === PATTERN_TYPES.user && !!categoryId) { patternCategory = patternCategories.find( (category) => category.name === categoryId ); } return /* @__PURE__ */ (0, import_jsx_runtime271.jsxs)(import_jsx_runtime271.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime271.jsx)(AddNewPattern, {}), !!patternCategory?.id && /* @__PURE__ */ (0, import_jsx_runtime271.jsx)( import_components147.DropdownMenu, { icon: more_vertical_default, label: (0, import_i18n136.__)("Actions"), toggleProps: { className: "edit-site-patterns__button", size: "compact" }, children: ({ onClose }) => /* @__PURE__ */ (0, import_jsx_runtime271.jsxs)(import_components147.MenuGroup, { children: [ /* @__PURE__ */ (0, import_jsx_runtime271.jsx)( RenameCategoryMenuItem, { category: patternCategory, onClose } ), /* @__PURE__ */ (0, import_jsx_runtime271.jsx)( DeleteCategoryMenuItem, { category: patternCategory, onClose } ) ] }) } ) ] }); } // packages/edit-site/build-module/components/dataviews-actions/index.mjs var import_i18n137 = __toESM(require_i18n(), 1); var import_element139 = __toESM(require_element(), 1); var import_router30 = __toESM(require_router(), 1); var import_data69 = __toESM(require_data(), 1); var import_core_data46 = __toESM(require_core_data(), 1); var import_url16 = __toESM(require_url(), 1); var { useLocation: useLocation26, useHistory: useHistory19 } = unlock(import_router30.privateApis); var useSetActiveTemplateAction = () => { const activeTheme = (0, import_data69.useSelect)( (select3) => select3(import_core_data46.store).getCurrentTheme() ); const { getEntityRecord } = (0, import_data69.useSelect)(import_core_data46.store); const { editEntityRecord, saveEditedEntityRecord } = (0, import_data69.useDispatch)(import_core_data46.store); return (0, import_element139.useMemo)( () => ({ id: "set-active-template", label(items) { return items.some((item) => item._isActive) ? (0, import_i18n137.__)("Deactivate") : (0, import_i18n137.__)("Activate"); }, isPrimary: true, icon: pencil_default, isEligible(item) { if (item.theme !== activeTheme.stylesheet) { return false; } if (typeof item.id !== "number") { return item._isActive === false; } return true; }, async callback(items) { const deactivate = items.some((item) => item._isActive); const activeTemplates = { ...await getEntityRecord("root", "site").active_templates ?? {} }; for (const item of items) { if (deactivate) { delete activeTemplates[item.slug]; } else { activeTemplates[item.slug] = item.id; } } await editEntityRecord("root", "site", void 0, { active_templates: activeTemplates }); await saveEditedEntityRecord("root", "site"); } }), [ editEntityRecord, saveEditedEntityRecord, getEntityRecord, activeTheme ] ); }; var useEditPostAction = () => { const history = useHistory19(); return (0, import_element139.useMemo)( () => ({ id: "edit-post", label: (0, import_i18n137.__)("Edit"), icon: pencil_default, isEligible(post2) { if (post2.status === "trash") { return false; } return post2.type !== PATTERN_TYPES.theme; }, callback(items) { const post2 = items[0]; history.navigate(`/${post2.type}/${post2.id}?canvas=edit`); } }), [history] ); }; var useQuickEditPostAction = () => { const history = useHistory19(); const { path, query } = useLocation26(); return (0, import_element139.useMemo)( () => ({ id: "quick-edit", label: (0, import_i18n137.__)("Quick Edit"), icon: drawer_right_default, isPrimary: true, supportsBulk: true, isEligible(post2) { if (post2.status === "trash") { return false; } return post2.type === "page"; }, callback(items) { history.navigate( (0, import_url16.addQueryArgs)(path, { ...query, quickEdit: true, postId: items.map((item) => item.id).join(",") }) ); } }), [history, path, query] ); }; // packages/edit-site/build-module/components/page-patterns/fields.mjs var import_components148 = __toESM(require_components(), 1); var import_i18n138 = __toESM(require_i18n(), 1); var import_element140 = __toESM(require_element(), 1); var import_block_editor24 = __toESM(require_block_editor(), 1); var import_blocks12 = __toESM(require_blocks(), 1); var import_editor30 = __toESM(require_editor(), 1); // packages/edit-site/build-module/components/page-templates/hooks.mjs var import_core_data47 = __toESM(require_core_data(), 1); var import_data70 = __toESM(require_data(), 1); function useAddedBy(postType2, postId) { return (0, import_data70.useSelect)( (select3) => { const { getEntityRecord, getUser, getEditedEntityRecord } = select3(import_core_data47.store); const template = getEditedEntityRecord( "postType", postType2, postId ); const originalSource = template?.original_source; const authorText = template?.author_text; switch (originalSource) { case "theme": { return { type: originalSource, icon: layout_default, text: authorText, isCustomized: template.source === TEMPLATE_ORIGINS.custom }; } case "plugin": { return { type: originalSource, icon: plugins_default, text: authorText, isCustomized: template.source === TEMPLATE_ORIGINS.custom }; } case "site": { const siteData = getEntityRecord( "root", "__unstableBase" ); return { type: originalSource, icon: globe_default, imageUrl: siteData?.site_logo ? getEntityRecord( "postType", "attachment", siteData.site_logo )?.source_url : void 0, text: authorText, isCustomized: false }; } default: { const user = getUser(template.author); return { type: "user", icon: comment_author_avatar_default, imageUrl: user?.avatar_urls?.[48], text: authorText ?? user?.name, isCustomized: false }; } } }, [postType2, postId] ); } // packages/edit-site/build-module/components/page-patterns/fields.mjs var import_jsx_runtime272 = __toESM(require_jsx_runtime(), 1); var { useStyle: useStyle4 } = unlock(import_editor30.privateApis); function PreviewField({ item }) { const descriptionId = (0, import_element140.useId)(); const description = item.description || item?.excerpt?.raw; const isTemplatePart2 = item.type === TEMPLATE_PART_POST_TYPE; const backgroundColor = useStyle4("color.background"); const blocks = (0, import_element140.useMemo)(() => { return item.blocks ?? (0, import_blocks12.parse)(item.content.raw, { __unstableSkipMigrationLogs: true }); }, [item?.content?.raw, item.blocks]); const isEmpty3 = !blocks?.length; return /* @__PURE__ */ (0, import_jsx_runtime272.jsxs)( "div", { className: "page-patterns-preview-field", style: { backgroundColor }, "aria-describedby": !!description ? descriptionId : void 0, children: [ isEmpty3 && isTemplatePart2 && (0, import_i18n138.__)("Empty template part"), isEmpty3 && !isTemplatePart2 && (0, import_i18n138.__)("Empty pattern"), !isEmpty3 && /* @__PURE__ */ (0, import_jsx_runtime272.jsx)(import_block_editor24.BlockPreview.Async, { children: /* @__PURE__ */ (0, import_jsx_runtime272.jsx)( import_block_editor24.BlockPreview, { blocks, viewportWidth: item.viewportWidth } ) }), !!description && /* @__PURE__ */ (0, import_jsx_runtime272.jsx)("div", { hidden: true, id: descriptionId, children: description }) ] } ); } var previewField = { label: (0, import_i18n138.__)("Preview"), id: "preview", render: PreviewField, enableSorting: false }; var SYNC_FILTERS = [ { value: PATTERN_SYNC_TYPES.full, label: (0, import_i18n138._x)("Synced", "pattern (singular)"), description: (0, import_i18n138.__)("Patterns that are kept in sync across the site.") }, { value: PATTERN_SYNC_TYPES.unsynced, label: (0, import_i18n138._x)("Not synced", "pattern (singular)"), description: (0, import_i18n138.__)( "Patterns that can be changed freely without affecting the site." ) } ]; var patternStatusField = { label: (0, import_i18n138.__)("Sync status"), id: "sync-status", render: ({ item }) => { const syncStatus = "wp_pattern_sync_status" in item ? item.wp_pattern_sync_status || PATTERN_SYNC_TYPES.full : PATTERN_SYNC_TYPES.unsynced; return /* @__PURE__ */ (0, import_jsx_runtime272.jsx)( "span", { className: `edit-site-patterns__field-sync-status-${syncStatus}`, children: SYNC_FILTERS.find(({ value }) => value === syncStatus).label } ); }, elements: SYNC_FILTERS, filterBy: { operators: [OPERATOR_IS], isPrimary: true }, enableSorting: false }; function AuthorField({ item }) { const [isImageLoaded, setIsImageLoaded] = (0, import_element140.useState)(false); const { text, icon, imageUrl } = useAddedBy(item.type, item.id); return /* @__PURE__ */ (0, import_jsx_runtime272.jsxs)(import_components148.__experimentalHStack, { alignment: "left", spacing: 0, children: [ imageUrl && /* @__PURE__ */ (0, import_jsx_runtime272.jsx)( "div", { className: clsx_default("page-templates-author-field__avatar", { "is-loaded": isImageLoaded }), children: /* @__PURE__ */ (0, import_jsx_runtime272.jsx)( "img", { onLoad: () => setIsImageLoaded(true), alt: "", src: imageUrl } ) } ), !imageUrl && /* @__PURE__ */ (0, import_jsx_runtime272.jsx)("div", { className: "page-templates-author-field__icon", children: /* @__PURE__ */ (0, import_jsx_runtime272.jsx)(icon_default, { icon }) }), /* @__PURE__ */ (0, import_jsx_runtime272.jsx)("span", { className: "page-templates-author-field__name", children: text }) ] }); } var templatePartAuthorField = { label: (0, import_i18n138.__)("Author"), id: "author", getValue: ({ item }) => item.author_text, render: AuthorField, filterBy: { isPrimary: true } }; // packages/edit-site/build-module/components/page-patterns/index.mjs var import_jsx_runtime273 = __toESM(require_jsx_runtime(), 1); var { ExperimentalBlockEditorProvider } = unlock(import_block_editor25.privateApis); var { usePostActions, patternTitleField } = unlock(import_editor31.privateApis); var { useLocation: useLocation27, useHistory: useHistory20 } = unlock(import_router31.privateApis); var EMPTY_ARRAY11 = []; var defaultLayouts = { [LAYOUT_TABLE]: { layout: { styles: { author: { width: "1%" } } } }, [LAYOUT_GRID]: { layout: { badgeFields: ["sync-status"] } } }; var DEFAULT_VIEW = { type: LAYOUT_GRID, perPage: 20, titleField: "title", mediaField: "preview", fields: ["sync-status"], filters: [], ...defaultLayouts[LAYOUT_GRID] }; function usePagePatternsHeader(type, categoryId) { const { patternCategories } = usePatternCategories(); const templatePartAreas = (0, import_data71.useSelect)( (select3) => select3(import_core_data48.store).getCurrentTheme()?.default_template_part_areas || [], [] ); let title, description, patternCategory; if (type === TEMPLATE_PART_POST_TYPE) { const templatePartArea = templatePartAreas.find( (area) => area.area === categoryId ); title = templatePartArea?.label || (0, import_i18n139.__)("All Template Parts"); description = templatePartArea?.description || (0, import_i18n139.__)("Includes every template part defined for any area."); } else if (type === PATTERN_TYPES.user && !!categoryId) { patternCategory = patternCategories.find( (category) => category.name === categoryId ); title = patternCategory?.label; description = patternCategory?.description; } return { title, description }; } function DataviewsPatterns() { const { path, query } = useLocation27(); const { postType: postType2 = "wp_block", categoryId: categoryIdFromURL } = query; const history = useHistory20(); const categoryId = categoryIdFromURL || PATTERN_DEFAULT_CATEGORY; const { view, updateView, isModified, resetToDefault } = useView({ kind: "postType", name: postType2, slug: "default", defaultView: DEFAULT_VIEW, queryParams: { page: query.pageNumber, search: query.search }, onChangeQueryParams: (params) => { history.navigate( (0, import_url17.addQueryArgs)(path, { ...query, pageNumber: params.page, search: params.search }) ); } }); const viewSyncStatus = view.filters?.find( ({ field }) => field === "sync-status" )?.value; const { patterns, isResolving } = use_patterns_default(postType2, categoryId, { search: view.search, syncStatus: viewSyncStatus }); const { records } = (0, import_core_data48.useEntityRecords)("postType", TEMPLATE_PART_POST_TYPE, { per_page: -1 }); const authors = (0, import_element141.useMemo)(() => { if (!records) { return EMPTY_ARRAY11; } const authorsSet = /* @__PURE__ */ new Set(); records.forEach((template) => { authorsSet.add(template.author_text); }); return Array.from(authorsSet).map((author) => ({ value: author, label: author })); }, [records]); const fields = (0, import_element141.useMemo)(() => { const _fields = [previewField, patternTitleField]; if (postType2 === PATTERN_TYPES.user) { _fields.push(patternStatusField); } else if (postType2 === TEMPLATE_PART_POST_TYPE) { _fields.push({ ...templatePartAuthorField, elements: authors }); } return _fields; }, [postType2, authors]); const { data, paginationInfo } = (0, import_element141.useMemo)(() => { const viewWithoutFilters = { ...view }; delete viewWithoutFilters.search; if (postType2 !== TEMPLATE_PART_POST_TYPE) { viewWithoutFilters.filters = []; } return filterSortAndPaginate(patterns, viewWithoutFilters, fields); }, [patterns, view, fields, postType2]); const dataWithPermissions = useAugmentPatternsWithPermissions(data); const templatePartActions = usePostActions({ postType: TEMPLATE_PART_POST_TYPE, context: "list" }); const patternActions = usePostActions({ postType: PATTERN_TYPES.user, context: "list" }); const editAction = useEditPostAction(); const actions = (0, import_element141.useMemo)(() => { if (postType2 === TEMPLATE_PART_POST_TYPE) { return [editAction, ...templatePartActions].filter(Boolean); } return [editAction, ...patternActions].filter(Boolean); }, [editAction, postType2, templatePartActions, patternActions]); const settings2 = usePatternSettings(); const { title, description } = usePagePatternsHeader( postType2, categoryId ); return /* @__PURE__ */ (0, import_jsx_runtime273.jsx)(ExperimentalBlockEditorProvider, { settings: settings2, children: /* @__PURE__ */ (0, import_jsx_runtime273.jsx)( page_default2, { className: "edit-site-page-patterns-dataviews", title, headingLevel: 2, subTitle: description, actions: /* @__PURE__ */ (0, import_jsx_runtime273.jsx)( PatternsActions, { categoryId, type: postType2 } ), children: /* @__PURE__ */ (0, import_jsx_runtime273.jsx)( dataviews_default, { paginationInfo, fields, actions, data: dataWithPermissions || EMPTY_ARRAY11, getItemId: (item) => item.name ?? item.id, isLoading: isResolving, isItemClickable: (item) => item.type !== PATTERN_TYPES.theme, onClickItem: (item) => { history.navigate( `/${item.type}/${[ PATTERN_TYPES.user, TEMPLATE_PART_POST_TYPE ].includes(item.type) ? item.id : item.name}?canvas=edit` ); }, view, onChangeView: updateView, defaultLayouts, onReset: isModified ? resetToDefault : false }, categoryId + postType2 ) } ) }); } // packages/edit-site/build-module/components/site-editor-routes/patterns.mjs var import_jsx_runtime274 = __toESM(require_jsx_runtime(), 1); var patternsRoute = { name: "patterns", path: "/pattern", areas: { sidebar({ siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; const backPath = isBlockTheme || isClassicThemeWithStyleBookSupport(siteData) ? "/" : void 0; return /* @__PURE__ */ (0, import_jsx_runtime274.jsx)(SidebarNavigationScreenPatterns, { backPath }); }, content: /* @__PURE__ */ (0, import_jsx_runtime274.jsx)(DataviewsPatterns, {}), mobile({ siteData, query }) { const { categoryId } = query; const isBlockTheme = siteData.currentTheme?.is_block_theme; const backPath = isBlockTheme || isClassicThemeWithStyleBookSupport(siteData) ? "/" : void 0; return !!categoryId ? /* @__PURE__ */ (0, import_jsx_runtime274.jsx)(DataviewsPatterns, {}) : /* @__PURE__ */ (0, import_jsx_runtime274.jsx)(SidebarNavigationScreenPatterns, { backPath }); } } }; // packages/edit-site/build-module/components/site-editor-routes/pattern-item.mjs var import_jsx_runtime275 = __toESM(require_jsx_runtime(), 1); var patternItemRoute = { name: "pattern-item", path: "/wp_block/:postId", areas: { sidebar({ siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; const backPath = isBlockTheme || isClassicThemeWithStyleBookSupport(siteData) ? "/" : void 0; return /* @__PURE__ */ (0, import_jsx_runtime275.jsx)(SidebarNavigationScreenPatterns, { backPath }); }, mobile: /* @__PURE__ */ (0, import_jsx_runtime275.jsx)(EditSiteEditor, {}), preview: /* @__PURE__ */ (0, import_jsx_runtime275.jsx)(EditSiteEditor, {}) } }; // packages/edit-site/build-module/components/site-editor-routes/template-part-item.mjs var import_jsx_runtime276 = __toESM(require_jsx_runtime(), 1); var templatePartItemRoute = { name: "template-part-item", path: "/wp_template_part/*postId", areas: { sidebar: /* @__PURE__ */ (0, import_jsx_runtime276.jsx)(SidebarNavigationScreenPatterns, { backPath: "/" }), mobile: /* @__PURE__ */ (0, import_jsx_runtime276.jsx)(EditSiteEditor, {}), preview: /* @__PURE__ */ (0, import_jsx_runtime276.jsx)(EditSiteEditor, {}) } }; // packages/edit-site/build-module/components/sidebar-navigation-screen-templates-browse/index.mjs var import_i18n142 = __toESM(require_i18n(), 1); // packages/edit-site/build-module/components/sidebar-navigation-screen-templates-browse/content.mjs var import_core_data49 = __toESM(require_core_data(), 1); var import_element142 = __toESM(require_element(), 1); var import_components149 = __toESM(require_components(), 1); var import_i18n140 = __toESM(require_i18n(), 1); var import_router32 = __toESM(require_router(), 1); var import_url18 = __toESM(require_url(), 1); var import_jsx_runtime277 = __toESM(require_jsx_runtime(), 1); var { useLocation: useLocation28 } = unlock(import_router32.privateApis); var EMPTY_ARRAY12 = []; function TemplateDataviewItem({ template, isActive }) { const { text, icon } = useAddedBy(template.type, template.id); return /* @__PURE__ */ (0, import_jsx_runtime277.jsx)( SidebarNavigationItem, { to: (0, import_url18.addQueryArgs)("/template", { activeView: text }), icon, "aria-current": isActive, children: text } ); } function DataviewsTemplatesSidebarContent() { const { query: { activeView = "active" } } = useLocation28(); const { records } = (0, import_core_data49.useEntityRecords)("root", "registeredTemplate", { // This should not be needed, the endpoint returns all registered // templates, but it's not possible right now to turn off pagination for // entity configs. per_page: -1 }); const firstItemPerAuthorText = (0, import_element142.useMemo)(() => { const firstItemPerAuthor = records?.reduce((acc, template) => { const author = template.author_text; if (author && !acc[author]) { acc[author] = template; } return acc; }, {}); return (firstItemPerAuthor && Object.values(firstItemPerAuthor)) ?? EMPTY_ARRAY12; }, [records]); return /* @__PURE__ */ (0, import_jsx_runtime277.jsxs)(import_components149.__experimentalItemGroup, { className: "edit-site-sidebar-navigation-screen-templates-browse", children: [ /* @__PURE__ */ (0, import_jsx_runtime277.jsx)( SidebarNavigationItem, { to: "/template", icon: published_default, "aria-current": activeView === "active", children: (0, import_i18n140.__)("Active templates") } ), /* @__PURE__ */ (0, import_jsx_runtime277.jsx)( SidebarNavigationItem, { to: (0, import_url18.addQueryArgs)("/template", { activeView: "user" }), icon: comment_author_avatar_default, "aria-current": activeView === "user", // Let's avoid calling them "custom templates" to avoid // confusion. "Created" is closest to meaning database // templates, created by users. // https://developer.wordpress.org/themes/classic-themes/templates/page-template-files/#creating-custom-page-templates-for-global-use children: (0, import_i18n140.__)("Created templates") } ), firstItemPerAuthorText.map((template) => { return /* @__PURE__ */ (0, import_jsx_runtime277.jsx)( TemplateDataviewItem, { template, isActive: activeView === template.author_text }, template.author_text ); }) ] }); } // packages/edit-site/build-module/components/sidebar-navigation-screen-templates-browse/content-legacy.mjs var import_core_data50 = __toESM(require_core_data(), 1); var import_element143 = __toESM(require_element(), 1); var import_components150 = __toESM(require_components(), 1); var import_i18n141 = __toESM(require_i18n(), 1); var import_router33 = __toESM(require_router(), 1); var import_url19 = __toESM(require_url(), 1); var import_jsx_runtime278 = __toESM(require_jsx_runtime(), 1); var { useLocation: useLocation29 } = unlock(import_router33.privateApis); var EMPTY_ARRAY13 = []; function TemplateDataviewItem2({ template, isActive }) { const { text, icon } = useAddedBy(template.type, template.id); return /* @__PURE__ */ (0, import_jsx_runtime278.jsx)( SidebarNavigationItem, { to: (0, import_url19.addQueryArgs)("/template", { activeView: text }), icon, "aria-current": isActive, children: text } ); } function DataviewsTemplatesSidebarContent2() { const { query: { activeView = "all" } } = useLocation29(); const { records } = (0, import_core_data50.useEntityRecords)("postType", TEMPLATE_POST_TYPE, { per_page: -1 }); const firstItemPerAuthorText = (0, import_element143.useMemo)(() => { const firstItemPerAuthor = records?.reduce((acc, template) => { const author = template.author_text; if (author && !acc[author]) { acc[author] = template; } return acc; }, {}); return (firstItemPerAuthor && Object.values(firstItemPerAuthor)) ?? EMPTY_ARRAY13; }, [records]); return /* @__PURE__ */ (0, import_jsx_runtime278.jsxs)(import_components150.__experimentalItemGroup, { className: "edit-site-sidebar-navigation-screen-templates-browse", children: [ /* @__PURE__ */ (0, import_jsx_runtime278.jsx)( SidebarNavigationItem, { to: "/template", icon: layout_default, "aria-current": activeView === "all", children: (0, import_i18n141.__)("All templates") } ), firstItemPerAuthorText.map((template) => { return /* @__PURE__ */ (0, import_jsx_runtime278.jsx)( TemplateDataviewItem2, { template, isActive: activeView === template.author_text }, template.author_text ); }) ] }); } // packages/edit-site/build-module/components/sidebar-navigation-screen-templates-browse/index.mjs var import_jsx_runtime279 = __toESM(require_jsx_runtime(), 1); function SidebarNavigationScreenTemplatesBrowse({ backPath }) { return /* @__PURE__ */ (0, import_jsx_runtime279.jsx)( SidebarNavigationScreen, { title: (0, import_i18n142.__)("Templates"), description: (0, import_i18n142.__)( "Create new templates, or reset any customizations made to the templates supplied by your theme." ), backPath, content: window?.__experimentalTemplateActivate ? /* @__PURE__ */ (0, import_jsx_runtime279.jsx)(DataviewsTemplatesSidebarContent, {}) : /* @__PURE__ */ (0, import_jsx_runtime279.jsx)(DataviewsTemplatesSidebarContent2, {}) } ); } // packages/edit-site/build-module/components/page-templates/index.mjs var import_i18n148 = __toESM(require_i18n(), 1); var import_html_entities14 = __toESM(require_html_entities(), 1); var import_element149 = __toESM(require_element(), 1); var import_core_data55 = __toESM(require_core_data(), 1); var import_router35 = __toESM(require_router(), 1); var import_editor35 = __toESM(require_editor(), 1); var import_url22 = __toESM(require_url(), 1); var import_data75 = __toESM(require_data(), 1); var import_compose30 = __toESM(require_compose(), 1); var import_components155 = __toESM(require_components(), 1); var import_notices8 = __toESM(require_notices(), 1); // packages/edit-site/build-module/components/add-new-template/index.mjs var import_components153 = __toESM(require_components(), 1); var import_html_entities12 = __toESM(require_html_entities(), 1); var import_element147 = __toESM(require_element(), 1); var import_data73 = __toESM(require_data(), 1); var import_core_data53 = __toESM(require_core_data(), 1); var import_compose29 = __toESM(require_compose(), 1); var import_i18n146 = __toESM(require_i18n(), 1); var import_notices7 = __toESM(require_notices(), 1); var import_router34 = __toESM(require_router(), 1); var import_dom13 = __toESM(require_dom(), 1); // packages/edit-site/build-module/components/add-new-template/add-custom-template-modal-content.mjs var import_element145 = __toESM(require_element(), 1); var import_i18n144 = __toESM(require_i18n(), 1); var import_components151 = __toESM(require_components(), 1); var import_core_data52 = __toESM(require_core_data(), 1); var import_html_entities11 = __toESM(require_html_entities(), 1); var import_compose28 = __toESM(require_compose(), 1); var import_dom12 = __toESM(require_dom(), 1); var import_url21 = __toESM(require_url(), 1); // packages/edit-site/build-module/components/add-new-template/utils.mjs var import_data72 = __toESM(require_data(), 1); var import_core_data51 = __toESM(require_core_data(), 1); var import_html_entities10 = __toESM(require_html_entities(), 1); var import_element144 = __toESM(require_element(), 1); var import_i18n143 = __toESM(require_i18n(), 1); var import_url20 = __toESM(require_url(), 1); var EMPTY_OBJECT2 = {}; var getValueFromObjectPath2 = (object, path) => { let value = object; path.split(".").forEach((fieldName) => { value = value?.[fieldName]; }); return value; }; function prefixSlug(prefix2, slug) { return `${prefix2}-${(0, import_url20.safeDecodeURI)(slug)}`; } var mapToIHasNameAndId = (entities, path) => { return (entities || []).map((entity) => ({ ...entity, name: (0, import_html_entities10.decodeEntities)(getValueFromObjectPath2(entity, path)) })); }; var useExistingTemplates = () => { return (0, import_data72.useSelect)( (select3) => select3(import_core_data51.store).getEntityRecords( "postType", TEMPLATE_POST_TYPE, { per_page: -1 } ), [] ); }; var useDefaultTemplateTypes = () => { return (0, import_data72.useSelect)( (select3) => select3(import_core_data51.store).getCurrentTheme()?.default_template_types || [], [] ); }; var usePublicPostTypes = () => { const postTypes = (0, import_data72.useSelect)( (select3) => select3(import_core_data51.store).getPostTypes({ per_page: -1 }), [] ); return (0, import_element144.useMemo)(() => { const excludedPostTypes = ["attachment"]; return postTypes?.filter( ({ viewable, slug }) => viewable && !excludedPostTypes.includes(slug) ).sort((a2, b2) => { if (a2.slug === "post" || b2.slug === "post") { return 0; } return a2.name.localeCompare(b2.name); }); }, [postTypes]); }; var usePublicTaxonomies = () => { const taxonomies = (0, import_data72.useSelect)( (select3) => select3(import_core_data51.store).getTaxonomies({ per_page: -1 }), [] ); return (0, import_element144.useMemo)(() => { return taxonomies?.filter( ({ visibility }) => visibility?.publicly_queryable ); }, [taxonomies]); }; function usePostTypeArchiveMenuItems() { const publicPostTypes = usePublicPostTypes(); const postTypesWithArchives = (0, import_element144.useMemo)( () => publicPostTypes?.filter((postType2) => postType2.has_archive), [publicPostTypes] ); const existingTemplates = useExistingTemplates(); const postTypeLabels = (0, import_element144.useMemo)( () => publicPostTypes?.reduce((accumulator, { labels }) => { const singularName = labels.singular_name.toLowerCase(); accumulator[singularName] = (accumulator[singularName] || 0) + 1; return accumulator; }, {}), [publicPostTypes] ); const needsUniqueIdentifier = (0, import_element144.useCallback)( ({ labels, slug }) => { const singularName = labels.singular_name.toLowerCase(); return postTypeLabels[singularName] > 1 && singularName !== slug; }, [postTypeLabels] ); return (0, import_element144.useMemo)( () => postTypesWithArchives?.filter( (postType2) => !(existingTemplates || []).some( (existingTemplate) => existingTemplate.slug === "archive-" + postType2.slug ) ).map((postType2) => { let title; if (needsUniqueIdentifier(postType2)) { title = (0, import_i18n143.sprintf)( // translators: %1s: Name of the post type e.g: "Post"; %2s: Slug of the post type e.g: "book". (0, import_i18n143.__)("Archive: %1$s (%2$s)"), postType2.labels.singular_name, postType2.slug ); } else { title = (0, import_i18n143.sprintf)( // translators: %s: Name of the post type e.g: "Post". (0, import_i18n143.__)("Archive: %s"), postType2.labels.singular_name ); } return { slug: "archive-" + postType2.slug, description: (0, import_i18n143.sprintf)( // translators: %s: Name of the post type e.g: "Post". (0, import_i18n143.__)( "Displays an archive with the latest posts of type: %s." ), postType2.labels.singular_name ), title, // `icon` is the `menu_icon` property of a post type. We // only handle `dashicons` for now, even if the `menu_icon` // also supports urls and svg as values. icon: typeof postType2.icon === "string" && postType2.icon.startsWith("dashicons-") ? postType2.icon.slice(10) : archive_default, templatePrefix: "archive" }; }) || [], [postTypesWithArchives, existingTemplates, needsUniqueIdentifier] ); } var usePostTypeMenuItems = (onClickMenuItem) => { const publicPostTypes = usePublicPostTypes(); const defaultTemplateTypes = useDefaultTemplateTypes(); const templateLabels = (0, import_element144.useMemo)( () => publicPostTypes?.reduce((accumulator, { labels }) => { const templateName = (labels.template_name || labels.singular_name).toLowerCase(); accumulator[templateName] = (accumulator[templateName] || 0) + 1; return accumulator; }, {}), [publicPostTypes] ); const needsUniqueIdentifier = (0, import_element144.useCallback)( ({ labels, slug }) => { const templateName = (labels.template_name || labels.singular_name).toLowerCase(); return templateLabels[templateName] > 1 && templateName !== slug; }, [templateLabels] ); const templatePrefixes = (0, import_element144.useMemo)( () => publicPostTypes?.reduce((accumulator, { slug }) => { let suffix = slug; if (slug !== "page") { suffix = `single-${suffix}`; } accumulator[slug] = suffix; return accumulator; }, {}), [publicPostTypes] ); const postTypesInfo = useEntitiesInfo("postType", templatePrefixes); const menuItems = (publicPostTypes || []).reduce( (accumulator, postType2) => { const { slug, labels, icon } = postType2; const generalTemplateSlug = templatePrefixes[slug]; const defaultTemplateType = defaultTemplateTypes?.find( ({ slug: _slug }) => _slug === generalTemplateSlug ); const _needsUniqueIdentifier = needsUniqueIdentifier(postType2); let menuItemTitle = labels.template_name || (0, import_i18n143.sprintf)( // translators: %s: Name of the post type e.g: "Post". (0, import_i18n143.__)("Single item: %s"), labels.singular_name ); if (_needsUniqueIdentifier) { menuItemTitle = labels.template_name ? (0, import_i18n143.sprintf)( // translators: 1: Name of the template e.g: "Single Item: Post". 2: Slug of the post type e.g: "book". (0, import_i18n143._x)("%1$s (%2$s)", "post type menu label"), labels.template_name, slug ) : (0, import_i18n143.sprintf)( // translators: 1: Name of the post type e.g: "Post". 2: Slug of the post type e.g: "book". (0, import_i18n143._x)( "Single item: %1$s (%2$s)", "post type menu label" ), labels.singular_name, slug ); } const menuItem = defaultTemplateType ? { ...defaultTemplateType, templatePrefix: templatePrefixes[slug] } : { slug: generalTemplateSlug, title: menuItemTitle, description: (0, import_i18n143.sprintf)( // translators: %s: Name of the post type e.g: "Post". (0, import_i18n143.__)("Displays a single item: %s."), labels.singular_name ), // `icon` is the `menu_icon` property of a post type. We // only handle `dashicons` for now, even if the `menu_icon` // also supports urls and svg as values. icon: typeof icon === "string" && icon.startsWith("dashicons-") ? icon.slice(10) : post_default, templatePrefix: templatePrefixes[slug] }; const hasEntities = postTypesInfo?.[slug]?.hasEntities; if (hasEntities) { menuItem.onClick = (template) => { onClickMenuItem({ type: "postType", slug, config: { recordNamePath: "title.rendered", queryArgs: ({ search }) => { return { _fields: "id,title,slug,link", orderBy: search ? "relevance" : "modified", exclude: postTypesInfo[slug].existingEntitiesIds }; }, getSpecificTemplate: (suggestion) => { const templateSlug = prefixSlug( templatePrefixes[slug], suggestion.slug ); return { title: templateSlug, slug: templateSlug, templatePrefix: templatePrefixes[slug] }; } }, labels, template }); }; } if (hasEntities) { accumulator.push(menuItem); } return accumulator; }, [] ); const postTypesMenuItems = (0, import_element144.useMemo)( () => menuItems.reduce( (accumulator, postType2) => { const { slug } = postType2; let key = "postTypesMenuItems"; if (slug === "page") { key = "defaultPostTypesMenuItems"; } accumulator[key].push(postType2); return accumulator; }, { defaultPostTypesMenuItems: [], postTypesMenuItems: [] } ), [menuItems] ); return postTypesMenuItems; }; var useTaxonomiesMenuItems = (onClickMenuItem) => { const publicTaxonomies = usePublicTaxonomies(); const existingTemplates = useExistingTemplates(); const defaultTemplateTypes = useDefaultTemplateTypes(); const templatePrefixes = (0, import_element144.useMemo)( () => publicTaxonomies?.reduce((accumulator, { slug }) => { let suffix = slug; if (!["category", "post_tag"].includes(slug)) { suffix = `taxonomy-${suffix}`; } if (slug === "post_tag") { suffix = `tag`; } accumulator[slug] = suffix; return accumulator; }, {}), [publicTaxonomies] ); const taxonomyLabels = publicTaxonomies?.reduce( (accumulator, { labels }) => { const templateName = (labels.template_name || labels.singular_name).toLowerCase(); accumulator[templateName] = (accumulator[templateName] || 0) + 1; return accumulator; }, {} ); const needsUniqueIdentifier = (labels, slug) => { if (["category", "post_tag"].includes(slug)) { return false; } const templateName = (labels.template_name || labels.singular_name).toLowerCase(); return taxonomyLabels[templateName] > 1 && templateName !== slug; }; const taxonomiesInfo = useEntitiesInfo("taxonomy", templatePrefixes); const existingTemplateSlugs = (existingTemplates || []).map( ({ slug }) => slug ); const menuItems = (publicTaxonomies || []).reduce( (accumulator, taxonomy) => { const { slug, labels } = taxonomy; const generalTemplateSlug = templatePrefixes[slug]; const defaultTemplateType = defaultTemplateTypes?.find( ({ slug: _slug }) => _slug === generalTemplateSlug ); const hasGeneralTemplate = existingTemplateSlugs?.includes(generalTemplateSlug); const _needsUniqueIdentifier = needsUniqueIdentifier( labels, slug ); let menuItemTitle = labels.template_name || labels.singular_name; if (_needsUniqueIdentifier) { menuItemTitle = labels.template_name ? (0, import_i18n143.sprintf)( // translators: 1: Name of the template e.g: "Products by Category". 2: Slug of the taxonomy e.g: "product_cat". (0, import_i18n143._x)("%1$s (%2$s)", "taxonomy template menu label"), labels.template_name, slug ) : (0, import_i18n143.sprintf)( // translators: 1: Name of the taxonomy e.g: "Category". 2: Slug of the taxonomy e.g: "product_cat". (0, import_i18n143._x)("%1$s (%2$s)", "taxonomy menu label"), labels.singular_name, slug ); } const menuItem = defaultTemplateType ? { ...defaultTemplateType, templatePrefix: templatePrefixes[slug] } : { slug: generalTemplateSlug, title: menuItemTitle, description: (0, import_i18n143.sprintf)( // translators: %s: Name of the taxonomy e.g: "Product Categories". (0, import_i18n143.__)("Displays taxonomy: %s."), labels.singular_name ), icon: block_meta_default, templatePrefix: templatePrefixes[slug] }; const hasEntities = taxonomiesInfo?.[slug]?.hasEntities; if (hasEntities) { menuItem.onClick = (template) => { onClickMenuItem({ type: "taxonomy", slug, config: { queryArgs: ({ search }) => { return { _fields: "id,name,slug,link", orderBy: search ? "name" : "count", exclude: taxonomiesInfo[slug].existingEntitiesIds }; }, getSpecificTemplate: (suggestion) => { const templateSlug = prefixSlug( templatePrefixes[slug], suggestion.slug ); return { title: templateSlug, slug: templateSlug, templatePrefix: templatePrefixes[slug] }; } }, labels, hasGeneralTemplate, template }); }; } if (!hasGeneralTemplate || hasEntities) { accumulator.push(menuItem); } return accumulator; }, [] ); const taxonomiesMenuItems = (0, import_element144.useMemo)( () => menuItems.reduce( (accumulator, taxonomy) => { const { slug } = taxonomy; let key = "taxonomiesMenuItems"; if (["category", "tag"].includes(slug)) { key = "defaultTaxonomiesMenuItems"; } accumulator[key].push(taxonomy); return accumulator; }, { defaultTaxonomiesMenuItems: [], taxonomiesMenuItems: [] } ), [menuItems] ); return taxonomiesMenuItems; }; var USE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX = { user: "author" }; var USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS = { user: { who: "authors" } }; function useAuthorMenuItem(onClickMenuItem) { const existingTemplates = useExistingTemplates(); const defaultTemplateTypes = useDefaultTemplateTypes(); const authorInfo = useEntitiesInfo( "root", USE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX, USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS ); let authorMenuItem = defaultTemplateTypes?.find( ({ slug }) => slug === "author" ); if (!authorMenuItem) { authorMenuItem = { description: (0, import_i18n143.__)( "Displays latest posts written by a single author." ), slug: "author", title: "Author" }; } const hasGeneralTemplate = !!existingTemplates?.find( ({ slug }) => slug === "author" ); if (authorInfo.user?.hasEntities) { authorMenuItem = { ...authorMenuItem, templatePrefix: "author" }; authorMenuItem.onClick = (template) => { onClickMenuItem({ type: "root", slug: "user", config: { queryArgs: ({ search }) => { return { _fields: "id,name,slug,link", orderBy: search ? "name" : "registered_date", exclude: authorInfo.user.existingEntitiesIds, who: "authors" }; }, getSpecificTemplate: (suggestion) => { const templateSlug = prefixSlug( "author", suggestion.slug ); return { title: (0, import_i18n143.sprintf)( // translators: %s: Name of the author e.g: "Admin". (0, import_i18n143.__)("Author: %s"), suggestion.name ), slug: templateSlug, templatePrefix: "author" }; } }, labels: { singular_name: (0, import_i18n143.__)("Author"), search_items: (0, import_i18n143.__)("Search Authors"), not_found: (0, import_i18n143.__)("No authors found."), all_items: (0, import_i18n143.__)("All Authors") }, hasGeneralTemplate, template }); }; } if (!hasGeneralTemplate || authorInfo.user?.hasEntities) { return authorMenuItem; } } var useEntitiesInfo = (entityName, templatePrefixes, additionalQueryParameters = EMPTY_OBJECT2) => { const entitiesHasRecords = (0, import_data72.useSelect)( (select3) => { return Object.keys(templatePrefixes || {}).reduce( (accumulator, slug) => { accumulator[slug] = !!select3( import_core_data51.store ).getEntityRecords(entityName, slug, { per_page: 1, _fields: "id", context: "view", ...additionalQueryParameters[slug] })?.length; return accumulator; }, {} ); }, [templatePrefixes, entityName, additionalQueryParameters] ); const entitiesInfo = (0, import_element144.useMemo)(() => { return Object.keys(templatePrefixes || {}).reduce( (accumulator, slug) => { accumulator[slug] = { hasEntities: entitiesHasRecords[slug] }; return accumulator; }, {} ); }, [templatePrefixes, entitiesHasRecords]); return entitiesInfo; }; // packages/edit-site/build-module/components/add-new-template/add-custom-template-modal-content.mjs var import_jsx_runtime280 = __toESM(require_jsx_runtime(), 1); var EMPTY_ARRAY14 = []; function SuggestionListItem({ suggestion, search, onSelect, entityForSuggestions }) { const baseCssClass = "edit-site-custom-template-modal__suggestions_list__list-item"; return /* @__PURE__ */ (0, import_jsx_runtime280.jsxs)( import_components151.Composite.Item, { render: /* @__PURE__ */ (0, import_jsx_runtime280.jsx)( import_components151.Button, { __next40pxDefaultSize: true, role: "option", className: baseCssClass, onClick: () => onSelect( entityForSuggestions.config.getSpecificTemplate( suggestion ) ) } ), children: [ /* @__PURE__ */ (0, import_jsx_runtime280.jsx)( import_components151.__experimentalText, { size: "body", lineHeight: 1.53846153846, weight: 500, className: `${baseCssClass}__title`, children: /* @__PURE__ */ (0, import_jsx_runtime280.jsx)( import_components151.TextHighlight, { text: (0, import_html_entities11.decodeEntities)(suggestion.name), highlight: search } ) } ), suggestion.link && /* @__PURE__ */ (0, import_jsx_runtime280.jsx)( import_components151.__experimentalText, { size: "body", lineHeight: 1.53846153846, className: `${baseCssClass}__info`, children: (0, import_url21.safeDecodeURI)(suggestion.link) } ) ] } ); } function useSearchSuggestions(entityForSuggestions, search) { const { config: config2 } = entityForSuggestions; const query = (0, import_element145.useMemo)( () => ({ order: "asc", context: "view", search, per_page: search ? 20 : 10, ...config2.queryArgs(search) }), [search, config2] ); const { records: searchResults, hasResolved: searchHasResolved } = (0, import_core_data52.useEntityRecords)( entityForSuggestions.type, entityForSuggestions.slug, query ); const [suggestions, setSuggestions] = (0, import_element145.useState)(EMPTY_ARRAY14); (0, import_element145.useEffect)(() => { if (!searchHasResolved) { return; } let newSuggestions = EMPTY_ARRAY14; if (searchResults?.length) { newSuggestions = searchResults; if (config2.recordNamePath) { newSuggestions = mapToIHasNameAndId( newSuggestions, config2.recordNamePath ); } } setSuggestions(newSuggestions); }, [searchResults, searchHasResolved]); return suggestions; } function SuggestionList({ entityForSuggestions, onSelect }) { const [search, setSearch, debouncedSearch] = (0, import_compose28.useDebouncedInput)(); const suggestions = useSearchSuggestions( entityForSuggestions, debouncedSearch ); const { labels } = entityForSuggestions; const [showSearchControl, setShowSearchControl] = (0, import_element145.useState)(false); if (!showSearchControl && suggestions?.length > 9) { setShowSearchControl(true); } return /* @__PURE__ */ (0, import_jsx_runtime280.jsxs)(import_jsx_runtime280.Fragment, { children: [ showSearchControl && /* @__PURE__ */ (0, import_jsx_runtime280.jsx)( import_components151.SearchControl, { onChange: setSearch, value: search, label: labels.search_items, placeholder: labels.search_items } ), !!suggestions?.length && /* @__PURE__ */ (0, import_jsx_runtime280.jsx)( import_components151.Composite, { orientation: "vertical", role: "listbox", className: "edit-site-custom-template-modal__suggestions_list", "aria-label": (0, import_i18n144.__)("Suggestions list"), children: suggestions.map((suggestion) => /* @__PURE__ */ (0, import_jsx_runtime280.jsx)( SuggestionListItem, { suggestion, search: debouncedSearch, onSelect, entityForSuggestions }, suggestion.slug )) } ), debouncedSearch && !suggestions?.length && /* @__PURE__ */ (0, import_jsx_runtime280.jsx)( import_components151.__experimentalText, { as: "p", className: "edit-site-custom-template-modal__no-results", children: labels.not_found } ) ] }); } function AddCustomTemplateModalContent({ onSelect, entityForSuggestions, onBack, containerRef }) { const [showSearchEntities, setShowSearchEntities] = (0, import_element145.useState)(); (0, import_element145.useEffect)(() => { if (containerRef.current) { const [firstFocusable] = import_dom12.focus.focusable.find( containerRef.current ); firstFocusable?.focus(); } }, [showSearchEntities]); return /* @__PURE__ */ (0, import_jsx_runtime280.jsxs)( import_components151.__experimentalVStack, { spacing: 4, className: "edit-site-custom-template-modal__contents-wrapper", alignment: "left", children: [ !showSearchEntities && /* @__PURE__ */ (0, import_jsx_runtime280.jsxs)(import_jsx_runtime280.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime280.jsx)(import_components151.__experimentalText, { as: "p", children: (0, import_i18n144.__)( "Select whether to create a single template for all items or a specific one." ) }), /* @__PURE__ */ (0, import_jsx_runtime280.jsxs)( import_components151.Flex, { className: "edit-site-custom-template-modal__contents", gap: "4", align: "initial", children: [ /* @__PURE__ */ (0, import_jsx_runtime280.jsxs)( import_components151.FlexItem, { isBlock: true, as: import_components151.Button, onClick: () => { const { slug, title, description, templatePrefix } = entityForSuggestions.template; onSelect({ slug, title, description, templatePrefix }); }, children: [ /* @__PURE__ */ (0, import_jsx_runtime280.jsx)( import_components151.__experimentalText, { as: "span", weight: 500, lineHeight: 1.53846153846, children: entityForSuggestions.labels.all_items } ), /* @__PURE__ */ (0, import_jsx_runtime280.jsx)( import_components151.__experimentalText, { as: "span", lineHeight: 1.53846153846, // translators: The user is given the choice to set up a template for all items of a post type or taxonomy, or just a specific one. children: (0, import_i18n144.__)("For all items") } ) ] } ), /* @__PURE__ */ (0, import_jsx_runtime280.jsxs)( import_components151.FlexItem, { isBlock: true, as: import_components151.Button, onClick: () => { setShowSearchEntities(true); }, children: [ /* @__PURE__ */ (0, import_jsx_runtime280.jsx)( import_components151.__experimentalText, { as: "span", weight: 500, lineHeight: 1.53846153846, children: entityForSuggestions.labels.singular_name } ), /* @__PURE__ */ (0, import_jsx_runtime280.jsx)( import_components151.__experimentalText, { as: "span", lineHeight: 1.53846153846, // translators: The user is given the choice to set up a template for all items of a post type or taxonomy, or just a specific one. children: (0, import_i18n144.__)("For a specific item") } ) ] } ) ] } ), /* @__PURE__ */ (0, import_jsx_runtime280.jsx)(import_components151.Flex, { justify: "right", children: /* @__PURE__ */ (0, import_jsx_runtime280.jsx)( import_components151.Button, { __next40pxDefaultSize: true, variant: "tertiary", onClick: onBack, children: (0, import_i18n144.__)("Back") } ) }) ] }), showSearchEntities && /* @__PURE__ */ (0, import_jsx_runtime280.jsxs)(import_jsx_runtime280.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime280.jsx)(import_components151.__experimentalText, { as: "p", children: (0, import_i18n144.__)( "This template will be used only for the specific item chosen." ) }), /* @__PURE__ */ (0, import_jsx_runtime280.jsx)( SuggestionList, { entityForSuggestions, onSelect } ), /* @__PURE__ */ (0, import_jsx_runtime280.jsx)(import_components151.Flex, { justify: "right", children: /* @__PURE__ */ (0, import_jsx_runtime280.jsx)( import_components151.Button, { __next40pxDefaultSize: true, variant: "tertiary", onClick: () => { if (entityForSuggestions.hasGeneralTemplate) { onBack(); } else { setShowSearchEntities(false); } }, children: (0, import_i18n144.__)("Back") } ) }) ] }) ] } ); } var add_custom_template_modal_content_default = AddCustomTemplateModalContent; // node_modules/tslib/tslib.es6.mjs var __assign = function() { __assign = Object.assign || function __assign2(t3) { for (var s2, i2 = 1, n2 = arguments.length; i2 < n2; i2++) { s2 = arguments[i2]; for (var p3 in s2) if (Object.prototype.hasOwnProperty.call(s2, p3)) t3[p3] = s2[p3]; } return t3; }; return __assign.apply(this, arguments); }; // node_modules/lower-case/dist.es2015/index.js function lowerCase(str) { return str.toLowerCase(); } // node_modules/no-case/dist.es2015/index.js var DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g]; var DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi; function noCase(input, options) { if (options === void 0) { options = {}; } var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? " " : _d; var result = replace(replace(input, splitRegexp, "$1\0$2"), stripRegexp, "\0"); var start2 = 0; var end = result.length; while (result.charAt(start2) === "\0") start2++; while (result.charAt(end - 1) === "\0") end--; return result.slice(start2, end).split("\0").map(transform).join(delimiter); } function replace(input, re, value) { if (re instanceof RegExp) return input.replace(re, value); return re.reduce(function(input2, re2) { return input2.replace(re2, value); }, input); } // node_modules/dot-case/dist.es2015/index.js function dotCase(input, options) { if (options === void 0) { options = {}; } return noCase(input, __assign({ delimiter: "." }, options)); } // node_modules/param-case/dist.es2015/index.js function paramCase(input, options) { if (options === void 0) { options = {}; } return dotCase(input, __assign({ delimiter: "-" }, options)); } // packages/edit-site/build-module/components/add-new-template/add-custom-generic-template-modal-content.mjs var import_element146 = __toESM(require_element(), 1); var import_i18n145 = __toESM(require_i18n(), 1); var import_components152 = __toESM(require_components(), 1); var import_jsx_runtime281 = __toESM(require_jsx_runtime(), 1); function AddCustomGenericTemplateModalContent({ createTemplate, onBack }) { const [title, setTitle] = (0, import_element146.useState)(""); const defaultTitle = (0, import_i18n145.__)("Custom Template"); const [isBusy, setIsBusy] = (0, import_element146.useState)(false); const inputRef = (0, import_element146.useRef)(); (0, import_element146.useEffect)(() => { if (inputRef.current) { inputRef.current.focus(); } }, []); async function onCreateTemplate(event) { event.preventDefault(); if (isBusy) { return; } setIsBusy(true); try { await createTemplate( { slug: paramCase(title || defaultTitle) || "wp-custom-template", title: title || defaultTitle }, false ); } finally { setIsBusy(false); } } return /* @__PURE__ */ (0, import_jsx_runtime281.jsx)("form", { onSubmit: onCreateTemplate, children: /* @__PURE__ */ (0, import_jsx_runtime281.jsxs)(import_components152.__experimentalVStack, { spacing: 6, children: [ /* @__PURE__ */ (0, import_jsx_runtime281.jsx)( import_components152.TextControl, { __next40pxDefaultSize: true, label: (0, import_i18n145.__)("Name"), value: title, onChange: setTitle, placeholder: defaultTitle, disabled: isBusy, ref: inputRef, help: (0, import_i18n145.__)( // eslint-disable-next-line no-restricted-syntax -- 'sidebar' is a common web design term for layouts 'Describe the template, e.g. "Post with sidebar". A custom template can be manually applied to any post or page.' ) } ), /* @__PURE__ */ (0, import_jsx_runtime281.jsxs)( import_components152.__experimentalHStack, { className: "edit-site-custom-generic-template__modal-actions", justify: "right", children: [ /* @__PURE__ */ (0, import_jsx_runtime281.jsx)( import_components152.Button, { __next40pxDefaultSize: true, variant: "tertiary", onClick: onBack, children: (0, import_i18n145.__)("Back") } ), /* @__PURE__ */ (0, import_jsx_runtime281.jsx)( import_components152.Button, { __next40pxDefaultSize: true, variant: "primary", type: "submit", isBusy, "aria-disabled": isBusy, children: (0, import_i18n145.__)("Create") } ) ] } ) ] }) }); } var add_custom_generic_template_modal_content_default = AddCustomGenericTemplateModalContent; // packages/edit-site/build-module/components/add-new-template/index.mjs var import_jsx_runtime282 = __toESM(require_jsx_runtime(), 1); var { useHistory: useHistory21 } = unlock(import_router34.privateApis); var DEFAULT_TEMPLATE_SLUGS = [ "front-page", "home", "single", "page", "index", "archive", "author", "category", "date", "tag", "search", "404" ]; var TEMPLATE_ICONS = { "front-page": home_default, home: verse_default, single: pin_default, page: page_default, archive: archive_default, search: search_default, 404: not_found_default, index: list_default, category: category_default, author: comment_author_avatar_default, taxonomy: block_meta_default, date: calendar_default, tag: tag_default, attachment: media_default }; function TemplateListItem({ title, direction, className, description, icon, onClick, children }) { return /* @__PURE__ */ (0, import_jsx_runtime282.jsx)( import_components153.Button, { __next40pxDefaultSize: true, className, onClick, label: description, showTooltip: !!description, children: /* @__PURE__ */ (0, import_jsx_runtime282.jsxs)( import_components153.Flex, { as: "span", spacing: 2, align: "center", justify: "center", style: { width: "100%" }, direction, children: [ /* @__PURE__ */ (0, import_jsx_runtime282.jsx)("div", { className: "edit-site-add-new-template__template-icon", children: /* @__PURE__ */ (0, import_jsx_runtime282.jsx)(import_components153.Icon, { icon }) }), /* @__PURE__ */ (0, import_jsx_runtime282.jsxs)( import_components153.__experimentalVStack, { className: "edit-site-add-new-template__template-name", alignment: "center", spacing: 0, children: [ /* @__PURE__ */ (0, import_jsx_runtime282.jsx)( import_components153.__experimentalText, { align: "center", weight: 500, lineHeight: 1.53846153846, children: title } ), children ] } ) ] } ) } ); } var modalContentMap = { templatesList: 1, customTemplate: 2, customGenericTemplate: 3 }; function NewTemplateModal({ onClose }) { const [modalContent, setModalContent] = (0, import_element147.useState)( modalContentMap.templatesList ); const [entityForSuggestions, setEntityForSuggestions] = (0, import_element147.useState)({}); const [isSubmitting, setIsSubmitting] = (0, import_element147.useState)(false); const missingTemplates = useMissingTemplates( setEntityForSuggestions, () => setModalContent(modalContentMap.customTemplate) ); const history = useHistory21(); const { saveEntityRecord } = (0, import_data73.useDispatch)(import_core_data53.store); const { createErrorNotice, createSuccessNotice } = (0, import_data73.useDispatch)(import_notices7.store); const containerRef = (0, import_element147.useRef)(null); const isMobile = (0, import_compose29.useViewportMatch)("medium", "<"); const homeUrl = (0, import_data73.useSelect)((select3) => { return select3(import_core_data53.store).getEntityRecord("root", "__unstableBase")?.home; }, []); const TEMPLATE_SHORT_DESCRIPTIONS = { "front-page": homeUrl, date: (0, import_i18n146.sprintf)( // translators: %s: The homepage url. (0, import_i18n146.__)("E.g. %s"), homeUrl + "/" + (/* @__PURE__ */ new Date()).getFullYear() ) }; (0, import_element147.useEffect)(() => { if (containerRef.current && modalContent === modalContentMap.templatesList) { const [firstFocusable] = import_dom13.focus.focusable.find( containerRef.current ); firstFocusable?.focus(); } }, [modalContent]); async function createTemplate(template, isWPSuggestion = true) { if (isSubmitting) { return; } setIsSubmitting(true); try { const { title, description, slug } = template; const newTemplate = await saveEntityRecord( "postType", TEMPLATE_POST_TYPE, { description, // Slugs need to be strings, so this is for template `404` slug: slug.toString(), status: "publish", title, // This adds a post meta field in template that is part of `is_custom` value calculation. meta: { is_wp_suggestion: isWPSuggestion } }, { throwOnError: true } ); history.navigate( `/${TEMPLATE_POST_TYPE}/${newTemplate.id}?canvas=edit` ); createSuccessNotice( (0, import_i18n146.sprintf)( // translators: %s: Title of the created post or template, e.g: "Hello world". (0, import_i18n146.__)('"%s" successfully created.'), (0, import_html_entities12.decodeEntities)(newTemplate.title?.rendered || title) || (0, import_i18n146.__)("(no title)") ), { type: "snackbar" } ); } catch (error) { const errorMessage = error.message && error.code !== "unknown_error" ? error.message : (0, import_i18n146.__)("An error occurred while creating the template."); createErrorNotice(errorMessage, { type: "snackbar" }); } finally { setIsSubmitting(false); } } const onModalClose = () => { onClose(); setModalContent(modalContentMap.templatesList); }; let modalTitle = (0, import_i18n146.__)("Add template"); if (modalContent === modalContentMap.customTemplate) { modalTitle = (0, import_i18n146.sprintf)( // translators: %s: Name of the post type e.g: "Post". (0, import_i18n146.__)("Add template: %s"), entityForSuggestions.labels.singular_name ); } else if (modalContent === modalContentMap.customGenericTemplate) { modalTitle = (0, import_i18n146.__)("Create custom template"); } return /* @__PURE__ */ (0, import_jsx_runtime282.jsxs)( import_components153.Modal, { title: modalTitle, className: clsx_default("edit-site-add-new-template__modal", { "edit-site-add-new-template__modal_template_list": modalContent === modalContentMap.templatesList, "edit-site-custom-template-modal": modalContent === modalContentMap.customTemplate }), onRequestClose: onModalClose, overlayClassName: modalContent === modalContentMap.customGenericTemplate ? "edit-site-custom-generic-template__modal" : void 0, ref: containerRef, children: [ modalContent === modalContentMap.templatesList && /* @__PURE__ */ (0, import_jsx_runtime282.jsxs)( import_components153.__experimentalGrid, { columns: isMobile ? 2 : 3, gap: 4, align: "flex-start", justify: "center", className: "edit-site-add-new-template__template-list__contents", children: [ /* @__PURE__ */ (0, import_jsx_runtime282.jsx)(import_components153.Flex, { className: "edit-site-add-new-template__template-list__prompt", children: (0, import_i18n146.__)( "Select what the new template should apply to:" ) }), missingTemplates.map((template) => { const { title, slug, onClick } = template; return /* @__PURE__ */ (0, import_jsx_runtime282.jsx)( TemplateListItem, { title, direction: "column", className: "edit-site-add-new-template__template-button", description: TEMPLATE_SHORT_DESCRIPTIONS[slug], icon: TEMPLATE_ICONS[slug] || layout_default, onClick: () => onClick ? onClick(template) : createTemplate(template) }, slug ); }), /* @__PURE__ */ (0, import_jsx_runtime282.jsx)( TemplateListItem, { title: (0, import_i18n146.__)("Custom template"), direction: "row", className: "edit-site-add-new-template__custom-template-button", icon: pencil_default, onClick: () => setModalContent( modalContentMap.customGenericTemplate ), children: /* @__PURE__ */ (0, import_jsx_runtime282.jsx)( import_components153.__experimentalText, { lineHeight: 1.53846153846, children: (0, import_i18n146.__)( "A custom template can be manually applied to any post or page." ) } ) } ) ] } ), modalContent === modalContentMap.customTemplate && /* @__PURE__ */ (0, import_jsx_runtime282.jsx)( add_custom_template_modal_content_default, { onSelect: createTemplate, entityForSuggestions, onBack: () => setModalContent(modalContentMap.templatesList), containerRef } ), modalContent === modalContentMap.customGenericTemplate && /* @__PURE__ */ (0, import_jsx_runtime282.jsx)( add_custom_generic_template_modal_content_default, { createTemplate, onBack: () => setModalContent(modalContentMap.templatesList) } ) ] } ); } function NewTemplate() { const [showModal, setShowModal] = (0, import_element147.useState)(false); const { postType: postType2 } = (0, import_data73.useSelect)((select3) => { const { getPostType: getPostType2 } = select3(import_core_data53.store); return { postType: getPostType2(TEMPLATE_POST_TYPE) }; }, []); if (!postType2) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime282.jsxs)(import_jsx_runtime282.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime282.jsx)( import_components153.Button, { variant: "primary", onClick: () => setShowModal(true), label: postType2.labels.add_new_item, __next40pxDefaultSize: true, children: postType2.labels.add_new_item } ), showModal && /* @__PURE__ */ (0, import_jsx_runtime282.jsx)(NewTemplateModal, { onClose: () => setShowModal(false) }) ] }); } function useMissingTemplates(setEntityForSuggestions, onClick) { const defaultTemplateTypes = useDefaultTemplateTypes(); const missingDefaultTemplates = (defaultTemplateTypes || []).filter( (template) => DEFAULT_TEMPLATE_SLUGS.includes(template.slug) ); const onClickMenuItem = (_entityForSuggestions) => { onClick?.(); setEntityForSuggestions(_entityForSuggestions); }; const enhancedMissingDefaultTemplateTypes = [...missingDefaultTemplates]; const { defaultTaxonomiesMenuItems, taxonomiesMenuItems } = useTaxonomiesMenuItems(onClickMenuItem); const { defaultPostTypesMenuItems, postTypesMenuItems } = usePostTypeMenuItems(onClickMenuItem); const authorMenuItem = useAuthorMenuItem(onClickMenuItem); [ ...defaultTaxonomiesMenuItems, ...defaultPostTypesMenuItems, authorMenuItem ].forEach((menuItem) => { if (!menuItem) { return; } const matchIndex = enhancedMissingDefaultTemplateTypes.findIndex( (template) => template.slug === menuItem.slug ); if (matchIndex > -1) { enhancedMissingDefaultTemplateTypes[matchIndex] = menuItem; } else { enhancedMissingDefaultTemplateTypes.push(menuItem); } }); enhancedMissingDefaultTemplateTypes?.sort((template1, template2) => { return DEFAULT_TEMPLATE_SLUGS.indexOf(template1.slug) - DEFAULT_TEMPLATE_SLUGS.indexOf(template2.slug); }); const missingTemplates = [ ...enhancedMissingDefaultTemplateTypes, ...usePostTypeArchiveMenuItems(), ...postTypesMenuItems, ...taxonomiesMenuItems ]; return missingTemplates; } var add_new_template_default = (0, import_element147.memo)(NewTemplate); // packages/edit-site/build-module/components/page-templates/fields.mjs var import_components154 = __toESM(require_components(), 1); var import_i18n147 = __toESM(require_i18n(), 1); var import_element148 = __toESM(require_element(), 1); var import_html_entities13 = __toESM(require_html_entities(), 1); var import_blocks13 = __toESM(require_blocks(), 1); var import_block_editor26 = __toESM(require_block_editor(), 1); var import_editor34 = __toESM(require_editor(), 1); var import_core_data54 = __toESM(require_core_data(), 1); var import_data74 = __toESM(require_data(), 1); var import_jsx_runtime283 = __toESM(require_jsx_runtime(), 1); var { Badge: Badge5 } = unlock(import_components154.privateApis); var { useEntityRecordsWithPermissions } = unlock(import_core_data54.privateApis); var { useStyle: useStyle5 } = unlock(import_editor34.privateApis); function useAllDefaultTemplateTypes() { const defaultTemplateTypes = useDefaultTemplateTypes(); const { records: staticRecords } = useEntityRecordsWithPermissions( "root", "registeredTemplate" ); return [ ...defaultTemplateTypes, ...staticRecords?.filter((record) => !record.is_custom).map((record) => { return { slug: record.slug, title: record.title.rendered, description: record.description }; }) ]; } function PreviewField2({ item }) { const settings2 = usePatternSettings(); const backgroundColor = useStyle5("color.background") ?? "white"; const blocks = (0, import_element148.useMemo)(() => { return (0, import_blocks13.parse)(item.content.raw); }, [item.content.raw]); const isEmpty3 = !blocks?.length; return /* @__PURE__ */ (0, import_jsx_runtime283.jsx)(import_editor34.EditorProvider, { post: item, settings: settings2, children: /* @__PURE__ */ (0, import_jsx_runtime283.jsxs)( "div", { className: "page-templates-preview-field", style: { backgroundColor }, children: [ isEmpty3 && (0, import_i18n147.__)("Empty template"), !isEmpty3 && /* @__PURE__ */ (0, import_jsx_runtime283.jsx)(import_block_editor26.BlockPreview.Async, { children: /* @__PURE__ */ (0, import_jsx_runtime283.jsx)(import_block_editor26.BlockPreview, { blocks }) }) ] } ) }); } var previewField2 = { label: (0, import_i18n147.__)("Preview"), id: "preview", render: PreviewField2, enableSorting: false }; var descriptionField = { label: (0, import_i18n147.__)("Description"), id: "description", render: window?.__experimentalTemplateActivate ? function RenderDescription({ item }) { const defaultTemplateTypes = useAllDefaultTemplateTypes(); const defaultTemplateType = defaultTemplateTypes.find( (type) => type.slug === item.slug ); return item.description ? (0, import_html_entities13.decodeEntities)(item.description) : defaultTemplateType?.description; } : ({ item }) => { return item.description && (0, import_html_entities13.decodeEntities)(item.description); }, enableSorting: false, enableGlobalSearch: true }; function AuthorField2({ item }) { const [isImageLoaded, setIsImageLoaded] = (0, import_element148.useState)(false); const { text, icon, imageUrl } = useAddedBy(item.type, item.id); return /* @__PURE__ */ (0, import_jsx_runtime283.jsxs)(import_components154.__experimentalHStack, { alignment: "left", spacing: 0, children: [ imageUrl && /* @__PURE__ */ (0, import_jsx_runtime283.jsx)( "div", { className: clsx_default("page-templates-author-field__avatar", { "is-loaded": isImageLoaded }), children: /* @__PURE__ */ (0, import_jsx_runtime283.jsx)( "img", { onLoad: () => setIsImageLoaded(true), alt: "", src: imageUrl } ) } ), !imageUrl && /* @__PURE__ */ (0, import_jsx_runtime283.jsx)("div", { className: "page-templates-author-field__icon", children: /* @__PURE__ */ (0, import_jsx_runtime283.jsx)(import_components154.Icon, { icon }) }), /* @__PURE__ */ (0, import_jsx_runtime283.jsx)("span", { className: "page-templates-author-field__name", children: text }) ] }); } var authorField = { label: (0, import_i18n147.__)("Author"), id: "author", getValue: ({ item }) => item.author_text ?? item.author, render: AuthorField2 }; var activeField = { label: (0, import_i18n147.__)("Status"), id: "active", type: "boolean", getValue: ({ item }) => item._isActive, render: function Render({ item }) { const activeLabel = item._isCustom ? (0, import_i18n147._x)("Active when used", "template") : (0, import_i18n147._x)("Active", "template"); const activeIntent = item._isCustom ? "info" : "success"; const isActive = item._isActive; return /* @__PURE__ */ (0, import_jsx_runtime283.jsx)(Badge5, { intent: isActive ? activeIntent : "default", children: isActive ? activeLabel : (0, import_i18n147._x)("Inactive", "template") }); } }; var useThemeField = () => { const activeTheme = (0, import_data74.useSelect)( (select3) => select3(import_core_data54.store).getCurrentTheme() ); return (0, import_element148.useMemo)( () => ({ label: (0, import_i18n147.__)("Compatible Theme"), id: "theme", getValue: ({ item }) => item.theme, render: function Render3({ item }) { if (item.theme === activeTheme.stylesheet) { return /* @__PURE__ */ (0, import_jsx_runtime283.jsx)(Badge5, { intent: "success", children: item.theme }); } return /* @__PURE__ */ (0, import_jsx_runtime283.jsx)(Badge5, { intent: "error", children: item.theme }); } }), [activeTheme] ); }; var slugField = { label: (0, import_i18n147.__)("Template Type"), id: "slug", getValue: ({ item }) => item.slug, render: function Render2({ item }) { const defaultTemplateTypes = useAllDefaultTemplateTypes(); const defaultTemplateType = defaultTemplateTypes.find( (type) => type.slug === item.slug ); return defaultTemplateType?.title || (0, import_i18n147._x)("Custom", "template type"); } }; // packages/edit-site/build-module/components/page-templates/view-utils.mjs var defaultLayouts2 = { table: { showMedia: false }, grid: { showMedia: true }, list: { showMedia: false } }; var DEFAULT_VIEW2 = { type: "grid", perPage: 20, sort: { field: "title", direction: "asc" }, titleField: "title", descriptionField: "description", mediaField: "preview", fields: ["author", "active", "slug", "theme"], filters: [], ...defaultLayouts2.grid }; function getActiveViewOverridesForTab(activeView) { if (activeView === "user") { return { sort: { field: "date", direction: "desc" } }; } if (activeView === "active") { return {}; } return { filters: [ { field: "author", operator: "is", value: activeView, isLocked: true } ] }; } // packages/edit-site/build-module/components/page-templates/index.mjs var import_jsx_runtime284 = __toESM(require_jsx_runtime(), 1); var { usePostActions: usePostActions2, usePostFields, templateTitleField } = unlock(import_editor35.privateApis); var { useHistory: useHistory22, useLocation: useLocation30 } = unlock(import_router35.privateApis); var { useEntityRecordsWithPermissions: useEntityRecordsWithPermissions2 } = unlock(import_core_data55.privateApis); function PageTemplates() { const { path, query } = useLocation30(); const { activeView = "active", postId } = query; const [selection, setSelection] = (0, import_element149.useState)([postId]); const [selectedRegisteredTemplate, setSelectedRegisteredTemplate] = (0, import_element149.useState)(false); const defaultView = DEFAULT_VIEW2; const activeViewOverrides = (0, import_element149.useMemo)( () => getActiveViewOverridesForTab(activeView), [activeView] ); const { view, updateView, isModified, resetToDefault } = useView({ kind: "postType", name: TEMPLATE_POST_TYPE, slug: "default", defaultView, activeViewOverrides, queryParams: { page: query.pageNumber, search: query.search }, onChangeQueryParams: (newQueryParams) => { history.navigate( (0, import_url22.addQueryArgs)(path, { ...query, pageNumber: newQueryParams.page, search: newQueryParams.search || void 0 }) ); } }); const { activeTemplatesOption, activeTheme, defaultTemplateTypes } = (0, import_data75.useSelect)((select3) => { const { getEntityRecord, getCurrentTheme } = select3(import_core_data55.store); return { activeTemplatesOption: getEntityRecord("root", "site")?.active_templates, activeTheme: getCurrentTheme(), defaultTemplateTypes: select3(import_core_data55.store).getCurrentTheme()?.default_template_types }; }); const { records: userRecords, isResolving: isLoadingUserRecords } = useEntityRecordsWithPermissions2("postType", TEMPLATE_POST_TYPE, { per_page: -1, combinedTemplates: false }); const { records: staticRecords, isResolving: isLoadingStaticData } = useEntityRecordsWithPermissions2("root", "registeredTemplate", { // This should not be needed, the endpoint returns all registered // templates, but it's not possible right now to turn off pagination // for entity configs. per_page: -1 }); const activeTemplates = (0, import_element149.useMemo)(() => { const _active = [...staticRecords]; if (activeTemplatesOption) { for (const activeSlug in activeTemplatesOption) { const activeId = activeTemplatesOption[activeSlug]; const template = userRecords.find( (userRecord) => userRecord.id === activeId && userRecord.theme === activeTheme.stylesheet ); if (template) { const index = _active.findIndex( ({ slug }) => slug === template.slug ); if (index !== -1) { _active[index] = template; } else { _active.push(template); } } } } return _active; }, [userRecords, staticRecords, activeTemplatesOption, activeTheme]); let isLoadingData; if (activeView === "active") { isLoadingData = isLoadingUserRecords || isLoadingStaticData; } else if (activeView === "user") { isLoadingData = isLoadingUserRecords; } else { isLoadingData = isLoadingStaticData; } const records = (0, import_element149.useMemo)(() => { function isCustom(record) { return record.is_custom ?? // For user templates it's custom if the is_wp_suggestion meta // field is not set and the slug is not found in the default // template types. (!record.meta?.is_wp_suggestion && !defaultTemplateTypes.some( (type) => type.slug === record.slug )); } let _records; if (activeView === "active") { _records = activeTemplates.filter( (record) => !isCustom(record) ); } else if (activeView === "user") { _records = userRecords; } else { _records = staticRecords; } return _records.map((record) => ({ ...record, _isActive: activeTemplates.some( (template) => template.id === record.id ), _isCustom: isCustom(record) })); }, [ activeTemplates, defaultTemplateTypes, userRecords, staticRecords, activeView ]); const users = (0, import_data75.useSelect)( (select3) => { const { getUser } = select3(import_core_data55.store); return records.reduce((acc, record) => { if (record.author_text) { if (!acc[record.author_text]) { acc[record.author_text] = record.author_text; } } else if (record.author) { if (!acc[record.author]) { acc[record.author] = getUser(record.author); } } return acc; }, {}); }, [records] ); const history = useHistory22(); const onChangeSelection = (0, import_element149.useCallback)( (items) => { setSelection(items); if (view?.type === "list") { history.navigate( (0, import_url22.addQueryArgs)(path, { postId: items.length === 1 ? items[0] : void 0 }) ); } }, [history, path, view?.type] ); const postTypeFields = usePostFields({ postType: TEMPLATE_POST_TYPE }); const dateField = postTypeFields.find((field) => field.id === "date"); const themeField = useThemeField(); const fields = (0, import_element149.useMemo)(() => { const _fields = [ previewField2, templateTitleField, descriptionField, activeField, slugField ]; if (activeView === "user") { _fields.push(themeField); if (dateField) { _fields.push(dateField); } } const elements2 = []; for (const author in users) { elements2.push({ value: users[author]?.id ?? author, label: users[author]?.name ?? author }); } _fields.push({ ...authorField, elements: elements2 }); return _fields; }, [users, activeView, themeField, dateField]); const { data, paginationInfo } = (0, import_element149.useMemo)(() => { return filterSortAndPaginate(records, view, fields); }, [records, view, fields]); const { createSuccessNotice } = (0, import_data75.useDispatch)(import_notices8.store); const onActionPerformed = (0, import_element149.useCallback)( (actionId, items) => { switch (actionId) { case "duplicate-post": { const newItem = items[0]; const _title = typeof newItem.title === "string" ? newItem.title : newItem.title?.rendered; history.navigate(`/template?activeView=user`); createSuccessNotice( (0, import_i18n148.sprintf)( // translators: %s: Title of the created post or template, e.g: "Hello world". (0, import_i18n148.__)('"%s" successfully created.'), (0, import_html_entities14.decodeEntities)(_title) || (0, import_i18n148.__)("(no title)") ), { type: "snackbar", id: "duplicate-post-action", actions: [ { label: (0, import_i18n148.__)("Edit"), onClick: () => { history.navigate( `/${newItem.type}/${newItem.id}?canvas=edit` ); } } ] } ); } break; } }, [history, createSuccessNotice] ); const postTypeActions = usePostActions2({ postType: TEMPLATE_POST_TYPE, context: "list", onActionPerformed }); const editAction = useEditPostAction(); const setActiveTemplateAction = useSetActiveTemplateAction(); const actions = (0, import_element149.useMemo)( () => activeView === "user" ? [setActiveTemplateAction, editAction, ...postTypeActions] : [setActiveTemplateAction, ...postTypeActions], [postTypeActions, setActiveTemplateAction, editAction, activeView] ); const onChangeView = (0, import_compose30.useEvent)((newView) => { updateView(newView); if (newView.type !== view.type) { history.invalidate(); } }); const duplicateAction = actions.find( (action) => action.id === "duplicate-post" ); return /* @__PURE__ */ (0, import_jsx_runtime284.jsxs)( page_default2, { className: "edit-site-page-templates", title: (0, import_i18n148.__)("Templates"), headingLevel: 2, actions: /* @__PURE__ */ (0, import_jsx_runtime284.jsx)(add_new_template_default, {}), children: [ /* @__PURE__ */ (0, import_jsx_runtime284.jsx)( dataviews_default, { paginationInfo, fields, actions, data, isLoading: isLoadingData, view, onChangeView, onChangeSelection, isItemClickable: () => true, onClickItem: (item) => { if (typeof item.id === "string") { setSelectedRegisteredTemplate(item); } else { history.navigate( `/${item.type}/${item.id}?canvas=edit` ); } }, selection, defaultLayouts: defaultLayouts2, onReset: isModified ? () => { resetToDefault(); history.invalidate(); } : false }, activeView ), selectedRegisteredTemplate && duplicateAction && /* @__PURE__ */ (0, import_jsx_runtime284.jsx)( import_components155.Modal, { title: (0, import_i18n148.__)("Duplicate"), onRequestClose: () => setSelectedRegisteredTemplate(), size: "small", children: /* @__PURE__ */ (0, import_jsx_runtime284.jsx)( duplicateAction.RenderModal, { items: [selectedRegisteredTemplate], closeModal: () => setSelectedRegisteredTemplate() } ) } ) ] } ); } // packages/edit-site/build-module/components/page-templates/index-legacy.mjs var import_i18n153 = __toESM(require_i18n(), 1); var import_element154 = __toESM(require_element(), 1); var import_core_data59 = __toESM(require_core_data(), 1); var import_router37 = __toESM(require_router(), 1); var import_editor36 = __toESM(require_editor(), 1); var import_url25 = __toESM(require_url(), 1); var import_compose33 = __toESM(require_compose(), 1); // packages/edit-site/build-module/components/add-new-template-legacy/index.mjs var import_components158 = __toESM(require_components(), 1); var import_html_entities17 = __toESM(require_html_entities(), 1); var import_element153 = __toESM(require_element(), 1); var import_data77 = __toESM(require_data(), 1); var import_core_data58 = __toESM(require_core_data(), 1); var import_compose32 = __toESM(require_compose(), 1); var import_i18n152 = __toESM(require_i18n(), 1); var import_notices9 = __toESM(require_notices(), 1); var import_router36 = __toESM(require_router(), 1); var import_dom15 = __toESM(require_dom(), 1); // packages/edit-site/build-module/components/add-new-template-legacy/add-custom-template-modal-content.mjs var import_element151 = __toESM(require_element(), 1); var import_i18n150 = __toESM(require_i18n(), 1); var import_components156 = __toESM(require_components(), 1); var import_core_data57 = __toESM(require_core_data(), 1); var import_html_entities16 = __toESM(require_html_entities(), 1); var import_compose31 = __toESM(require_compose(), 1); var import_dom14 = __toESM(require_dom(), 1); var import_url24 = __toESM(require_url(), 1); // packages/edit-site/build-module/components/add-new-template-legacy/utils.mjs var import_data76 = __toESM(require_data(), 1); var import_core_data56 = __toESM(require_core_data(), 1); var import_html_entities15 = __toESM(require_html_entities(), 1); var import_element150 = __toESM(require_element(), 1); var import_i18n149 = __toESM(require_i18n(), 1); var import_url23 = __toESM(require_url(), 1); var EMPTY_OBJECT3 = {}; var getValueFromObjectPath3 = (object, path) => { let value = object; path.split(".").forEach((fieldName) => { value = value?.[fieldName]; }); return value; }; function prefixSlug2(prefix2, slug) { return `${prefix2}-${(0, import_url23.safeDecodeURI)(slug)}`; } var mapToIHasNameAndId2 = (entities, path) => { return (entities || []).map((entity) => ({ ...entity, name: (0, import_html_entities15.decodeEntities)(getValueFromObjectPath3(entity, path)) })); }; var useExistingTemplates2 = () => { return (0, import_data76.useSelect)( (select3) => select3(import_core_data56.store).getEntityRecords( "postType", TEMPLATE_POST_TYPE, { per_page: -1 } ), [] ); }; var useDefaultTemplateTypes2 = () => { return (0, import_data76.useSelect)( (select3) => select3(import_core_data56.store).getCurrentTheme()?.default_template_types || [], [] ); }; var usePublicPostTypes2 = () => { const postTypes = (0, import_data76.useSelect)( (select3) => select3(import_core_data56.store).getPostTypes({ per_page: -1 }), [] ); return (0, import_element150.useMemo)(() => { const excludedPostTypes = ["attachment"]; return postTypes?.filter( ({ viewable, slug }) => viewable && !excludedPostTypes.includes(slug) ).sort((a2, b2) => { if (a2.slug === "post" || b2.slug === "post") { return 0; } return a2.name.localeCompare(b2.name); }); }, [postTypes]); }; var usePublicTaxonomies2 = () => { const taxonomies = (0, import_data76.useSelect)( (select3) => select3(import_core_data56.store).getTaxonomies({ per_page: -1 }), [] ); return (0, import_element150.useMemo)(() => { return taxonomies?.filter( ({ visibility }) => visibility?.publicly_queryable ); }, [taxonomies]); }; function usePostTypeArchiveMenuItems2() { const publicPostTypes = usePublicPostTypes2(); const postTypesWithArchives = (0, import_element150.useMemo)( () => publicPostTypes?.filter((postType2) => postType2.has_archive), [publicPostTypes] ); const existingTemplates = useExistingTemplates2(); const postTypeLabels = (0, import_element150.useMemo)( () => publicPostTypes?.reduce((accumulator, { labels }) => { const singularName = labels.singular_name.toLowerCase(); accumulator[singularName] = (accumulator[singularName] || 0) + 1; return accumulator; }, {}), [publicPostTypes] ); const needsUniqueIdentifier = (0, import_element150.useCallback)( ({ labels, slug }) => { const singularName = labels.singular_name.toLowerCase(); return postTypeLabels[singularName] > 1 && singularName !== slug; }, [postTypeLabels] ); return (0, import_element150.useMemo)( () => postTypesWithArchives?.filter( (postType2) => !(existingTemplates || []).some( (existingTemplate) => existingTemplate.slug === "archive-" + postType2.slug ) ).map((postType2) => { let title; if (needsUniqueIdentifier(postType2)) { title = (0, import_i18n149.sprintf)( // translators: %1s: Name of the post type e.g: "Post"; %2s: Slug of the post type e.g: "book". (0, import_i18n149.__)("Archive: %1$s (%2$s)"), postType2.labels.singular_name, postType2.slug ); } else { title = (0, import_i18n149.sprintf)( // translators: %s: Name of the post type e.g: "Post". (0, import_i18n149.__)("Archive: %s"), postType2.labels.singular_name ); } return { slug: "archive-" + postType2.slug, description: (0, import_i18n149.sprintf)( // translators: %s: Name of the post type e.g: "Post". (0, import_i18n149.__)( "Displays an archive with the latest posts of type: %s." ), postType2.labels.singular_name ), title, // `icon` is the `menu_icon` property of a post type. We // only handle `dashicons` for now, even if the `menu_icon` // also supports urls and svg as values. icon: typeof postType2.icon === "string" && postType2.icon.startsWith("dashicons-") ? postType2.icon.slice(10) : archive_default, templatePrefix: "archive" }; }) || [], [postTypesWithArchives, existingTemplates, needsUniqueIdentifier] ); } var usePostTypeMenuItems2 = (onClickMenuItem) => { const publicPostTypes = usePublicPostTypes2(); const existingTemplates = useExistingTemplates2(); const defaultTemplateTypes = useDefaultTemplateTypes2(); const templateLabels = (0, import_element150.useMemo)( () => publicPostTypes?.reduce((accumulator, { labels }) => { const templateName = (labels.template_name || labels.singular_name).toLowerCase(); accumulator[templateName] = (accumulator[templateName] || 0) + 1; return accumulator; }, {}), [publicPostTypes] ); const needsUniqueIdentifier = (0, import_element150.useCallback)( ({ labels, slug }) => { const templateName = (labels.template_name || labels.singular_name).toLowerCase(); return templateLabels[templateName] > 1 && templateName !== slug; }, [templateLabels] ); const templatePrefixes = (0, import_element150.useMemo)( () => publicPostTypes?.reduce((accumulator, { slug }) => { let suffix = slug; if (slug !== "page") { suffix = `single-${suffix}`; } accumulator[slug] = suffix; return accumulator; }, {}), [publicPostTypes] ); const postTypesInfo = useEntitiesInfo2("postType", templatePrefixes); const existingTemplateSlugs = (existingTemplates || []).map( ({ slug }) => slug ); const menuItems = (publicPostTypes || []).reduce( (accumulator, postType2) => { const { slug, labels, icon } = postType2; const generalTemplateSlug = templatePrefixes[slug]; const defaultTemplateType = defaultTemplateTypes?.find( ({ slug: _slug }) => _slug === generalTemplateSlug ); const hasGeneralTemplate = existingTemplateSlugs?.includes(generalTemplateSlug); const _needsUniqueIdentifier = needsUniqueIdentifier(postType2); let menuItemTitle = labels.template_name || (0, import_i18n149.sprintf)( // translators: %s: Name of the post type e.g: "Post". (0, import_i18n149.__)("Single item: %s"), labels.singular_name ); if (_needsUniqueIdentifier) { menuItemTitle = labels.template_name ? (0, import_i18n149.sprintf)( // translators: 1: Name of the template e.g: "Single Item: Post". 2: Slug of the post type e.g: "book". (0, import_i18n149._x)("%1$s (%2$s)", "post type menu label"), labels.template_name, slug ) : (0, import_i18n149.sprintf)( // translators: 1: Name of the post type e.g: "Post". 2: Slug of the post type e.g: "book". (0, import_i18n149._x)( "Single item: %1$s (%2$s)", "post type menu label" ), labels.singular_name, slug ); } const menuItem = defaultTemplateType ? { ...defaultTemplateType, templatePrefix: templatePrefixes[slug] } : { slug: generalTemplateSlug, title: menuItemTitle, description: (0, import_i18n149.sprintf)( // translators: %s: Name of the post type e.g: "Post". (0, import_i18n149.__)("Displays a single item: %s."), labels.singular_name ), // `icon` is the `menu_icon` property of a post type. We // only handle `dashicons` for now, even if the `menu_icon` // also supports urls and svg as values. icon: typeof icon === "string" && icon.startsWith("dashicons-") ? icon.slice(10) : post_default, templatePrefix: templatePrefixes[slug] }; const hasEntities = postTypesInfo?.[slug]?.hasEntities; if (hasEntities) { menuItem.onClick = (template) => { onClickMenuItem({ type: "postType", slug, config: { recordNamePath: "title.rendered", queryArgs: ({ search }) => { return { _fields: "id,title,slug,link", orderBy: search ? "relevance" : "modified", exclude: postTypesInfo[slug].existingEntitiesIds }; }, getSpecificTemplate: (suggestion) => { const templateSlug = prefixSlug2( templatePrefixes[slug], suggestion.slug ); return { title: templateSlug, slug: templateSlug, templatePrefix: templatePrefixes[slug] }; } }, labels, hasGeneralTemplate, template }); }; } if (!hasGeneralTemplate || hasEntities) { accumulator.push(menuItem); } return accumulator; }, [] ); const postTypesMenuItems = (0, import_element150.useMemo)( () => menuItems.reduce( (accumulator, postType2) => { const { slug } = postType2; let key = "postTypesMenuItems"; if (slug === "page") { key = "defaultPostTypesMenuItems"; } accumulator[key].push(postType2); return accumulator; }, { defaultPostTypesMenuItems: [], postTypesMenuItems: [] } ), [menuItems] ); return postTypesMenuItems; }; var useTaxonomiesMenuItems2 = (onClickMenuItem) => { const publicTaxonomies = usePublicTaxonomies2(); const existingTemplates = useExistingTemplates2(); const defaultTemplateTypes = useDefaultTemplateTypes2(); const templatePrefixes = (0, import_element150.useMemo)( () => publicTaxonomies?.reduce((accumulator, { slug }) => { let suffix = slug; if (!["category", "post_tag"].includes(slug)) { suffix = `taxonomy-${suffix}`; } if (slug === "post_tag") { suffix = `tag`; } accumulator[slug] = suffix; return accumulator; }, {}), [publicTaxonomies] ); const taxonomyLabels = publicTaxonomies?.reduce( (accumulator, { labels }) => { const templateName = (labels.template_name || labels.singular_name).toLowerCase(); accumulator[templateName] = (accumulator[templateName] || 0) + 1; return accumulator; }, {} ); const needsUniqueIdentifier = (labels, slug) => { if (["category", "post_tag"].includes(slug)) { return false; } const templateName = (labels.template_name || labels.singular_name).toLowerCase(); return taxonomyLabels[templateName] > 1 && templateName !== slug; }; const taxonomiesInfo = useEntitiesInfo2("taxonomy", templatePrefixes); const existingTemplateSlugs = (existingTemplates || []).map( ({ slug }) => slug ); const menuItems = (publicTaxonomies || []).reduce( (accumulator, taxonomy) => { const { slug, labels } = taxonomy; const generalTemplateSlug = templatePrefixes[slug]; const defaultTemplateType = defaultTemplateTypes?.find( ({ slug: _slug }) => _slug === generalTemplateSlug ); const hasGeneralTemplate = existingTemplateSlugs?.includes(generalTemplateSlug); const _needsUniqueIdentifier = needsUniqueIdentifier( labels, slug ); let menuItemTitle = labels.template_name || labels.singular_name; if (_needsUniqueIdentifier) { menuItemTitle = labels.template_name ? (0, import_i18n149.sprintf)( // translators: 1: Name of the template e.g: "Products by Category". 2: Slug of the taxonomy e.g: "product_cat". (0, import_i18n149._x)("%1$s (%2$s)", "taxonomy template menu label"), labels.template_name, slug ) : (0, import_i18n149.sprintf)( // translators: 1: Name of the taxonomy e.g: "Category". 2: Slug of the taxonomy e.g: "product_cat". (0, import_i18n149._x)("%1$s (%2$s)", "taxonomy menu label"), labels.singular_name, slug ); } const menuItem = defaultTemplateType ? { ...defaultTemplateType, templatePrefix: templatePrefixes[slug] } : { slug: generalTemplateSlug, title: menuItemTitle, description: (0, import_i18n149.sprintf)( // translators: %s: Name of the taxonomy e.g: "Product Categories". (0, import_i18n149.__)("Displays taxonomy: %s."), labels.singular_name ), icon: block_meta_default, templatePrefix: templatePrefixes[slug] }; const hasEntities = taxonomiesInfo?.[slug]?.hasEntities; if (hasEntities) { menuItem.onClick = (template) => { onClickMenuItem({ type: "taxonomy", slug, config: { queryArgs: ({ search }) => { return { _fields: "id,name,slug,link", orderBy: search ? "name" : "count", exclude: taxonomiesInfo[slug].existingEntitiesIds }; }, getSpecificTemplate: (suggestion) => { const templateSlug = prefixSlug2( templatePrefixes[slug], suggestion.slug ); return { title: templateSlug, slug: templateSlug, templatePrefix: templatePrefixes[slug] }; } }, labels, hasGeneralTemplate, template }); }; } if (!hasGeneralTemplate || hasEntities) { accumulator.push(menuItem); } return accumulator; }, [] ); const taxonomiesMenuItems = (0, import_element150.useMemo)( () => menuItems.reduce( (accumulator, taxonomy) => { const { slug } = taxonomy; let key = "taxonomiesMenuItems"; if (["category", "tag"].includes(slug)) { key = "defaultTaxonomiesMenuItems"; } accumulator[key].push(taxonomy); return accumulator; }, { defaultTaxonomiesMenuItems: [], taxonomiesMenuItems: [] } ), [menuItems] ); return taxonomiesMenuItems; }; var USE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX2 = { user: "author" }; var USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS2 = { user: { who: "authors" } }; function useAuthorMenuItem2(onClickMenuItem) { const existingTemplates = useExistingTemplates2(); const defaultTemplateTypes = useDefaultTemplateTypes2(); const authorInfo = useEntitiesInfo2( "root", USE_AUTHOR_MENU_ITEM_TEMPLATE_PREFIX2, USE_AUTHOR_MENU_ITEM_QUERY_PARAMETERS2 ); let authorMenuItem = defaultTemplateTypes?.find( ({ slug }) => slug === "author" ); if (!authorMenuItem) { authorMenuItem = { description: (0, import_i18n149.__)( "Displays latest posts written by a single author." ), slug: "author", title: "Author" }; } const hasGeneralTemplate = !!existingTemplates?.find( ({ slug }) => slug === "author" ); if (authorInfo.user?.hasEntities) { authorMenuItem = { ...authorMenuItem, templatePrefix: "author" }; authorMenuItem.onClick = (template) => { onClickMenuItem({ type: "root", slug: "user", config: { queryArgs: ({ search }) => { return { _fields: "id,name,slug,link", orderBy: search ? "name" : "registered_date", exclude: authorInfo.user.existingEntitiesIds, who: "authors" }; }, getSpecificTemplate: (suggestion) => { const templateSlug = prefixSlug2( "author", suggestion.slug ); return { title: templateSlug, slug: templateSlug, templatePrefix: "author" }; } }, labels: { singular_name: (0, import_i18n149.__)("Author"), search_items: (0, import_i18n149.__)("Search Authors"), not_found: (0, import_i18n149.__)("No authors found."), all_items: (0, import_i18n149.__)("All Authors") }, hasGeneralTemplate, template }); }; } if (!hasGeneralTemplate || authorInfo.user?.hasEntities) { return authorMenuItem; } } var useExistingTemplateSlugs = (templatePrefixes) => { const existingTemplates = useExistingTemplates2(); const existingSlugs = (0, import_element150.useMemo)(() => { return Object.entries(templatePrefixes || {}).reduce( (accumulator, [slug, prefix2]) => { const slugsWithTemplates = (existingTemplates || []).reduce( (_accumulator, existingTemplate) => { const _prefix = `${prefix2}-`; if (existingTemplate.slug.startsWith(_prefix)) { _accumulator.push( existingTemplate.slug.substring( _prefix.length ) ); } return _accumulator; }, [] ); if (slugsWithTemplates.length) { accumulator[slug] = slugsWithTemplates; } return accumulator; }, {} ); }, [templatePrefixes, existingTemplates]); return existingSlugs; }; var useTemplatesToExclude = (entityName, templatePrefixes, additionalQueryParameters = {}) => { const slugsToExcludePerEntity = useExistingTemplateSlugs(templatePrefixes); const recordsToExcludePerEntity = (0, import_data76.useSelect)( (select3) => { return Object.entries(slugsToExcludePerEntity || {}).reduce( (accumulator, [slug, slugsWithTemplates]) => { const entitiesWithTemplates = select3( import_core_data56.store ).getEntityRecords(entityName, slug, { _fields: "id", context: "view", slug: slugsWithTemplates, ...additionalQueryParameters[slug] }); if (entitiesWithTemplates?.length) { accumulator[slug] = entitiesWithTemplates; } return accumulator; }, {} ); }, [slugsToExcludePerEntity] ); return recordsToExcludePerEntity; }; var useEntitiesInfo2 = (entityName, templatePrefixes, additionalQueryParameters = EMPTY_OBJECT3) => { const recordsToExcludePerEntity = useTemplatesToExclude( entityName, templatePrefixes, additionalQueryParameters ); const entitiesHasRecords = (0, import_data76.useSelect)( (select3) => { return Object.keys(templatePrefixes || {}).reduce( (accumulator, slug) => { const existingEntitiesIds = recordsToExcludePerEntity?.[slug]?.map( ({ id }) => id ) || []; accumulator[slug] = !!select3( import_core_data56.store ).getEntityRecords(entityName, slug, { per_page: 1, _fields: "id", context: "view", exclude: existingEntitiesIds, ...additionalQueryParameters[slug] })?.length; return accumulator; }, {} ); }, [ templatePrefixes, recordsToExcludePerEntity, entityName, additionalQueryParameters ] ); const entitiesInfo = (0, import_element150.useMemo)(() => { return Object.keys(templatePrefixes || {}).reduce( (accumulator, slug) => { const existingEntitiesIds = recordsToExcludePerEntity?.[slug]?.map( ({ id }) => id ) || []; accumulator[slug] = { hasEntities: entitiesHasRecords[slug], existingEntitiesIds }; return accumulator; }, {} ); }, [templatePrefixes, recordsToExcludePerEntity, entitiesHasRecords]); return entitiesInfo; }; // packages/edit-site/build-module/components/add-new-template-legacy/add-custom-template-modal-content.mjs var import_jsx_runtime285 = __toESM(require_jsx_runtime(), 1); var EMPTY_ARRAY15 = []; function SuggestionListItem2({ suggestion, search, onSelect, entityForSuggestions }) { const baseCssClass = "edit-site-custom-template-modal__suggestions_list__list-item"; return /* @__PURE__ */ (0, import_jsx_runtime285.jsxs)( import_components156.Composite.Item, { render: /* @__PURE__ */ (0, import_jsx_runtime285.jsx)( import_components156.Button, { __next40pxDefaultSize: true, role: "option", className: baseCssClass, onClick: () => onSelect( entityForSuggestions.config.getSpecificTemplate( suggestion ) ) } ), children: [ /* @__PURE__ */ (0, import_jsx_runtime285.jsx)( import_components156.__experimentalText, { size: "body", lineHeight: 1.53846153846, weight: 500, className: `${baseCssClass}__title`, children: /* @__PURE__ */ (0, import_jsx_runtime285.jsx)( import_components156.TextHighlight, { text: (0, import_html_entities16.decodeEntities)(suggestion.name), highlight: search } ) } ), suggestion.link && /* @__PURE__ */ (0, import_jsx_runtime285.jsx)( import_components156.__experimentalText, { size: "body", lineHeight: 1.53846153846, className: `${baseCssClass}__info`, children: (0, import_url24.safeDecodeURI)(suggestion.link) } ) ] } ); } function useSearchSuggestions2(entityForSuggestions, search) { const { config: config2 } = entityForSuggestions; const query = (0, import_element151.useMemo)( () => ({ order: "asc", context: "view", search, per_page: search ? 20 : 10, ...config2.queryArgs(search) }), [search, config2] ); const { records: searchResults, hasResolved: searchHasResolved } = (0, import_core_data57.useEntityRecords)( entityForSuggestions.type, entityForSuggestions.slug, query ); const [suggestions, setSuggestions] = (0, import_element151.useState)(EMPTY_ARRAY15); (0, import_element151.useEffect)(() => { if (!searchHasResolved) { return; } let newSuggestions = EMPTY_ARRAY15; if (searchResults?.length) { newSuggestions = searchResults; if (config2.recordNamePath) { newSuggestions = mapToIHasNameAndId2( newSuggestions, config2.recordNamePath ); } } setSuggestions(newSuggestions); }, [searchResults, searchHasResolved]); return suggestions; } function SuggestionList2({ entityForSuggestions, onSelect }) { const [search, setSearch, debouncedSearch] = (0, import_compose31.useDebouncedInput)(); const suggestions = useSearchSuggestions2( entityForSuggestions, debouncedSearch ); const { labels } = entityForSuggestions; const [showSearchControl, setShowSearchControl] = (0, import_element151.useState)(false); if (!showSearchControl && suggestions?.length > 9) { setShowSearchControl(true); } return /* @__PURE__ */ (0, import_jsx_runtime285.jsxs)(import_jsx_runtime285.Fragment, { children: [ showSearchControl && /* @__PURE__ */ (0, import_jsx_runtime285.jsx)( import_components156.SearchControl, { onChange: setSearch, value: search, label: labels.search_items, placeholder: labels.search_items } ), !!suggestions?.length && /* @__PURE__ */ (0, import_jsx_runtime285.jsx)( import_components156.Composite, { orientation: "vertical", role: "listbox", className: "edit-site-custom-template-modal__suggestions_list", "aria-label": (0, import_i18n150.__)("Suggestions list"), children: suggestions.map((suggestion) => /* @__PURE__ */ (0, import_jsx_runtime285.jsx)( SuggestionListItem2, { suggestion, search: debouncedSearch, onSelect, entityForSuggestions }, suggestion.slug )) } ), debouncedSearch && !suggestions?.length && /* @__PURE__ */ (0, import_jsx_runtime285.jsx)( import_components156.__experimentalText, { as: "p", className: "edit-site-custom-template-modal__no-results", children: labels.not_found } ) ] }); } function AddCustomTemplateModalContent2({ onSelect, entityForSuggestions, onBack, containerRef }) { const [showSearchEntities, setShowSearchEntities] = (0, import_element151.useState)( entityForSuggestions.hasGeneralTemplate ); (0, import_element151.useEffect)(() => { if (containerRef.current) { const [firstFocusable] = import_dom14.focus.focusable.find( containerRef.current ); firstFocusable?.focus(); } }, [showSearchEntities]); return /* @__PURE__ */ (0, import_jsx_runtime285.jsxs)( import_components156.__experimentalVStack, { spacing: 4, className: "edit-site-custom-template-modal__contents-wrapper", alignment: "left", children: [ !showSearchEntities && /* @__PURE__ */ (0, import_jsx_runtime285.jsxs)(import_jsx_runtime285.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime285.jsx)(import_components156.__experimentalText, { as: "p", children: (0, import_i18n150.__)( "Select whether to create a single template for all items or a specific one." ) }), /* @__PURE__ */ (0, import_jsx_runtime285.jsxs)( import_components156.Flex, { className: "edit-site-custom-template-modal__contents", gap: "4", align: "initial", children: [ /* @__PURE__ */ (0, import_jsx_runtime285.jsxs)( import_components156.FlexItem, { isBlock: true, as: import_components156.Button, onClick: () => { const { slug, title, description, templatePrefix } = entityForSuggestions.template; onSelect({ slug, title, description, templatePrefix }); }, children: [ /* @__PURE__ */ (0, import_jsx_runtime285.jsx)( import_components156.__experimentalText, { as: "span", weight: 500, lineHeight: 1.53846153846, children: entityForSuggestions.labels.all_items } ), /* @__PURE__ */ (0, import_jsx_runtime285.jsx)( import_components156.__experimentalText, { as: "span", lineHeight: 1.53846153846, // translators: The user is given the choice to set up a template for all items of a post type or taxonomy, or just a specific one. children: (0, import_i18n150.__)("For all items") } ) ] } ), /* @__PURE__ */ (0, import_jsx_runtime285.jsxs)( import_components156.FlexItem, { isBlock: true, as: import_components156.Button, onClick: () => { setShowSearchEntities(true); }, children: [ /* @__PURE__ */ (0, import_jsx_runtime285.jsx)( import_components156.__experimentalText, { as: "span", weight: 500, lineHeight: 1.53846153846, children: entityForSuggestions.labels.singular_name } ), /* @__PURE__ */ (0, import_jsx_runtime285.jsx)( import_components156.__experimentalText, { as: "span", lineHeight: 1.53846153846, // translators: The user is given the choice to set up a template for all items of a post type or taxonomy, or just a specific one. children: (0, import_i18n150.__)("For a specific item") } ) ] } ) ] } ), /* @__PURE__ */ (0, import_jsx_runtime285.jsx)(import_components156.Flex, { justify: "right", children: /* @__PURE__ */ (0, import_jsx_runtime285.jsx)( import_components156.Button, { __next40pxDefaultSize: true, variant: "tertiary", onClick: onBack, children: (0, import_i18n150.__)("Back") } ) }) ] }), showSearchEntities && /* @__PURE__ */ (0, import_jsx_runtime285.jsxs)(import_jsx_runtime285.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime285.jsx)(import_components156.__experimentalText, { as: "p", children: (0, import_i18n150.__)( "This template will be used only for the specific item chosen." ) }), /* @__PURE__ */ (0, import_jsx_runtime285.jsx)( SuggestionList2, { entityForSuggestions, onSelect } ), /* @__PURE__ */ (0, import_jsx_runtime285.jsx)(import_components156.Flex, { justify: "right", children: /* @__PURE__ */ (0, import_jsx_runtime285.jsx)( import_components156.Button, { __next40pxDefaultSize: true, variant: "tertiary", onClick: () => { if (entityForSuggestions.hasGeneralTemplate) { onBack(); } else { setShowSearchEntities(false); } }, children: (0, import_i18n150.__)("Back") } ) }) ] }) ] } ); } var add_custom_template_modal_content_default2 = AddCustomTemplateModalContent2; // packages/edit-site/build-module/components/add-new-template-legacy/add-custom-generic-template-modal-content.mjs var import_element152 = __toESM(require_element(), 1); var import_i18n151 = __toESM(require_i18n(), 1); var import_components157 = __toESM(require_components(), 1); var import_jsx_runtime286 = __toESM(require_jsx_runtime(), 1); function AddCustomGenericTemplateModalContent2({ createTemplate, onBack }) { const [title, setTitle] = (0, import_element152.useState)(""); const defaultTitle = (0, import_i18n151.__)("Custom Template"); const [isBusy, setIsBusy] = (0, import_element152.useState)(false); const inputRef = (0, import_element152.useRef)(); (0, import_element152.useEffect)(() => { if (inputRef.current) { inputRef.current.focus(); } }, []); async function onCreateTemplate(event) { event.preventDefault(); if (isBusy) { return; } setIsBusy(true); try { await createTemplate( { slug: paramCase(title || defaultTitle) || "wp-custom-template", title: title || defaultTitle }, false ); } finally { setIsBusy(false); } } return /* @__PURE__ */ (0, import_jsx_runtime286.jsx)("form", { onSubmit: onCreateTemplate, children: /* @__PURE__ */ (0, import_jsx_runtime286.jsxs)(import_components157.__experimentalVStack, { spacing: 6, children: [ /* @__PURE__ */ (0, import_jsx_runtime286.jsx)( import_components157.TextControl, { __next40pxDefaultSize: true, label: (0, import_i18n151.__)("Name"), value: title, onChange: setTitle, placeholder: defaultTitle, disabled: isBusy, ref: inputRef, help: (0, import_i18n151.__)( // eslint-disable-next-line no-restricted-syntax -- 'sidebar' is a common web design term for layouts 'Describe the template, e.g. "Post with sidebar". A custom template can be manually applied to any post or page.' ) } ), /* @__PURE__ */ (0, import_jsx_runtime286.jsxs)( import_components157.__experimentalHStack, { className: "edit-site-custom-generic-template__modal-actions", justify: "right", children: [ /* @__PURE__ */ (0, import_jsx_runtime286.jsx)( import_components157.Button, { __next40pxDefaultSize: true, variant: "tertiary", onClick: onBack, children: (0, import_i18n151.__)("Back") } ), /* @__PURE__ */ (0, import_jsx_runtime286.jsx)( import_components157.Button, { __next40pxDefaultSize: true, variant: "primary", type: "submit", isBusy, "aria-disabled": isBusy, children: (0, import_i18n151.__)("Create") } ) ] } ) ] }) }); } var add_custom_generic_template_modal_content_default2 = AddCustomGenericTemplateModalContent2; // packages/edit-site/build-module/components/add-new-template-legacy/index.mjs var import_jsx_runtime287 = __toESM(require_jsx_runtime(), 1); var { useHistory: useHistory23 } = unlock(import_router36.privateApis); var DEFAULT_TEMPLATE_SLUGS2 = [ "front-page", "home", "single", "page", "index", "archive", "author", "category", "date", "tag", "search", "404" ]; var TEMPLATE_ICONS2 = { "front-page": home_default, home: verse_default, single: pin_default, page: page_default, archive: archive_default, search: search_default, 404: not_found_default, index: list_default, category: category_default, author: comment_author_avatar_default, taxonomy: block_meta_default, date: calendar_default, tag: tag_default, attachment: media_default }; function TemplateListItem2({ title, direction, className, description, icon, onClick, children }) { return /* @__PURE__ */ (0, import_jsx_runtime287.jsx)( import_components158.Button, { __next40pxDefaultSize: true, className, onClick, label: description, showTooltip: !!description, children: /* @__PURE__ */ (0, import_jsx_runtime287.jsxs)( import_components158.Flex, { as: "span", spacing: 2, align: "center", justify: "center", style: { width: "100%" }, direction, children: [ /* @__PURE__ */ (0, import_jsx_runtime287.jsx)("div", { className: "edit-site-add-new-template__template-icon", children: /* @__PURE__ */ (0, import_jsx_runtime287.jsx)(import_components158.Icon, { icon }) }), /* @__PURE__ */ (0, import_jsx_runtime287.jsxs)( import_components158.__experimentalVStack, { className: "edit-site-add-new-template__template-name", alignment: "center", spacing: 0, children: [ /* @__PURE__ */ (0, import_jsx_runtime287.jsx)( import_components158.__experimentalText, { align: "center", weight: 500, lineHeight: 1.53846153846, children: title } ), children ] } ) ] } ) } ); } var modalContentMap2 = { templatesList: 1, customTemplate: 2, customGenericTemplate: 3 }; function NewTemplateModal2({ onClose }) { const [modalContent, setModalContent] = (0, import_element153.useState)( modalContentMap2.templatesList ); const [entityForSuggestions, setEntityForSuggestions] = (0, import_element153.useState)({}); const [isSubmitting, setIsSubmitting] = (0, import_element153.useState)(false); const missingTemplates = useMissingTemplates2( setEntityForSuggestions, () => setModalContent(modalContentMap2.customTemplate) ); const history = useHistory23(); const { saveEntityRecord } = (0, import_data77.useDispatch)(import_core_data58.store); const { createErrorNotice, createSuccessNotice } = (0, import_data77.useDispatch)(import_notices9.store); const containerRef = (0, import_element153.useRef)(null); const isMobile = (0, import_compose32.useViewportMatch)("medium", "<"); const homeUrl = (0, import_data77.useSelect)((select3) => { return select3(import_core_data58.store).getEntityRecord("root", "__unstableBase")?.home; }, []); const TEMPLATE_SHORT_DESCRIPTIONS = { "front-page": homeUrl, date: (0, import_i18n152.sprintf)( // translators: %s: The homepage url. (0, import_i18n152.__)("E.g. %s"), homeUrl + "/" + (/* @__PURE__ */ new Date()).getFullYear() ) }; (0, import_element153.useEffect)(() => { if (containerRef.current && modalContent === modalContentMap2.templatesList) { const [firstFocusable] = import_dom15.focus.focusable.find( containerRef.current ); firstFocusable?.focus(); } }, [modalContent]); async function createTemplate(template, isWPSuggestion = true) { if (isSubmitting) { return; } setIsSubmitting(true); try { const { title, description, slug } = template; const newTemplate = await saveEntityRecord( "postType", TEMPLATE_POST_TYPE, { description, // Slugs need to be strings, so this is for template `404` slug: slug.toString(), status: "publish", title, // This adds a post meta field in template that is part of `is_custom` value calculation. is_wp_suggestion: isWPSuggestion }, { throwOnError: true } ); history.navigate( `/${TEMPLATE_POST_TYPE}/${newTemplate.id}?canvas=edit` ); createSuccessNotice( (0, import_i18n152.sprintf)( // translators: %s: Title of the created post or template, e.g: "Hello world". (0, import_i18n152.__)('"%s" successfully created.'), (0, import_html_entities17.decodeEntities)(newTemplate.title?.rendered || title) || (0, import_i18n152.__)("(no title)") ), { type: "snackbar" } ); } catch (error) { const errorMessage = error.message && error.code !== "unknown_error" ? error.message : (0, import_i18n152.__)("An error occurred while creating the template."); createErrorNotice(errorMessage, { type: "snackbar" }); } finally { setIsSubmitting(false); } } const onModalClose = () => { onClose(); setModalContent(modalContentMap2.templatesList); }; let modalTitle = (0, import_i18n152.__)("Add template"); if (modalContent === modalContentMap2.customTemplate) { modalTitle = (0, import_i18n152.sprintf)( // translators: %s: Name of the post type e.g: "Post". (0, import_i18n152.__)("Add template: %s"), entityForSuggestions.labels.singular_name ); } else if (modalContent === modalContentMap2.customGenericTemplate) { modalTitle = (0, import_i18n152.__)("Create custom template"); } return /* @__PURE__ */ (0, import_jsx_runtime287.jsxs)( import_components158.Modal, { title: modalTitle, className: clsx_default("edit-site-add-new-template__modal", { "edit-site-add-new-template__modal_template_list": modalContent === modalContentMap2.templatesList, "edit-site-custom-template-modal": modalContent === modalContentMap2.customTemplate }), onRequestClose: onModalClose, overlayClassName: modalContent === modalContentMap2.customGenericTemplate ? "edit-site-custom-generic-template__modal" : void 0, ref: containerRef, children: [ modalContent === modalContentMap2.templatesList && /* @__PURE__ */ (0, import_jsx_runtime287.jsxs)( import_components158.__experimentalGrid, { columns: isMobile ? 2 : 3, gap: 4, align: "flex-start", justify: "center", className: "edit-site-add-new-template__template-list__contents", children: [ /* @__PURE__ */ (0, import_jsx_runtime287.jsx)(import_components158.Flex, { className: "edit-site-add-new-template__template-list__prompt", children: (0, import_i18n152.__)( "Select what the new template should apply to:" ) }), missingTemplates.map((template) => { const { title, slug, onClick } = template; return /* @__PURE__ */ (0, import_jsx_runtime287.jsx)( TemplateListItem2, { title, direction: "column", className: "edit-site-add-new-template__template-button", description: TEMPLATE_SHORT_DESCRIPTIONS[slug], icon: TEMPLATE_ICONS2[slug] || layout_default, onClick: () => onClick ? onClick(template) : createTemplate(template) }, slug ); }), /* @__PURE__ */ (0, import_jsx_runtime287.jsx)( TemplateListItem2, { title: (0, import_i18n152.__)("Custom template"), direction: "row", className: "edit-site-add-new-template__custom-template-button", icon: pencil_default, onClick: () => setModalContent( modalContentMap2.customGenericTemplate ), children: /* @__PURE__ */ (0, import_jsx_runtime287.jsx)( import_components158.__experimentalText, { lineHeight: 1.53846153846, children: (0, import_i18n152.__)( "A custom template can be manually applied to any post or page." ) } ) } ) ] } ), modalContent === modalContentMap2.customTemplate && /* @__PURE__ */ (0, import_jsx_runtime287.jsx)( add_custom_template_modal_content_default2, { onSelect: createTemplate, entityForSuggestions, onBack: () => setModalContent(modalContentMap2.templatesList), containerRef } ), modalContent === modalContentMap2.customGenericTemplate && /* @__PURE__ */ (0, import_jsx_runtime287.jsx)( add_custom_generic_template_modal_content_default2, { createTemplate, onBack: () => setModalContent(modalContentMap2.templatesList) } ) ] } ); } function NewTemplate2() { const [showModal, setShowModal] = (0, import_element153.useState)(false); const { postType: postType2 } = (0, import_data77.useSelect)((select3) => { const { getPostType: getPostType2 } = select3(import_core_data58.store); return { postType: getPostType2(TEMPLATE_POST_TYPE) }; }, []); if (!postType2) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime287.jsxs)(import_jsx_runtime287.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime287.jsx)( import_components158.Button, { variant: "primary", onClick: () => setShowModal(true), label: postType2.labels.add_new_item, __next40pxDefaultSize: true, children: postType2.labels.add_new_item } ), showModal && /* @__PURE__ */ (0, import_jsx_runtime287.jsx)(NewTemplateModal2, { onClose: () => setShowModal(false) }) ] }); } function useMissingTemplates2(setEntityForSuggestions, onClick) { const existingTemplates = useExistingTemplates2(); const defaultTemplateTypes = useDefaultTemplateTypes2(); const existingTemplateSlugs = (existingTemplates || []).map( ({ slug }) => slug ); const missingDefaultTemplates = (defaultTemplateTypes || []).filter( (template) => DEFAULT_TEMPLATE_SLUGS2.includes(template.slug) && !existingTemplateSlugs.includes(template.slug) ); const onClickMenuItem = (_entityForSuggestions) => { onClick?.(); setEntityForSuggestions(_entityForSuggestions); }; const enhancedMissingDefaultTemplateTypes = [...missingDefaultTemplates]; const { defaultTaxonomiesMenuItems, taxonomiesMenuItems } = useTaxonomiesMenuItems2(onClickMenuItem); const { defaultPostTypesMenuItems, postTypesMenuItems } = usePostTypeMenuItems2(onClickMenuItem); const authorMenuItem = useAuthorMenuItem2(onClickMenuItem); [ ...defaultTaxonomiesMenuItems, ...defaultPostTypesMenuItems, authorMenuItem ].forEach((menuItem) => { if (!menuItem) { return; } const matchIndex = enhancedMissingDefaultTemplateTypes.findIndex( (template) => template.slug === menuItem.slug ); if (matchIndex > -1) { enhancedMissingDefaultTemplateTypes[matchIndex] = menuItem; } else { enhancedMissingDefaultTemplateTypes.push(menuItem); } }); enhancedMissingDefaultTemplateTypes?.sort((template1, template2) => { return DEFAULT_TEMPLATE_SLUGS2.indexOf(template1.slug) - DEFAULT_TEMPLATE_SLUGS2.indexOf(template2.slug); }); const missingTemplates = [ ...enhancedMissingDefaultTemplateTypes, ...usePostTypeArchiveMenuItems2(), ...postTypesMenuItems, ...taxonomiesMenuItems ]; return missingTemplates; } var add_new_template_legacy_default = (0, import_element153.memo)(NewTemplate2); // packages/edit-site/build-module/components/page-templates/index-legacy.mjs var import_jsx_runtime288 = __toESM(require_jsx_runtime(), 1); var { usePostActions: usePostActions3, templateTitleField: templateTitleField2 } = unlock(import_editor36.privateApis); var { useHistory: useHistory24, useLocation: useLocation31 } = unlock(import_router37.privateApis); var { useEntityRecordsWithPermissions: useEntityRecordsWithPermissions3 } = unlock(import_core_data59.privateApis); function PageTemplates2() { const { path, query } = useLocation31(); const { activeView = "active", postId } = query; const [selection, setSelection] = (0, import_element154.useState)([postId]); const defaultView = DEFAULT_VIEW2; const activeViewOverrides = (0, import_element154.useMemo)( () => getActiveViewOverridesForTab(activeView), [activeView] ); const { view, updateView, isModified, resetToDefault } = useView({ kind: "postType", name: TEMPLATE_POST_TYPE, slug: "default", defaultView, activeViewOverrides, queryParams: { page: query.pageNumber, search: query.search }, onChangeQueryParams: (newQueryParams) => { history.navigate( (0, import_url25.addQueryArgs)(path, { ...query, pageNumber: newQueryParams.page, search: newQueryParams.search || void 0 }) ); } }); const { records, isResolving: isLoadingData } = useEntityRecordsWithPermissions3("postType", TEMPLATE_POST_TYPE, { per_page: -1 }); const history = useHistory24(); const onChangeSelection = (0, import_element154.useCallback)( (items) => { setSelection(items); if (view?.type === "list") { history.navigate( (0, import_url25.addQueryArgs)(path, { postId: items.length === 1 ? items[0] : void 0 }) ); } }, [history, path, view?.type] ); const authors = (0, import_element154.useMemo)(() => { if (!records) { return []; } const authorsSet = /* @__PURE__ */ new Set(); records.forEach((template) => { authorsSet.add(template.author_text); }); return Array.from(authorsSet).map((author) => ({ value: author, label: author })); }, [records]); const fields = (0, import_element154.useMemo)( () => [ previewField2, templateTitleField2, descriptionField, { ...authorField, elements: authors } ], [authors] ); const { data, paginationInfo } = (0, import_element154.useMemo)(() => { return filterSortAndPaginate(records, view, fields); }, [records, view, fields]); const postTypeActions = usePostActions3({ postType: TEMPLATE_POST_TYPE, context: "list" }); const editAction = useEditPostAction(); const actions = (0, import_element154.useMemo)( () => [editAction, ...postTypeActions], [postTypeActions, editAction] ); const onChangeView = (0, import_compose33.useEvent)((newView) => { updateView(newView); if (newView.type !== view.type) { history.invalidate(); } }); return /* @__PURE__ */ (0, import_jsx_runtime288.jsx)( page_default2, { className: "edit-site-page-templates", title: (0, import_i18n153.__)("Templates"), headingLevel: 2, actions: /* @__PURE__ */ (0, import_jsx_runtime288.jsx)(add_new_template_legacy_default, {}), children: /* @__PURE__ */ (0, import_jsx_runtime288.jsx)( dataviews_default, { paginationInfo, fields, actions, data, isLoading: isLoadingData, view, onChangeView, onChangeSelection, isItemClickable: () => true, onClickItem: ({ id }) => { history.navigate(`/wp_template/${id}?canvas=edit`); }, selection, defaultLayouts: defaultLayouts2, onReset: isModified ? () => { resetToDefault(); history.invalidate(); } : false }, activeView ) } ); } // packages/edit-site/build-module/components/site-editor-routes/templates.mjs var import_jsx_runtime289 = __toESM(require_jsx_runtime(), 1); async function isTemplateListView(query) { const { activeView = "active" } = query; const view = await loadView({ kind: "postType", name: "wp_template", slug: "default", defaultView: DEFAULT_VIEW2, activeViewOverrides: getActiveViewOverridesForTab(activeView) }); return view.type === "list"; } var templatesRoute = { name: "templates", path: "/template", areas: { sidebar({ siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; return isBlockTheme ? /* @__PURE__ */ (0, import_jsx_runtime289.jsx)(SidebarNavigationScreenTemplatesBrowse, { backPath: "/" }) : /* @__PURE__ */ (0, import_jsx_runtime289.jsx)(SidebarNavigationScreenUnsupported, {}); }, content({ siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; if (!isBlockTheme) { return void 0; } return window?.__experimentalTemplateActivate ? /* @__PURE__ */ (0, import_jsx_runtime289.jsx)(PageTemplates, {}) : /* @__PURE__ */ (0, import_jsx_runtime289.jsx)(PageTemplates2, {}); }, async preview({ query, siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; if (!isBlockTheme) { return void 0; } const isListView2 = await isTemplateListView(query); return isListView2 ? /* @__PURE__ */ (0, import_jsx_runtime289.jsx)(EditSiteEditor, {}) : void 0; }, mobile({ siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; if (!isBlockTheme) { return /* @__PURE__ */ (0, import_jsx_runtime289.jsx)(SidebarNavigationScreenUnsupported, {}); } const isTemplateActivateEnabled = typeof window !== "undefined" && window.__experimentalTemplateActivate; return isTemplateActivateEnabled ? /* @__PURE__ */ (0, import_jsx_runtime289.jsx)(PageTemplates, {}) : /* @__PURE__ */ (0, import_jsx_runtime289.jsx)(PageTemplates2, {}); } }, widths: { async content({ query }) { const isListView2 = await isTemplateListView(query); return isListView2 ? 380 : void 0; } } }; // packages/edit-site/build-module/components/site-editor-routes/template-item.mjs var import_jsx_runtime290 = __toESM(require_jsx_runtime(), 1); var areas = { sidebar({ siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; return isBlockTheme ? /* @__PURE__ */ (0, import_jsx_runtime290.jsx)(SidebarNavigationScreenTemplatesBrowse, { backPath: "/" }) : /* @__PURE__ */ (0, import_jsx_runtime290.jsx)(SidebarNavigationScreenUnsupported, {}); }, mobile({ siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; return isBlockTheme ? /* @__PURE__ */ (0, import_jsx_runtime290.jsx)(EditSiteEditor, {}) : /* @__PURE__ */ (0, import_jsx_runtime290.jsx)(SidebarNavigationScreenUnsupported, {}); }, preview({ siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; return isBlockTheme ? /* @__PURE__ */ (0, import_jsx_runtime290.jsx)(EditSiteEditor, {}) : /* @__PURE__ */ (0, import_jsx_runtime290.jsx)(SidebarNavigationScreenUnsupported, {}); } }; var templateItemRoute = { name: "template-item", path: "/wp_template/*postId", areas }; // packages/edit-site/build-module/components/site-editor-routes/pages.mjs var import_router41 = __toESM(require_router(), 1); var import_i18n157 = __toESM(require_i18n(), 1); // packages/edit-site/build-module/components/sidebar-dataviews/index.mjs var import_components160 = __toESM(require_components(), 1); var import_router39 = __toESM(require_router(), 1); var import_data78 = __toESM(require_data(), 1); var import_core_data60 = __toESM(require_core_data(), 1); var import_element155 = __toESM(require_element(), 1); // packages/edit-site/build-module/components/sidebar-dataviews/dataview-item.mjs var import_router38 = __toESM(require_router(), 1); var import_components159 = __toESM(require_components(), 1); var import_url26 = __toESM(require_url(), 1); var import_jsx_runtime291 = __toESM(require_jsx_runtime(), 1); var { useLocation: useLocation32 } = unlock(import_router38.privateApis); function DataViewItem({ title, slug, type, icon, isActive, suffix }) { const { path } = useLocation32(); const iconToUse = icon || VIEW_LAYOUTS.find((v2) => v2.type === type).icon; if (slug === "all") { slug = void 0; } return /* @__PURE__ */ (0, import_jsx_runtime291.jsxs)( import_components159.__experimentalHStack, { justify: "flex-start", className: clsx_default("edit-site-sidebar-dataviews-dataview-item", { "is-selected": isActive }), children: [ /* @__PURE__ */ (0, import_jsx_runtime291.jsx)( SidebarNavigationItem, { icon: iconToUse, to: (0, import_url26.addQueryArgs)(path, { activeView: slug }), "aria-current": isActive ? "true" : void 0, children: title } ), suffix ] } ); } // packages/edit-site/build-module/components/post-list/view-utils.mjs var import_i18n154 = __toESM(require_i18n(), 1); var defaultLayouts3 = { table: { layout: { styles: { author: { align: "start" } } } }, grid: {}, list: {} }; var DEFAULT_VIEW3 = { type: "list", filters: [], perPage: 20, sort: { field: "title", direction: "asc" }, showLevels: true, titleField: "title", mediaField: "featured_media", fields: ["author", "status"], ...defaultLayouts3.list }; function getDefaultViews(postType2) { return [ { title: postType2?.labels?.all_items || (0, import_i18n154.__)("All items"), slug: "all", icon: pages_default, view: DEFAULT_VIEW3 }, { title: (0, import_i18n154.__)("Published"), slug: "published", icon: published_default, view: { ...DEFAULT_VIEW3, filters: [ { field: "status", operator: OPERATOR_IS_ANY, value: "publish", isLocked: true } ] } }, { title: (0, import_i18n154.__)("Scheduled"), slug: "future", icon: scheduled_default, view: { ...DEFAULT_VIEW3, filters: [ { field: "status", operator: OPERATOR_IS_ANY, value: "future", isLocked: true } ] } }, { title: (0, import_i18n154.__)("Drafts"), slug: "drafts", icon: drafts_default, view: { ...DEFAULT_VIEW3, filters: [ { field: "status", operator: OPERATOR_IS_ANY, value: "draft", isLocked: true } ] } }, { title: (0, import_i18n154.__)("Pending"), slug: "pending", icon: pending_default, view: { ...DEFAULT_VIEW3, filters: [ { field: "status", operator: OPERATOR_IS_ANY, value: "pending", isLocked: true } ] } }, { title: (0, import_i18n154.__)("Private"), slug: "private", icon: not_allowed_default, view: { ...DEFAULT_VIEW3, filters: [ { field: "status", operator: OPERATOR_IS_ANY, value: "private", isLocked: true } ] } }, { title: (0, import_i18n154.__)("Trash"), slug: "trash", icon: trash_default, view: { ...DEFAULT_VIEW3, type: "table", layout: defaultLayouts3.table.layout, filters: [ { field: "status", operator: OPERATOR_IS_ANY, value: "trash", isLocked: true } ] } } ]; } var SLUG_TO_STATUS = { published: "publish", future: "future", drafts: "draft", pending: "pending", private: "private", trash: "trash" }; function getActiveViewOverridesForTab2(activeView) { const base = { ...defaultLayouts3.table }; const status = SLUG_TO_STATUS[activeView]; if (!status) { return base; } return { ...base, filters: [ { field: "status", operator: OPERATOR_IS_ANY, value: status, isLocked: true } ] }; } // packages/edit-site/build-module/components/sidebar-dataviews/index.mjs var import_jsx_runtime292 = __toESM(require_jsx_runtime(), 1); var { useLocation: useLocation33 } = unlock(import_router39.privateApis); function DataViewsSidebarContent({ postType: postType2 }) { const { query: { activeView = "all" } } = useLocation33(); const postTypeObject = (0, import_data78.useSelect)( (select3) => { const { getPostType: getPostType2 } = select3(import_core_data60.store); return getPostType2(postType2); }, [postType2] ); const defaultViews = (0, import_element155.useMemo)( () => getDefaultViews(postTypeObject), [postTypeObject] ); if (!postType2) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime292.jsx)(import_jsx_runtime292.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime292.jsx)(import_components160.__experimentalItemGroup, { className: "edit-site-sidebar-dataviews", children: defaultViews.map((dataview) => { return /* @__PURE__ */ (0, import_jsx_runtime292.jsx)( DataViewItem, { slug: dataview.slug, title: dataview.title, icon: dataview.icon, type: dataview.view.type, isActive: dataview.slug === activeView }, dataview.slug ); }) }) }); } // packages/edit-site/build-module/components/post-list/index.mjs var import_components163 = __toESM(require_components(), 1); var import_core_data64 = __toESM(require_core_data(), 1); var import_element159 = __toESM(require_element(), 1); var import_router40 = __toESM(require_router(), 1); var import_data81 = __toESM(require_data(), 1); var import_editor40 = __toESM(require_editor(), 1); var import_compose34 = __toESM(require_compose(), 1); var import_url27 = __toESM(require_url(), 1); // packages/edit-site/build-module/components/add-new-post/index.mjs var import_components161 = __toESM(require_components(), 1); var import_i18n155 = __toESM(require_i18n(), 1); var import_data79 = __toESM(require_data(), 1); var import_element156 = __toESM(require_element(), 1); var import_core_data61 = __toESM(require_core_data(), 1); var import_notices10 = __toESM(require_notices(), 1); var import_html_entities18 = __toESM(require_html_entities(), 1); var import_blocks14 = __toESM(require_blocks(), 1); var import_jsx_runtime293 = __toESM(require_jsx_runtime(), 1); function AddNewPostModal({ postType: postType2, onSave, onClose }) { const labels = (0, import_data79.useSelect)( (select3) => select3(import_core_data61.store).getPostType(postType2)?.labels, [postType2] ); const [isCreatingPost, setIsCreatingPost] = (0, import_element156.useState)(false); const [title, setTitle] = (0, import_element156.useState)(""); const { saveEntityRecord } = (0, import_data79.useDispatch)(import_core_data61.store); const { createErrorNotice, createSuccessNotice } = (0, import_data79.useDispatch)(import_notices10.store); const { resolveSelect: resolveSelect2 } = (0, import_data79.useRegistry)(); async function createPost(event) { event.preventDefault(); if (isCreatingPost) { return; } setIsCreatingPost(true); try { const postTypeObject = await resolveSelect2(import_core_data61.store).getPostType(postType2); const newPage = await saveEntityRecord( "postType", postType2, { status: "draft", title, slug: title ?? void 0, content: !!postTypeObject.template && postTypeObject.template.length ? (0, import_blocks14.serialize)( (0, import_blocks14.synchronizeBlocksWithTemplate)( [], postTypeObject.template ) ) : void 0 }, { throwOnError: true } ); onSave(newPage); createSuccessNotice( (0, import_i18n155.sprintf)( // translators: %s: Title of the created post or template, e.g: "Hello world". (0, import_i18n155.__)('"%s" successfully created.'), (0, import_html_entities18.decodeEntities)(newPage.title?.rendered || title) || (0, import_i18n155.__)("(no title)") ), { type: "snackbar" } ); } catch (error) { const errorMessage = error.message && error.code !== "unknown_error" ? error.message : (0, import_i18n155.__)("An error occurred while creating the item."); createErrorNotice(errorMessage, { type: "snackbar" }); } finally { setIsCreatingPost(false); } } return /* @__PURE__ */ (0, import_jsx_runtime293.jsx)( import_components161.Modal, { title: ( // translators: %s: post type singular_name label e.g: "Page". (0, import_i18n155.sprintf)((0, import_i18n155.__)("Draft new: %s"), labels?.singular_name) ), onRequestClose: onClose, focusOnMount: "firstContentElement", size: "small", children: /* @__PURE__ */ (0, import_jsx_runtime293.jsx)("form", { onSubmit: createPost, children: /* @__PURE__ */ (0, import_jsx_runtime293.jsxs)(import_components161.__experimentalVStack, { spacing: 4, children: [ /* @__PURE__ */ (0, import_jsx_runtime293.jsx)( import_components161.TextControl, { __next40pxDefaultSize: true, label: (0, import_i18n155.__)("Title"), onChange: setTitle, placeholder: (0, import_i18n155.__)("No title"), value: title } ), /* @__PURE__ */ (0, import_jsx_runtime293.jsxs)(import_components161.__experimentalHStack, { spacing: 2, justify: "end", children: [ /* @__PURE__ */ (0, import_jsx_runtime293.jsx)( import_components161.Button, { __next40pxDefaultSize: true, variant: "tertiary", onClick: onClose, children: (0, import_i18n155.__)("Cancel") } ), /* @__PURE__ */ (0, import_jsx_runtime293.jsx)( import_components161.Button, { __next40pxDefaultSize: true, variant: "primary", type: "submit", isBusy: isCreatingPost, "aria-disabled": isCreatingPost, children: (0, import_i18n155.__)("Create draft") } ) ] }) ] }) }) } ); } // packages/edit-site/build-module/components/post-list/use-notes-count.mjs var import_element157 = __toESM(require_element(), 1); var import_core_data62 = __toESM(require_core_data(), 1); function useNotesCount(postIds) { const { records: notes, isResolving } = (0, import_core_data62.useEntityRecords)( "root", "comment", { post: postIds, type: "note", status: "all", per_page: -1, _fields: "id,post" }, { enabled: postIds?.length > 0 } ); const notesCount = (0, import_element157.useMemo)(() => { if (!notes || notes.length === 0) { return {}; } const counts = {}; notes.forEach((note) => { const postId = note.post; counts[postId] = (counts[postId] || 0) + 1; }); return counts; }, [notes]); return { notesCount, isResolving }; } // packages/edit-site/build-module/components/post-list/quick-edit-modal.mjs var import_i18n156 = __toESM(require_i18n(), 1); var import_data80 = __toESM(require_data(), 1); var import_core_data63 = __toESM(require_core_data(), 1); var import_components162 = __toESM(require_components(), 1); var import_element158 = __toESM(require_element(), 1); var import_editor39 = __toESM(require_editor(), 1); var import_jsx_runtime294 = __toESM(require_jsx_runtime(), 1); var { usePostFields: usePostFields2, PostCardPanel } = unlock(import_editor39.privateApis); var fieldsWithBulkEditSupport = ["status", "date", "author", "discussion"]; function QuickEditModal({ postType: postType2, postId, closeModal }) { const isBulk = postId.length > 1; const [localEdits, setLocalEdits] = (0, import_element158.useState)({}); const { record, hasFinishedResolution, canSwitchTemplate } = (0, import_data80.useSelect)( (select3) => { const { getEditedEntityRecord, hasFinishedResolution: hasFinished } = select3(import_core_data63.store); if (isBulk) { return { record: null, hasFinishedResolution: true }; } const args = ["postType", postType2, postId[0]]; const { getHomePage, getPostsPageId } = unlock( select3(import_core_data63.store) ); const singlePostId = String(postId[0]); const isPostsPage = singlePostId !== void 0 && getPostsPageId() === singlePostId; const isFrontPage = singlePostId !== void 0 && postType2 === "page" && getHomePage()?.postId === singlePostId; return { record: getEditedEntityRecord(...args), hasFinishedResolution: hasFinished( "getEditedEntityRecord", args ), canSwitchTemplate: !isPostsPage && !isFrontPage }; }, [postType2, postId, isBulk] ); const { editEntityRecord, saveEditedEntityRecord } = (0, import_data80.useDispatch)(import_core_data63.store); const _fields = usePostFields2({ postType: postType2 }); const fields = (0, import_element158.useMemo)( () => _fields?.map((field) => { if (field.id === "status") { return { ...field, elements: field.elements.filter( (element) => element.value !== "trash" ) }; } if (field.id === "template") { return { ...field, readOnly: !canSwitchTemplate }; } return field; }), [_fields, canSwitchTemplate] ); const form = (0, import_element158.useMemo)(() => { const allFields = [ { id: "featured_media", layout: { type: "regular", labelPosition: "none" } }, { id: "status", label: (0, import_i18n156.__)("Status"), children: [ { id: "status", layout: { type: "regular", labelPosition: "none" } }, "password" ] }, "author", "date", "slug", "parent", { id: "discussion", label: (0, import_i18n156.__)("Discussion"), children: [ { id: "comment_status", layout: { type: "regular", labelPosition: "none" } }, "ping_status" ] }, "template" ]; return { layout: { type: "panel" }, fields: isBulk ? allFields.filter( (field) => fieldsWithBulkEditSupport.includes( typeof field === "string" ? field : field.id ) ) : allFields }; }, [isBulk]); const onChange = (edits) => { const currentData = { ...record, ...localEdits }; if (edits.status && edits.status !== "future" && currentData?.status === "future" && new Date(currentData.date) > /* @__PURE__ */ new Date()) { edits.date = null; } if (edits.status && edits.status === "private" && currentData?.password) { edits.password = ""; } setLocalEdits((prev) => ({ ...prev, ...edits })); }; (0, import_element158.useEffect)(() => { setLocalEdits({}); }, [postId]); const onSave = async () => { for (const id of postId) { editEntityRecord("postType", postType2, id, localEdits); } if (isBulk) { await Promise.allSettled( postId.map( (id) => saveEditedEntityRecord("postType", postType2, id) ) ); } else { await saveEditedEntityRecord("postType", postType2, postId[0]); } closeModal?.(); }; return /* @__PURE__ */ (0, import_jsx_runtime294.jsxs)( import_components162.Modal, { overlayClassName: "dataviews-action-modal__quick-edit", __experimentalHideHeader: true, onRequestClose: closeModal, focusOnMount: "firstElement", children: [ /* @__PURE__ */ (0, import_jsx_runtime294.jsx)("div", { className: "dataviews-action-modal__quick-edit-header", children: /* @__PURE__ */ (0, import_jsx_runtime294.jsx)( PostCardPanel, { postType: postType2, postId, onClose: closeModal, hideActions: true } ) }), /* @__PURE__ */ (0, import_jsx_runtime294.jsx)("div", { className: "dataviews-action-modal__quick-edit-content", children: hasFinishedResolution && /* @__PURE__ */ (0, import_jsx_runtime294.jsx)( DataForm, { data: { ...record, ...localEdits }, fields, form, onChange } ) }), /* @__PURE__ */ (0, import_jsx_runtime294.jsxs)(import_components162.__experimentalHStack, { className: "dataviews-action-modal__quick-edit-footer", children: [ /* @__PURE__ */ (0, import_jsx_runtime294.jsx)( import_components162.Button, { __next40pxDefaultSize: true, variant: "secondary", onClick: closeModal, children: (0, import_i18n156.__)("Cancel") } ), /* @__PURE__ */ (0, import_jsx_runtime294.jsx)( import_components162.Button, { __next40pxDefaultSize: true, variant: "primary", onClick: onSave, children: (0, import_i18n156.__)("Done") } ) ] }) ] } ); } // packages/edit-site/build-module/components/post-list/index.mjs var import_jsx_runtime295 = __toESM(require_jsx_runtime(), 1); var { usePostActions: usePostActions4, usePostFields: usePostFields3 } = unlock(import_editor40.privateApis); var { useLocation: useLocation34, useHistory: useHistory25 } = unlock(import_router40.privateApis); var { useEntityRecordsWithPermissions: useEntityRecordsWithPermissions4 } = unlock(import_core_data64.privateApis); var EMPTY_ARRAY16 = []; var DEFAULT_STATUSES = "draft,future,pending,private,publish"; function getItemId(item) { return item.id.toString(); } function getItemLevel(item) { return item.level; } function PostList({ postType: postType2 }) { const { path, query } = useLocation34(); const { activeView = "all", postId, quickEdit = false } = query; const history = useHistory25(); const defaultView = DEFAULT_VIEW3; const activeViewOverrides = (0, import_element159.useMemo)( () => getActiveViewOverridesForTab2(activeView), [activeView] ); const { view, updateView, isModified, resetToDefault } = useView({ kind: "postType", name: postType2, slug: "default", defaultView, activeViewOverrides, queryParams: { page: query.pageNumber, search: query.search }, onChangeQueryParams: (newQueryParams) => { history.navigate( (0, import_url27.addQueryArgs)(path, { ...query, pageNumber: newQueryParams.page, search: newQueryParams.search || void 0 }) ); } }); const onChangeView = (0, import_compose34.useEvent)((newView) => { updateView(newView); if (newView.type !== view.type) { history.invalidate(); } }); const [selection, setSelection] = (0, import_element159.useState)(postId?.split(",") ?? []); const onChangeSelection = (0, import_element159.useCallback)( (items) => { setSelection(items); history.navigate( (0, import_url27.addQueryArgs)(path, { postId: items.join(",") }) ); }, [path, history] ); (0, import_element159.useEffect)(() => { const newSelection = postId?.split(",") ?? []; setSelection(newSelection); }, [postId]); const fields = usePostFields3({ postType: postType2 }); const queryArgs = (0, import_element159.useMemo)(() => { const filters = {}; view.filters?.forEach((filter) => { if (filter.field === "status" && filter.operator === OPERATOR_IS_ANY) { filters.status = filter.value; } if (filter.field === "author" && filter.operator === OPERATOR_IS_ANY) { filters.author = filter.value; } else if (filter.field === "author" && filter.operator === OPERATOR_IS_NONE) { filters.author_exclude = filter.value; } if (filter.field === "date") { if (!filter.value) { return; } if (filter.operator === OPERATOR_BEFORE) { filters.before = filter.value; } else if (filter.operator === OPERATOR_AFTER) { filters.after = filter.value; } } }); if (!filters.status || filters.status === "") { filters.status = DEFAULT_STATUSES; } return { per_page: view.perPage, page: view.page, _embed: "author,wp:featuredmedia", order: view.sort?.direction, orderby: view.sort?.field, orderby_hierarchy: !!view.showLevels, search: view.search, ...filters }; }, [view]); const { records, isResolving: isLoadingData, totalItems, totalPages, hasResolved } = useEntityRecordsWithPermissions4("postType", postType2, queryArgs); const postIds = (0, import_element159.useMemo)( () => records?.map((record) => record.id) ?? [], [records] ); const { notesCount, isLoading: isLoadingNotesCount } = useNotesCount(postIds); const data = (0, import_element159.useMemo)(() => { let processedRecords = records; if (view?.sort?.field === "author") { processedRecords = filterSortAndPaginate( records, { sort: { ...view.sort } }, fields ).data; } if (processedRecords) { return processedRecords.map((record) => ({ ...record, notesCount: notesCount[record.id] ?? 0 })); } return processedRecords; }, [records, fields, view?.sort, notesCount]); const ids = data?.map((record) => getItemId(record)) ?? []; const prevIds = (0, import_compose34.usePrevious)(ids) ?? []; const deletedIds = prevIds.filter((id) => !ids.includes(id)); const postIdWasDeleted = deletedIds.includes(postId); (0, import_element159.useEffect)(() => { if (postIdWasDeleted) { history.navigate( (0, import_url27.addQueryArgs)(path, { postId: void 0 }) ); } }, [history, postIdWasDeleted, path]); const paginationInfo = (0, import_element159.useMemo)( () => ({ totalItems, totalPages }), [totalItems, totalPages] ); const { labels, canCreateRecord } = (0, import_data81.useSelect)( (select3) => { const { getPostType: getPostType2, canUser } = select3(import_core_data64.store); return { labels: getPostType2(postType2)?.labels, canCreateRecord: canUser("create", { kind: "postType", name: postType2 }) }; }, [postType2] ); const postTypeActions = usePostActions4({ postType: postType2, context: "list" }); const editAction = useEditPostAction(); const quickEditAction = useQuickEditPostAction(); const actions = (0, import_element159.useMemo)(() => { if (view.type === LAYOUT_LIST) { const editActionPrimary = { ...editAction, isPrimary: true }; return [editActionPrimary, ...postTypeActions]; } return [editAction, quickEditAction, ...postTypeActions]; }, [view.type, editAction, quickEditAction, postTypeActions]); const [showAddPostModal, setShowAddPostModal] = (0, import_element159.useState)(false); const openModal = () => setShowAddPostModal(true); const closeModal = () => setShowAddPostModal(false); const handleNewPage = ({ type, id }) => { history.navigate(`/${type}/${id}?canvas=edit`); closeModal(); }; const closeQuickEditModal = () => { history.navigate( (0, import_url27.addQueryArgs)(path, { ...query, quickEdit: void 0 }) ); }; return /* @__PURE__ */ (0, import_jsx_runtime295.jsxs)( page_default2, { title: labels?.name, headingLevel: 2, actions: /* @__PURE__ */ (0, import_jsx_runtime295.jsx)(import_jsx_runtime295.Fragment, { children: labels?.add_new_item && canCreateRecord && /* @__PURE__ */ (0, import_jsx_runtime295.jsxs)(import_jsx_runtime295.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime295.jsx)( import_components163.Button, { variant: "primary", onClick: openModal, __next40pxDefaultSize: true, children: labels.add_new_item } ), showAddPostModal && /* @__PURE__ */ (0, import_jsx_runtime295.jsx)( AddNewPostModal, { postType: postType2, onSave: handleNewPage, onClose: closeModal } ) ] }) }), children: [ /* @__PURE__ */ (0, import_jsx_runtime295.jsx)( dataviews_default, { paginationInfo, fields, actions, data: data || EMPTY_ARRAY16, isLoading: isLoadingData || isLoadingNotesCount || !hasResolved, view, onChangeView, selection, onChangeSelection, isItemClickable: (item) => item.status !== "trash", onClickItem: ({ id }) => { history.navigate(`/${postType2}/${id}?canvas=edit`); }, getItemId, getItemLevel, defaultLayouts: defaultLayouts3, onReset: isModified ? () => { resetToDefault(); history.invalidate(); } : false }, activeView ), quickEdit && !isLoadingData && selection.length > 0 && view.type !== LAYOUT_LIST && /* @__PURE__ */ (0, import_jsx_runtime295.jsx)( QuickEditModal, { postType: postType2, postId: selection, closeModal: closeQuickEditModal } ) ] } ); } // packages/edit-site/build-module/components/site-editor-routes/pages.mjs var import_jsx_runtime296 = __toESM(require_jsx_runtime(), 1); var { useLocation: useLocation35 } = unlock(import_router41.privateApis); async function isListView(query) { const { activeView = "all" } = query; const view = await loadView({ kind: "postType", name: "page", slug: "default", defaultView: DEFAULT_VIEW3, activeViewOverrides: getActiveViewOverridesForTab2(activeView) }); return view.type === "list"; } function MobilePagesView() { const { query = {} } = useLocation35(); const { canvas = "view" } = query; return canvas === "edit" ? /* @__PURE__ */ (0, import_jsx_runtime296.jsx)(EditSiteEditor, {}) : /* @__PURE__ */ (0, import_jsx_runtime296.jsx)(PostList, { postType: "page" }); } var pagesRoute = { name: "pages", path: "/page", areas: { sidebar({ siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; return isBlockTheme ? /* @__PURE__ */ (0, import_jsx_runtime296.jsx)( SidebarNavigationScreen, { title: (0, import_i18n157.__)("Pages"), backPath: "/", content: /* @__PURE__ */ (0, import_jsx_runtime296.jsx)(DataViewsSidebarContent, { postType: "page" }) } ) : /* @__PURE__ */ (0, import_jsx_runtime296.jsx)(SidebarNavigationScreenUnsupported, {}); }, content({ siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; return isBlockTheme ? /* @__PURE__ */ (0, import_jsx_runtime296.jsx)(PostList, { postType: "page" }) : void 0; }, async preview({ query, siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; if (!isBlockTheme) { return void 0; } const isList = await isListView(query); return isList ? /* @__PURE__ */ (0, import_jsx_runtime296.jsx)(EditSiteEditor, {}) : void 0; }, mobile({ siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; return isBlockTheme ? /* @__PURE__ */ (0, import_jsx_runtime296.jsx)(MobilePagesView, {}) : /* @__PURE__ */ (0, import_jsx_runtime296.jsx)(SidebarNavigationScreenUnsupported, {}); } }, widths: { async content({ query }) { const isList = await isListView(query); return isList ? 380 : void 0; } } }; // packages/edit-site/build-module/components/site-editor-routes/page-item.mjs var import_i18n158 = __toESM(require_i18n(), 1); var import_jsx_runtime297 = __toESM(require_jsx_runtime(), 1); var pageItemRoute = { name: "page-item", path: "/page/:postId", areas: { sidebar({ siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; return isBlockTheme ? /* @__PURE__ */ (0, import_jsx_runtime297.jsx)( SidebarNavigationScreen, { title: (0, import_i18n158.__)("Pages"), backPath: "/", content: /* @__PURE__ */ (0, import_jsx_runtime297.jsx)(DataViewsSidebarContent, { postType: "page" }) } ) : /* @__PURE__ */ (0, import_jsx_runtime297.jsx)(SidebarNavigationScreenUnsupported, {}); }, mobile({ siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; return isBlockTheme ? /* @__PURE__ */ (0, import_jsx_runtime297.jsx)(EditSiteEditor, {}) : /* @__PURE__ */ (0, import_jsx_runtime297.jsx)(SidebarNavigationScreenUnsupported, {}); }, preview({ siteData }) { const isBlockTheme = siteData.currentTheme?.is_block_theme; return isBlockTheme ? /* @__PURE__ */ (0, import_jsx_runtime297.jsx)(EditSiteEditor, {}) : /* @__PURE__ */ (0, import_jsx_runtime297.jsx)(SidebarNavigationScreenUnsupported, {}); } } }; // packages/edit-site/build-module/components/site-editor-routes/attachment-item.mjs var import_i18n159 = __toESM(require_i18n(), 1); var import_jsx_runtime298 = __toESM(require_jsx_runtime(), 1); var attachmentItemRoute = { name: "attachment-item", path: "/attachment/:postId", areas: { sidebar: /* @__PURE__ */ (0, import_jsx_runtime298.jsx)( SidebarNavigationScreen, { title: (0, import_i18n159.__)("Media"), backPath: "/", content: null } ), mobile: /* @__PURE__ */ (0, import_jsx_runtime298.jsx)(EditSiteEditor, {}), preview: /* @__PURE__ */ (0, import_jsx_runtime298.jsx)(EditSiteEditor, {}) } }; // packages/edit-site/build-module/components/site-editor-routes/stylebook.mjs var import_i18n160 = __toESM(require_i18n(), 1); var import_editor44 = __toESM(require_editor(), 1); var import_jsx_runtime299 = __toESM(require_jsx_runtime(), 1); var { StyleBookPreview: StyleBookPreview2 } = unlock(import_editor44.privateApis); var stylebookRoute = { name: "stylebook", path: "/stylebook", areas: { sidebar({ siteData }) { return isClassicThemeWithStyleBookSupport(siteData) ? /* @__PURE__ */ (0, import_jsx_runtime299.jsx)( SidebarNavigationScreen, { title: (0, import_i18n160.__)("Styles"), backPath: "/", description: (0, import_i18n160.__)( `Preview your website's visual identity: colors, typography, and blocks.` ) } ) : /* @__PURE__ */ (0, import_jsx_runtime299.jsx)(SidebarNavigationScreenUnsupported, {}); }, preview({ siteData }) { return isClassicThemeWithStyleBookSupport(siteData) ? /* @__PURE__ */ (0, import_jsx_runtime299.jsx)( StyleBookPreview2, { isStatic: true, settings: siteData.editorSettings } ) : void 0; }, mobile({ siteData }) { return isClassicThemeWithStyleBookSupport(siteData) ? /* @__PURE__ */ (0, import_jsx_runtime299.jsx)( StyleBookPreview2, { isStatic: true, settings: siteData.editorSettings } ) : void 0; } } }; // packages/edit-site/build-module/components/site-editor-routes/notfound.mjs var import_i18n161 = __toESM(require_i18n(), 1); var import_components164 = __toESM(require_components(), 1); var import_jsx_runtime300 = __toESM(require_jsx_runtime(), 1); function NotFoundError() { return /* @__PURE__ */ (0, import_jsx_runtime300.jsx)(import_components164.Notice, { status: "error", isDismissible: false, children: (0, import_i18n161.__)( "The requested page could not be found. Please check the URL." ) }); } var notFoundRoute = { name: "notfound", path: "*", areas: { sidebar: /* @__PURE__ */ (0, import_jsx_runtime300.jsx)(SidebarNavigationScreenMain, {}), mobile: /* @__PURE__ */ (0, import_jsx_runtime300.jsx)( SidebarNavigationScreenMain, { customDescription: /* @__PURE__ */ (0, import_jsx_runtime300.jsx)(NotFoundError, {}) } ), content: /* @__PURE__ */ (0, import_jsx_runtime300.jsx)(import_components164.__experimentalSpacer, { padding: 2, children: /* @__PURE__ */ (0, import_jsx_runtime300.jsx)(NotFoundError, {}) }) } }; // packages/edit-site/build-module/components/site-editor-routes/index.mjs var routes2 = [ ...window?.__experimentalMediaEditor ? [attachmentItemRoute] : [], pageItemRoute, pagesRoute, templateItemRoute, templatesRoute, templatePartItemRoute, patternItemRoute, patternsRoute, navigationItemRoute, navigationRoute, stylesRoute, homeRoute, stylebookRoute, notFoundRoute ]; function useRegisterSiteEditorRoutes() { const registry = (0, import_data82.useRegistry)(); const { registerRoute: registerRoute2 } = unlock((0, import_data82.useDispatch)(store)); (0, import_element160.useEffect)(() => { registry.batch(() => { routes2.forEach(registerRoute2); }); }, [registry, registerRoute2]); } // packages/edit-site/build-module/components/app/index.mjs var import_jsx_runtime301 = __toESM(require_jsx_runtime(), 1); var { RouterProvider } = unlock(import_router42.privateApis); function AppLayout() { useCommonCommands(); useSetCommandContext(); return /* @__PURE__ */ (0, import_jsx_runtime301.jsx)(LayoutWithGlobalStylesProvider, {}); } function App() { useRegisterSiteEditorRoutes(); const { routes: routes3, currentTheme, editorSettings } = (0, import_data83.useSelect)((select3) => { return { routes: unlock(select3(store)).getRoutes(), currentTheme: select3(import_core_data65.store).getCurrentTheme(), // This is a temp solution until the has_theme_json value is available for the current theme. editorSettings: select3(store).getSettings() }; }, []); const beforeNavigate = (0, import_element161.useCallback)(({ path, query }) => { if (!isPreviewingTheme()) { return { path, query }; } return { path, query: { ...query, wp_theme_preview: "wp_theme_preview" in query ? query.wp_theme_preview : currentlyPreviewingTheme() } }; }, []); const matchResolverArgsValue = (0, import_element161.useMemo)( () => ({ siteData: { currentTheme, editorSettings } }), [currentTheme, editorSettings] ); return /* @__PURE__ */ (0, import_jsx_runtime301.jsx)( RouterProvider, { routes: routes3, pathArg: "p", beforeNavigate, matchResolverArgs: matchResolverArgsValue, children: /* @__PURE__ */ (0, import_jsx_runtime301.jsx)(AppLayout, {}) } ); } // packages/edit-site/build-module/deprecated.mjs var import_editor45 = __toESM(require_editor(), 1); var import_url28 = __toESM(require_url(), 1); var import_deprecated5 = __toESM(require_deprecated(), 1); var import_jsx_runtime302 = __toESM(require_jsx_runtime(), 1); var isSiteEditor = (0, import_url28.getPath)(window.location.href)?.includes( "site-editor.php" ); var deprecateSlot = (name2) => { (0, import_deprecated5.default)(`wp.editPost.${name2}`, { since: "6.6", alternative: `wp.editor.${name2}` }); }; function PluginMoreMenuItem(props) { if (!isSiteEditor) { return null; } deprecateSlot("PluginMoreMenuItem"); return /* @__PURE__ */ (0, import_jsx_runtime302.jsx)(import_editor45.PluginMoreMenuItem, { ...props }); } function PluginSidebar(props) { if (!isSiteEditor) { return null; } deprecateSlot("PluginSidebar"); return /* @__PURE__ */ (0, import_jsx_runtime302.jsx)(import_editor45.PluginSidebar, { ...props }); } function PluginSidebarMoreMenuItem(props) { if (!isSiteEditor) { return null; } deprecateSlot("PluginSidebarMoreMenuItem"); return /* @__PURE__ */ (0, import_jsx_runtime302.jsx)(import_editor45.PluginSidebarMoreMenuItem, { ...props }); } // packages/edit-site/build-module/index.mjs var import_jsx_runtime303 = __toESM(require_jsx_runtime(), 1); var { registerCoreBlockBindingsSources } = unlock(import_editor46.privateApis); function initializeEditor(id, settings2) { const target = document.getElementById(id); const root = (0, import_element162.createRoot)(target); (0, import_data84.dispatch)(import_blocks15.store).reapplyBlockTypeFilters(); const coreBlocks = (0, import_block_library3.__experimentalGetCoreBlocks)().filter( ({ name: name2 }) => name2 !== "core/freeform" ); (0, import_block_library3.registerCoreBlocks)(coreBlocks); registerCoreBlockBindingsSources(); (0, import_data84.dispatch)(import_blocks15.store).setFreeformFallbackBlockName("core/html"); (0, import_widgets.registerLegacyWidgetBlock)({ inserter: false }); (0, import_widgets.registerWidgetGroupBlock)({ inserter: false }); if (false) { (0, import_block_library3.__experimentalRegisterExperimentalCoreBlocks)({ enableFSEBlocks: true }); } (0, import_data84.dispatch)(import_preferences13.store).setDefaults("core/edit-site", { welcomeGuide: true, welcomeGuideStyles: true, welcomeGuidePage: true, welcomeGuideTemplate: true }); (0, import_data84.dispatch)(import_preferences13.store).setDefaults("core", { allowRightClickOverrides: true, distractionFree: false, editorMode: "visual", editorTool: "edit", fixedToolbar: false, focusMode: false, inactivePanels: [], keepCaretInsideBlock: false, openPanels: ["post-status"], showBlockBreadcrumbs: true, showListViewByDefault: false, enableChoosePatternModal: true, showCollaborationCursor: false, showCollaborationNotifications: true }); if (window.__clientSideMediaProcessing) { (0, import_data84.dispatch)(import_preferences13.store).setDefaults("core/media", { requireApproval: true, optimizeOnUpload: true }); } (0, import_data84.dispatch)(store).updateSettings(settings2); window.addEventListener("dragover", (e2) => e2.preventDefault(), false); window.addEventListener("drop", (e2) => e2.preventDefault(), false); root.render( /* @__PURE__ */ (0, import_jsx_runtime303.jsx)(import_element162.StrictMode, { children: /* @__PURE__ */ (0, import_jsx_runtime303.jsx)(App, {}) }) ); return root; } function reinitializeEditor() { (0, import_deprecated6.default)("wp.editSite.reinitializeEditor", { since: "6.2", version: "6.3" }); } return __toCommonJS(index_exports); })(); /*! Bundled license information: use-sync-external-store/cjs/use-sync-external-store-shim.development.js: (** * @license React * use-sync-external-store-shim.development.js * * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. *) is-plain-object/dist/is-plain-object.mjs: (*! * is-plain-object * * Copyright (c) 2014-2017, Jon Schlinkert. * Released under the MIT License. *) */ dist/preferences.min.js000064400000017333152375074240011150 0ustar00/*! This file is auto-generated */ "use strict";var wp;(wp||={}).preferences=(()=>{var Aa=Object.create;var T=Object.defineProperty;var Ia=Object.getOwnPropertyDescriptor;var Da=Object.getOwnPropertyNames;var ja=Object.getPrototypeOf,Fa=Object.prototype.hasOwnProperty;var d=(a,t)=>()=>(t||a((t={exports:{}}).exports,t),t.exports),V=(a,t)=>{for(var e in t)T(a,e,{get:t[e],enumerable:!0})},K=(a,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let l of Da(t))!Fa.call(a,l)&&l!==e&&T(a,l,{get:()=>t[l],enumerable:!(r=Ia(t,l))||r.enumerable});return a};var o=(a,t,e)=>(e=a!=null?Aa(ja(a)):{},K(t||!a||!a.__esModule?T(e,"default",{value:a,enumerable:!0}):e,a)),Ua=a=>K(T({},"__esModule",{value:!0}),a);var b=d((at,X)=>{X.exports=window.wp.data});var x=d((tt,Q)=>{Q.exports=window.wp.components});var E=d((et,Z)=>{Z.exports=window.wp.i18n});var O=d((rt,aa)=>{aa.exports=window.wp.element});var C=d((ft,ta)=>{ta.exports=window.wp.primitives});var u=d((st,ea)=>{ea.exports=window.ReactJSXRuntime});var oa=d((wt,ra)=>{ra.exports=window.wp.a11y});var ma=d((bt,la)=>{la.exports=window.wp.deprecated});var Ta=d((It,ya)=>{ya.exports=window.wp.compose});var La=d((Dt,Ea)=>{Ea.exports=window.wp.privateApis});var Qa={};V(Qa,{PreferenceToggleMenuItem:()=>na,privateApis:()=>Ma,store:()=>p});var N=o(b(),1),ia=o(x(),1),g=o(E(),1);var L=o(O(),1),z=(0,L.forwardRef)(({icon:a,size:t=24,...e},r)=>(0,L.cloneElement)(a,{width:t,height:t,...e,ref:r}));var R=o(C(),1),H=o(u(),1),q=(0,H.jsx)(R.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,H.jsx)(R.Path,{d:"M16.5 7.5 10 13.9l-2.5-2.4-1 1 3.5 3.6 7.5-7.6z"})});var S=o(C(),1),$=o(u(),1),k=(0,$.jsx)(S.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,$.jsx)(S.Path,{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})});var P=o(C(),1),G=o(u(),1),B=(0,G.jsx)(P.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,G.jsx)(P.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})});var Y=o(oa(),1);var M=o(b(),1);var fa=o(b(),1);function Va(a={},t){if(t.type==="SET_PREFERENCE_DEFAULTS"){let{scope:e,defaults:r}=t;return{...a,[e]:{...a[e],...r}}}return a}function Oa(a){let t;return(e,r)=>{if(r.type==="SET_PERSISTENCE_LAYER"){let{persistenceLayer:n,persistedData:i}=r;return t=n,i}let l=a(e,r);return r.type==="SET_PREFERENCE_VALUE"&&t?.set(l),l}}var za=Oa((a={},t)=>{if(t.type==="SET_PREFERENCE_VALUE"){let{scope:e,name:r,value:l}=t;return{...a,[e]:{...a[e],[r]:l}}}return a}),sa=(0,fa.combineReducers)({defaults:Va,preferences:za});var W={};V(W,{set:()=>qa,setDefaults:()=>$a,setPersistenceLayer:()=>Ga,toggle:()=>Ha});function Ha(a,t){return function({select:e,dispatch:r}){let l=e.get(a,t);r.set(a,t,!l)}}function qa(a,t,e){return{type:"SET_PREFERENCE_VALUE",scope:a,name:t,value:e}}function $a(a,t){return{type:"SET_PREFERENCE_DEFAULTS",scope:a,defaults:t}}async function Ga(a){let t=await a.get();return{type:"SET_PERSISTENCE_LAYER",persistenceLayer:a,persistedData:t}}var J={};V(J,{get:()=>Ja});var da=o(ma(),1),Wa=a=>(t,e,r)=>["allowRightClickOverrides","distractionFree","editorMode","fixedToolbar","focusMode","hiddenBlockTypes","inactivePanels","keepCaretInsideBlock","mostUsedBlocks","openPanels","showBlockBreadcrumbs","showIconLabels","showListViewByDefault","isPublishSidebarEnabled","isComplementaryAreaVisible","pinnedItems"].includes(r)&&["core/edit-post","core/edit-site"].includes(e)?((0,da.default)(`wp.data.select( 'core/preferences' ).get( '${e}', '${r}' )`,{since:"6.5",alternative:`wp.data.select( 'core/preferences' ).get( 'core', '${r}' )`}),a(t,"core",r)):a(t,e,r),Ja=Wa((a,t,e)=>{let r=a.preferences[t]?.[e];return r!==void 0?r:a.defaults[t]?.[e]});var ua="core/preferences";var p=(0,M.createReduxStore)(ua,{reducer:sa,actions:W,selectors:J});(0,M.register)(p);var pa=o(u(),1);function na({scope:a,name:t,label:e,info:r,messageActivated:l,messageDeactivated:n,shortcut:i,handleToggling:m=!0,onToggle:c=()=>null,disabled:y=!1}){let w=(0,N.useSelect)(v=>!!v(p).get(a,t),[a,t]),{toggle:U}=(0,N.useDispatch)(p),Na=()=>{if(w){let v=n||(0,g.sprintf)((0,g.__)("Preference deactivated - %s"),e);(0,Y.speak)(v)}else{let v=l||(0,g.sprintf)((0,g.__)("Preference activated - %s"),e);(0,Y.speak)(v)}};return(0,pa.jsx)(ia.MenuItem,{icon:w?q:null,isSelected:w,onClick:()=>{c(),m&&U(a,t),Na()},role:"menuitemcheckbox",info:r,shortcut:i,disabled:y,children:e})}var ca=o(x(),1),A=o(u(),1);function Ya({help:a,label:t,isChecked:e,onChange:r,children:l}){return(0,A.jsxs)("div",{className:"preference-base-option",children:[(0,A.jsx)(ca.ToggleControl,{help:a,label:t,checked:e,onChange:r}),l]})}var I=Ya;var D=o(b(),1);var ha=o(u(),1);function Ka(a){let{scope:t,featureName:e,onToggle:r=()=>{},...l}=a,n=(0,D.useSelect)(c=>!!c(p).get(t,e),[t,e]),{toggle:i}=(0,D.useDispatch)(p);return(0,ha.jsx)(I,{...l,onChange:()=>{r(),i(t,e)},isChecked:n})}var ga=Ka;var wa=o(x(),1),va=o(E(),1),ba=o(u(),1);function xa({closeModal:a,children:t}){return(0,ba.jsx)(wa.Modal,{className:"preferences-modal",title:(0,va.__)("Preferences"),onRequestClose:a,children:t})}var h=o(u(),1),Xa=({description:a,title:t,children:e})=>(0,h.jsxs)("fieldset",{className:"preferences-modal__section",children:[(0,h.jsxs)("legend",{className:"preferences-modal__section-legend",children:[(0,h.jsx)("h2",{className:"preferences-modal__section-title",children:t}),a&&(0,h.jsx)("p",{className:"preferences-modal__section-description",children:a})]}),(0,h.jsx)("div",{className:"preferences-modal__section-content",children:e})]}),_a=Xa;var Pa=o(Ta(),1),f=o(x(),1),F=o(O(),1);var _=o(E(),1);var Ca=o(La(),1),{lock:Ra,unlock:Sa}=(0,Ca.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/preferences");var s=o(u(),1),{Tabs:j}=Sa(f.privateApis),ka="preferences-menu";function Ba({sections:a}){let t=(0,Pa.useViewportMatch)("medium"),[e,r]=(0,F.useState)(ka),{tabs:l,sectionsContentMap:n}=(0,F.useMemo)(()=>{let m={tabs:[],sectionsContentMap:{}};return a.length&&(m=a.reduce((c,{name:y,tabLabel:w,content:U})=>(c.tabs.push({name:y,title:w}),c.sectionsContentMap[y]=U,c),{tabs:[],sectionsContentMap:{}})),m},[a]),i;return t?i=(0,s.jsx)("div",{className:"preferences__tabs",children:(0,s.jsxs)(j,{defaultTabId:e!==ka?e:void 0,onSelect:r,orientation:"vertical",children:[(0,s.jsx)(j.TabList,{className:"preferences__tabs-tablist",children:l.map(m=>(0,s.jsx)(j.Tab,{tabId:m.name,className:"preferences__tabs-tab",children:m.title},m.name))}),l.map(m=>(0,s.jsx)(j.TabPanel,{tabId:m.name,className:"preferences__tabs-tabpanel",focusable:!1,children:n[m.name]||null},m.name))]})}):i=(0,s.jsxs)(f.Navigator,{initialPath:"/",className:"preferences__provider",children:[(0,s.jsx)(f.Navigator.Screen,{path:"/",children:(0,s.jsx)(f.Card,{isBorderless:!0,size:"small",children:(0,s.jsx)(f.CardBody,{children:(0,s.jsx)(f.__experimentalItemGroup,{children:l.map(m=>(0,s.jsx)(f.Navigator.Button,{path:`/${m.name}`,as:f.__experimentalItem,isAction:!0,children:(0,s.jsxs)(f.__experimentalHStack,{justify:"space-between",children:[(0,s.jsx)(f.FlexItem,{children:(0,s.jsx)(f.__experimentalTruncate,{children:m.title})}),(0,s.jsx)(f.FlexItem,{children:(0,s.jsx)(z,{icon:(0,_.isRTL)()?k:B})})]})},m.name))})})})}),a.length&&a.map(m=>(0,s.jsx)(f.Navigator.Screen,{path:`/${m.name}`,children:(0,s.jsxs)(f.Card,{isBorderless:!0,size:"large",children:[(0,s.jsxs)(f.CardHeader,{isBorderless:!1,justify:"left",size:"small",gap:"6",as:"div",children:[(0,s.jsx)(f.Navigator.BackButton,{icon:(0,_.isRTL)()?B:k,label:(0,_.__)("Back")}),(0,s.jsx)(f.__experimentalText,{size:"16",children:m.tabLabel})]}),(0,s.jsx)(f.CardBody,{children:m.content})]})},`${m.name}-menu`))]}),i}var Ma={};Ra(Ma,{PreferenceBaseOption:I,PreferenceToggleControl:ga,PreferencesModal:xa,PreferencesModalSection:_a,PreferencesModalTabs:Ba});return Ua(Qa);})(); dist/annotations.js000064400000036205152375074240010421 0ustar00var wp; (wp ||= {}).annotations = (() => { var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all) => { for (var name2 in all) __defProp(target, name2, { get: all[name2], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // package-external:@wordpress/rich-text var require_rich_text = __commonJS({ "package-external:@wordpress/rich-text"(exports, module) { module.exports = window.wp.richText; } }); // package-external:@wordpress/i18n var require_i18n = __commonJS({ "package-external:@wordpress/i18n"(exports, module) { module.exports = window.wp.i18n; } }); // package-external:@wordpress/hooks var require_hooks = __commonJS({ "package-external:@wordpress/hooks"(exports, module) { module.exports = window.wp.hooks; } }); // package-external:@wordpress/data var require_data = __commonJS({ "package-external:@wordpress/data"(exports, module) { module.exports = window.wp.data; } }); // packages/annotations/build-module/index.mjs var index_exports = {}; __export(index_exports, { store: () => store }); // packages/annotations/build-module/format/index.mjs var import_rich_text2 = __toESM(require_rich_text(), 1); // packages/annotations/build-module/format/annotation.mjs var import_i18n = __toESM(require_i18n(), 1); var import_rich_text = __toESM(require_rich_text(), 1); // packages/annotations/build-module/store/constants.mjs var STORE_NAME = "core/annotations"; // packages/annotations/build-module/format/annotation.mjs var FORMAT_NAME = "core/annotation"; var ANNOTATION_ATTRIBUTE_PREFIX = "annotation-text-"; function applyAnnotations(record, annotations2 = []) { annotations2.forEach((annotation2) => { let { start, end } = annotation2; if (start > record.text.length) { start = record.text.length; } if (end > record.text.length) { end = record.text.length; } const className = ANNOTATION_ATTRIBUTE_PREFIX + annotation2.source; const id = ANNOTATION_ATTRIBUTE_PREFIX + annotation2.id; record = (0, import_rich_text.applyFormat)( record, { type: FORMAT_NAME, attributes: { className, id } }, start, end ); }); return record; } function retrieveAnnotationPositions(formats) { const positions = {}; formats.forEach((characterFormats, i) => { characterFormats = characterFormats || []; characterFormats = characterFormats.filter( (format) => format.type === FORMAT_NAME ); characterFormats.forEach((format) => { let { id } = format.attributes; id = id.replace(ANNOTATION_ATTRIBUTE_PREFIX, ""); if (!positions.hasOwnProperty(id)) { positions[id] = { start: i }; } positions[id].end = i + 1; }); }); return positions; } function updateAnnotationsWithPositions(annotations2, positions, { removeAnnotation, updateAnnotationRange }) { annotations2.forEach((currentAnnotation) => { const position = positions[currentAnnotation.id]; if (!position) { removeAnnotation(currentAnnotation.id); return; } const { start, end } = currentAnnotation; if (start !== position.start || end !== position.end) { updateAnnotationRange( currentAnnotation.id, position.start, position.end ); } }); } var annotation = { name: FORMAT_NAME, title: (0, import_i18n.__)("Annotation"), tagName: "mark", className: "annotation-text", attributes: { className: "class", id: "id" }, edit() { return null; }, __experimentalGetPropsForEditableTreePreparation(select, { richTextIdentifier, blockClientId }) { return { annotations: select( STORE_NAME ).__experimentalGetAnnotationsForRichText( blockClientId, richTextIdentifier ) }; }, __experimentalCreatePrepareEditableTree({ annotations: annotations2 }) { return (formats, text) => { if (annotations2.length === 0) { return formats; } let record = { formats, text }; record = applyAnnotations(record, annotations2); return record.formats; }; }, __experimentalGetPropsForEditableTreeChangeHandler(dispatch) { return { removeAnnotation: dispatch(STORE_NAME).__experimentalRemoveAnnotation, updateAnnotationRange: dispatch(STORE_NAME).__experimentalUpdateAnnotationRange }; }, __experimentalCreateOnChangeEditableValue(props) { return (formats) => { const positions = retrieveAnnotationPositions(formats); const { removeAnnotation, updateAnnotationRange, annotations: annotations2 } = props; updateAnnotationsWithPositions(annotations2, positions, { removeAnnotation, updateAnnotationRange }); }; } }; // packages/annotations/build-module/format/index.mjs var { name, ...settings } = annotation; (0, import_rich_text2.registerFormatType)(name, settings); // packages/annotations/build-module/block/index.mjs var import_hooks = __toESM(require_hooks(), 1); var import_data = __toESM(require_data(), 1); var addAnnotationClassName = (OriginalComponent) => { return (0, import_data.withSelect)((select, { clientId, className }) => { const annotations2 = select(STORE_NAME).__experimentalGetAnnotationsForBlock( clientId ); return { className: annotations2.map((annotation2) => { return "is-annotated-by-" + annotation2.source; }).concat(className).filter(Boolean).join(" ") }; })(OriginalComponent); }; (0, import_hooks.addFilter)( "editor.BlockListBlock", "core/annotations", addAnnotationClassName ); // packages/annotations/build-module/store/index.mjs var import_data3 = __toESM(require_data(), 1); // packages/annotations/build-module/store/reducer.mjs function filterWithReference(collection, predicate) { const filteredCollection = collection.filter(predicate); return collection.length === filteredCollection.length ? collection : filteredCollection; } var mapValues = (obj, callback) => Object.entries(obj).reduce( (acc, [key, value]) => ({ ...acc, [key]: callback(value) }), {} ); function isValidAnnotationRange(annotation2) { return typeof annotation2.start === "number" && typeof annotation2.end === "number" && annotation2.start <= annotation2.end; } function annotations(state = {}, action) { switch (action.type) { case "ANNOTATION_ADD": const blockClientId = action.blockClientId; const newAnnotation = { id: action.id, blockClientId, richTextIdentifier: action.richTextIdentifier, source: action.source, selector: action.selector, range: action.range }; if (newAnnotation.selector === "range" && !isValidAnnotationRange(newAnnotation.range)) { return state; } const previousAnnotationsForBlock = state?.[blockClientId] ?? []; return { ...state, [blockClientId]: [ ...previousAnnotationsForBlock, newAnnotation ] }; case "ANNOTATION_REMOVE": return mapValues(state, (annotationsForBlock) => { return filterWithReference( annotationsForBlock, (annotation2) => { return annotation2.id !== action.annotationId; } ); }); case "ANNOTATION_UPDATE_RANGE": return mapValues(state, (annotationsForBlock) => { let hasChangedRange = false; const newAnnotations = annotationsForBlock.map( (annotation2) => { if (annotation2.id === action.annotationId) { hasChangedRange = true; return { ...annotation2, range: { start: action.start, end: action.end } }; } return annotation2; } ); return hasChangedRange ? newAnnotations : annotationsForBlock; }); case "ANNOTATION_REMOVE_SOURCE": return mapValues(state, (annotationsForBlock) => { return filterWithReference( annotationsForBlock, (annotation2) => { return annotation2.source !== action.source; } ); }); } return state; } var reducer_default = annotations; // packages/annotations/build-module/store/selectors.mjs var selectors_exports = {}; __export(selectors_exports, { __experimentalGetAllAnnotationsForBlock: () => __experimentalGetAllAnnotationsForBlock, __experimentalGetAnnotations: () => __experimentalGetAnnotations, __experimentalGetAnnotationsForBlock: () => __experimentalGetAnnotationsForBlock, __experimentalGetAnnotationsForRichText: () => __experimentalGetAnnotationsForRichText }); var import_data2 = __toESM(require_data(), 1); var EMPTY_ARRAY = []; var __experimentalGetAnnotationsForBlock = (0, import_data2.createSelector)( (state, blockClientId) => { return (state?.[blockClientId] ?? []).filter((annotation2) => { return annotation2.selector === "block"; }); }, (state, blockClientId) => [state?.[blockClientId] ?? EMPTY_ARRAY] ); function __experimentalGetAllAnnotationsForBlock(state, blockClientId) { return state?.[blockClientId] ?? EMPTY_ARRAY; } var __experimentalGetAnnotationsForRichText = (0, import_data2.createSelector)( (state, blockClientId, richTextIdentifier) => { return (state?.[blockClientId] ?? []).filter((annotation2) => { return annotation2.selector === "range" && richTextIdentifier === annotation2.richTextIdentifier; }).map((annotation2) => { const { range, ...other } = annotation2; return { ...range, ...other }; }); }, (state, blockClientId) => [state?.[blockClientId] ?? EMPTY_ARRAY] ); function __experimentalGetAnnotations(state) { return Object.values(state).flat(); } // packages/annotations/build-module/store/actions.mjs var actions_exports = {}; __export(actions_exports, { __experimentalAddAnnotation: () => __experimentalAddAnnotation, __experimentalRemoveAnnotation: () => __experimentalRemoveAnnotation, __experimentalRemoveAnnotationsBySource: () => __experimentalRemoveAnnotationsBySource, __experimentalUpdateAnnotationRange: () => __experimentalUpdateAnnotationRange }); // node_modules/uuid/dist/esm-browser/rng.js var getRandomValues; var rnds8 = new Uint8Array(16); function rng() { if (!getRandomValues) { getRandomValues = typeof crypto !== "undefined" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto); if (!getRandomValues) { throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported"); } } return getRandomValues(rnds8); } // node_modules/uuid/dist/esm-browser/stringify.js var byteToHex = []; for (let i = 0; i < 256; ++i) { byteToHex.push((i + 256).toString(16).slice(1)); } function unsafeStringify(arr, offset = 0) { return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]; } // node_modules/uuid/dist/esm-browser/native.js var randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto); var native_default = { randomUUID }; // node_modules/uuid/dist/esm-browser/v4.js function v4(options, buf, offset) { if (native_default.randomUUID && !buf && !options) { return native_default.randomUUID(); } options = options || {}; const rnds = options.random || (options.rng || rng)(); rnds[6] = rnds[6] & 15 | 64; rnds[8] = rnds[8] & 63 | 128; if (buf) { offset = offset || 0; for (let i = 0; i < 16; ++i) { buf[offset + i] = rnds[i]; } return buf; } return unsafeStringify(rnds); } var v4_default = v4; // packages/annotations/build-module/store/actions.mjs function __experimentalAddAnnotation({ blockClientId, richTextIdentifier = null, range = null, selector = "range", source = "default", id = v4_default() }) { const action = { type: "ANNOTATION_ADD", id, blockClientId, richTextIdentifier, source, selector }; if (selector === "range") { action.range = range; } return action; } function __experimentalRemoveAnnotation(annotationId) { return { type: "ANNOTATION_REMOVE", annotationId }; } function __experimentalUpdateAnnotationRange(annotationId, start, end) { return { type: "ANNOTATION_UPDATE_RANGE", annotationId, start, end }; } function __experimentalRemoveAnnotationsBySource(source) { return { type: "ANNOTATION_REMOVE_SOURCE", source }; } // packages/annotations/build-module/store/index.mjs var store = (0, import_data3.createReduxStore)(STORE_NAME, { reducer: reducer_default, selectors: selectors_exports, actions: actions_exports }); (0, import_data3.register)(store); return __toCommonJS(index_exports); })(); dist/compose.min.js000064400000070270152375074240010313 0ustar00/*! This file is auto-generated */ "use strict";var wp;(wp||={}).compose=(()=>{var xr=Object.create;var le=Object.defineProperty;var Cr=Object.getOwnPropertyDescriptor;var Sr=Object.getOwnPropertyNames;var Rr=Object.getPrototypeOf,Or=Object.prototype.hasOwnProperty;var B=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Tr=(e,t)=>{for(var r in t)le(e,r,{get:t[r],enumerable:!0})},et=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Sr(t))!Or.call(e,o)&&o!==r&&le(e,o,{get:()=>t[o],enumerable:!(n=Cr(t,o))||n.enumerable});return e};var d=(e,t,r)=>(r=e!=null?xr(Rr(e)):{},et(t||!e||!e.__esModule?le(r,"default",{value:e,enumerable:!0}):r,e)),Lr=e=>et(le({},"__esModule",{value:!0}),e);var Z=B((Mn,st)=>{st.exports=window.ReactJSXRuntime});var lt=B((An,ct)=>{ct.exports=window.wp.isShallowEqual});var b=B((kn,dt)=>{dt.exports=window.wp.element});var me=B((Un,ht)=>{ht.exports=window.wp.deprecated});var ye=B((ro,Mt)=>{Mt.exports=window.wp.dom});var _e=B((co,zt)=>{zt.exports=window.wp.keycodes});var Nt=B((Do,De)=>{(function(e,t,r){if(!e)return;for(var n={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"ins",46:"del",91:"meta",93:"meta",224:"meta"},o={106:"*",107:"+",109:"-",110:".",111:"/",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},i={"~":"`","!":"1","@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"},c={option:"alt",command:"meta",return:"enter",escape:"esc",plus:"+",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"},s,f=1;f<20;++f)n[111+f]="f"+f;for(f=0;f<=9;++f)n[f+96]=f.toString();function p(u,a,m){if(u.addEventListener){u.addEventListener(a,m,!1);return}u.attachEvent("on"+a,m)}function y(u){if(u.type=="keypress"){var a=String.fromCharCode(u.which);return u.shiftKey||(a=a.toLowerCase()),a}return n[u.which]?n[u.which]:o[u.which]?o[u.which]:String.fromCharCode(u.which).toLowerCase()}function R(u,a){return u.sort().join(",")===a.sort().join(",")}function O(u){var a=[];return u.shiftKey&&a.push("shift"),u.altKey&&a.push("alt"),u.ctrlKey&&a.push("ctrl"),u.metaKey&&a.push("meta"),a}function A(u){if(u.preventDefault){u.preventDefault();return}u.returnValue=!1}function k(u){if(u.stopPropagation){u.stopPropagation();return}u.cancelBubble=!0}function E(u){return u=="shift"||u=="ctrl"||u=="alt"||u=="meta"}function z(){if(!s){s={};for(var u in n)u>95&&u<112||n.hasOwnProperty(u)&&(s[n[u]]=u)}return s}function T(u,a,m){return m||(m=z()[u]?"keydown":"keypress"),m=="keypress"&&a.length&&(m="keydown"),m}function K(u){return u==="+"?["+"]:(u=u.replace(/\+{2}/g,"+plus"),u.split("+"))}function F(u,a){var m,l,L,v=[];for(m=K(u),L=0;L1){gr(h,$,g,x);return}_=F(h,x),a._callbacks[_.key]=a._callbacks[_.key]||[],ue(_.key,_.modifiers,{type:_.action},w,h,C),a._callbacks[_.key][w?"unshift":"push"]({callback:g,modifiers:_.modifiers,action:_.action,seq:w,level:C,combo:h})}a._bindMultiple=function(h,g,x){for(var w=0;w-1||N(a,m.target))return!1;if("composedPath"in u&&typeof u.composedPath=="function"){var l=u.composedPath()[0];l!==u.target&&(a=l)}return a.tagName=="INPUT"||a.tagName=="SELECT"||a.tagName=="TEXTAREA"||a.isContentEditable},S.prototype.handleKey=function(){var u=this;return u._handleKey.apply(u,arguments)},S.addKeycodes=function(u){for(var a in u)u.hasOwnProperty(a)&&(n[a]=u[a]);s=null},S.init=function(){var u=S(t);for(var a in u)a.charAt(0)!=="_"&&(S[a]=(function(m){return function(){return u[m].apply(u,arguments)}})(a))},S.init(),e.Mousetrap=S,typeof De<"u"&&De.exports&&(De.exports=S),typeof define=="function"&&define.amd&&define(function(){return S})})(typeof window<"u"?window:null,typeof window<"u"?document:null)});var Zt=B((zo,Qt)=>{Qt.exports=window.wp.undoManager});var ir=B((Qo,or)=>{or.exports=window.wp.priorityQueue});var cr=B((Yo,fr)=>{fr.exports=window.React});var pn={};Tr(pn,{__experimentalUseDialog:()=>Ut,__experimentalUseDragging:()=>Kt,__experimentalUseDropZone:()=>hr,__experimentalUseFixedWindowList:()=>yr,__experimentalUseFocusOutside:()=>Se,compose:()=>ut,createHigherOrderComponent:()=>P,debounce:()=>G,ifCondition:()=>ft,observableMap:()=>Ar,pipe:()=>it,pure:()=>mt,throttle:()=>Ve,useAsyncList:()=>sr,useConstrainedTabbing:()=>be,useCopyOnClick:()=>jt,useCopyToClipboard:()=>At,useDebounce:()=>ze,useDebouncedInput:()=>dr,useDisabled:()=>Vt,useEvent:()=>j,useFocusOnMount:()=>xe,useFocusReturn:()=>Ce,useFocusableIframe:()=>vr,useInstanceId:()=>ve,useIsomorphicLayoutEffect:()=>Le,useKeyboardShortcut:()=>$t,useMediaQuery:()=>te,useMergeRefs:()=>Oe,useObservableValue:()=>wr,usePrevious:()=>Pe,useReducedMotion:()=>Gt,useRefEffect:()=>I,useResizeObserver:()=>nr,useStateWithHistory:()=>Xt,useThrottle:()=>mr,useViewportMatch:()=>er,useWarnOnChange:()=>ar,withGlobalEvents:()=>bt,withInstanceId:()=>xt,withSafeTimeout:()=>Rt,withState:()=>Dt});var de=function(){return de=Object.assign||function(t){for(var r,n=1,o=arguments.length;n0&&r>="0"&&r<="9"?"_"+r+n:""+r.toUpperCase()+n}function ot(e,t){return t===void 0&&(t={}),nt(e,de({delimiter:"",transform:Ir},t))}function P(e,t){return r=>{let n=e(r);return n.displayName=Pr(t,r),n}}var Pr=(e,t)=>{let r=t.displayName||t.name||"Component";return`${ot(e??"")}(${r})`};var G=(e,t,r)=>{let n,o,i=0,c,s,f,p=0,y=!1,R=!1,O=!0;r&&(y=!!r.leading,R="maxWait"in r,r.maxWait!==void 0&&(i=Math.max(r.maxWait,t)),O="trailing"in r?!!r.trailing:O);function A(v){let M=n,W=o;return n=void 0,o=void 0,p=v,c=e.apply(W,M),c}function k(v,M){s=setTimeout(v,M)}function E(){s!==void 0&&clearTimeout(s)}function z(v){return p=v,k(N,t),y?A(v):c}function T(v){return v-(f||0)}function K(v){let M=T(v),W=v-p,ue=t-M;return R?Math.min(ue,i-W):ue}function F(v){let M=T(v),W=v-p;return f===void 0||M>=t||M<0||R&&W>=i}function N(){let v=Date.now();if(F(v))return u(v);k(N,K(v))}function S(){s=void 0}function u(v){return S(),O&&n?A(v):(n=o=void 0,c)}function a(){E(),p=0,S(),n=f=o=void 0}function m(){return l()?u(Date.now()):c}function l(){return s!==void 0}function L(...v){let M=Date.now(),W=F(M);if(n=v,o=this,f=M,W){if(!l())return z(f);if(R)return k(N,t),A(f)}return l()||k(N,t),c}return L.cancel=a,L.flush=m,L.pending=l,L};var Ve=(e,t,r)=>{let n=!0,o=!0;return r&&(n="leading"in r?!!r.leading:n,o="trailing"in r?!!r.trailing:o),G(e,t,{leading:n,trailing:o,maxWait:t})};function Ar(){let e=new Map,t=new Map;function r(n){let o=t.get(n);if(o)for(let i of o)i()}return{get(n){return e.get(n)},set(n,o){e.set(n,o),r(n)},delete(n){e.delete(n),r(n)},subscribe(n,o){let i=t.get(n);return i||(i=new Set,t.set(n,i)),i.add(o),()=>{i.delete(o),i.size===0&&t.delete(n)}}}}var Ke=(e=!1)=>(...t)=>(...r)=>{let n=t.flat();return e&&n.reverse(),n.reduce((o,i)=>[i(...o)],r)[0]},kr=Ke(),it=kr;var jr=Ke(!0),ut=jr;var at=d(Z(),1);function zr(e){return P(t=>r=>e(r)?(0,at.jsx)(t,{...r}):null,"ifCondition")}var ft=zr;var pe=d(lt(),1),Ne=d(b(),1);var pt=d(Z(),1),Fr=P(function(e){return e.prototype instanceof Ne.Component?class extends e{shouldComponentUpdate(t,r){return!(0,pe.isShallowEqual)(t,this.props)||!(0,pe.isShallowEqual)(r,this.state)}}:class extends Ne.Component{shouldComponentUpdate(t){return!(0,pe.isShallowEqual)(t,this.props)}render(){return(0,pt.jsx)(e,{...this.props})}}},"pure"),mt=Fr;var he=d(b(),1),wt=d(me(),1);var Wr=class{constructor(){this.listeners={},this.handleEvent=this.handleEvent.bind(this)}add(e,t){this.listeners[e]||(window.addEventListener(e,this.handleEvent),this.listeners[e]=[]),this.listeners[e].push(t)}remove(e,t){this.listeners[e]&&(this.listeners[e]=this.listeners[e].filter(r=>r!==t),this.listeners[e].length||(window.removeEventListener(e,this.handleEvent),delete this.listeners[e]))}handleEvent(e){this.listeners[e.type]?.forEach(t=>{t.handleEvent(e)})}},vt=Wr;var Be=d(Z(),1),yt=new vt;function bt(e){return(0,wt.default)("wp.compose.withGlobalEvents",{since:"5.7",alternative:"useEffect"}),P(t=>{class r extends he.Component{constructor(o){super(o),this.handleEvent=this.handleEvent.bind(this),this.handleRef=this.handleRef.bind(this)}componentDidMount(){Object.keys(e).forEach(o=>{yt.add(o,this)})}componentWillUnmount(){Object.keys(e).forEach(o=>{yt.remove(o,this)})}handleEvent(o){let i=e[o.type];typeof this.wrappedRef[i]=="function"&&this.wrappedRef[i](o)}handleRef(o){this.wrappedRef=o,this.props.forwardedRef&&this.props.forwardedRef(o)}render(){return(0,Be.jsx)(t,{...this.props.ownProps,ref:this.handleRef})}}return(0,he.forwardRef)((n,o)=>(0,Be.jsx)(r,{ownProps:n,forwardedRef:o}))},"withGlobalEvents")}var Et=d(b(),1),gt=new WeakMap;function Ur(e){let t=gt.get(e)||0;return gt.set(e,t+1),t}function Vr(e,t,r){return(0,Et.useMemo)(()=>{if(r)return r;let n=Ur(e);return t?`${t}-${n}`:n},[e,r,t])}var ve=Vr;var _t=d(Z(),1),Kr=P(e=>t=>{let r=ve(e);return(0,_t.jsx)(e,{...t,instanceId:r})},"instanceId"),xt=Kr;var Ct=d(b(),1);var St=d(Z(),1),Nr=P(e=>class extends Ct.Component{timeouts;constructor(r){super(r),this.timeouts=[],this.setTimeout=this.setTimeout.bind(this),this.clearTimeout=this.clearTimeout.bind(this)}componentWillUnmount(){this.timeouts.forEach(clearTimeout)}setTimeout(r,n){let o=setTimeout(()=>{r(),this.clearTimeout(o)},n);return this.timeouts.push(o),o}clearTimeout(r){clearTimeout(r),this.timeouts=this.timeouts.filter(n=>n!==r)}render(){return(0,St.jsx)(e,{...this.props,setTimeout:this.setTimeout,clearTimeout:this.clearTimeout})}},"withSafeTimeout"),Rt=Nr;var Ot=d(b(),1),Tt=d(me(),1);var Lt=d(Z(),1);function Dt(e={}){return(0,Tt.default)("wp.compose.withState",{since:"5.8",alternative:"wp.element.useState"}),P(t=>class extends Ot.Component{constructor(n){super(n),this.setState=this.setState.bind(this),this.state=e}render(){return(0,Lt.jsx)(t,{...this.props,...this.state,setState:this.setState})}},"withState")}var It=d(ye(),1);var we=d(b(),1);function I(e,t){let r=(0,we.useRef)(void 0);return(0,we.useCallback)(n=>{n?r.current=e(n):r.current&&r.current()},t)}function Br(){return I(e=>{function t(r){let{key:n,shiftKey:o,target:i}=r;if(n!=="Tab")return;let c=o?"findPrevious":"findNext",s=It.focus.tabbable[c](i)||null;if(i.contains(s)){r.preventDefault(),s?.focus();return}if(e.contains(s))return;let f=o?"append":"prepend",{ownerDocument:p}=e,y=p.createElement("div");y.tabIndex=-1,e[f](y),y.addEventListener("blur",()=>e.removeChild(y)),y.focus()}return e.addEventListener("keydown",t),()=>{e.removeEventListener("keydown",t)}},[])}var be=Br;var Ee=d(b(),1),kt=d(me(),1);var ge=d(b(),1);async function qe(e,t){if(!t)return!1;let{ownerDocument:r}=t;if(!r)return!1;let{defaultView:n}=r;try{if(n?.navigator?.clipboard?.writeText)return await n.navigator.clipboard.writeText(e),!0;let o=r.createElement("textarea");o.value=e,o.setAttribute("readonly",""),o.style.position="fixed",o.style.left="-9999px",o.style.top="-9999px",r.body.appendChild(o),o.select();let i=r.execCommand("copy");return o.remove(),i}catch{return!1}}function $e(e){"focus"in e&&typeof e.focus=="function"&&e.focus()}function Pt(e){let t=(0,ge.useRef)(e);return(0,ge.useLayoutEffect)(()=>{t.current=e},[e]),t}function At(e,t){let r=Pt(e),n=Pt(t);return I(o=>{let i=!0,c=async()=>{let s=typeof r.current=="function"?r.current():r.current||"";await qe(s,o)&&(i&&$e(o),n.current&&n.current())};return o.addEventListener("click",c),()=>{i=!1,o.removeEventListener("click",c)}},[])}function jt(e,t,r=4e3){(0,kt.default)("wp.compose.useCopyOnClick",{since:"5.8",alternative:"wp.compose.useCopyToClipboard"});let[n,o]=(0,Ee.useState)(!1);return(0,Ee.useEffect)(()=>{let i=!0,c;if(!e.current)return;let s;if(typeof e.current=="string"?s=typeof document<"u"?Array.from(document.querySelectorAll(e.current)):[]:"length"in e.current&&typeof e.current.length=="number"?s=Array.from(e.current):s=[e.current],s.length===0)return;let f=async p=>{let y=p.currentTarget;if(!y)return;let R=await qe(typeof t=="function"?t():t||"",y);i&&R&&($e(y),r&&(o(!0),clearTimeout(c),c=setTimeout(()=>o(!1),r)))};for(let p of s)p.addEventListener("click",f);return()=>{i=!1;for(let p of s)p.removeEventListener("click",f);clearTimeout(c)}},[e,t,r]),n}var J=d(b(),1),Wt=d(_e(),1);var se=d(b(),1),Ft=d(ye(),1);function xe(e="firstElement"){let t=(0,se.useRef)(e),r=o=>{o.focus({preventScroll:!0})},n=(0,se.useRef)(void 0);return(0,se.useEffect)(()=>{t.current=e},[e]),I(o=>{if(!(!o||t.current===!1)&&!o.contains(o.ownerDocument?.activeElement??null)){if(t.current!=="firstElement"&&t.current!=="firstInputElement"){r(o);return}return n.current=setTimeout(()=>{if(t.current==="firstInputElement"){let c=null;if(typeof window<"u"&&o instanceof window.Element&&(c=o.querySelector('input:not([type="hidden"]):not([disabled]), select:not([disabled]), textarea:not([disabled])')),c){r(c);return}}let i=Ft.focus.tabbable.find(o)[0];i&&r(i)},0),()=>{n.current&&clearTimeout(n.current)}}},[])}var H=d(b(),1),Ge=null;function qr(e){let t=(0,H.useRef)(null),r=(0,H.useRef)(null),n=(0,H.useRef)(e);return(0,H.useEffect)(()=>{n.current=e},[e]),(0,H.useCallback)(o=>{if(o){if(t.current=o,r.current)return;let i=o.ownerDocument.activeElement instanceof window.HTMLIFrameElement?o.ownerDocument.activeElement.contentDocument:o.ownerDocument;r.current=i?.activeElement??null}else if(r.current){let i=t.current?.contains(t.current?.ownerDocument.activeElement);if(t.current?.isConnected&&!i){Ge??=r.current;return}n.current?n.current():(r.current.isConnected?r.current:Ge)?.focus(),Ge=null}},[])}var Ce=qr;var U=d(b(),1),$r=["button","submit"];function Gr(e){if(!(e instanceof window.HTMLElement))return!1;switch(e.nodeName){case"A":case"BUTTON":return!0;case"INPUT":return $r.includes(e.type)}return!1}function Se(e){let t=(0,U.useRef)(e);(0,U.useEffect)(()=>{t.current=e},[e]);let r=(0,U.useRef)(!1),n=(0,U.useRef)(void 0),o=(0,U.useCallback)(()=>{clearTimeout(n.current)},[]);(0,U.useEffect)(()=>{e||o()},[e,o]);let i=(0,U.useCallback)(s=>{let{type:f,target:p}=s;["mouseup","touchend"].includes(f)?r.current=!1:Gr(p)&&(r.current=!0)},[]),c=(0,U.useCallback)(s=>{if(s.persist(),r.current)return;let f=s.target.getAttribute("data-unstable-ignore-focus-outside-for-relatedtarget");f&&s.relatedTarget?.closest(f)||(n.current=setTimeout(()=>{if(!document.hasFocus()){s.preventDefault();return}typeof t.current=="function"&&t.current(s)},0))},[]);return{onFocus:o,onMouseDown:i,onMouseUp:i,onTouchStart:i,onTouchEnd:i,onBlur:c}}var V=d(b(),1);function Re(e,t){typeof e=="function"?e(t):e&&e.hasOwnProperty("current")&&(e.current=t)}function Oe(e){let t=(0,V.useRef)(null),r=(0,V.useRef)(!1),n=(0,V.useRef)(!1),o=(0,V.useRef)([]),i=(0,V.useRef)(e);return i.current=e,(0,V.useLayoutEffect)(()=>{n.current===!1&&r.current===!0&&e.forEach((c,s)=>{let f=o.current[s];c!==f&&(Re(f,null),Re(c,t.current))}),o.current=e},e),(0,V.useLayoutEffect)(()=>{n.current=!1}),(0,V.useCallback)(c=>{Re(t,c),n.current=!0,r.current=c!==null;let s=c?i.current:o.current;for(let f of s)Re(f,c)},[])}function Qr(e){let t=(0,J.useRef)(void 0),{constrainTabbing:r=e.focusOnMount!==!1}=e;(0,J.useEffect)(()=>{t.current=e},Object.values(e));let n=be(),o=xe(e.focusOnMount),i=Ce(),c=Se(f=>{t.current?.__unstableOnClose?t.current.__unstableOnClose("focus-outside",f):t.current?.onClose&&t.current.onClose()}),s=(0,J.useCallback)(f=>{f&&f.addEventListener("keydown",p=>{p.keyCode===Wt.ESCAPE&&!p.defaultPrevented&&t.current?.onClose&&(p.preventDefault(),t.current.onClose())})},[]);return[Oe([r?n:null,e.focusOnMount!==!1?i:null,e.focusOnMount!==!1?o:null,s]),{...c,tabIndex:-1}]}var Ut=Qr;function Vt({isDisabled:e=!1}={}){return I(t=>{if(e)return;let r=t?.ownerDocument?.defaultView;if(!r)return;let n=[],o=()=>{t.childNodes.forEach(s=>{s instanceof r.HTMLElement&&(s.getAttribute("inert")||(s.setAttribute("inert","true"),n.push(()=>{s.removeAttribute("inert")})))})},i=G(o,0,{leading:!0});o();let c=new window.MutationObserver(i);return c.observe(t,{childList:!0}),()=>{c&&c.disconnect(),i.cancel(),n.forEach(s=>s())}},[e])}var ee=d(b(),1);function j(e){let t=(0,ee.useRef)(()=>{throw new Error("Callbacks created with `useEvent` cannot be called during rendering.")});return(0,ee.useInsertionEffect)(()=>{t.current=e}),(0,ee.useCallback)((...r)=>t.current?.(...r),[])}var q=d(b(),1);var Te=d(b(),1),Zr=typeof window<"u"?Te.useLayoutEffect:Te.useEffect,Le=Zr;function Kt({onDragStart:e,onDragMove:t,onDragEnd:r}){let[n,o]=(0,q.useState)(!1),i=(0,q.useRef)({onDragStart:e,onDragMove:t,onDragEnd:r});Le(()=>{i.current.onDragStart=e,i.current.onDragMove=t,i.current.onDragEnd=r},[e,t,r]);let c=(0,q.useCallback)(p=>i.current.onDragMove&&i.current.onDragMove(p),[]),s=(0,q.useCallback)(p=>{i.current.onDragEnd&&i.current.onDragEnd(p),document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",s),o(!1)},[]),f=(0,q.useCallback)(p=>{i.current.onDragStart&&i.current.onDragStart(p),document.addEventListener("mousemove",c),document.addEventListener("mouseup",s),o(!0)},[]);return(0,q.useEffect)(()=>()=>{n&&(document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",s))},[n]),{startDrag:f,endDrag:s,isDragging:n}}var Bt=d(Nt(),1);(function(e){if(e){var t={},r=e.prototype.stopCallback;e.prototype.stopCallback=function(n,o,i,c){var s=this;return s.paused?!0:t[i]||t[c]?!1:r.call(s,n,o,i)},e.prototype.bindGlobal=function(n,o,i){var c=this;if(c.bind(n,o,i),n instanceof Array){for(var s=0;s{c.current=t},[t]),(0,ae.useEffect)(()=>{if(o)return;let s=new Bt.default(i&&i.current?i.current:document);return(Array.isArray(e)?e:[e]).forEach(p=>{let y=p.split("+"),R=new Set(y.filter(E=>E.length>1)),O=R.has("alt"),A=R.has("shift");if((0,qt.isAppleOS)()&&(R.size===1&&O||R.size===2&&O&&A))throw new Error(`Cannot bind ${p}. Alt and Shift+Alt modifiers are reserved for character input.`);s[r?"bindGlobal":"bind"](p,(...E)=>c.current(...E),n)}),()=>{s.reset()}},[e,r,n,i,o])}var $t=Hr;var Me=d(b(),1),Qe=new WeakMap;function Xr(e,t){if(!t)return null;let r=Qe.get(e)??new Map;Qe.has(e)||Qe.set(e,r);let n=r.get(t);return n||(typeof e?.matchMedia=="function"?(n=e.matchMedia(t),r.set(t,n),n):null)}function te(e,t=window){let r=(0,Me.useMemo)(()=>{let n=Xr(t,e);return{subscribe(o){return n?(n.addEventListener?.("change",o),()=>{n.removeEventListener?.("change",o)}):()=>{}},getValue(){return n?.matches??!1}}},[t,e]);return(0,Me.useSyncExternalStore)(r.subscribe,r.getValue,()=>!1)}var Ie=d(b(),1);function Pe(e){let t=(0,Ie.useRef)(void 0);return(0,Ie.useEffect)(()=>{t.current=e},[e]),t.current}var Yr=()=>te("(prefers-reduced-motion: reduce)"),Gt=Yr;var Ht=d(Zt(),1),re=d(b(),1);function Jr(e,t){switch(t.type){case"UNDO":{let r=e.manager.undo();return r?{...e,value:r[0].changes.prop.from}:e}case"REDO":{let r=e.manager.redo();return r?{...e,value:r[0].changes.prop.to}:e}case"RECORD":return e.manager.addRecord([{id:"object",changes:{prop:{from:e.value,to:t.value}}}],t.isStaged),{...e,value:t.value}}return e}function en(e){return{manager:(0,Ht.createUndoManager)(),value:e}}function Xt(e){let[t,r]=(0,re.useReducer)(Jr,e,en);return{value:t.value,setValue:(0,re.useCallback)((n,o)=>{r({type:"RECORD",value:n,isStaged:o})},[]),hasUndo:t.manager.hasUndo(),hasRedo:t.manager.hasRedo(),undo:(0,re.useCallback)(()=>{r({type:"UNDO"})},[]),redo:(0,re.useCallback)(()=>{r({type:"REDO"})},[])}}var Ae=d(b(),1);var Yt={xhuge:1920,huge:1440,wide:1280,xlarge:1080,large:960,medium:782,small:600,mobile:480},tn={">=":"min-width","<":"max-width"},rn={">=":(e,t)=>t>=e,"<":(e,t)=>t=",r=window)=>{let n=(0,Ae.useContext)(Ze),o=!n&&`(${tn[t]}: ${Yt[e]}px)`,i=te(o||void 0,r);return n?rn[t](Yt[e],n):i};Jt.__experimentalWidthProvider=Ze.Provider;var er=Jt;var He=d(b(),1);function ke(e,t={}){let r=j(e),n=(0,He.useRef)(null),o=(0,He.useRef)(void 0);return j(i=>{if(i===n.current)return;o.current??=new ResizeObserver(r);let{current:c}=o;n.current&&c.unobserve(n.current),n.current=i??null,i&&c.observe(i,t)})}var ne=d(b(),1);var Xe=d(Z(),1),nn=e=>{let t;if(!e.contentBoxSize)t=[e.contentRect.width,e.contentRect.height];else if(e.contentBoxSize[0]){let o=e.contentBoxSize[0];t=[o.inlineSize,o.blockSize]}else{let o=e.contentBoxSize;t=[o.inlineSize,o.blockSize]}let[r,n]=t.map(o=>Math.round(o));return{width:r,height:n}},on={position:"absolute",top:0,left:0,right:0,bottom:0,pointerEvents:"none",opacity:0,overflow:"hidden",zIndex:-1};function un({onResize:e}){let t=ke(r=>{let n=nn(r.at(-1));e(n)});return(0,Xe.jsx)("div",{ref:t,style:on,"aria-hidden":"true"})}function sn(e,t){return e.width===t.width&&e.height===t.height}var tr={width:null,height:null};function rr(){let[e,t]=(0,ne.useState)(tr),r=(0,ne.useRef)(tr),n=(0,ne.useCallback)(i=>{sn(r.current,i)||(r.current=i,t(i))},[]);return[(0,Xe.jsx)(un,{onResize:n}),e]}function nr(e,t={}){return e?ke(e,t):rr()}var oe=d(b(),1),ur=d(ir(),1);function an(e,t){let r=[];for(let n=0;n{let i=an(e,n);i.length{(0,oe.flushSync)(()=>{o(f=>[...f,...e.slice(s,s+r)])})});return()=>c.reset()},[e]),n}var sr=fn;function cn(e,t="Change detection"){let r=Pe(e);Object.entries(r??[]).forEach(([n,o])=>{o!==e[n]&&console.warn(`${t}: ${n} key changed:`,o,e[n])})}var ar=cn;var ie=d(cr());function ln(e,t){if(e.length!==t.length)return!1;for(var r=0;rG(e,t??0,r),[e,t,r?.leading,r?.trailing,r?.maxWait]);return(0,lr.useEffect)(()=>()=>n.cancel(),[n]),n}var fe=d(b(),1);function dr(e=""){let[t,r]=(0,fe.useState)(e),[n,o]=(0,fe.useState)(e),i=ze(o,250);return(0,fe.useEffect)(()=>{i(t)},[t,i]),[t,r,n]}var pr=d(b(),1);function mr(e,t,r){let n=je(()=>Ve(e,t??0,r),[e,t,r]);return(0,pr.useEffect)(()=>()=>n.cancel(),[n]),n}function hr({dropZoneElement:e,isDisabled:t,onDrop:r,onDragStart:n,onDragEnter:o,onDragLeave:i,onDragEnd:c,onDragOver:s}){let f=j(r),p=j(n),y=j(o),R=j(i),O=j(c),A=j(s);return I(k=>{if(t)return;let E=e??k,z=!1,{ownerDocument:T}=E;function K(l){let{defaultView:L}=T;if(!l||!L||!(l instanceof L.HTMLElement)||!E.contains(l))return!1;let v=l;do if(v.dataset.isDropZone)return v===E;while(v=v.parentElement);return!1}function F(l){z||(z=!0,T.addEventListener("dragend",m),T.addEventListener("mousemove",m),n&&p(l))}function N(l){l.preventDefault(),!E.contains(l.relatedTarget)&&o&&y(l)}function S(l){!l.defaultPrevented&&s&&A(l),l.preventDefault()}function u(l){K(l.relatedTarget)||i&&R(l)}function a(l){l.defaultPrevented||(l.preventDefault(),l.dataTransfer&&l.dataTransfer.files.length,r&&f(l),m(l))}function m(l){z&&(z=!1,T.removeEventListener("dragend",m),T.removeEventListener("mousemove",m),c&&O(l))}return E.setAttribute("data-is-drop-zone","true"),E.addEventListener("drop",a),E.addEventListener("dragenter",N),E.addEventListener("dragover",S),E.addEventListener("dragleave",u),T.addEventListener("dragenter",F),()=>{E.removeAttribute("data-is-drop-zone"),E.removeEventListener("drop",a),E.removeEventListener("dragenter",N),E.removeEventListener("dragover",S),E.removeEventListener("dragleave",u),T.removeEventListener("dragend",m),T.removeEventListener("mousemove",m),T.removeEventListener("dragenter",F)}},[t,e])}function vr(){return I(e=>{let{ownerDocument:t}=e;if(!t)return;let{defaultView:r}=t;if(!r)return;function n(){t&&t.activeElement===e&&e.focus()}return r.addEventListener("blur",n),()=>{r.removeEventListener("blur",n)}},[])}var ce=d(b(),1),Ye=d(ye(),1),X=d(_e(),1);var dn=30;function yr(e,t,r,n){let o=n?.initWindowSize??dn,i=n?.useWindowing??!0,[c,s]=(0,ce.useState)({visibleItems:o,start:0,end:o,itemInView:f=>f>=0&&f<=o});return(0,ce.useLayoutEffect)(()=>{if(!i)return;let f=(0,Ye.getScrollContainer)(e.current),p=R=>{if(!f)return;let O=Math.ceil(f.clientHeight/t),A=R?O:n?.windowOverscan??O,k=Math.floor(f.scrollTop/t),E=Math.max(0,k-A),z=Math.min(r-1,k+O+A);s(T=>{let K={visibleItems:O,start:E,end:z,itemInView:F=>E<=F&&F<=z};return T.start!==K.start||T.end!==K.end||T.visibleItems!==K.visibleItems?K:T})};p(!0);let y=G(()=>{p()},16);return f?.addEventListener("scroll",y),f?.ownerDocument?.defaultView?.addEventListener("resize",y),f?.ownerDocument?.defaultView?.addEventListener("resize",y),()=>{f?.removeEventListener("scroll",y),f?.ownerDocument?.defaultView?.removeEventListener("resize",y)}},[t,e,r,n?.expandedState,n?.windowOverscan,i]),(0,ce.useLayoutEffect)(()=>{if(!i)return;let f=(0,Ye.getScrollContainer)(e.current),p=y=>{switch(y.keyCode){case X.HOME:return f?.scrollTo({top:0});case X.END:return f?.scrollTo({top:r*t});case X.PAGEUP:return f?.scrollTo({top:f.scrollTop-c.visibleItems*t});case X.PAGEDOWN:return f?.scrollTo({top:f.scrollTop+c.visibleItems*t})}};return f?.ownerDocument?.defaultView?.addEventListener("keydown",p),()=>{f?.ownerDocument?.defaultView?.removeEventListener("keydown",p)}},[r,t,e,c.visibleItems,i,n?.expandedState]),[c,s]}var Fe=d(b(),1);function wr(e,t){let[r,n]=(0,Fe.useMemo)(()=>[o=>e.subscribe(t,o),()=>e.get(t)],[e,t]);return(0,Fe.useSyncExternalStore)(r,n,n)}return Lr(pn);})(); dist/token-list.min.js000064400000003172152375074240010734 0ustar00/*! This file is auto-generated */ "use strict";var wp;(wp||={}).tokenList=(()=>{var a=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var n=Object.prototype.hasOwnProperty;var h=(r,e)=>{for(var s in e)a(r,s,{get:e[s],enumerable:!0})},A=(r,e,s,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of l(e))!n.call(r,t)&&t!==s&&a(r,t,{get:()=>e[t],enumerable:!(i=u(e,t))||i.enumerable});return r};var v=r=>A(a({},"__esModule",{value:!0}),r);var _={};h(_,{default:()=>o});var o=class{_currentValue;_valueAsArray;constructor(r=""){this._currentValue="",this._valueAsArray=[],this.value=r}entries(...r){return this._valueAsArray.entries(...r)}forEach(...r){return this._valueAsArray.forEach(...r)}keys(...r){return this._valueAsArray.keys(...r)}values(...r){return this._valueAsArray.values(...r)}get value(){return this._currentValue}set value(r){r=String(r),this._valueAsArray=[...new Set(r.split(/\s+/g).filter(Boolean))],this._currentValue=this._valueAsArray.join(" ")}get length(){return this._valueAsArray.length}toString(){return this.value}*[Symbol.iterator](){return yield*this._valueAsArray}item(r){return this._valueAsArray[r]}contains(r){return this._valueAsArray.indexOf(r)!==-1}add(...r){this.value+=" "+r.join(" ")}remove(...r){this.value=this._valueAsArray.filter(e=>!r.includes(e)).join(" ")}toggle(r,e){return e===void 0&&(e=!this.contains(r)),e?this.add(r):this.remove(r),e}replace(r,e){return this.contains(r)?(this.remove(r),this.add(e),!0):!1}supports(r){return!0}};return v(_);})(); if (typeof wp.tokenList === 'object' && wp.tokenList.default) { wp.tokenList = wp.tokenList.default; } dist/redux-routine.min.js000064400000023231152375074240011453 0ustar00/*! This file is auto-generated */ "use strict";var wp;(wp||={}).reduxRoutine=(()=>{var fr=Object.create;var S=Object.defineProperty;var cr=Object.getOwnPropertyDescriptor;var sr=Object.getOwnPropertyNames;var lr=Object.getPrototypeOf,pr=Object.prototype.hasOwnProperty;var g=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),dr=(e,r)=>{for(var t in r)S(e,t,{get:r[t],enumerable:!0})},F=(e,r,t,u)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of sr(r))!pr.call(e,n)&&n!==t&&S(e,n,{get:()=>r[n],enumerable:!(u=cr(r,n))||u.enumerable});return e};var yr=(e,r,t)=>(t=e!=null?fr(lr(e)):{},F(r||!e||!e.__esModule?S(t,"default",{value:e,enumerable:!0}):t,e)),mr=e=>F(S({},"__esModule",{value:!0}),e);var C=g(w=>{"use strict";Object.defineProperty(w,"__esModule",{value:!0});var br={all:Symbol("all"),error:Symbol("error"),fork:Symbol("fork"),join:Symbol("join"),race:Symbol("race"),call:Symbol("call"),cps:Symbol("cps"),subscribe:Symbol("subscribe")};w.default=br});var E=g(c=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});c.createChannel=c.subscribe=c.cps=c.apply=c.call=c.invoke=c.delay=c.race=c.join=c.fork=c.error=c.all=void 0;var vr=C(),h=hr(vr);function hr(e){return e&&e.__esModule?e:{default:e}}var oe=c.all=function(r){return{type:h.default.all,value:r}},ie=c.error=function(r){return{type:h.default.error,error:r}},fe=c.fork=function(r){for(var t=arguments.length,u=Array(t>1?t-1:0),n=1;n1?t-1:0),n=1;n2?u-2:0),a=2;a1?t-1:0),n=1;n{"use strict";Object.defineProperty(D,"__esModule",{value:!0});var gr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol?"symbol":typeof e},_r=C(),j=jr(_r);function jr(e){return e&&e.__esModule?e:{default:e}}var m={obj:function(r){return(typeof r>"u"?"undefined":gr(r))==="object"&&!!r},all:function(r){return m.obj(r)&&r.type===j.default.all},error:function(r){return m.obj(r)&&r.type===j.default.error},array:Array.isArray,func:function(r){return typeof r=="function"},promise:function(r){return r&&m.func(r.then)},iterator:function(r){return r&&m.func(r.next)&&m.func(r.throw)},fork:function(r){return m.obj(r)&&r.type===j.default.fork},join:function(r){return m.obj(r)&&r.type===j.default.join},race:function(r){return m.obj(r)&&r.type===j.default.race},call:function(r){return m.obj(r)&&r.type===j.default.call},cps:function(r){return m.obj(r)&&r.type===j.default.cps},subscribe:function(r){return m.obj(r)&&r.type===j.default.subscribe},channel:function(r){return m.obj(r)&&m.func(r.subscribe)}};D.default=m});var I=g(b=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});b.iterator=b.array=b.object=b.error=b.any=void 0;var xr=q(),A=Or(xr);function Or(e){return e&&e.__esModule?e:{default:e}}var kr=b.any=function(r,t,u,n){return n(r),!0},Ar=b.error=function(r,t,u,n,a){return A.default.error(r)?(a(r.error),!0):!1},qr=b.object=function(r,t,u,n,a){if(!A.default.all(r)||!A.default.obj(r.value))return!1;var o={},f=Object.keys(r.value),l=0,y=!1,s=function(d,k){y||(o[d]=k,l++,l===f.length&&n(o))},p=function(d,k){y||(y=!0,a(k))};return f.map(function(i){u(r.value[i],function(d){return s(i,d)},function(d){return p(i,d)})}),!0},Rr=b.array=function(r,t,u,n,a){if(!A.default.all(r)||!A.default.array(r.value))return!1;var o=[],f=0,l=!1,y=function(i,d){l||(o[i]=d,f++,f===r.value.length&&n(o))},s=function(i,d){l||(l=!0,a(d))};return r.value.map(function(p,i){u(p,function(d){return y(i,d)},function(d){return s(i,d)})}),!0},Sr=b.iterator=function(r,t,u,n,a){return A.default.iterator(r)?(u(r,t,a),!0):!1};b.default=[Ar,Sr,Rr,qr,kr]});var L=g(N=>{"use strict";Object.defineProperty(N,"__esModule",{value:!0});var Mr=I(),Pr=K(Mr),wr=q(),Cr=K(wr);function K(e){return e&&e.__esModule?e:{default:e}}function J(e){if(Array.isArray(e)){for(var r=0,t=Array(e.length);r{"use strict";Object.defineProperty(T,"__esModule",{value:!0});var Dr=function(){var r=[];return{subscribe:function(u){return r.push(u),function(){r=r.filter(function(n){return n!==u})}},dispatch:function(u){r.slice().forEach(function(n){return n(u)})}}};T.default=Dr});var W=g(v=>{"use strict";Object.defineProperty(v,"__esModule",{value:!0});v.race=v.join=v.fork=v.promise=void 0;var Nr=q(),x=U(Nr),Tr=E(),Gr=Q(),Vr=U(Gr);function U(e){return e&&e.__esModule?e:{default:e}}var $r=v.promise=function(r,t,u,n,a){return x.default.promise(r)?(r.then(t,a),!0):!1},G=new Map,zr=v.fork=function(r,t,u){if(!x.default.fork(r))return!1;var n=Symbol("fork"),a=(0,Vr.default)();G.set(n,a),u(r.iterator.apply(null,r.args),function(f){return a.dispatch(f)},function(f){return a.dispatch((0,Tr.error)(f))});var o=a.subscribe(function(){o(),G.delete(n)});return t(n),!0},Br=v.join=function(r,t,u,n,a){if(!x.default.join(r))return!1;var o=G.get(r.task);return o?(function(){var f=o.subscribe(function(l){f(),t(l)})})():a("join error : task not found"),!0},Fr=v.race=function(r,t,u,n,a){if(!x.default.race(r))return!1;var o=!1,f=function(s,p,i){o||(o=!0,s[p]=i,t(s))},l=function(s){o||a(s)};return x.default.array(r.competitors)?(function(){var y=r.competitors.map(function(){return!1});r.competitors.forEach(function(s,p){u(s,function(i){return f(y,p,i)},l)})})():(function(){var y=Object.keys(r.competitors).reduce(function(s,p){return s[p]=!1,s},{});Object.keys(r.competitors).forEach(function(s){u(r.competitors[s],function(p){return f(y,s,p)},l)})})(),!0},Hr=function(r,t){if(!x.default.subscribe(r))return!1;if(!x.default.channel(r.channel))throw new Error('the first argument of "subscribe" must be a valid channel');var u=r.channel.subscribe(function(n){u&&u(),t(n)});return!0};v.default=[$r,zr,Br,Fr,Hr]});var Y=g(O=>{"use strict";Object.defineProperty(O,"__esModule",{value:!0});O.cps=O.call=void 0;var Ir=q(),X=Jr(Ir);function Jr(e){return e&&e.__esModule?e:{default:e}}function Kr(e){if(Array.isArray(e)){for(var r=0,t=Array(e.length);r{"use strict";Object.defineProperty(_,"__esModule",{value:!0});_.wrapControls=_.asyncControls=_.create=void 0;var Z=E();Object.keys(Z).forEach(function(e){e!=="default"&&Object.defineProperty(_,e,{enumerable:!0,get:function(){return Z[e]}})});var Ur=L(),Wr=V(Ur),Xr=W(),Yr=V(Xr),Zr=Y(),re=V(Zr);function V(e){return e&&e.__esModule?e:{default:e}}_.create=Wr.default;_.asyncControls=Yr.default;_.wrapControls=re.default});var te={};dr(te,{default:()=>ee});function H(e){return!!e&&typeof e[Symbol.iterator]=="function"&&typeof e.next=="function"}var ur=yr(rr(),1);function $(e){return!!e&&(typeof e=="object"||typeof e=="function")&&typeof e.then=="function"}function er(e){return Object.prototype.toString.call(e)==="[object Object]"}function tr(e){var r,t;return er(e)===!1?!1:(r=e.constructor,r===void 0?!0:(t=r.prototype,!(er(t)===!1||t.hasOwnProperty("isPrototypeOf")===!1)))}function M(e){return tr(e)&&typeof e.type=="string"}function nr(e,r){return M(e)&&e.type===r}function ar(e={},r){let t=Object.entries(e).map(([a,o])=>(f,l,y,s,p)=>{if(!nr(f,a))return!1;let i=o(f);return $(i)?i.then(s,p):s(i),!0}),u=(a,o)=>M(a)?(r(a),o(),!0):!1;t.push(u);let n=(0,ur.create)(t);return a=>new Promise((o,f)=>n(a,l=>{M(l)&&r(l),o(l)},f))}function ee(e={}){return r=>{let t=ar(e,r.dispatch);return u=>n=>H(n)?t(n):u(n)}}return mr(te);})(); /*! Bundled license information: is-plain-object/dist/is-plain-object.mjs: (*! * is-plain-object * * Copyright (c) 2014-2017, Jon Schlinkert. * Released under the MIT License. *) */ if (typeof wp.reduxRoutine === 'object' && wp.reduxRoutine.default) { wp.reduxRoutine = wp.reduxRoutine.default; } dist/a11y.js000064400000012720152375074240006633 0ustar00"use strict"; var wp; (wp ||= {}).a11y = (() => { var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // package-external:@wordpress/dom-ready var require_dom_ready = __commonJS({ "package-external:@wordpress/dom-ready"(exports, module) { module.exports = window.wp.domReady; } }); // package-external:@wordpress/i18n var require_i18n = __commonJS({ "package-external:@wordpress/i18n"(exports, module) { module.exports = window.wp.i18n; } }); // packages/a11y/build-module/index.mjs var index_exports = {}; __export(index_exports, { setup: () => setup, speak: () => speak }); var import_dom_ready = __toESM(require_dom_ready(), 1); // packages/a11y/build-module/script/add-container.mjs function addContainer(ariaLive = "polite") { const container = document.createElement("div"); container.id = `a11y-speak-${ariaLive}`; container.className = "a11y-speak-region"; container.setAttribute( "style", "position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip-path:inset(50%);border:0;word-wrap:normal !important;" ); container.setAttribute("aria-live", ariaLive); container.setAttribute("aria-relevant", "additions text"); container.setAttribute("aria-atomic", "true"); const { body } = document; if (body) { body.appendChild(container); } return container; } // packages/a11y/build-module/script/add-intro-text.mjs var import_i18n = __toESM(require_i18n(), 1); function addIntroText() { const introText = document.createElement("p"); introText.id = "a11y-speak-intro-text"; introText.className = "a11y-speak-intro-text"; introText.textContent = (0, import_i18n.__)("Notifications"); introText.setAttribute( "style", "position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip-path:inset(50%);border:0;word-wrap:normal !important;" ); introText.setAttribute("hidden", ""); const { body } = document; if (body) { body.appendChild(introText); } return introText; } // packages/a11y/build-module/shared/clear.mjs function clear() { const regions = document.getElementsByClassName("a11y-speak-region"); const introText = document.getElementById("a11y-speak-intro-text"); for (let i = 0; i < regions.length; i++) { regions[i].textContent = ""; } if (introText) { introText.setAttribute("hidden", "hidden"); } } // packages/a11y/build-module/shared/filter-message.mjs var previousMessage = ""; function filterMessage(message) { message = message.replace(/<[^<>]+>/g, " "); if (previousMessage === message) { message += "\xA0"; } previousMessage = message; return message; } // packages/a11y/build-module/shared/index.mjs function speak(message, ariaLive) { clear(); message = filterMessage(message); const introText = document.getElementById("a11y-speak-intro-text"); const containerAssertive = document.getElementById( "a11y-speak-assertive" ); const containerPolite = document.getElementById("a11y-speak-polite"); if (containerAssertive && ariaLive === "assertive") { containerAssertive.textContent = message; } else if (containerPolite) { containerPolite.textContent = message; } if (introText) { introText.removeAttribute("hidden"); } } // packages/a11y/build-module/index.mjs function setup() { const introText = document.getElementById("a11y-speak-intro-text"); const containerAssertive = document.getElementById( "a11y-speak-assertive" ); const containerPolite = document.getElementById("a11y-speak-polite"); if (introText === null) { addIntroText(); } if (containerAssertive === null) { addContainer("assertive"); } if (containerPolite === null) { addContainer("polite"); } } (0, import_dom_ready.default)(setup); return __toCommonJS(index_exports); })(); dist/deprecated.min.js000064400000002443152375074240010743 0ustar00/*! This file is auto-generated */ "use strict";var wp;(wp||={}).deprecated=(()=>{var k=Object.create;var a=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,A=Object.prototype.hasOwnProperty;var I=(e,s)=>()=>(s||e((s={exports:{}}).exports,s),s.exports),N=(e,s)=>{for(var n in s)a(e,n,{get:s[n],enumerable:!0})},$=(e,s,n,t)=>{if(s&&typeof s=="object"||typeof s=="function")for(let o of x(s))!A.call(e,o)&&o!==n&&a(e,o,{get:()=>s[o],enumerable:!(t=b(s,o))||t.enumerable});return e};var O=(e,s,n)=>(n=e!=null?k(j(e)):{},$(s||!e||!e.__esModule?a(n,"default",{value:e,enumerable:!0}):n,e)),P=e=>$(a({},"__esModule",{value:!0}),e);var p=I((z,g)=>{g.exports=window.wp.hooks});var q={};N(q,{default:()=>S,logged:()=>c});var u=O(p(),1),c=Object.create(null);function S(e,s={}){let{since:n,version:t,alternative:o,plugin:r,link:d,hint:l}=s,v=r?` from ${r}`:"",M=n?` since version ${n}`:"",m=t?` and will be removed${v} in version ${t}`:"",w=o?` Please use ${o} instead.`:"",f=d?` See: ${d}`:"",h=l?` Note: ${l}`:"",i=`${e} is deprecated${M}${m}.${w}${f}${h}`;i in c||((0,u.doAction)("deprecated",e,s,i),console.warn(i),c[i]=!0)}return P(q);})(); if (typeof wp.deprecated === 'object' && wp.deprecated.default) { wp.deprecated = wp.deprecated.default; } dist/block-directory.js000064400000157256152375074240011172 0ustar00var wp; (wp ||= {}).blockDirectory = (() => { var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // package-external:@wordpress/plugins var require_plugins = __commonJS({ "package-external:@wordpress/plugins"(exports, module) { module.exports = window.wp.plugins; } }); // package-external:@wordpress/hooks var require_hooks = __commonJS({ "package-external:@wordpress/hooks"(exports, module) { module.exports = window.wp.hooks; } }); // package-external:@wordpress/blocks var require_blocks = __commonJS({ "package-external:@wordpress/blocks"(exports, module) { module.exports = window.wp.blocks; } }); // package-external:@wordpress/data var require_data = __commonJS({ "package-external:@wordpress/data"(exports, module) { module.exports = window.wp.data; } }); // package-external:@wordpress/element var require_element = __commonJS({ "package-external:@wordpress/element"(exports, module) { module.exports = window.wp.element; } }); // package-external:@wordpress/editor var require_editor = __commonJS({ "package-external:@wordpress/editor"(exports, module) { module.exports = window.wp.editor; } }); // package-external:@wordpress/block-editor var require_block_editor = __commonJS({ "package-external:@wordpress/block-editor"(exports, module) { module.exports = window.wp.blockEditor; } }); // package-external:@wordpress/i18n var require_i18n = __commonJS({ "package-external:@wordpress/i18n"(exports, module) { module.exports = window.wp.i18n; } }); // package-external:@wordpress/api-fetch var require_api_fetch = __commonJS({ "package-external:@wordpress/api-fetch"(exports, module) { module.exports = window.wp.apiFetch; } }); // package-external:@wordpress/notices var require_notices = __commonJS({ "package-external:@wordpress/notices"(exports, module) { module.exports = window.wp.notices; } }); // package-external:@wordpress/url var require_url = __commonJS({ "package-external:@wordpress/url"(exports, module) { module.exports = window.wp.url; } }); // package-external:@wordpress/compose var require_compose = __commonJS({ "package-external:@wordpress/compose"(exports, module) { module.exports = window.wp.compose; } }); // package-external:@wordpress/components var require_components = __commonJS({ "package-external:@wordpress/components"(exports, module) { module.exports = window.wp.components; } }); // package-external:@wordpress/core-data var require_core_data = __commonJS({ "package-external:@wordpress/core-data"(exports, module) { module.exports = window.wp.coreData; } }); // package-external:@wordpress/html-entities var require_html_entities = __commonJS({ "package-external:@wordpress/html-entities"(exports, module) { module.exports = window.wp.htmlEntities; } }); // package-external:@wordpress/primitives var require_primitives = __commonJS({ "package-external:@wordpress/primitives"(exports, module) { module.exports = window.wp.primitives; } }); // vendor-external:react/jsx-runtime var require_jsx_runtime = __commonJS({ "vendor-external:react/jsx-runtime"(exports, module) { module.exports = window.ReactJSXRuntime; } }); // package-external:@wordpress/a11y var require_a11y = __commonJS({ "package-external:@wordpress/a11y"(exports, module) { module.exports = window.wp.a11y; } }); // packages/block-directory/build-module/index.mjs var index_exports = {}; __export(index_exports, { store: () => store }); // packages/block-directory/build-module/plugins/index.mjs var import_plugins = __toESM(require_plugins(), 1); var import_hooks = __toESM(require_hooks(), 1); // packages/block-directory/build-module/components/auto-block-uninstaller/index.mjs var import_blocks2 = __toESM(require_blocks(), 1); var import_data4 = __toESM(require_data(), 1); var import_element = __toESM(require_element(), 1); var import_editor = __toESM(require_editor(), 1); // packages/block-directory/build-module/store/index.mjs var import_data3 = __toESM(require_data(), 1); // packages/block-directory/build-module/store/reducer.mjs var import_data = __toESM(require_data(), 1); var downloadableBlocks = (state = {}, action) => { switch (action.type) { case "FETCH_DOWNLOADABLE_BLOCKS": return { ...state, [action.filterValue]: { isRequesting: true } }; case "RECEIVE_DOWNLOADABLE_BLOCKS": return { ...state, [action.filterValue]: { results: action.downloadableBlocks, isRequesting: false } }; } return state; }; var blockManagement = (state = { installedBlockTypes: [], isInstalling: {} }, action) => { switch (action.type) { case "ADD_INSTALLED_BLOCK_TYPE": return { ...state, installedBlockTypes: [ ...state.installedBlockTypes, action.item ] }; case "REMOVE_INSTALLED_BLOCK_TYPE": return { ...state, installedBlockTypes: state.installedBlockTypes.filter( (blockType) => blockType.name !== action.item.name ) }; case "SET_INSTALLING_BLOCK": return { ...state, isInstalling: { ...state.isInstalling, [action.blockId]: action.isInstalling } }; } return state; }; var errorNotices = (state = {}, action) => { switch (action.type) { case "SET_ERROR_NOTICE": return { ...state, [action.blockId]: { message: action.message, isFatal: action.isFatal } }; case "CLEAR_ERROR_NOTICE": const { [action.blockId]: blockId, ...restState } = state; return restState; } return state; }; var reducer_default = (0, import_data.combineReducers)({ downloadableBlocks, blockManagement, errorNotices }); // packages/block-directory/build-module/store/selectors.mjs var selectors_exports = {}; __export(selectors_exports, { getDownloadableBlocks: () => getDownloadableBlocks, getErrorNoticeForBlock: () => getErrorNoticeForBlock, getErrorNotices: () => getErrorNotices, getInstalledBlockTypes: () => getInstalledBlockTypes, getNewBlockTypes: () => getNewBlockTypes, getUnusedBlockTypes: () => getUnusedBlockTypes, isInstalling: () => isInstalling, isRequestingDownloadableBlocks: () => isRequestingDownloadableBlocks }); var import_data2 = __toESM(require_data(), 1); var import_block_editor = __toESM(require_block_editor(), 1); var EMPTY_ARRAY = []; function isRequestingDownloadableBlocks(state, filterValue) { return state.downloadableBlocks[filterValue]?.isRequesting ?? false; } function getDownloadableBlocks(state, filterValue) { return state.downloadableBlocks[filterValue]?.results ?? EMPTY_ARRAY; } function getInstalledBlockTypes(state) { return state.blockManagement.installedBlockTypes; } var getNewBlockTypes = (0, import_data2.createRegistrySelector)( (select) => (0, import_data2.createSelector)( (state) => { const installedBlockTypes = getInstalledBlockTypes(state); if (!installedBlockTypes.length) { return EMPTY_ARRAY; } const { getBlockName, getClientIdsWithDescendants } = select(import_block_editor.store); const installedBlockNames = installedBlockTypes.map( (blockType) => blockType.name ); const foundBlockNames = getClientIdsWithDescendants().flatMap( (clientId) => { const blockName = getBlockName(clientId); return installedBlockNames.includes(blockName) ? blockName : []; } ); const newBlockTypes = installedBlockTypes.filter( (blockType) => foundBlockNames.includes(blockType.name) ); return newBlockTypes.length > 0 ? newBlockTypes : EMPTY_ARRAY; }, (state) => [ getInstalledBlockTypes(state), select(import_block_editor.store).getClientIdsWithDescendants() ] ) ); var getUnusedBlockTypes = (0, import_data2.createRegistrySelector)( (select) => (0, import_data2.createSelector)( (state) => { const installedBlockTypes = getInstalledBlockTypes(state); if (!installedBlockTypes.length) { return EMPTY_ARRAY; } const { getBlockName, getClientIdsWithDescendants } = select(import_block_editor.store); const installedBlockNames = installedBlockTypes.map( (blockType) => blockType.name ); const foundBlockNames = getClientIdsWithDescendants().flatMap( (clientId) => { const blockName = getBlockName(clientId); return installedBlockNames.includes(blockName) ? blockName : []; } ); const unusedBlockTypes = installedBlockTypes.filter( (blockType) => !foundBlockNames.includes(blockType.name) ); return unusedBlockTypes.length > 0 ? unusedBlockTypes : EMPTY_ARRAY; }, (state) => [ getInstalledBlockTypes(state), select(import_block_editor.store).getClientIdsWithDescendants() ] ) ); function isInstalling(state, blockId) { return state.blockManagement.isInstalling[blockId] || false; } function getErrorNotices(state) { return state.errorNotices; } function getErrorNoticeForBlock(state, blockId) { return state.errorNotices[blockId]; } // packages/block-directory/build-module/store/actions.mjs var actions_exports = {}; __export(actions_exports, { addInstalledBlockType: () => addInstalledBlockType, clearErrorNotice: () => clearErrorNotice, fetchDownloadableBlocks: () => fetchDownloadableBlocks, installBlockType: () => installBlockType, receiveDownloadableBlocks: () => receiveDownloadableBlocks, removeInstalledBlockType: () => removeInstalledBlockType, setErrorNotice: () => setErrorNotice, setIsInstalling: () => setIsInstalling, uninstallBlockType: () => uninstallBlockType }); var import_blocks = __toESM(require_blocks(), 1); var import_i18n = __toESM(require_i18n(), 1); var import_api_fetch2 = __toESM(require_api_fetch(), 1); var import_notices = __toESM(require_notices(), 1); var import_url = __toESM(require_url(), 1); // packages/block-directory/build-module/store/load-assets.mjs var import_api_fetch = __toESM(require_api_fetch(), 1); var loadAsset = (el) => { return new Promise((resolve, reject) => { const newNode = document.createElement(el.nodeName); ["id", "rel", "src", "href", "type"].forEach((attr) => { if (el[attr]) { newNode[attr] = el[attr]; } }); if (el.innerHTML) { newNode.appendChild(document.createTextNode(el.innerHTML)); } newNode.onload = () => resolve(true); newNode.onerror = () => reject(new Error("Error loading asset.")); document.body.appendChild(newNode); if ("link" === newNode.nodeName.toLowerCase() || "script" === newNode.nodeName.toLowerCase() && !newNode.src) { resolve(); } }); }; async function loadAssets() { const response = await (0, import_api_fetch.default)({ url: document.location.href, parse: false }); const data = await response.text(); const doc = new window.DOMParser().parseFromString(data, "text/html"); const newAssets = Array.from( doc.querySelectorAll('link[rel="stylesheet"],script') ).filter((asset) => asset.id && !document.getElementById(asset.id)); for (const newAsset of newAssets) { await loadAsset(newAsset); } } // packages/block-directory/build-module/store/utils/get-plugin-url.mjs function getPluginUrl(block) { if (!block) { return false; } const link = block.links["wp:plugin"] || block.links.self; if (link && link.length) { return link[0].href; } return false; } // packages/block-directory/build-module/store/actions.mjs function fetchDownloadableBlocks(filterValue) { return { type: "FETCH_DOWNLOADABLE_BLOCKS", filterValue }; } function receiveDownloadableBlocks(downloadableBlocks2, filterValue) { return { type: "RECEIVE_DOWNLOADABLE_BLOCKS", downloadableBlocks: downloadableBlocks2, filterValue }; } var installBlockType = (block) => async ({ registry, dispatch }) => { const { id, name } = block; let success = false; dispatch.clearErrorNotice(id); try { dispatch.setIsInstalling(id, true); const url = getPluginUrl(block); let links = {}; if (url) { await (0, import_api_fetch2.default)({ method: "PUT", url, data: { status: "active" } }); } else { const response = await (0, import_api_fetch2.default)({ method: "POST", path: "wp/v2/plugins", data: { slug: id, status: "active" } }); links = response._links; } dispatch.addInstalledBlockType({ ...block, links: { ...block.links, ...links } }); const metadataFields = [ "api_version", "title", "category", "parent", "ancestor", "icon", "description", "keywords", "attributes", "provides_context", "uses_context", "selectors", "supports", "styles", "example", "variations", "allowed_blocks", "block_hooks" ]; await (0, import_api_fetch2.default)({ path: (0, import_url.addQueryArgs)(`/wp/v2/block-types/${name}`, { _fields: metadataFields }) }).catch(() => { }).then((response) => { if (!response) { return; } (0, import_blocks.unstable__bootstrapServerSideBlockDefinitions)({ [name]: Object.fromEntries( Object.entries(response).filter( ([key]) => metadataFields.includes(key) ) ) }); }); await loadAssets(); const registeredBlocks = registry.select(import_blocks.store).getBlockTypes(); if (!registeredBlocks.some((i) => i.name === name)) { throw new Error( (0, import_i18n.__)("Error registering block. Try reloading the page.") ); } registry.dispatch(import_notices.store).createInfoNotice( (0, import_i18n.sprintf)( // translators: %s is the block title. (0, import_i18n.__)("Block %s installed and added."), block.title ), { speak: true, type: "snackbar" } ); success = true; } catch (error) { let message = error.message || (0, import_i18n.__)("An error occurred."); let isFatal = error instanceof Error; const fatalAPIErrors = { folder_exists: (0, import_i18n.__)( "This block is already installed. Try reloading the page." ), unable_to_connect_to_filesystem: (0, import_i18n.__)( "Error installing block. You can reload the page and try again." ) }; if (fatalAPIErrors[error.code]) { isFatal = true; message = fatalAPIErrors[error.code]; } dispatch.setErrorNotice(id, message, isFatal); registry.dispatch(import_notices.store).createErrorNotice(message, { speak: true, isDismissible: true }); } dispatch.setIsInstalling(id, false); return success; }; var uninstallBlockType = (block) => async ({ registry, dispatch }) => { try { const url = getPluginUrl(block); await (0, import_api_fetch2.default)({ method: "PUT", url, data: { status: "inactive" } }); await (0, import_api_fetch2.default)({ method: "DELETE", url }); dispatch.removeInstalledBlockType(block); } catch (error) { registry.dispatch(import_notices.store).createErrorNotice( error.message || (0, import_i18n.__)("An error occurred.") ); } }; function addInstalledBlockType(item) { return { type: "ADD_INSTALLED_BLOCK_TYPE", item }; } function removeInstalledBlockType(item) { return { type: "REMOVE_INSTALLED_BLOCK_TYPE", item }; } function setIsInstalling(blockId, isInstalling2) { return { type: "SET_INSTALLING_BLOCK", blockId, isInstalling: isInstalling2 }; } function setErrorNotice(blockId, message, isFatal = false) { return { type: "SET_ERROR_NOTICE", blockId, message, isFatal }; } function clearErrorNotice(blockId) { return { type: "CLEAR_ERROR_NOTICE", blockId }; } // packages/block-directory/build-module/store/resolvers.mjs var resolvers_exports = {}; __export(resolvers_exports, { getDownloadableBlocks: () => getDownloadableBlocks2 }); // node_modules/tslib/tslib.es6.mjs var __assign = function() { __assign = Object.assign || function __assign2(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; // node_modules/lower-case/dist.es2015/index.js function lowerCase(str) { return str.toLowerCase(); } // node_modules/no-case/dist.es2015/index.js var DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g]; var DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi; function noCase(input, options) { if (options === void 0) { options = {}; } var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? " " : _d; var result = replace(replace(input, splitRegexp, "$1\0$2"), stripRegexp, "\0"); var start = 0; var end = result.length; while (result.charAt(start) === "\0") start++; while (result.charAt(end - 1) === "\0") end--; return result.slice(start, end).split("\0").map(transform).join(delimiter); } function replace(input, re, value) { if (re instanceof RegExp) return input.replace(re, value); return re.reduce(function(input2, re2) { return input2.replace(re2, value); }, input); } // node_modules/pascal-case/dist.es2015/index.js function pascalCaseTransform(input, index) { var firstChar = input.charAt(0); var lowerChars = input.substr(1).toLowerCase(); if (index > 0 && firstChar >= "0" && firstChar <= "9") { return "_" + firstChar + lowerChars; } return "" + firstChar.toUpperCase() + lowerChars; } function pascalCase(input, options) { if (options === void 0) { options = {}; } return noCase(input, __assign({ delimiter: "", transform: pascalCaseTransform }, options)); } // node_modules/camel-case/dist.es2015/index.js function camelCaseTransform(input, index) { if (index === 0) return input.toLowerCase(); return pascalCaseTransform(input, index); } function camelCase(input, options) { if (options === void 0) { options = {}; } return pascalCase(input, __assign({ transform: camelCaseTransform }, options)); } // packages/block-directory/build-module/store/resolvers.mjs var import_api_fetch3 = __toESM(require_api_fetch(), 1); var getDownloadableBlocks2 = (filterValue) => async ({ dispatch }) => { if (!filterValue) { return; } try { dispatch(fetchDownloadableBlocks(filterValue)); const results = await (0, import_api_fetch3.default)({ path: `wp/v2/block-directory/search?term=${filterValue}` }); const blocks = results.map( (result) => Object.fromEntries( Object.entries(result).map(([key, value]) => [ camelCase(key), value ]) ) ); dispatch(receiveDownloadableBlocks(blocks, filterValue)); } catch { dispatch(receiveDownloadableBlocks([], filterValue)); } }; // packages/block-directory/build-module/store/index.mjs var STORE_NAME = "core/block-directory"; var storeConfig = { reducer: reducer_default, selectors: selectors_exports, actions: actions_exports, resolvers: resolvers_exports }; var store = (0, import_data3.createReduxStore)(STORE_NAME, storeConfig); (0, import_data3.register)(store); // packages/block-directory/build-module/components/auto-block-uninstaller/index.mjs function AutoBlockUninstaller() { const { uninstallBlockType: uninstallBlockType2 } = (0, import_data4.useDispatch)(store); const shouldRemoveBlockTypes = (0, import_data4.useSelect)((select) => { const { isAutosavingPost, isSavingPost } = select(import_editor.store); return isSavingPost() && !isAutosavingPost(); }, []); const unusedBlockTypes = (0, import_data4.useSelect)( (select) => select(store).getUnusedBlockTypes(), [] ); (0, import_element.useEffect)(() => { if (shouldRemoveBlockTypes && unusedBlockTypes.length) { unusedBlockTypes.forEach((blockType) => { uninstallBlockType2(blockType); (0, import_blocks2.unregisterBlockType)(blockType.name); }); } }, [shouldRemoveBlockTypes]); return null; } // packages/block-directory/build-module/plugins/inserter-menu-downloadable-blocks-panel/index.mjs var import_block_editor3 = __toESM(require_block_editor(), 1); var import_compose = __toESM(require_compose(), 1); var import_element5 = __toESM(require_element(), 1); // packages/block-directory/build-module/components/downloadable-blocks-panel/index.mjs var import_i18n8 = __toESM(require_i18n(), 1); var import_components4 = __toESM(require_components(), 1); var import_core_data = __toESM(require_core_data(), 1); var import_data8 = __toESM(require_data(), 1); var import_blocks5 = __toESM(require_blocks(), 1); // packages/block-directory/build-module/components/downloadable-blocks-list/index.mjs var import_i18n5 = __toESM(require_i18n(), 1); var import_components2 = __toESM(require_components(), 1); var import_blocks4 = __toESM(require_blocks(), 1); var import_data7 = __toESM(require_data(), 1); // node_modules/clsx/dist/clsx.mjs function r(e) { var t, f, n = ""; if ("string" == typeof e || "number" == typeof e) n += e; else if ("object" == typeof e) if (Array.isArray(e)) { var o = e.length; for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f); } else for (f in e) e[f] && (n && (n += " "), n += f); return n; } function clsx() { for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t); return n; } var clsx_default = clsx; // packages/block-directory/build-module/components/downloadable-block-list-item/index.mjs var import_i18n4 = __toESM(require_i18n(), 1); var import_components = __toESM(require_components(), 1); var import_element3 = __toESM(require_element(), 1); var import_html_entities = __toESM(require_html_entities(), 1); var import_blocks3 = __toESM(require_blocks(), 1); var import_data6 = __toESM(require_data(), 1); // packages/block-directory/build-module/components/block-ratings/stars.mjs var import_i18n2 = __toESM(require_i18n(), 1); // packages/icons/build-module/icon/index.mjs var import_element2 = __toESM(require_element(), 1); var icon_default = (0, import_element2.forwardRef)( ({ icon, size = 24, ...props }, ref) => { return (0, import_element2.cloneElement)(icon, { width: size, height: size, ...props, ref }); } ); // packages/icons/build-module/library/star-empty.mjs var import_primitives = __toESM(require_primitives(), 1); var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); var star_empty_default = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_primitives.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_primitives.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M9.706 8.646a.25.25 0 01-.188.137l-4.626.672a.25.25 0 00-.139.427l3.348 3.262a.25.25 0 01.072.222l-.79 4.607a.25.25 0 00.362.264l4.138-2.176a.25.25 0 01.233 0l4.137 2.175a.25.25 0 00.363-.263l-.79-4.607a.25.25 0 01.072-.222l3.347-3.262a.25.25 0 00-.139-.427l-4.626-.672a.25.25 0 01-.188-.137l-2.069-4.192a.25.25 0 00-.448 0L9.706 8.646zM12 7.39l-.948 1.921a1.75 1.75 0 01-1.317.957l-2.12.308 1.534 1.495c.412.402.6.982.503 1.55l-.362 2.11 1.896-.997a1.75 1.75 0 011.629 0l1.895.997-.362-2.11a1.75 1.75 0 01.504-1.55l1.533-1.495-2.12-.308a1.75 1.75 0 01-1.317-.957L12 7.39z" }) }); // packages/icons/build-module/library/star-filled.mjs var import_primitives2 = __toESM(require_primitives(), 1); var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); var star_filled_default = /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives2.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives2.Path, { d: "M11.776 4.454a.25.25 0 01.448 0l2.069 4.192a.25.25 0 00.188.137l4.626.672a.25.25 0 01.139.426l-3.348 3.263a.25.25 0 00-.072.222l.79 4.607a.25.25 0 01-.362.263l-4.138-2.175a.25.25 0 00-.232 0l-4.138 2.175a.25.25 0 01-.363-.263l.79-4.607a.25.25 0 00-.071-.222L4.754 9.881a.25.25 0 01.139-.426l4.626-.672a.25.25 0 00.188-.137l2.069-4.192z" }) }); // packages/icons/build-module/library/star-half.mjs var import_primitives3 = __toESM(require_primitives(), 1); var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); var star_half_default = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives3.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives3.Path, { d: "M9.518 8.783a.25.25 0 00.188-.137l2.069-4.192a.25.25 0 01.448 0l2.07 4.192a.25.25 0 00.187.137l4.626.672a.25.25 0 01.139.427l-3.347 3.262a.25.25 0 00-.072.222l.79 4.607a.25.25 0 01-.363.264l-4.137-2.176a.25.25 0 00-.233 0l-4.138 2.175a.25.25 0 01-.362-.263l.79-4.607a.25.25 0 00-.072-.222L4.753 9.882a.25.25 0 01.14-.427l4.625-.672zM12 14.533c.28 0 .559.067.814.2l1.895.997-.362-2.11a1.75 1.75 0 01.504-1.55l1.533-1.495-2.12-.308a1.75 1.75 0 01-1.317-.957L12 7.39v7.143z" }) }); // packages/block-directory/build-module/components/block-ratings/stars.mjs var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); function Stars({ rating }) { const stars = Math.round(rating / 0.5) * 0.5; const fullStarCount = Math.floor(rating); const halfStarCount = Math.ceil(rating - fullStarCount); const emptyStarCount = 5 - (fullStarCount + halfStarCount); return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)( "span", { "aria-label": (0, import_i18n2.sprintf)( /* translators: %s: number of stars. */ (0, import_i18n2.__)("%s out of 5 stars"), stars ), children: [ Array.from({ length: fullStarCount }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)( icon_default, { className: "block-directory-block-ratings__star-full", icon: star_filled_default, size: 16 }, `full_stars_${i}` )), Array.from({ length: halfStarCount }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)( icon_default, { className: "block-directory-block-ratings__star-half-full", icon: star_half_default, size: 16 }, `half_stars_${i}` )), Array.from({ length: emptyStarCount }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)( icon_default, { className: "block-directory-block-ratings__star-empty", icon: star_empty_default, size: 16 }, `empty_stars_${i}` )) ] } ); } var stars_default = Stars; // packages/block-directory/build-module/components/block-ratings/index.mjs var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); var BlockRatings = ({ rating }) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "block-directory-block-ratings", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(stars_default, { rating }) }); var block_ratings_default = BlockRatings; // packages/block-directory/build-module/components/downloadable-block-icon/index.mjs var import_block_editor2 = __toESM(require_block_editor(), 1); var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); function DownloadableBlockIcon({ icon }) { const className = "block-directory-downloadable-block-icon"; return icon.match(/\.(jpeg|jpg|gif|png|svg)(?:\?.*)?$/) !== null ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("img", { className, src: icon, alt: "" }) : /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_block_editor2.BlockIcon, { className, icon, showColors: true }); } var downloadable_block_icon_default = DownloadableBlockIcon; // packages/block-directory/build-module/components/downloadable-block-notice/index.mjs var import_i18n3 = __toESM(require_i18n(), 1); var import_data5 = __toESM(require_data(), 1); var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); var DownloadableBlockNotice = ({ block }) => { const errorNotice = (0, import_data5.useSelect)( (select) => select(store).getErrorNoticeForBlock(block.id), [block] ); if (!errorNotice) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "block-directory-downloadable-block-notice", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "block-directory-downloadable-block-notice__content", children: [ errorNotice.message, errorNotice.isFatal ? " " + (0, import_i18n3.__)("Try reloading the page.") : null ] }) }); }; var downloadable_block_notice_default = DownloadableBlockNotice; // packages/block-directory/build-module/components/downloadable-block-list-item/index.mjs var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); function getDownloadableBlockLabel({ title, rating, ratingCount }, { hasNotice, isInstalled, isInstalling: isInstalling2 }) { const stars = Math.round(rating / 0.5) * 0.5; if (!isInstalled && hasNotice) { return (0, import_i18n4.sprintf)("Retry installing %s.", (0, import_html_entities.decodeEntities)(title)); } if (isInstalled) { return (0, import_i18n4.sprintf)("Add %s.", (0, import_html_entities.decodeEntities)(title)); } if (isInstalling2) { return (0, import_i18n4.sprintf)("Installing %s.", (0, import_html_entities.decodeEntities)(title)); } if (ratingCount < 1) { return (0, import_i18n4.sprintf)("Install %s.", (0, import_html_entities.decodeEntities)(title)); } return (0, import_i18n4.sprintf)( /* translators: 1: block title, 2: average rating, 3: total ratings count. */ (0, import_i18n4._n)( "Install %1$s. %2$s stars with %3$s review.", "Install %1$s. %2$s stars with %3$s reviews.", ratingCount ), (0, import_html_entities.decodeEntities)(title), stars, ratingCount ); } function DownloadableBlockListItem({ item, onClick }) { const { author, description, icon, rating, title } = item; const isInstalled = !!(0, import_blocks3.getBlockType)(item.name); const { hasNotice, isInstalling: isInstalling2, isInstallable } = (0, import_data6.useSelect)( (select) => { const { getErrorNoticeForBlock: getErrorNoticeForBlock2, isInstalling: isBlockInstalling } = select(store); const notice = getErrorNoticeForBlock2(item.id); const hasFatal = notice && notice.isFatal; return { hasNotice: !!notice, isInstalling: isBlockInstalling(item.id), isInstallable: !hasFatal }; }, [item] ); let statusText = ""; if (isInstalled) { statusText = (0, import_i18n4.__)("Installed!"); } else if (isInstalling2) { statusText = (0, import_i18n4.__)("Installing\u2026"); } const itemLabel = getDownloadableBlockLabel(item, { hasNotice, isInstalled, isInstalling: isInstalling2 }); return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_components.Tooltip, { placement: "top", text: itemLabel, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)( import_components.Composite.Item, { className: clsx_default( "block-directory-downloadable-block-list-item", isInstalling2 && "is-installing" ), accessibleWhenDisabled: true, disabled: isInstalling2 || !isInstallable, onClick: (event) => { event.preventDefault(); onClick(); }, "aria-label": itemLabel, type: "button", role: "option", children: [ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "block-directory-downloadable-block-list-item__icon", children: [ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(downloadable_block_icon_default, { icon, title }), isInstalling2 ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "block-directory-downloadable-block-list-item__spinner", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_components.Spinner, {}) }) : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(block_ratings_default, { rating }) ] }), /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { className: "block-directory-downloadable-block-list-item__details", children: [ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "block-directory-downloadable-block-list-item__title", children: (0, import_element3.createInterpolateElement)( (0, import_i18n4.sprintf)( /* translators: 1: block title. 2: author name. */ (0, import_i18n4.__)("%1$s by %2$s"), (0, import_html_entities.decodeEntities)(title), author ), { span: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "block-directory-downloadable-block-list-item__author" }) } ) }), hasNotice ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(downloadable_block_notice_default, { block: item }) : /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "block-directory-downloadable-block-list-item__desc", children: !!statusText ? statusText : (0, import_html_entities.decodeEntities)(description) }), isInstallable && !(isInstalled || isInstalling2) && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_components.VisuallyHidden, { children: (0, import_i18n4.__)("Install block") }) ] }) ] }) ] } ) }); } var downloadable_block_list_item_default = DownloadableBlockListItem; // packages/block-directory/build-module/components/downloadable-blocks-list/index.mjs var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1); var noop = () => { }; function DownloadableBlocksList({ items, onHover = noop, onSelect }) { const { installBlockType: installBlockType2 } = (0, import_data7.useDispatch)(store); if (!items.length) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( import_components2.Composite, { role: "listbox", className: "block-directory-downloadable-blocks-list", "aria-label": (0, import_i18n5.__)("Blocks available for install"), children: items.map((item) => { return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( downloadable_block_list_item_default, { onClick: () => { if ((0, import_blocks4.getBlockType)(item.name)) { onSelect(item); } else { installBlockType2(item).then((success) => { if (success) { onSelect(item); } }); } onHover(null); }, onHover, item }, item.id ); }) } ); } var downloadable_blocks_list_default = DownloadableBlocksList; // packages/block-directory/build-module/components/downloadable-blocks-panel/inserter-panel.mjs var import_i18n6 = __toESM(require_i18n(), 1); var import_element4 = __toESM(require_element(), 1); var import_a11y = __toESM(require_a11y(), 1); var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1); function DownloadableBlocksInserterPanel({ children, downloadableItems, hasLocalBlocks }) { const count = downloadableItems.length; (0, import_element4.useEffect)(() => { (0, import_a11y.speak)( (0, import_i18n6.sprintf)( /* translators: %d: number of available blocks. */ (0, import_i18n6._n)( "%d additional block is available to install.", "%d additional blocks are available to install.", count ), count ) ); }, [count]); return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [ !hasLocalBlocks && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("p", { className: "block-directory-downloadable-blocks-panel__no-local", children: (0, import_i18n6.__)("No results available from your installed blocks.") }), /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "block-editor-inserter__quick-inserter-separator" }), /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "block-directory-downloadable-blocks-panel", children: [ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "block-directory-downloadable-blocks-panel__header", children: [ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h2", { className: "block-directory-downloadable-blocks-panel__title", children: (0, import_i18n6.__)("Available to install") }), /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("p", { className: "block-directory-downloadable-blocks-panel__description", children: (0, import_i18n6.__)( "Select a block to install and add it to your post." ) }) ] }), children ] }) ] }); } var inserter_panel_default = DownloadableBlocksInserterPanel; // packages/block-directory/build-module/components/downloadable-blocks-panel/no-results.mjs var import_i18n7 = __toESM(require_i18n(), 1); var import_components3 = __toESM(require_components(), 1); var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1); function DownloadableBlocksNoResults() { return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "block-editor-inserter__no-results", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { children: (0, import_i18n7.__)("No results found.") }) }), /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "block-editor-inserter__tips", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_components3.Tip, { children: [ (0, import_i18n7.__)("Interested in creating your own block?"), /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("br", {}), /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_components3.ExternalLink, { href: "https://developer.wordpress.org/block-editor/", children: [ (0, import_i18n7.__)("Get started here"), "." ] }) ] }) }) ] }); } var no_results_default = DownloadableBlocksNoResults; // packages/block-directory/build-module/components/downloadable-blocks-panel/index.mjs var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1); var EMPTY_ARRAY2 = []; var useDownloadableBlocks = (filterValue) => (0, import_data8.useSelect)( (select) => { const { getDownloadableBlocks: getDownloadableBlocks3, isRequestingDownloadableBlocks: isRequestingDownloadableBlocks2, getInstalledBlockTypes: getInstalledBlockTypes2 } = select(store); const hasPermission = select(import_core_data.store).canUser( "read", "block-directory/search" ); let downloadableBlocks2 = EMPTY_ARRAY2; if (hasPermission) { downloadableBlocks2 = getDownloadableBlocks3(filterValue); const installedBlockTypes = getInstalledBlockTypes2(); const installableBlocks = downloadableBlocks2.filter( ({ name }) => { const isJustInstalled = installedBlockTypes.some( (blockType) => blockType.name === name ); const isPreviouslyInstalled = (0, import_blocks5.getBlockType)(name); return isJustInstalled || !isPreviouslyInstalled; } ); if (installableBlocks.length !== downloadableBlocks2.length) { downloadableBlocks2 = installableBlocks; } if (downloadableBlocks2.length === 0) { downloadableBlocks2 = EMPTY_ARRAY2; } } return { hasPermission, downloadableBlocks: downloadableBlocks2, isLoading: isRequestingDownloadableBlocks2(filterValue) }; }, [filterValue] ); function DownloadableBlocksPanel({ onSelect, onHover, hasLocalBlocks, isTyping, filterValue }) { const { hasPermission, downloadableBlocks: downloadableBlocks2, isLoading } = useDownloadableBlocks(filterValue); if (hasPermission === void 0 || isLoading || isTyping) { return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [ hasPermission && !hasLocalBlocks && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("p", { className: "block-directory-downloadable-blocks-panel__no-local", children: (0, import_i18n8.__)( "No results available from your installed blocks." ) }), /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "block-editor-inserter__quick-inserter-separator" }) ] }), /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "block-directory-downloadable-blocks-panel has-blocks-loading", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_components4.Spinner, {}) }) ] }); } if (false === hasPermission) { if (!hasLocalBlocks) { return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(no_results_default, {}); } return null; } if (downloadableBlocks2.length === 0) { return hasLocalBlocks ? null : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(no_results_default, {}); } return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)( inserter_panel_default, { downloadableItems: downloadableBlocks2, hasLocalBlocks, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)( downloadable_blocks_list_default, { items: downloadableBlocks2, onSelect, onHover } ) } ); } // packages/block-directory/build-module/plugins/inserter-menu-downloadable-blocks-panel/index.mjs var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1); function InserterMenuDownloadableBlocksPanel() { const [debouncedFilterValue, setFilterValue] = (0, import_element5.useState)(""); const debouncedSetFilterValue = (0, import_compose.debounce)(setFilterValue, 400); return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_block_editor3.__unstableInserterMenuExtension, { children: ({ onSelect, onHover, filterValue, hasItems }) => { if (debouncedFilterValue !== filterValue) { debouncedSetFilterValue(filterValue); } if (!debouncedFilterValue) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)( DownloadableBlocksPanel, { onSelect, onHover, filterValue: debouncedFilterValue, hasLocalBlocks: hasItems, isTyping: filterValue !== debouncedFilterValue } ); } }); } var inserter_menu_downloadable_blocks_panel_default = InserterMenuDownloadableBlocksPanel; // packages/block-directory/build-module/plugins/installed-blocks-pre-publish-panel/index.mjs var import_i18n10 = __toESM(require_i18n(), 1); var import_data9 = __toESM(require_data(), 1); var import_editor2 = __toESM(require_editor(), 1); // packages/block-directory/build-module/components/compact-list/index.mjs var import_i18n9 = __toESM(require_i18n(), 1); var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1); function CompactList({ items }) { if (!items.length) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("ul", { className: "block-directory-compact-list", children: items.map(({ icon, id, title, author }) => /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("li", { className: "block-directory-compact-list__item", children: [ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(downloadable_block_icon_default, { icon, title }), /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "block-directory-compact-list__item-details", children: [ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "block-directory-compact-list__item-title", children: title }), /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "block-directory-compact-list__item-author", children: (0, import_i18n9.sprintf)( /* translators: %s: Name of the block author. */ (0, import_i18n9.__)("By %s"), author ) }) ] }) ] }, id)) }); } // packages/block-directory/build-module/plugins/installed-blocks-pre-publish-panel/index.mjs var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1); function InstalledBlocksPrePublishPanel() { const newBlockTypes = (0, import_data9.useSelect)( (select) => select(store).getNewBlockTypes(), [] ); if (!newBlockTypes.length) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)( import_editor2.PluginPrePublishPanel, { title: (0, import_i18n10.sprintf)( // translators: %d: number of blocks (number). (0, import_i18n10._n)( "Added: %d block", "Added: %d blocks", newBlockTypes.length ), newBlockTypes.length ), initialOpen: true, children: [ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: "installed-blocks-pre-publish-panel__copy", children: (0, import_i18n10._n)( "The following block has been added to your site.", "The following blocks have been added to your site.", newBlockTypes.length ) }), /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(CompactList, { items: newBlockTypes }) ] } ); } // packages/block-directory/build-module/plugins/get-install-missing/index.mjs var import_i18n12 = __toESM(require_i18n(), 1); var import_components6 = __toESM(require_components(), 1); var import_blocks7 = __toESM(require_blocks(), 1); var import_element6 = __toESM(require_element(), 1); var import_data11 = __toESM(require_data(), 1); var import_core_data2 = __toESM(require_core_data(), 1); var import_block_editor5 = __toESM(require_block_editor(), 1); // packages/block-directory/build-module/plugins/get-install-missing/install-button.mjs var import_i18n11 = __toESM(require_i18n(), 1); var import_components5 = __toESM(require_components(), 1); var import_blocks6 = __toESM(require_blocks(), 1); var import_data10 = __toESM(require_data(), 1); var import_block_editor4 = __toESM(require_block_editor(), 1); var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1); function InstallButton({ attributes, block, clientId }) { const isInstallingBlock = (0, import_data10.useSelect)( (select) => select(store).isInstalling(block.id), [block.id] ); const { installBlockType: installBlockType2 } = (0, import_data10.useDispatch)(store); const { replaceBlock } = (0, import_data10.useDispatch)(import_block_editor4.store); return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)( import_components5.Button, { __next40pxDefaultSize: true, onClick: () => installBlockType2(block).then((success) => { if (success) { const blockType = (0, import_blocks6.getBlockType)(block.name); const [originalBlock] = (0, import_blocks6.parse)( attributes.originalContent ); if (originalBlock && blockType) { replaceBlock( clientId, (0, import_blocks6.createBlock)( blockType.name, originalBlock.attributes, originalBlock.innerBlocks ) ); } } }), accessibleWhenDisabled: true, disabled: isInstallingBlock, isBusy: isInstallingBlock, variant: "primary", children: (0, import_i18n11.sprintf)( /* translators: %s: block name */ (0, import_i18n11.__)("Install %s"), block.title ) } ); } // packages/block-directory/build-module/plugins/get-install-missing/index.mjs var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1); var getInstallMissing = (OriginalComponent) => (props) => { const { originalName } = props.attributes; const { block, hasPermission } = (0, import_data11.useSelect)( (select) => { const { getDownloadableBlocks: getDownloadableBlocks3 } = select(store); const blocks = getDownloadableBlocks3( "block:" + originalName ).filter(({ name }) => originalName === name); return { hasPermission: select(import_core_data2.store).canUser( "read", "block-directory/search" ), block: blocks.length && blocks[0] }; }, [originalName] ); if (!hasPermission || !block) { return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(OriginalComponent, { ...props }); } return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ModifiedWarning, { ...props, originalBlock: block }); }; var ModifiedWarning = ({ originalBlock, ...props }) => { const { originalName, originalUndelimitedContent, clientId } = props.attributes; const { replaceBlock } = (0, import_data11.useDispatch)(import_block_editor5.store); const convertToHTML = () => { replaceBlock( props.clientId, (0, import_blocks7.createBlock)("core/html", { content: originalUndelimitedContent }) ); }; const hasContent = !!originalUndelimitedContent; const hasHTMLBlock = (0, import_data11.useSelect)( (select) => { const { canInsertBlockType, getBlockRootClientId } = select(import_block_editor5.store); return canInsertBlockType( "core/html", getBlockRootClientId(clientId) ); }, [clientId] ); let messageHTML = (0, import_i18n12.sprintf)( /* translators: %s: block name */ (0, import_i18n12.__)( "Your site doesn\u2019t include support for the %s block. You can try installing the block or remove it entirely." ), originalBlock.title || originalName ); const actions = [ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)( InstallButton, { block: originalBlock, attributes: props.attributes, clientId: props.clientId }, "install" ) ]; if (hasContent && hasHTMLBlock) { messageHTML = (0, import_i18n12.sprintf)( /* translators: %s: block name */ (0, import_i18n12.__)( "Your site doesn\u2019t include support for the %s block. You can try installing the block, convert it to a Custom HTML block, or remove it entirely." ), originalBlock.title || originalName ); actions.push( /* @__PURE__ */ (0, import_jsx_runtime17.jsx)( import_components6.Button, { __next40pxDefaultSize: true, onClick: convertToHTML, variant: "tertiary", children: (0, import_i18n12.__)("Keep as HTML") }, "convert" ) ); } return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { ...(0, import_block_editor5.useBlockProps)(), children: [ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_block_editor5.Warning, { actions, children: messageHTML }), /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_element6.RawHTML, { children: originalUndelimitedContent }) ] }); }; var get_install_missing_default = getInstallMissing; // packages/block-directory/build-module/plugins/index.mjs var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1); (0, import_plugins.registerPlugin)("block-directory", { // The icon is explicitly set to undefined to prevent PluginPrePublishPanel // from rendering the fallback icon pluginIcon. icon: void 0, render() { return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_jsx_runtime18.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(AutoBlockUninstaller, {}), /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(inserter_menu_downloadable_blocks_panel_default, {}), /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(InstalledBlocksPrePublishPanel, {}) ] }); } }); (0, import_hooks.addFilter)( "blocks.registerBlockType", "block-directory/fallback", (settings, name) => { if (name !== "core/missing") { return settings; } settings.edit = get_install_missing_default(settings.edit); return settings; } ); return __toCommonJS(index_exports); })(); dist/api-fetch.js000064400000042723152375074240007726 0ustar00"use strict"; var wp; (wp ||= {}).apiFetch = (() => { var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // package-external:@wordpress/i18n var require_i18n = __commonJS({ "package-external:@wordpress/i18n"(exports, module) { module.exports = window.wp.i18n; } }); // package-external:@wordpress/url var require_url = __commonJS({ "package-external:@wordpress/url"(exports, module) { module.exports = window.wp.url; } }); // packages/api-fetch/build-module/index.mjs var index_exports = {}; __export(index_exports, { default: () => index_default }); var import_i18n3 = __toESM(require_i18n(), 1); // packages/api-fetch/build-module/middlewares/nonce.mjs function createNonceMiddleware(nonce) { const middleware = (options, next) => { const { headers = {} } = options; for (const headerName in headers) { if (headerName.toLowerCase() === "x-wp-nonce" && headers[headerName] === middleware.nonce) { return next(options); } } return next({ ...options, headers: { ...headers, "X-WP-Nonce": middleware.nonce } }); }; middleware.nonce = nonce; return middleware; } var nonce_default = createNonceMiddleware; // packages/api-fetch/build-module/middlewares/namespace-endpoint.mjs var namespaceAndEndpointMiddleware = (options, next) => { let path = options.path; let namespaceTrimmed, endpointTrimmed; if (typeof options.namespace === "string" && typeof options.endpoint === "string") { namespaceTrimmed = options.namespace.replace(/^\/|\/$/g, ""); endpointTrimmed = options.endpoint.replace(/^\//, ""); if (endpointTrimmed) { path = namespaceTrimmed + "/" + endpointTrimmed; } else { path = namespaceTrimmed; } } delete options.namespace; delete options.endpoint; return next({ ...options, path }); }; var namespace_endpoint_default = namespaceAndEndpointMiddleware; // packages/api-fetch/build-module/middlewares/root-url.mjs var createRootURLMiddleware = (rootURL) => (options, next) => { return namespace_endpoint_default(options, (optionsWithPath) => { let url = optionsWithPath.url; let path = optionsWithPath.path; let apiRoot; if (typeof path === "string") { apiRoot = rootURL; if (-1 !== rootURL.indexOf("?")) { path = path.replace("?", "&"); } path = path.replace(/^\//, ""); if ("string" === typeof apiRoot && -1 !== apiRoot.indexOf("?")) { path = path.replace("?", "&"); } url = apiRoot + path; } return next({ ...optionsWithPath, url }); }); }; var root_url_default = createRootURLMiddleware; // packages/api-fetch/build-module/middlewares/preloading.mjs var import_url = __toESM(require_url(), 1); function createPreloadingMiddleware(preloadedData) { const cache = Object.fromEntries( Object.entries(preloadedData).map(([path, data]) => [ (0, import_url.normalizePath)(path), data ]) ); return (options, next) => { const { parse = true } = options; let rawPath = options.path; if (!rawPath && options.url) { const { rest_route: pathFromQuery, ...queryArgs } = (0, import_url.getQueryArgs)( options.url ); if (typeof pathFromQuery === "string") { rawPath = (0, import_url.addQueryArgs)(pathFromQuery, queryArgs); } } if (typeof rawPath !== "string") { return next(options); } const method = options.method || "GET"; const path = (0, import_url.normalizePath)(rawPath); if ("GET" === method && cache[path]) { const cacheData = cache[path]; delete cache[path]; return prepareResponse(cacheData, !!parse); } else if ("OPTIONS" === method && cache[method] && cache[method][path]) { const cacheData = cache[method][path]; delete cache[method][path]; return prepareResponse(cacheData, !!parse); } return next(options); }; } function prepareResponse(responseData, parse) { if (parse) { return Promise.resolve(responseData.body); } try { return Promise.resolve( new window.Response(JSON.stringify(responseData.body), { status: 200, statusText: "OK", headers: responseData.headers }) ); } catch { Object.entries( responseData.headers ).forEach(([key, value]) => { if (key.toLowerCase() === "link") { responseData.headers[key] = value.replace( /<([^>]+)>/, (_, url) => `<${encodeURI(url)}>` ); } }); return Promise.resolve( parse ? responseData.body : new window.Response(JSON.stringify(responseData.body), { status: 200, statusText: "OK", headers: responseData.headers }) ); } } var preloading_default = createPreloadingMiddleware; // packages/api-fetch/build-module/middlewares/fetch-all-middleware.mjs var import_url2 = __toESM(require_url(), 1); var modifyQuery = ({ path, url, ...options }, queryArgs) => ({ ...options, url: url && (0, import_url2.addQueryArgs)(url, queryArgs), path: path && (0, import_url2.addQueryArgs)(path, queryArgs) }); var parseResponse = (response) => response.json ? response.json() : Promise.reject(response); var parseLinkHeader = (linkHeader) => { if (!linkHeader) { return {}; } const match = linkHeader.match(/<([^>]+)>; rel="next"/); return match ? { next: match[1] } : {}; }; var getNextPageUrl = (response) => { const { next } = parseLinkHeader(response.headers.get("link")); return next; }; var requestContainsUnboundedQuery = (options) => { const pathIsUnbounded = !!options.path && options.path.indexOf("per_page=-1") !== -1; const urlIsUnbounded = !!options.url && options.url.indexOf("per_page=-1") !== -1; return pathIsUnbounded || urlIsUnbounded; }; var fetchAllMiddleware = async (options, next) => { if (options.parse === false) { return next(options); } if (!requestContainsUnboundedQuery(options)) { return next(options); } const response = await index_default({ ...modifyQuery(options, { per_page: 100 }), // Ensure headers are returned for page 1. parse: false }); const results = await parseResponse(response); if (!Array.isArray(results)) { return results; } let nextPage = getNextPageUrl(response); if (!nextPage) { return results; } let mergedResults = [].concat(results); while (nextPage) { const nextResponse = await index_default({ ...options, // Ensure the URL for the next page is used instead of any provided path. path: void 0, url: nextPage, // Ensure we still get headers so we can identify the next page. parse: false }); const nextResults = await parseResponse(nextResponse); mergedResults = mergedResults.concat(nextResults); nextPage = getNextPageUrl(nextResponse); } return mergedResults; }; var fetch_all_middleware_default = fetchAllMiddleware; // packages/api-fetch/build-module/middlewares/http-v1.mjs var OVERRIDE_METHODS = /* @__PURE__ */ new Set(["PATCH", "PUT", "DELETE"]); var DEFAULT_METHOD = "GET"; var httpV1Middleware = (options, next) => { const { method = DEFAULT_METHOD } = options; if (OVERRIDE_METHODS.has(method.toUpperCase())) { options = { ...options, headers: { ...options.headers, "X-HTTP-Method-Override": method, "Content-Type": "application/json" }, method: "POST" }; } return next(options); }; var http_v1_default = httpV1Middleware; // packages/api-fetch/build-module/middlewares/user-locale.mjs var import_url3 = __toESM(require_url(), 1); var userLocaleMiddleware = (options, next) => { if (typeof options.url === "string" && !(0, import_url3.hasQueryArg)(options.url, "_locale")) { options.url = (0, import_url3.addQueryArgs)(options.url, { _locale: "user" }); } if (typeof options.path === "string" && !(0, import_url3.hasQueryArg)(options.path, "_locale")) { options.path = (0, import_url3.addQueryArgs)(options.path, { _locale: "user" }); } return next(options); }; var user_locale_default = userLocaleMiddleware; // packages/api-fetch/build-module/middlewares/media-upload.mjs var import_i18n2 = __toESM(require_i18n(), 1); // packages/api-fetch/build-module/utils/response.mjs var import_i18n = __toESM(require_i18n(), 1); async function parseJsonAndNormalizeError(response) { try { return await response.json(); } catch { throw { code: "invalid_json", message: (0, import_i18n.__)("The response is not a valid JSON response.") }; } } async function parseResponseAndNormalizeError(response, shouldParseResponse = true) { if (!shouldParseResponse) { return response; } if (response.status === 204) { return null; } return await parseJsonAndNormalizeError(response); } async function parseAndThrowError(response, shouldParseResponse = true) { if (!shouldParseResponse) { throw response; } throw await parseJsonAndNormalizeError(response); } // packages/api-fetch/build-module/middlewares/media-upload.mjs function isMediaUploadRequest(options) { const isCreateMethod = !!options.method && options.method === "POST"; const isMediaEndpoint = !!options.path && options.path.indexOf("/wp/v2/media") !== -1 || !!options.url && options.url.indexOf("/wp/v2/media") !== -1; return isMediaEndpoint && isCreateMethod; } var mediaUploadMiddleware = (options, next) => { if (!isMediaUploadRequest(options)) { return next(options); } let retries = 0; const maxRetries = 5; const postProcess = (attachmentId) => { retries++; return next({ path: `/wp/v2/media/${attachmentId}/post-process`, method: "POST", data: { action: "create-image-subsizes" }, parse: false }).catch(() => { if (retries < maxRetries) { return postProcess(attachmentId); } next({ path: `/wp/v2/media/${attachmentId}?force=true`, method: "DELETE" }); return Promise.reject(); }); }; return next({ ...options, parse: false }).catch((response) => { if (!(response instanceof globalThis.Response)) { return Promise.reject(response); } const attachmentId = response.headers.get( "x-wp-upload-attachment-id" ); if (response.status >= 500 && response.status < 600 && attachmentId) { return postProcess(attachmentId).catch(() => { if (options.parse !== false) { return Promise.reject({ code: "post_process", message: (0, import_i18n2.__)( "Media upload failed. If this is a photo or a large image, please scale it down and try again." ) }); } return Promise.reject(response); }); } return parseAndThrowError(response, options.parse); }).then( (response) => parseResponseAndNormalizeError(response, options.parse) ); }; var media_upload_default = mediaUploadMiddleware; // packages/api-fetch/build-module/middlewares/theme-preview.mjs var import_url4 = __toESM(require_url(), 1); var createThemePreviewMiddleware = (themePath) => (options, next) => { if (typeof options.url === "string") { const wpThemePreview = (0, import_url4.getQueryArg)( options.url, "wp_theme_preview" ); if (wpThemePreview === void 0) { options.url = (0, import_url4.addQueryArgs)(options.url, { wp_theme_preview: themePath }); } else if (wpThemePreview === "") { options.url = (0, import_url4.removeQueryArgs)( options.url, "wp_theme_preview" ); } } if (typeof options.path === "string") { const wpThemePreview = (0, import_url4.getQueryArg)( options.path, "wp_theme_preview" ); if (wpThemePreview === void 0) { options.path = (0, import_url4.addQueryArgs)(options.path, { wp_theme_preview: themePath }); } else if (wpThemePreview === "") { options.path = (0, import_url4.removeQueryArgs)( options.path, "wp_theme_preview" ); } } return next(options); }; var theme_preview_default = createThemePreviewMiddleware; // packages/api-fetch/build-module/index.mjs var DEFAULT_HEADERS = { // The backend uses the Accept header as a condition for considering an // incoming request as a REST request. // // See: https://core.trac.wordpress.org/ticket/44534 Accept: "application/json, */*;q=0.1" }; var DEFAULT_OPTIONS = { credentials: "include" }; var middlewares = [ user_locale_default, namespace_endpoint_default, http_v1_default, fetch_all_middleware_default ]; function registerMiddleware(middleware) { middlewares.unshift(middleware); } var defaultFetchHandler = (nextOptions) => { const { url, path, data, parse = true, ...remainingOptions } = nextOptions; let { body, headers } = nextOptions; headers = { ...DEFAULT_HEADERS, ...headers }; if (data) { body = JSON.stringify(data); headers["Content-Type"] = "application/json"; } const responsePromise = globalThis.fetch( // Fall back to explicitly passing `window.location` which is the behavior if `undefined` is passed. url || path || window.location.href, { ...DEFAULT_OPTIONS, ...remainingOptions, body, headers } ); return responsePromise.then( (response) => { if (!response.ok) { return parseAndThrowError(response, parse); } return parseResponseAndNormalizeError(response, parse); }, (err) => { if (err && err.name === "AbortError") { throw err; } if (!globalThis.navigator.onLine) { throw { code: "offline_error", message: (0, import_i18n3.__)( "Unable to connect. Please check your Internet connection." ) }; } throw { code: "fetch_error", message: (0, import_i18n3.__)( "Could not get a valid response from the server." ) }; } ); }; var fetchHandler = defaultFetchHandler; function setFetchHandler(newFetchHandler) { fetchHandler = newFetchHandler; } var apiFetch = (options) => { const enhancedHandler = middlewares.reduceRight( (next, middleware) => { return (workingOptions) => middleware(workingOptions, next); }, fetchHandler ); return enhancedHandler(options).catch((error) => { if (error.code !== "rest_cookie_invalid_nonce") { return Promise.reject(error); } return globalThis.fetch(apiFetch.nonceEndpoint).then((response) => { if (!response.ok) { return Promise.reject(error); } return response.text(); }).then((text) => { apiFetch.nonceMiddleware.nonce = text; return apiFetch(options); }); }); }; apiFetch.use = registerMiddleware; apiFetch.setFetchHandler = setFetchHandler; apiFetch.createNonceMiddleware = nonce_default; apiFetch.createPreloadingMiddleware = preloading_default; apiFetch.createRootURLMiddleware = root_url_default; apiFetch.fetchAllMiddleware = fetch_all_middleware_default; apiFetch.mediaUploadMiddleware = media_upload_default; apiFetch.createThemePreviewMiddleware = theme_preview_default; var index_default = apiFetch; return __toCommonJS(index_exports); })(); if (typeof wp.apiFetch === 'object' && wp.apiFetch.default) { wp.apiFetch = wp.apiFetch.default; } dist/dom.min.js000064400000031232152375074240007420 0ustar00/*! This file is auto-generated */ "use strict";var wp;(wp||={}).dom=(()=>{var Dt=Object.create;var v=Object.defineProperty;var At=Object.getOwnPropertyDescriptor;var vt=Object.getOwnPropertyNames;var Ot=Object.getPrototypeOf,Lt=Object.prototype.hasOwnProperty;var Ht=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),B=(t,e)=>{for(var r in e)v(t,r,{get:e[r],enumerable:!0})},Z=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of vt(e))!Lt.call(t,n)&&n!==r&&v(t,n,{get:()=>e[n],enumerable:!(o=At(e,n))||o.enumerable});return t};var Ft=(t,e,r)=>(r=t!=null?Dt(Ot(t)):{},Z(e||!t||!t.__esModule?v(r,"default",{value:t,enumerable:!0}):r,t)),Pt=t=>Z(v({},"__esModule",{value:!0}),t);var ut=Ht((Ye,lt)=>{lt.exports=window.wp.deprecated});var Qt={};B(Qt,{__unstableStripHTML:()=>Nt,computeCaretRect:()=>K,documentHasSelection:()=>et,documentHasTextSelection:()=>E,documentHasUncollapsedSelection:()=>tt,focus:()=>Kt,getFilesFromDataTransfer:()=>Jt,getOffsetParent:()=>rt,getPhrasingContentSchema:()=>Et,getRectangleFromRange:()=>h,getScrollContainer:()=>W,insertAfter:()=>y,isEmpty:()=>R,isEntirelySelected:()=>nt,isFormElement:()=>it,isHorizontalEdge:()=>ft,isNumberInput:()=>dt,isPhrasingContent:()=>A,isRTL:()=>T,isSelectionForward:()=>O,isTextContent:()=>Zt,isTextField:()=>C,isVerticalEdge:()=>mt,placeCaretAtHorizontalEdge:()=>pt,placeCaretAtVerticalEdge:()=>gt,remove:()=>g,removeInvalidHTML:()=>Tt,replace:()=>ht,replaceTag:()=>bt,safeHTML:()=>M,unwrap:()=>w,wrap:()=>xt});var z={};B(z,{find:()=>S});function Mt(t){return[t?'[tabindex]:not([tabindex^="-"])':"[tabindex]","a[href]","button:not([disabled])",'input:not([type="hidden"]):not([disabled])',"select:not([disabled])","textarea:not([disabled])",'iframe:not([tabindex^="-"])',"object","embed","summary","area[href]","[contenteditable]:not([contenteditable=false])"].join(",")}function $(t){return t.offsetWidth>0||t.offsetHeight>0||t.getClientRects().length>0}function Vt(t){let e=t.closest("map[name]");if(!e)return!1;let r=t.ownerDocument.querySelector('img[usemap="#'+e.name+'"]');return!!r&&$(r)}function S(t,{sequential:e=!1}={}){let r=t.querySelectorAll(Mt(e));return Array.from(r).filter(o=>{if(!$(o)||o.closest("[inert]"))return!1;let{nodeName:n}=o;return n==="AREA"?Vt(o):!0})}var k={};B(k,{find:()=>jt,findNext:()=>Wt,findPrevious:()=>kt,isTabbableIndex:()=>J});function U(t){let e=t.getAttribute("tabindex");return e===null?0:parseInt(e,10)}function J(t){return U(t)!==-1}function _t(){let t={};return function(r,o){let{nodeName:n,type:i,checked:a,name:s}=o;if(n!=="INPUT"||i!=="radio"||!s)return r.concat(o);let f=t.hasOwnProperty(s);if(!(a||!f))return r;if(f){let d=t[s];r=r.filter(l=>l!==d)}return t[s]=o,r.concat(o)}}function Bt(t,e){return{element:t,index:e}}function zt(t){return t.element}function Ut(t,e){let r=U(t.element),o=U(e.element);return r===o?t.index-e.index:r-o}function j(t){return t.filter(J).map(Bt).sort(Ut).map(zt).reduce(_t(),[])}function jt(t){return j(S(t))}function kt(t){return j(S(t.ownerDocument.body)).reverse().find(e=>t.compareDocumentPosition(e)&t.DOCUMENT_POSITION_PRECEDING)}function Wt(t){return j(S(t.ownerDocument.body)).find(e=>t.compareDocumentPosition(e)&t.DOCUMENT_POSITION_FOLLOWING)}function h(t){if(!t.collapsed){let i=Array.from(t.getClientRects());if(i.length===1)return i[0];let a=i.filter(({width:l})=>l>1);if(a.length===0)return t.getBoundingClientRect();if(a.length===1)return a[0];let{top:s,bottom:f,left:u,right:d}=a[0];for(let{top:l,bottom:c,left:m,right:N}of a)lf&&(f=c),md&&(d=N);return new window.DOMRect(u,s,d-u,f-s)}let{startContainer:e}=t,{ownerDocument:r}=e;if(e.nodeName==="BR"){let{parentNode:i}=e;let a=Array.from(i.childNodes).indexOf(e);t=r.createRange(),t.setStart(i,a),t.setEnd(i,a)}let o=t.getClientRects();if(o.length>1)return null;let n=o[0];if(!n||n.height===0){let i=r.createTextNode("\u200B");t=t.cloneRange(),t.insertNode(i),n=t.getClientRects()[0],i.parentNode,i.parentNode.removeChild(i)}return n}function K(t){let e=t.getSelection();let r=e.rangeCount?e.getRangeAt(0):null;return r?h(r):null}function E(t){t.defaultView;let e=t.defaultView.getSelection();let r=e.rangeCount?e.getRangeAt(0):null;return!!r&&!r.collapsed}function b(t){return t?.nodeName==="INPUT"}function C(t){let e=["button","checkbox","hidden","file","radio","image","range","reset","submit","number","email","time"];return b(t)&&t.type&&!e.includes(t.type)||t.nodeName==="TEXTAREA"||t.contentEditable==="true"}function Q(t){if(!b(t)&&!C(t))return!1;try{let{selectionStart:e,selectionEnd:r}=t;return e===null||e!==r}catch{return!0}}function tt(t){return E(t)||!!t.activeElement&&Q(t.activeElement)}function et(t){return!!t.activeElement&&(b(t.activeElement)||C(t.activeElement)||E(t))}function p(t){return t.ownerDocument.defaultView,t.ownerDocument.defaultView.getComputedStyle(t)}function W(t,e="vertical"){if(t){if((e==="vertical"||e==="all")&&t.scrollHeight>t.clientHeight){let{overflowY:r}=p(t);if(/(auto|scroll)/.test(r))return t}if((e==="horizontal"||e==="all")&&t.scrollWidth>t.clientWidth){let{overflowX:r}=p(t);if(/(auto|scroll)/.test(r))return t}return t.ownerDocument===t.parentNode?t:W(t.parentNode,e)}}function rt(t){let e;for(;(e=t.parentNode)&&e.nodeType!==e.ELEMENT_NODE;);return e?p(e).position!=="static"?e:e.offsetParent:null}function x(t){return t.tagName==="INPUT"||t.tagName==="TEXTAREA"}var qt="\uFEFF";function nt(t){if(x(t))return t.selectionStart===0&&t.value.length===t.selectionEnd;if(!t.isContentEditable)return!0;let e=t.textContent||"";if(e===""||e===qt)return!0;let{ownerDocument:r}=t,{defaultView:o}=r;let n=o.getSelection();let i=n.rangeCount?n.getRangeAt(0):null;if(!i)return!0;let{startContainer:a,endContainer:s,startOffset:f,endOffset:u}=i;if(a===t&&s===t&&f===0&&u===t.childNodes.length)return!0;let d=t.lastChild;let l=s.nodeType===s.TEXT_NODE?s.data.length:s.childNodes.length;return ot(a,t,"firstChild")&&ot(s,t,"lastChild")&&f===0&&u===l}function ot(t,e,r){let o=e;do{if(t===o)return!0;for(o=o[r];o&&o.nodeType===o.TEXT_NODE&&o.nodeValue==="";)o=o[r==="lastChild"?"previousSibling":"nextSibling"]}while(o);return!1}function it(t){if(!t)return!1;let{tagName:e}=t;return x(t)||e==="BUTTON"||e==="SELECT"}function T(t){return p(t).direction==="rtl"}function at(t){let e=Array.from(t.getClientRects());if(!e.length)return;let r=Math.min(...e.map(({top:n})=>n));return Math.max(...e.map(({bottom:n})=>n))-r}function O(t){let{anchorNode:e,focusNode:r,anchorOffset:o,focusOffset:n}=t;let i=e.compareDocumentPosition(r);return i&e.DOCUMENT_POSITION_PRECEDING?!1:i&e.DOCUMENT_POSITION_FOLLOWING?!0:i===0?o<=n:!0}function st(t,e,r){if(t.caretRangeFromPoint)return t.caretRangeFromPoint(e,r);if(!t.caretPositionFromPoint)return null;let o=t.caretPositionFromPoint(e,r);if(!o)return null;let n=t.createRange();return n.setStart(o.offsetNode,o.offset),n.collapse(!0),n}function L(t,e,r,o){let n=o.style.zIndex,i=o.style.position,a=o.style.borderRadius,{position:s="static"}=p(o);s==="static"&&(o.style.position="relative"),o.style.zIndex="10000",o.style.borderRadius="0";let f=st(t,e,r);return o.style.zIndex=n,o.style.position=i,o.style.borderRadius=a,f}function H(t,e,r){let o=r();return(!o||!o.startContainer||!t.contains(o.startContainer))&&(t.scrollIntoView(e),o=r(),!o||!o.startContainer||!t.contains(o.startContainer))?null:o}function F(t,e,r=!1){if(x(t)&&typeof t.selectionStart=="number")return t.selectionStart!==t.selectionEnd?!1:e?t.selectionStart===0:t.value.length===t.selectionStart;if(!t.isContentEditable)return!0;let{ownerDocument:o}=t,{defaultView:n}=o;let i=n.getSelection();if(!i||!i.rangeCount)return!1;let a=i.getRangeAt(0),s=a.cloneRange(),f=O(i),u=i.isCollapsed;u||s.collapse(!f);let d=h(s),l=h(a);if(!d||!l)return!1;let c=at(a);if(!u&&c&&c>d.height&&f===e)return!1;let m=T(t)?!e:e,N=t.getBoundingClientRect(),yt=m?N.left+1:N.right-1,wt=e?N.top+1:N.bottom-1,q=H(t,e,()=>L(o,yt,wt,t));if(!q)return!1;let _=h(q);if(!_)return!1;let G=e?"top":"bottom",X=m?"left":"right",It=_[G]-l[G],St=_[X]-d[X],Y=Math.abs(It)<=1,Rt=Math.abs(St)<=1;return r?Y:Y&&Rt}function ft(t,e){return F(t,e)}var ct=Ft(ut(),1);function dt(t){return(0,ct.default)("wp.dom.isNumberInput",{since:"6.1",version:"6.5"}),b(t)&&t.type==="number"&&!isNaN(t.valueAsNumber)}function mt(t,e){return F(t,e,!0)}function Gt(t,e,r){let{ownerDocument:o}=t,n=T(t)?!e:e,i=t.getBoundingClientRect();r===void 0?r=e?i.right-1:i.left+1:r<=i.left?r=i.left+1:r>=i.right&&(r=i.right-1);let a=n?i.bottom-1:i.top+1;return L(o,r,a,t)}function P(t,e,r){if(!t)return;if(t.focus(),x(t)){if(typeof t.selectionStart!="number")return;e?(t.selectionStart=t.value.length,t.selectionEnd=t.value.length):(t.selectionStart=0,t.selectionEnd=0);return}if(!t.isContentEditable)return;let o=H(t,e,()=>Gt(t,e,r));if(!o)return;let{ownerDocument:n}=t,{defaultView:i}=n;let a=i.getSelection();a.removeAllRanges(),a.addRange(o)}function pt(t,e){return P(t,e,void 0)}function gt(t,e,r){return P(t,e,r?.left)}function y(t,e){e.parentNode,e.parentNode.insertBefore(t,e.nextSibling)}function g(t){t.parentNode,t.parentNode.removeChild(t)}function ht(t,e){t.parentNode,y(e,t.parentNode),g(t)}function w(t){let e=t.parentNode;for(;t.firstChild;)e.insertBefore(t.firstChild,t);e.removeChild(t)}function bt(t,e){let r=t.ownerDocument.createElement(e);for(;t.firstChild;)r.appendChild(t.firstChild);return t.parentNode,t.parentNode.replaceChild(r,t),r}function xt(t,e){e.parentNode,e.parentNode.insertBefore(t,e),t.appendChild(e)}function M(t){let{body:e}=document.implementation.createHTMLDocument("");e.innerHTML=t;let r=e.getElementsByTagName("*"),o=r.length;for(;o--;){let n=r[o];if(n.tagName==="SCRIPT")g(n);else{let i=n.attributes.length;for(;i--;){let{name:a}=n.attributes[i];a.startsWith("on")&&n.removeAttribute(a)}}}return e.innerHTML}function Nt(t){t=M(t);let e=document.implementation.createHTMLDocument("");return e.body.innerHTML=t,e.body.textContent||""}function R(t){switch(t.nodeType){case t.TEXT_NODE:return/^[ \f\n\r\t\v\u00a0]*$/.test(t.nodeValue||"");case t.ELEMENT_NODE:return t.hasAttributes()?!1:t.hasChildNodes()?Array.from(t.childNodes).every(R):!0;default:return!0}}var D={strong:{},em:{},s:{},del:{},ins:{},a:{attributes:["href","target","rel","id"]},code:{},abbr:{attributes:["title"]},sub:{},sup:{},br:{},small:{},q:{attributes:["cite"]},dfn:{attributes:["title"]},data:{attributes:["value"]},time:{attributes:["datetime"]},var:{},samp:{},kbd:{},i:{},b:{},u:{},mark:{},ruby:{},rt:{},rp:{},bdi:{attributes:["dir"]},bdo:{attributes:["dir"]},wbr:{},"#text":{}},Xt=["#text","br"];Object.keys(D).filter(t=>!Xt.includes(t)).forEach(t=>{let{[t]:e,...r}=D;D[t].children=r});var Yt={audio:{attributes:["src","preload","autoplay","mediagroup","loop","muted"]},canvas:{attributes:["width","height"]},embed:{attributes:["src","type","width","height"]},img:{attributes:["alt","src","srcset","usemap","ismap","width","height"]},object:{attributes:["data","type","name","usemap","form","width","height"]},video:{attributes:["src","poster","preload","playsinline","autoplay","mediagroup","loop","muted","controls","width","height"]},math:{attributes:["display","xmlns"],children:"*"}},V={...D,...Yt};function Et(t){if(t!=="paste")return V;let{u:e,abbr:r,data:o,time:n,wbr:i,bdi:a,bdo:s,...f}={...V,ins:{children:V.ins.children},del:{children:V.del.children}};return f}function A(t){let e=t.nodeName.toLowerCase();return Et().hasOwnProperty(e)||e==="span"}function Zt(t){let e=t.nodeName.toLowerCase();return D.hasOwnProperty(e)||e==="span"}function Ct(t){return!!t&&t.nodeType===t.ELEMENT_NODE}var $t=()=>{};function I(t,e,r,o){Array.from(t).forEach(n=>{let i=n.nodeName.toLowerCase();if(r.hasOwnProperty(i)&&(!r[i].isMatch||r[i].isMatch?.(n))){if(Ct(n)){let{attributes:a=[],classes:s=[],children:f,require:u=[],allowEmpty:d}=r[i];if(f&&!d&&R(n)){g(n);return}if(n.hasAttributes()&&(Array.from(n.attributes).forEach(({name:l})=>{l!=="class"&&!a.includes(l)&&n.removeAttribute(l)}),n.classList&&n.classList.length)){let l=s.map(c=>c==="*"?()=>!0:typeof c=="string"?m=>m===c:c instanceof RegExp?m=>c.test(m):$t);Array.from(n.classList).forEach(c=>{l.some(m=>m(c))||n.classList.remove(c)}),n.classList.length||n.removeAttribute("class")}if(n.hasChildNodes()){if(f==="*")return;if(f)u.length&&!n.querySelector(u.join(","))?(I(n.childNodes,e,r,o),w(n)):n.parentNode&&n.parentNode.nodeName==="BODY"&&A(n)?(I(n.childNodes,e,r,o),Array.from(n.childNodes).some(l=>!A(l))&&w(n)):I(n.childNodes,e,f,o);else for(;n.firstChild;)g(n.firstChild)}}}else I(n.childNodes,e,r,o),o&&!A(n)&&n.nextElementSibling&&y(e.createElement("br"),n),w(n)})}function Tt(t,e,r){let o=document.implementation.createHTMLDocument("");return o.body.innerHTML=t,I(o.body.childNodes,o,e,r),o.body.innerHTML}function Jt(t){let e=Array.from(t.files);return Array.from(t.items).forEach(r=>{let o=r.getAsFile();o&&!e.find(({name:n,type:i,size:a})=>n===o.name&&i===o.type&&a===o.size)&&e.push(o)}),e}var Kt={focusable:z,tabbable:k};return Pt(Qt);})(); dist/data-controls.js000064400000010206152375074240010627 0ustar00"use strict"; var wp; (wp ||= {}).dataControls = (() => { var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // package-external:@wordpress/api-fetch var require_api_fetch = __commonJS({ "package-external:@wordpress/api-fetch"(exports, module) { module.exports = window.wp.apiFetch; } }); // package-external:@wordpress/data var require_data = __commonJS({ "package-external:@wordpress/data"(exports, module) { module.exports = window.wp.data; } }); // package-external:@wordpress/deprecated var require_deprecated = __commonJS({ "package-external:@wordpress/deprecated"(exports, module) { module.exports = window.wp.deprecated; } }); // packages/data-controls/build-module/index.mjs var index_exports = {}; __export(index_exports, { __unstableAwaitPromise: () => __unstableAwaitPromise, apiFetch: () => apiFetch, controls: () => controls, dispatch: () => dispatch, select: () => select, syncSelect: () => syncSelect }); var import_api_fetch = __toESM(require_api_fetch(), 1); var import_data = __toESM(require_data(), 1); var import_deprecated = __toESM(require_deprecated(), 1); function apiFetch(request) { return { type: "API_FETCH", request }; } function select(storeNameOrDescriptor, selectorName, ...args) { (0, import_deprecated.default)("`select` control in `@wordpress/data-controls`", { since: "5.7", alternative: "built-in `resolveSelect` control in `@wordpress/data`" }); return import_data.controls.resolveSelect( storeNameOrDescriptor, selectorName, ...args ); } function syncSelect(storeNameOrDescriptor, selectorName, ...args) { (0, import_deprecated.default)("`syncSelect` control in `@wordpress/data-controls`", { since: "5.7", alternative: "built-in `select` control in `@wordpress/data`" }); return import_data.controls.select(storeNameOrDescriptor, selectorName, ...args); } function dispatch(storeNameOrDescriptor, actionName, ...args) { (0, import_deprecated.default)("`dispatch` control in `@wordpress/data-controls`", { since: "5.7", alternative: "built-in `dispatch` control in `@wordpress/data`" }); return import_data.controls.dispatch(storeNameOrDescriptor, actionName, ...args); } var __unstableAwaitPromise = function(promise) { return { type: "AWAIT_PROMISE", promise }; }; var controls = { AWAIT_PROMISE({ promise }) { return promise; }, API_FETCH({ request }) { return (0, import_api_fetch.default)(request); } }; return __toCommonJS(index_exports); })(); dist/dom.js000064400000105165152375074240006645 0ustar00"use strict"; var wp; (wp ||= {}).dom = (() => { var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // package-external:@wordpress/deprecated var require_deprecated = __commonJS({ "package-external:@wordpress/deprecated"(exports, module) { module.exports = window.wp.deprecated; } }); // packages/dom/build-module/index.mjs var index_exports = {}; __export(index_exports, { __unstableStripHTML: () => stripHTML, computeCaretRect: () => computeCaretRect, documentHasSelection: () => documentHasSelection, documentHasTextSelection: () => documentHasTextSelection, documentHasUncollapsedSelection: () => documentHasUncollapsedSelection, focus: () => focus, getFilesFromDataTransfer: () => getFilesFromDataTransfer, getOffsetParent: () => getOffsetParent, getPhrasingContentSchema: () => getPhrasingContentSchema, getRectangleFromRange: () => getRectangleFromRange, getScrollContainer: () => getScrollContainer, insertAfter: () => insertAfter, isEmpty: () => isEmpty, isEntirelySelected: () => isEntirelySelected, isFormElement: () => isFormElement, isHorizontalEdge: () => isHorizontalEdge, isNumberInput: () => isNumberInput, isPhrasingContent: () => isPhrasingContent, isRTL: () => isRTL, isSelectionForward: () => isSelectionForward, isTextContent: () => isTextContent, isTextField: () => isTextField, isVerticalEdge: () => isVerticalEdge, placeCaretAtHorizontalEdge: () => placeCaretAtHorizontalEdge, placeCaretAtVerticalEdge: () => placeCaretAtVerticalEdge, remove: () => remove, removeInvalidHTML: () => removeInvalidHTML, replace: () => replace, replaceTag: () => replaceTag, safeHTML: () => safeHTML, unwrap: () => unwrap, wrap: () => wrap }); // packages/dom/build-module/focusable.mjs var focusable_exports = {}; __export(focusable_exports, { find: () => find }); function buildSelector(sequential) { return [ sequential ? '[tabindex]:not([tabindex^="-"])' : "[tabindex]", "a[href]", "button:not([disabled])", 'input:not([type="hidden"]):not([disabled])', "select:not([disabled])", "textarea:not([disabled])", 'iframe:not([tabindex^="-"])', "object", "embed", "summary", "area[href]", "[contenteditable]:not([contenteditable=false])" ].join(","); } function isVisible(element) { return element.offsetWidth > 0 || element.offsetHeight > 0 || element.getClientRects().length > 0; } function isValidFocusableArea(element) { const map = element.closest("map[name]"); if (!map) { return false; } const img = element.ownerDocument.querySelector( 'img[usemap="#' + map.name + '"]' ); return !!img && isVisible(img); } function find(context, { sequential = false } = {}) { const elements = context.querySelectorAll(buildSelector(sequential)); return Array.from(elements).filter((element) => { if (!isVisible(element)) { return false; } if (element.closest("[inert]")) { return false; } const { nodeName } = element; if ("AREA" === nodeName) { return isValidFocusableArea( /** @type {HTMLAreaElement} */ element ); } return true; }); } // packages/dom/build-module/tabbable.mjs var tabbable_exports = {}; __export(tabbable_exports, { find: () => find2, findNext: () => findNext, findPrevious: () => findPrevious, isTabbableIndex: () => isTabbableIndex }); function getTabIndex(element) { const tabIndex = element.getAttribute("tabindex"); return tabIndex === null ? 0 : parseInt(tabIndex, 10); } function isTabbableIndex(element) { return getTabIndex(element) !== -1; } function createStatefulCollapseRadioGroup() { const CHOSEN_RADIO_BY_NAME = {}; return function collapseRadioGroup(result, element) { const { nodeName, type, checked, name } = element; if (nodeName !== "INPUT" || type !== "radio" || !name) { return result.concat(element); } const hasChosen = CHOSEN_RADIO_BY_NAME.hasOwnProperty(name); const isChosen = checked || !hasChosen; if (!isChosen) { return result; } if (hasChosen) { const hadChosenElement = CHOSEN_RADIO_BY_NAME[name]; result = result.filter((e) => e !== hadChosenElement); } CHOSEN_RADIO_BY_NAME[name] = element; return result.concat(element); }; } function mapElementToObjectTabbable(element, index) { return { element, index }; } function mapObjectTabbableToElement(object) { return object.element; } function compareObjectTabbables(a, b) { const aTabIndex = getTabIndex(a.element); const bTabIndex = getTabIndex(b.element); if (aTabIndex === bTabIndex) { return a.index - b.index; } return aTabIndex - bTabIndex; } function filterTabbable(focusables) { return focusables.filter(isTabbableIndex).map(mapElementToObjectTabbable).sort(compareObjectTabbables).map(mapObjectTabbableToElement).reduce(createStatefulCollapseRadioGroup(), []); } function find2(context) { return filterTabbable(find(context)); } function findPrevious(element) { return filterTabbable(find(element.ownerDocument.body)).reverse().find( (focusable) => ( // eslint-disable-next-line no-bitwise element.compareDocumentPosition(focusable) & element.DOCUMENT_POSITION_PRECEDING ) ); } function findNext(element) { return filterTabbable(find(element.ownerDocument.body)).find( (focusable) => ( // eslint-disable-next-line no-bitwise element.compareDocumentPosition(focusable) & element.DOCUMENT_POSITION_FOLLOWING ) ); } // packages/dom/build-module/utils/assert-is-defined.mjs function assertIsDefined(val, name) { if (val === void 0 || val === null) { throw new Error( `Expected '${name}' to be defined, but received ${val}` ); } } // packages/dom/build-module/dom/get-rectangle-from-range.mjs function getRectangleFromRange(range) { if (!range.collapsed) { const rects2 = Array.from(range.getClientRects()); if (rects2.length === 1) { return rects2[0]; } const filteredRects = rects2.filter(({ width }) => width > 1); if (filteredRects.length === 0) { return range.getBoundingClientRect(); } if (filteredRects.length === 1) { return filteredRects[0]; } let { top: furthestTop, bottom: furthestBottom, left: furthestLeft, right: furthestRight } = filteredRects[0]; for (const { top, bottom, left, right } of filteredRects) { if (top < furthestTop) { furthestTop = top; } if (bottom > furthestBottom) { furthestBottom = bottom; } if (left < furthestLeft) { furthestLeft = left; } if (right > furthestRight) { furthestRight = right; } } return new window.DOMRect( furthestLeft, furthestTop, furthestRight - furthestLeft, furthestBottom - furthestTop ); } const { startContainer } = range; const { ownerDocument } = startContainer; if (startContainer.nodeName === "BR") { const { parentNode } = startContainer; assertIsDefined(parentNode, "parentNode"); const index = ( /** @type {Node[]} */ Array.from(parentNode.childNodes).indexOf(startContainer) ); assertIsDefined(ownerDocument, "ownerDocument"); range = ownerDocument.createRange(); range.setStart(parentNode, index); range.setEnd(parentNode, index); } const rects = range.getClientRects(); if (rects.length > 1) { return null; } let rect = rects[0]; if (!rect || rect.height === 0) { assertIsDefined(ownerDocument, "ownerDocument"); const padNode = ownerDocument.createTextNode("\u200B"); range = range.cloneRange(); range.insertNode(padNode); rect = range.getClientRects()[0]; assertIsDefined(padNode.parentNode, "padNode.parentNode"); padNode.parentNode.removeChild(padNode); } return rect; } // packages/dom/build-module/dom/compute-caret-rect.mjs function computeCaretRect(win) { const selection = win.getSelection(); assertIsDefined(selection, "selection"); const range = selection.rangeCount ? selection.getRangeAt(0) : null; if (!range) { return null; } return getRectangleFromRange(range); } // packages/dom/build-module/dom/document-has-text-selection.mjs function documentHasTextSelection(doc) { assertIsDefined(doc.defaultView, "doc.defaultView"); const selection = doc.defaultView.getSelection(); assertIsDefined(selection, "selection"); const range = selection.rangeCount ? selection.getRangeAt(0) : null; return !!range && !range.collapsed; } // packages/dom/build-module/dom/is-html-input-element.mjs function isHTMLInputElement(node) { return node?.nodeName === "INPUT"; } // packages/dom/build-module/dom/is-text-field.mjs function isTextField(node) { const nonTextInputs = [ "button", "checkbox", "hidden", "file", "radio", "image", "range", "reset", "submit", "number", "email", "time" ]; return isHTMLInputElement(node) && node.type && !nonTextInputs.includes(node.type) || node.nodeName === "TEXTAREA" || /** @type {HTMLElement} */ node.contentEditable === "true"; } // packages/dom/build-module/dom/input-field-has-uncollapsed-selection.mjs function inputFieldHasUncollapsedSelection(element) { if (!isHTMLInputElement(element) && !isTextField(element)) { return false; } try { const { selectionStart, selectionEnd } = ( /** @type {HTMLInputElement | HTMLTextAreaElement} */ element ); return ( // `null` means the input type doesn't implement selection, thus we // cannot determine whether the selection is collapsed, so we // default to true. selectionStart === null || // when not null, compare the two points selectionStart !== selectionEnd ); } catch (error) { return true; } } // packages/dom/build-module/dom/document-has-uncollapsed-selection.mjs function documentHasUncollapsedSelection(doc) { return documentHasTextSelection(doc) || !!doc.activeElement && inputFieldHasUncollapsedSelection(doc.activeElement); } // packages/dom/build-module/dom/document-has-selection.mjs function documentHasSelection(doc) { return !!doc.activeElement && (isHTMLInputElement(doc.activeElement) || isTextField(doc.activeElement) || documentHasTextSelection(doc)); } // packages/dom/build-module/dom/get-computed-style.mjs function getComputedStyle(element) { assertIsDefined( element.ownerDocument.defaultView, "element.ownerDocument.defaultView" ); return element.ownerDocument.defaultView.getComputedStyle(element); } // packages/dom/build-module/dom/get-scroll-container.mjs function getScrollContainer(node, direction = "vertical") { if (!node) { return void 0; } if (direction === "vertical" || direction === "all") { if (node.scrollHeight > node.clientHeight) { const { overflowY } = getComputedStyle(node); if (/(auto|scroll)/.test(overflowY)) { return node; } } } if (direction === "horizontal" || direction === "all") { if (node.scrollWidth > node.clientWidth) { const { overflowX } = getComputedStyle(node); if (/(auto|scroll)/.test(overflowX)) { return node; } } } if (node.ownerDocument === node.parentNode) { return node; } return getScrollContainer( /** @type {Element} */ node.parentNode, direction ); } // packages/dom/build-module/dom/get-offset-parent.mjs function getOffsetParent(node) { let closestElement; while (closestElement = /** @type {Node} */ node.parentNode) { if (closestElement.nodeType === closestElement.ELEMENT_NODE) { break; } } if (!closestElement) { return null; } if (getComputedStyle( /** @type {Element} */ closestElement ).position !== "static") { return closestElement; } return ( /** @type {Node & { offsetParent: Node }} */ closestElement.offsetParent ); } // packages/dom/build-module/dom/is-input-or-text-area.mjs function isInputOrTextArea(element) { return element.tagName === "INPUT" || element.tagName === "TEXTAREA"; } // packages/dom/build-module/dom/is-entirely-selected.mjs var ZWNBSP = "\uFEFF"; function isEntirelySelected(element) { if (isInputOrTextArea(element)) { return element.selectionStart === 0 && element.value.length === element.selectionEnd; } if (!element.isContentEditable) { return true; } const text = element.textContent || ""; if (text === "" || text === ZWNBSP) { return true; } const { ownerDocument } = element; const { defaultView } = ownerDocument; assertIsDefined(defaultView, "defaultView"); const selection = defaultView.getSelection(); assertIsDefined(selection, "selection"); const range = selection.rangeCount ? selection.getRangeAt(0) : null; if (!range) { return true; } const { startContainer, endContainer, startOffset, endOffset } = range; if (startContainer === element && endContainer === element && startOffset === 0 && endOffset === element.childNodes.length) { return true; } const lastChild = element.lastChild; assertIsDefined(lastChild, "lastChild"); const endContainerContentLength = endContainer.nodeType === endContainer.TEXT_NODE ? ( /** @type {Text} */ endContainer.data.length ) : endContainer.childNodes.length; return isDeepChild(startContainer, element, "firstChild") && isDeepChild(endContainer, element, "lastChild") && startOffset === 0 && endOffset === endContainerContentLength; } function isDeepChild(query, container, propName) { let candidate = container; do { if (query === candidate) { return true; } candidate = candidate[propName]; while (candidate && candidate.nodeType === candidate.TEXT_NODE && candidate.nodeValue === "") { candidate = candidate[propName === "lastChild" ? "previousSibling" : "nextSibling"]; } } while (candidate); return false; } // packages/dom/build-module/dom/is-form-element.mjs function isFormElement(element) { if (!element) { return false; } const { tagName } = element; const checkForInputTextarea = isInputOrTextArea(element); return checkForInputTextarea || tagName === "BUTTON" || tagName === "SELECT"; } // packages/dom/build-module/dom/is-rtl.mjs function isRTL(element) { return getComputedStyle(element).direction === "rtl"; } // packages/dom/build-module/dom/get-range-height.mjs function getRangeHeight(range) { const rects = Array.from(range.getClientRects()); if (!rects.length) { return; } const highestTop = Math.min(...rects.map(({ top }) => top)); const lowestBottom = Math.max(...rects.map(({ bottom }) => bottom)); return lowestBottom - highestTop; } // packages/dom/build-module/dom/is-selection-forward.mjs function isSelectionForward(selection) { const { anchorNode, focusNode, anchorOffset, focusOffset } = selection; assertIsDefined(anchorNode, "anchorNode"); assertIsDefined(focusNode, "focusNode"); const position = anchorNode.compareDocumentPosition(focusNode); if (position & anchorNode.DOCUMENT_POSITION_PRECEDING) { return false; } if (position & anchorNode.DOCUMENT_POSITION_FOLLOWING) { return true; } if (position === 0) { return anchorOffset <= focusOffset; } return true; } // packages/dom/build-module/dom/caret-range-from-point.mjs function caretRangeFromPoint(doc, x, y) { if (doc.caretRangeFromPoint) { return doc.caretRangeFromPoint(x, y); } if (!doc.caretPositionFromPoint) { return null; } const point = doc.caretPositionFromPoint(x, y); if (!point) { return null; } const range = doc.createRange(); range.setStart(point.offsetNode, point.offset); range.collapse(true); return range; } // packages/dom/build-module/dom/hidden-caret-range-from-point.mjs function hiddenCaretRangeFromPoint(doc, x, y, container) { const originalZIndex = container.style.zIndex; const originalPosition = container.style.position; const originalBorderRadius = container.style.borderRadius; const { position = "static" } = getComputedStyle(container); if (position === "static") { container.style.position = "relative"; } container.style.zIndex = "10000"; container.style.borderRadius = "0"; const range = caretRangeFromPoint(doc, x, y); container.style.zIndex = originalZIndex; container.style.position = originalPosition; container.style.borderRadius = originalBorderRadius; return range; } // packages/dom/build-module/dom/scroll-if-no-range.mjs function scrollIfNoRange(container, alignToTop, callback) { let range = callback(); if (!range || !range.startContainer || !container.contains(range.startContainer)) { container.scrollIntoView(alignToTop); range = callback(); if (!range || !range.startContainer || !container.contains(range.startContainer)) { return null; } } return range; } // packages/dom/build-module/dom/is-edge.mjs function isEdge(container, isReverse, onlyVertical = false) { if (isInputOrTextArea(container) && typeof container.selectionStart === "number") { if (container.selectionStart !== container.selectionEnd) { return false; } if (isReverse) { return container.selectionStart === 0; } return container.value.length === container.selectionStart; } if (!container.isContentEditable) { return true; } const { ownerDocument } = container; const { defaultView } = ownerDocument; assertIsDefined(defaultView, "defaultView"); const selection = defaultView.getSelection(); if (!selection || !selection.rangeCount) { return false; } const range = selection.getRangeAt(0); const collapsedRange = range.cloneRange(); const isForward = isSelectionForward(selection); const isCollapsed = selection.isCollapsed; if (!isCollapsed) { collapsedRange.collapse(!isForward); } const collapsedRangeRect = getRectangleFromRange(collapsedRange); const rangeRect = getRectangleFromRange(range); if (!collapsedRangeRect || !rangeRect) { return false; } const rangeHeight = getRangeHeight(range); if (!isCollapsed && rangeHeight && rangeHeight > collapsedRangeRect.height && isForward === isReverse) { return false; } const isReverseDir = isRTL(container) ? !isReverse : isReverse; const containerRect = container.getBoundingClientRect(); const x = isReverseDir ? containerRect.left + 1 : containerRect.right - 1; const y = isReverse ? containerRect.top + 1 : containerRect.bottom - 1; const testRange = scrollIfNoRange( container, isReverse, () => hiddenCaretRangeFromPoint(ownerDocument, x, y, container) ); if (!testRange) { return false; } const testRect = getRectangleFromRange(testRange); if (!testRect) { return false; } const verticalSide = isReverse ? "top" : "bottom"; const horizontalSide = isReverseDir ? "left" : "right"; const verticalDiff = testRect[verticalSide] - rangeRect[verticalSide]; const horizontalDiff = testRect[horizontalSide] - collapsedRangeRect[horizontalSide]; const hasVerticalDiff = Math.abs(verticalDiff) <= 1; const hasHorizontalDiff = Math.abs(horizontalDiff) <= 1; return onlyVertical ? hasVerticalDiff : hasVerticalDiff && hasHorizontalDiff; } // packages/dom/build-module/dom/is-horizontal-edge.mjs function isHorizontalEdge(container, isReverse) { return isEdge(container, isReverse); } // packages/dom/build-module/dom/is-number-input.mjs var import_deprecated = __toESM(require_deprecated(), 1); function isNumberInput(node) { (0, import_deprecated.default)("wp.dom.isNumberInput", { since: "6.1", version: "6.5" }); return isHTMLInputElement(node) && node.type === "number" && !isNaN(node.valueAsNumber); } // packages/dom/build-module/dom/is-vertical-edge.mjs function isVerticalEdge(container, isReverse) { return isEdge(container, isReverse, true); } // packages/dom/build-module/dom/place-caret-at-edge.mjs function getRange(container, isReverse, x) { const { ownerDocument } = container; const isReverseDir = isRTL(container) ? !isReverse : isReverse; const containerRect = container.getBoundingClientRect(); if (x === void 0) { x = isReverse ? containerRect.right - 1 : containerRect.left + 1; } else if (x <= containerRect.left) { x = containerRect.left + 1; } else if (x >= containerRect.right) { x = containerRect.right - 1; } const y = isReverseDir ? containerRect.bottom - 1 : containerRect.top + 1; return hiddenCaretRangeFromPoint(ownerDocument, x, y, container); } function placeCaretAtEdge(container, isReverse, x) { if (!container) { return; } container.focus(); if (isInputOrTextArea(container)) { if (typeof container.selectionStart !== "number") { return; } if (isReverse) { container.selectionStart = container.value.length; container.selectionEnd = container.value.length; } else { container.selectionStart = 0; container.selectionEnd = 0; } return; } if (!container.isContentEditable) { return; } const range = scrollIfNoRange( container, isReverse, () => getRange(container, isReverse, x) ); if (!range) { return; } const { ownerDocument } = container; const { defaultView } = ownerDocument; assertIsDefined(defaultView, "defaultView"); const selection = defaultView.getSelection(); assertIsDefined(selection, "selection"); selection.removeAllRanges(); selection.addRange(range); } // packages/dom/build-module/dom/place-caret-at-horizontal-edge.mjs function placeCaretAtHorizontalEdge(container, isReverse) { return placeCaretAtEdge(container, isReverse, void 0); } // packages/dom/build-module/dom/place-caret-at-vertical-edge.mjs function placeCaretAtVerticalEdge(container, isReverse, rect) { return placeCaretAtEdge(container, isReverse, rect?.left); } // packages/dom/build-module/dom/insert-after.mjs function insertAfter(newNode, referenceNode) { assertIsDefined(referenceNode.parentNode, "referenceNode.parentNode"); referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling); } // packages/dom/build-module/dom/remove.mjs function remove(node) { assertIsDefined(node.parentNode, "node.parentNode"); node.parentNode.removeChild(node); } // packages/dom/build-module/dom/replace.mjs function replace(processedNode, newNode) { assertIsDefined(processedNode.parentNode, "processedNode.parentNode"); insertAfter(newNode, processedNode.parentNode); remove(processedNode); } // packages/dom/build-module/dom/unwrap.mjs function unwrap(node) { const parent = node.parentNode; assertIsDefined(parent, "node.parentNode"); while (node.firstChild) { parent.insertBefore(node.firstChild, node); } parent.removeChild(node); } // packages/dom/build-module/dom/replace-tag.mjs function replaceTag(node, tagName) { const newNode = node.ownerDocument.createElement(tagName); while (node.firstChild) { newNode.appendChild(node.firstChild); } assertIsDefined(node.parentNode, "node.parentNode"); node.parentNode.replaceChild(newNode, node); return newNode; } // packages/dom/build-module/dom/wrap.mjs function wrap(newNode, referenceNode) { assertIsDefined(referenceNode.parentNode, "referenceNode.parentNode"); referenceNode.parentNode.insertBefore(newNode, referenceNode); newNode.appendChild(referenceNode); } // packages/dom/build-module/dom/safe-html.mjs function safeHTML(html) { const { body } = document.implementation.createHTMLDocument(""); body.innerHTML = html; const elements = body.getElementsByTagName("*"); let elementIndex = elements.length; while (elementIndex--) { const element = elements[elementIndex]; if (element.tagName === "SCRIPT") { remove(element); } else { let attributeIndex = element.attributes.length; while (attributeIndex--) { const { name: key } = element.attributes[attributeIndex]; if (key.startsWith("on")) { element.removeAttribute(key); } } } } return body.innerHTML; } // packages/dom/build-module/dom/strip-html.mjs function stripHTML(html) { html = safeHTML(html); const doc = document.implementation.createHTMLDocument(""); doc.body.innerHTML = html; return doc.body.textContent || ""; } // packages/dom/build-module/dom/is-empty.mjs function isEmpty(element) { switch (element.nodeType) { case element.TEXT_NODE: return /^[ \f\n\r\t\v\u00a0]*$/.test(element.nodeValue || ""); case element.ELEMENT_NODE: if (element.hasAttributes()) { return false; } else if (!element.hasChildNodes()) { return true; } return ( /** @type {Element[]} */ Array.from(element.childNodes).every(isEmpty) ); default: return true; } } // packages/dom/build-module/phrasing-content.mjs var textContentSchema = { strong: {}, em: {}, s: {}, del: {}, ins: {}, a: { attributes: ["href", "target", "rel", "id"] }, code: {}, abbr: { attributes: ["title"] }, sub: {}, sup: {}, br: {}, small: {}, // To do: fix blockquote. // cite: {}, q: { attributes: ["cite"] }, dfn: { attributes: ["title"] }, data: { attributes: ["value"] }, time: { attributes: ["datetime"] }, var: {}, samp: {}, kbd: {}, i: {}, b: {}, u: {}, mark: {}, ruby: {}, rt: {}, rp: {}, bdi: { attributes: ["dir"] }, bdo: { attributes: ["dir"] }, wbr: {}, "#text": {} }; var excludedElements = ["#text", "br"]; Object.keys(textContentSchema).filter((element) => !excludedElements.includes(element)).forEach((tag) => { const { [tag]: removedTag, ...restSchema } = textContentSchema; textContentSchema[tag].children = restSchema; }); var embeddedContentSchema = { audio: { attributes: [ "src", "preload", "autoplay", "mediagroup", "loop", "muted" ] }, canvas: { attributes: ["width", "height"] }, embed: { attributes: ["src", "type", "width", "height"] }, img: { attributes: [ "alt", "src", "srcset", "usemap", "ismap", "width", "height" ] }, object: { attributes: [ "data", "type", "name", "usemap", "form", "width", "height" ] }, video: { attributes: [ "src", "poster", "preload", "playsinline", "autoplay", "mediagroup", "loop", "muted", "controls", "width", "height" ] }, math: { attributes: ["display", "xmlns"], children: "*" } }; var phrasingContentSchema = { ...textContentSchema, ...embeddedContentSchema }; function getPhrasingContentSchema(context) { if (context !== "paste") { return phrasingContentSchema; } const { u, // Used to mark misspelling. Shouldn't be pasted. abbr, // Invisible. data, // Invisible. time, // Invisible. wbr, // Invisible. bdi, // Invisible. bdo, // Invisible. ...remainingContentSchema } = { ...phrasingContentSchema, // We shouldn't paste potentially sensitive information which is not // visible to the user when pasted, so strip the attributes. ins: { children: phrasingContentSchema.ins.children }, del: { children: phrasingContentSchema.del.children } }; return remainingContentSchema; } function isPhrasingContent(node) { const tag = node.nodeName.toLowerCase(); return getPhrasingContentSchema().hasOwnProperty(tag) || tag === "span"; } function isTextContent(node) { const tag = node.nodeName.toLowerCase(); return textContentSchema.hasOwnProperty(tag) || tag === "span"; } // packages/dom/build-module/dom/is-element.mjs function isElement(node) { return !!node && node.nodeType === node.ELEMENT_NODE; } // packages/dom/build-module/dom/clean-node-list.mjs var noop = () => { }; function cleanNodeList(nodeList, doc, schema, inline) { Array.from(nodeList).forEach( (node) => { const tag = node.nodeName.toLowerCase(); if (schema.hasOwnProperty(tag) && (!schema[tag].isMatch || schema[tag].isMatch?.(node))) { if (isElement(node)) { const { attributes = [], classes = [], children, require: require2 = [], allowEmpty } = schema[tag]; if (children && !allowEmpty && isEmpty(node)) { remove(node); return; } if (node.hasAttributes()) { Array.from(node.attributes).forEach(({ name }) => { if (name !== "class" && !attributes.includes(name)) { node.removeAttribute(name); } }); if (node.classList && node.classList.length) { const mattchers = classes.map((item) => { if (item === "*") { return () => true; } else if (typeof item === "string") { return (className) => className === item; } else if (item instanceof RegExp) { return (className) => item.test(className); } return noop; }); Array.from(node.classList).forEach((name) => { if (!mattchers.some( (isMatch) => isMatch(name) )) { node.classList.remove(name); } }); if (!node.classList.length) { node.removeAttribute("class"); } } } if (node.hasChildNodes()) { if (children === "*") { return; } if (children) { if (require2.length && !node.querySelector(require2.join(","))) { cleanNodeList( node.childNodes, doc, schema, inline ); unwrap(node); } else if (node.parentNode && node.parentNode.nodeName === "BODY" && isPhrasingContent(node)) { cleanNodeList( node.childNodes, doc, schema, inline ); if (Array.from(node.childNodes).some( (child) => !isPhrasingContent(child) )) { unwrap(node); } } else { cleanNodeList( node.childNodes, doc, children, inline ); } } else { while (node.firstChild) { remove(node.firstChild); } } } } } else { cleanNodeList(node.childNodes, doc, schema, inline); if (inline && !isPhrasingContent(node) && node.nextElementSibling) { insertAfter(doc.createElement("br"), node); } unwrap(node); } } ); } // packages/dom/build-module/dom/remove-invalid-html.mjs function removeInvalidHTML(HTML, schema, inline) { const doc = document.implementation.createHTMLDocument(""); doc.body.innerHTML = HTML; cleanNodeList(doc.body.childNodes, doc, schema, inline); return doc.body.innerHTML; } // packages/dom/build-module/data-transfer.mjs function getFilesFromDataTransfer(dataTransfer) { const files = Array.from(dataTransfer.files); Array.from(dataTransfer.items).forEach((item) => { const file = item.getAsFile(); if (file && !files.find( ({ name, type, size }) => name === file.name && type === file.type && size === file.size )) { files.push(file); } }); return files; } // packages/dom/build-module/index.mjs var focus = { focusable: focusable_exports, tabbable: tabbable_exports }; return __toCommonJS(index_exports); })(); dist/block-serialization-default-parser.js000064400000015047152375074240014746 0ustar00"use strict"; var wp; (wp ||= {}).blockSerializationDefaultParser = (() => { var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // packages/block-serialization-default-parser/build-module/index.mjs var index_exports = {}; __export(index_exports, { parse: () => parse }); var document; var offset; var output; var stack; var tokenizer = /)[^])*)\5|[^]*?)}\s+)?(\/)?-->/g; function Block(blockName, attrs, innerBlocks, innerHTML, innerContent) { return { blockName, attrs, innerBlocks, innerHTML, innerContent }; } function Freeform(innerHTML) { return Block(null, {}, [], innerHTML, [innerHTML]); } function Frame(block, tokenStart, tokenLength, prevOffset, leadingHtmlStart) { return { block, tokenStart, tokenLength, prevOffset: prevOffset || tokenStart + tokenLength, leadingHtmlStart }; } var parse = (doc) => { document = doc; offset = 0; output = []; stack = []; tokenizer.lastIndex = 0; do { } while (proceed()); return output; }; function proceed() { const stackDepth = stack.length; const next = nextToken(); const [tokenType, blockName, attrs, startOffset, tokenLength] = next; const leadingHtmlStart = startOffset > offset ? offset : null; switch (tokenType) { case "no-more-tokens": if (0 === stackDepth) { addFreeform(); return false; } if (1 === stackDepth) { addBlockFromStack(); return false; } while (0 < stack.length) { addBlockFromStack(); } return false; case "void-block": if (0 === stackDepth) { if (null !== leadingHtmlStart) { output.push( Freeform( document.substr( leadingHtmlStart, startOffset - leadingHtmlStart ) ) ); } output.push(Block(blockName, attrs, [], "", [])); offset = startOffset + tokenLength; return true; } addInnerBlock( Block(blockName, attrs, [], "", []), startOffset, tokenLength ); offset = startOffset + tokenLength; return true; case "block-opener": stack.push( Frame( Block(blockName, attrs, [], "", []), startOffset, tokenLength, startOffset + tokenLength, leadingHtmlStart ) ); offset = startOffset + tokenLength; return true; case "block-closer": if (0 === stackDepth) { addFreeform(); return false; } if (1 === stackDepth) { addBlockFromStack(startOffset); offset = startOffset + tokenLength; return true; } const stackTop = stack.pop(); const html = document.substr( stackTop.prevOffset, startOffset - stackTop.prevOffset ); stackTop.block.innerHTML += html; stackTop.block.innerContent.push(html); stackTop.prevOffset = startOffset + tokenLength; addInnerBlock( stackTop.block, stackTop.tokenStart, stackTop.tokenLength, startOffset + tokenLength ); offset = startOffset + tokenLength; return true; default: addFreeform(); return false; } } function parseJSON(input) { try { return JSON.parse(input); } catch (e) { return null; } } function nextToken() { const matches = tokenizer.exec(document); if (null === matches) { return ["no-more-tokens", "", null, 0, 0]; } const startedAt = matches.index; const [ match, closerMatch, namespaceMatch, nameMatch, attrsMatch, , voidMatch ] = matches; const length = match.length; const isCloser = !!closerMatch; const isVoid = !!voidMatch; const namespace = namespaceMatch || "core/"; const name = namespace + nameMatch; const hasAttrs = !!attrsMatch; const attrs = hasAttrs ? parseJSON(attrsMatch) : {}; if (isCloser && (isVoid || hasAttrs)) { } if (isVoid) { return ["void-block", name, attrs, startedAt, length]; } if (isCloser) { return ["block-closer", name, null, startedAt, length]; } return ["block-opener", name, attrs, startedAt, length]; } function addFreeform(rawLength) { const length = rawLength ? rawLength : document.length - offset; if (0 === length) { return; } output.push(Freeform(document.substr(offset, length))); } function addInnerBlock(block, tokenStart, tokenLength, lastOffset) { const parent = stack[stack.length - 1]; parent.block.innerBlocks.push(block); const html = document.substr( parent.prevOffset, tokenStart - parent.prevOffset ); if (html) { parent.block.innerHTML += html; parent.block.innerContent.push(html); } parent.block.innerContent.push(null); parent.prevOffset = lastOffset ? lastOffset : tokenStart + tokenLength; } function addBlockFromStack(endOffset) { const { block, leadingHtmlStart, prevOffset, tokenStart } = stack.pop(); const html = endOffset ? document.substr(prevOffset, endOffset - prevOffset) : document.substr(prevOffset); if (html) { block.innerHTML += html; block.innerContent.push(html); } if (null !== leadingHtmlStart) { output.push( Freeform( document.substr( leadingHtmlStart, tokenStart - leadingHtmlStart ) ) ); } output.push(block); } return __toCommonJS(index_exports); })(); dist/url.min.js000064400000024202152375074240007442 0ustar00/*! This file is auto-generated */ "use strict";var wp;(wp||={}).url=(()=>{var M=Object.create;var l=Object.defineProperty;var Y=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var B=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var W=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Z=(e,t)=>{for(var r in t)l(e,r,{get:t[r],enumerable:!0})},E=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of j(t))!K.call(e,o)&&o!==r&&l(e,o,{get:()=>t[o],enumerable:!(n=Y(t,o))||n.enumerable});return e};var J=(e,t,r)=>(r=e!=null?M(B(e)):{},E(t||!e||!e.__esModule?l(r,"default",{value:e,enumerable:!0}):r,e)),ee=e=>E(l({},"__esModule",{value:!0}),e);var L=W((Me,U)=>{var z={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u1EA4:"A",\u1EAE:"A",\u1EB2:"A",\u1EB4:"A",\u1EB6:"A",\u00C6:"AE",\u1EA6:"A",\u1EB0:"A",\u0202:"A",\u1EA2:"A",\u1EA0:"A",\u1EA8:"A",\u1EAA:"A",\u1EAC:"A",\u00C7:"C",\u1E08:"C",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u1EBE:"E",\u1E16:"E",\u1EC0:"E",\u1E14:"E",\u1E1C:"E",\u0206:"E",\u1EBA:"E",\u1EBC:"E",\u1EB8:"E",\u1EC2:"E",\u1EC4:"E",\u1EC6:"E",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u1E2E:"I",\u020A:"I",\u1EC8:"I",\u1ECA:"I",\u00D0:"D",\u00D1:"N",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u1ED0:"O",\u1E4C:"O",\u1E52:"O",\u020E:"O",\u1ECE:"O",\u1ECC:"O",\u1ED4:"O",\u1ED6:"O",\u1ED8:"O",\u1EDC:"O",\u1EDE:"O",\u1EE0:"O",\u1EDA:"O",\u1EE2:"O",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u1EE6:"U",\u1EE4:"U",\u1EEC:"U",\u1EEE:"U",\u1EF0:"U",\u00DD:"Y",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u1EA5:"a",\u1EAF:"a",\u1EB3:"a",\u1EB5:"a",\u1EB7:"a",\u00E6:"ae",\u1EA7:"a",\u1EB1:"a",\u0203:"a",\u1EA3:"a",\u1EA1:"a",\u1EA9:"a",\u1EAB:"a",\u1EAD:"a",\u00E7:"c",\u1E09:"c",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u1EBF:"e",\u1E17:"e",\u1EC1:"e",\u1E15:"e",\u1E1D:"e",\u0207:"e",\u1EBB:"e",\u1EBD:"e",\u1EB9:"e",\u1EC3:"e",\u1EC5:"e",\u1EC7:"e",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u1E2F:"i",\u020B:"i",\u1EC9:"i",\u1ECB:"i",\u00F0:"d",\u00F1:"n",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u1ED1:"o",\u1E4D:"o",\u1E53:"o",\u020F:"o",\u1ECF:"o",\u1ECD:"o",\u1ED5:"o",\u1ED7:"o",\u1ED9:"o",\u1EDD:"o",\u1EDF:"o",\u1EE1:"o",\u1EDB:"o",\u1EE3:"o",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u1EE7:"u",\u1EE5:"u",\u1EED:"u",\u1EEF:"u",\u1EF1:"u",\u00FD:"y",\u00FF:"y",\u0100:"A",\u0101:"a",\u0102:"A",\u0103:"a",\u0104:"A",\u0105:"a",\u0106:"C",\u0107:"c",\u0108:"C",\u0109:"c",\u010A:"C",\u010B:"c",\u010C:"C",\u010D:"c",C\u0306:"C",c\u0306:"c",\u010E:"D",\u010F:"d",\u0110:"D",\u0111:"d",\u0112:"E",\u0113:"e",\u0114:"E",\u0115:"e",\u0116:"E",\u0117:"e",\u0118:"E",\u0119:"e",\u011A:"E",\u011B:"e",\u011C:"G",\u01F4:"G",\u011D:"g",\u01F5:"g",\u011E:"G",\u011F:"g",\u0120:"G",\u0121:"g",\u0122:"G",\u0123:"g",\u0124:"H",\u0125:"h",\u0126:"H",\u0127:"h",\u1E2A:"H",\u1E2B:"h",\u0128:"I",\u0129:"i",\u012A:"I",\u012B:"i",\u012C:"I",\u012D:"i",\u012E:"I",\u012F:"i",\u0130:"I",\u0131:"i",\u0132:"IJ",\u0133:"ij",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u1E30:"K",\u1E31:"k",K\u0306:"K",k\u0306:"k",\u0139:"L",\u013A:"l",\u013B:"L",\u013C:"l",\u013D:"L",\u013E:"l",\u013F:"L",\u0140:"l",\u0141:"l",\u0142:"l",\u1E3E:"M",\u1E3F:"m",M\u0306:"M",m\u0306:"m",\u0143:"N",\u0144:"n",\u0145:"N",\u0146:"n",\u0147:"N",\u0148:"n",\u0149:"n",N\u0306:"N",n\u0306:"n",\u014C:"O",\u014D:"o",\u014E:"O",\u014F:"o",\u0150:"O",\u0151:"o",\u0152:"OE",\u0153:"oe",P\u0306:"P",p\u0306:"p",\u0154:"R",\u0155:"r",\u0156:"R",\u0157:"r",\u0158:"R",\u0159:"r",R\u0306:"R",r\u0306:"r",\u0212:"R",\u0213:"r",\u015A:"S",\u015B:"s",\u015C:"S",\u015D:"s",\u015E:"S",\u0218:"S",\u0219:"s",\u015F:"s",\u0160:"S",\u0161:"s",\u0162:"T",\u0163:"t",\u021B:"t",\u021A:"T",\u0164:"T",\u0165:"t",\u0166:"T",\u0167:"t",T\u0306:"T",t\u0306:"t",\u0168:"U",\u0169:"u",\u016A:"U",\u016B:"u",\u016C:"U",\u016D:"u",\u016E:"U",\u016F:"u",\u0170:"U",\u0171:"u",\u0172:"U",\u0173:"u",\u0216:"U",\u0217:"u",V\u0306:"V",v\u0306:"v",\u0174:"W",\u0175:"w",\u1E82:"W",\u1E83:"w",X\u0306:"X",x\u0306:"x",\u0176:"Y",\u0177:"y",\u0178:"Y",Y\u0306:"Y",y\u0306:"y",\u0179:"Z",\u017A:"z",\u017B:"Z",\u017C:"z",\u017D:"Z",\u017E:"z",\u017F:"s",\u0192:"f",\u01A0:"O",\u01A1:"o",\u01AF:"U",\u01B0:"u",\u01CD:"A",\u01CE:"a",\u01CF:"I",\u01D0:"i",\u01D1:"O",\u01D2:"o",\u01D3:"U",\u01D4:"u",\u01D5:"U",\u01D6:"u",\u01D7:"U",\u01D8:"u",\u01D9:"U",\u01DA:"u",\u01DB:"U",\u01DC:"u",\u1EE8:"U",\u1EE9:"u",\u1E78:"U",\u1E79:"u",\u01FA:"A",\u01FB:"a",\u01FC:"AE",\u01FD:"ae",\u01FE:"O",\u01FF:"o",\u00DE:"TH",\u00FE:"th",\u1E54:"P",\u1E55:"p",\u1E64:"S",\u1E65:"s",X\u0301:"X",x\u0301:"x",\u0403:"\u0413",\u0453:"\u0433",\u040C:"\u041A",\u045C:"\u043A",A\u030B:"A",a\u030B:"a",E\u030B:"E",e\u030B:"e",I\u030B:"I",i\u030B:"i",\u01F8:"N",\u01F9:"n",\u1ED2:"O",\u1ED3:"o",\u1E50:"O",\u1E51:"o",\u1EEA:"U",\u1EEB:"u",\u1E80:"W",\u1E81:"w",\u1EF2:"Y",\u1EF3:"y",\u0200:"A",\u0201:"a",\u0204:"E",\u0205:"e",\u0208:"I",\u0209:"i",\u020C:"O",\u020D:"o",\u0210:"R",\u0211:"r",\u0214:"U",\u0215:"u",B\u030C:"B",b\u030C:"b",\u010C\u0323:"C",\u010D\u0323:"c",\u00CA\u030C:"E",\u00EA\u030C:"e",F\u030C:"F",f\u030C:"f",\u01E6:"G",\u01E7:"g",\u021E:"H",\u021F:"h",J\u030C:"J",\u01F0:"j",\u01E8:"K",\u01E9:"k",M\u030C:"M",m\u030C:"m",P\u030C:"P",p\u030C:"p",Q\u030C:"Q",q\u030C:"q",\u0158\u0329:"R",\u0159\u0329:"r",\u1E66:"S",\u1E67:"s",V\u030C:"V",v\u030C:"v",W\u030C:"W",w\u030C:"w",X\u030C:"X",x\u030C:"x",Y\u030C:"Y",y\u030C:"y",A\u0327:"A",a\u0327:"a",B\u0327:"B",b\u0327:"b",\u1E10:"D",\u1E11:"d",\u0228:"E",\u0229:"e",\u0190\u0327:"E",\u025B\u0327:"e",\u1E28:"H",\u1E29:"h",I\u0327:"I",i\u0327:"i",\u0197\u0327:"I",\u0268\u0327:"i",M\u0327:"M",m\u0327:"m",O\u0327:"O",o\u0327:"o",Q\u0327:"Q",q\u0327:"q",U\u0327:"U",u\u0327:"u",X\u0327:"X",x\u0327:"x",Z\u0327:"Z",z\u0327:"z",\u0439:"\u0438",\u0419:"\u0418",\u0451:"\u0435",\u0401:"\u0415"},D=Object.keys(z).join("|"),ie=new RegExp(D,"g"),ae=new RegExp(D,"");function se(e){return z[e]}var H=function(e){return e.replace(ie,se)},ce=function(e){return!!e.match(ae)};U.exports=H;U.exports.has=ce;U.exports.remove=H});var pe={};Z(pe,{addQueryArgs:()=>w,buildQueryString:()=>u,cleanForSlug:()=>X,filterURLForDisplay:()=>$,getAuthority:()=>P,getFilename:()=>q,getFragment:()=>A,getPath:()=>d,getPathAndQueryString:()=>b,getProtocol:()=>R,getQueryArg:()=>h,getQueryArgs:()=>s,getQueryString:()=>p,hasQueryArg:()=>N,isEmail:()=>g,isPhoneNumber:()=>I,isURL:()=>O,isValidAuthority:()=>Q,isValidFragment:()=>T,isValidPath:()=>v,isValidProtocol:()=>S,isValidQueryString:()=>C,normalizePath:()=>_,prependHTTP:()=>x,prependHTTPS:()=>G,removeQueryArgs:()=>F,safeDecodeURI:()=>V,safeDecodeURIComponent:()=>y});function O(e){try{return new URL(e),!0}catch{return!1}}var te=/^(mailto:)?[a-z0-9._%+-]+@[a-z0-9][a-z0-9.-]*\.[a-z]{2,63}$/i;function g(e){return te.test(e)}var re=/^(tel:)?(\+)?\d{6,15}$/;function I(e){return e=e.replace(/[-.() ]/g,""),re.test(e)}function R(e){let t=/^([^\s:]+:)/.exec(e);if(t)return t[1]}function S(e){return e?/^[a-z\-.\+]+[0-9]*:$/i.test(e):!1}function P(e){let t=/^[^\/\s:]+:(?:\/\/)?\/?([^\/\s#?]+)[\/#?]{0,1}\S*$/.exec(e);if(t)return t[1]}function Q(e){return e?/^[^\s#?]+$/.test(e):!1}function d(e){let t=/^[^\/\s:]+:(?:\/\/)?[^\/\s#?]+[\/]([^\s#?]+)[#?]{0,1}\S*$/.exec(e);if(t)return t[1]}function v(e){return e?/^[^\s#?]+$/.test(e):!1}function p(e){let t;try{t=new URL(e,"http://example.com").search.substring(1)}catch{}if(t)return t}function u(e){let t="",r=Object.entries(e),n;for(;n=r.shift();){let[o,i]=n;if(Array.isArray(i)||i&&i.constructor===Object){let c=Object.entries(i).reverse();for(let[m,f]of c)r.unshift([`${o}[${m}]`,f])}else i!==void 0&&(i===null&&(i=""),t+="&"+[o,String(i)].map(encodeURIComponent).join("="))}return t.substr(1)}function C(e){return e?/^[^\s#?\/]+$/.test(e):!1}function b(e){let t=d(e),r=p(e),n="/";return t&&(n+=t),r&&(n+=`?${r}`),n}function A(e){let t=/^\S+?(#[^\s\?]*)/.exec(e);if(t)return t[1]}function T(e){return e?/^#[^\s#?\/]*$/.test(e):!1}function y(e){try{return decodeURIComponent(e)}catch{return e}}function oe(e,t,r){let n=t.length,o=n-1;for(let i=0;i{let[n,o=""]=r.split("=").filter(Boolean).map(y);if(n){let i=n.replace(/\]/g,"").split("[");oe(t,i,o)}return t},Object.create(null))}function w(e="",t){if(!t||!Object.keys(t).length)return e;let r=A(e)||"",n=e.replace(r,""),o=e.indexOf("?");return o!==-1&&(t=Object.assign(s(e),t),n=n.substr(0,o)),n+"?"+u(t)+r}function h(e,t){return s(e)[t]}function N(e,t){return h(e,t)!==void 0}function F(e,...t){let r=e.replace(/^[^#]*/,"");e=e.replace(/#.*/,"");let n=e.indexOf("?");if(n===-1)return e+r;let o=s(e),i=e.substr(0,n);t.forEach(m=>delete o[m]);let a=u(o);return(a?i+"?"+a:i)+r}var ne=/^(?:[a-z]+:|#|\?|\.|\/)/i;function x(e){return e&&(e=e.trim(),!ne.test(e)&&!g(e)?"http://"+e:e)}function V(e){try{return decodeURI(e)}catch{return e}}function $(e,t=null){if(!e)return"";let r=e.replace(/^[a-z\-.\+]+[0-9]*:(\/\/)?/i,"").replace(/^www\./i,"");r.match(/^[^\/]+\/$/)&&(r=r.replace("/",""));let n=/\/([^\/?]+)\.(?:[\w]+)(?=\?|$)/;if(!t||r.length<=t||!r.match(n))return r;r=r.split("?")[0];let o=r.split("/"),i=o[o.length-1];if(i.length<=t)return"\u2026"+r.slice(-t);let a=i.lastIndexOf("."),[c,m]=[i.slice(0,a),i.slice(a+1)],f=c.slice(-3)+"."+m;return i.slice(0,t-f.length-1)+"\u2026"+f}var k=J(L(),1);function X(e){return e?(0,k.default)(e).replace(/( |–|—)/g,"-").replace(/[\s\./]+/g,"-").replace(/&\S+?;/g,"").replace(/[^\p{L}\p{N}_-]+/gu,"").toLowerCase().replace(/-+/g,"-").replace(/(^-+)|(-+$)/g,""):""}function q(e){let t;if(e){try{t=new URL(e,"http://example.com").pathname.split("/").pop()}catch{}if(t)return t}}function _(e){let t=e.split("?"),r=t[1],n=t[0];return r?n+"?"+r.split("&").map(o=>o.split("=")).map(o=>o.map(decodeURIComponent)).sort((o,i)=>o[0].localeCompare(i[0])).map(o=>o.map(encodeURIComponent)).map(o=>o.join("=")).join("&"):n}function G(e){return!e||e.startsWith("http://")?e:(e=x(e),e.replace(/^http:/,"https:"))}return ee(pe);})(); dist/reusable-blocks.min.js000064400000016344152375074240011725 0ustar00/*! This file is auto-generated */ var wp;(wp||={}).reusableBlocks=(()=>{var Da=Object.create;var E=Object.defineProperty;var Ea=Object.getOwnPropertyDescriptor;var Ua=Object.getOwnPropertyNames;var ja=Object.getPrototypeOf,Ma=Object.prototype.hasOwnProperty;var d=(a,t)=>()=>(t||a((t={exports:{}}).exports,t),t.exports),H=(a,t)=>{for(var o in t)E(a,o,{get:t[o],enumerable:!0})},Y=(a,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Ua(t))!Ma.call(a,s)&&s!==o&&E(a,s,{get:()=>t[s],enumerable:!(r=Ea(t,s))||r.enumerable});return a};var e=(a,t,o)=>(o=a!=null?Da(ja(a)):{},Y(t||!a||!a.__esModule?E(o,"default",{value:a,enumerable:!0}):o,a)),Ia=a=>Y(E({},"__esModule",{value:!0}),a);var R=d((Wa,Z)=>{Z.exports=window.wp.data});var C=d((Qa,$)=>{$.exports=window.wp.blockEditor});var U=d((Xa,aa)=>{aa.exports=window.wp.blocks});var j=d((Ya,ta)=>{ta.exports=window.wp.i18n});var q=d((tt,fa)=>{fa.exports=window.wp.element});var G=d((et,la)=>{la.exports=window.wp.components});var ma=d((ot,sa)=>{sa.exports=window.wp.primitives});var S=d((rt,ua)=>{ua.exports=window.ReactJSXRuntime});var ia=d((mt,da)=>{da.exports=window.wp.notices});var W=d((ut,pa)=>{pa.exports=window.wp.coreData});var ga=d((nt,ba)=>{ba.exports=window.wp.url});var qa={};H(qa,{ReusableBlocksMenuItems:()=>xa,store:()=>k});var M=e(R(),1);var O={};H(O,{__experimentalConvertBlockToStatic:()=>Aa,__experimentalConvertBlocksToReusable:()=>Na,__experimentalDeleteReusableBlock:()=>Va,__experimentalSetEditingReusableBlock:()=>za});var g=e(C(),1),h=e(U(),1),ea=e(j(),1),Aa=a=>({registry:t})=>{let o=t.select(g.store).getBlock(a),r=t.select("core").getEditedEntityRecord("postType","wp_block",o.attributes.ref),s=(0,h.parse)(typeof r.content=="function"?r.content(r):r.content);t.dispatch(g.store).replaceBlocks(o.clientId,s)},Na=(a,t,o)=>async({registry:r,dispatch:s})=>{let c=o==="unsynced"?{wp_pattern_sync_status:o}:void 0,u={title:t||(0,ea.__)("Untitled pattern block"),content:(0,h.serialize)(r.select(g.store).getBlocksByClientId(a)),status:"publish",meta:c},w=await r.dispatch("core").saveEntityRecord("postType","wp_block",u);if(o==="unsynced")return;let i=(0,h.createBlock)("core/block",{ref:w.id});r.dispatch(g.store).replaceBlocks(a,i),s.__experimentalSetEditingReusableBlock(i.clientId,!0)},Va=a=>async({registry:t})=>{if(!t.select("core").getEditedEntityRecord("postType","wp_block",a))return;let c=t.select(g.store).getBlocks().filter(u=>(0,h.isReusableBlock)(u)&&u.attributes.ref===a).map(u=>u.clientId);c.length&&t.dispatch(g.store).removeBlocks(c),await t.dispatch("core").deleteEntityRecord("postType","wp_block",a)};function za(a,t){return{type:"SET_EDITING_REUSABLE_BLOCK",clientId:a,isEditing:t}}var oa=e(R(),1);function Fa(a={},t){return t?.type==="SET_EDITING_REUSABLE_BLOCK"?{...a,[t.clientId]:t.isEditing}:a}var ra=(0,oa.combineReducers)({isEditingReusableBlock:Fa});var P={};H(P,{__experimentalIsEditingReusableBlock:()=>Ha});function Ha(a,t){return a.isEditingReusableBlock[t]}var Oa="core/reusable-blocks",k=(0,M.createReduxStore)(Oa,{actions:O,reducer:ra,selectors:P});(0,M.register)(k);var _a=e(C(),1);var A=e(U(),1),na=e(C(),1),B=e(q(),1),l=e(G(),1);var I=e(ma(),1),J=e(S(),1),K=(0,J.jsx)(I.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,J.jsx)(I.Path,{d:"M21.3 10.8l-5.6-5.6c-.7-.7-1.8-.7-2.5 0l-5.6 5.6c-.7.7-.7 1.8 0 2.5l5.6 5.6c.3.3.8.5 1.2.5s.9-.2 1.2-.5l5.6-5.6c.8-.7.8-1.9.1-2.5zm-1 1.4l-5.6 5.6c-.1.1-.3.1-.4 0l-5.6-5.6c-.1-.1-.1-.3 0-.4l5.6-5.6s.1-.1.2-.1.1 0 .2.1l5.6 5.6c.1.1.1.3 0 .4zm-16.6-.4L10 5.5l-1-1-6.3 6.3c-.7.7-.7 1.8 0 2.5L9 19.5l1.1-1.1-6.3-6.3c-.2 0-.2-.2-.1-.3z"})});var L=e(R(),1),f=e(j(),1),ca=e(ia(),1),Q=e(W(),1);var m=e(S(),1);function ha({clientIds:a,rootClientId:t,onClose:o}){let[r,s]=(0,B.useState)(void 0),[c,u]=(0,B.useState)(!1),[w,i]=(0,B.useState)(""),V=(0,L.useSelect)(n=>{let{canUser:z}=n(Q.store),{getBlocksByClientId:Ca,canInsertBlockType:Sa,getBlockRootClientId:La}=n(na.store),Ta=t||(a.length>0?La(a[0]):void 0),x=Ca(a)??[];return!(x.length===1&&x[0]&&(0,A.isReusableBlock)(x[0])&&!!n(Q.store).getEntityRecord("postType","wp_block",x[0].attributes.ref))&&Sa("core/block",Ta)&&x.every(F=>!!F&&F.isValid&&(0,A.hasBlockSupport)(F.name,"reusable",!0))&&!!z("create",{kind:"postType",name:"wp_block"})},[a,t]),{__experimentalConvertBlocksToReusable:D}=(0,L.useDispatch)(k),{createSuccessNotice:_,createErrorNotice:y}=(0,L.useDispatch)(ca.store),Ra=(0,B.useCallback)(async function(n){try{await D(a,n,r),_(r?(0,f.sprintf)((0,f.__)("Unsynced pattern created: %s"),n):(0,f.sprintf)((0,f.__)("Synced pattern created: %s"),n),{type:"snackbar",id:"convert-to-reusable-block-success"})}catch(z){y(z.message,{type:"snackbar",id:"convert-to-reusable-block-error"})}},[D,a,r,_,y]);return V?(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(l.MenuItem,{icon:K,onClick:()=>u(!0),children:(0,f.__)("Create pattern")}),c&&(0,m.jsx)(l.Modal,{title:(0,f.__)("Create pattern"),onRequestClose:()=>{u(!1),i("")},overlayClassName:"reusable-blocks-menu-items__convert-modal",children:(0,m.jsx)("form",{onSubmit:n=>{n.preventDefault(),Ra(w),u(!1),i(""),o()},children:(0,m.jsxs)(l.__experimentalVStack,{spacing:"5",children:[(0,m.jsx)(l.TextControl,{__next40pxDefaultSize:!0,label:(0,f.__)("Name"),value:w,onChange:i,placeholder:(0,f.__)("My pattern")}),(0,m.jsx)(l.ToggleControl,{label:(0,f._x)("Synced","pattern (singular)"),help:(0,f.__)("Sync this pattern across multiple locations."),checked:!r,onChange:()=>{s(r?void 0:"unsynced")}}),(0,m.jsxs)(l.__experimentalHStack,{justify:"right",children:[(0,m.jsx)(l.Button,{__next40pxDefaultSize:!0,variant:"tertiary",onClick:()=>{u(!1),i("")},children:(0,f.__)("Cancel")}),(0,m.jsx)(l.Button,{__next40pxDefaultSize:!0,variant:"primary",type:"submit",children:(0,f.__)("Create")})]})]})})})]}):null}var T=e(G(),1),v=e(j(),1),ka=e(U(),1),N=e(R(),1),wa=e(q(),1),ya=e(C(),1),X=e(ga(),1),Ba=e(W(),1);var p=e(S(),1);function Pa({clientId:a}){let[t,o]=(0,wa.useState)(!1),{canRemove:r,isVisible:s,managePatternsUrl:c}=(0,N.useSelect)(i=>{let{getBlock:V,canRemoveBlock:D}=i(ya.store),{canUser:_}=i(Ba.store),y=V(a);return{canRemove:D(a),isVisible:!!y&&(0,ka.isReusableBlock)(y)&&!!_("update",{kind:"postType",name:"wp_block",id:y.attributes.ref}),managePatternsUrl:_("create",{kind:"postType",name:"wp_template"})?(0,X.addQueryArgs)("site-editor.php",{p:"/pattern"}):(0,X.addQueryArgs)("edit.php",{post_type:"wp_block"})}},[a]),{__experimentalConvertBlockToStatic:u}=(0,N.useDispatch)(k);if(!s)return null;let w=()=>{u(a),o(!1)};return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(T.MenuItem,{href:c,children:(0,v.__)("Manage patterns")}),r&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(T.MenuItem,{onClick:()=>o(!0),children:(0,v.__)("Disconnect pattern")}),(0,p.jsx)(T.__experimentalConfirmDialog,{isOpen:t,onConfirm:w,onCancel:()=>o(!1),confirmButtonText:(0,v.__)("Disconnect"),size:"medium",title:(0,v.__)("Disconnect pattern?"),__experimentalHideHeader:!1,children:(0,v.__)("Blocks will be separated from the original pattern and will be fully editable. Future changes to the pattern will not apply here.")})]})]})}var va=Pa;var b=e(S(),1);function xa({rootClientId:a}){return(0,b.jsx)(_a.BlockSettingsMenuControls,{children:({onClose:t,selectedClientIds:o})=>(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(ha,{clientIds:o,rootClientId:a,onClose:t}),o.length===1&&(0,b.jsx)(va,{clientId:o[0]})]})})}return Ia(qa);})(); dist/core-data.js000064400002310036152375074240007722 0ustar00"use strict"; var wp; (wp ||= {}).coreData = (() => { var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all2) => { for (var name in all2) __defProp(target, name, { get: all2[name], enumerable: true }); }; var __copyProps = (to, from2, except, desc) => { if (from2 && typeof from2 === "object" || typeof from2 === "function") { for (let key of __getOwnPropNames(from2)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from2[key], enumerable: !(desc = __getOwnPropDesc(from2, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // package-external:@wordpress/data var require_data = __commonJS({ "package-external:@wordpress/data"(exports, module) { module.exports = window.wp.data; } }); // node_modules/fast-deep-equal/es6/index.js var require_es6 = __commonJS({ "node_modules/fast-deep-equal/es6/index.js"(exports, module) { "use strict"; module.exports = function equal(a, b) { if (a === b) return true; if (a && b && typeof a == "object" && typeof b == "object") { if (a.constructor !== b.constructor) return false; var length3, i, keys2; if (Array.isArray(a)) { length3 = a.length; if (length3 != b.length) return false; for (i = length3; i-- !== 0; ) if (!equal(a[i], b[i])) return false; return true; } if (a instanceof Map && b instanceof Map) { if (a.size !== b.size) return false; for (i of a.entries()) if (!b.has(i[0])) return false; for (i of a.entries()) if (!equal(i[1], b.get(i[0]))) return false; return true; } if (a instanceof Set && b instanceof Set) { if (a.size !== b.size) return false; for (i of a.entries()) if (!b.has(i[0])) return false; return true; } if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) { length3 = a.length; if (length3 != b.length) return false; for (i = length3; i-- !== 0; ) if (a[i] !== b[i]) return false; return true; } if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf(); if (a.toString !== Object.prototype.toString) return a.toString() === b.toString(); keys2 = Object.keys(a); length3 = keys2.length; if (length3 !== Object.keys(b).length) return false; for (i = length3; i-- !== 0; ) if (!Object.prototype.hasOwnProperty.call(b, keys2[i])) return false; for (i = length3; i-- !== 0; ) { var key = keys2[i]; if (!equal(a[key], b[key])) return false; } return true; } return a !== a && b !== b; }; } }); // package-external:@wordpress/compose var require_compose = __commonJS({ "package-external:@wordpress/compose"(exports, module) { module.exports = window.wp.compose; } }); // package-external:@wordpress/undo-manager var require_undo_manager = __commonJS({ "package-external:@wordpress/undo-manager"(exports, module) { module.exports = window.wp.undoManager; } }); // node_modules/equivalent-key-map/equivalent-key-map.js var require_equivalent_key_map = __commonJS({ "node_modules/equivalent-key-map/equivalent-key-map.js"(exports, module) { "use strict"; function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function(obj2) { return typeof obj2; }; } else { _typeof = function(obj2) { return obj2 && typeof Symbol === "function" && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function getValuePair(instance, key) { var _map = instance._map, _arrayTreeMap = instance._arrayTreeMap, _objectTreeMap = instance._objectTreeMap; if (_map.has(key)) { return _map.get(key); } var properties = Object.keys(key).sort(); var map2 = Array.isArray(key) ? _arrayTreeMap : _objectTreeMap; for (var i = 0; i < properties.length; i++) { var property = properties[i]; map2 = map2.get(property); if (map2 === void 0) { return; } var propertyValue = key[property]; map2 = map2.get(propertyValue); if (map2 === void 0) { return; } } var valuePair = map2.get("_ekm_value"); if (!valuePair) { return; } _map.delete(valuePair[0]); valuePair[0] = key; map2.set("_ekm_value", valuePair); _map.set(key, valuePair); return valuePair; } var EquivalentKeyMap2 = /* @__PURE__ */ (function() { function EquivalentKeyMap3(iterable) { _classCallCheck(this, EquivalentKeyMap3); this.clear(); if (iterable instanceof EquivalentKeyMap3) { var iterablePairs = []; iterable.forEach(function(value, key) { iterablePairs.push([key, value]); }); iterable = iterablePairs; } if (iterable != null) { for (var i = 0; i < iterable.length; i++) { this.set(iterable[i][0], iterable[i][1]); } } } _createClass(EquivalentKeyMap3, [{ key: "set", /** * Add or update an element with a specified key and value. * * @param {*} key The key of the element to add. * @param {*} value The value of the element to add. * * @return {EquivalentKeyMap} Map instance. */ value: function set(key, value) { if (key === null || _typeof(key) !== "object") { this._map.set(key, value); return this; } var properties = Object.keys(key).sort(); var valuePair = [key, value]; var map2 = Array.isArray(key) ? this._arrayTreeMap : this._objectTreeMap; for (var i = 0; i < properties.length; i++) { var property = properties[i]; if (!map2.has(property)) { map2.set(property, new EquivalentKeyMap3()); } map2 = map2.get(property); var propertyValue = key[property]; if (!map2.has(propertyValue)) { map2.set(propertyValue, new EquivalentKeyMap3()); } map2 = map2.get(propertyValue); } var previousValuePair = map2.get("_ekm_value"); if (previousValuePair) { this._map.delete(previousValuePair[0]); } map2.set("_ekm_value", valuePair); this._map.set(key, valuePair); return this; } /** * Returns a specified element. * * @param {*} key The key of the element to return. * * @return {?*} The element associated with the specified key or undefined * if the key can't be found. */ }, { key: "get", value: function get(key) { if (key === null || _typeof(key) !== "object") { return this._map.get(key); } var valuePair = getValuePair(this, key); if (valuePair) { return valuePair[1]; } } /** * Returns a boolean indicating whether an element with the specified key * exists or not. * * @param {*} key The key of the element to test for presence. * * @return {boolean} Whether an element with the specified key exists. */ }, { key: "has", value: function has(key) { if (key === null || _typeof(key) !== "object") { return this._map.has(key); } return getValuePair(this, key) !== void 0; } /** * Removes the specified element. * * @param {*} key The key of the element to remove. * * @return {boolean} Returns true if an element existed and has been * removed, or false if the element does not exist. */ }, { key: "delete", value: function _delete(key) { if (!this.has(key)) { return false; } this.set(key, void 0); return true; } /** * Executes a provided function once per each key/value pair, in insertion * order. * * @param {Function} callback Function to execute for each element. * @param {*} thisArg Value to use as `this` when executing * `callback`. */ }, { key: "forEach", value: function forEach2(callback) { var _this = this; var thisArg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this; this._map.forEach(function(value, key) { if (key !== null && _typeof(key) === "object") { value = value[1]; } callback.call(thisArg, value, key, _this); }); } /** * Removes all elements. */ }, { key: "clear", value: function clear() { this._map = /* @__PURE__ */ new Map(); this._arrayTreeMap = /* @__PURE__ */ new Map(); this._objectTreeMap = /* @__PURE__ */ new Map(); } }, { key: "size", get: function get() { return this._map.size; } }]); return EquivalentKeyMap3; })(); module.exports = EquivalentKeyMap2; } }); // package-external:@wordpress/url var require_url = __commonJS({ "package-external:@wordpress/url"(exports, module) { module.exports = window.wp.url; } }); // package-external:@wordpress/api-fetch var require_api_fetch = __commonJS({ "package-external:@wordpress/api-fetch"(exports, module) { module.exports = window.wp.apiFetch; } }); // package-external:@wordpress/blocks var require_blocks = __commonJS({ "package-external:@wordpress/blocks"(exports, module) { module.exports = window.wp.blocks; } }); // package-external:@wordpress/i18n var require_i18n = __commonJS({ "package-external:@wordpress/i18n"(exports, module) { module.exports = window.wp.i18n; } }); // package-external:@wordpress/private-apis var require_private_apis = __commonJS({ "package-external:@wordpress/private-apis"(exports, module) { module.exports = window.wp.privateApis; } }); // package-external:@wordpress/hooks var require_hooks = __commonJS({ "package-external:@wordpress/hooks"(exports, module) { module.exports = window.wp.hooks; } }); // package-external:@wordpress/block-editor var require_block_editor = __commonJS({ "package-external:@wordpress/block-editor"(exports, module) { module.exports = window.wp.blockEditor; } }); // package-external:@wordpress/rich-text var require_rich_text = __commonJS({ "package-external:@wordpress/rich-text"(exports, module) { module.exports = window.wp.richText; } }); // package-external:@wordpress/deprecated var require_deprecated = __commonJS({ "package-external:@wordpress/deprecated"(exports, module) { module.exports = window.wp.deprecated; } }); // package-external:@wordpress/html-entities var require_html_entities = __commonJS({ "package-external:@wordpress/html-entities"(exports, module) { module.exports = window.wp.htmlEntities; } }); // package-external:@wordpress/element var require_element = __commonJS({ "package-external:@wordpress/element"(exports, module) { module.exports = window.wp.element; } }); // vendor-external:react/jsx-runtime var require_jsx_runtime = __commonJS({ "vendor-external:react/jsx-runtime"(exports, module) { module.exports = window.ReactJSXRuntime; } }); // package-external:@wordpress/warning var require_warning = __commonJS({ "package-external:@wordpress/warning"(exports, module) { module.exports = window.wp.warning; } }); // packages/core-data/build-module/index.mjs var index_exports = {}; __export(index_exports, { EntityProvider: () => EntityProvider, __experimentalFetchLinkSuggestions: () => fetchLinkSuggestions, __experimentalFetchUrlData: () => experimental_fetch_url_data_default, __experimentalUseEntityRecord: () => __experimentalUseEntityRecord, __experimentalUseEntityRecords: () => __experimentalUseEntityRecords, __experimentalUseResourcePermissions: () => __experimentalUseResourcePermissions, fetchBlockPatterns: () => fetchBlockPatterns, privateApis: () => privateApis2, store: () => store, useEntityBlockEditor: () => useEntityBlockEditor, useEntityId: () => useEntityId, useEntityProp: () => useEntityProp, useEntityRecord: () => useEntityRecord, useEntityRecords: () => useEntityRecords, useResourcePermissions: () => use_resource_permissions_default }); var import_data16 = __toESM(require_data(), 1); // packages/core-data/build-module/reducer.mjs var import_es66 = __toESM(require_es6(), 1); var import_compose2 = __toESM(require_compose(), 1); var import_data8 = __toESM(require_data(), 1); var import_undo_manager2 = __toESM(require_undo_manager(), 1); // packages/core-data/build-module/utils/conservative-map-item.mjs var import_es6 = __toESM(require_es6(), 1); function conservativeMapItem(item, nextItem) { if (!item) { return nextItem; } let hasChanges = false; const result = {}; for (const key in nextItem) { if ((0, import_es6.default)(item[key], nextItem[key])) { result[key] = item[key]; } else { hasChanges = true; result[key] = nextItem[key]; } } if (!hasChanges) { return item; } for (const key in item) { if (!result.hasOwnProperty(key)) { result[key] = item[key]; } } return result; } // packages/core-data/build-module/utils/get-normalized-comma-separable.mjs function getNormalizedCommaSeparable(value) { if (typeof value === "string") { return value.split(","); } else if (Array.isArray(value)) { return value; } return null; } var get_normalized_comma_separable_default = getNormalizedCommaSeparable; // packages/core-data/build-module/utils/if-matching-action.mjs var ifMatchingAction = (isMatch) => (reducer) => (state, action) => { if (state === void 0 || isMatch(action)) { return reducer(state, action); } return state; }; var if_matching_action_default = ifMatchingAction; // packages/core-data/build-module/utils/forward-resolver.mjs var forwardResolver = (resolverName) => (...args2) => async ({ resolveSelect: resolveSelect2 }) => { await resolveSelect2[resolverName](...args2); }; var forward_resolver_default = forwardResolver; // packages/core-data/build-module/utils/on-sub-key.mjs var onSubKey = (actionProperty) => (reducer) => (state = {}, action) => { const key = action[actionProperty]; if (key === void 0) { return state; } const nextKeyState = reducer(state[key], action); if (nextKeyState === state[key]) { return state; } return { ...state, [key]: nextKeyState }; }; var on_sub_key_default = onSubKey; // packages/core-data/build-module/utils/replace-action.mjs var replaceAction = (replacer) => (reducer) => (state, action) => { return reducer(state, replacer(action)); }; var replace_action_default = replaceAction; // packages/core-data/build-module/utils/with-weak-map-cache.mjs function withWeakMapCache(fn) { const cache3 = /* @__PURE__ */ new WeakMap(); return (key) => { let value; if (cache3.has(key)) { value = cache3.get(key); } else { value = fn(key); if (key !== null && typeof key === "object") { cache3.set(key, value); } } return value; }; } var with_weak_map_cache_default = withWeakMapCache; // packages/core-data/build-module/utils/is-raw-attribute.mjs function isRawAttribute(entity2, attribute) { return (entity2.rawAttributes || []).includes(attribute); } // packages/core-data/build-module/utils/set-nested-value.mjs function setNestedValue(object, path, value) { if (!object || typeof object !== "object") { return object; } const normalizedPath = Array.isArray(path) ? path : path.split("."); normalizedPath.reduce((acc, key, idx) => { if (acc[key] === void 0) { if (Number.isInteger(normalizedPath[idx + 1])) { acc[key] = []; } else { acc[key] = {}; } } if (idx === normalizedPath.length - 1) { acc[key] = value; } return acc[key]; }, object); return object; } // packages/core-data/build-module/utils/get-nested-value.mjs function getNestedValue(object, path, defaultValue) { if (!object || typeof object !== "object" || typeof path !== "string" && !Array.isArray(path)) { return object; } const normalizedPath = Array.isArray(path) ? path : path.split("."); let value = object; normalizedPath.forEach((fieldName) => { value = value?.[fieldName]; }); return value !== void 0 ? value : defaultValue; } // packages/core-data/build-module/utils/is-numeric-id.mjs function isNumericID(id2) { return /^\s*\d+\s*$/.test(id2); } // packages/core-data/build-module/utils/user-permissions.mjs var ALLOWED_RESOURCE_ACTIONS = [ "create", "read", "update", "delete" ]; function getUserPermissionsFromAllowHeader(allowedMethods) { const permissions = {}; if (!allowedMethods) { return permissions; } const methods = { create: "POST", read: "GET", update: "PUT", delete: "DELETE" }; for (const [actionName, methodName] of Object.entries(methods)) { permissions[actionName] = allowedMethods.includes(methodName); } return permissions; } function getUserPermissionCacheKey(action, resource, id2) { const key = (typeof resource === "object" ? [action, resource.kind, resource.name, resource.id] : [action, resource, id2]).filter(Boolean).join("/"); return key; } // packages/core-data/build-module/utils/receive-intermediate-results.mjs var RECEIVE_INTERMEDIATE_RESULTS = /* @__PURE__ */ Symbol( "RECEIVE_INTERMEDIATE_RESULTS" ); // packages/core-data/build-module/queried-data/actions.mjs function receiveItems(items2, edits, meta) { return { type: "RECEIVE_ITEMS", items: items2, persistedEdits: edits, meta }; } function removeItems(kind, name, records, invalidateCache = false) { return { type: "REMOVE_ITEMS", itemIds: Array.isArray(records) ? records : [records], kind, name, invalidateCache }; } function receiveQueriedItems(items2, query = {}, edits, meta) { return { ...receiveItems(items2, edits, meta), query }; } // packages/core-data/build-module/queried-data/selectors.mjs var import_equivalent_key_map = __toESM(require_equivalent_key_map(), 1); var import_data = __toESM(require_data(), 1); // packages/core-data/build-module/queried-data/get-query-parts.mjs var import_url = __toESM(require_url(), 1); function getQueryParts(query) { const parts = { stableKey: "", page: 1, perPage: 10, fields: null, include: null, context: "default" }; const keys2 = Object.keys(query).sort(); for (let i = 0; i < keys2.length; i++) { const key = keys2[i]; let value = query[key]; switch (key) { case "page": parts[key] = Number(value); break; case "per_page": parts.perPage = Number(value); break; case "context": parts.context = value; break; default: if (key === "_fields") { parts.fields = get_normalized_comma_separable_default(value) ?? []; value = parts.fields.join(); } if (key === "include") { if (typeof value === "number") { value = value.toString(); } parts.include = (get_normalized_comma_separable_default(value) ?? []).map(Number); value = parts.include.join(); } parts.stableKey += (parts.stableKey ? "&" : "") + (0, import_url.addQueryArgs)("", { [key]: value }).slice(1); } } return parts; } var get_query_parts_default = with_weak_map_cache_default(getQueryParts); // packages/core-data/build-module/queried-data/selectors.mjs var queriedItemsCacheByState = /* @__PURE__ */ new WeakMap(); function getQueriedItemsUncached(state, query) { const { stableKey, page, perPage, include, fields, context } = get_query_parts_default(query); let itemIds; if (state.queries?.[context]?.[stableKey]) { itemIds = state.queries[context][stableKey].itemIds; } if (!itemIds) { return null; } const startOffset = perPage === -1 ? 0 : (page - 1) * perPage; const endOffset = perPage === -1 ? itemIds.length : Math.min(startOffset + perPage, itemIds.length); const items2 = []; for (let i = startOffset; i < endOffset; i++) { const itemId = itemIds[i]; if (Array.isArray(include) && !include.includes(itemId)) { continue; } if (itemId === void 0) { continue; } if (!state.items[context]?.hasOwnProperty(itemId)) { return null; } const item = state.items[context][itemId]; let filteredItem; if (Array.isArray(fields)) { filteredItem = {}; for (let f = 0; f < fields.length; f++) { const field = fields[f].split("."); let value = item; field.forEach((fieldName) => { value = value?.[fieldName]; }); setNestedValue(filteredItem, field, value); } } else { if (!state.itemIsComplete[context]?.[itemId]) { return null; } filteredItem = item; } items2.push(filteredItem); } return items2; } var getQueriedItems = (0, import_data.createSelector)((state, query = {}) => { let queriedItemsCache = queriedItemsCacheByState.get(state); if (queriedItemsCache) { const queriedItems = queriedItemsCache.get(query); if (queriedItems !== void 0) { return queriedItems; } } else { queriedItemsCache = new import_equivalent_key_map.default(); queriedItemsCacheByState.set(state, queriedItemsCache); } const items2 = getQueriedItemsUncached(state, query); queriedItemsCache.set(query, items2); return items2; }); function getQueriedTotalItems(state, query = {}) { const { stableKey, context } = get_query_parts_default(query); return state.queries?.[context]?.[stableKey]?.meta?.totalItems ?? null; } function getQueriedTotalPages(state, query = {}) { const { stableKey, context } = get_query_parts_default(query); return state.queries?.[context]?.[stableKey]?.meta?.totalPages ?? null; } // packages/core-data/build-module/queried-data/reducer.mjs var import_data7 = __toESM(require_data(), 1); var import_compose = __toESM(require_compose(), 1); // node_modules/tslib/tslib.es6.mjs var __assign = function() { __assign = Object.assign || function __assign2(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; // node_modules/lower-case/dist.es2015/index.js function lowerCase(str) { return str.toLowerCase(); } // node_modules/no-case/dist.es2015/index.js var DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g]; var DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi; function noCase(input, options) { if (options === void 0) { options = {}; } var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? " " : _d; var result = replace(replace(input, splitRegexp, "$1\0$2"), stripRegexp, "\0"); var start = 0; var end = result.length; while (result.charAt(start) === "\0") start++; while (result.charAt(end - 1) === "\0") end--; return result.slice(start, end).split("\0").map(transform).join(delimiter); } function replace(input, re, value) { if (re instanceof RegExp) return input.replace(re, value); return re.reduce(function(input2, re2) { return input2.replace(re2, value); }, input); } // node_modules/pascal-case/dist.es2015/index.js function pascalCaseTransform(input, index) { var firstChar = input.charAt(0); var lowerChars = input.substr(1).toLowerCase(); if (index > 0 && firstChar >= "0" && firstChar <= "9") { return "_" + firstChar + lowerChars; } return "" + firstChar.toUpperCase() + lowerChars; } function pascalCase(input, options) { if (options === void 0) { options = {}; } return noCase(input, __assign({ delimiter: "", transform: pascalCaseTransform }, options)); } // node_modules/camel-case/dist.es2015/index.js function camelCaseTransform(input, index) { if (index === 0) return input.toLowerCase(); return pascalCaseTransform(input, index); } function camelCase(input, options) { if (options === void 0) { options = {}; } return pascalCase(input, __assign({ transform: camelCaseTransform }, options)); } // node_modules/upper-case-first/dist.es2015/index.js function upperCaseFirst(input) { return input.charAt(0).toUpperCase() + input.substr(1); } // node_modules/capital-case/dist.es2015/index.js function capitalCaseTransform(input) { return upperCaseFirst(input.toLowerCase()); } function capitalCase(input, options) { if (options === void 0) { options = {}; } return noCase(input, __assign({ delimiter: " ", transform: capitalCaseTransform }, options)); } // packages/core-data/build-module/entities.mjs var import_api_fetch2 = __toESM(require_api_fetch(), 1); var import_blocks4 = __toESM(require_blocks(), 1); var import_i18n = __toESM(require_i18n(), 1); // packages/core-data/build-module/awareness/post-editor-awareness.mjs var import_data5 = __toESM(require_data(), 1); // node_modules/yjs/dist/yjs.mjs var yjs_exports = {}; __export(yjs_exports, { AbsolutePosition: () => AbsolutePosition, AbstractConnector: () => AbstractConnector, AbstractStruct: () => AbstractStruct, AbstractType: () => AbstractType, Array: () => YArray, ContentAny: () => ContentAny, ContentBinary: () => ContentBinary, ContentDeleted: () => ContentDeleted, ContentDoc: () => ContentDoc, ContentEmbed: () => ContentEmbed, ContentFormat: () => ContentFormat, ContentJSON: () => ContentJSON, ContentString: () => ContentString, ContentType: () => ContentType, Doc: () => Doc, GC: () => GC, ID: () => ID, Item: () => Item, Map: () => YMap, PermanentUserData: () => PermanentUserData, RelativePosition: () => RelativePosition, Skip: () => Skip, Snapshot: () => Snapshot, Text: () => YText, Transaction: () => Transaction, UndoManager: () => UndoManager, UpdateDecoderV1: () => UpdateDecoderV1, UpdateDecoderV2: () => UpdateDecoderV2, UpdateEncoderV1: () => UpdateEncoderV1, UpdateEncoderV2: () => UpdateEncoderV2, XmlElement: () => YXmlElement, XmlFragment: () => YXmlFragment, XmlHook: () => YXmlHook, XmlText: () => YXmlText, YArrayEvent: () => YArrayEvent, YEvent: () => YEvent, YMapEvent: () => YMapEvent, YTextEvent: () => YTextEvent, YXmlEvent: () => YXmlEvent, applyUpdate: () => applyUpdate, applyUpdateV2: () => applyUpdateV2, cleanupYTextFormatting: () => cleanupYTextFormatting, compareIDs: () => compareIDs, compareRelativePositions: () => compareRelativePositions, convertUpdateFormatV1ToV2: () => convertUpdateFormatV1ToV2, convertUpdateFormatV2ToV1: () => convertUpdateFormatV2ToV1, createAbsolutePositionFromRelativePosition: () => createAbsolutePositionFromRelativePosition, createDeleteSet: () => createDeleteSet, createDeleteSetFromStructStore: () => createDeleteSetFromStructStore, createDocFromSnapshot: () => createDocFromSnapshot, createID: () => createID, createRelativePositionFromJSON: () => createRelativePositionFromJSON, createRelativePositionFromTypeIndex: () => createRelativePositionFromTypeIndex, createSnapshot: () => createSnapshot, decodeRelativePosition: () => decodeRelativePosition, decodeSnapshot: () => decodeSnapshot, decodeSnapshotV2: () => decodeSnapshotV2, decodeStateVector: () => decodeStateVector, decodeUpdate: () => decodeUpdate, decodeUpdateV2: () => decodeUpdateV2, diffUpdate: () => diffUpdate, diffUpdateV2: () => diffUpdateV2, emptySnapshot: () => emptySnapshot, encodeRelativePosition: () => encodeRelativePosition, encodeSnapshot: () => encodeSnapshot, encodeSnapshotV2: () => encodeSnapshotV2, encodeStateAsUpdate: () => encodeStateAsUpdate, encodeStateAsUpdateV2: () => encodeStateAsUpdateV2, encodeStateVector: () => encodeStateVector, encodeStateVectorFromUpdate: () => encodeStateVectorFromUpdate, encodeStateVectorFromUpdateV2: () => encodeStateVectorFromUpdateV2, equalDeleteSets: () => equalDeleteSets, equalSnapshots: () => equalSnapshots, findIndexSS: () => findIndexSS, findRootTypeKey: () => findRootTypeKey, getItem: () => getItem, getItemCleanEnd: () => getItemCleanEnd, getItemCleanStart: () => getItemCleanStart, getState: () => getState, getTypeChildren: () => getTypeChildren, isDeleted: () => isDeleted, isParentOf: () => isParentOf, iterateDeletedStructs: () => iterateDeletedStructs, logType: () => logType, logUpdate: () => logUpdate, logUpdateV2: () => logUpdateV2, mergeDeleteSets: () => mergeDeleteSets, mergeUpdates: () => mergeUpdates, mergeUpdatesV2: () => mergeUpdatesV2, obfuscateUpdate: () => obfuscateUpdate, obfuscateUpdateV2: () => obfuscateUpdateV2, parseUpdateMeta: () => parseUpdateMeta, parseUpdateMetaV2: () => parseUpdateMetaV2, readUpdate: () => readUpdate, readUpdateV2: () => readUpdateV2, relativePositionToJSON: () => relativePositionToJSON, snapshot: () => snapshot, snapshotContainsUpdate: () => snapshotContainsUpdate, transact: () => transact, tryGc: () => tryGc, typeListToArraySnapshot: () => typeListToArraySnapshot, typeMapGetAllSnapshot: () => typeMapGetAllSnapshot, typeMapGetSnapshot: () => typeMapGetSnapshot }); // node_modules/lib0/map.js var create = () => /* @__PURE__ */ new Map(); var copy = (m) => { const r = create(); m.forEach((v, k) => { r.set(k, v); }); return r; }; var setIfUndefined = (map2, key, createT) => { let set = map2.get(key); if (set === void 0) { map2.set(key, set = createT()); } return set; }; var map = (m, f) => { const res = []; for (const [key, value] of m) { res.push(f(value, key)); } return res; }; var any = (m, f) => { for (const [key, value] of m) { if (f(value, key)) { return true; } } return false; }; // node_modules/lib0/set.js var create2 = () => /* @__PURE__ */ new Set(); // node_modules/lib0/array.js var last = (arr) => arr[arr.length - 1]; var appendTo = (dest, src) => { for (let i = 0; i < src.length; i++) { dest.push(src[i]); } }; var from = Array.from; var some = (arr, f) => { for (let i = 0; i < arr.length; i++) { if (f(arr[i], i, arr)) { return true; } } return false; }; var unfold = (len, f) => { const array = new Array(len); for (let i = 0; i < len; i++) { array[i] = f(i, array); } return array; }; var isArray = Array.isArray; // node_modules/lib0/observable.js var ObservableV2 = class { constructor() { this._observers = create(); } /** * @template {keyof EVENTS & string} NAME * @param {NAME} name * @param {EVENTS[NAME]} f */ on(name, f) { setIfUndefined( this._observers, /** @type {string} */ name, create2 ).add(f); return f; } /** * @template {keyof EVENTS & string} NAME * @param {NAME} name * @param {EVENTS[NAME]} f */ once(name, f) { const _f = (...args2) => { this.off( name, /** @type {any} */ _f ); f(...args2); }; this.on( name, /** @type {any} */ _f ); } /** * @template {keyof EVENTS & string} NAME * @param {NAME} name * @param {EVENTS[NAME]} f */ off(name, f) { const observers = this._observers.get(name); if (observers !== void 0) { observers.delete(f); if (observers.size === 0) { this._observers.delete(name); } } } /** * Emit a named event. All registered event listeners that listen to the * specified name will receive the event. * * @todo This should catch exceptions * * @template {keyof EVENTS & string} NAME * @param {NAME} name The event name. * @param {Parameters} args The arguments that are applied to the event listener. */ emit(name, args2) { return from((this._observers.get(name) || create()).values()).forEach((f) => f(...args2)); } destroy() { this._observers = create(); } }; var Observable = class { constructor() { this._observers = create(); } /** * @param {N} name * @param {function} f */ on(name, f) { setIfUndefined(this._observers, name, create2).add(f); } /** * @param {N} name * @param {function} f */ once(name, f) { const _f = (...args2) => { this.off(name, _f); f(...args2); }; this.on(name, _f); } /** * @param {N} name * @param {function} f */ off(name, f) { const observers = this._observers.get(name); if (observers !== void 0) { observers.delete(f); if (observers.size === 0) { this._observers.delete(name); } } } /** * Emit a named event. All registered event listeners that listen to the * specified name will receive the event. * * @todo This should catch exceptions * * @param {N} name The event name. * @param {Array} args The arguments that are applied to the event listener. */ emit(name, args2) { return from((this._observers.get(name) || create()).values()).forEach((f) => f(...args2)); } destroy() { this._observers = create(); } }; // node_modules/lib0/math.js var floor = Math.floor; var abs = Math.abs; var min = (a, b) => a < b ? a : b; var max = (a, b) => a > b ? a : b; var isNaN2 = Number.isNaN; var isNegativeZero = (n) => n !== 0 ? n < 0 : 1 / n < 0; // node_modules/lib0/binary.js var BIT1 = 1; var BIT2 = 2; var BIT3 = 4; var BIT4 = 8; var BIT6 = 32; var BIT7 = 64; var BIT8 = 128; var BIT18 = 1 << 17; var BIT19 = 1 << 18; var BIT20 = 1 << 19; var BIT21 = 1 << 20; var BIT22 = 1 << 21; var BIT23 = 1 << 22; var BIT24 = 1 << 23; var BIT25 = 1 << 24; var BIT26 = 1 << 25; var BIT27 = 1 << 26; var BIT28 = 1 << 27; var BIT29 = 1 << 28; var BIT30 = 1 << 29; var BIT31 = 1 << 30; var BIT32 = 1 << 31; var BITS5 = 31; var BITS6 = 63; var BITS7 = 127; var BITS17 = BIT18 - 1; var BITS18 = BIT19 - 1; var BITS19 = BIT20 - 1; var BITS20 = BIT21 - 1; var BITS21 = BIT22 - 1; var BITS22 = BIT23 - 1; var BITS23 = BIT24 - 1; var BITS24 = BIT25 - 1; var BITS25 = BIT26 - 1; var BITS26 = BIT27 - 1; var BITS27 = BIT28 - 1; var BITS28 = BIT29 - 1; var BITS29 = BIT30 - 1; var BITS30 = BIT31 - 1; var BITS31 = 2147483647; // node_modules/lib0/number.js var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER; var MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER; var LOWEST_INT32 = 1 << 31; var isInteger = Number.isInteger || ((num) => typeof num === "number" && isFinite(num) && floor(num) === num); var isNaN3 = Number.isNaN; var parseInt2 = Number.parseInt; // node_modules/lib0/string.js var fromCharCode = String.fromCharCode; var fromCodePoint = String.fromCodePoint; var MAX_UTF16_CHARACTER = fromCharCode(65535); var toLowerCase = (s) => s.toLowerCase(); var trimLeftRegex = /^\s*/g; var trimLeft = (s) => s.replace(trimLeftRegex, ""); var fromCamelCaseRegex = /([A-Z])/g; var fromCamelCase = (s, separator) => trimLeft(s.replace(fromCamelCaseRegex, (match) => `${separator}${toLowerCase(match)}`)); var _encodeUtf8Polyfill = (str) => { const encodedString = unescape(encodeURIComponent(str)); const len = encodedString.length; const buf = new Uint8Array(len); for (let i = 0; i < len; i++) { buf[i] = /** @type {number} */ encodedString.codePointAt(i); } return buf; }; var utf8TextEncoder = ( /** @type {TextEncoder} */ typeof TextEncoder !== "undefined" ? new TextEncoder() : null ); var _encodeUtf8Native = (str) => utf8TextEncoder.encode(str); var encodeUtf8 = utf8TextEncoder ? _encodeUtf8Native : _encodeUtf8Polyfill; var utf8TextDecoder = typeof TextDecoder === "undefined" ? null : new TextDecoder("utf-8", { fatal: true, ignoreBOM: true }); if (utf8TextDecoder && utf8TextDecoder.decode(new Uint8Array()).length === 1) { utf8TextDecoder = null; } var repeat = (source, n) => unfold(n, () => source).join(""); // node_modules/lib0/encoding.js var Encoder = class { constructor() { this.cpos = 0; this.cbuf = new Uint8Array(100); this.bufs = []; } }; var createEncoder = () => new Encoder(); var length = (encoder) => { let len = encoder.cpos; for (let i = 0; i < encoder.bufs.length; i++) { len += encoder.bufs[i].length; } return len; }; var toUint8Array = (encoder) => { const uint8arr = new Uint8Array(length(encoder)); let curPos = 0; for (let i = 0; i < encoder.bufs.length; i++) { const d = encoder.bufs[i]; uint8arr.set(d, curPos); curPos += d.length; } uint8arr.set(new Uint8Array(encoder.cbuf.buffer, 0, encoder.cpos), curPos); return uint8arr; }; var verifyLen = (encoder, len) => { const bufferLen = encoder.cbuf.length; if (bufferLen - encoder.cpos < len) { encoder.bufs.push(new Uint8Array(encoder.cbuf.buffer, 0, encoder.cpos)); encoder.cbuf = new Uint8Array(max(bufferLen, len) * 2); encoder.cpos = 0; } }; var write = (encoder, num) => { const bufferLen = encoder.cbuf.length; if (encoder.cpos === bufferLen) { encoder.bufs.push(encoder.cbuf); encoder.cbuf = new Uint8Array(bufferLen * 2); encoder.cpos = 0; } encoder.cbuf[encoder.cpos++] = num; }; var writeUint8 = write; var writeVarUint = (encoder, num) => { while (num > BITS7) { write(encoder, BIT8 | BITS7 & num); num = floor(num / 128); } write(encoder, BITS7 & num); }; var writeVarInt = (encoder, num) => { const isNegative = isNegativeZero(num); if (isNegative) { num = -num; } write(encoder, (num > BITS6 ? BIT8 : 0) | (isNegative ? BIT7 : 0) | BITS6 & num); num = floor(num / 64); while (num > 0) { write(encoder, (num > BITS7 ? BIT8 : 0) | BITS7 & num); num = floor(num / 128); } }; var _strBuffer = new Uint8Array(3e4); var _maxStrBSize = _strBuffer.length / 3; var _writeVarStringNative = (encoder, str) => { if (str.length < _maxStrBSize) { const written = utf8TextEncoder.encodeInto(str, _strBuffer).written || 0; writeVarUint(encoder, written); for (let i = 0; i < written; i++) { write(encoder, _strBuffer[i]); } } else { writeVarUint8Array(encoder, encodeUtf8(str)); } }; var _writeVarStringPolyfill = (encoder, str) => { const encodedString = unescape(encodeURIComponent(str)); const len = encodedString.length; writeVarUint(encoder, len); for (let i = 0; i < len; i++) { write( encoder, /** @type {number} */ encodedString.codePointAt(i) ); } }; var writeVarString = utf8TextEncoder && /** @type {any} */ utf8TextEncoder.encodeInto ? _writeVarStringNative : _writeVarStringPolyfill; var writeBinaryEncoder = (encoder, append2) => writeUint8Array(encoder, toUint8Array(append2)); var writeUint8Array = (encoder, uint8Array) => { const bufferLen = encoder.cbuf.length; const cpos = encoder.cpos; const leftCopyLen = min(bufferLen - cpos, uint8Array.length); const rightCopyLen = uint8Array.length - leftCopyLen; encoder.cbuf.set(uint8Array.subarray(0, leftCopyLen), cpos); encoder.cpos += leftCopyLen; if (rightCopyLen > 0) { encoder.bufs.push(encoder.cbuf); encoder.cbuf = new Uint8Array(max(bufferLen * 2, rightCopyLen)); encoder.cbuf.set(uint8Array.subarray(leftCopyLen)); encoder.cpos = rightCopyLen; } }; var writeVarUint8Array = (encoder, uint8Array) => { writeVarUint(encoder, uint8Array.byteLength); writeUint8Array(encoder, uint8Array); }; var writeOnDataView = (encoder, len) => { verifyLen(encoder, len); const dview = new DataView(encoder.cbuf.buffer, encoder.cpos, len); encoder.cpos += len; return dview; }; var writeFloat32 = (encoder, num) => writeOnDataView(encoder, 4).setFloat32(0, num, false); var writeFloat64 = (encoder, num) => writeOnDataView(encoder, 8).setFloat64(0, num, false); var writeBigInt64 = (encoder, num) => ( /** @type {any} */ writeOnDataView(encoder, 8).setBigInt64(0, num, false) ); var floatTestBed = new DataView(new ArrayBuffer(4)); var isFloat32 = (num) => { floatTestBed.setFloat32(0, num); return floatTestBed.getFloat32(0) === num; }; var writeAny = (encoder, data) => { switch (typeof data) { case "string": write(encoder, 119); writeVarString(encoder, data); break; case "number": if (isInteger(data) && abs(data) <= BITS31) { write(encoder, 125); writeVarInt(encoder, data); } else if (isFloat32(data)) { write(encoder, 124); writeFloat32(encoder, data); } else { write(encoder, 123); writeFloat64(encoder, data); } break; case "bigint": write(encoder, 122); writeBigInt64(encoder, data); break; case "object": if (data === null) { write(encoder, 126); } else if (isArray(data)) { write(encoder, 117); writeVarUint(encoder, data.length); for (let i = 0; i < data.length; i++) { writeAny(encoder, data[i]); } } else if (data instanceof Uint8Array) { write(encoder, 116); writeVarUint8Array(encoder, data); } else { write(encoder, 118); const keys2 = Object.keys(data); writeVarUint(encoder, keys2.length); for (let i = 0; i < keys2.length; i++) { const key = keys2[i]; writeVarString(encoder, key); writeAny(encoder, data[key]); } } break; case "boolean": write(encoder, data ? 120 : 121); break; default: write(encoder, 127); } }; var RleEncoder = class extends Encoder { /** * @param {function(Encoder, T):void} writer */ constructor(writer) { super(); this.w = writer; this.s = null; this.count = 0; } /** * @param {T} v */ write(v) { if (this.s === v) { this.count++; } else { if (this.count > 0) { writeVarUint(this, this.count - 1); } this.count = 1; this.w(this, v); this.s = v; } } }; var flushUintOptRleEncoder = (encoder) => { if (encoder.count > 0) { writeVarInt(encoder.encoder, encoder.count === 1 ? encoder.s : -encoder.s); if (encoder.count > 1) { writeVarUint(encoder.encoder, encoder.count - 2); } } }; var UintOptRleEncoder = class { constructor() { this.encoder = new Encoder(); this.s = 0; this.count = 0; } /** * @param {number} v */ write(v) { if (this.s === v) { this.count++; } else { flushUintOptRleEncoder(this); this.count = 1; this.s = v; } } /** * Flush the encoded state and transform this to a Uint8Array. * * Note that this should only be called once. */ toUint8Array() { flushUintOptRleEncoder(this); return toUint8Array(this.encoder); } }; var flushIntDiffOptRleEncoder = (encoder) => { if (encoder.count > 0) { const encodedDiff = encoder.diff * 2 + (encoder.count === 1 ? 0 : 1); writeVarInt(encoder.encoder, encodedDiff); if (encoder.count > 1) { writeVarUint(encoder.encoder, encoder.count - 2); } } }; var IntDiffOptRleEncoder = class { constructor() { this.encoder = new Encoder(); this.s = 0; this.count = 0; this.diff = 0; } /** * @param {number} v */ write(v) { if (this.diff === v - this.s) { this.s = v; this.count++; } else { flushIntDiffOptRleEncoder(this); this.count = 1; this.diff = v - this.s; this.s = v; } } /** * Flush the encoded state and transform this to a Uint8Array. * * Note that this should only be called once. */ toUint8Array() { flushIntDiffOptRleEncoder(this); return toUint8Array(this.encoder); } }; var StringEncoder = class { constructor() { this.sarr = []; this.s = ""; this.lensE = new UintOptRleEncoder(); } /** * @param {string} string */ write(string) { this.s += string; if (this.s.length > 19) { this.sarr.push(this.s); this.s = ""; } this.lensE.write(string.length); } toUint8Array() { const encoder = new Encoder(); this.sarr.push(this.s); this.s = ""; writeVarString(encoder, this.sarr.join("")); writeUint8Array(encoder, this.lensE.toUint8Array()); return toUint8Array(encoder); } }; // node_modules/lib0/error.js var create3 = (s) => new Error(s); var methodUnimplemented = () => { throw create3("Method unimplemented"); }; var unexpectedCase = () => { throw create3("Unexpected case"); }; // node_modules/lib0/decoding.js var errorUnexpectedEndOfArray = create3("Unexpected end of array"); var errorIntegerOutOfRange = create3("Integer out of Range"); var Decoder = class { /** * @param {Uint8Array} uint8Array Binary data to decode */ constructor(uint8Array) { this.arr = uint8Array; this.pos = 0; } }; var createDecoder = (uint8Array) => new Decoder(uint8Array); var hasContent = (decoder) => decoder.pos !== decoder.arr.length; var readUint8Array = (decoder, len) => { const view = new Uint8Array(decoder.arr.buffer, decoder.pos + decoder.arr.byteOffset, len); decoder.pos += len; return view; }; var readVarUint8Array = (decoder) => readUint8Array(decoder, readVarUint(decoder)); var readUint8 = (decoder) => decoder.arr[decoder.pos++]; var readVarUint = (decoder) => { let num = 0; let mult = 1; const len = decoder.arr.length; while (decoder.pos < len) { const r = decoder.arr[decoder.pos++]; num = num + (r & BITS7) * mult; mult *= 128; if (r < BIT8) { return num; } if (num > MAX_SAFE_INTEGER) { throw errorIntegerOutOfRange; } } throw errorUnexpectedEndOfArray; }; var readVarInt = (decoder) => { let r = decoder.arr[decoder.pos++]; let num = r & BITS6; let mult = 64; const sign = (r & BIT7) > 0 ? -1 : 1; if ((r & BIT8) === 0) { return sign * num; } const len = decoder.arr.length; while (decoder.pos < len) { r = decoder.arr[decoder.pos++]; num = num + (r & BITS7) * mult; mult *= 128; if (r < BIT8) { return sign * num; } if (num > MAX_SAFE_INTEGER) { throw errorIntegerOutOfRange; } } throw errorUnexpectedEndOfArray; }; var _readVarStringPolyfill = (decoder) => { let remainingLen = readVarUint(decoder); if (remainingLen === 0) { return ""; } else { let encodedString = String.fromCodePoint(readUint8(decoder)); if (--remainingLen < 100) { while (remainingLen--) { encodedString += String.fromCodePoint(readUint8(decoder)); } } else { while (remainingLen > 0) { const nextLen = remainingLen < 1e4 ? remainingLen : 1e4; const bytes = decoder.arr.subarray(decoder.pos, decoder.pos + nextLen); decoder.pos += nextLen; encodedString += String.fromCodePoint.apply( null, /** @type {any} */ bytes ); remainingLen -= nextLen; } } return decodeURIComponent(escape(encodedString)); } }; var _readVarStringNative = (decoder) => ( /** @type any */ utf8TextDecoder.decode(readVarUint8Array(decoder)) ); var readVarString = utf8TextDecoder ? _readVarStringNative : _readVarStringPolyfill; var readFromDataView = (decoder, len) => { const dv = new DataView(decoder.arr.buffer, decoder.arr.byteOffset + decoder.pos, len); decoder.pos += len; return dv; }; var readFloat32 = (decoder) => readFromDataView(decoder, 4).getFloat32(0, false); var readFloat64 = (decoder) => readFromDataView(decoder, 8).getFloat64(0, false); var readBigInt64 = (decoder) => ( /** @type {any} */ readFromDataView(decoder, 8).getBigInt64(0, false) ); var readAnyLookupTable = [ (decoder) => void 0, // CASE 127: undefined (decoder) => null, // CASE 126: null readVarInt, // CASE 125: integer readFloat32, // CASE 124: float32 readFloat64, // CASE 123: float64 readBigInt64, // CASE 122: bigint (decoder) => false, // CASE 121: boolean (false) (decoder) => true, // CASE 120: boolean (true) readVarString, // CASE 119: string (decoder) => { const len = readVarUint(decoder); const obj = {}; for (let i = 0; i < len; i++) { const key = readVarString(decoder); obj[key] = readAny(decoder); } return obj; }, (decoder) => { const len = readVarUint(decoder); const arr = []; for (let i = 0; i < len; i++) { arr.push(readAny(decoder)); } return arr; }, readVarUint8Array // CASE 116: Uint8Array ]; var readAny = (decoder) => readAnyLookupTable[127 - readUint8(decoder)](decoder); var RleDecoder = class extends Decoder { /** * @param {Uint8Array} uint8Array * @param {function(Decoder):T} reader */ constructor(uint8Array, reader) { super(uint8Array); this.reader = reader; this.s = null; this.count = 0; } read() { if (this.count === 0) { this.s = this.reader(this); if (hasContent(this)) { this.count = readVarUint(this) + 1; } else { this.count = -1; } } this.count--; return ( /** @type {T} */ this.s ); } }; var UintOptRleDecoder = class extends Decoder { /** * @param {Uint8Array} uint8Array */ constructor(uint8Array) { super(uint8Array); this.s = 0; this.count = 0; } read() { if (this.count === 0) { this.s = readVarInt(this); const isNegative = isNegativeZero(this.s); this.count = 1; if (isNegative) { this.s = -this.s; this.count = readVarUint(this) + 2; } } this.count--; return ( /** @type {number} */ this.s ); } }; var IntDiffOptRleDecoder = class extends Decoder { /** * @param {Uint8Array} uint8Array */ constructor(uint8Array) { super(uint8Array); this.s = 0; this.count = 0; this.diff = 0; } /** * @return {number} */ read() { if (this.count === 0) { const diff = readVarInt(this); const hasCount = diff & 1; this.diff = floor(diff / 2); this.count = 1; if (hasCount) { this.count = readVarUint(this) + 2; } } this.s += this.diff; this.count--; return this.s; } }; var StringDecoder = class { /** * @param {Uint8Array} uint8Array */ constructor(uint8Array) { this.decoder = new UintOptRleDecoder(uint8Array); this.str = readVarString(this.decoder); this.spos = 0; } /** * @return {string} */ read() { const end = this.spos + this.decoder.read(); const res = this.str.slice(this.spos, end); this.spos = end; return res; } }; // node_modules/lib0/webcrypto.js var subtle = crypto.subtle; var getRandomValues = crypto.getRandomValues.bind(crypto); // node_modules/lib0/random.js var uint32 = () => getRandomValues(new Uint32Array(1))[0]; var uuidv4Template = "10000000-1000-4000-8000" + -1e11; var uuidv4 = () => uuidv4Template.replace( /[018]/g, /** @param {number} c */ (c) => (c ^ uint32() & 15 >> c / 4).toString(16) ); // node_modules/lib0/time.js var getUnixTime = Date.now; // node_modules/lib0/promise.js var create4 = (f) => ( /** @type {Promise} */ new Promise(f) ); var all = Promise.all.bind(Promise); // node_modules/lib0/conditions.js var undefinedToNull = (v) => v === void 0 ? null : v; // node_modules/lib0/storage.js var VarStoragePolyfill = class { constructor() { this.map = /* @__PURE__ */ new Map(); } /** * @param {string} key * @param {any} newValue */ setItem(key, newValue) { this.map.set(key, newValue); } /** * @param {string} key */ getItem(key) { return this.map.get(key); } }; var _localStorage = new VarStoragePolyfill(); var usePolyfill = true; try { if (typeof localStorage !== "undefined" && localStorage) { _localStorage = localStorage; usePolyfill = false; } } catch (e) { } var varStorage = _localStorage; // node_modules/lib0/object.js var assign = Object.assign; var keys = Object.keys; var forEach = (obj, f) => { for (const key in obj) { f(obj[key], key); } }; var length2 = (obj) => keys(obj).length; var size = (obj) => keys(obj).length; var isEmpty = (obj) => { for (const _k in obj) { return false; } return true; }; var every = (obj, f) => { for (const key in obj) { if (!f(obj[key], key)) { return false; } } return true; }; var hasProperty = (obj, key) => Object.prototype.hasOwnProperty.call(obj, key); var equalFlat = (a, b) => a === b || size(a) === size(b) && every(a, (val, key) => (val !== void 0 || hasProperty(b, key)) && b[key] === val); var freeze = Object.freeze; var deepFreeze = (o) => { for (const key in o) { const c = o[key]; if (typeof c === "object" || typeof c === "function") { deepFreeze(o[key]); } } return freeze(o); }; // node_modules/lib0/function.js var callAll = (fs, args2, i = 0) => { try { for (; i < fs.length; i++) { fs[i](...args2); } } finally { if (i < fs.length) { callAll(fs, args2, i + 1); } } }; var id = (a) => a; var equalityStrict = (a, b) => a === b; var equalityDeep = (a, b) => { if (a == null || b == null) { return equalityStrict(a, b); } if (a.constructor !== b.constructor) { return false; } if (a === b) { return true; } switch (a.constructor) { case ArrayBuffer: a = new Uint8Array(a); b = new Uint8Array(b); // eslint-disable-next-line no-fallthrough case Uint8Array: { if (a.byteLength !== b.byteLength) { return false; } for (let i = 0; i < a.length; i++) { if (a[i] !== b[i]) { return false; } } break; } case Set: { if (a.size !== b.size) { return false; } for (const value of a) { if (!b.has(value)) { return false; } } break; } case Map: { if (a.size !== b.size) { return false; } for (const key of a.keys()) { if (!b.has(key) || !equalityDeep(a.get(key), b.get(key))) { return false; } } break; } case Object: if (length2(a) !== length2(b)) { return false; } for (const key in a) { if (!hasProperty(a, key) || !equalityDeep(a[key], b[key])) { return false; } } break; case Array: if (a.length !== b.length) { return false; } for (let i = 0; i < a.length; i++) { if (!equalityDeep(a[i], b[i])) { return false; } } break; default: return false; } return true; }; var isOneOf = (value, options) => options.includes(value); // node_modules/lib0/environment.js var isNode = typeof process !== "undefined" && process.release && /node|io\.js/.test(process.release.name) && Object.prototype.toString.call(typeof process !== "undefined" ? process : 0) === "[object process]"; var isBrowser = typeof window !== "undefined" && typeof document !== "undefined" && !isNode; var isMac = typeof navigator !== "undefined" ? /Mac/.test(navigator.platform) : false; var params; var args = []; var computeParams = () => { if (params === void 0) { if (isNode) { params = create(); const pargs = process.argv; let currParamName = null; for (let i = 0; i < pargs.length; i++) { const parg = pargs[i]; if (parg[0] === "-") { if (currParamName !== null) { params.set(currParamName, ""); } currParamName = parg; } else { if (currParamName !== null) { params.set(currParamName, parg); currParamName = null; } else { args.push(parg); } } } if (currParamName !== null) { params.set(currParamName, ""); } } else if (typeof location === "object") { params = create(); (location.search || "?").slice(1).split("&").forEach((kv) => { if (kv.length !== 0) { const [key, value] = kv.split("="); params.set(`--${fromCamelCase(key, "-")}`, value); params.set(`-${fromCamelCase(key, "-")}`, value); } }); } else { params = create(); } } return params; }; var hasParam = (name) => computeParams().has(name); var getVariable = (name) => isNode ? undefinedToNull(process.env[name.toUpperCase().replaceAll("-", "_")]) : undefinedToNull(varStorage.getItem(name)); var hasConf = (name) => hasParam("--" + name) || getVariable(name) !== null; var production = hasConf("production"); var forceColor = isNode && isOneOf(process.env.FORCE_COLOR, ["true", "1", "2"]); var supportsColor = forceColor || !hasParam("--no-colors") && // @todo deprecate --no-colors !hasConf("no-color") && (!isNode || process.stdout.isTTY) && (!isNode || hasParam("--color") || getVariable("COLORTERM") !== null || (getVariable("TERM") || "").includes("color")); // node_modules/lib0/buffer.js var createUint8ArrayFromLen = (len) => new Uint8Array(len); var createUint8ArrayViewFromArrayBuffer = (buffer, byteOffset, length3) => new Uint8Array(buffer, byteOffset, length3); var toBase64Browser = (bytes) => { let s = ""; for (let i = 0; i < bytes.byteLength; i++) { s += fromCharCode(bytes[i]); } return btoa(s); }; var toBase64Node = (bytes) => Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString("base64"); var fromBase64Browser = (s) => { const a = atob(s); const bytes = createUint8ArrayFromLen(a.length); for (let i = 0; i < a.length; i++) { bytes[i] = a.charCodeAt(i); } return bytes; }; var fromBase64Node = (s) => { const buf = Buffer.from(s, "base64"); return createUint8ArrayViewFromArrayBuffer(buf.buffer, buf.byteOffset, buf.byteLength); }; var toBase64 = isBrowser ? toBase64Browser : toBase64Node; var fromBase64 = isBrowser ? fromBase64Browser : fromBase64Node; var copyUint8Array = (uint8Array) => { const newBuf = createUint8ArrayFromLen(uint8Array.byteLength); newBuf.set(uint8Array); return newBuf; }; // node_modules/lib0/pair.js var Pair = class { /** * @param {L} left * @param {R} right */ constructor(left, right) { this.left = left; this.right = right; } }; var create5 = (left, right) => new Pair(left, right); // node_modules/lib0/dom.js var doc = ( /** @type {Document} */ typeof document !== "undefined" ? document : {} ); var domParser = ( /** @type {DOMParser} */ typeof DOMParser !== "undefined" ? new DOMParser() : null ); var mapToStyleString = (m) => map(m, (value, key) => `${key}:${value};`).join(""); var ELEMENT_NODE = doc.ELEMENT_NODE; var TEXT_NODE = doc.TEXT_NODE; var CDATA_SECTION_NODE = doc.CDATA_SECTION_NODE; var COMMENT_NODE = doc.COMMENT_NODE; var DOCUMENT_NODE = doc.DOCUMENT_NODE; var DOCUMENT_TYPE_NODE = doc.DOCUMENT_TYPE_NODE; var DOCUMENT_FRAGMENT_NODE = doc.DOCUMENT_FRAGMENT_NODE; // node_modules/lib0/symbol.js var create6 = Symbol; // node_modules/lib0/logging.common.js var BOLD = create6(); var UNBOLD = create6(); var BLUE = create6(); var GREY = create6(); var GREEN = create6(); var RED = create6(); var PURPLE = create6(); var ORANGE = create6(); var UNCOLOR = create6(); var computeNoColorLoggingArgs = (args2) => { if (args2.length === 1 && args2[0]?.constructor === Function) { args2 = /** @type {Array} */ /** @type {[function]} */ args2[0](); } const strBuilder = []; const logArgs = []; let i = 0; for (; i < args2.length; i++) { const arg = args2[i]; if (arg === void 0) { break; } else if (arg.constructor === String || arg.constructor === Number) { strBuilder.push(arg); } else if (arg.constructor === Object) { break; } } if (i > 0) { logArgs.push(strBuilder.join("")); } for (; i < args2.length; i++) { const arg = args2[i]; if (!(arg instanceof Symbol)) { logArgs.push(arg); } } return logArgs; }; var lastLoggingTime = getUnixTime(); // node_modules/lib0/logging.js var _browserStyleMap = { [BOLD]: create5("font-weight", "bold"), [UNBOLD]: create5("font-weight", "normal"), [BLUE]: create5("color", "blue"), [GREEN]: create5("color", "green"), [GREY]: create5("color", "grey"), [RED]: create5("color", "red"), [PURPLE]: create5("color", "purple"), [ORANGE]: create5("color", "orange"), // not well supported in chrome when debugging node with inspector - TODO: deprecate [UNCOLOR]: create5("color", "black") }; var computeBrowserLoggingArgs = (args2) => { if (args2.length === 1 && args2[0]?.constructor === Function) { args2 = /** @type {Array} */ /** @type {[function]} */ args2[0](); } const strBuilder = []; const styles = []; const currentStyle = create(); let logArgs = []; let i = 0; for (; i < args2.length; i++) { const arg = args2[i]; const style = _browserStyleMap[arg]; if (style !== void 0) { currentStyle.set(style.left, style.right); } else { if (arg === void 0) { break; } if (arg.constructor === String || arg.constructor === Number) { const style2 = mapToStyleString(currentStyle); if (i > 0 || style2.length > 0) { strBuilder.push("%c" + arg); styles.push(style2); } else { strBuilder.push(arg); } } else { break; } } } if (i > 0) { logArgs = styles; logArgs.unshift(strBuilder.join("")); } for (; i < args2.length; i++) { const arg = args2[i]; if (!(arg instanceof Symbol)) { logArgs.push(arg); } } return logArgs; }; var computeLoggingArgs = supportsColor ? computeBrowserLoggingArgs : computeNoColorLoggingArgs; var print = (...args2) => { console.log(...computeLoggingArgs(args2)); vconsoles.forEach((vc) => vc.print(args2)); }; var warn = (...args2) => { console.warn(...computeLoggingArgs(args2)); args2.unshift(ORANGE); vconsoles.forEach((vc) => vc.print(args2)); }; var vconsoles = create2(); // node_modules/lib0/iterator.js var createIterator = (next) => ({ /** * @return {IterableIterator} */ [Symbol.iterator]() { return this; }, // @ts-ignore next }); var iteratorFilter = (iterator, filter) => createIterator(() => { let res; do { res = iterator.next(); } while (!res.done && !filter(res.value)); return res; }); var iteratorMap = (iterator, fmap) => createIterator(() => { const { done, value } = iterator.next(); return { done, value: done ? void 0 : fmap(value) }; }); // node_modules/yjs/dist/yjs.mjs var AbstractConnector = class extends ObservableV2 { /** * @param {Doc} ydoc * @param {any} awareness */ constructor(ydoc, awareness) { super(); this.doc = ydoc; this.awareness = awareness; } }; var DeleteItem = class { /** * @param {number} clock * @param {number} len */ constructor(clock, len) { this.clock = clock; this.len = len; } }; var DeleteSet = class { constructor() { this.clients = /* @__PURE__ */ new Map(); } }; var iterateDeletedStructs = (transaction, ds, f) => ds.clients.forEach((deletes, clientid) => { const structs = ( /** @type {Array} */ transaction.doc.store.clients.get(clientid) ); if (structs != null) { const lastStruct = structs[structs.length - 1]; const clockState = lastStruct.id.clock + lastStruct.length; for (let i = 0, del = deletes[i]; i < deletes.length && del.clock < clockState; del = deletes[++i]) { iterateStructs(transaction, structs, del.clock, del.len, f); } } }); var findIndexDS = (dis, clock) => { let left = 0; let right = dis.length - 1; while (left <= right) { const midindex = floor((left + right) / 2); const mid = dis[midindex]; const midclock = mid.clock; if (midclock <= clock) { if (clock < midclock + mid.len) { return midindex; } left = midindex + 1; } else { right = midindex - 1; } } return null; }; var isDeleted = (ds, id2) => { const dis = ds.clients.get(id2.client); return dis !== void 0 && findIndexDS(dis, id2.clock) !== null; }; var sortAndMergeDeleteSet = (ds) => { ds.clients.forEach((dels) => { dels.sort((a, b) => a.clock - b.clock); let i, j; for (i = 1, j = 1; i < dels.length; i++) { const left = dels[j - 1]; const right = dels[i]; if (left.clock + left.len >= right.clock) { left.len = max(left.len, right.clock + right.len - left.clock); } else { if (j < i) { dels[j] = right; } j++; } } dels.length = j; }); }; var mergeDeleteSets = (dss) => { const merged = new DeleteSet(); for (let dssI = 0; dssI < dss.length; dssI++) { dss[dssI].clients.forEach((delsLeft, client) => { if (!merged.clients.has(client)) { const dels = delsLeft.slice(); for (let i = dssI + 1; i < dss.length; i++) { appendTo(dels, dss[i].clients.get(client) || []); } merged.clients.set(client, dels); } }); } sortAndMergeDeleteSet(merged); return merged; }; var addToDeleteSet = (ds, client, clock, length3) => { setIfUndefined(ds.clients, client, () => ( /** @type {Array} */ [] )).push(new DeleteItem(clock, length3)); }; var createDeleteSet = () => new DeleteSet(); var createDeleteSetFromStructStore = (ss) => { const ds = createDeleteSet(); ss.clients.forEach((structs, client) => { const dsitems = []; for (let i = 0; i < structs.length; i++) { const struct = structs[i]; if (struct.deleted) { const clock = struct.id.clock; let len = struct.length; if (i + 1 < structs.length) { for (let next = structs[i + 1]; i + 1 < structs.length && next.deleted; next = structs[++i + 1]) { len += next.length; } } dsitems.push(new DeleteItem(clock, len)); } } if (dsitems.length > 0) { ds.clients.set(client, dsitems); } }); return ds; }; var writeDeleteSet = (encoder, ds) => { writeVarUint(encoder.restEncoder, ds.clients.size); from(ds.clients.entries()).sort((a, b) => b[0] - a[0]).forEach(([client, dsitems]) => { encoder.resetDsCurVal(); writeVarUint(encoder.restEncoder, client); const len = dsitems.length; writeVarUint(encoder.restEncoder, len); for (let i = 0; i < len; i++) { const item = dsitems[i]; encoder.writeDsClock(item.clock); encoder.writeDsLen(item.len); } }); }; var readDeleteSet = (decoder) => { const ds = new DeleteSet(); const numClients = readVarUint(decoder.restDecoder); for (let i = 0; i < numClients; i++) { decoder.resetDsCurVal(); const client = readVarUint(decoder.restDecoder); const numberOfDeletes = readVarUint(decoder.restDecoder); if (numberOfDeletes > 0) { const dsField = setIfUndefined(ds.clients, client, () => ( /** @type {Array} */ [] )); for (let i2 = 0; i2 < numberOfDeletes; i2++) { dsField.push(new DeleteItem(decoder.readDsClock(), decoder.readDsLen())); } } } return ds; }; var readAndApplyDeleteSet = (decoder, transaction, store2) => { const unappliedDS = new DeleteSet(); const numClients = readVarUint(decoder.restDecoder); for (let i = 0; i < numClients; i++) { decoder.resetDsCurVal(); const client = readVarUint(decoder.restDecoder); const numberOfDeletes = readVarUint(decoder.restDecoder); const structs = store2.clients.get(client) || []; const state = getState(store2, client); for (let i2 = 0; i2 < numberOfDeletes; i2++) { const clock = decoder.readDsClock(); const clockEnd = clock + decoder.readDsLen(); if (clock < state) { if (state < clockEnd) { addToDeleteSet(unappliedDS, client, state, clockEnd - state); } let index = findIndexSS(structs, clock); let struct = structs[index]; if (!struct.deleted && struct.id.clock < clock) { structs.splice(index + 1, 0, splitItem(transaction, struct, clock - struct.id.clock)); index++; } while (index < structs.length) { struct = structs[index++]; if (struct.id.clock < clockEnd) { if (!struct.deleted) { if (clockEnd < struct.id.clock + struct.length) { structs.splice(index, 0, splitItem(transaction, struct, clockEnd - struct.id.clock)); } struct.delete(transaction); } } else { break; } } } else { addToDeleteSet(unappliedDS, client, clock, clockEnd - clock); } } } if (unappliedDS.clients.size > 0) { const ds = new UpdateEncoderV2(); writeVarUint(ds.restEncoder, 0); writeDeleteSet(ds, unappliedDS); return ds.toUint8Array(); } return null; }; var equalDeleteSets = (ds1, ds2) => { if (ds1.clients.size !== ds2.clients.size) return false; for (const [client, deleteItems1] of ds1.clients.entries()) { const deleteItems2 = ( /** @type {Array} */ ds2.clients.get(client) ); if (deleteItems2 === void 0 || deleteItems1.length !== deleteItems2.length) return false; for (let i = 0; i < deleteItems1.length; i++) { const di1 = deleteItems1[i]; const di2 = deleteItems2[i]; if (di1.clock !== di2.clock || di1.len !== di2.len) { return false; } } } return true; }; var generateNewClientId = uint32; var Doc = class _Doc extends ObservableV2 { /** * @param {DocOpts} opts configuration */ constructor({ guid = uuidv4(), collectionid = null, gc = true, gcFilter = () => true, meta = null, autoLoad = false, shouldLoad = true } = {}) { super(); this.gc = gc; this.gcFilter = gcFilter; this.clientID = generateNewClientId(); this.guid = guid; this.collectionid = collectionid; this.share = /* @__PURE__ */ new Map(); this.store = new StructStore(); this._transaction = null; this._transactionCleanups = []; this.subdocs = /* @__PURE__ */ new Set(); this._item = null; this.shouldLoad = shouldLoad; this.autoLoad = autoLoad; this.meta = meta; this.isLoaded = false; this.isSynced = false; this.isDestroyed = false; this.whenLoaded = create4((resolve) => { this.on("load", () => { this.isLoaded = true; resolve(this); }); }); const provideSyncedPromise = () => create4((resolve) => { const eventHandler = (isSynced) => { if (isSynced === void 0 || isSynced === true) { this.off("sync", eventHandler); resolve(); } }; this.on("sync", eventHandler); }); this.on("sync", (isSynced) => { if (isSynced === false && this.isSynced) { this.whenSynced = provideSyncedPromise(); } this.isSynced = isSynced === void 0 || isSynced === true; if (this.isSynced && !this.isLoaded) { this.emit("load", [this]); } }); this.whenSynced = provideSyncedPromise(); } /** * Notify the parent document that you request to load data into this subdocument (if it is a subdocument). * * `load()` might be used in the future to request any provider to load the most current data. * * It is safe to call `load()` multiple times. */ load() { const item = this._item; if (item !== null && !this.shouldLoad) { transact( /** @type {any} */ item.parent.doc, (transaction) => { transaction.subdocsLoaded.add(this); }, null, true ); } this.shouldLoad = true; } getSubdocs() { return this.subdocs; } getSubdocGuids() { return new Set(from(this.subdocs).map((doc2) => doc2.guid)); } /** * Changes that happen inside of a transaction are bundled. This means that * the observer fires _after_ the transaction is finished and that all changes * that happened inside of the transaction are sent as one message to the * other peers. * * @template T * @param {function(Transaction):T} f The function that should be executed as a transaction * @param {any} [origin] Origin of who started the transaction. Will be stored on transaction.origin * @return T * * @public */ transact(f, origin2 = null) { return transact(this, f, origin2); } /** * Define a shared data type. * * Multiple calls of `ydoc.get(name, TypeConstructor)` yield the same result * and do not overwrite each other. I.e. * `ydoc.get(name, Y.Array) === ydoc.get(name, Y.Array)` * * After this method is called, the type is also available on `ydoc.share.get(name)`. * * *Best Practices:* * Define all types right after the Y.Doc instance is created and store them in a separate object. * Also use the typed methods `getText(name)`, `getArray(name)`, .. * * @template {typeof AbstractType} Type * @example * const ydoc = new Y.Doc(..) * const appState = { * document: ydoc.getText('document') * comments: ydoc.getArray('comments') * } * * @param {string} name * @param {Type} TypeConstructor The constructor of the type definition. E.g. Y.Text, Y.Array, Y.Map, ... * @return {InstanceType} The created type. Constructed with TypeConstructor * * @public */ get(name, TypeConstructor = ( /** @type {any} */ AbstractType )) { const type = setIfUndefined(this.share, name, () => { const t = new TypeConstructor(); t._integrate(this, null); return t; }); const Constr = type.constructor; if (TypeConstructor !== AbstractType && Constr !== TypeConstructor) { if (Constr === AbstractType) { const t = new TypeConstructor(); t._map = type._map; type._map.forEach( /** @param {Item?} n */ (n) => { for (; n !== null; n = n.left) { n.parent = t; } } ); t._start = type._start; for (let n = t._start; n !== null; n = n.right) { n.parent = t; } t._length = type._length; this.share.set(name, t); t._integrate(this, null); return ( /** @type {InstanceType} */ t ); } else { throw new Error(`Type with the name ${name} has already been defined with a different constructor`); } } return ( /** @type {InstanceType} */ type ); } /** * @template T * @param {string} [name] * @return {YArray} * * @public */ getArray(name = "") { return ( /** @type {YArray} */ this.get(name, YArray) ); } /** * @param {string} [name] * @return {YText} * * @public */ getText(name = "") { return this.get(name, YText); } /** * @template T * @param {string} [name] * @return {YMap} * * @public */ getMap(name = "") { return ( /** @type {YMap} */ this.get(name, YMap) ); } /** * @param {string} [name] * @return {YXmlElement} * * @public */ getXmlElement(name = "") { return ( /** @type {YXmlElement<{[key:string]:string}>} */ this.get(name, YXmlElement) ); } /** * @param {string} [name] * @return {YXmlFragment} * * @public */ getXmlFragment(name = "") { return this.get(name, YXmlFragment); } /** * Converts the entire document into a js object, recursively traversing each yjs type * Doesn't log types that have not been defined (using ydoc.getType(..)). * * @deprecated Do not use this method and rather call toJSON directly on the shared types. * * @return {Object} */ toJSON() { const doc2 = {}; this.share.forEach((value, key) => { doc2[key] = value.toJSON(); }); return doc2; } /** * Emit `destroy` event and unregister all event handlers. */ destroy() { this.isDestroyed = true; from(this.subdocs).forEach((subdoc) => subdoc.destroy()); const item = this._item; if (item !== null) { this._item = null; const content = ( /** @type {ContentDoc} */ item.content ); content.doc = new _Doc({ guid: this.guid, ...content.opts, shouldLoad: false }); content.doc._item = item; transact( /** @type {any} */ item.parent.doc, (transaction) => { const doc2 = content.doc; if (!item.deleted) { transaction.subdocsAdded.add(doc2); } transaction.subdocsRemoved.add(this); }, null, true ); } this.emit("destroyed", [true]); this.emit("destroy", [this]); super.destroy(); } }; var DSDecoderV1 = class { /** * @param {decoding.Decoder} decoder */ constructor(decoder) { this.restDecoder = decoder; } resetDsCurVal() { } /** * @return {number} */ readDsClock() { return readVarUint(this.restDecoder); } /** * @return {number} */ readDsLen() { return readVarUint(this.restDecoder); } }; var UpdateDecoderV1 = class extends DSDecoderV1 { /** * @return {ID} */ readLeftID() { return createID(readVarUint(this.restDecoder), readVarUint(this.restDecoder)); } /** * @return {ID} */ readRightID() { return createID(readVarUint(this.restDecoder), readVarUint(this.restDecoder)); } /** * Read the next client id. * Use this in favor of readID whenever possible to reduce the number of objects created. */ readClient() { return readVarUint(this.restDecoder); } /** * @return {number} info An unsigned 8-bit integer */ readInfo() { return readUint8(this.restDecoder); } /** * @return {string} */ readString() { return readVarString(this.restDecoder); } /** * @return {boolean} isKey */ readParentInfo() { return readVarUint(this.restDecoder) === 1; } /** * @return {number} info An unsigned 8-bit integer */ readTypeRef() { return readVarUint(this.restDecoder); } /** * Write len of a struct - well suited for Opt RLE encoder. * * @return {number} len */ readLen() { return readVarUint(this.restDecoder); } /** * @return {any} */ readAny() { return readAny(this.restDecoder); } /** * @return {Uint8Array} */ readBuf() { return copyUint8Array(readVarUint8Array(this.restDecoder)); } /** * Legacy implementation uses JSON parse. We use any-decoding in v2. * * @return {any} */ readJSON() { return JSON.parse(readVarString(this.restDecoder)); } /** * @return {string} */ readKey() { return readVarString(this.restDecoder); } }; var DSDecoderV2 = class { /** * @param {decoding.Decoder} decoder */ constructor(decoder) { this.dsCurrVal = 0; this.restDecoder = decoder; } resetDsCurVal() { this.dsCurrVal = 0; } /** * @return {number} */ readDsClock() { this.dsCurrVal += readVarUint(this.restDecoder); return this.dsCurrVal; } /** * @return {number} */ readDsLen() { const diff = readVarUint(this.restDecoder) + 1; this.dsCurrVal += diff; return diff; } }; var UpdateDecoderV2 = class extends DSDecoderV2 { /** * @param {decoding.Decoder} decoder */ constructor(decoder) { super(decoder); this.keys = []; readVarUint(decoder); this.keyClockDecoder = new IntDiffOptRleDecoder(readVarUint8Array(decoder)); this.clientDecoder = new UintOptRleDecoder(readVarUint8Array(decoder)); this.leftClockDecoder = new IntDiffOptRleDecoder(readVarUint8Array(decoder)); this.rightClockDecoder = new IntDiffOptRleDecoder(readVarUint8Array(decoder)); this.infoDecoder = new RleDecoder(readVarUint8Array(decoder), readUint8); this.stringDecoder = new StringDecoder(readVarUint8Array(decoder)); this.parentInfoDecoder = new RleDecoder(readVarUint8Array(decoder), readUint8); this.typeRefDecoder = new UintOptRleDecoder(readVarUint8Array(decoder)); this.lenDecoder = new UintOptRleDecoder(readVarUint8Array(decoder)); } /** * @return {ID} */ readLeftID() { return new ID(this.clientDecoder.read(), this.leftClockDecoder.read()); } /** * @return {ID} */ readRightID() { return new ID(this.clientDecoder.read(), this.rightClockDecoder.read()); } /** * Read the next client id. * Use this in favor of readID whenever possible to reduce the number of objects created. */ readClient() { return this.clientDecoder.read(); } /** * @return {number} info An unsigned 8-bit integer */ readInfo() { return ( /** @type {number} */ this.infoDecoder.read() ); } /** * @return {string} */ readString() { return this.stringDecoder.read(); } /** * @return {boolean} */ readParentInfo() { return this.parentInfoDecoder.read() === 1; } /** * @return {number} An unsigned 8-bit integer */ readTypeRef() { return this.typeRefDecoder.read(); } /** * Write len of a struct - well suited for Opt RLE encoder. * * @return {number} */ readLen() { return this.lenDecoder.read(); } /** * @return {any} */ readAny() { return readAny(this.restDecoder); } /** * @return {Uint8Array} */ readBuf() { return readVarUint8Array(this.restDecoder); } /** * This is mainly here for legacy purposes. * * Initial we incoded objects using JSON. Now we use the much faster lib0/any-encoder. This method mainly exists for legacy purposes for the v1 encoder. * * @return {any} */ readJSON() { return readAny(this.restDecoder); } /** * @return {string} */ readKey() { const keyClock = this.keyClockDecoder.read(); if (keyClock < this.keys.length) { return this.keys[keyClock]; } else { const key = this.stringDecoder.read(); this.keys.push(key); return key; } } }; var DSEncoderV1 = class { constructor() { this.restEncoder = createEncoder(); } toUint8Array() { return toUint8Array(this.restEncoder); } resetDsCurVal() { } /** * @param {number} clock */ writeDsClock(clock) { writeVarUint(this.restEncoder, clock); } /** * @param {number} len */ writeDsLen(len) { writeVarUint(this.restEncoder, len); } }; var UpdateEncoderV1 = class extends DSEncoderV1 { /** * @param {ID} id */ writeLeftID(id2) { writeVarUint(this.restEncoder, id2.client); writeVarUint(this.restEncoder, id2.clock); } /** * @param {ID} id */ writeRightID(id2) { writeVarUint(this.restEncoder, id2.client); writeVarUint(this.restEncoder, id2.clock); } /** * Use writeClient and writeClock instead of writeID if possible. * @param {number} client */ writeClient(client) { writeVarUint(this.restEncoder, client); } /** * @param {number} info An unsigned 8-bit integer */ writeInfo(info) { writeUint8(this.restEncoder, info); } /** * @param {string} s */ writeString(s) { writeVarString(this.restEncoder, s); } /** * @param {boolean} isYKey */ writeParentInfo(isYKey) { writeVarUint(this.restEncoder, isYKey ? 1 : 0); } /** * @param {number} info An unsigned 8-bit integer */ writeTypeRef(info) { writeVarUint(this.restEncoder, info); } /** * Write len of a struct - well suited for Opt RLE encoder. * * @param {number} len */ writeLen(len) { writeVarUint(this.restEncoder, len); } /** * @param {any} any */ writeAny(any2) { writeAny(this.restEncoder, any2); } /** * @param {Uint8Array} buf */ writeBuf(buf) { writeVarUint8Array(this.restEncoder, buf); } /** * @param {any} embed */ writeJSON(embed) { writeVarString(this.restEncoder, JSON.stringify(embed)); } /** * @param {string} key */ writeKey(key) { writeVarString(this.restEncoder, key); } }; var DSEncoderV2 = class { constructor() { this.restEncoder = createEncoder(); this.dsCurrVal = 0; } toUint8Array() { return toUint8Array(this.restEncoder); } resetDsCurVal() { this.dsCurrVal = 0; } /** * @param {number} clock */ writeDsClock(clock) { const diff = clock - this.dsCurrVal; this.dsCurrVal = clock; writeVarUint(this.restEncoder, diff); } /** * @param {number} len */ writeDsLen(len) { if (len === 0) { unexpectedCase(); } writeVarUint(this.restEncoder, len - 1); this.dsCurrVal += len; } }; var UpdateEncoderV2 = class extends DSEncoderV2 { constructor() { super(); this.keyMap = /* @__PURE__ */ new Map(); this.keyClock = 0; this.keyClockEncoder = new IntDiffOptRleEncoder(); this.clientEncoder = new UintOptRleEncoder(); this.leftClockEncoder = new IntDiffOptRleEncoder(); this.rightClockEncoder = new IntDiffOptRleEncoder(); this.infoEncoder = new RleEncoder(writeUint8); this.stringEncoder = new StringEncoder(); this.parentInfoEncoder = new RleEncoder(writeUint8); this.typeRefEncoder = new UintOptRleEncoder(); this.lenEncoder = new UintOptRleEncoder(); } toUint8Array() { const encoder = createEncoder(); writeVarUint(encoder, 0); writeVarUint8Array(encoder, this.keyClockEncoder.toUint8Array()); writeVarUint8Array(encoder, this.clientEncoder.toUint8Array()); writeVarUint8Array(encoder, this.leftClockEncoder.toUint8Array()); writeVarUint8Array(encoder, this.rightClockEncoder.toUint8Array()); writeVarUint8Array(encoder, toUint8Array(this.infoEncoder)); writeVarUint8Array(encoder, this.stringEncoder.toUint8Array()); writeVarUint8Array(encoder, toUint8Array(this.parentInfoEncoder)); writeVarUint8Array(encoder, this.typeRefEncoder.toUint8Array()); writeVarUint8Array(encoder, this.lenEncoder.toUint8Array()); writeUint8Array(encoder, toUint8Array(this.restEncoder)); return toUint8Array(encoder); } /** * @param {ID} id */ writeLeftID(id2) { this.clientEncoder.write(id2.client); this.leftClockEncoder.write(id2.clock); } /** * @param {ID} id */ writeRightID(id2) { this.clientEncoder.write(id2.client); this.rightClockEncoder.write(id2.clock); } /** * @param {number} client */ writeClient(client) { this.clientEncoder.write(client); } /** * @param {number} info An unsigned 8-bit integer */ writeInfo(info) { this.infoEncoder.write(info); } /** * @param {string} s */ writeString(s) { this.stringEncoder.write(s); } /** * @param {boolean} isYKey */ writeParentInfo(isYKey) { this.parentInfoEncoder.write(isYKey ? 1 : 0); } /** * @param {number} info An unsigned 8-bit integer */ writeTypeRef(info) { this.typeRefEncoder.write(info); } /** * Write len of a struct - well suited for Opt RLE encoder. * * @param {number} len */ writeLen(len) { this.lenEncoder.write(len); } /** * @param {any} any */ writeAny(any2) { writeAny(this.restEncoder, any2); } /** * @param {Uint8Array} buf */ writeBuf(buf) { writeVarUint8Array(this.restEncoder, buf); } /** * This is mainly here for legacy purposes. * * Initial we incoded objects using JSON. Now we use the much faster lib0/any-encoder. This method mainly exists for legacy purposes for the v1 encoder. * * @param {any} embed */ writeJSON(embed) { writeAny(this.restEncoder, embed); } /** * Property keys are often reused. For example, in y-prosemirror the key `bold` might * occur very often. For a 3d application, the key `position` might occur very often. * * We cache these keys in a Map and refer to them via a unique number. * * @param {string} key */ writeKey(key) { const clock = this.keyMap.get(key); if (clock === void 0) { this.keyClockEncoder.write(this.keyClock++); this.stringEncoder.write(key); } else { this.keyClockEncoder.write(clock); } } }; var writeStructs = (encoder, structs, client, clock) => { clock = max(clock, structs[0].id.clock); const startNewStructs = findIndexSS(structs, clock); writeVarUint(encoder.restEncoder, structs.length - startNewStructs); encoder.writeClient(client); writeVarUint(encoder.restEncoder, clock); const firstStruct = structs[startNewStructs]; firstStruct.write(encoder, clock - firstStruct.id.clock); for (let i = startNewStructs + 1; i < structs.length; i++) { structs[i].write(encoder, 0); } }; var writeClientsStructs = (encoder, store2, _sm) => { const sm = /* @__PURE__ */ new Map(); _sm.forEach((clock, client) => { if (getState(store2, client) > clock) { sm.set(client, clock); } }); getStateVector(store2).forEach((_clock, client) => { if (!_sm.has(client)) { sm.set(client, 0); } }); writeVarUint(encoder.restEncoder, sm.size); from(sm.entries()).sort((a, b) => b[0] - a[0]).forEach(([client, clock]) => { writeStructs( encoder, /** @type {Array} */ store2.clients.get(client), client, clock ); }); }; var readClientsStructRefs = (decoder, doc2) => { const clientRefs = create(); const numOfStateUpdates = readVarUint(decoder.restDecoder); for (let i = 0; i < numOfStateUpdates; i++) { const numberOfStructs = readVarUint(decoder.restDecoder); const refs = new Array(numberOfStructs); const client = decoder.readClient(); let clock = readVarUint(decoder.restDecoder); clientRefs.set(client, { i: 0, refs }); for (let i2 = 0; i2 < numberOfStructs; i2++) { const info = decoder.readInfo(); switch (BITS5 & info) { case 0: { const len = decoder.readLen(); refs[i2] = new GC(createID(client, clock), len); clock += len; break; } case 10: { const len = readVarUint(decoder.restDecoder); refs[i2] = new Skip(createID(client, clock), len); clock += len; break; } default: { const cantCopyParentInfo = (info & (BIT7 | BIT8)) === 0; const struct = new Item( createID(client, clock), null, // left (info & BIT8) === BIT8 ? decoder.readLeftID() : null, // origin null, // right (info & BIT7) === BIT7 ? decoder.readRightID() : null, // right origin cantCopyParentInfo ? decoder.readParentInfo() ? doc2.get(decoder.readString()) : decoder.readLeftID() : null, // parent cantCopyParentInfo && (info & BIT6) === BIT6 ? decoder.readString() : null, // parentSub readItemContent(decoder, info) // item content ); refs[i2] = struct; clock += struct.length; } } } } return clientRefs; }; var integrateStructs = (transaction, store2, clientsStructRefs) => { const stack = []; let clientsStructRefsIds = from(clientsStructRefs.keys()).sort((a, b) => a - b); if (clientsStructRefsIds.length === 0) { return null; } const getNextStructTarget = () => { if (clientsStructRefsIds.length === 0) { return null; } let nextStructsTarget = ( /** @type {{i:number,refs:Array}} */ clientsStructRefs.get(clientsStructRefsIds[clientsStructRefsIds.length - 1]) ); while (nextStructsTarget.refs.length === nextStructsTarget.i) { clientsStructRefsIds.pop(); if (clientsStructRefsIds.length > 0) { nextStructsTarget = /** @type {{i:number,refs:Array}} */ clientsStructRefs.get(clientsStructRefsIds[clientsStructRefsIds.length - 1]); } else { return null; } } return nextStructsTarget; }; let curStructsTarget = getNextStructTarget(); if (curStructsTarget === null) { return null; } const restStructs = new StructStore(); const missingSV = /* @__PURE__ */ new Map(); const updateMissingSv = (client, clock) => { const mclock = missingSV.get(client); if (mclock == null || mclock > clock) { missingSV.set(client, clock); } }; let stackHead = ( /** @type {any} */ curStructsTarget.refs[ /** @type {any} */ curStructsTarget.i++ ] ); const state = /* @__PURE__ */ new Map(); const addStackToRestSS = () => { for (const item of stack) { const client = item.id.client; const inapplicableItems = clientsStructRefs.get(client); if (inapplicableItems) { inapplicableItems.i--; restStructs.clients.set(client, inapplicableItems.refs.slice(inapplicableItems.i)); clientsStructRefs.delete(client); inapplicableItems.i = 0; inapplicableItems.refs = []; } else { restStructs.clients.set(client, [item]); } clientsStructRefsIds = clientsStructRefsIds.filter((c) => c !== client); } stack.length = 0; }; while (true) { if (stackHead.constructor !== Skip) { const localClock = setIfUndefined(state, stackHead.id.client, () => getState(store2, stackHead.id.client)); const offset = localClock - stackHead.id.clock; if (offset < 0) { stack.push(stackHead); updateMissingSv(stackHead.id.client, stackHead.id.clock - 1); addStackToRestSS(); } else { const missing = stackHead.getMissing(transaction, store2); if (missing !== null) { stack.push(stackHead); const structRefs = clientsStructRefs.get( /** @type {number} */ missing ) || { refs: [], i: 0 }; if (structRefs.refs.length === structRefs.i) { updateMissingSv( /** @type {number} */ missing, getState(store2, missing) ); addStackToRestSS(); } else { stackHead = structRefs.refs[structRefs.i++]; continue; } } else if (offset === 0 || offset < stackHead.length) { stackHead.integrate(transaction, offset); state.set(stackHead.id.client, stackHead.id.clock + stackHead.length); } } } if (stack.length > 0) { stackHead = /** @type {GC|Item} */ stack.pop(); } else if (curStructsTarget !== null && curStructsTarget.i < curStructsTarget.refs.length) { stackHead = /** @type {GC|Item} */ curStructsTarget.refs[curStructsTarget.i++]; } else { curStructsTarget = getNextStructTarget(); if (curStructsTarget === null) { break; } else { stackHead = /** @type {GC|Item} */ curStructsTarget.refs[curStructsTarget.i++]; } } } if (restStructs.clients.size > 0) { const encoder = new UpdateEncoderV2(); writeClientsStructs(encoder, restStructs, /* @__PURE__ */ new Map()); writeVarUint(encoder.restEncoder, 0); return { missing: missingSV, update: encoder.toUint8Array() }; } return null; }; var writeStructsFromTransaction = (encoder, transaction) => writeClientsStructs(encoder, transaction.doc.store, transaction.beforeState); var readUpdateV2 = (decoder, ydoc, transactionOrigin, structDecoder = new UpdateDecoderV2(decoder)) => transact(ydoc, (transaction) => { transaction.local = false; let retry = false; const doc2 = transaction.doc; const store2 = doc2.store; const ss = readClientsStructRefs(structDecoder, doc2); const restStructs = integrateStructs(transaction, store2, ss); const pending = store2.pendingStructs; if (pending) { for (const [client, clock] of pending.missing) { if (clock < getState(store2, client)) { retry = true; break; } } if (restStructs) { for (const [client, clock] of restStructs.missing) { const mclock = pending.missing.get(client); if (mclock == null || mclock > clock) { pending.missing.set(client, clock); } } pending.update = mergeUpdatesV2([pending.update, restStructs.update]); } } else { store2.pendingStructs = restStructs; } const dsRest = readAndApplyDeleteSet(structDecoder, transaction, store2); if (store2.pendingDs) { const pendingDSUpdate = new UpdateDecoderV2(createDecoder(store2.pendingDs)); readVarUint(pendingDSUpdate.restDecoder); const dsRest2 = readAndApplyDeleteSet(pendingDSUpdate, transaction, store2); if (dsRest && dsRest2) { store2.pendingDs = mergeUpdatesV2([dsRest, dsRest2]); } else { store2.pendingDs = dsRest || dsRest2; } } else { store2.pendingDs = dsRest; } if (retry) { const update = ( /** @type {{update: Uint8Array}} */ store2.pendingStructs.update ); store2.pendingStructs = null; applyUpdateV2(transaction.doc, update); } }, transactionOrigin, false); var readUpdate = (decoder, ydoc, transactionOrigin) => readUpdateV2(decoder, ydoc, transactionOrigin, new UpdateDecoderV1(decoder)); var applyUpdateV2 = (ydoc, update, transactionOrigin, YDecoder = UpdateDecoderV2) => { const decoder = createDecoder(update); readUpdateV2(decoder, ydoc, transactionOrigin, new YDecoder(decoder)); }; var applyUpdate = (ydoc, update, transactionOrigin) => applyUpdateV2(ydoc, update, transactionOrigin, UpdateDecoderV1); var writeStateAsUpdate = (encoder, doc2, targetStateVector = /* @__PURE__ */ new Map()) => { writeClientsStructs(encoder, doc2.store, targetStateVector); writeDeleteSet(encoder, createDeleteSetFromStructStore(doc2.store)); }; var encodeStateAsUpdateV2 = (doc2, encodedTargetStateVector = new Uint8Array([0]), encoder = new UpdateEncoderV2()) => { const targetStateVector = decodeStateVector(encodedTargetStateVector); writeStateAsUpdate(encoder, doc2, targetStateVector); const updates = [encoder.toUint8Array()]; if (doc2.store.pendingDs) { updates.push(doc2.store.pendingDs); } if (doc2.store.pendingStructs) { updates.push(diffUpdateV2(doc2.store.pendingStructs.update, encodedTargetStateVector)); } if (updates.length > 1) { if (encoder.constructor === UpdateEncoderV1) { return mergeUpdates(updates.map((update, i) => i === 0 ? update : convertUpdateFormatV2ToV1(update))); } else if (encoder.constructor === UpdateEncoderV2) { return mergeUpdatesV2(updates); } } return updates[0]; }; var encodeStateAsUpdate = (doc2, encodedTargetStateVector) => encodeStateAsUpdateV2(doc2, encodedTargetStateVector, new UpdateEncoderV1()); var readStateVector = (decoder) => { const ss = /* @__PURE__ */ new Map(); const ssLength = readVarUint(decoder.restDecoder); for (let i = 0; i < ssLength; i++) { const client = readVarUint(decoder.restDecoder); const clock = readVarUint(decoder.restDecoder); ss.set(client, clock); } return ss; }; var decodeStateVector = (decodedState) => readStateVector(new DSDecoderV1(createDecoder(decodedState))); var writeStateVector = (encoder, sv) => { writeVarUint(encoder.restEncoder, sv.size); from(sv.entries()).sort((a, b) => b[0] - a[0]).forEach(([client, clock]) => { writeVarUint(encoder.restEncoder, client); writeVarUint(encoder.restEncoder, clock); }); return encoder; }; var writeDocumentStateVector = (encoder, doc2) => writeStateVector(encoder, getStateVector(doc2.store)); var encodeStateVectorV2 = (doc2, encoder = new DSEncoderV2()) => { if (doc2 instanceof Map) { writeStateVector(encoder, doc2); } else { writeDocumentStateVector(encoder, doc2); } return encoder.toUint8Array(); }; var encodeStateVector = (doc2) => encodeStateVectorV2(doc2, new DSEncoderV1()); var EventHandler = class { constructor() { this.l = []; } }; var createEventHandler = () => new EventHandler(); var addEventHandlerListener = (eventHandler, f) => eventHandler.l.push(f); var removeEventHandlerListener = (eventHandler, f) => { const l = eventHandler.l; const len = l.length; eventHandler.l = l.filter((g) => f !== g); if (len === eventHandler.l.length) { console.error("[yjs] Tried to remove event handler that doesn't exist."); } }; var callEventHandlerListeners = (eventHandler, arg0, arg1) => callAll(eventHandler.l, [arg0, arg1]); var ID = class { /** * @param {number} client client id * @param {number} clock unique per client id, continuous number */ constructor(client, clock) { this.client = client; this.clock = clock; } }; var compareIDs = (a, b) => a === b || a !== null && b !== null && a.client === b.client && a.clock === b.clock; var createID = (client, clock) => new ID(client, clock); var writeID = (encoder, id2) => { writeVarUint(encoder, id2.client); writeVarUint(encoder, id2.clock); }; var readID = (decoder) => createID(readVarUint(decoder), readVarUint(decoder)); var findRootTypeKey = (type) => { for (const [key, value] of type.doc.share.entries()) { if (value === type) { return key; } } throw unexpectedCase(); }; var isParentOf = (parent, child) => { while (child !== null) { if (child.parent === parent) { return true; } child = /** @type {AbstractType} */ child.parent._item; } return false; }; var logType = (type) => { const res = []; let n = type._start; while (n) { res.push(n); n = n.right; } console.log("Children: ", res); console.log("Children content: ", res.filter((m) => !m.deleted).map((m) => m.content)); }; var PermanentUserData = class { /** * @param {Doc} doc * @param {YMap} [storeType] */ constructor(doc2, storeType = doc2.getMap("users")) { const dss = /* @__PURE__ */ new Map(); this.yusers = storeType; this.doc = doc2; this.clients = /* @__PURE__ */ new Map(); this.dss = dss; const initUser = (user, userDescription) => { const ds = user.get("ds"); const ids = user.get("ids"); const addClientId = ( /** @param {number} clientid */ (clientid) => this.clients.set(clientid, userDescription) ); ds.observe( /** @param {YArrayEvent} event */ (event) => { event.changes.added.forEach((item) => { item.content.getContent().forEach((encodedDs) => { if (encodedDs instanceof Uint8Array) { this.dss.set(userDescription, mergeDeleteSets([this.dss.get(userDescription) || createDeleteSet(), readDeleteSet(new DSDecoderV1(createDecoder(encodedDs)))])); } }); }); } ); this.dss.set(userDescription, mergeDeleteSets(ds.map((encodedDs) => readDeleteSet(new DSDecoderV1(createDecoder(encodedDs)))))); ids.observe( /** @param {YArrayEvent} event */ (event) => event.changes.added.forEach((item) => item.content.getContent().forEach(addClientId)) ); ids.forEach(addClientId); }; storeType.observe((event) => { event.keysChanged.forEach( (userDescription) => initUser(storeType.get(userDescription), userDescription) ); }); storeType.forEach(initUser); } /** * @param {Doc} doc * @param {number} clientid * @param {string} userDescription * @param {Object} conf * @param {function(Transaction, DeleteSet):boolean} [conf.filter] */ setUserMapping(doc2, clientid, userDescription, { filter = () => true } = {}) { const users2 = this.yusers; let user = users2.get(userDescription); if (!user) { user = new YMap(); user.set("ids", new YArray()); user.set("ds", new YArray()); users2.set(userDescription, user); } user.get("ids").push([clientid]); users2.observe((_event) => { setTimeout(() => { const userOverwrite = users2.get(userDescription); if (userOverwrite !== user) { user = userOverwrite; this.clients.forEach((_userDescription, clientid2) => { if (userDescription === _userDescription) { user.get("ids").push([clientid2]); } }); const encoder = new DSEncoderV1(); const ds = this.dss.get(userDescription); if (ds) { writeDeleteSet(encoder, ds); user.get("ds").push([encoder.toUint8Array()]); } } }, 0); }); doc2.on( "afterTransaction", /** @param {Transaction} transaction */ (transaction) => { setTimeout(() => { const yds = user.get("ds"); const ds = transaction.deleteSet; if (transaction.local && ds.clients.size > 0 && filter(transaction, ds)) { const encoder = new DSEncoderV1(); writeDeleteSet(encoder, ds); yds.push([encoder.toUint8Array()]); } }); } ); } /** * @param {number} clientid * @return {any} */ getUserByClientId(clientid) { return this.clients.get(clientid) || null; } /** * @param {ID} id * @return {string | null} */ getUserByDeletedId(id2) { for (const [userDescription, ds] of this.dss.entries()) { if (isDeleted(ds, id2)) { return userDescription; } } return null; } }; var RelativePosition = class { /** * @param {ID|null} type * @param {string|null} tname * @param {ID|null} item * @param {number} assoc */ constructor(type, tname, item, assoc = 0) { this.type = type; this.tname = tname; this.item = item; this.assoc = assoc; } }; var relativePositionToJSON = (rpos) => { const json = {}; if (rpos.type) { json.type = rpos.type; } if (rpos.tname) { json.tname = rpos.tname; } if (rpos.item) { json.item = rpos.item; } if (rpos.assoc != null) { json.assoc = rpos.assoc; } return json; }; var createRelativePositionFromJSON = (json) => new RelativePosition(json.type == null ? null : createID(json.type.client, json.type.clock), json.tname ?? null, json.item == null ? null : createID(json.item.client, json.item.clock), json.assoc == null ? 0 : json.assoc); var AbsolutePosition = class { /** * @param {AbstractType} type * @param {number} index * @param {number} [assoc] */ constructor(type, index, assoc = 0) { this.type = type; this.index = index; this.assoc = assoc; } }; var createAbsolutePosition = (type, index, assoc = 0) => new AbsolutePosition(type, index, assoc); var createRelativePosition = (type, item, assoc) => { let typeid = null; let tname = null; if (type._item === null) { tname = findRootTypeKey(type); } else { typeid = createID(type._item.id.client, type._item.id.clock); } return new RelativePosition(typeid, tname, item, assoc); }; var createRelativePositionFromTypeIndex = (type, index, assoc = 0) => { let t = type._start; if (assoc < 0) { if (index === 0) { return createRelativePosition(type, null, assoc); } index--; } while (t !== null) { if (!t.deleted && t.countable) { if (t.length > index) { return createRelativePosition(type, createID(t.id.client, t.id.clock + index), assoc); } index -= t.length; } if (t.right === null && assoc < 0) { return createRelativePosition(type, t.lastId, assoc); } t = t.right; } return createRelativePosition(type, null, assoc); }; var writeRelativePosition = (encoder, rpos) => { const { type, tname, item, assoc } = rpos; if (item !== null) { writeVarUint(encoder, 0); writeID(encoder, item); } else if (tname !== null) { writeUint8(encoder, 1); writeVarString(encoder, tname); } else if (type !== null) { writeUint8(encoder, 2); writeID(encoder, type); } else { throw unexpectedCase(); } writeVarInt(encoder, assoc); return encoder; }; var encodeRelativePosition = (rpos) => { const encoder = createEncoder(); writeRelativePosition(encoder, rpos); return toUint8Array(encoder); }; var readRelativePosition = (decoder) => { let type = null; let tname = null; let itemID = null; switch (readVarUint(decoder)) { case 0: itemID = readID(decoder); break; case 1: tname = readVarString(decoder); break; case 2: { type = readID(decoder); } } const assoc = hasContent(decoder) ? readVarInt(decoder) : 0; return new RelativePosition(type, tname, itemID, assoc); }; var decodeRelativePosition = (uint8Array) => readRelativePosition(createDecoder(uint8Array)); var getItemWithOffset = (store2, id2) => { const item = getItem(store2, id2); const diff = id2.clock - item.id.clock; return { item, diff }; }; var createAbsolutePositionFromRelativePosition = (rpos, doc2, followUndoneDeletions = true) => { const store2 = doc2.store; const rightID = rpos.item; const typeID = rpos.type; const tname = rpos.tname; const assoc = rpos.assoc; let type = null; let index = 0; if (rightID !== null) { if (getState(store2, rightID.client) <= rightID.clock) { return null; } const res = followUndoneDeletions ? followRedone(store2, rightID) : getItemWithOffset(store2, rightID); const right = res.item; if (!(right instanceof Item)) { return null; } type = /** @type {AbstractType} */ right.parent; if (type._item === null || !type._item.deleted) { index = right.deleted || !right.countable ? 0 : res.diff + (assoc >= 0 ? 0 : 1); let n = right.left; while (n !== null) { if (!n.deleted && n.countable) { index += n.length; } n = n.left; } } } else { if (tname !== null) { type = doc2.get(tname); } else if (typeID !== null) { if (getState(store2, typeID.client) <= typeID.clock) { return null; } const { item } = followUndoneDeletions ? followRedone(store2, typeID) : { item: getItem(store2, typeID) }; if (item instanceof Item && item.content instanceof ContentType) { type = item.content.type; } else { return null; } } else { throw unexpectedCase(); } if (assoc >= 0) { index = type._length; } else { index = 0; } } return createAbsolutePosition(type, index, rpos.assoc); }; var compareRelativePositions = (a, b) => a === b || a !== null && b !== null && a.tname === b.tname && compareIDs(a.item, b.item) && compareIDs(a.type, b.type) && a.assoc === b.assoc; var Snapshot = class { /** * @param {DeleteSet} ds * @param {Map} sv state map */ constructor(ds, sv) { this.ds = ds; this.sv = sv; } }; var equalSnapshots = (snap1, snap2) => { const ds1 = snap1.ds.clients; const ds2 = snap2.ds.clients; const sv1 = snap1.sv; const sv2 = snap2.sv; if (sv1.size !== sv2.size || ds1.size !== ds2.size) { return false; } for (const [key, value] of sv1.entries()) { if (sv2.get(key) !== value) { return false; } } for (const [client, dsitems1] of ds1.entries()) { const dsitems2 = ds2.get(client) || []; if (dsitems1.length !== dsitems2.length) { return false; } for (let i = 0; i < dsitems1.length; i++) { const dsitem1 = dsitems1[i]; const dsitem2 = dsitems2[i]; if (dsitem1.clock !== dsitem2.clock || dsitem1.len !== dsitem2.len) { return false; } } } return true; }; var encodeSnapshotV2 = (snapshot2, encoder = new DSEncoderV2()) => { writeDeleteSet(encoder, snapshot2.ds); writeStateVector(encoder, snapshot2.sv); return encoder.toUint8Array(); }; var encodeSnapshot = (snapshot2) => encodeSnapshotV2(snapshot2, new DSEncoderV1()); var decodeSnapshotV2 = (buf, decoder = new DSDecoderV2(createDecoder(buf))) => { return new Snapshot(readDeleteSet(decoder), readStateVector(decoder)); }; var decodeSnapshot = (buf) => decodeSnapshotV2(buf, new DSDecoderV1(createDecoder(buf))); var createSnapshot = (ds, sm) => new Snapshot(ds, sm); var emptySnapshot = createSnapshot(createDeleteSet(), /* @__PURE__ */ new Map()); var snapshot = (doc2) => createSnapshot(createDeleteSetFromStructStore(doc2.store), getStateVector(doc2.store)); var isVisible = (item, snapshot2) => snapshot2 === void 0 ? !item.deleted : snapshot2.sv.has(item.id.client) && (snapshot2.sv.get(item.id.client) || 0) > item.id.clock && !isDeleted(snapshot2.ds, item.id); var splitSnapshotAffectedStructs = (transaction, snapshot2) => { const meta = setIfUndefined(transaction.meta, splitSnapshotAffectedStructs, create2); const store2 = transaction.doc.store; if (!meta.has(snapshot2)) { snapshot2.sv.forEach((clock, client) => { if (clock < getState(store2, client)) { getItemCleanStart(transaction, createID(client, clock)); } }); iterateDeletedStructs(transaction, snapshot2.ds, (_item) => { }); meta.add(snapshot2); } }; var createDocFromSnapshot = (originDoc, snapshot2, newDoc = new Doc()) => { if (originDoc.gc) { throw new Error("Garbage-collection must be disabled in `originDoc`!"); } const { sv, ds } = snapshot2; const encoder = new UpdateEncoderV2(); originDoc.transact((transaction) => { let size2 = 0; sv.forEach((clock) => { if (clock > 0) { size2++; } }); writeVarUint(encoder.restEncoder, size2); for (const [client, clock] of sv) { if (clock === 0) { continue; } if (clock < getState(originDoc.store, client)) { getItemCleanStart(transaction, createID(client, clock)); } const structs = originDoc.store.clients.get(client) || []; const lastStructIndex = findIndexSS(structs, clock - 1); writeVarUint(encoder.restEncoder, lastStructIndex + 1); encoder.writeClient(client); writeVarUint(encoder.restEncoder, 0); for (let i = 0; i <= lastStructIndex; i++) { structs[i].write(encoder, 0); } } writeDeleteSet(encoder, ds); }); applyUpdateV2(newDoc, encoder.toUint8Array(), "snapshot"); return newDoc; }; var snapshotContainsUpdateV2 = (snapshot2, update, YDecoder = UpdateDecoderV2) => { const updateDecoder = new YDecoder(createDecoder(update)); const lazyDecoder = new LazyStructReader(updateDecoder, false); for (let curr = lazyDecoder.curr; curr !== null; curr = lazyDecoder.next()) { if ((snapshot2.sv.get(curr.id.client) || 0) < curr.id.clock + curr.length) { return false; } } const mergedDS = mergeDeleteSets([snapshot2.ds, readDeleteSet(updateDecoder)]); return equalDeleteSets(snapshot2.ds, mergedDS); }; var snapshotContainsUpdate = (snapshot2, update) => snapshotContainsUpdateV2(snapshot2, update, UpdateDecoderV1); var StructStore = class { constructor() { this.clients = /* @__PURE__ */ new Map(); this.pendingStructs = null; this.pendingDs = null; } }; var getStateVector = (store2) => { const sm = /* @__PURE__ */ new Map(); store2.clients.forEach((structs, client) => { const struct = structs[structs.length - 1]; sm.set(client, struct.id.clock + struct.length); }); return sm; }; var getState = (store2, client) => { const structs = store2.clients.get(client); if (structs === void 0) { return 0; } const lastStruct = structs[structs.length - 1]; return lastStruct.id.clock + lastStruct.length; }; var addStruct = (store2, struct) => { let structs = store2.clients.get(struct.id.client); if (structs === void 0) { structs = []; store2.clients.set(struct.id.client, structs); } else { const lastStruct = structs[structs.length - 1]; if (lastStruct.id.clock + lastStruct.length !== struct.id.clock) { throw unexpectedCase(); } } structs.push(struct); }; var findIndexSS = (structs, clock) => { let left = 0; let right = structs.length - 1; let mid = structs[right]; let midclock = mid.id.clock; if (midclock === clock) { return right; } let midindex = floor(clock / (midclock + mid.length - 1) * right); while (left <= right) { mid = structs[midindex]; midclock = mid.id.clock; if (midclock <= clock) { if (clock < midclock + mid.length) { return midindex; } left = midindex + 1; } else { right = midindex - 1; } midindex = floor((left + right) / 2); } throw unexpectedCase(); }; var find = (store2, id2) => { const structs = store2.clients.get(id2.client); return structs[findIndexSS(structs, id2.clock)]; }; var getItem = ( /** @type {function(StructStore,ID):Item} */ find ); var findIndexCleanStart = (transaction, structs, clock) => { const index = findIndexSS(structs, clock); const struct = structs[index]; if (struct.id.clock < clock && struct instanceof Item) { structs.splice(index + 1, 0, splitItem(transaction, struct, clock - struct.id.clock)); return index + 1; } return index; }; var getItemCleanStart = (transaction, id2) => { const structs = ( /** @type {Array} */ transaction.doc.store.clients.get(id2.client) ); return structs[findIndexCleanStart(transaction, structs, id2.clock)]; }; var getItemCleanEnd = (transaction, store2, id2) => { const structs = store2.clients.get(id2.client); const index = findIndexSS(structs, id2.clock); const struct = structs[index]; if (id2.clock !== struct.id.clock + struct.length - 1 && struct.constructor !== GC) { structs.splice(index + 1, 0, splitItem(transaction, struct, id2.clock - struct.id.clock + 1)); } return struct; }; var replaceStruct = (store2, struct, newStruct) => { const structs = ( /** @type {Array} */ store2.clients.get(struct.id.client) ); structs[findIndexSS(structs, struct.id.clock)] = newStruct; }; var iterateStructs = (transaction, structs, clockStart, len, f) => { if (len === 0) { return; } const clockEnd = clockStart + len; let index = findIndexCleanStart(transaction, structs, clockStart); let struct; do { struct = structs[index++]; if (clockEnd < struct.id.clock + struct.length) { findIndexCleanStart(transaction, structs, clockEnd); } f(struct); } while (index < structs.length && structs[index].id.clock < clockEnd); }; var Transaction = class { /** * @param {Doc} doc * @param {any} origin * @param {boolean} local */ constructor(doc2, origin2, local) { this.doc = doc2; this.deleteSet = new DeleteSet(); this.beforeState = getStateVector(doc2.store); this.afterState = /* @__PURE__ */ new Map(); this.changed = /* @__PURE__ */ new Map(); this.changedParentTypes = /* @__PURE__ */ new Map(); this._mergeStructs = []; this.origin = origin2; this.meta = /* @__PURE__ */ new Map(); this.local = local; this.subdocsAdded = /* @__PURE__ */ new Set(); this.subdocsRemoved = /* @__PURE__ */ new Set(); this.subdocsLoaded = /* @__PURE__ */ new Set(); this._needFormattingCleanup = false; } }; var writeUpdateMessageFromTransaction = (encoder, transaction) => { if (transaction.deleteSet.clients.size === 0 && !any(transaction.afterState, (clock, client) => transaction.beforeState.get(client) !== clock)) { return false; } sortAndMergeDeleteSet(transaction.deleteSet); writeStructsFromTransaction(encoder, transaction); writeDeleteSet(encoder, transaction.deleteSet); return true; }; var addChangedTypeToTransaction = (transaction, type, parentSub) => { const item = type._item; if (item === null || item.id.clock < (transaction.beforeState.get(item.id.client) || 0) && !item.deleted) { setIfUndefined(transaction.changed, type, create2).add(parentSub); } }; var tryToMergeWithLefts = (structs, pos) => { let right = structs[pos]; let left = structs[pos - 1]; let i = pos; for (; i > 0; right = left, left = structs[--i - 1]) { if (left.deleted === right.deleted && left.constructor === right.constructor) { if (left.mergeWith(right)) { if (right instanceof Item && right.parentSub !== null && /** @type {AbstractType} */ right.parent._map.get(right.parentSub) === right) { right.parent._map.set( right.parentSub, /** @type {Item} */ left ); } continue; } } break; } const merged = pos - i; if (merged) { structs.splice(pos + 1 - merged, merged); } return merged; }; var tryGcDeleteSet = (ds, store2, gcFilter) => { for (const [client, deleteItems] of ds.clients.entries()) { const structs = ( /** @type {Array} */ store2.clients.get(client) ); for (let di = deleteItems.length - 1; di >= 0; di--) { const deleteItem = deleteItems[di]; const endDeleteItemClock = deleteItem.clock + deleteItem.len; for (let si = findIndexSS(structs, deleteItem.clock), struct = structs[si]; si < structs.length && struct.id.clock < endDeleteItemClock; struct = structs[++si]) { const struct2 = structs[si]; if (deleteItem.clock + deleteItem.len <= struct2.id.clock) { break; } if (struct2 instanceof Item && struct2.deleted && !struct2.keep && gcFilter(struct2)) { struct2.gc(store2, false); } } } } }; var tryMergeDeleteSet = (ds, store2) => { ds.clients.forEach((deleteItems, client) => { const structs = ( /** @type {Array} */ store2.clients.get(client) ); for (let di = deleteItems.length - 1; di >= 0; di--) { const deleteItem = deleteItems[di]; const mostRightIndexToCheck = min(structs.length - 1, 1 + findIndexSS(structs, deleteItem.clock + deleteItem.len - 1)); for (let si = mostRightIndexToCheck, struct = structs[si]; si > 0 && struct.id.clock >= deleteItem.clock; struct = structs[si]) { si -= 1 + tryToMergeWithLefts(structs, si); } } }); }; var tryGc = (ds, store2, gcFilter) => { tryGcDeleteSet(ds, store2, gcFilter); tryMergeDeleteSet(ds, store2); }; var cleanupTransactions = (transactionCleanups, i) => { if (i < transactionCleanups.length) { const transaction = transactionCleanups[i]; const doc2 = transaction.doc; const store2 = doc2.store; const ds = transaction.deleteSet; const mergeStructs = transaction._mergeStructs; try { sortAndMergeDeleteSet(ds); transaction.afterState = getStateVector(transaction.doc.store); doc2.emit("beforeObserverCalls", [transaction, doc2]); const fs = []; transaction.changed.forEach( (subs, itemtype) => fs.push(() => { if (itemtype._item === null || !itemtype._item.deleted) { itemtype._callObserver(transaction, subs); } }) ); fs.push(() => { transaction.changedParentTypes.forEach((events, type) => { if (type._dEH.l.length > 0 && (type._item === null || !type._item.deleted)) { events = events.filter( (event) => event.target._item === null || !event.target._item.deleted ); events.forEach((event) => { event.currentTarget = type; event._path = null; }); events.sort((event1, event2) => event1.path.length - event2.path.length); fs.push(() => { callEventHandlerListeners(type._dEH, events, transaction); }); } }); fs.push(() => doc2.emit("afterTransaction", [transaction, doc2])); fs.push(() => { if (transaction._needFormattingCleanup) { cleanupYTextAfterTransaction(transaction); } }); }); callAll(fs, []); } finally { if (doc2.gc) { tryGcDeleteSet(ds, store2, doc2.gcFilter); } tryMergeDeleteSet(ds, store2); transaction.afterState.forEach((clock, client) => { const beforeClock = transaction.beforeState.get(client) || 0; if (beforeClock !== clock) { const structs = ( /** @type {Array} */ store2.clients.get(client) ); const firstChangePos = max(findIndexSS(structs, beforeClock), 1); for (let i2 = structs.length - 1; i2 >= firstChangePos; ) { i2 -= 1 + tryToMergeWithLefts(structs, i2); } } }); for (let i2 = mergeStructs.length - 1; i2 >= 0; i2--) { const { client, clock } = mergeStructs[i2].id; const structs = ( /** @type {Array} */ store2.clients.get(client) ); const replacedStructPos = findIndexSS(structs, clock); if (replacedStructPos + 1 < structs.length) { if (tryToMergeWithLefts(structs, replacedStructPos + 1) > 1) { continue; } } if (replacedStructPos > 0) { tryToMergeWithLefts(structs, replacedStructPos); } } if (!transaction.local && transaction.afterState.get(doc2.clientID) !== transaction.beforeState.get(doc2.clientID)) { print(ORANGE, BOLD, "[yjs] ", UNBOLD, RED, "Changed the client-id because another client seems to be using it."); doc2.clientID = generateNewClientId(); } doc2.emit("afterTransactionCleanup", [transaction, doc2]); if (doc2._observers.has("update")) { const encoder = new UpdateEncoderV1(); const hasContent2 = writeUpdateMessageFromTransaction(encoder, transaction); if (hasContent2) { doc2.emit("update", [encoder.toUint8Array(), transaction.origin, doc2, transaction]); } } if (doc2._observers.has("updateV2")) { const encoder = new UpdateEncoderV2(); const hasContent2 = writeUpdateMessageFromTransaction(encoder, transaction); if (hasContent2) { doc2.emit("updateV2", [encoder.toUint8Array(), transaction.origin, doc2, transaction]); } } const { subdocsAdded, subdocsLoaded, subdocsRemoved } = transaction; if (subdocsAdded.size > 0 || subdocsRemoved.size > 0 || subdocsLoaded.size > 0) { subdocsAdded.forEach((subdoc) => { subdoc.clientID = doc2.clientID; if (subdoc.collectionid == null) { subdoc.collectionid = doc2.collectionid; } doc2.subdocs.add(subdoc); }); subdocsRemoved.forEach((subdoc) => doc2.subdocs.delete(subdoc)); doc2.emit("subdocs", [{ loaded: subdocsLoaded, added: subdocsAdded, removed: subdocsRemoved }, doc2, transaction]); subdocsRemoved.forEach((subdoc) => subdoc.destroy()); } if (transactionCleanups.length <= i + 1) { doc2._transactionCleanups = []; doc2.emit("afterAllTransactions", [doc2, transactionCleanups]); } else { cleanupTransactions(transactionCleanups, i + 1); } } } }; var transact = (doc2, f, origin2 = null, local = true) => { const transactionCleanups = doc2._transactionCleanups; let initialCall = false; let result = null; if (doc2._transaction === null) { initialCall = true; doc2._transaction = new Transaction(doc2, origin2, local); transactionCleanups.push(doc2._transaction); if (transactionCleanups.length === 1) { doc2.emit("beforeAllTransactions", [doc2]); } doc2.emit("beforeTransaction", [doc2._transaction, doc2]); } try { result = f(doc2._transaction); } finally { if (initialCall) { const finishCleanup = doc2._transaction === transactionCleanups[0]; doc2._transaction = null; if (finishCleanup) { cleanupTransactions(transactionCleanups, 0); } } } return result; }; var StackItem = class { /** * @param {DeleteSet} deletions * @param {DeleteSet} insertions */ constructor(deletions, insertions) { this.insertions = insertions; this.deletions = deletions; this.meta = /* @__PURE__ */ new Map(); } }; var clearUndoManagerStackItem = (tr, um, stackItem) => { iterateDeletedStructs(tr, stackItem.deletions, (item) => { if (item instanceof Item && um.scope.some((type) => type === tr.doc || isParentOf( /** @type {AbstractType} */ type, item ))) { keepItem(item, false); } }); }; var popStackItem = (undoManager2, stack, eventType) => { let _tr = null; const doc2 = undoManager2.doc; const scope = undoManager2.scope; transact(doc2, (transaction) => { while (stack.length > 0 && undoManager2.currStackItem === null) { const store2 = doc2.store; const stackItem = ( /** @type {StackItem} */ stack.pop() ); const itemsToRedo = /* @__PURE__ */ new Set(); const itemsToDelete = []; let performedChange = false; iterateDeletedStructs(transaction, stackItem.insertions, (struct) => { if (struct instanceof Item) { if (struct.redone !== null) { let { item, diff } = followRedone(store2, struct.id); if (diff > 0) { item = getItemCleanStart(transaction, createID(item.id.client, item.id.clock + diff)); } struct = item; } if (!struct.deleted && scope.some((type) => type === transaction.doc || isParentOf( /** @type {AbstractType} */ type, /** @type {Item} */ struct ))) { itemsToDelete.push(struct); } } }); iterateDeletedStructs(transaction, stackItem.deletions, (struct) => { if (struct instanceof Item && scope.some((type) => type === transaction.doc || isParentOf( /** @type {AbstractType} */ type, struct )) && // Never redo structs in stackItem.insertions because they were created and deleted in the same capture interval. !isDeleted(stackItem.insertions, struct.id)) { itemsToRedo.add(struct); } }); itemsToRedo.forEach((struct) => { performedChange = redoItem(transaction, struct, itemsToRedo, stackItem.insertions, undoManager2.ignoreRemoteMapChanges, undoManager2) !== null || performedChange; }); for (let i = itemsToDelete.length - 1; i >= 0; i--) { const item = itemsToDelete[i]; if (undoManager2.deleteFilter(item)) { item.delete(transaction); performedChange = true; } } undoManager2.currStackItem = performedChange ? stackItem : null; } transaction.changed.forEach((subProps, type) => { if (subProps.has(null) && type._searchMarker) { type._searchMarker.length = 0; } }); _tr = transaction; }, undoManager2); const res = undoManager2.currStackItem; if (res != null) { const changedParentTypes = _tr.changedParentTypes; undoManager2.emit("stack-item-popped", [{ stackItem: res, type: eventType, changedParentTypes, origin: undoManager2 }, undoManager2]); undoManager2.currStackItem = null; } return res; }; var UndoManager = class extends ObservableV2 { /** * @param {Doc|AbstractType|Array>} typeScope Limits the scope of the UndoManager. If this is set to a ydoc instance, all changes on that ydoc will be undone. If set to a specific type, only changes on that type or its children will be undone. Also accepts an array of types. * @param {UndoManagerOptions} options */ constructor(typeScope, { captureTimeout = 500, captureTransaction = (_tr) => true, deleteFilter = () => true, trackedOrigins = /* @__PURE__ */ new Set([null]), ignoreRemoteMapChanges = false, doc: doc2 = ( /** @type {Doc} */ isArray(typeScope) ? typeScope[0].doc : typeScope instanceof Doc ? typeScope : typeScope.doc ) } = {}) { super(); this.scope = []; this.doc = doc2; this.addToScope(typeScope); this.deleteFilter = deleteFilter; trackedOrigins.add(this); this.trackedOrigins = trackedOrigins; this.captureTransaction = captureTransaction; this.undoStack = []; this.redoStack = []; this.undoing = false; this.redoing = false; this.currStackItem = null; this.lastChange = 0; this.ignoreRemoteMapChanges = ignoreRemoteMapChanges; this.captureTimeout = captureTimeout; this.afterTransactionHandler = (transaction) => { if (!this.captureTransaction(transaction) || !this.scope.some((type) => transaction.changedParentTypes.has( /** @type {AbstractType} */ type ) || type === this.doc) || !this.trackedOrigins.has(transaction.origin) && (!transaction.origin || !this.trackedOrigins.has(transaction.origin.constructor))) { return; } const undoing = this.undoing; const redoing = this.redoing; const stack = undoing ? this.redoStack : this.undoStack; if (undoing) { this.stopCapturing(); } else if (!redoing) { this.clear(false, true); } const insertions = new DeleteSet(); transaction.afterState.forEach((endClock, client) => { const startClock = transaction.beforeState.get(client) || 0; const len = endClock - startClock; if (len > 0) { addToDeleteSet(insertions, client, startClock, len); } }); const now = getUnixTime(); let didAdd = false; if (this.lastChange > 0 && now - this.lastChange < this.captureTimeout && stack.length > 0 && !undoing && !redoing) { const lastOp = stack[stack.length - 1]; lastOp.deletions = mergeDeleteSets([lastOp.deletions, transaction.deleteSet]); lastOp.insertions = mergeDeleteSets([lastOp.insertions, insertions]); } else { stack.push(new StackItem(transaction.deleteSet, insertions)); didAdd = true; } if (!undoing && !redoing) { this.lastChange = now; } iterateDeletedStructs( transaction, transaction.deleteSet, /** @param {Item|GC} item */ (item) => { if (item instanceof Item && this.scope.some((type) => type === transaction.doc || isParentOf( /** @type {AbstractType} */ type, item ))) { keepItem(item, true); } } ); const changeEvent = [{ stackItem: stack[stack.length - 1], origin: transaction.origin, type: undoing ? "redo" : "undo", changedParentTypes: transaction.changedParentTypes }, this]; if (didAdd) { this.emit("stack-item-added", changeEvent); } else { this.emit("stack-item-updated", changeEvent); } }; this.doc.on("afterTransaction", this.afterTransactionHandler); this.doc.on("destroy", () => { this.destroy(); }); } /** * Extend the scope. * * @param {Array | Doc> | AbstractType | Doc} ytypes */ addToScope(ytypes) { const tmpSet = new Set(this.scope); ytypes = isArray(ytypes) ? ytypes : [ytypes]; ytypes.forEach((ytype) => { if (!tmpSet.has(ytype)) { tmpSet.add(ytype); if (ytype instanceof AbstractType ? ytype.doc !== this.doc : ytype !== this.doc) warn("[yjs#509] Not same Y.Doc"); this.scope.push(ytype); } }); } /** * @param {any} origin */ addTrackedOrigin(origin2) { this.trackedOrigins.add(origin2); } /** * @param {any} origin */ removeTrackedOrigin(origin2) { this.trackedOrigins.delete(origin2); } clear(clearUndoStack = true, clearRedoStack = true) { if (clearUndoStack && this.canUndo() || clearRedoStack && this.canRedo()) { this.doc.transact((tr) => { if (clearUndoStack) { this.undoStack.forEach((item) => clearUndoManagerStackItem(tr, this, item)); this.undoStack = []; } if (clearRedoStack) { this.redoStack.forEach((item) => clearUndoManagerStackItem(tr, this, item)); this.redoStack = []; } this.emit("stack-cleared", [{ undoStackCleared: clearUndoStack, redoStackCleared: clearRedoStack }]); }); } } /** * UndoManager merges Undo-StackItem if they are created within time-gap * smaller than `options.captureTimeout`. Call `um.stopCapturing()` so that the next * StackItem won't be merged. * * * @example * // without stopCapturing * ytext.insert(0, 'a') * ytext.insert(1, 'b') * um.undo() * ytext.toString() // => '' (note that 'ab' was removed) * // with stopCapturing * ytext.insert(0, 'a') * um.stopCapturing() * ytext.insert(0, 'b') * um.undo() * ytext.toString() // => 'a' (note that only 'b' was removed) * */ stopCapturing() { this.lastChange = 0; } /** * Undo last changes on type. * * @return {StackItem?} Returns StackItem if a change was applied */ undo() { this.undoing = true; let res; try { res = popStackItem(this, this.undoStack, "undo"); } finally { this.undoing = false; } return res; } /** * Redo last undo operation. * * @return {StackItem?} Returns StackItem if a change was applied */ redo() { this.redoing = true; let res; try { res = popStackItem(this, this.redoStack, "redo"); } finally { this.redoing = false; } return res; } /** * Are undo steps available? * * @return {boolean} `true` if undo is possible */ canUndo() { return this.undoStack.length > 0; } /** * Are redo steps available? * * @return {boolean} `true` if redo is possible */ canRedo() { return this.redoStack.length > 0; } destroy() { this.trackedOrigins.delete(this); this.doc.off("afterTransaction", this.afterTransactionHandler); super.destroy(); } }; function* lazyStructReaderGenerator(decoder) { const numOfStateUpdates = readVarUint(decoder.restDecoder); for (let i = 0; i < numOfStateUpdates; i++) { const numberOfStructs = readVarUint(decoder.restDecoder); const client = decoder.readClient(); let clock = readVarUint(decoder.restDecoder); for (let i2 = 0; i2 < numberOfStructs; i2++) { const info = decoder.readInfo(); if (info === 10) { const len = readVarUint(decoder.restDecoder); yield new Skip(createID(client, clock), len); clock += len; } else if ((BITS5 & info) !== 0) { const cantCopyParentInfo = (info & (BIT7 | BIT8)) === 0; const struct = new Item( createID(client, clock), null, // left (info & BIT8) === BIT8 ? decoder.readLeftID() : null, // origin null, // right (info & BIT7) === BIT7 ? decoder.readRightID() : null, // right origin // @ts-ignore Force writing a string here. cantCopyParentInfo ? decoder.readParentInfo() ? decoder.readString() : decoder.readLeftID() : null, // parent cantCopyParentInfo && (info & BIT6) === BIT6 ? decoder.readString() : null, // parentSub readItemContent(decoder, info) // item content ); yield struct; clock += struct.length; } else { const len = decoder.readLen(); yield new GC(createID(client, clock), len); clock += len; } } } } var LazyStructReader = class { /** * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder * @param {boolean} filterSkips */ constructor(decoder, filterSkips) { this.gen = lazyStructReaderGenerator(decoder); this.curr = null; this.done = false; this.filterSkips = filterSkips; this.next(); } /** * @return {Item | GC | Skip |null} */ next() { do { this.curr = this.gen.next().value || null; } while (this.filterSkips && this.curr !== null && this.curr.constructor === Skip); return this.curr; } }; var logUpdate = (update) => logUpdateV2(update, UpdateDecoderV1); var logUpdateV2 = (update, YDecoder = UpdateDecoderV2) => { const structs = []; const updateDecoder = new YDecoder(createDecoder(update)); const lazyDecoder = new LazyStructReader(updateDecoder, false); for (let curr = lazyDecoder.curr; curr !== null; curr = lazyDecoder.next()) { structs.push(curr); } print("Structs: ", structs); const ds = readDeleteSet(updateDecoder); print("DeleteSet: ", ds); }; var decodeUpdate = (update) => decodeUpdateV2(update, UpdateDecoderV1); var decodeUpdateV2 = (update, YDecoder = UpdateDecoderV2) => { const structs = []; const updateDecoder = new YDecoder(createDecoder(update)); const lazyDecoder = new LazyStructReader(updateDecoder, false); for (let curr = lazyDecoder.curr; curr !== null; curr = lazyDecoder.next()) { structs.push(curr); } return { structs, ds: readDeleteSet(updateDecoder) }; }; var LazyStructWriter = class { /** * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder */ constructor(encoder) { this.currClient = 0; this.startClock = 0; this.written = 0; this.encoder = encoder; this.clientStructs = []; } }; var mergeUpdates = (updates) => mergeUpdatesV2(updates, UpdateDecoderV1, UpdateEncoderV1); var encodeStateVectorFromUpdateV2 = (update, YEncoder = DSEncoderV2, YDecoder = UpdateDecoderV2) => { const encoder = new YEncoder(); const updateDecoder = new LazyStructReader(new YDecoder(createDecoder(update)), false); let curr = updateDecoder.curr; if (curr !== null) { let size2 = 0; let currClient = curr.id.client; let stopCounting = curr.id.clock !== 0; let currClock = stopCounting ? 0 : curr.id.clock + curr.length; for (; curr !== null; curr = updateDecoder.next()) { if (currClient !== curr.id.client) { if (currClock !== 0) { size2++; writeVarUint(encoder.restEncoder, currClient); writeVarUint(encoder.restEncoder, currClock); } currClient = curr.id.client; currClock = 0; stopCounting = curr.id.clock !== 0; } if (curr.constructor === Skip) { stopCounting = true; } if (!stopCounting) { currClock = curr.id.clock + curr.length; } } if (currClock !== 0) { size2++; writeVarUint(encoder.restEncoder, currClient); writeVarUint(encoder.restEncoder, currClock); } const enc = createEncoder(); writeVarUint(enc, size2); writeBinaryEncoder(enc, encoder.restEncoder); encoder.restEncoder = enc; return encoder.toUint8Array(); } else { writeVarUint(encoder.restEncoder, 0); return encoder.toUint8Array(); } }; var encodeStateVectorFromUpdate = (update) => encodeStateVectorFromUpdateV2(update, DSEncoderV1, UpdateDecoderV1); var parseUpdateMetaV2 = (update, YDecoder = UpdateDecoderV2) => { const from2 = /* @__PURE__ */ new Map(); const to = /* @__PURE__ */ new Map(); const updateDecoder = new LazyStructReader(new YDecoder(createDecoder(update)), false); let curr = updateDecoder.curr; if (curr !== null) { let currClient = curr.id.client; let currClock = curr.id.clock; from2.set(currClient, currClock); for (; curr !== null; curr = updateDecoder.next()) { if (currClient !== curr.id.client) { to.set(currClient, currClock); from2.set(curr.id.client, curr.id.clock); currClient = curr.id.client; } currClock = curr.id.clock + curr.length; } to.set(currClient, currClock); } return { from: from2, to }; }; var parseUpdateMeta = (update) => parseUpdateMetaV2(update, UpdateDecoderV1); var sliceStruct = (left, diff) => { if (left.constructor === GC) { const { client, clock } = left.id; return new GC(createID(client, clock + diff), left.length - diff); } else if (left.constructor === Skip) { const { client, clock } = left.id; return new Skip(createID(client, clock + diff), left.length - diff); } else { const leftItem = ( /** @type {Item} */ left ); const { client, clock } = leftItem.id; return new Item( createID(client, clock + diff), null, createID(client, clock + diff - 1), null, leftItem.rightOrigin, leftItem.parent, leftItem.parentSub, leftItem.content.splice(diff) ); } }; var mergeUpdatesV2 = (updates, YDecoder = UpdateDecoderV2, YEncoder = UpdateEncoderV2) => { if (updates.length === 1) { return updates[0]; } const updateDecoders = updates.map((update) => new YDecoder(createDecoder(update))); let lazyStructDecoders = updateDecoders.map((decoder) => new LazyStructReader(decoder, true)); let currWrite = null; const updateEncoder = new YEncoder(); const lazyStructEncoder = new LazyStructWriter(updateEncoder); while (true) { lazyStructDecoders = lazyStructDecoders.filter((dec) => dec.curr !== null); lazyStructDecoders.sort( /** @type {function(any,any):number} */ (dec1, dec2) => { if (dec1.curr.id.client === dec2.curr.id.client) { const clockDiff = dec1.curr.id.clock - dec2.curr.id.clock; if (clockDiff === 0) { return dec1.curr.constructor === dec2.curr.constructor ? 0 : dec1.curr.constructor === Skip ? 1 : -1; } else { return clockDiff; } } else { return dec2.curr.id.client - dec1.curr.id.client; } } ); if (lazyStructDecoders.length === 0) { break; } const currDecoder = lazyStructDecoders[0]; const firstClient = ( /** @type {Item | GC} */ currDecoder.curr.id.client ); if (currWrite !== null) { let curr = ( /** @type {Item | GC | null} */ currDecoder.curr ); let iterated = false; while (curr !== null && curr.id.clock + curr.length <= currWrite.struct.id.clock + currWrite.struct.length && curr.id.client >= currWrite.struct.id.client) { curr = currDecoder.next(); iterated = true; } if (curr === null || // current decoder is empty curr.id.client !== firstClient || // check whether there is another decoder that has has updates from `firstClient` iterated && curr.id.clock > currWrite.struct.id.clock + currWrite.struct.length) { continue; } if (firstClient !== currWrite.struct.id.client) { writeStructToLazyStructWriter(lazyStructEncoder, currWrite.struct, currWrite.offset); currWrite = { struct: curr, offset: 0 }; currDecoder.next(); } else { if (currWrite.struct.id.clock + currWrite.struct.length < curr.id.clock) { if (currWrite.struct.constructor === Skip) { currWrite.struct.length = curr.id.clock + curr.length - currWrite.struct.id.clock; } else { writeStructToLazyStructWriter(lazyStructEncoder, currWrite.struct, currWrite.offset); const diff = curr.id.clock - currWrite.struct.id.clock - currWrite.struct.length; const struct = new Skip(createID(firstClient, currWrite.struct.id.clock + currWrite.struct.length), diff); currWrite = { struct, offset: 0 }; } } else { const diff = currWrite.struct.id.clock + currWrite.struct.length - curr.id.clock; if (diff > 0) { if (currWrite.struct.constructor === Skip) { currWrite.struct.length -= diff; } else { curr = sliceStruct(curr, diff); } } if (!currWrite.struct.mergeWith( /** @type {any} */ curr )) { writeStructToLazyStructWriter(lazyStructEncoder, currWrite.struct, currWrite.offset); currWrite = { struct: curr, offset: 0 }; currDecoder.next(); } } } } else { currWrite = { struct: ( /** @type {Item | GC} */ currDecoder.curr ), offset: 0 }; currDecoder.next(); } for (let next = currDecoder.curr; next !== null && next.id.client === firstClient && next.id.clock === currWrite.struct.id.clock + currWrite.struct.length && next.constructor !== Skip; next = currDecoder.next()) { writeStructToLazyStructWriter(lazyStructEncoder, currWrite.struct, currWrite.offset); currWrite = { struct: next, offset: 0 }; } } if (currWrite !== null) { writeStructToLazyStructWriter(lazyStructEncoder, currWrite.struct, currWrite.offset); currWrite = null; } finishLazyStructWriting(lazyStructEncoder); const dss = updateDecoders.map((decoder) => readDeleteSet(decoder)); const ds = mergeDeleteSets(dss); writeDeleteSet(updateEncoder, ds); return updateEncoder.toUint8Array(); }; var diffUpdateV2 = (update, sv, YDecoder = UpdateDecoderV2, YEncoder = UpdateEncoderV2) => { const state = decodeStateVector(sv); const encoder = new YEncoder(); const lazyStructWriter = new LazyStructWriter(encoder); const decoder = new YDecoder(createDecoder(update)); const reader = new LazyStructReader(decoder, false); while (reader.curr) { const curr = reader.curr; const currClient = curr.id.client; const svClock = state.get(currClient) || 0; if (reader.curr.constructor === Skip) { reader.next(); continue; } if (curr.id.clock + curr.length > svClock) { writeStructToLazyStructWriter(lazyStructWriter, curr, max(svClock - curr.id.clock, 0)); reader.next(); while (reader.curr && reader.curr.id.client === currClient) { writeStructToLazyStructWriter(lazyStructWriter, reader.curr, 0); reader.next(); } } else { while (reader.curr && reader.curr.id.client === currClient && reader.curr.id.clock + reader.curr.length <= svClock) { reader.next(); } } } finishLazyStructWriting(lazyStructWriter); const ds = readDeleteSet(decoder); writeDeleteSet(encoder, ds); return encoder.toUint8Array(); }; var diffUpdate = (update, sv) => diffUpdateV2(update, sv, UpdateDecoderV1, UpdateEncoderV1); var flushLazyStructWriter = (lazyWriter) => { if (lazyWriter.written > 0) { lazyWriter.clientStructs.push({ written: lazyWriter.written, restEncoder: toUint8Array(lazyWriter.encoder.restEncoder) }); lazyWriter.encoder.restEncoder = createEncoder(); lazyWriter.written = 0; } }; var writeStructToLazyStructWriter = (lazyWriter, struct, offset) => { if (lazyWriter.written > 0 && lazyWriter.currClient !== struct.id.client) { flushLazyStructWriter(lazyWriter); } if (lazyWriter.written === 0) { lazyWriter.currClient = struct.id.client; lazyWriter.encoder.writeClient(struct.id.client); writeVarUint(lazyWriter.encoder.restEncoder, struct.id.clock + offset); } struct.write(lazyWriter.encoder, offset); lazyWriter.written++; }; var finishLazyStructWriting = (lazyWriter) => { flushLazyStructWriter(lazyWriter); const restEncoder = lazyWriter.encoder.restEncoder; writeVarUint(restEncoder, lazyWriter.clientStructs.length); for (let i = 0; i < lazyWriter.clientStructs.length; i++) { const partStructs = lazyWriter.clientStructs[i]; writeVarUint(restEncoder, partStructs.written); writeUint8Array(restEncoder, partStructs.restEncoder); } }; var convertUpdateFormat = (update, blockTransformer, YDecoder, YEncoder) => { const updateDecoder = new YDecoder(createDecoder(update)); const lazyDecoder = new LazyStructReader(updateDecoder, false); const updateEncoder = new YEncoder(); const lazyWriter = new LazyStructWriter(updateEncoder); for (let curr = lazyDecoder.curr; curr !== null; curr = lazyDecoder.next()) { writeStructToLazyStructWriter(lazyWriter, blockTransformer(curr), 0); } finishLazyStructWriting(lazyWriter); const ds = readDeleteSet(updateDecoder); writeDeleteSet(updateEncoder, ds); return updateEncoder.toUint8Array(); }; var createObfuscator = ({ formatting = true, subdocs = true, yxml = true } = {}) => { let i = 0; const mapKeyCache = create(); const nodeNameCache = create(); const formattingKeyCache = create(); const formattingValueCache = create(); formattingValueCache.set(null, null); return (block) => { switch (block.constructor) { case GC: case Skip: return block; case Item: { const item = ( /** @type {Item} */ block ); const content = item.content; switch (content.constructor) { case ContentDeleted: break; case ContentType: { if (yxml) { const type = ( /** @type {ContentType} */ content.type ); if (type instanceof YXmlElement) { type.nodeName = setIfUndefined(nodeNameCache, type.nodeName, () => "node-" + i); } if (type instanceof YXmlHook) { type.hookName = setIfUndefined(nodeNameCache, type.hookName, () => "hook-" + i); } } break; } case ContentAny: { const c = ( /** @type {ContentAny} */ content ); c.arr = c.arr.map(() => i); break; } case ContentBinary: { const c = ( /** @type {ContentBinary} */ content ); c.content = new Uint8Array([i]); break; } case ContentDoc: { const c = ( /** @type {ContentDoc} */ content ); if (subdocs) { c.opts = {}; c.doc.guid = i + ""; } break; } case ContentEmbed: { const c = ( /** @type {ContentEmbed} */ content ); c.embed = {}; break; } case ContentFormat: { const c = ( /** @type {ContentFormat} */ content ); if (formatting) { c.key = setIfUndefined(formattingKeyCache, c.key, () => i + ""); c.value = setIfUndefined(formattingValueCache, c.value, () => ({ i })); } break; } case ContentJSON: { const c = ( /** @type {ContentJSON} */ content ); c.arr = c.arr.map(() => i); break; } case ContentString: { const c = ( /** @type {ContentString} */ content ); c.str = repeat(i % 10 + "", c.str.length); break; } default: unexpectedCase(); } if (item.parentSub) { item.parentSub = setIfUndefined(mapKeyCache, item.parentSub, () => i + ""); } i++; return block; } default: unexpectedCase(); } }; }; var obfuscateUpdate = (update, opts) => convertUpdateFormat(update, createObfuscator(opts), UpdateDecoderV1, UpdateEncoderV1); var obfuscateUpdateV2 = (update, opts) => convertUpdateFormat(update, createObfuscator(opts), UpdateDecoderV2, UpdateEncoderV2); var convertUpdateFormatV1ToV2 = (update) => convertUpdateFormat(update, id, UpdateDecoderV1, UpdateEncoderV2); var convertUpdateFormatV2ToV1 = (update) => convertUpdateFormat(update, id, UpdateDecoderV2, UpdateEncoderV1); var errorComputeChanges = "You must not compute changes after the event-handler fired."; var YEvent = class { /** * @param {T} target The changed type. * @param {Transaction} transaction */ constructor(target, transaction) { this.target = target; this.currentTarget = target; this.transaction = transaction; this._changes = null; this._keys = null; this._delta = null; this._path = null; } /** * Computes the path from `y` to the changed type. * * @todo v14 should standardize on path: Array<{parent, index}> because that is easier to work with. * * The following property holds: * @example * let type = y * event.path.forEach(dir => { * type = type.get(dir) * }) * type === event.target // => true */ get path() { return this._path || (this._path = getPathTo(this.currentTarget, this.target)); } /** * Check if a struct is deleted by this event. * * In contrast to change.deleted, this method also returns true if the struct was added and then deleted. * * @param {AbstractStruct} struct * @return {boolean} */ deletes(struct) { return isDeleted(this.transaction.deleteSet, struct.id); } /** * @type {Map} */ get keys() { if (this._keys === null) { if (this.transaction.doc._transactionCleanups.length === 0) { throw create3(errorComputeChanges); } const keys2 = /* @__PURE__ */ new Map(); const target = this.target; const changed = ( /** @type Set */ this.transaction.changed.get(target) ); changed.forEach((key) => { if (key !== null) { const item = ( /** @type {Item} */ target._map.get(key) ); let action; let oldValue; if (this.adds(item)) { let prev = item.left; while (prev !== null && this.adds(prev)) { prev = prev.left; } if (this.deletes(item)) { if (prev !== null && this.deletes(prev)) { action = "delete"; oldValue = last(prev.content.getContent()); } else { return; } } else { if (prev !== null && this.deletes(prev)) { action = "update"; oldValue = last(prev.content.getContent()); } else { action = "add"; oldValue = void 0; } } } else { if (this.deletes(item)) { action = "delete"; oldValue = last( /** @type {Item} */ item.content.getContent() ); } else { return; } } keys2.set(key, { action, oldValue }); } }); this._keys = keys2; } return this._keys; } /** * This is a computed property. Note that this can only be safely computed during the * event call. Computing this property after other changes happened might result in * unexpected behavior (incorrect computation of deltas). A safe way to collect changes * is to store the `changes` or the `delta` object. Avoid storing the `transaction` object. * * @type {Array<{insert?: string | Array | object | AbstractType, retain?: number, delete?: number, attributes?: Object}>} */ get delta() { return this.changes.delta; } /** * Check if a struct is added by this event. * * In contrast to change.deleted, this method also returns true if the struct was added and then deleted. * * @param {AbstractStruct} struct * @return {boolean} */ adds(struct) { return struct.id.clock >= (this.transaction.beforeState.get(struct.id.client) || 0); } /** * This is a computed property. Note that this can only be safely computed during the * event call. Computing this property after other changes happened might result in * unexpected behavior (incorrect computation of deltas). A safe way to collect changes * is to store the `changes` or the `delta` object. Avoid storing the `transaction` object. * * @type {{added:Set,deleted:Set,keys:Map,delta:Array<{insert?:Array|string, delete?:number, retain?:number}>}} */ get changes() { let changes = this._changes; if (changes === null) { if (this.transaction.doc._transactionCleanups.length === 0) { throw create3(errorComputeChanges); } const target = this.target; const added = create2(); const deleted = create2(); const delta = []; changes = { added, deleted, delta, keys: this.keys }; const changed = ( /** @type Set */ this.transaction.changed.get(target) ); if (changed.has(null)) { let lastOp = null; const packOp = () => { if (lastOp) { delta.push(lastOp); } }; for (let item = target._start; item !== null; item = item.right) { if (item.deleted) { if (this.deletes(item) && !this.adds(item)) { if (lastOp === null || lastOp.delete === void 0) { packOp(); lastOp = { delete: 0 }; } lastOp.delete += item.length; deleted.add(item); } } else { if (this.adds(item)) { if (lastOp === null || lastOp.insert === void 0) { packOp(); lastOp = { insert: [] }; } lastOp.insert = lastOp.insert.concat(item.content.getContent()); added.add(item); } else { if (lastOp === null || lastOp.retain === void 0) { packOp(); lastOp = { retain: 0 }; } lastOp.retain += item.length; } } } if (lastOp !== null && lastOp.retain === void 0) { packOp(); } } this._changes = changes; } return ( /** @type {any} */ changes ); } }; var getPathTo = (parent, child) => { const path = []; while (child._item !== null && child !== parent) { if (child._item.parentSub !== null) { path.unshift(child._item.parentSub); } else { let i = 0; let c = ( /** @type {AbstractType} */ child._item.parent._start ); while (c !== child._item && c !== null) { if (!c.deleted && c.countable) { i += c.length; } c = c.right; } path.unshift(i); } child = /** @type {AbstractType} */ child._item.parent; } return path; }; var warnPrematureAccess = () => { warn("Invalid access: Add Yjs type to a document before reading data."); }; var maxSearchMarker = 80; var globalSearchMarkerTimestamp = 0; var ArraySearchMarker = class { /** * @param {Item} p * @param {number} index */ constructor(p, index) { p.marker = true; this.p = p; this.index = index; this.timestamp = globalSearchMarkerTimestamp++; } }; var refreshMarkerTimestamp = (marker) => { marker.timestamp = globalSearchMarkerTimestamp++; }; var overwriteMarker = (marker, p, index) => { marker.p.marker = false; marker.p = p; p.marker = true; marker.index = index; marker.timestamp = globalSearchMarkerTimestamp++; }; var markPosition = (searchMarker, p, index) => { if (searchMarker.length >= maxSearchMarker) { const marker = searchMarker.reduce((a, b) => a.timestamp < b.timestamp ? a : b); overwriteMarker(marker, p, index); return marker; } else { const pm = new ArraySearchMarker(p, index); searchMarker.push(pm); return pm; } }; var findMarker = (yarray, index) => { if (yarray._start === null || index === 0 || yarray._searchMarker === null) { return null; } const marker = yarray._searchMarker.length === 0 ? null : yarray._searchMarker.reduce((a, b) => abs(index - a.index) < abs(index - b.index) ? a : b); let p = yarray._start; let pindex = 0; if (marker !== null) { p = marker.p; pindex = marker.index; refreshMarkerTimestamp(marker); } while (p.right !== null && pindex < index) { if (!p.deleted && p.countable) { if (index < pindex + p.length) { break; } pindex += p.length; } p = p.right; } while (p.left !== null && pindex > index) { p = p.left; if (!p.deleted && p.countable) { pindex -= p.length; } } while (p.left !== null && p.left.id.client === p.id.client && p.left.id.clock + p.left.length === p.id.clock) { p = p.left; if (!p.deleted && p.countable) { pindex -= p.length; } } if (marker !== null && abs(marker.index - pindex) < /** @type {YText|YArray} */ p.parent.length / maxSearchMarker) { overwriteMarker(marker, p, pindex); return marker; } else { return markPosition(yarray._searchMarker, p, pindex); } }; var updateMarkerChanges = (searchMarker, index, len) => { for (let i = searchMarker.length - 1; i >= 0; i--) { const m = searchMarker[i]; if (len > 0) { let p = m.p; p.marker = false; while (p && (p.deleted || !p.countable)) { p = p.left; if (p && !p.deleted && p.countable) { m.index -= p.length; } } if (p === null || p.marker === true) { searchMarker.splice(i, 1); continue; } m.p = p; p.marker = true; } if (index < m.index || len > 0 && index === m.index) { m.index = max(index, m.index + len); } } }; var getTypeChildren = (t) => { t.doc ?? warnPrematureAccess(); let s = t._start; const arr = []; while (s) { arr.push(s); s = s.right; } return arr; }; var callTypeObservers = (type, transaction, event) => { const changedType = type; const changedParentTypes = transaction.changedParentTypes; while (true) { setIfUndefined(changedParentTypes, type, () => []).push(event); if (type._item === null) { break; } type = /** @type {AbstractType} */ type._item.parent; } callEventHandlerListeners(changedType._eH, event, transaction); }; var AbstractType = class { constructor() { this._item = null; this._map = /* @__PURE__ */ new Map(); this._start = null; this.doc = null; this._length = 0; this._eH = createEventHandler(); this._dEH = createEventHandler(); this._searchMarker = null; } /** * @return {AbstractType|null} */ get parent() { return this._item ? ( /** @type {AbstractType} */ this._item.parent ) : null; } /** * Integrate this type into the Yjs instance. * * * Save this struct in the os * * This type is sent to other client * * Observer functions are fired * * @param {Doc} y The Yjs instance * @param {Item|null} item */ _integrate(y, item) { this.doc = y; this._item = item; } /** * @return {AbstractType} */ _copy() { throw methodUnimplemented(); } /** * Makes a copy of this data type that can be included somewhere else. * * Note that the content is only readable _after_ it has been included somewhere in the Ydoc. * * @return {AbstractType} */ clone() { throw methodUnimplemented(); } /** * @param {UpdateEncoderV1 | UpdateEncoderV2} _encoder */ _write(_encoder) { } /** * The first non-deleted item */ get _first() { let n = this._start; while (n !== null && n.deleted) { n = n.right; } return n; } /** * Creates YEvent and calls all type observers. * Must be implemented by each type. * * @param {Transaction} transaction * @param {Set} _parentSubs Keys changed on this type. `null` if list was modified. */ _callObserver(transaction, _parentSubs) { if (!transaction.local && this._searchMarker) { this._searchMarker.length = 0; } } /** * Observe all events that are created on this type. * * @param {function(EventType, Transaction):void} f Observer function */ observe(f) { addEventHandlerListener(this._eH, f); } /** * Observe all events that are created by this type and its children. * * @param {function(Array>,Transaction):void} f Observer function */ observeDeep(f) { addEventHandlerListener(this._dEH, f); } /** * Unregister an observer function. * * @param {function(EventType,Transaction):void} f Observer function */ unobserve(f) { removeEventHandlerListener(this._eH, f); } /** * Unregister an observer function. * * @param {function(Array>,Transaction):void} f Observer function */ unobserveDeep(f) { removeEventHandlerListener(this._dEH, f); } /** * @abstract * @return {any} */ toJSON() { } }; var typeListSlice = (type, start, end) => { type.doc ?? warnPrematureAccess(); if (start < 0) { start = type._length + start; } if (end < 0) { end = type._length + end; } let len = end - start; const cs = []; let n = type._start; while (n !== null && len > 0) { if (n.countable && !n.deleted) { const c = n.content.getContent(); if (c.length <= start) { start -= c.length; } else { for (let i = start; i < c.length && len > 0; i++) { cs.push(c[i]); len--; } start = 0; } } n = n.right; } return cs; }; var typeListToArray = (type) => { type.doc ?? warnPrematureAccess(); const cs = []; let n = type._start; while (n !== null) { if (n.countable && !n.deleted) { const c = n.content.getContent(); for (let i = 0; i < c.length; i++) { cs.push(c[i]); } } n = n.right; } return cs; }; var typeListToArraySnapshot = (type, snapshot2) => { const cs = []; let n = type._start; while (n !== null) { if (n.countable && isVisible(n, snapshot2)) { const c = n.content.getContent(); for (let i = 0; i < c.length; i++) { cs.push(c[i]); } } n = n.right; } return cs; }; var typeListForEach = (type, f) => { let index = 0; let n = type._start; type.doc ?? warnPrematureAccess(); while (n !== null) { if (n.countable && !n.deleted) { const c = n.content.getContent(); for (let i = 0; i < c.length; i++) { f(c[i], index++, type); } } n = n.right; } }; var typeListMap = (type, f) => { const result = []; typeListForEach(type, (c, i) => { result.push(f(c, i, type)); }); return result; }; var typeListCreateIterator = (type) => { let n = type._start; let currentContent = null; let currentContentIndex = 0; return { [Symbol.iterator]() { return this; }, next: () => { if (currentContent === null) { while (n !== null && n.deleted) { n = n.right; } if (n === null) { return { done: true, value: void 0 }; } currentContent = n.content.getContent(); currentContentIndex = 0; n = n.right; } const value = currentContent[currentContentIndex++]; if (currentContent.length <= currentContentIndex) { currentContent = null; } return { done: false, value }; } }; }; var typeListGet = (type, index) => { type.doc ?? warnPrematureAccess(); const marker = findMarker(type, index); let n = type._start; if (marker !== null) { n = marker.p; index -= marker.index; } for (; n !== null; n = n.right) { if (!n.deleted && n.countable) { if (index < n.length) { return n.content.getContent()[index]; } index -= n.length; } } }; var typeListInsertGenericsAfter = (transaction, parent, referenceItem, content) => { let left = referenceItem; const doc2 = transaction.doc; const ownClientId = doc2.clientID; const store2 = doc2.store; const right = referenceItem === null ? parent._start : referenceItem.right; let jsonContent = []; const packJsonContent = () => { if (jsonContent.length > 0) { left = new Item(createID(ownClientId, getState(store2, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentAny(jsonContent)); left.integrate(transaction, 0); jsonContent = []; } }; content.forEach((c) => { if (c === null) { jsonContent.push(c); } else { switch (c.constructor) { case Number: case Object: case Boolean: case Array: case String: jsonContent.push(c); break; default: packJsonContent(); switch (c.constructor) { case Uint8Array: case ArrayBuffer: left = new Item(createID(ownClientId, getState(store2, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentBinary(new Uint8Array( /** @type {Uint8Array} */ c ))); left.integrate(transaction, 0); break; case Doc: left = new Item(createID(ownClientId, getState(store2, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentDoc( /** @type {Doc} */ c )); left.integrate(transaction, 0); break; default: if (c instanceof AbstractType) { left = new Item(createID(ownClientId, getState(store2, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentType(c)); left.integrate(transaction, 0); } else { throw new Error("Unexpected content type in insert operation"); } } } } }); packJsonContent(); }; var lengthExceeded = () => create3("Length exceeded!"); var typeListInsertGenerics = (transaction, parent, index, content) => { if (index > parent._length) { throw lengthExceeded(); } if (index === 0) { if (parent._searchMarker) { updateMarkerChanges(parent._searchMarker, index, content.length); } return typeListInsertGenericsAfter(transaction, parent, null, content); } const startIndex = index; const marker = findMarker(parent, index); let n = parent._start; if (marker !== null) { n = marker.p; index -= marker.index; if (index === 0) { n = n.prev; index += n && n.countable && !n.deleted ? n.length : 0; } } for (; n !== null; n = n.right) { if (!n.deleted && n.countable) { if (index <= n.length) { if (index < n.length) { getItemCleanStart(transaction, createID(n.id.client, n.id.clock + index)); } break; } index -= n.length; } } if (parent._searchMarker) { updateMarkerChanges(parent._searchMarker, startIndex, content.length); } return typeListInsertGenericsAfter(transaction, parent, n, content); }; var typeListPushGenerics = (transaction, parent, content) => { const marker = (parent._searchMarker || []).reduce((maxMarker, currMarker) => currMarker.index > maxMarker.index ? currMarker : maxMarker, { index: 0, p: parent._start }); let n = marker.p; if (n) { while (n.right) { n = n.right; } } return typeListInsertGenericsAfter(transaction, parent, n, content); }; var typeListDelete = (transaction, parent, index, length3) => { if (length3 === 0) { return; } const startIndex = index; const startLength = length3; const marker = findMarker(parent, index); let n = parent._start; if (marker !== null) { n = marker.p; index -= marker.index; } for (; n !== null && index > 0; n = n.right) { if (!n.deleted && n.countable) { if (index < n.length) { getItemCleanStart(transaction, createID(n.id.client, n.id.clock + index)); } index -= n.length; } } while (length3 > 0 && n !== null) { if (!n.deleted) { if (length3 < n.length) { getItemCleanStart(transaction, createID(n.id.client, n.id.clock + length3)); } n.delete(transaction); length3 -= n.length; } n = n.right; } if (length3 > 0) { throw lengthExceeded(); } if (parent._searchMarker) { updateMarkerChanges( parent._searchMarker, startIndex, -startLength + length3 /* in case we remove the above exception */ ); } }; var typeMapDelete = (transaction, parent, key) => { const c = parent._map.get(key); if (c !== void 0) { c.delete(transaction); } }; var typeMapSet = (transaction, parent, key, value) => { const left = parent._map.get(key) || null; const doc2 = transaction.doc; const ownClientId = doc2.clientID; let content; if (value == null) { content = new ContentAny([value]); } else { switch (value.constructor) { case Number: case Object: case Boolean: case Array: case String: case Date: case BigInt: content = new ContentAny([value]); break; case Uint8Array: content = new ContentBinary( /** @type {Uint8Array} */ value ); break; case Doc: content = new ContentDoc( /** @type {Doc} */ value ); break; default: if (value instanceof AbstractType) { content = new ContentType(value); } else { throw new Error("Unexpected content type"); } } } new Item(createID(ownClientId, getState(doc2.store, ownClientId)), left, left && left.lastId, null, null, parent, key, content).integrate(transaction, 0); }; var typeMapGet = (parent, key) => { parent.doc ?? warnPrematureAccess(); const val = parent._map.get(key); return val !== void 0 && !val.deleted ? val.content.getContent()[val.length - 1] : void 0; }; var typeMapGetAll = (parent) => { const res = {}; parent.doc ?? warnPrematureAccess(); parent._map.forEach((value, key) => { if (!value.deleted) { res[key] = value.content.getContent()[value.length - 1]; } }); return res; }; var typeMapHas = (parent, key) => { parent.doc ?? warnPrematureAccess(); const val = parent._map.get(key); return val !== void 0 && !val.deleted; }; var typeMapGetSnapshot = (parent, key, snapshot2) => { let v = parent._map.get(key) || null; while (v !== null && (!snapshot2.sv.has(v.id.client) || v.id.clock >= (snapshot2.sv.get(v.id.client) || 0))) { v = v.left; } return v !== null && isVisible(v, snapshot2) ? v.content.getContent()[v.length - 1] : void 0; }; var typeMapGetAllSnapshot = (parent, snapshot2) => { const res = {}; parent._map.forEach((value, key) => { let v = value; while (v !== null && (!snapshot2.sv.has(v.id.client) || v.id.clock >= (snapshot2.sv.get(v.id.client) || 0))) { v = v.left; } if (v !== null && isVisible(v, snapshot2)) { res[key] = v.content.getContent()[v.length - 1]; } }); return res; }; var createMapIterator = (type) => { type.doc ?? warnPrematureAccess(); return iteratorFilter( type._map.entries(), /** @param {any} entry */ (entry) => !entry[1].deleted ); }; var YArrayEvent = class extends YEvent { }; var YArray = class _YArray extends AbstractType { constructor() { super(); this._prelimContent = []; this._searchMarker = []; } /** * Construct a new YArray containing the specified items. * @template {Object|Array|number|null|string|Uint8Array} T * @param {Array} items * @return {YArray} */ static from(items2) { const a = new _YArray(); a.push(items2); return a; } /** * Integrate this type into the Yjs instance. * * * Save this struct in the os * * This type is sent to other client * * Observer functions are fired * * @param {Doc} y The Yjs instance * @param {Item} item */ _integrate(y, item) { super._integrate(y, item); this.insert( 0, /** @type {Array} */ this._prelimContent ); this._prelimContent = null; } /** * @return {YArray} */ _copy() { return new _YArray(); } /** * Makes a copy of this data type that can be included somewhere else. * * Note that the content is only readable _after_ it has been included somewhere in the Ydoc. * * @return {YArray} */ clone() { const arr = new _YArray(); arr.insert(0, this.toArray().map( (el) => el instanceof AbstractType ? ( /** @type {typeof el} */ el.clone() ) : el )); return arr; } get length() { this.doc ?? warnPrematureAccess(); return this._length; } /** * Creates YArrayEvent and calls observers. * * @param {Transaction} transaction * @param {Set} parentSubs Keys changed on this type. `null` if list was modified. */ _callObserver(transaction, parentSubs) { super._callObserver(transaction, parentSubs); callTypeObservers(this, transaction, new YArrayEvent(this, transaction)); } /** * Inserts new content at an index. * * Important: This function expects an array of content. Not just a content * object. The reason for this "weirdness" is that inserting several elements * is very efficient when it is done as a single operation. * * @example * // Insert character 'a' at position 0 * yarray.insert(0, ['a']) * // Insert numbers 1, 2 at position 1 * yarray.insert(1, [1, 2]) * * @param {number} index The index to insert content at. * @param {Array} content The array of content */ insert(index, content) { if (this.doc !== null) { transact(this.doc, (transaction) => { typeListInsertGenerics( transaction, this, index, /** @type {any} */ content ); }); } else { this._prelimContent.splice(index, 0, ...content); } } /** * Appends content to this YArray. * * @param {Array} content Array of content to append. * * @todo Use the following implementation in all types. */ push(content) { if (this.doc !== null) { transact(this.doc, (transaction) => { typeListPushGenerics( transaction, this, /** @type {any} */ content ); }); } else { this._prelimContent.push(...content); } } /** * Prepends content to this YArray. * * @param {Array} content Array of content to prepend. */ unshift(content) { this.insert(0, content); } /** * Deletes elements starting from an index. * * @param {number} index Index at which to start deleting elements * @param {number} length The number of elements to remove. Defaults to 1. */ delete(index, length3 = 1) { if (this.doc !== null) { transact(this.doc, (transaction) => { typeListDelete(transaction, this, index, length3); }); } else { this._prelimContent.splice(index, length3); } } /** * Returns the i-th element from a YArray. * * @param {number} index The index of the element to return from the YArray * @return {T} */ get(index) { return typeListGet(this, index); } /** * Transforms this YArray to a JavaScript Array. * * @return {Array} */ toArray() { return typeListToArray(this); } /** * Returns a portion of this YArray into a JavaScript Array selected * from start to end (end not included). * * @param {number} [start] * @param {number} [end] * @return {Array} */ slice(start = 0, end = this.length) { return typeListSlice(this, start, end); } /** * Transforms this Shared Type to a JSON object. * * @return {Array} */ toJSON() { return this.map((c) => c instanceof AbstractType ? c.toJSON() : c); } /** * Returns an Array with the result of calling a provided function on every * element of this YArray. * * @template M * @param {function(T,number,YArray):M} f Function that produces an element of the new Array * @return {Array} A new array with each element being the result of the * callback function */ map(f) { return typeListMap( this, /** @type {any} */ f ); } /** * Executes a provided function once on every element of this YArray. * * @param {function(T,number,YArray):void} f A function to execute on every element of this YArray. */ forEach(f) { typeListForEach(this, f); } /** * @return {IterableIterator} */ [Symbol.iterator]() { return typeListCreateIterator(this); } /** * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder */ _write(encoder) { encoder.writeTypeRef(YArrayRefID); } }; var readYArray = (_decoder) => new YArray(); var YMapEvent = class extends YEvent { /** * @param {YMap} ymap The YArray that changed. * @param {Transaction} transaction * @param {Set} subs The keys that changed. */ constructor(ymap, transaction, subs) { super(ymap, transaction); this.keysChanged = subs; } }; var YMap = class _YMap extends AbstractType { /** * * @param {Iterable=} entries - an optional iterable to initialize the YMap */ constructor(entries) { super(); this._prelimContent = null; if (entries === void 0) { this._prelimContent = /* @__PURE__ */ new Map(); } else { this._prelimContent = new Map(entries); } } /** * Integrate this type into the Yjs instance. * * * Save this struct in the os * * This type is sent to other client * * Observer functions are fired * * @param {Doc} y The Yjs instance * @param {Item} item */ _integrate(y, item) { super._integrate(y, item); this._prelimContent.forEach((value, key) => { this.set(key, value); }); this._prelimContent = null; } /** * @return {YMap} */ _copy() { return new _YMap(); } /** * Makes a copy of this data type that can be included somewhere else. * * Note that the content is only readable _after_ it has been included somewhere in the Ydoc. * * @return {YMap} */ clone() { const map2 = new _YMap(); this.forEach((value, key) => { map2.set(key, value instanceof AbstractType ? ( /** @type {typeof value} */ value.clone() ) : value); }); return map2; } /** * Creates YMapEvent and calls observers. * * @param {Transaction} transaction * @param {Set} parentSubs Keys changed on this type. `null` if list was modified. */ _callObserver(transaction, parentSubs) { callTypeObservers(this, transaction, new YMapEvent(this, transaction, parentSubs)); } /** * Transforms this Shared Type to a JSON object. * * @return {Object} */ toJSON() { this.doc ?? warnPrematureAccess(); const map2 = {}; this._map.forEach((item, key) => { if (!item.deleted) { const v = item.content.getContent()[item.length - 1]; map2[key] = v instanceof AbstractType ? v.toJSON() : v; } }); return map2; } /** * Returns the size of the YMap (count of key/value pairs) * * @return {number} */ get size() { return [...createMapIterator(this)].length; } /** * Returns the keys for each element in the YMap Type. * * @return {IterableIterator} */ keys() { return iteratorMap( createMapIterator(this), /** @param {any} v */ (v) => v[0] ); } /** * Returns the values for each element in the YMap Type. * * @return {IterableIterator} */ values() { return iteratorMap( createMapIterator(this), /** @param {any} v */ (v) => v[1].content.getContent()[v[1].length - 1] ); } /** * Returns an Iterator of [key, value] pairs * * @return {IterableIterator<[string, MapType]>} */ entries() { return iteratorMap( createMapIterator(this), /** @param {any} v */ (v) => ( /** @type {any} */ [v[0], v[1].content.getContent()[v[1].length - 1]] ) ); } /** * Executes a provided function on once on every key-value pair. * * @param {function(MapType,string,YMap):void} f A function to execute on every element of this YArray. */ forEach(f) { this.doc ?? warnPrematureAccess(); this._map.forEach((item, key) => { if (!item.deleted) { f(item.content.getContent()[item.length - 1], key, this); } }); } /** * Returns an Iterator of [key, value] pairs * * @return {IterableIterator<[string, MapType]>} */ [Symbol.iterator]() { return this.entries(); } /** * Remove a specified element from this YMap. * * @param {string} key The key of the element to remove. */ delete(key) { if (this.doc !== null) { transact(this.doc, (transaction) => { typeMapDelete(transaction, this, key); }); } else { this._prelimContent.delete(key); } } /** * Adds or updates an element with a specified key and value. * @template {MapType} VAL * * @param {string} key The key of the element to add to this YMap * @param {VAL} value The value of the element to add * @return {VAL} */ set(key, value) { if (this.doc !== null) { transact(this.doc, (transaction) => { typeMapSet( transaction, this, key, /** @type {any} */ value ); }); } else { this._prelimContent.set(key, value); } return value; } /** * Returns a specified element from this YMap. * * @param {string} key * @return {MapType|undefined} */ get(key) { return ( /** @type {any} */ typeMapGet(this, key) ); } /** * Returns a boolean indicating whether the specified key exists or not. * * @param {string} key The key to test. * @return {boolean} */ has(key) { return typeMapHas(this, key); } /** * Removes all elements from this YMap. */ clear() { if (this.doc !== null) { transact(this.doc, (transaction) => { this.forEach(function(_value, key, map2) { typeMapDelete(transaction, map2, key); }); }); } else { this._prelimContent.clear(); } } /** * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder */ _write(encoder) { encoder.writeTypeRef(YMapRefID); } }; var readYMap = (_decoder) => new YMap(); var equalAttrs = (a, b) => a === b || typeof a === "object" && typeof b === "object" && a && b && equalFlat(a, b); var ItemTextListPosition = class { /** * @param {Item|null} left * @param {Item|null} right * @param {number} index * @param {Map} currentAttributes */ constructor(left, right, index, currentAttributes) { this.left = left; this.right = right; this.index = index; this.currentAttributes = currentAttributes; } /** * Only call this if you know that this.right is defined */ forward() { if (this.right === null) { unexpectedCase(); } switch (this.right.content.constructor) { case ContentFormat: if (!this.right.deleted) { updateCurrentAttributes( this.currentAttributes, /** @type {ContentFormat} */ this.right.content ); } break; default: if (!this.right.deleted) { this.index += this.right.length; } break; } this.left = this.right; this.right = this.right.right; } }; var findNextPosition = (transaction, pos, count) => { while (pos.right !== null && count > 0) { switch (pos.right.content.constructor) { case ContentFormat: if (!pos.right.deleted) { updateCurrentAttributes( pos.currentAttributes, /** @type {ContentFormat} */ pos.right.content ); } break; default: if (!pos.right.deleted) { if (count < pos.right.length) { getItemCleanStart(transaction, createID(pos.right.id.client, pos.right.id.clock + count)); } pos.index += pos.right.length; count -= pos.right.length; } break; } pos.left = pos.right; pos.right = pos.right.right; } return pos; }; var findPosition = (transaction, parent, index, useSearchMarker) => { const currentAttributes = /* @__PURE__ */ new Map(); const marker = useSearchMarker ? findMarker(parent, index) : null; if (marker) { const pos = new ItemTextListPosition(marker.p.left, marker.p, marker.index, currentAttributes); return findNextPosition(transaction, pos, index - marker.index); } else { const pos = new ItemTextListPosition(null, parent._start, 0, currentAttributes); return findNextPosition(transaction, pos, index); } }; var insertNegatedAttributes = (transaction, parent, currPos, negatedAttributes) => { while (currPos.right !== null && (currPos.right.deleted === true || currPos.right.content.constructor === ContentFormat && equalAttrs( negatedAttributes.get( /** @type {ContentFormat} */ currPos.right.content.key ), /** @type {ContentFormat} */ currPos.right.content.value ))) { if (!currPos.right.deleted) { negatedAttributes.delete( /** @type {ContentFormat} */ currPos.right.content.key ); } currPos.forward(); } const doc2 = transaction.doc; const ownClientId = doc2.clientID; negatedAttributes.forEach((val, key) => { const left = currPos.left; const right = currPos.right; const nextFormat = new Item(createID(ownClientId, getState(doc2.store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentFormat(key, val)); nextFormat.integrate(transaction, 0); currPos.right = nextFormat; currPos.forward(); }); }; var updateCurrentAttributes = (currentAttributes, format) => { const { key, value } = format; if (value === null) { currentAttributes.delete(key); } else { currentAttributes.set(key, value); } }; var minimizeAttributeChanges = (currPos, attributes) => { while (true) { if (currPos.right === null) { break; } else if (currPos.right.deleted || currPos.right.content.constructor === ContentFormat && equalAttrs( attributes[ /** @type {ContentFormat} */ currPos.right.content.key ] ?? null, /** @type {ContentFormat} */ currPos.right.content.value )) ; else { break; } currPos.forward(); } }; var insertAttributes = (transaction, parent, currPos, attributes) => { const doc2 = transaction.doc; const ownClientId = doc2.clientID; const negatedAttributes = /* @__PURE__ */ new Map(); for (const key in attributes) { const val = attributes[key]; const currentVal = currPos.currentAttributes.get(key) ?? null; if (!equalAttrs(currentVal, val)) { negatedAttributes.set(key, currentVal); const { left, right } = currPos; currPos.right = new Item(createID(ownClientId, getState(doc2.store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentFormat(key, val)); currPos.right.integrate(transaction, 0); currPos.forward(); } } return negatedAttributes; }; var insertText = (transaction, parent, currPos, text2, attributes) => { currPos.currentAttributes.forEach((_val, key) => { if (attributes[key] === void 0) { attributes[key] = null; } }); const doc2 = transaction.doc; const ownClientId = doc2.clientID; minimizeAttributeChanges(currPos, attributes); const negatedAttributes = insertAttributes(transaction, parent, currPos, attributes); const content = text2.constructor === String ? new ContentString( /** @type {string} */ text2 ) : text2 instanceof AbstractType ? new ContentType(text2) : new ContentEmbed(text2); let { left, right, index } = currPos; if (parent._searchMarker) { updateMarkerChanges(parent._searchMarker, currPos.index, content.getLength()); } right = new Item(createID(ownClientId, getState(doc2.store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, content); right.integrate(transaction, 0); currPos.right = right; currPos.index = index; currPos.forward(); insertNegatedAttributes(transaction, parent, currPos, negatedAttributes); }; var formatText = (transaction, parent, currPos, length3, attributes) => { const doc2 = transaction.doc; const ownClientId = doc2.clientID; minimizeAttributeChanges(currPos, attributes); const negatedAttributes = insertAttributes(transaction, parent, currPos, attributes); iterationLoop: while (currPos.right !== null && (length3 > 0 || negatedAttributes.size > 0 && (currPos.right.deleted || currPos.right.content.constructor === ContentFormat))) { if (!currPos.right.deleted) { switch (currPos.right.content.constructor) { case ContentFormat: { const { key, value } = ( /** @type {ContentFormat} */ currPos.right.content ); const attr = attributes[key]; if (attr !== void 0) { if (equalAttrs(attr, value)) { negatedAttributes.delete(key); } else { if (length3 === 0) { break iterationLoop; } negatedAttributes.set(key, value); } currPos.right.delete(transaction); } else { currPos.currentAttributes.set(key, value); } break; } default: if (length3 < currPos.right.length) { getItemCleanStart(transaction, createID(currPos.right.id.client, currPos.right.id.clock + length3)); } length3 -= currPos.right.length; break; } } currPos.forward(); } if (length3 > 0) { let newlines = ""; for (; length3 > 0; length3--) { newlines += "\n"; } currPos.right = new Item(createID(ownClientId, getState(doc2.store, ownClientId)), currPos.left, currPos.left && currPos.left.lastId, currPos.right, currPos.right && currPos.right.id, parent, null, new ContentString(newlines)); currPos.right.integrate(transaction, 0); currPos.forward(); } insertNegatedAttributes(transaction, parent, currPos, negatedAttributes); }; var cleanupFormattingGap = (transaction, start, curr, startAttributes, currAttributes) => { let end = start; const endFormats = create(); while (end && (!end.countable || end.deleted)) { if (!end.deleted && end.content.constructor === ContentFormat) { const cf = ( /** @type {ContentFormat} */ end.content ); endFormats.set(cf.key, cf); } end = end.right; } let cleanups = 0; let reachedCurr = false; while (start !== end) { if (curr === start) { reachedCurr = true; } if (!start.deleted) { const content = start.content; switch (content.constructor) { case ContentFormat: { const { key, value } = ( /** @type {ContentFormat} */ content ); const startAttrValue = startAttributes.get(key) ?? null; if (endFormats.get(key) !== content || startAttrValue === value) { start.delete(transaction); cleanups++; if (!reachedCurr && (currAttributes.get(key) ?? null) === value && startAttrValue !== value) { if (startAttrValue === null) { currAttributes.delete(key); } else { currAttributes.set(key, startAttrValue); } } } if (!reachedCurr && !start.deleted) { updateCurrentAttributes( currAttributes, /** @type {ContentFormat} */ content ); } break; } } } start = /** @type {Item} */ start.right; } return cleanups; }; var cleanupContextlessFormattingGap = (transaction, item) => { while (item && item.right && (item.right.deleted || !item.right.countable)) { item = item.right; } const attrs = /* @__PURE__ */ new Set(); while (item && (item.deleted || !item.countable)) { if (!item.deleted && item.content.constructor === ContentFormat) { const key = ( /** @type {ContentFormat} */ item.content.key ); if (attrs.has(key)) { item.delete(transaction); } else { attrs.add(key); } } item = item.left; } }; var cleanupYTextFormatting = (type) => { let res = 0; transact( /** @type {Doc} */ type.doc, (transaction) => { let start = ( /** @type {Item} */ type._start ); let end = type._start; let startAttributes = create(); const currentAttributes = copy(startAttributes); while (end) { if (end.deleted === false) { switch (end.content.constructor) { case ContentFormat: updateCurrentAttributes( currentAttributes, /** @type {ContentFormat} */ end.content ); break; default: res += cleanupFormattingGap(transaction, start, end, startAttributes, currentAttributes); startAttributes = copy(currentAttributes); start = end; break; } } end = end.right; } } ); return res; }; var cleanupYTextAfterTransaction = (transaction) => { const needFullCleanup = /* @__PURE__ */ new Set(); const doc2 = transaction.doc; for (const [client, afterClock] of transaction.afterState.entries()) { const clock = transaction.beforeState.get(client) || 0; if (afterClock === clock) { continue; } iterateStructs( transaction, /** @type {Array} */ doc2.store.clients.get(client), clock, afterClock, (item) => { if (!item.deleted && /** @type {Item} */ item.content.constructor === ContentFormat && item.constructor !== GC) { needFullCleanup.add( /** @type {any} */ item.parent ); } } ); } transact(doc2, (t) => { iterateDeletedStructs(transaction, transaction.deleteSet, (item) => { if (item instanceof GC || !/** @type {YText} */ item.parent._hasFormatting || needFullCleanup.has( /** @type {YText} */ item.parent )) { return; } const parent = ( /** @type {YText} */ item.parent ); if (item.content.constructor === ContentFormat) { needFullCleanup.add(parent); } else { cleanupContextlessFormattingGap(t, item); } }); for (const yText of needFullCleanup) { cleanupYTextFormatting(yText); } }); }; var deleteText = (transaction, currPos, length3) => { const startLength = length3; const startAttrs = copy(currPos.currentAttributes); const start = currPos.right; while (length3 > 0 && currPos.right !== null) { if (currPos.right.deleted === false) { switch (currPos.right.content.constructor) { case ContentType: case ContentEmbed: case ContentString: if (length3 < currPos.right.length) { getItemCleanStart(transaction, createID(currPos.right.id.client, currPos.right.id.clock + length3)); } length3 -= currPos.right.length; currPos.right.delete(transaction); break; } } currPos.forward(); } if (start) { cleanupFormattingGap(transaction, start, currPos.right, startAttrs, currPos.currentAttributes); } const parent = ( /** @type {AbstractType} */ /** @type {Item} */ (currPos.left || currPos.right).parent ); if (parent._searchMarker) { updateMarkerChanges(parent._searchMarker, currPos.index, -startLength + length3); } return currPos; }; var YTextEvent = class extends YEvent { /** * @param {YText} ytext * @param {Transaction} transaction * @param {Set} subs The keys that changed */ constructor(ytext, transaction, subs) { super(ytext, transaction); this.childListChanged = false; this.keysChanged = /* @__PURE__ */ new Set(); subs.forEach((sub) => { if (sub === null) { this.childListChanged = true; } else { this.keysChanged.add(sub); } }); } /** * @type {{added:Set,deleted:Set,keys:Map,delta:Array<{insert?:Array|string, delete?:number, retain?:number}>}} */ get changes() { if (this._changes === null) { const changes = { keys: this.keys, delta: this.delta, added: /* @__PURE__ */ new Set(), deleted: /* @__PURE__ */ new Set() }; this._changes = changes; } return ( /** @type {any} */ this._changes ); } /** * Compute the changes in the delta format. * A {@link https://quilljs.com/docs/delta/|Quill Delta}) that represents the changes on the document. * * @type {Array<{insert?:string|object|AbstractType, delete?:number, retain?:number, attributes?: Object}>} * * @public */ get delta() { if (this._delta === null) { const y = ( /** @type {Doc} */ this.target.doc ); const delta = []; transact(y, (transaction) => { const currentAttributes = /* @__PURE__ */ new Map(); const oldAttributes = /* @__PURE__ */ new Map(); let item = this.target._start; let action = null; const attributes = {}; let insert2 = ""; let retain = 0; let deleteLen = 0; const addOp = () => { if (action !== null) { let op = null; switch (action) { case "delete": if (deleteLen > 0) { op = { delete: deleteLen }; } deleteLen = 0; break; case "insert": if (typeof insert2 === "object" || insert2.length > 0) { op = { insert: insert2 }; if (currentAttributes.size > 0) { op.attributes = {}; currentAttributes.forEach((value, key) => { if (value !== null) { op.attributes[key] = value; } }); } } insert2 = ""; break; case "retain": if (retain > 0) { op = { retain }; if (!isEmpty(attributes)) { op.attributes = assign({}, attributes); } } retain = 0; break; } if (op) delta.push(op); action = null; } }; while (item !== null) { switch (item.content.constructor) { case ContentType: case ContentEmbed: if (this.adds(item)) { if (!this.deletes(item)) { addOp(); action = "insert"; insert2 = item.content.getContent()[0]; addOp(); } } else if (this.deletes(item)) { if (action !== "delete") { addOp(); action = "delete"; } deleteLen += 1; } else if (!item.deleted) { if (action !== "retain") { addOp(); action = "retain"; } retain += 1; } break; case ContentString: if (this.adds(item)) { if (!this.deletes(item)) { if (action !== "insert") { addOp(); action = "insert"; } insert2 += /** @type {ContentString} */ item.content.str; } } else if (this.deletes(item)) { if (action !== "delete") { addOp(); action = "delete"; } deleteLen += item.length; } else if (!item.deleted) { if (action !== "retain") { addOp(); action = "retain"; } retain += item.length; } break; case ContentFormat: { const { key, value } = ( /** @type {ContentFormat} */ item.content ); if (this.adds(item)) { if (!this.deletes(item)) { const curVal = currentAttributes.get(key) ?? null; if (!equalAttrs(curVal, value)) { if (action === "retain") { addOp(); } if (equalAttrs(value, oldAttributes.get(key) ?? null)) { delete attributes[key]; } else { attributes[key] = value; } } else if (value !== null) { item.delete(transaction); } } } else if (this.deletes(item)) { oldAttributes.set(key, value); const curVal = currentAttributes.get(key) ?? null; if (!equalAttrs(curVal, value)) { if (action === "retain") { addOp(); } attributes[key] = curVal; } } else if (!item.deleted) { oldAttributes.set(key, value); const attr = attributes[key]; if (attr !== void 0) { if (!equalAttrs(attr, value)) { if (action === "retain") { addOp(); } if (value === null) { delete attributes[key]; } else { attributes[key] = value; } } else if (attr !== null) { item.delete(transaction); } } } if (!item.deleted) { if (action === "insert") { addOp(); } updateCurrentAttributes( currentAttributes, /** @type {ContentFormat} */ item.content ); } break; } } item = item.right; } addOp(); while (delta.length > 0) { const lastOp = delta[delta.length - 1]; if (lastOp.retain !== void 0 && lastOp.attributes === void 0) { delta.pop(); } else { break; } } }); this._delta = delta; } return ( /** @type {any} */ this._delta ); } }; var YText = class _YText extends AbstractType { /** * @param {String} [string] The initial value of the YText. */ constructor(string) { super(); this._pending = string !== void 0 ? [() => this.insert(0, string)] : []; this._searchMarker = []; this._hasFormatting = false; } /** * Number of characters of this text type. * * @type {number} */ get length() { this.doc ?? warnPrematureAccess(); return this._length; } /** * @param {Doc} y * @param {Item} item */ _integrate(y, item) { super._integrate(y, item); try { this._pending.forEach((f) => f()); } catch (e) { console.error(e); } this._pending = null; } _copy() { return new _YText(); } /** * Makes a copy of this data type that can be included somewhere else. * * Note that the content is only readable _after_ it has been included somewhere in the Ydoc. * * @return {YText} */ clone() { const text2 = new _YText(); text2.applyDelta(this.toDelta()); return text2; } /** * Creates YTextEvent and calls observers. * * @param {Transaction} transaction * @param {Set} parentSubs Keys changed on this type. `null` if list was modified. */ _callObserver(transaction, parentSubs) { super._callObserver(transaction, parentSubs); const event = new YTextEvent(this, transaction, parentSubs); callTypeObservers(this, transaction, event); if (!transaction.local && this._hasFormatting) { transaction._needFormattingCleanup = true; } } /** * Returns the unformatted string representation of this YText type. * * @public */ toString() { this.doc ?? warnPrematureAccess(); let str = ""; let n = this._start; while (n !== null) { if (!n.deleted && n.countable && n.content.constructor === ContentString) { str += /** @type {ContentString} */ n.content.str; } n = n.right; } return str; } /** * Returns the unformatted string representation of this YText type. * * @return {string} * @public */ toJSON() { return this.toString(); } /** * Apply a {@link Delta} on this shared YText type. * * @param {Array} delta The changes to apply on this element. * @param {object} opts * @param {boolean} [opts.sanitize] Sanitize input delta. Removes ending newlines if set to true. * * * @public */ applyDelta(delta, { sanitize = true } = {}) { if (this.doc !== null) { transact(this.doc, (transaction) => { const currPos = new ItemTextListPosition(null, this._start, 0, /* @__PURE__ */ new Map()); for (let i = 0; i < delta.length; i++) { const op = delta[i]; if (op.insert !== void 0) { const ins = !sanitize && typeof op.insert === "string" && i === delta.length - 1 && currPos.right === null && op.insert.slice(-1) === "\n" ? op.insert.slice(0, -1) : op.insert; if (typeof ins !== "string" || ins.length > 0) { insertText(transaction, this, currPos, ins, op.attributes || {}); } } else if (op.retain !== void 0) { formatText(transaction, this, currPos, op.retain, op.attributes || {}); } else if (op.delete !== void 0) { deleteText(transaction, currPos, op.delete); } } }); } else { this._pending.push(() => this.applyDelta(delta)); } } /** * Returns the Delta representation of this YText type. * * @param {Snapshot} [snapshot] * @param {Snapshot} [prevSnapshot] * @param {function('removed' | 'added', ID):any} [computeYChange] * @return {any} The Delta representation of this type. * * @public */ toDelta(snapshot2, prevSnapshot, computeYChange) { this.doc ?? warnPrematureAccess(); const ops = []; const currentAttributes = /* @__PURE__ */ new Map(); const doc2 = ( /** @type {Doc} */ this.doc ); let str = ""; let n = this._start; function packStr() { if (str.length > 0) { const attributes = {}; let addAttributes = false; currentAttributes.forEach((value, key) => { addAttributes = true; attributes[key] = value; }); const op = { insert: str }; if (addAttributes) { op.attributes = attributes; } ops.push(op); str = ""; } } const computeDelta = () => { while (n !== null) { if (isVisible(n, snapshot2) || prevSnapshot !== void 0 && isVisible(n, prevSnapshot)) { switch (n.content.constructor) { case ContentString: { const cur = currentAttributes.get("ychange"); if (snapshot2 !== void 0 && !isVisible(n, snapshot2)) { if (cur === void 0 || cur.user !== n.id.client || cur.type !== "removed") { packStr(); currentAttributes.set("ychange", computeYChange ? computeYChange("removed", n.id) : { type: "removed" }); } } else if (prevSnapshot !== void 0 && !isVisible(n, prevSnapshot)) { if (cur === void 0 || cur.user !== n.id.client || cur.type !== "added") { packStr(); currentAttributes.set("ychange", computeYChange ? computeYChange("added", n.id) : { type: "added" }); } } else if (cur !== void 0) { packStr(); currentAttributes.delete("ychange"); } str += /** @type {ContentString} */ n.content.str; break; } case ContentType: case ContentEmbed: { packStr(); const op = { insert: n.content.getContent()[0] }; if (currentAttributes.size > 0) { const attrs = ( /** @type {Object} */ {} ); op.attributes = attrs; currentAttributes.forEach((value, key) => { attrs[key] = value; }); } ops.push(op); break; } case ContentFormat: if (isVisible(n, snapshot2)) { packStr(); updateCurrentAttributes( currentAttributes, /** @type {ContentFormat} */ n.content ); } break; } } n = n.right; } packStr(); }; if (snapshot2 || prevSnapshot) { transact(doc2, (transaction) => { if (snapshot2) { splitSnapshotAffectedStructs(transaction, snapshot2); } if (prevSnapshot) { splitSnapshotAffectedStructs(transaction, prevSnapshot); } computeDelta(); }, "cleanup"); } else { computeDelta(); } return ops; } /** * Insert text at a given index. * * @param {number} index The index at which to start inserting. * @param {String} text The text to insert at the specified position. * @param {TextAttributes} [attributes] Optionally define some formatting * information to apply on the inserted * Text. * @public */ insert(index, text2, attributes) { if (text2.length <= 0) { return; } const y = this.doc; if (y !== null) { transact(y, (transaction) => { const pos = findPosition(transaction, this, index, !attributes); if (!attributes) { attributes = {}; pos.currentAttributes.forEach((v, k) => { attributes[k] = v; }); } insertText(transaction, this, pos, text2, attributes); }); } else { this._pending.push(() => this.insert(index, text2, attributes)); } } /** * Inserts an embed at a index. * * @param {number} index The index to insert the embed at. * @param {Object | AbstractType} embed The Object that represents the embed. * @param {TextAttributes} [attributes] Attribute information to apply on the * embed * * @public */ insertEmbed(index, embed, attributes) { const y = this.doc; if (y !== null) { transact(y, (transaction) => { const pos = findPosition(transaction, this, index, !attributes); insertText(transaction, this, pos, embed, attributes || {}); }); } else { this._pending.push(() => this.insertEmbed(index, embed, attributes || {})); } } /** * Deletes text starting from an index. * * @param {number} index Index at which to start deleting. * @param {number} length The number of characters to remove. Defaults to 1. * * @public */ delete(index, length3) { if (length3 === 0) { return; } const y = this.doc; if (y !== null) { transact(y, (transaction) => { deleteText(transaction, findPosition(transaction, this, index, true), length3); }); } else { this._pending.push(() => this.delete(index, length3)); } } /** * Assigns properties to a range of text. * * @param {number} index The position where to start formatting. * @param {number} length The amount of characters to assign properties to. * @param {TextAttributes} attributes Attribute information to apply on the * text. * * @public */ format(index, length3, attributes) { if (length3 === 0) { return; } const y = this.doc; if (y !== null) { transact(y, (transaction) => { const pos = findPosition(transaction, this, index, false); if (pos.right === null) { return; } formatText(transaction, this, pos, length3, attributes); }); } else { this._pending.push(() => this.format(index, length3, attributes)); } } /** * Removes an attribute. * * @note Xml-Text nodes don't have attributes. You can use this feature to assign properties to complete text-blocks. * * @param {String} attributeName The attribute name that is to be removed. * * @public */ removeAttribute(attributeName) { if (this.doc !== null) { transact(this.doc, (transaction) => { typeMapDelete(transaction, this, attributeName); }); } else { this._pending.push(() => this.removeAttribute(attributeName)); } } /** * Sets or updates an attribute. * * @note Xml-Text nodes don't have attributes. You can use this feature to assign properties to complete text-blocks. * * @param {String} attributeName The attribute name that is to be set. * @param {any} attributeValue The attribute value that is to be set. * * @public */ setAttribute(attributeName, attributeValue) { if (this.doc !== null) { transact(this.doc, (transaction) => { typeMapSet(transaction, this, attributeName, attributeValue); }); } else { this._pending.push(() => this.setAttribute(attributeName, attributeValue)); } } /** * Returns an attribute value that belongs to the attribute name. * * @note Xml-Text nodes don't have attributes. You can use this feature to assign properties to complete text-blocks. * * @param {String} attributeName The attribute name that identifies the * queried value. * @return {any} The queried attribute value. * * @public */ getAttribute(attributeName) { return ( /** @type {any} */ typeMapGet(this, attributeName) ); } /** * Returns all attribute name/value pairs in a JSON Object. * * @note Xml-Text nodes don't have attributes. You can use this feature to assign properties to complete text-blocks. * * @return {Object} A JSON Object that describes the attributes. * * @public */ getAttributes() { return typeMapGetAll(this); } /** * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder */ _write(encoder) { encoder.writeTypeRef(YTextRefID); } }; var readYText = (_decoder) => new YText(); var YXmlTreeWalker = class { /** * @param {YXmlFragment | YXmlElement} root * @param {function(AbstractType):boolean} [f] */ constructor(root, f = () => true) { this._filter = f; this._root = root; this._currentNode = /** @type {Item} */ root._start; this._firstCall = true; root.doc ?? warnPrematureAccess(); } [Symbol.iterator]() { return this; } /** * Get the next node. * * @return {IteratorResult} The next node. * * @public */ next() { let n = this._currentNode; let type = n && n.content && /** @type {any} */ n.content.type; if (n !== null && (!this._firstCall || n.deleted || !this._filter(type))) { do { type = /** @type {any} */ n.content.type; if (!n.deleted && (type.constructor === YXmlElement || type.constructor === YXmlFragment) && type._start !== null) { n = type._start; } else { while (n !== null) { const nxt = n.next; if (nxt !== null) { n = nxt; break; } else if (n.parent === this._root) { n = null; } else { n = /** @type {AbstractType} */ n.parent._item; } } } } while (n !== null && (n.deleted || !this._filter( /** @type {ContentType} */ n.content.type ))); } this._firstCall = false; if (n === null) { return { value: void 0, done: true }; } this._currentNode = n; return { value: ( /** @type {any} */ n.content.type ), done: false }; } }; var YXmlFragment = class _YXmlFragment extends AbstractType { constructor() { super(); this._prelimContent = []; } /** * @type {YXmlElement|YXmlText|null} */ get firstChild() { const first = this._first; return first ? first.content.getContent()[0] : null; } /** * Integrate this type into the Yjs instance. * * * Save this struct in the os * * This type is sent to other client * * Observer functions are fired * * @param {Doc} y The Yjs instance * @param {Item} item */ _integrate(y, item) { super._integrate(y, item); this.insert( 0, /** @type {Array} */ this._prelimContent ); this._prelimContent = null; } _copy() { return new _YXmlFragment(); } /** * Makes a copy of this data type that can be included somewhere else. * * Note that the content is only readable _after_ it has been included somewhere in the Ydoc. * * @return {YXmlFragment} */ clone() { const el = new _YXmlFragment(); el.insert(0, this.toArray().map((item) => item instanceof AbstractType ? item.clone() : item)); return el; } get length() { this.doc ?? warnPrematureAccess(); return this._prelimContent === null ? this._length : this._prelimContent.length; } /** * Create a subtree of childNodes. * * @example * const walker = elem.createTreeWalker(dom => dom.nodeName === 'div') * for (let node in walker) { * // `node` is a div node * nop(node) * } * * @param {function(AbstractType):boolean} filter Function that is called on each child element and * returns a Boolean indicating whether the child * is to be included in the subtree. * @return {YXmlTreeWalker} A subtree and a position within it. * * @public */ createTreeWalker(filter) { return new YXmlTreeWalker(this, filter); } /** * Returns the first YXmlElement that matches the query. * Similar to DOM's {@link querySelector}. * * Query support: * - tagname * TODO: * - id * - attribute * * @param {CSS_Selector} query The query on the children. * @return {YXmlElement|YXmlText|YXmlHook|null} The first element that matches the query or null. * * @public */ querySelector(query) { query = query.toUpperCase(); const iterator = new YXmlTreeWalker(this, (element2) => element2.nodeName && element2.nodeName.toUpperCase() === query); const next = iterator.next(); if (next.done) { return null; } else { return next.value; } } /** * Returns all YXmlElements that match the query. * Similar to Dom's {@link querySelectorAll}. * * @todo Does not yet support all queries. Currently only query by tagName. * * @param {CSS_Selector} query The query on the children * @return {Array} The elements that match this query. * * @public */ querySelectorAll(query) { query = query.toUpperCase(); return from(new YXmlTreeWalker(this, (element2) => element2.nodeName && element2.nodeName.toUpperCase() === query)); } /** * Creates YXmlEvent and calls observers. * * @param {Transaction} transaction * @param {Set} parentSubs Keys changed on this type. `null` if list was modified. */ _callObserver(transaction, parentSubs) { callTypeObservers(this, transaction, new YXmlEvent(this, parentSubs, transaction)); } /** * Get the string representation of all the children of this YXmlFragment. * * @return {string} The string representation of all children. */ toString() { return typeListMap(this, (xml) => xml.toString()).join(""); } /** * @return {string} */ toJSON() { return this.toString(); } /** * Creates a Dom Element that mirrors this YXmlElement. * * @param {Document} [_document=document] The document object (you must define * this when calling this method in * nodejs) * @param {Object} [hooks={}] Optional property to customize how hooks * are presented in the DOM * @param {any} [binding] You should not set this property. This is * used if DomBinding wants to create a * association to the created DOM type. * @return {Node} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element} * * @public */ toDOM(_document = document, hooks = {}, binding) { const fragment = _document.createDocumentFragment(); if (binding !== void 0) { binding._createAssociation(fragment, this); } typeListForEach(this, (xmlType) => { fragment.insertBefore(xmlType.toDOM(_document, hooks, binding), null); }); return fragment; } /** * Inserts new content at an index. * * @example * // Insert character 'a' at position 0 * xml.insert(0, [new Y.XmlText('text')]) * * @param {number} index The index to insert content at * @param {Array} content The array of content */ insert(index, content) { if (this.doc !== null) { transact(this.doc, (transaction) => { typeListInsertGenerics(transaction, this, index, content); }); } else { this._prelimContent.splice(index, 0, ...content); } } /** * Inserts new content at an index. * * @example * // Insert character 'a' at position 0 * xml.insert(0, [new Y.XmlText('text')]) * * @param {null|Item|YXmlElement|YXmlText} ref The index to insert content at * @param {Array} content The array of content */ insertAfter(ref, content) { if (this.doc !== null) { transact(this.doc, (transaction) => { const refItem = ref && ref instanceof AbstractType ? ref._item : ref; typeListInsertGenericsAfter(transaction, this, refItem, content); }); } else { const pc = ( /** @type {Array} */ this._prelimContent ); const index = ref === null ? 0 : pc.findIndex((el) => el === ref) + 1; if (index === 0 && ref !== null) { throw create3("Reference item not found"); } pc.splice(index, 0, ...content); } } /** * Deletes elements starting from an index. * * @param {number} index Index at which to start deleting elements * @param {number} [length=1] The number of elements to remove. Defaults to 1. */ delete(index, length3 = 1) { if (this.doc !== null) { transact(this.doc, (transaction) => { typeListDelete(transaction, this, index, length3); }); } else { this._prelimContent.splice(index, length3); } } /** * Transforms this YArray to a JavaScript Array. * * @return {Array} */ toArray() { return typeListToArray(this); } /** * Appends content to this YArray. * * @param {Array} content Array of content to append. */ push(content) { this.insert(this.length, content); } /** * Prepends content to this YArray. * * @param {Array} content Array of content to prepend. */ unshift(content) { this.insert(0, content); } /** * Returns the i-th element from a YArray. * * @param {number} index The index of the element to return from the YArray * @return {YXmlElement|YXmlText} */ get(index) { return typeListGet(this, index); } /** * Returns a portion of this YXmlFragment into a JavaScript Array selected * from start to end (end not included). * * @param {number} [start] * @param {number} [end] * @return {Array} */ slice(start = 0, end = this.length) { return typeListSlice(this, start, end); } /** * Executes a provided function on once on every child element. * * @param {function(YXmlElement|YXmlText,number, typeof self):void} f A function to execute on every element of this YArray. */ forEach(f) { typeListForEach(this, f); } /** * Transform the properties of this type to binary and write it to an * BinaryEncoder. * * This is called when this Item is sent to a remote peer. * * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder The encoder to write data to. */ _write(encoder) { encoder.writeTypeRef(YXmlFragmentRefID); } }; var readYXmlFragment = (_decoder) => new YXmlFragment(); var YXmlElement = class _YXmlElement extends YXmlFragment { constructor(nodeName = "UNDEFINED") { super(); this.nodeName = nodeName; this._prelimAttrs = /* @__PURE__ */ new Map(); } /** * @type {YXmlElement|YXmlText|null} */ get nextSibling() { const n = this._item ? this._item.next : null; return n ? ( /** @type {YXmlElement|YXmlText} */ /** @type {ContentType} */ n.content.type ) : null; } /** * @type {YXmlElement|YXmlText|null} */ get prevSibling() { const n = this._item ? this._item.prev : null; return n ? ( /** @type {YXmlElement|YXmlText} */ /** @type {ContentType} */ n.content.type ) : null; } /** * Integrate this type into the Yjs instance. * * * Save this struct in the os * * This type is sent to other client * * Observer functions are fired * * @param {Doc} y The Yjs instance * @param {Item} item */ _integrate(y, item) { super._integrate(y, item); /** @type {Map} */ this._prelimAttrs.forEach((value, key) => { this.setAttribute(key, value); }); this._prelimAttrs = null; } /** * Creates an Item with the same effect as this Item (without position effect) * * @return {YXmlElement} */ _copy() { return new _YXmlElement(this.nodeName); } /** * Makes a copy of this data type that can be included somewhere else. * * Note that the content is only readable _after_ it has been included somewhere in the Ydoc. * * @return {YXmlElement} */ clone() { const el = new _YXmlElement(this.nodeName); const attrs = this.getAttributes(); forEach(attrs, (value, key) => { el.setAttribute( key, /** @type {any} */ value ); }); el.insert(0, this.toArray().map((v) => v instanceof AbstractType ? v.clone() : v)); return el; } /** * Returns the XML serialization of this YXmlElement. * The attributes are ordered by attribute-name, so you can easily use this * method to compare YXmlElements * * @return {string} The string representation of this type. * * @public */ toString() { const attrs = this.getAttributes(); const stringBuilder = []; const keys2 = []; for (const key in attrs) { keys2.push(key); } keys2.sort(); const keysLen = keys2.length; for (let i = 0; i < keysLen; i++) { const key = keys2[i]; stringBuilder.push(key + '="' + attrs[key] + '"'); } const nodeName = this.nodeName.toLocaleLowerCase(); const attrsString = stringBuilder.length > 0 ? " " + stringBuilder.join(" ") : ""; return `<${nodeName}${attrsString}>${super.toString()}`; } /** * Removes an attribute from this YXmlElement. * * @param {string} attributeName The attribute name that is to be removed. * * @public */ removeAttribute(attributeName) { if (this.doc !== null) { transact(this.doc, (transaction) => { typeMapDelete(transaction, this, attributeName); }); } else { this._prelimAttrs.delete(attributeName); } } /** * Sets or updates an attribute. * * @template {keyof KV & string} KEY * * @param {KEY} attributeName The attribute name that is to be set. * @param {KV[KEY]} attributeValue The attribute value that is to be set. * * @public */ setAttribute(attributeName, attributeValue) { if (this.doc !== null) { transact(this.doc, (transaction) => { typeMapSet(transaction, this, attributeName, attributeValue); }); } else { this._prelimAttrs.set(attributeName, attributeValue); } } /** * Returns an attribute value that belongs to the attribute name. * * @template {keyof KV & string} KEY * * @param {KEY} attributeName The attribute name that identifies the * queried value. * @return {KV[KEY]|undefined} The queried attribute value. * * @public */ getAttribute(attributeName) { return ( /** @type {any} */ typeMapGet(this, attributeName) ); } /** * Returns whether an attribute exists * * @param {string} attributeName The attribute name to check for existence. * @return {boolean} whether the attribute exists. * * @public */ hasAttribute(attributeName) { return ( /** @type {any} */ typeMapHas(this, attributeName) ); } /** * Returns all attribute name/value pairs in a JSON Object. * * @param {Snapshot} [snapshot] * @return {{ [Key in Extract]?: KV[Key]}} A JSON Object that describes the attributes. * * @public */ getAttributes(snapshot2) { return ( /** @type {any} */ snapshot2 ? typeMapGetAllSnapshot(this, snapshot2) : typeMapGetAll(this) ); } /** * Creates a Dom Element that mirrors this YXmlElement. * * @param {Document} [_document=document] The document object (you must define * this when calling this method in * nodejs) * @param {Object} [hooks={}] Optional property to customize how hooks * are presented in the DOM * @param {any} [binding] You should not set this property. This is * used if DomBinding wants to create a * association to the created DOM type. * @return {Node} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element} * * @public */ toDOM(_document = document, hooks = {}, binding) { const dom = _document.createElement(this.nodeName); const attrs = this.getAttributes(); for (const key in attrs) { const value = attrs[key]; if (typeof value === "string") { dom.setAttribute(key, value); } } typeListForEach(this, (yxml) => { dom.appendChild(yxml.toDOM(_document, hooks, binding)); }); if (binding !== void 0) { binding._createAssociation(dom, this); } return dom; } /** * Transform the properties of this type to binary and write it to an * BinaryEncoder. * * This is called when this Item is sent to a remote peer. * * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder The encoder to write data to. */ _write(encoder) { encoder.writeTypeRef(YXmlElementRefID); encoder.writeKey(this.nodeName); } }; var readYXmlElement = (decoder) => new YXmlElement(decoder.readKey()); var YXmlEvent = class extends YEvent { /** * @param {YXmlElement|YXmlText|YXmlFragment} target The target on which the event is created. * @param {Set} subs The set of changed attributes. `null` is included if the * child list changed. * @param {Transaction} transaction The transaction instance with which the * change was created. */ constructor(target, subs, transaction) { super(target, transaction); this.childListChanged = false; this.attributesChanged = /* @__PURE__ */ new Set(); subs.forEach((sub) => { if (sub === null) { this.childListChanged = true; } else { this.attributesChanged.add(sub); } }); } }; var YXmlHook = class _YXmlHook extends YMap { /** * @param {string} hookName nodeName of the Dom Node. */ constructor(hookName) { super(); this.hookName = hookName; } /** * Creates an Item with the same effect as this Item (without position effect) */ _copy() { return new _YXmlHook(this.hookName); } /** * Makes a copy of this data type that can be included somewhere else. * * Note that the content is only readable _after_ it has been included somewhere in the Ydoc. * * @return {YXmlHook} */ clone() { const el = new _YXmlHook(this.hookName); this.forEach((value, key) => { el.set(key, value); }); return el; } /** * Creates a Dom Element that mirrors this YXmlElement. * * @param {Document} [_document=document] The document object (you must define * this when calling this method in * nodejs) * @param {Object.} [hooks] Optional property to customize how hooks * are presented in the DOM * @param {any} [binding] You should not set this property. This is * used if DomBinding wants to create a * association to the created DOM type * @return {Element} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element} * * @public */ toDOM(_document = document, hooks = {}, binding) { const hook = hooks[this.hookName]; let dom; if (hook !== void 0) { dom = hook.createDom(this); } else { dom = document.createElement(this.hookName); } dom.setAttribute("data-yjs-hook", this.hookName); if (binding !== void 0) { binding._createAssociation(dom, this); } return dom; } /** * Transform the properties of this type to binary and write it to an * BinaryEncoder. * * This is called when this Item is sent to a remote peer. * * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder The encoder to write data to. */ _write(encoder) { encoder.writeTypeRef(YXmlHookRefID); encoder.writeKey(this.hookName); } }; var readYXmlHook = (decoder) => new YXmlHook(decoder.readKey()); var YXmlText = class _YXmlText extends YText { /** * @type {YXmlElement|YXmlText|null} */ get nextSibling() { const n = this._item ? this._item.next : null; return n ? ( /** @type {YXmlElement|YXmlText} */ /** @type {ContentType} */ n.content.type ) : null; } /** * @type {YXmlElement|YXmlText|null} */ get prevSibling() { const n = this._item ? this._item.prev : null; return n ? ( /** @type {YXmlElement|YXmlText} */ /** @type {ContentType} */ n.content.type ) : null; } _copy() { return new _YXmlText(); } /** * Makes a copy of this data type that can be included somewhere else. * * Note that the content is only readable _after_ it has been included somewhere in the Ydoc. * * @return {YXmlText} */ clone() { const text2 = new _YXmlText(); text2.applyDelta(this.toDelta()); return text2; } /** * Creates a Dom Element that mirrors this YXmlText. * * @param {Document} [_document=document] The document object (you must define * this when calling this method in * nodejs) * @param {Object} [hooks] Optional property to customize how hooks * are presented in the DOM * @param {any} [binding] You should not set this property. This is * used if DomBinding wants to create a * association to the created DOM type. * @return {Text} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element} * * @public */ toDOM(_document = document, hooks, binding) { const dom = _document.createTextNode(this.toString()); if (binding !== void 0) { binding._createAssociation(dom, this); } return dom; } toString() { return this.toDelta().map((delta) => { const nestedNodes = []; for (const nodeName in delta.attributes) { const attrs = []; for (const key in delta.attributes[nodeName]) { attrs.push({ key, value: delta.attributes[nodeName][key] }); } attrs.sort((a, b) => a.key < b.key ? -1 : 1); nestedNodes.push({ nodeName, attrs }); } nestedNodes.sort((a, b) => a.nodeName < b.nodeName ? -1 : 1); let str = ""; for (let i = 0; i < nestedNodes.length; i++) { const node = nestedNodes[i]; str += `<${node.nodeName}`; for (let j = 0; j < node.attrs.length; j++) { const attr = node.attrs[j]; str += ` ${attr.key}="${attr.value}"`; } str += ">"; } str += delta.insert; for (let i = nestedNodes.length - 1; i >= 0; i--) { str += ``; } return str; }).join(""); } /** * @return {string} */ toJSON() { return this.toString(); } /** * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder */ _write(encoder) { encoder.writeTypeRef(YXmlTextRefID); } }; var readYXmlText = (decoder) => new YXmlText(); var AbstractStruct = class { /** * @param {ID} id * @param {number} length */ constructor(id2, length3) { this.id = id2; this.length = length3; } /** * @type {boolean} */ get deleted() { throw methodUnimplemented(); } /** * Merge this struct with the item to the right. * This method is already assuming that `this.id.clock + this.length === this.id.clock`. * Also this method does *not* remove right from StructStore! * @param {AbstractStruct} right * @return {boolean} whether this merged with right */ mergeWith(right) { return false; } /** * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder The encoder to write data to. * @param {number} offset * @param {number} encodingRef */ write(encoder, offset, encodingRef) { throw methodUnimplemented(); } /** * @param {Transaction} transaction * @param {number} offset */ integrate(transaction, offset) { throw methodUnimplemented(); } }; var structGCRefNumber = 0; var GC = class extends AbstractStruct { get deleted() { return true; } delete() { } /** * @param {GC} right * @return {boolean} */ mergeWith(right) { if (this.constructor !== right.constructor) { return false; } this.length += right.length; return true; } /** * @param {Transaction} transaction * @param {number} offset */ integrate(transaction, offset) { if (offset > 0) { this.id.clock += offset; this.length -= offset; } addStruct(transaction.doc.store, this); } /** * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder * @param {number} offset */ write(encoder, offset) { encoder.writeInfo(structGCRefNumber); encoder.writeLen(this.length - offset); } /** * @param {Transaction} transaction * @param {StructStore} store * @return {null | number} */ getMissing(transaction, store2) { return null; } }; var ContentBinary = class _ContentBinary { /** * @param {Uint8Array} content */ constructor(content) { this.content = content; } /** * @return {number} */ getLength() { return 1; } /** * @return {Array} */ getContent() { return [this.content]; } /** * @return {boolean} */ isCountable() { return true; } /** * @return {ContentBinary} */ copy() { return new _ContentBinary(this.content); } /** * @param {number} offset * @return {ContentBinary} */ splice(offset) { throw methodUnimplemented(); } /** * @param {ContentBinary} right * @return {boolean} */ mergeWith(right) { return false; } /** * @param {Transaction} transaction * @param {Item} item */ integrate(transaction, item) { } /** * @param {Transaction} transaction */ delete(transaction) { } /** * @param {StructStore} store */ gc(store2) { } /** * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder * @param {number} offset */ write(encoder, offset) { encoder.writeBuf(this.content); } /** * @return {number} */ getRef() { return 3; } }; var readContentBinary = (decoder) => new ContentBinary(decoder.readBuf()); var ContentDeleted = class _ContentDeleted { /** * @param {number} len */ constructor(len) { this.len = len; } /** * @return {number} */ getLength() { return this.len; } /** * @return {Array} */ getContent() { return []; } /** * @return {boolean} */ isCountable() { return false; } /** * @return {ContentDeleted} */ copy() { return new _ContentDeleted(this.len); } /** * @param {number} offset * @return {ContentDeleted} */ splice(offset) { const right = new _ContentDeleted(this.len - offset); this.len = offset; return right; } /** * @param {ContentDeleted} right * @return {boolean} */ mergeWith(right) { this.len += right.len; return true; } /** * @param {Transaction} transaction * @param {Item} item */ integrate(transaction, item) { addToDeleteSet(transaction.deleteSet, item.id.client, item.id.clock, this.len); item.markDeleted(); } /** * @param {Transaction} transaction */ delete(transaction) { } /** * @param {StructStore} store */ gc(store2) { } /** * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder * @param {number} offset */ write(encoder, offset) { encoder.writeLen(this.len - offset); } /** * @return {number} */ getRef() { return 1; } }; var readContentDeleted = (decoder) => new ContentDeleted(decoder.readLen()); var createDocFromOpts = (guid, opts) => new Doc({ guid, ...opts, shouldLoad: opts.shouldLoad || opts.autoLoad || false }); var ContentDoc = class _ContentDoc { /** * @param {Doc} doc */ constructor(doc2) { if (doc2._item) { console.error("This document was already integrated as a sub-document. You should create a second instance instead with the same guid."); } this.doc = doc2; const opts = {}; this.opts = opts; if (!doc2.gc) { opts.gc = false; } if (doc2.autoLoad) { opts.autoLoad = true; } if (doc2.meta !== null) { opts.meta = doc2.meta; } } /** * @return {number} */ getLength() { return 1; } /** * @return {Array} */ getContent() { return [this.doc]; } /** * @return {boolean} */ isCountable() { return true; } /** * @return {ContentDoc} */ copy() { return new _ContentDoc(createDocFromOpts(this.doc.guid, this.opts)); } /** * @param {number} offset * @return {ContentDoc} */ splice(offset) { throw methodUnimplemented(); } /** * @param {ContentDoc} right * @return {boolean} */ mergeWith(right) { return false; } /** * @param {Transaction} transaction * @param {Item} item */ integrate(transaction, item) { this.doc._item = item; transaction.subdocsAdded.add(this.doc); if (this.doc.shouldLoad) { transaction.subdocsLoaded.add(this.doc); } } /** * @param {Transaction} transaction */ delete(transaction) { if (transaction.subdocsAdded.has(this.doc)) { transaction.subdocsAdded.delete(this.doc); } else { transaction.subdocsRemoved.add(this.doc); } } /** * @param {StructStore} store */ gc(store2) { } /** * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder * @param {number} offset */ write(encoder, offset) { encoder.writeString(this.doc.guid); encoder.writeAny(this.opts); } /** * @return {number} */ getRef() { return 9; } }; var readContentDoc = (decoder) => new ContentDoc(createDocFromOpts(decoder.readString(), decoder.readAny())); var ContentEmbed = class _ContentEmbed { /** * @param {Object} embed */ constructor(embed) { this.embed = embed; } /** * @return {number} */ getLength() { return 1; } /** * @return {Array} */ getContent() { return [this.embed]; } /** * @return {boolean} */ isCountable() { return true; } /** * @return {ContentEmbed} */ copy() { return new _ContentEmbed(this.embed); } /** * @param {number} offset * @return {ContentEmbed} */ splice(offset) { throw methodUnimplemented(); } /** * @param {ContentEmbed} right * @return {boolean} */ mergeWith(right) { return false; } /** * @param {Transaction} transaction * @param {Item} item */ integrate(transaction, item) { } /** * @param {Transaction} transaction */ delete(transaction) { } /** * @param {StructStore} store */ gc(store2) { } /** * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder * @param {number} offset */ write(encoder, offset) { encoder.writeJSON(this.embed); } /** * @return {number} */ getRef() { return 5; } }; var readContentEmbed = (decoder) => new ContentEmbed(decoder.readJSON()); var ContentFormat = class _ContentFormat { /** * @param {string} key * @param {Object} value */ constructor(key, value) { this.key = key; this.value = value; } /** * @return {number} */ getLength() { return 1; } /** * @return {Array} */ getContent() { return []; } /** * @return {boolean} */ isCountable() { return false; } /** * @return {ContentFormat} */ copy() { return new _ContentFormat(this.key, this.value); } /** * @param {number} _offset * @return {ContentFormat} */ splice(_offset) { throw methodUnimplemented(); } /** * @param {ContentFormat} _right * @return {boolean} */ mergeWith(_right) { return false; } /** * @param {Transaction} _transaction * @param {Item} item */ integrate(_transaction, item) { const p = ( /** @type {YText} */ item.parent ); p._searchMarker = null; p._hasFormatting = true; } /** * @param {Transaction} transaction */ delete(transaction) { } /** * @param {StructStore} store */ gc(store2) { } /** * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder * @param {number} offset */ write(encoder, offset) { encoder.writeKey(this.key); encoder.writeJSON(this.value); } /** * @return {number} */ getRef() { return 6; } }; var readContentFormat = (decoder) => new ContentFormat(decoder.readKey(), decoder.readJSON()); var ContentJSON = class _ContentJSON { /** * @param {Array} arr */ constructor(arr) { this.arr = arr; } /** * @return {number} */ getLength() { return this.arr.length; } /** * @return {Array} */ getContent() { return this.arr; } /** * @return {boolean} */ isCountable() { return true; } /** * @return {ContentJSON} */ copy() { return new _ContentJSON(this.arr); } /** * @param {number} offset * @return {ContentJSON} */ splice(offset) { const right = new _ContentJSON(this.arr.slice(offset)); this.arr = this.arr.slice(0, offset); return right; } /** * @param {ContentJSON} right * @return {boolean} */ mergeWith(right) { this.arr = this.arr.concat(right.arr); return true; } /** * @param {Transaction} transaction * @param {Item} item */ integrate(transaction, item) { } /** * @param {Transaction} transaction */ delete(transaction) { } /** * @param {StructStore} store */ gc(store2) { } /** * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder * @param {number} offset */ write(encoder, offset) { const len = this.arr.length; encoder.writeLen(len - offset); for (let i = offset; i < len; i++) { const c = this.arr[i]; encoder.writeString(c === void 0 ? "undefined" : JSON.stringify(c)); } } /** * @return {number} */ getRef() { return 2; } }; var readContentJSON = (decoder) => { const len = decoder.readLen(); const cs = []; for (let i = 0; i < len; i++) { const c = decoder.readString(); if (c === "undefined") { cs.push(void 0); } else { cs.push(JSON.parse(c)); } } return new ContentJSON(cs); }; var isDevMode = getVariable("node_env") === "development"; var ContentAny = class _ContentAny { /** * @param {Array} arr */ constructor(arr) { this.arr = arr; isDevMode && deepFreeze(arr); } /** * @return {number} */ getLength() { return this.arr.length; } /** * @return {Array} */ getContent() { return this.arr; } /** * @return {boolean} */ isCountable() { return true; } /** * @return {ContentAny} */ copy() { return new _ContentAny(this.arr); } /** * @param {number} offset * @return {ContentAny} */ splice(offset) { const right = new _ContentAny(this.arr.slice(offset)); this.arr = this.arr.slice(0, offset); return right; } /** * @param {ContentAny} right * @return {boolean} */ mergeWith(right) { this.arr = this.arr.concat(right.arr); return true; } /** * @param {Transaction} transaction * @param {Item} item */ integrate(transaction, item) { } /** * @param {Transaction} transaction */ delete(transaction) { } /** * @param {StructStore} store */ gc(store2) { } /** * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder * @param {number} offset */ write(encoder, offset) { const len = this.arr.length; encoder.writeLen(len - offset); for (let i = offset; i < len; i++) { const c = this.arr[i]; encoder.writeAny(c); } } /** * @return {number} */ getRef() { return 8; } }; var readContentAny = (decoder) => { const len = decoder.readLen(); const cs = []; for (let i = 0; i < len; i++) { cs.push(decoder.readAny()); } return new ContentAny(cs); }; var ContentString = class _ContentString { /** * @param {string} str */ constructor(str) { this.str = str; } /** * @return {number} */ getLength() { return this.str.length; } /** * @return {Array} */ getContent() { return this.str.split(""); } /** * @return {boolean} */ isCountable() { return true; } /** * @return {ContentString} */ copy() { return new _ContentString(this.str); } /** * @param {number} offset * @return {ContentString} */ splice(offset) { const right = new _ContentString(this.str.slice(offset)); this.str = this.str.slice(0, offset); const firstCharCode = this.str.charCodeAt(offset - 1); if (firstCharCode >= 55296 && firstCharCode <= 56319) { this.str = this.str.slice(0, offset - 1) + "\uFFFD"; right.str = "\uFFFD" + right.str.slice(1); } return right; } /** * @param {ContentString} right * @return {boolean} */ mergeWith(right) { this.str += right.str; return true; } /** * @param {Transaction} transaction * @param {Item} item */ integrate(transaction, item) { } /** * @param {Transaction} transaction */ delete(transaction) { } /** * @param {StructStore} store */ gc(store2) { } /** * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder * @param {number} offset */ write(encoder, offset) { encoder.writeString(offset === 0 ? this.str : this.str.slice(offset)); } /** * @return {number} */ getRef() { return 4; } }; var readContentString = (decoder) => new ContentString(decoder.readString()); var typeRefs = [ readYArray, readYMap, readYText, readYXmlElement, readYXmlFragment, readYXmlHook, readYXmlText ]; var YArrayRefID = 0; var YMapRefID = 1; var YTextRefID = 2; var YXmlElementRefID = 3; var YXmlFragmentRefID = 4; var YXmlHookRefID = 5; var YXmlTextRefID = 6; var ContentType = class _ContentType { /** * @param {AbstractType} type */ constructor(type) { this.type = type; } /** * @return {number} */ getLength() { return 1; } /** * @return {Array} */ getContent() { return [this.type]; } /** * @return {boolean} */ isCountable() { return true; } /** * @return {ContentType} */ copy() { return new _ContentType(this.type._copy()); } /** * @param {number} offset * @return {ContentType} */ splice(offset) { throw methodUnimplemented(); } /** * @param {ContentType} right * @return {boolean} */ mergeWith(right) { return false; } /** * @param {Transaction} transaction * @param {Item} item */ integrate(transaction, item) { this.type._integrate(transaction.doc, item); } /** * @param {Transaction} transaction */ delete(transaction) { let item = this.type._start; while (item !== null) { if (!item.deleted) { item.delete(transaction); } else if (item.id.clock < (transaction.beforeState.get(item.id.client) || 0)) { transaction._mergeStructs.push(item); } item = item.right; } this.type._map.forEach((item2) => { if (!item2.deleted) { item2.delete(transaction); } else if (item2.id.clock < (transaction.beforeState.get(item2.id.client) || 0)) { transaction._mergeStructs.push(item2); } }); transaction.changed.delete(this.type); } /** * @param {StructStore} store */ gc(store2) { let item = this.type._start; while (item !== null) { item.gc(store2, true); item = item.right; } this.type._start = null; this.type._map.forEach( /** @param {Item | null} item */ (item2) => { while (item2 !== null) { item2.gc(store2, true); item2 = item2.left; } } ); this.type._map = /* @__PURE__ */ new Map(); } /** * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder * @param {number} offset */ write(encoder, offset) { this.type._write(encoder); } /** * @return {number} */ getRef() { return 7; } }; var readContentType = (decoder) => new ContentType(typeRefs[decoder.readTypeRef()](decoder)); var followRedone = (store2, id2) => { let nextID = id2; let diff = 0; let item; do { if (diff > 0) { nextID = createID(nextID.client, nextID.clock + diff); } item = getItem(store2, nextID); diff = nextID.clock - item.id.clock; nextID = item.redone; } while (nextID !== null && item instanceof Item); return { item, diff }; }; var keepItem = (item, keep) => { while (item !== null && item.keep !== keep) { item.keep = keep; item = /** @type {AbstractType} */ item.parent._item; } }; var splitItem = (transaction, leftItem, diff) => { const { client, clock } = leftItem.id; const rightItem = new Item( createID(client, clock + diff), leftItem, createID(client, clock + diff - 1), leftItem.right, leftItem.rightOrigin, leftItem.parent, leftItem.parentSub, leftItem.content.splice(diff) ); if (leftItem.deleted) { rightItem.markDeleted(); } if (leftItem.keep) { rightItem.keep = true; } if (leftItem.redone !== null) { rightItem.redone = createID(leftItem.redone.client, leftItem.redone.clock + diff); } leftItem.right = rightItem; if (rightItem.right !== null) { rightItem.right.left = rightItem; } transaction._mergeStructs.push(rightItem); if (rightItem.parentSub !== null && rightItem.right === null) { rightItem.parent._map.set(rightItem.parentSub, rightItem); } leftItem.length = diff; return rightItem; }; var isDeletedByUndoStack = (stack, id2) => some( stack, /** @param {StackItem} s */ (s) => isDeleted(s.deletions, id2) ); var redoItem = (transaction, item, redoitems, itemsToDelete, ignoreRemoteMapChanges, um) => { const doc2 = transaction.doc; const store2 = doc2.store; const ownClientID = doc2.clientID; const redone = item.redone; if (redone !== null) { return getItemCleanStart(transaction, redone); } let parentItem = ( /** @type {AbstractType} */ item.parent._item ); let left = null; let right; if (parentItem !== null && parentItem.deleted === true) { if (parentItem.redone === null && (!redoitems.has(parentItem) || redoItem(transaction, parentItem, redoitems, itemsToDelete, ignoreRemoteMapChanges, um) === null)) { return null; } while (parentItem.redone !== null) { parentItem = getItemCleanStart(transaction, parentItem.redone); } } const parentType = parentItem === null ? ( /** @type {AbstractType} */ item.parent ) : ( /** @type {ContentType} */ parentItem.content.type ); if (item.parentSub === null) { left = item.left; right = item; while (left !== null) { let leftTrace = left; while (leftTrace !== null && /** @type {AbstractType} */ leftTrace.parent._item !== parentItem) { leftTrace = leftTrace.redone === null ? null : getItemCleanStart(transaction, leftTrace.redone); } if (leftTrace !== null && /** @type {AbstractType} */ leftTrace.parent._item === parentItem) { left = leftTrace; break; } left = left.left; } while (right !== null) { let rightTrace = right; while (rightTrace !== null && /** @type {AbstractType} */ rightTrace.parent._item !== parentItem) { rightTrace = rightTrace.redone === null ? null : getItemCleanStart(transaction, rightTrace.redone); } if (rightTrace !== null && /** @type {AbstractType} */ rightTrace.parent._item === parentItem) { right = rightTrace; break; } right = right.right; } } else { right = null; if (item.right && !ignoreRemoteMapChanges) { left = item; while (left !== null && left.right !== null && (left.right.redone || isDeleted(itemsToDelete, left.right.id) || isDeletedByUndoStack(um.undoStack, left.right.id) || isDeletedByUndoStack(um.redoStack, left.right.id))) { left = left.right; while (left.redone) left = getItemCleanStart(transaction, left.redone); } if (left && left.right !== null) { return null; } } else { left = parentType._map.get(item.parentSub) || null; } } const nextClock = getState(store2, ownClientID); const nextId = createID(ownClientID, nextClock); const redoneItem = new Item( nextId, left, left && left.lastId, right, right && right.id, parentType, item.parentSub, item.content.copy() ); item.redone = nextId; keepItem(redoneItem, true); redoneItem.integrate(transaction, 0); return redoneItem; }; var Item = class _Item extends AbstractStruct { /** * @param {ID} id * @param {Item | null} left * @param {ID | null} origin * @param {Item | null} right * @param {ID | null} rightOrigin * @param {AbstractType|ID|null} parent Is a type if integrated, is null if it is possible to copy parent from left or right, is ID before integration to search for it. * @param {string | null} parentSub * @param {AbstractContent} content */ constructor(id2, left, origin2, right, rightOrigin, parent, parentSub, content) { super(id2, content.getLength()); this.origin = origin2; this.left = left; this.right = right; this.rightOrigin = rightOrigin; this.parent = parent; this.parentSub = parentSub; this.redone = null; this.content = content; this.info = this.content.isCountable() ? BIT2 : 0; } /** * This is used to mark the item as an indexed fast-search marker * * @type {boolean} */ set marker(isMarked) { if ((this.info & BIT4) > 0 !== isMarked) { this.info ^= BIT4; } } get marker() { return (this.info & BIT4) > 0; } /** * If true, do not garbage collect this Item. */ get keep() { return (this.info & BIT1) > 0; } set keep(doKeep) { if (this.keep !== doKeep) { this.info ^= BIT1; } } get countable() { return (this.info & BIT2) > 0; } /** * Whether this item was deleted or not. * @type {Boolean} */ get deleted() { return (this.info & BIT3) > 0; } set deleted(doDelete) { if (this.deleted !== doDelete) { this.info ^= BIT3; } } markDeleted() { this.info |= BIT3; } /** * Return the creator clientID of the missing op or define missing items and return null. * * @param {Transaction} transaction * @param {StructStore} store * @return {null | number} */ getMissing(transaction, store2) { if (this.origin && this.origin.client !== this.id.client && this.origin.clock >= getState(store2, this.origin.client)) { return this.origin.client; } if (this.rightOrigin && this.rightOrigin.client !== this.id.client && this.rightOrigin.clock >= getState(store2, this.rightOrigin.client)) { return this.rightOrigin.client; } if (this.parent && this.parent.constructor === ID && this.id.client !== this.parent.client && this.parent.clock >= getState(store2, this.parent.client)) { return this.parent.client; } if (this.origin) { this.left = getItemCleanEnd(transaction, store2, this.origin); this.origin = this.left.lastId; } if (this.rightOrigin) { this.right = getItemCleanStart(transaction, this.rightOrigin); this.rightOrigin = this.right.id; } if (this.left && this.left.constructor === GC || this.right && this.right.constructor === GC) { this.parent = null; } else if (!this.parent) { if (this.left && this.left.constructor === _Item) { this.parent = this.left.parent; this.parentSub = this.left.parentSub; } else if (this.right && this.right.constructor === _Item) { this.parent = this.right.parent; this.parentSub = this.right.parentSub; } } else if (this.parent.constructor === ID) { const parentItem = getItem(store2, this.parent); if (parentItem.constructor === GC) { this.parent = null; } else { this.parent = /** @type {ContentType} */ parentItem.content.type; } } return null; } /** * @param {Transaction} transaction * @param {number} offset */ integrate(transaction, offset) { if (offset > 0) { this.id.clock += offset; this.left = getItemCleanEnd(transaction, transaction.doc.store, createID(this.id.client, this.id.clock - 1)); this.origin = this.left.lastId; this.content = this.content.splice(offset); this.length -= offset; } if (this.parent) { if (!this.left && (!this.right || this.right.left !== null) || this.left && this.left.right !== this.right) { let left = this.left; let o; if (left !== null) { o = left.right; } else if (this.parentSub !== null) { o = /** @type {AbstractType} */ this.parent._map.get(this.parentSub) || null; while (o !== null && o.left !== null) { o = o.left; } } else { o = /** @type {AbstractType} */ this.parent._start; } const conflictingItems = /* @__PURE__ */ new Set(); const itemsBeforeOrigin = /* @__PURE__ */ new Set(); while (o !== null && o !== this.right) { itemsBeforeOrigin.add(o); conflictingItems.add(o); if (compareIDs(this.origin, o.origin)) { if (o.id.client < this.id.client) { left = o; conflictingItems.clear(); } else if (compareIDs(this.rightOrigin, o.rightOrigin)) { break; } } else if (o.origin !== null && itemsBeforeOrigin.has(getItem(transaction.doc.store, o.origin))) { if (!conflictingItems.has(getItem(transaction.doc.store, o.origin))) { left = o; conflictingItems.clear(); } } else { break; } o = o.right; } this.left = left; } if (this.left !== null) { const right = this.left.right; this.right = right; this.left.right = this; } else { let r; if (this.parentSub !== null) { r = /** @type {AbstractType} */ this.parent._map.get(this.parentSub) || null; while (r !== null && r.left !== null) { r = r.left; } } else { r = /** @type {AbstractType} */ this.parent._start; this.parent._start = this; } this.right = r; } if (this.right !== null) { this.right.left = this; } else if (this.parentSub !== null) { this.parent._map.set(this.parentSub, this); if (this.left !== null) { this.left.delete(transaction); } } if (this.parentSub === null && this.countable && !this.deleted) { this.parent._length += this.length; } addStruct(transaction.doc.store, this); this.content.integrate(transaction, this); addChangedTypeToTransaction( transaction, /** @type {AbstractType} */ this.parent, this.parentSub ); if ( /** @type {AbstractType} */ this.parent._item !== null && /** @type {AbstractType} */ this.parent._item.deleted || this.parentSub !== null && this.right !== null ) { this.delete(transaction); } } else { new GC(this.id, this.length).integrate(transaction, 0); } } /** * Returns the next non-deleted item */ get next() { let n = this.right; while (n !== null && n.deleted) { n = n.right; } return n; } /** * Returns the previous non-deleted item */ get prev() { let n = this.left; while (n !== null && n.deleted) { n = n.left; } return n; } /** * Computes the last content address of this Item. */ get lastId() { return this.length === 1 ? this.id : createID(this.id.client, this.id.clock + this.length - 1); } /** * Try to merge two items * * @param {Item} right * @return {boolean} */ mergeWith(right) { if (this.constructor === right.constructor && compareIDs(right.origin, this.lastId) && this.right === right && compareIDs(this.rightOrigin, right.rightOrigin) && this.id.client === right.id.client && this.id.clock + this.length === right.id.clock && this.deleted === right.deleted && this.redone === null && right.redone === null && this.content.constructor === right.content.constructor && this.content.mergeWith(right.content)) { const searchMarker = ( /** @type {AbstractType} */ this.parent._searchMarker ); if (searchMarker) { searchMarker.forEach((marker) => { if (marker.p === right) { marker.p = this; if (!this.deleted && this.countable) { marker.index -= this.length; } } }); } if (right.keep) { this.keep = true; } this.right = right.right; if (this.right !== null) { this.right.left = this; } this.length += right.length; return true; } return false; } /** * Mark this Item as deleted. * * @param {Transaction} transaction */ delete(transaction) { if (!this.deleted) { const parent = ( /** @type {AbstractType} */ this.parent ); if (this.countable && this.parentSub === null) { parent._length -= this.length; } this.markDeleted(); addToDeleteSet(transaction.deleteSet, this.id.client, this.id.clock, this.length); addChangedTypeToTransaction(transaction, parent, this.parentSub); this.content.delete(transaction); } } /** * @param {StructStore} store * @param {boolean} parentGCd */ gc(store2, parentGCd) { if (!this.deleted) { throw unexpectedCase(); } this.content.gc(store2); if (parentGCd) { replaceStruct(store2, this, new GC(this.id, this.length)); } else { this.content = new ContentDeleted(this.length); } } /** * Transform the properties of this type to binary and write it to an * BinaryEncoder. * * This is called when this Item is sent to a remote peer. * * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder The encoder to write data to. * @param {number} offset */ write(encoder, offset) { const origin2 = offset > 0 ? createID(this.id.client, this.id.clock + offset - 1) : this.origin; const rightOrigin = this.rightOrigin; const parentSub = this.parentSub; const info = this.content.getRef() & BITS5 | (origin2 === null ? 0 : BIT8) | // origin is defined (rightOrigin === null ? 0 : BIT7) | // right origin is defined (parentSub === null ? 0 : BIT6); encoder.writeInfo(info); if (origin2 !== null) { encoder.writeLeftID(origin2); } if (rightOrigin !== null) { encoder.writeRightID(rightOrigin); } if (origin2 === null && rightOrigin === null) { const parent = ( /** @type {AbstractType} */ this.parent ); if (parent._item !== void 0) { const parentItem = parent._item; if (parentItem === null) { const ykey = findRootTypeKey(parent); encoder.writeParentInfo(true); encoder.writeString(ykey); } else { encoder.writeParentInfo(false); encoder.writeLeftID(parentItem.id); } } else if (parent.constructor === String) { encoder.writeParentInfo(true); encoder.writeString(parent); } else if (parent.constructor === ID) { encoder.writeParentInfo(false); encoder.writeLeftID(parent); } else { unexpectedCase(); } if (parentSub !== null) { encoder.writeString(parentSub); } } this.content.write(encoder, offset); } }; var readItemContent = (decoder, info) => contentRefs[info & BITS5](decoder); var contentRefs = [ () => { unexpectedCase(); }, // GC is not ItemContent readContentDeleted, // 1 readContentJSON, // 2 readContentBinary, // 3 readContentString, // 4 readContentEmbed, // 5 readContentFormat, // 6 readContentType, // 7 readContentAny, // 8 readContentDoc, // 9 () => { unexpectedCase(); } // 10 - Skip is not ItemContent ]; var structSkipRefNumber = 10; var Skip = class extends AbstractStruct { get deleted() { return true; } delete() { } /** * @param {Skip} right * @return {boolean} */ mergeWith(right) { if (this.constructor !== right.constructor) { return false; } this.length += right.length; return true; } /** * @param {Transaction} transaction * @param {number} offset */ integrate(transaction, offset) { unexpectedCase(); } /** * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder * @param {number} offset */ write(encoder, offset) { encoder.writeInfo(structSkipRefNumber); writeVarUint(encoder.restEncoder, this.length - offset); } /** * @param {Transaction} transaction * @param {StructStore} store * @return {null | number} */ getMissing(transaction, store2) { return null; } }; var glo = ( /** @type {any} */ typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {} ); var importIdentifier = "__ $YJS$ __"; if (glo[importIdentifier] === true) { console.error("Yjs was already imported. This breaks constructor checks and will lead to issues! - https://github.com/yjs/yjs/issues/438"); } glo[importIdentifier] = true; // packages/sync/node_modules/y-protocols/awareness.js var outdatedTimeout = 3e4; var Awareness = class extends Observable { /** * @param {Y.Doc} doc */ constructor(doc2) { super(); this.doc = doc2; this.clientID = doc2.clientID; this.states = /* @__PURE__ */ new Map(); this.meta = /* @__PURE__ */ new Map(); this._checkInterval = /** @type {any} */ setInterval(() => { const now = getUnixTime(); if (this.getLocalState() !== null && outdatedTimeout / 2 <= now - /** @type {{lastUpdated:number}} */ this.meta.get(this.clientID).lastUpdated) { this.setLocalState(this.getLocalState()); } const remove = []; this.meta.forEach((meta, clientid) => { if (clientid !== this.clientID && outdatedTimeout <= now - meta.lastUpdated && this.states.has(clientid)) { remove.push(clientid); } }); if (remove.length > 0) { removeAwarenessStates(this, remove, "timeout"); } }, floor(outdatedTimeout / 10)); doc2.on("destroy", () => { this.destroy(); }); this.setLocalState({}); } destroy() { this.emit("destroy", [this]); this.setLocalState(null); super.destroy(); clearInterval(this._checkInterval); } /** * @return {Object|null} */ getLocalState() { return this.states.get(this.clientID) || null; } /** * @param {Object|null} state */ setLocalState(state) { const clientID = this.clientID; const currLocalMeta = this.meta.get(clientID); const clock = currLocalMeta === void 0 ? 0 : currLocalMeta.clock + 1; const prevState = this.states.get(clientID); if (state === null) { this.states.delete(clientID); } else { this.states.set(clientID, state); } this.meta.set(clientID, { clock, lastUpdated: getUnixTime() }); const added = []; const updated = []; const filteredUpdated = []; const removed = []; if (state === null) { removed.push(clientID); } else if (prevState == null) { if (state != null) { added.push(clientID); } } else { updated.push(clientID); if (!equalityDeep(prevState, state)) { filteredUpdated.push(clientID); } } if (added.length > 0 || filteredUpdated.length > 0 || removed.length > 0) { this.emit("change", [{ added, updated: filteredUpdated, removed }, "local"]); } this.emit("update", [{ added, updated, removed }, "local"]); } /** * @param {string} field * @param {any} value */ setLocalStateField(field, value) { const state = this.getLocalState(); if (state !== null) { this.setLocalState({ ...state, [field]: value }); } } /** * @return {Map>} */ getStates() { return this.states; } }; var removeAwarenessStates = (awareness, clients, origin2) => { const removed = []; for (let i = 0; i < clients.length; i++) { const clientID = clients[i]; if (awareness.states.has(clientID)) { awareness.states.delete(clientID); if (clientID === awareness.clientID) { const curMeta = ( /** @type {MetaClientState} */ awareness.meta.get(clientID) ); awareness.meta.set(clientID, { clock: curMeta.clock + 1, lastUpdated: getUnixTime() }); } removed.push(clientID); } } if (removed.length > 0) { awareness.emit("change", [{ added: [], updated: [], removed }, origin2]); awareness.emit("update", [{ added: [], updated: [], removed }, origin2]); } }; // packages/sync/build-module/config.mjs var CRDT_DOC_VERSION = 1; var CRDT_DOC_META_PERSISTENCE_KEY = "fromPersistence"; var CRDT_RECORD_MAP_KEY = "document"; var CRDT_STATE_MAP_KEY = "state"; var CRDT_STATE_MAP_SAVED_AT_KEY = "savedAt"; var CRDT_STATE_MAP_SAVED_BY_KEY = "savedBy"; var CRDT_STATE_MAP_VERSION_KEY = "version"; var LOCAL_EDITOR_ORIGIN = "gutenberg"; var LOCAL_SYNC_MANAGER_ORIGIN = "syncManager"; var LOCAL_UNDO_IGNORED_ORIGIN = "gutenberg-undo-ignored"; // packages/sync/build-module/errors.mjs var ConnectionErrorCode = /* @__PURE__ */ ((ConnectionErrorCode22) => { ConnectionErrorCode22["AUTHENTICATION_FAILED"] = "authentication-failed"; ConnectionErrorCode22["CONNECTION_EXPIRED"] = "connection-expired"; ConnectionErrorCode22["CONNECTION_LIMIT_EXCEEDED"] = "connection-limit-exceeded"; ConnectionErrorCode22["DOCUMENT_SIZE_LIMIT_EXCEEDED"] = "document-size-limit-exceeded"; ConnectionErrorCode22["UNKNOWN_ERROR"] = "unknown-error"; return ConnectionErrorCode22; })(ConnectionErrorCode || {}); var ConnectionError = class extends Error { constructor(code = "unknown-error", message) { super(message); this.code = code; this.name = "ConnectionError"; } }; // packages/sync/build-module/lock-unlock.mjs var import_private_apis = __toESM(require_private_apis(), 1); var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", "@wordpress/sync" ); // packages/sync/build-module/performance.mjs function logPerformanceTiming(fn) { return function(...args2) { const start = performance.now(); const result = fn.apply(this, args2); const end = performance.now(); console.log( `[SyncManager][performance]: ${fn.name} took ${(end - start).toFixed(2)} ms` ); return result; }; } function passThru(fn) { return ((...args2) => fn(...args2)); } function yieldToEventLoop(fn) { return function(...args2) { setTimeout(() => { fn.apply(this, args2); }, 0); }; } // packages/sync/build-module/providers/index.mjs var import_hooks3 = __toESM(require_hooks(), 1); // packages/sync/build-module/providers/http-polling/polling-manager.mjs var import_hooks2 = __toESM(require_hooks(), 1); // packages/sync/node_modules/y-protocols/sync.js var messageYjsSyncStep1 = 0; var messageYjsSyncStep2 = 1; var messageYjsUpdate = 2; var writeSyncStep1 = (encoder, doc2) => { writeVarUint(encoder, messageYjsSyncStep1); const sv = encodeStateVector(doc2); writeVarUint8Array(encoder, sv); }; var writeSyncStep2 = (encoder, doc2, encodedStateVector) => { writeVarUint(encoder, messageYjsSyncStep2); writeVarUint8Array(encoder, encodeStateAsUpdate(doc2, encodedStateVector)); }; var readSyncStep1 = (decoder, encoder, doc2) => writeSyncStep2(encoder, doc2, readVarUint8Array(decoder)); var readSyncStep2 = (decoder, doc2, transactionOrigin, errorHandler) => { try { applyUpdate(doc2, readVarUint8Array(decoder), transactionOrigin); } catch (error) { if (errorHandler != null) errorHandler( /** @type {Error} */ error ); console.error("Caught error while handling a Yjs update", error); } }; var readUpdate2 = readSyncStep2; var readSyncMessage = (decoder, encoder, doc2, transactionOrigin, errorHandler) => { const messageType = readVarUint(decoder); switch (messageType) { case messageYjsSyncStep1: readSyncStep1(decoder, encoder, doc2); break; case messageYjsSyncStep2: readSyncStep2(decoder, doc2, transactionOrigin, errorHandler); break; case messageYjsUpdate: readUpdate2(decoder, doc2, transactionOrigin, errorHandler); break; default: throw new Error("Unknown message type"); } return messageType; }; // packages/sync/build-module/providers/http-polling/config.mjs var import_hooks = __toESM(require_hooks(), 1); var DEFAULT_CLIENT_LIMIT_PER_ROOM = 3; var ERROR_RETRY_DELAYS_SOLO_MS = [ 2e3, 4e3, 8e3, 12e3 // Solo: 26s total retry time solo before dialog ]; var ERROR_RETRY_DELAYS_WITH_COLLABORATORS_MS = [ 1e3, 2e3, 4e3, 8e3 // With collaborators: 15s total retry time before dialog ]; var DISCONNECT_DIALOG_RETRY_MS = 3e4; var MANUAL_RETRY_INTERVAL_MS = 15e3; var MAX_UPDATE_SIZE_IN_BYTES = 1 * 1024 * 1024; var MAX_ROOMS_PER_REQUEST = 50; var POLLING_INTERVAL_IN_MS = (0, import_hooks.applyFilters)( "sync.pollingManager.pollingInterval", 4e3 // 4 seconds ); var POLLING_INTERVAL_WITH_COLLABORATORS_IN_MS = (0, import_hooks.applyFilters)( "sync.pollingManager.pollingIntervalWithCollaborators", 1e3 // 1 second ); var POLLING_INTERVAL_BACKGROUND_TAB_IN_MS = 25 * 1e3; // packages/sync/build-module/providers/http-polling/types.mjs var SyncUpdateType = /* @__PURE__ */ ((SyncUpdateType2) => { SyncUpdateType2["COMPACTION"] = "compaction"; SyncUpdateType2["SYNC_STEP_1"] = "sync_step1"; SyncUpdateType2["SYNC_STEP_2"] = "sync_step2"; SyncUpdateType2["UPDATE"] = "update"; return SyncUpdateType2; })(SyncUpdateType || {}); // packages/sync/build-module/providers/http-polling/utils.mjs var import_api_fetch = __toESM(require_api_fetch(), 1); var SYNC_API_PATH = "/wp-sync/v1/updates"; function uint8ArrayToBase64(data) { let binary = ""; const len = data.byteLength; for (let i = 0; i < len; i++) { binary += String.fromCharCode(data[i]); } return globalThis.btoa(binary); } function base64ToUint8Array(base64) { const binaryString = globalThis.atob(base64); const len = binaryString.length; const bytes = new Uint8Array(len); for (let i = 0; i < len; i++) { bytes[i] = binaryString.charCodeAt(i); } return bytes; } function createSyncUpdate(data, type) { return { data: uint8ArrayToBase64(data), type }; } function createUpdateQueue(initial = [], paused = true) { let isPaused = paused; const updates = [...initial]; return { add(update) { updates.push(update); }, addBulk(bulkUpdates) { if (0 === bulkUpdates.length) { return; } updates.push(...bulkUpdates); }, clear() { updates.splice(0, updates.length); }, get() { if (isPaused) { return []; } return updates.splice(0, updates.length); }, pause() { isPaused = true; }, restore(restoredUpdates) { const filtered = restoredUpdates.filter( (u) => u.type !== SyncUpdateType.COMPACTION ); if (0 === filtered.length) { return; } updates.unshift(...filtered); }, resume() { isPaused = false; }, size() { return updates.length; } }; } async function postSyncUpdate(payload) { const response = await (0, import_api_fetch.default)({ body: JSON.stringify(payload), headers: { "Content-Type": "application/json" }, method: "POST", parse: false, path: SYNC_API_PATH }); if (!response.ok) { throw new Error( `Sync update failed with status ${response.status}` ); } return await response.json(); } function postSyncUpdateNonBlocking(payload) { if (payload.rooms.length === 0) { return; } (0, import_api_fetch.default)({ body: JSON.stringify(payload), headers: { "Content-Type": "application/json" }, keepalive: true, method: "POST", parse: false, path: SYNC_API_PATH }).catch(() => { }); } function intValueOrDefault(value, defaultValue) { const intValue = parseInt(String(value), 10); return isNaN(intValue) ? defaultValue : intValue; } function rotateWindow(items2, offset, size2) { if (items2.length === 0) { return { window: [], nextOffset: 0 }; } const start = (offset % items2.length + items2.length) % items2.length; const wrapped = [...items2.slice(start), ...items2.slice(0, start)]; return { window: wrapped.slice(0, Math.max(0, size2)), nextOffset: (start + Math.max(0, size2)) % items2.length }; } // packages/sync/build-module/providers/http-polling/polling-manager.mjs var POLLING_MANAGER_ORIGIN = "polling-manager"; function isForbiddenError(error) { return error?.data?.status === 403; } function identifyForbiddenRoom(error, rooms) { const message = typeof error.message === "string" ? error.message : ""; const sortedRooms = [...rooms].sort((a, b) => b.length - a.length); for (const room of sortedRooms) { if (message.includes(room)) { return room; } } return null; } function handleForbiddenError(error, requestedRooms) { const forbiddenRoom = identifyForbiddenRoom( error, requestedRooms.map((r) => r.room) ); if (forbiddenRoom) { const state = roomStates.get(forbiddenRoom); if (state) { state.log( "Permission denied, unregistering room", { error }, "error", true // force ); unregisterRoom(forbiddenRoom, { sendDisconnectSignal: false }); } for (const room of requestedRooms) { if (room.room === forbiddenRoom || !roomStates.has(room.room)) { continue; } const remainingState = roomStates.get(room.room); if (room.updates.length > 0) { remainingState.updateQueue.restore(room.updates); } } } else { const rooms = [...roomStates.keys()]; for (const room of rooms) { const state = roomStates.get(room); if (state) { state.log( "Permission denied, unregistering room", { error }, "error", true // force ); unregisterRoom(room, { sendDisconnectSignal: false }); } } } } var roomStates = /* @__PURE__ */ new Map(); function createDeprecatedCompactionUpdate(updates) { const mergeable = updates.filter( (u) => [SyncUpdateType.COMPACTION, SyncUpdateType.UPDATE].includes( u.type ) ).map((u) => base64ToUint8Array(u.data)); return createSyncUpdate( mergeUpdatesV2(mergeable), SyncUpdateType.COMPACTION ); } function createSyncStep1Update(doc2) { const encoder = createEncoder(); writeSyncStep1(encoder, doc2); return createSyncUpdate( toUint8Array(encoder), SyncUpdateType.SYNC_STEP_1 ); } function createSyncStep2Update(doc2, step1) { const decoder = createDecoder(step1); const encoder = createEncoder(); readSyncMessage( decoder, encoder, doc2, POLLING_MANAGER_ORIGIN ); return createSyncUpdate( toUint8Array(encoder), SyncUpdateType.SYNC_STEP_2 ); } function processAwarenessUpdate(state, awareness) { const currentStates = awareness.getStates(); const added = /* @__PURE__ */ new Set(); const updated = /* @__PURE__ */ new Set(); const removed = new Set( Array.from(currentStates.keys()).filter( (clientId) => !state[clientId] ) ); Object.entries(state).forEach(([clientIdString, awarenessState]) => { const clientId = Number(clientIdString); if (clientId === awareness.clientID) { return; } if (null === awarenessState) { currentStates.delete(clientId); removed.add(clientId); return; } if (!currentStates.has(clientId)) { currentStates.set(clientId, awarenessState); added.add(clientId); return; } const currentState = currentStates.get(clientId); if (JSON.stringify(currentState) !== JSON.stringify(awarenessState)) { currentStates.set(clientId, awarenessState); updated.add(clientId); } }); if (added.size + updated.size > 0) { awareness.emit("change", [ { added: Array.from(added), updated: Array.from(updated), // Left blank on purpose, as the removal of clients is handled in the if condition below. removed: [] } ]); } if (removed.size > 0) { removeAwarenessStates( awareness, Array.from(removed), POLLING_MANAGER_ORIGIN ); } } function processDocUpdate(update, doc2, onSync) { const data = base64ToUint8Array(update.data); switch (update.type) { case SyncUpdateType.SYNC_STEP_1: { return createSyncStep2Update(doc2, data); } case SyncUpdateType.SYNC_STEP_2: { const decoder = createDecoder(data); const encoder = createEncoder(); readSyncMessage( decoder, encoder, doc2, POLLING_MANAGER_ORIGIN ); onSync(); return; } case SyncUpdateType.COMPACTION: case SyncUpdateType.UPDATE: { applyUpdateV2(doc2, data, POLLING_MANAGER_ORIGIN); } } } function checkConnectionLimit(awareness, roomState) { if (!roomState.isPrimaryRoom || hasCheckedConnectionLimit) { return false; } hasCheckedConnectionLimit = true; const maxClientsPerRoom = (0, import_hooks2.applyFilters)( "sync.pollingProvider.maxClientsPerRoom", DEFAULT_CLIENT_LIMIT_PER_ROOM, roomState.room ); const clientCount = Object.keys(awareness).length; const validatedLimit = intValueOrDefault( maxClientsPerRoom, DEFAULT_CLIENT_LIMIT_PER_ROOM ); if (clientCount > validatedLimit) { roomState.log("Connection limit exceeded", { clientCount, maxClientsPerRoom: validatedLimit, room: roomState.room }); return true; } return false; } var areListenersRegistered = false; var consecutiveFailures = 0; var hasCheckedConnectionLimit = false; var isManualRetry = false; var hasCollaborators = false; var isActiveBrowser = "visible" === document.visibilityState; var isPolling = false; var isUnloadPending = false; var pollInterval = POLLING_INTERVAL_IN_MS; var pollingTimeoutId = null; var roomOverflowOffset = 0; function handleBeforeUnload() { isUnloadPending = true; } function handlePageHide() { const rooms = Array.from(roomStates.entries()).map( ([room, state]) => ({ after: 0, awareness: null, client_id: state.clientId, room, updates: [] }) ); for (let i = 0; i < rooms.length; i += MAX_ROOMS_PER_REQUEST) { postSyncUpdateNonBlocking({ rooms: rooms.slice(i, i + MAX_ROOMS_PER_REQUEST) }); } } function handleVisibilityChange() { const wasActive = isActiveBrowser; isActiveBrowser = document.visibilityState === "visible"; if (isActiveBrowser && !wasActive) { if (pollingTimeoutId) { clearTimeout(pollingTimeoutId); pollingTimeoutId = null; poll(); } } } function selectRoomsForRequest() { const allRooms = Array.from(roomStates.values()); if (allRooms.length <= MAX_ROOMS_PER_REQUEST) { return allRooms; } const primaryRoom = allRooms.find((state) => state.isPrimaryRoom); const overflowRooms = allRooms.filter((state) => state !== primaryRoom); const overflowSlotsPerRequest = MAX_ROOMS_PER_REQUEST - (primaryRoom ? 1 : 0); const { window: overflowSlice, nextOffset } = rotateWindow( overflowRooms, roomOverflowOffset, overflowSlotsPerRequest ); roomOverflowOffset = nextOffset; if (primaryRoom) { return [primaryRoom, ...overflowSlice]; } return overflowSlice; } function poll() { isPolling = true; pollingTimeoutId = null; async function start() { if (0 === roomStates.size) { isPolling = false; return; } isUnloadPending = false; const roomsInRequest = selectRoomsForRequest(); const payload = { rooms: roomsInRequest.map((state) => ({ after: state.endCursor ?? 0, awareness: state.localAwarenessState, client_id: state.clientId, room: state.room, updates: state.updateQueue.get() })) }; roomsInRequest.forEach((state) => { state.onStatusChange({ status: "connecting" }); }); try { const { rooms } = await postSyncUpdate(payload); consecutiveFailures = 0; isManualRetry = false; roomsInRequest.forEach((state) => { if (roomStates.get(state.room) !== state) { return; } state.onStatusChange({ status: "connected" }); }); hasCollaborators = false; rooms.forEach((room) => { if (!roomStates.has(room.room)) { return; } const roomState = roomStates.get(room.room); roomState.endCursor = room.end_cursor; if (checkConnectionLimit(room.awareness, roomState)) { roomState.onStatusChange({ status: "disconnected", error: new ConnectionError( ConnectionErrorCode.CONNECTION_LIMIT_EXCEEDED, "Connection limit exceeded" ) }); unregisterRoom(room.room); return; } roomState.processAwarenessUpdate(room.awareness); if (roomState.isPrimaryRoom && Object.keys(room.awareness).length > 1) { hasCollaborators = true; roomStates.forEach((state) => { state.updateQueue.resume(); }); } const responseUpdates = []; for (const update of room.updates) { try { const response = roomState.processDocUpdate(update); if (response) { responseUpdates.push(response); } } catch (error) { roomState.log( "Failed to apply sync update", { error, update }, "error", true // force ); } } roomState.updateQueue.addBulk(responseUpdates); if (room.should_compact) { roomState.log("Server requested compaction update"); roomState.updateQueue.clear(); roomState.updateQueue.add( roomState.createCompactionUpdate() ); } else if (room.compaction_request) { roomState.log("Server requested (old) compaction update"); roomState.updateQueue.add( createDeprecatedCompactionUpdate( room.compaction_request ) ); } }); if (isActiveBrowser && hasCollaborators) { pollInterval = POLLING_INTERVAL_WITH_COLLABORATORS_IN_MS; } else if (isActiveBrowser) { pollInterval = POLLING_INTERVAL_IN_MS; } else { pollInterval = POLLING_INTERVAL_BACKGROUND_TAB_IN_MS; } } catch (error) { if (isForbiddenError(error)) { handleForbiddenError(error, payload.rooms); if (roomStates.size === 0) { isPolling = false; return; } } else { consecutiveFailures++; const retrySchedule = hasCollaborators ? ERROR_RETRY_DELAYS_WITH_COLLABORATORS_MS : ERROR_RETRY_DELAYS_SOLO_MS; if (consecutiveFailures <= retrySchedule.length) { pollInterval = retrySchedule[consecutiveFailures - 1]; } else { pollInterval = DISCONNECT_DIALOG_RETRY_MS; } if (isManualRetry) { pollInterval = MANUAL_RETRY_INTERVAL_MS; isManualRetry = false; } for (const room of payload.rooms) { if (!roomStates.has(room.room)) { continue; } const state = roomStates.get(room.room); if (room.updates.length > 0 && state.endCursor > 0) { state.updateQueue.clear(); state.updateQueue.add(state.createCompactionUpdate()); } else if (room.updates.length > 0) { state.updateQueue.restore(room.updates); } state.log( "Error posting sync update, will retry with backoff", { error, nextPoll: pollInterval }, "error", true // force ); } if (!isUnloadPending) { const backgroundRetriesFailed = consecutiveFailures > retrySchedule.length; roomsInRequest.forEach((state) => { if (roomStates.get(state.room) !== state) { return; } state.onStatusChange({ status: "disconnected", canManuallyRetry: true, consecutiveFailures, backgroundRetriesFailed, willAutoRetryInMs: pollInterval }); }); } } } pollingTimeoutId = setTimeout(poll, pollInterval); } void start(); } function registerRoom({ room, doc: doc2, awareness, log, onSync, onStatusChange }) { if (roomStates.has(room)) { return; } const updateQueue = createUpdateQueue([createSyncStep1Update(doc2)]); const isPrimaryRoom = 0 === roomStates.size; function onAwarenessUpdate() { roomState.localAwarenessState = awareness.getLocalState() ?? {}; } function onDocUpdate(update, origin2) { if (POLLING_MANAGER_ORIGIN === origin2) { return; } if (update.byteLength > MAX_UPDATE_SIZE_IN_BYTES) { const state = roomStates.get(room); if (!state) { return; } state.log("Document size limit exceeded", { maxUpdateSizeInBytes: MAX_UPDATE_SIZE_IN_BYTES, updateSizeInBytes: update.byteLength }); state.onStatusChange({ status: "disconnected", error: new ConnectionError( ConnectionErrorCode.DOCUMENT_SIZE_LIMIT_EXCEEDED, "Document size limit exceeded" ) }); unregisterRoom(room); } updateQueue.add(createSyncUpdate(update, SyncUpdateType.UPDATE)); } function unregister() { doc2.off("updateV2", onDocUpdate); awareness.off("change", onAwarenessUpdate); updateQueue.clear(); } const roomState = { clientId: doc2.clientID, createCompactionUpdate: () => createSyncUpdate( encodeStateAsUpdateV2(doc2), SyncUpdateType.COMPACTION ), endCursor: 0, isPrimaryRoom, localAwarenessState: awareness.getLocalState() ?? {}, log, onStatusChange, processAwarenessUpdate: (state) => processAwarenessUpdate(state, awareness), processDocUpdate: (update) => processDocUpdate(update, doc2, onSync), room, unregister, updateQueue }; doc2.on("updateV2", onDocUpdate); awareness.on("change", onAwarenessUpdate); roomStates.set(room, roomState); if (!areListenersRegistered) { window.addEventListener("beforeunload", handleBeforeUnload); window.addEventListener("pagehide", handlePageHide); document.addEventListener("visibilitychange", handleVisibilityChange); areListenersRegistered = true; } if (!isPolling) { poll(); } } function unregisterRoom(room, { sendDisconnectSignal = true } = {}) { const state = roomStates.get(room); if (state) { if (sendDisconnectSignal) { const rooms = [ { after: 0, awareness: null, client_id: state.clientId, room, updates: [] } ]; postSyncUpdateNonBlocking({ rooms }); } state.unregister(); roomStates.delete(room); } if (0 === roomStates.size && areListenersRegistered) { window.removeEventListener("beforeunload", handleBeforeUnload); window.removeEventListener("pagehide", handlePageHide); document.removeEventListener( "visibilitychange", handleVisibilityChange ); areListenersRegistered = false; hasCheckedConnectionLimit = false; consecutiveFailures = 0; roomOverflowOffset = 0; } } function retryNow() { isManualRetry = true; if (pollingTimeoutId) { clearTimeout(pollingTimeoutId); pollingTimeoutId = null; poll(); } } var pollingManager = { registerRoom, retryNow, unregisterRoom }; // packages/sync/build-module/providers/http-polling/http-polling-provider.mjs var HttpPollingProvider = class extends ObservableV2 { constructor(options) { super(); this.options = options; this.log("Initializing", { room: options.room }); this.awareness = options.awareness ?? new Awareness(options.ydoc); this.connect(); } awareness; status = "disconnected"; synced = false; /** * Connect to the endpoint and initialize sync. */ connect() { this.log("Connecting"); pollingManager.registerRoom({ room: this.options.room, doc: this.options.ydoc, awareness: this.awareness, log: this.log, onStatusChange: this.emitStatus, onSync: this.onSync }); } /** * Destroy the provider and cleanup resources. */ destroy() { this.disconnect(); super.destroy(); } /** * Disconnect the provider and allow reconnection later. */ disconnect() { this.log("Disconnecting"); pollingManager.unregisterRoom(this.options.room); this.emitStatus({ status: "disconnected" }); } /** * Emit connection status, passing the full object through so that * additional fields (e.g. `willAutoRetryInMs`) are preserved for consumers. * * @param connectionStatus The connection status object */ emitStatus = (connectionStatus) => { const { status } = connectionStatus; const error = status === "disconnected" ? connectionStatus.error : void 0; if (this.status === status && !error) { return; } if (status === "connecting" && this.status !== "disconnected") { return; } this.log("Status change", { status, error }); this.status = status; this.emit("status", [connectionStatus]); }; /** * Log debug messages if debugging is enabled. * * @param message The debug message * @param debug Additional debug information * @param errorLevel The console method to use for logging * @param force Whether to force logging regardless of debug setting */ log = (message, debug = {}, errorLevel = "log", force = false) => { if (!this.options.debug && !force) { return; } const logFn = console[errorLevel] || console.log; logFn(`[${this.constructor.name}]: ${message}`, { room: this.options.room, ...debug }); }; /** * Handle synchronization events from the polling manager. */ onSync = () => { if (!this.synced) { this.synced = true; this.log("Synced"); } }; }; function createHttpPollingProvider() { return async ({ awareness, objectType, objectId, ydoc }) => { const room = objectId ? `${objectType}:${objectId}` : objectType; const provider = new HttpPollingProvider({ awareness, // debug: true, room, ydoc }); return { destroy: () => provider.destroy(), // Adapter: ObservableV2.on is compatible with ProviderOn // The callback receives data as the first parameter on: (event, callback) => { provider.on(event, callback); } }; }; } // packages/sync/build-module/providers/index.mjs var providerCreators = null; function getDefaultProviderCreators() { return [createHttpPollingProvider()]; } function isProviderCreator(creator) { return "function" === typeof creator; } function getProviderCreators() { if (providerCreators) { return providerCreators; } if (!window._wpCollaborationEnabled) { return []; } const filteredProviderCreators = (0, import_hooks3.applyFilters)( "sync.providers", getDefaultProviderCreators() ); if (!Array.isArray(filteredProviderCreators)) { providerCreators = []; return providerCreators; } providerCreators = filteredProviderCreators.filter(isProviderCreator); return providerCreators; } // packages/sync/build-module/y-utilities/y-multidoc-undomanager.mjs var popStackItem2 = (mum, type) => { const stack = type === "undo" ? mum.undoStack : mum.redoStack; while (stack.length > 0) { const um = ( /** @type {Y.UndoManager} */ stack.pop() ); const prevUmStack = type === "undo" ? um.undoStack : um.redoStack; const stackItem = ( /** @type {any} */ prevUmStack.pop() ); let actionPerformed = false; if (type === "undo") { um.undoStack = [stackItem]; actionPerformed = um.undo() !== null; um.undoStack = prevUmStack; } else { um.redoStack = [stackItem]; actionPerformed = um.redo() !== null; um.redoStack = prevUmStack; } if (actionPerformed) { return stackItem; } } return null; }; var YMultiDocUndoManager = class extends Observable { /** * @param {Y.AbstractType|Array>} typeScope Accepts either a single type, or an array of types * @param {ConstructorParameters[1]} opts */ constructor(typeScope = [], opts = {}) { super(); this.docs = /* @__PURE__ */ new Map(); this.trackedOrigins = opts.trackedOrigins || /* @__PURE__ */ new Set([null]); opts.trackedOrigins = this.trackedOrigins; this._defaultOpts = opts; this.undoStack = []; this.redoStack = []; this.addToScope(typeScope); } /** * @param {Array> | Y.AbstractType} ytypes */ addToScope(ytypes) { ytypes = isArray(ytypes) ? ytypes : [ytypes]; ytypes.forEach((ytype) => { const ydoc = ( /** @type {Y.Doc} */ ytype.doc ); const um = setIfUndefined(this.docs, ydoc, () => { const um2 = new UndoManager([ytype], this._defaultOpts); um2.on( "stack-cleared", /** @param {any} opts */ ({ undoStackCleared, redoStackCleared }) => { this.clear(undoStackCleared, redoStackCleared); } ); ydoc.on("destroy", () => { this.docs.delete(ydoc); this.undoStack = this.undoStack.filter( (um3) => um3.doc !== ydoc ); this.redoStack = this.redoStack.filter( (um3) => um3.doc !== ydoc ); }); um2.on( "stack-item-added", /** @param {any} change */ (change) => { const stack = change.type === "undo" ? this.undoStack : this.redoStack; stack.push(um2); this.emit("stack-item-added", [ { ...change, ydoc }, this ]); } ); um2.on( "stack-item-updated", /** @param {any} change */ (change) => { this.emit("stack-item-updated", [ { ...change, ydoc }, this ]); } ); um2.on( "stack-item-popped", /** @param {any} change */ (change) => { this.emit("stack-item-popped", [ { ...change, ydoc }, this ]); } ); return um2; }); if (um.scope.every((yt) => yt !== ytype)) { um.scope.push(ytype); } }); } /** * @param {any} origin */ /* c8 ignore next 3 */ addTrackedOrigin(origin2) { this.trackedOrigins.add(origin2); } /** * @param {any} origin */ /* c8 ignore next 3 */ removeTrackedOrigin(origin2) { this.trackedOrigins.delete(origin2); } /** * Undo last changes on type. * * @return {any?} Returns StackItem if a change was applied */ undo() { return popStackItem2(this, "undo"); } /** * Redo last undo operation. * * @return {any?} Returns StackItem if a change was applied */ redo() { return popStackItem2(this, "redo"); } clear(clearUndoStack = true, clearRedoStack = true) { if (clearUndoStack && this.canUndo() || clearRedoStack && this.canRedo()) { this.docs.forEach((um) => { clearUndoStack && (this.undoStack = []); clearRedoStack && (this.redoStack = []); um.clear(clearUndoStack, clearRedoStack); }); this.emit("stack-cleared", [ { undoStackCleared: clearUndoStack, redoStackCleared: clearRedoStack } ]); } } /* c8 ignore next 5 */ stopCapturing() { this.docs.forEach((um) => { um.stopCapturing(); }); } /** * Are undo steps available? * * @return {boolean} `true` if undo is possible */ canUndo() { return this.undoStack.length > 0; } /** * Are redo steps available? * * @return {boolean} `true` if redo is possible */ canRedo() { return this.redoStack.length > 0; } destroy() { this.docs.forEach((um) => um.destroy()); super.destroy(); } }; // packages/sync/build-module/undo-manager.mjs function createUndoManager() { const yUndoManager = new YMultiDocUndoManager([], { // Throttle undo/redo captures after 500ms of inactivity. // 500 was selected from subjective local UX testing, shorter timeouts // may cause mid-word undo stack items. captureTimeout: 500, // Ensure that we only scope the undo/redo to the current editor. // The yjs document's clientID is added once it's available. trackedOrigins: /* @__PURE__ */ new Set([LOCAL_EDITOR_ORIGIN]) }); return { /** * Record changes into the history. * Since Yjs automatically tracks changes, this method translates the WordPress * HistoryRecord format into Yjs operations. * * @param _record A record of changes to record. * @param _isStaged Whether to immediately create an undo point or not. */ addRecord(_record, _isStaged = false) { }, /** * Add a Yjs map to the scope of the undo manager. * * @param {Y.Map< any >} ymap The Yjs map to add to the scope. * @param handlers * @param handlers.addUndoMeta * @param handlers.restoreUndoMeta */ addToScope(ymap, handlers) { if (ymap.doc === null) { return; } const ydoc = ymap.doc; yUndoManager.addToScope(ymap); const { addUndoMeta, restoreUndoMeta } = handlers; yUndoManager.on("stack-item-added", (event) => { addUndoMeta(ydoc, event.stackItem.meta); }); yUndoManager.on("stack-item-popped", (event) => { restoreUndoMeta(ydoc, event.stackItem.meta); }); }, /** * Undo the last recorded changes. * */ undo() { if (!yUndoManager.canUndo()) { return; } yUndoManager.undo(); return []; }, /** * Redo the last undone changes. */ redo() { if (!yUndoManager.canRedo()) { return; } yUndoManager.redo(); return []; }, /** * Check if there are changes that can be undone. * * @return {boolean} Whether there are changes to undo. */ hasUndo() { return yUndoManager.canUndo(); }, /** * Check if there are changes that can be redone. * * @return {boolean} Whether there are changes to redo. */ hasRedo() { return yUndoManager.canRedo(); }, /** * Stop capturing changes into the current undo item. * The next change will create a new undo item. */ stopCapturing() { yUndoManager.stopCapturing(); } }; } // packages/sync/build-module/utils.mjs function createYjsDoc(documentMeta = {}) { const metaMap = new Map( Object.entries(documentMeta) ); return new Doc({ meta: metaMap }); } function initializeYjsDoc(ydoc) { const stateMap = ydoc.getMap(CRDT_STATE_MAP_KEY); stateMap.set(CRDT_STATE_MAP_VERSION_KEY, CRDT_DOC_VERSION); } function markEntityAsSaved(ydoc) { const recordMeta = ydoc.getMap(CRDT_STATE_MAP_KEY); recordMeta.set(CRDT_STATE_MAP_SAVED_AT_KEY, Date.now()); recordMeta.set(CRDT_STATE_MAP_SAVED_BY_KEY, ydoc.clientID); } function pseudoRandomID() { return Math.floor(Math.random() * 1e9); } function serializeCrdtDoc(crdtDoc) { return JSON.stringify({ document: toBase64(encodeStateAsUpdateV2(crdtDoc)), updateId: pseudoRandomID() // helps with debugging }); } function deserializeCrdtDoc(serializedCrdtDoc) { try { const { document: document2 } = JSON.parse(serializedCrdtDoc); const docMeta = { [CRDT_DOC_META_PERSISTENCE_KEY]: true }; const ydoc = createYjsDoc(docMeta); const yupdate = fromBase64(document2); applyUpdateV2(ydoc, yupdate); ydoc.clientID = pseudoRandomID(); return ydoc; } catch (e) { return null; } } // packages/sync/build-module/manager.mjs function getEntityId(objectType, objectId) { return `${objectType}_${objectId}`; } function createSyncManager(debug = false) { const debugWrap = debug ? logPerformanceTiming : passThru; const collectionStates = /* @__PURE__ */ new Map(); const entityStates = /* @__PURE__ */ new Map(); let undoManager2; function log(component, message, entityId, context = {}) { if (!debug) { return; } console.log(`[SyncManager][${component}]: ${message}`, { ...context, entityId }); } async function loadEntity(syncConfig, objectType, objectId, record, handlers) { const providerCreators2 = getProviderCreators(); const entityId = getEntityId(objectType, objectId); if (0 === providerCreators2.length) { log("loadEntity", "no providers, skipping", entityId); return; } if (entityStates.has(entityId)) { log("loadEntity", "already loaded", entityId); return; } if (false === syncConfig.shouldSync?.(objectType, objectId)) { log("loadEntity", "shouldSync false, skipping", entityId); return; } log("loadEntity", "loading", entityId); handlers = { addUndoMeta: debugWrap(handlers.addUndoMeta), editRecord: debugWrap(handlers.editRecord), getEditedRecord: debugWrap(handlers.getEditedRecord), onStatusChange: debugWrap(handlers.onStatusChange), persistCRDTDoc: debugWrap(handlers.persistCRDTDoc), refetchRecord: debugWrap(handlers.refetchRecord), restoreUndoMeta: debugWrap(handlers.restoreUndoMeta) }; const ydoc = createYjsDoc({ objectType }); const recordMap = ydoc.getMap(CRDT_RECORD_MAP_KEY); const stateMap = ydoc.getMap(CRDT_STATE_MAP_KEY); const now = Date.now(); const unload = () => { log("loadEntity", "unloading", entityId); providerResults.forEach((result) => result.destroy()); handlers.onStatusChange(null); recordMap.unobserveDeep(onRecordUpdate); stateMap.unobserve(onStateMapUpdate); ydoc.destroy(); entityStates.delete(entityId); }; const awareness = syncConfig.createAwareness?.(ydoc, objectId); const onRecordUpdate = (_events, transaction) => { if (transaction.local && !(transaction.origin instanceof UndoManager)) { return; } void internal.updateEntityRecord(objectType, objectId); }; const onStateMapUpdate = (event, transaction) => { if (transaction.local) { return; } event.keysChanged.forEach((key) => { switch (key) { case CRDT_STATE_MAP_SAVED_AT_KEY: const newValue = stateMap.get(CRDT_STATE_MAP_SAVED_AT_KEY); if ("number" === typeof newValue && newValue > now) { log("loadEntity", "refetching record", entityId); void handlers.refetchRecord().catch(() => { }); } break; } }); }; if (!undoManager2) { undoManager2 = createUndoManager(); } const { addUndoMeta, restoreUndoMeta } = handlers; undoManager2.addToScope(recordMap, { addUndoMeta, restoreUndoMeta }); const entityState = { awareness, handlers, objectId, objectType, syncConfig, unload, ydoc }; entityStates.set(entityId, entityState); log("loadEntity", "connecting", entityId); const providerResults = await Promise.all( providerCreators2.map(async (create9) => { const provider = await create9({ objectType, objectId, ydoc, awareness }); provider.on("status", handlers.onStatusChange); return provider; }) ); recordMap.observeDeep(onRecordUpdate); stateMap.observe(onStateMapUpdate); initializeYjsDoc(ydoc); internal.applyPersistedCrdtDoc(objectType, objectId, record); } async function loadCollection(syncConfig, objectType, handlers) { const providerCreators2 = getProviderCreators(); const entityId = getEntityId(objectType, null); if (0 === providerCreators2.length) { log("loadCollection", "no providers, skipping", entityId); return; } if (collectionStates.has(objectType)) { log("loadCollection", "already loaded", entityId); return; } if (false === syncConfig.shouldSync?.(objectType, null)) { log("loadCollection", "shouldSync false, skipping", entityId); return; } log("loadCollection", "loading", entityId); const ydoc = createYjsDoc({ collection: true, objectType }); const stateMap = ydoc.getMap(CRDT_STATE_MAP_KEY); const now = Date.now(); const unload = () => { log("loadCollection", "unloading", entityId); providerResults.forEach((result) => result.destroy()); handlers.onStatusChange(null); stateMap.unobserve(onStateMapUpdate); ydoc.destroy(); collectionStates.delete(objectType); }; const onStateMapUpdate = (event, transaction) => { if (transaction.local) { return; } event.keysChanged.forEach((key) => { switch (key) { case CRDT_STATE_MAP_SAVED_AT_KEY: const newValue = stateMap.get(CRDT_STATE_MAP_SAVED_AT_KEY); if ("number" === typeof newValue && newValue > now) { void handlers.refetchRecords().catch(() => { }); } break; } }); }; const awareness = syncConfig.createAwareness?.(ydoc); const collectionState = { awareness, handlers, syncConfig, unload, ydoc }; collectionStates.set(objectType, collectionState); log("loadCollection", "connecting", entityId); const providerResults = await Promise.all( providerCreators2.map(async (create9) => { const provider = await create9({ awareness, objectType, objectId: null, ydoc }); provider.on("status", handlers.onStatusChange); return provider; }) ); stateMap.observe(onStateMapUpdate); initializeYjsDoc(ydoc); } function unloadEntity(objectType, objectId) { const entityId = getEntityId(objectType, objectId); log("unloadEntity", "unloading", entityId); entityStates.get(entityId)?.unload(); updateCRDTDoc(objectType, null, {}, origin, { isSave: true }); } function getAwareness(objectType, objectId) { const entityId = getEntityId(objectType, objectId); const entityState = entityStates.get(entityId); if (!entityState || !entityState.awareness) { return void 0; } return entityState.awareness; } function _applyPersistedCrdtDoc(objectType, objectId, record) { const entityId = getEntityId(objectType, objectId); const entityState = entityStates.get(entityId); if (!entityState) { log("applyPersistedCrdtDoc", "no entity state", entityId); return; } const { handlers, syncConfig: { applyChangesToCRDTDoc, getChangesFromCRDTDoc, getPersistedCRDTDoc }, ydoc: targetDoc } = entityState; const serialized = getPersistedCRDTDoc?.(record); const tempDoc = serialized ? deserializeCrdtDoc(serialized) : null; if (!tempDoc) { log("applyPersistedCrdtDoc", "no persisted doc", entityId); targetDoc.transact(() => { applyChangesToCRDTDoc(targetDoc, record); handlers.persistCRDTDoc(); }, LOCAL_SYNC_MANAGER_ORIGIN); return; } const update = encodeStateAsUpdateV2(tempDoc); applyUpdateV2(targetDoc, update); const invalidations = getChangesFromCRDTDoc(tempDoc, record); const invalidatedKeys = Object.keys(invalidations); tempDoc.destroy(); if (0 === invalidatedKeys.length) { log("applyPersistedCrdtDoc", "valid persisted doc", entityId); return; } log("applyPersistedCrdtDoc", "invalidated keys", entityId, { invalidatedKeys }); const changes = invalidatedKeys.reduce( (acc, key) => Object.assign(acc, { [key]: record[key] }), {} ); targetDoc.transact(() => { applyChangesToCRDTDoc(targetDoc, changes); handlers.persistCRDTDoc(); }, LOCAL_SYNC_MANAGER_ORIGIN); } function updateCRDTDoc(objectType, objectId, changes, origin2, options = {}) { const { isSave = false, isNewUndoLevel = false } = options; const entityId = getEntityId(objectType, objectId); const entityState = entityStates.get(entityId); const collectionState = collectionStates.get(objectType); if (entityState) { const { syncConfig, ydoc } = entityState; if (isNewUndoLevel && undoManager2) { undoManager2.stopCapturing?.(); } ydoc.transact(() => { log("updateCRDTDoc", "applying changes", entityId, { changedKeys: Object.keys(changes) }); syncConfig.applyChangesToCRDTDoc(ydoc, changes); if (isSave) { markEntityAsSaved(ydoc); } }, origin2); } if (collectionState && isSave) { collectionState.ydoc.transact(() => { markEntityAsSaved(collectionState.ydoc); }, origin2); } } async function _updateEntityRecord(objectType, objectId) { const entityId = getEntityId(objectType, objectId); const entityState = entityStates.get(entityId); if (!entityState) { log("updateEntityRecord", "no entity state", entityId); return; } const { handlers, syncConfig, ydoc } = entityState; const changes = syncConfig.getChangesFromCRDTDoc( ydoc, await handlers.getEditedRecord() ); const changedKeys = Object.keys(changes); if (0 === changedKeys.length) { return; } log("updateEntityRecord", "changes", entityId, { changedKeys }); handlers.editRecord(changes); } async function createPersistedCRDTDoc(objectType, objectId) { const entityId = getEntityId(objectType, objectId); const entityState = entityStates.get(entityId); if (!entityState?.ydoc) { return null; } await new Promise((resolve) => setTimeout(resolve, 0)); return serializeCrdtDoc(entityState.ydoc); } const internal = { applyPersistedCrdtDoc: debugWrap(_applyPersistedCrdtDoc), updateEntityRecord: debugWrap(_updateEntityRecord) }; return { createPersistedCRDTDoc: debugWrap(createPersistedCRDTDoc), getAwareness, load: debugWrap(loadEntity), loadCollection: debugWrap(loadCollection), // Use getter to ensure we always return the current value of `undoManager`. get undoManager() { return undoManager2; }, unload: debugWrap(unloadEntity), update: debugWrap(yieldToEventLoop(updateCRDTDoc)) }; } // packages/sync/node_modules/diff/libesm/diff/base.js var Diff = class { diff(oldStr, newStr, options = {}) { let callback; if (typeof options === "function") { callback = options; options = {}; } else if ("callback" in options) { callback = options.callback; } const oldString = this.castInput(oldStr, options); const newString = this.castInput(newStr, options); const oldTokens = this.removeEmpty(this.tokenize(oldString, options)); const newTokens = this.removeEmpty(this.tokenize(newString, options)); return this.diffWithOptionsObj(oldTokens, newTokens, options, callback); } diffWithOptionsObj(oldTokens, newTokens, options, callback) { var _a; const done = (value) => { value = this.postProcess(value, options); if (callback) { setTimeout(function() { callback(value); }, 0); return void 0; } else { return value; } }; const newLen = newTokens.length, oldLen = oldTokens.length; let editLength = 1; let maxEditLength = newLen + oldLen; if (options.maxEditLength != null) { maxEditLength = Math.min(maxEditLength, options.maxEditLength); } const maxExecutionTime = (_a = options.timeout) !== null && _a !== void 0 ? _a : Infinity; const abortAfterTimestamp = Date.now() + maxExecutionTime; const bestPath = [{ oldPos: -1, lastComponent: void 0 }]; let newPos = this.extractCommon(bestPath[0], newTokens, oldTokens, 0, options); if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) { return done(this.buildValues(bestPath[0].lastComponent, newTokens, oldTokens)); } let minDiagonalToConsider = -Infinity, maxDiagonalToConsider = Infinity; const execEditLength = () => { for (let diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) { let basePath; const removePath = bestPath[diagonalPath - 1], addPath = bestPath[diagonalPath + 1]; if (removePath) { bestPath[diagonalPath - 1] = void 0; } let canAdd = false; if (addPath) { const addPathNewPos = addPath.oldPos - diagonalPath; canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen; } const canRemove = removePath && removePath.oldPos + 1 < oldLen; if (!canAdd && !canRemove) { bestPath[diagonalPath] = void 0; continue; } if (!canRemove || canAdd && removePath.oldPos < addPath.oldPos) { basePath = this.addToPath(addPath, true, false, 0, options); } else { basePath = this.addToPath(removePath, false, true, 1, options); } newPos = this.extractCommon(basePath, newTokens, oldTokens, diagonalPath, options); if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) { return done(this.buildValues(basePath.lastComponent, newTokens, oldTokens)) || true; } else { bestPath[diagonalPath] = basePath; if (basePath.oldPos + 1 >= oldLen) { maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1); } if (newPos + 1 >= newLen) { minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1); } } } editLength++; }; if (callback) { (function exec() { setTimeout(function() { if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) { return callback(void 0); } if (!execEditLength()) { exec(); } }, 0); })(); } else { while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) { const ret = execEditLength(); if (ret) { return ret; } } } } addToPath(path, added, removed, oldPosInc, options) { const last2 = path.lastComponent; if (last2 && !options.oneChangePerToken && last2.added === added && last2.removed === removed) { return { oldPos: path.oldPos + oldPosInc, lastComponent: { count: last2.count + 1, added, removed, previousComponent: last2.previousComponent } }; } else { return { oldPos: path.oldPos + oldPosInc, lastComponent: { count: 1, added, removed, previousComponent: last2 } }; } } extractCommon(basePath, newTokens, oldTokens, diagonalPath, options) { const newLen = newTokens.length, oldLen = oldTokens.length; let oldPos = basePath.oldPos, newPos = oldPos - diagonalPath, commonCount = 0; while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(oldTokens[oldPos + 1], newTokens[newPos + 1], options)) { newPos++; oldPos++; commonCount++; if (options.oneChangePerToken) { basePath.lastComponent = { count: 1, previousComponent: basePath.lastComponent, added: false, removed: false }; } } if (commonCount && !options.oneChangePerToken) { basePath.lastComponent = { count: commonCount, previousComponent: basePath.lastComponent, added: false, removed: false }; } basePath.oldPos = oldPos; return newPos; } equals(left, right, options) { if (options.comparator) { return options.comparator(left, right); } else { return left === right || !!options.ignoreCase && left.toLowerCase() === right.toLowerCase(); } } removeEmpty(array) { const ret = []; for (let i = 0; i < array.length; i++) { if (array[i]) { ret.push(array[i]); } } return ret; } // eslint-disable-next-line @typescript-eslint/no-unused-vars castInput(value, options) { return value; } // eslint-disable-next-line @typescript-eslint/no-unused-vars tokenize(value, options) { return Array.from(value); } join(chars) { return chars.join(""); } postProcess(changeObjects, options) { return changeObjects; } get useLongestToken() { return false; } buildValues(lastComponent, newTokens, oldTokens) { const components = []; let nextComponent; while (lastComponent) { components.push(lastComponent); nextComponent = lastComponent.previousComponent; delete lastComponent.previousComponent; lastComponent = nextComponent; } components.reverse(); const componentLen = components.length; let componentPos = 0, newPos = 0, oldPos = 0; for (; componentPos < componentLen; componentPos++) { const component = components[componentPos]; if (!component.removed) { if (!component.added && this.useLongestToken) { let value = newTokens.slice(newPos, newPos + component.count); value = value.map(function(value2, i) { const oldValue = oldTokens[oldPos + i]; return oldValue.length > value2.length ? oldValue : value2; }); component.value = this.join(value); } else { component.value = this.join(newTokens.slice(newPos, newPos + component.count)); } newPos += component.count; if (!component.added) { oldPos += component.count; } } else { component.value = this.join(oldTokens.slice(oldPos, oldPos + component.count)); oldPos += component.count; } } return components; } }; // packages/sync/node_modules/diff/libesm/diff/character.js var CharacterDiff = class extends Diff { }; var characterDiff = new CharacterDiff(); function diffChars(oldStr, newStr, options) { return characterDiff.diff(oldStr, newStr, options); } // packages/sync/node_modules/diff/libesm/diff/line.js var LineDiff = class extends Diff { constructor() { super(...arguments); this.tokenize = tokenize; } equals(left, right, options) { if (options.ignoreWhitespace) { if (!options.newlineIsToken || !left.includes("\n")) { left = left.trim(); } if (!options.newlineIsToken || !right.includes("\n")) { right = right.trim(); } } else if (options.ignoreNewlineAtEof && !options.newlineIsToken) { if (left.endsWith("\n")) { left = left.slice(0, -1); } if (right.endsWith("\n")) { right = right.slice(0, -1); } } return super.equals(left, right, options); } }; var lineDiff = new LineDiff(); function diffLines(oldStr, newStr, options) { return lineDiff.diff(oldStr, newStr, options); } function tokenize(value, options) { if (options.stripTrailingCr) { value = value.replace(/\r\n/g, "\n"); } const retLines = [], linesAndNewlines = value.split(/(\n|\r\n)/); if (!linesAndNewlines[linesAndNewlines.length - 1]) { linesAndNewlines.pop(); } for (let i = 0; i < linesAndNewlines.length; i++) { const line = linesAndNewlines[i]; if (i % 2 && !options.newlineIsToken) { retLines[retLines.length - 1] += line; } else { retLines.push(line); } } return retLines; } // packages/sync/build-module/quill-delta/Delta.mjs var import_es63 = __toESM(require_es6(), 1); // packages/sync/build-module/quill-delta/AttributeMap.mjs var import_es62 = __toESM(require_es6(), 1); function cloneDeep(value) { return JSON.parse(JSON.stringify(value)); } var AttributeMap; ((AttributeMap2) => { function compose3(a = {}, b = {}, keepNull = false) { if (typeof a !== "object") { a = {}; } if (typeof b !== "object") { b = {}; } let attributes = cloneDeep(b); if (!keepNull) { attributes = Object.keys(attributes).reduce( (copy2, key) => { if (attributes[key] !== null || attributes[key] !== void 0) { copy2[key] = attributes[key]; } return copy2; }, {} ); } for (const key in a) { if (a[key] !== void 0 && b[key] === void 0) { attributes[key] = a[key]; } } return Object.keys(attributes).length > 0 ? attributes : void 0; } AttributeMap2.compose = compose3; function diff(a = {}, b = {}) { if (typeof a !== "object") { a = {}; } if (typeof b !== "object") { b = {}; } const attributes = Object.keys(a).concat(Object.keys(b)).reduce((attrs, key) => { if (!(0, import_es62.default)(a[key], b[key])) { attrs[key] = b[key] === void 0 ? null : b[key]; } return attrs; }, {}); return Object.keys(attributes).length > 0 ? attributes : void 0; } AttributeMap2.diff = diff; function invert(attr = {}, base = {}) { attr = attr || {}; const baseInverted = Object.keys(base).reduce( (memo, key) => { if (base[key] !== attr[key] && attr[key] !== void 0) { memo[key] = base[key]; } return memo; }, {} ); return Object.keys(attr).reduce((memo, key) => { if (attr[key] !== base[key] && base[key] === void 0) { memo[key] = null; } return memo; }, baseInverted); } AttributeMap2.invert = invert; function transform(a, b, priority = false) { if (typeof a !== "object") { return b; } if (typeof b !== "object") { return void 0; } if (!priority) { return b; } const attributes = Object.keys(b).reduce( (attrs, key) => { if (a[key] === void 0) { attrs[key] = b[key]; } return attrs; }, {} ); return Object.keys(attributes).length > 0 ? attributes : void 0; } AttributeMap2.transform = transform; })(AttributeMap || (AttributeMap = {})); var AttributeMap_default = AttributeMap; // packages/sync/build-module/quill-delta/Op.mjs var Op; ((Op2) => { function length3(op) { if (typeof op.delete === "number") { return op.delete; } else if (typeof op.retain === "number") { return op.retain; } else if (typeof op.retain === "object" && op.retain !== null) { return 1; } return typeof op.insert === "string" ? op.insert.length : 1; } Op2.length = length3; })(Op || (Op = {})); var Op_default = Op; // packages/sync/build-module/quill-delta/OpIterator.mjs var Iterator2 = class { ops; index; offset; constructor(ops) { this.ops = ops; this.index = 0; this.offset = 0; } hasNext() { return this.peekLength() < Infinity; } next(length3) { if (!length3) { length3 = Infinity; } const nextOp = this.ops[this.index]; if (nextOp) { const offset = this.offset; const opLength = Op_default.length(nextOp); if (length3 >= opLength - offset) { length3 = opLength - offset; this.index += 1; this.offset = 0; } else { this.offset += length3; } if (typeof nextOp.delete === "number") { return { delete: length3 }; } const retOp = {}; if (nextOp.attributes) { retOp.attributes = nextOp.attributes; } if (typeof nextOp.retain === "number") { retOp.retain = length3; } else if (typeof nextOp.retain === "object" && nextOp.retain !== null) { retOp.retain = nextOp.retain; } else if (typeof nextOp.insert === "string") { retOp.insert = nextOp.insert.substr(offset, length3); } else { retOp.insert = nextOp.insert; } return retOp; } return { retain: Infinity }; } peek() { return this.ops[this.index]; } peekLength() { if (this.ops[this.index]) { return Op_default.length(this.ops[this.index]) - this.offset; } return Infinity; } peekType() { const op = this.ops[this.index]; if (op) { if (typeof op.delete === "number") { return "delete"; } else if (typeof op.retain === "number" || typeof op.retain === "object" && op.retain !== null) { return "retain"; } return "insert"; } return "retain"; } rest() { if (!this.hasNext()) { return []; } else if (this.offset === 0) { return this.ops.slice(this.index); } const offset = this.offset; const index = this.index; const next = this.next(); const rest = this.ops.slice(this.index); this.offset = offset; this.index = index; return [next].concat(rest); } }; // packages/sync/build-module/quill-delta/Delta.mjs function cloneDeep2(value) { return JSON.parse(JSON.stringify(value)); } var NULL_CHARACTER = String.fromCharCode(0); var STRING_TOO_LARGE_THRESHOLD = 1e4; function normalizeChangeCounts(changes) { return changes.map((change) => ({ ...change, count: change.value.length })); } var getEmbedTypeAndData = (a, b) => { if (typeof a !== "object" || a === null) { throw new Error(`cannot retain a ${typeof a}`); } if (typeof b !== "object" || b === null) { throw new Error(`cannot retain a ${typeof b}`); } const embedType = Object.keys(a)[0]; if (!embedType || embedType !== Object.keys(b)[0]) { throw new Error( `embed types not matched: ${embedType} != ${Object.keys(b)[0]}` ); } return [embedType, a[embedType], b[embedType]]; }; var Delta = class _Delta { static Op = Op_default; static OpIterator = Iterator2; static AttributeMap = AttributeMap_default; static handlers = {}; static registerEmbed(embedType, handler) { this.handlers[embedType] = handler; } static unregisterEmbed(embedType) { delete this.handlers[embedType]; } static getHandler(embedType) { const handler = this.handlers[embedType]; if (!handler) { throw new Error(`no handlers for embed type "${embedType}"`); } return handler; } ops; constructor(ops) { if (Array.isArray(ops)) { this.ops = ops; } else if (ops !== null && ops !== void 0 && Array.isArray(ops.ops)) { this.ops = ops.ops; } else { this.ops = []; } } insert(arg, attributes) { const newOp = {}; if (typeof arg === "string" && arg.length === 0) { return this; } newOp.insert = arg; if (attributes !== null && attributes !== void 0 && typeof attributes === "object" && Object.keys(attributes).length > 0) { newOp.attributes = attributes; } return this.push(newOp); } delete(length3) { if (length3 <= 0) { return this; } return this.push({ delete: length3 }); } retain(length3, attributes) { if (typeof length3 === "number" && length3 <= 0) { return this; } const newOp = { retain: length3 }; if (attributes !== null && attributes !== void 0 && typeof attributes === "object" && Object.keys(attributes).length > 0) { newOp.attributes = attributes; } return this.push(newOp); } push(newOp) { let index = this.ops.length; let lastOp = this.ops[index - 1]; newOp = cloneDeep2(newOp); if (typeof lastOp === "object") { if (typeof newOp.delete === "number" && typeof lastOp.delete === "number") { this.ops[index - 1] = { delete: lastOp.delete + newOp.delete }; return this; } if (typeof lastOp.delete === "number" && newOp.insert !== null && newOp.insert !== void 0) { index -= 1; lastOp = this.ops[index - 1]; if (typeof lastOp !== "object") { this.ops.unshift(newOp); return this; } } if ((0, import_es63.default)(newOp.attributes, lastOp.attributes)) { if (typeof newOp.insert === "string" && typeof lastOp.insert === "string") { this.ops[index - 1] = { insert: lastOp.insert + newOp.insert }; if (typeof newOp.attributes === "object") { this.ops[index - 1].attributes = newOp.attributes; } return this; } else if (typeof newOp.retain === "number" && typeof lastOp.retain === "number") { this.ops[index - 1] = { retain: lastOp.retain + newOp.retain }; if (typeof newOp.attributes === "object") { this.ops[index - 1].attributes = newOp.attributes; } return this; } } } if (index === this.ops.length) { this.ops.push(newOp); } else { this.ops.splice(index, 0, newOp); } return this; } chop() { const lastOp = this.ops[this.ops.length - 1]; if (lastOp && typeof lastOp.retain === "number" && !lastOp.attributes) { this.ops.pop(); } return this; } filter(predicate) { return this.ops.filter(predicate); } forEach(predicate) { this.ops.forEach(predicate); } map(predicate) { return this.ops.map(predicate); } partition(predicate) { const passed = []; const failed = []; this.forEach((op) => { const target = predicate(op) ? passed : failed; target.push(op); }); return [passed, failed]; } reduce(predicate, initialValue) { return this.ops.reduce(predicate, initialValue); } changeLength() { return this.reduce((length3, elem) => { if (elem.insert) { return length3 + Op_default.length(elem); } else if (elem.delete) { return length3 - elem.delete; } return length3; }, 0); } length() { return this.reduce((length3, elem) => { return length3 + Op_default.length(elem); }, 0); } slice(start = 0, end = Infinity) { const ops = []; const iter = new Iterator2(this.ops); let index = 0; while (index < end && iter.hasNext()) { let nextOp; if (index < start) { nextOp = iter.next(start - index); } else { nextOp = iter.next(end - index); ops.push(nextOp); } index += Op_default.length(nextOp); } return new _Delta(ops); } compose(other) { const thisIter = new Iterator2(this.ops); const otherIter = new Iterator2(other.ops); const ops = []; const firstOther = otherIter.peek(); if (firstOther !== null && firstOther !== void 0 && typeof firstOther.retain === "number" && (firstOther.attributes === null || firstOther.attributes === void 0)) { let firstLeft = firstOther.retain; while (thisIter.peekType() === "insert" && thisIter.peekLength() <= firstLeft) { firstLeft -= thisIter.peekLength(); ops.push(thisIter.next()); } if (firstOther.retain - firstLeft > 0) { otherIter.next(firstOther.retain - firstLeft); } } const delta = new _Delta(ops); while (thisIter.hasNext() || otherIter.hasNext()) { if (otherIter.peekType() === "insert") { delta.push(otherIter.next()); } else if (thisIter.peekType() === "delete") { delta.push(thisIter.next()); } else { const length3 = Math.min( thisIter.peekLength(), otherIter.peekLength() ); const thisOp = thisIter.next(length3); const otherOp = otherIter.next(length3); if (otherOp.retain) { const newOp = {}; if (typeof thisOp.retain === "number") { newOp.retain = typeof otherOp.retain === "number" ? length3 : otherOp.retain; } else if (typeof otherOp.retain === "number") { if (thisOp.retain === null || thisOp.retain === void 0) { newOp.insert = thisOp.insert; } else { newOp.retain = thisOp.retain; } } else { const action = thisOp.retain === null || thisOp.retain === void 0 ? "insert" : "retain"; const [embedType, thisData, otherData] = getEmbedTypeAndData( thisOp[action], otherOp.retain ); const handler = _Delta.getHandler(embedType); newOp[action] = { [embedType]: handler.compose( thisData, otherData, action === "retain" ) }; } const attributes = AttributeMap_default.compose( thisOp.attributes, otherOp.attributes, typeof thisOp.retain === "number" ); if (attributes) { newOp.attributes = attributes; } delta.push(newOp); if (!otherIter.hasNext() && (0, import_es63.default)(delta.ops[delta.ops.length - 1], newOp)) { const rest = new _Delta(thisIter.rest()); return delta.concat(rest).chop(); } } else if (typeof otherOp.delete === "number" && (typeof thisOp.retain === "number" || typeof thisOp.retain === "object" && thisOp.retain !== null)) { delta.push(otherOp); } } } return delta.chop(); } concat(other) { const delta = new _Delta(this.ops.slice()); if (other.ops.length > 0) { delta.push(other.ops[0]); delta.ops = delta.ops.concat(other.ops.slice(1)); } return delta; } diff(other) { if (this.ops === other.ops) { return new _Delta(); } const strings = this.deltasToStrings(other); const diffResult = normalizeChangeCounts( diffChars(strings[0], strings[1]) ); const thisIter = new Iterator2(this.ops); const otherIter = new Iterator2(other.ops); const retDelta = this.convertChangesToDelta( diffResult, thisIter, otherIter ); return retDelta.chop(); } eachLine(predicate, newline = "\n") { const iter = new Iterator2(this.ops); let line = new _Delta(); let i = 0; while (iter.hasNext()) { if (iter.peekType() !== "insert") { return; } const thisOp = iter.peek(); const start = Op_default.length(thisOp) - iter.peekLength(); const index = typeof thisOp.insert === "string" ? thisOp.insert.indexOf(newline, start) - start : -1; if (index < 0) { line.push(iter.next()); } else if (index > 0) { line.push(iter.next(index)); } else { if (predicate(line, iter.next(1).attributes || {}, i) === false) { return; } i += 1; line = new _Delta(); } } if (line.length() > 0) { predicate(line, {}, i); } } invert(base) { const inverted = new _Delta(); this.reduce((baseIndex, op) => { if (op.insert) { inverted.delete(Op_default.length(op)); } else if (typeof op.retain === "number" && (op.attributes === null || op.attributes === void 0)) { inverted.retain(op.retain); return baseIndex + op.retain; } else if (op.delete || typeof op.retain === "number") { const length3 = op.delete || op.retain; const slice = base.slice(baseIndex, baseIndex + length3); slice.forEach((baseOp) => { if (op.delete) { inverted.push(baseOp); } else if (op.retain && op.attributes) { inverted.retain( Op_default.length(baseOp), AttributeMap_default.invert( op.attributes, baseOp.attributes ) ); } }); return baseIndex + length3; } else if (typeof op.retain === "object" && op.retain !== null) { const slice = base.slice(baseIndex, baseIndex + 1); const baseOp = new Iterator2(slice.ops).next(); const [embedType, opData, baseOpData] = getEmbedTypeAndData( op.retain, baseOp.insert ); const handler = _Delta.getHandler(embedType); inverted.retain( { [embedType]: handler.invert(opData, baseOpData) }, AttributeMap_default.invert(op.attributes, baseOp.attributes) ); return baseIndex + 1; } return baseIndex; }, 0); return inverted.chop(); } transform(arg, priority = false) { priority = !!priority; if (typeof arg === "number") { return this.transformPosition(arg, priority); } const other = arg; const thisIter = new Iterator2(this.ops); const otherIter = new Iterator2(other.ops); const delta = new _Delta(); while (thisIter.hasNext() || otherIter.hasNext()) { if (thisIter.peekType() === "insert" && (priority || otherIter.peekType() !== "insert")) { delta.retain(Op_default.length(thisIter.next())); } else if (otherIter.peekType() === "insert") { delta.push(otherIter.next()); } else { const length3 = Math.min( thisIter.peekLength(), otherIter.peekLength() ); const thisOp = thisIter.next(length3); const otherOp = otherIter.next(length3); if (thisOp.delete) { continue; } else if (otherOp.delete) { delta.push(otherOp); } else { const thisData = thisOp.retain; const otherData = otherOp.retain; let transformedData = typeof otherData === "object" && otherData !== null ? otherData : length3; if (typeof thisData === "object" && thisData !== null && typeof otherData === "object" && otherData !== null) { const embedType = Object.keys(thisData)[0]; if (embedType === Object.keys(otherData)[0]) { const handler = _Delta.getHandler(embedType); if (handler) { transformedData = { [embedType]: handler.transform( thisData[embedType], otherData[embedType], priority ) }; } } } delta.retain( transformedData, AttributeMap_default.transform( thisOp.attributes, otherOp.attributes, priority ) ); } } } return delta.chop(); } transformPosition(index, priority = false) { priority = !!priority; const thisIter = new Iterator2(this.ops); let offset = 0; while (thisIter.hasNext() && offset <= index) { const length3 = thisIter.peekLength(); const nextType = thisIter.peekType(); thisIter.next(); if (nextType === "delete") { index -= Math.min(length3, index - offset); continue; } else if (nextType === "insert" && (offset < index || !priority)) { index += length3; } offset += length3; } return index; } /** * Given a Delta and a cursor position, do a diff and attempt to adjust * the diff to place insertions or deletions at the cursor position. * * @param other - The other Delta to diff against. * @param cursorAfterChange - The cursor position index after the change. * @return A Delta that attempts to place insertions or deletions at the cursor position. */ diffWithCursor(other, cursorAfterChange) { if (this.ops === other.ops) { return new _Delta(); } const strings = this.deltasToStrings(other); const maxStringLength = Math.max( ...strings.map((str) => str.length) ); if (maxStringLength > STRING_TOO_LARGE_THRESHOLD) { const diffResult = normalizeChangeCounts( diffLines(strings[0], strings[1]) ); const thisIterLarge = new Iterator2(this.ops); const otherIterLarge = new Iterator2(other.ops); return this.convertChangesToDelta( diffResult, thisIterLarge, otherIterLarge ).chop(); } else if (cursorAfterChange === null) { return this.diff(other); } let diffs = normalizeChangeCounts( diffChars(strings[0], strings[1]) ); let lastDiffPosition = 0; const adjustedDiffs = []; for (let i = 0; i < diffs.length; i++) { const diff = diffs[i]; const segmentStart = lastDiffPosition; const segmentEnd = lastDiffPosition + (diff.count ?? 0); const isCursorInSegment = cursorAfterChange > segmentStart && cursorAfterChange <= segmentEnd; const isUnchangedSegment = !diff.added && !diff.removed; const isRemovalSegment = diff.removed && !diff.added; const nextDiff = diffs[i + 1]; const isNextDiffAnInsert = nextDiff && nextDiff.added && !nextDiff.removed; if (isUnchangedSegment && isCursorInSegment && isNextDiffAnInsert) { const movedSegments = this.tryMoveInsertionToCursor( diff, nextDiff, cursorAfterChange, segmentStart ); if (movedSegments) { adjustedDiffs.push(...movedSegments); i++; lastDiffPosition = segmentEnd; continue; } } if (isRemovalSegment) { const movedSegments = this.tryMoveDeletionToCursor( diff, adjustedDiffs, cursorAfterChange, lastDiffPosition ); if (movedSegments) { adjustedDiffs.pop(); adjustedDiffs.push(...movedSegments); lastDiffPosition += diff.count ?? 0; continue; } } adjustedDiffs.push(diff); if (!diff.added) { lastDiffPosition += diff.count ?? 0; } } diffs = adjustedDiffs; const thisIter = new Iterator2(this.ops); const otherIter = new Iterator2(other.ops); const retDelta = this.convertChangesToDelta( diffs, thisIter, otherIter ); return retDelta.chop(); } /** * Try to move an insertion operation from after an unchanged segment to the cursor position within it. * This is a "look-ahead" strategy. * * @param diff - The current unchanged diff segment. * @param nextDiff - The next diff segment (expected to be an insertion). * @param cursorAfterChange - The cursor position after the change. * @param segmentStart - The start position of the current segment. * @return An array of adjusted diff segments if the insertion was successfully moved, null otherwise. */ tryMoveInsertionToCursor(diff, nextDiff, cursorAfterChange, segmentStart) { const nextDiffInsert = nextDiff.value; const insertLength = nextDiffInsert.length; const insertOffset = cursorAfterChange - segmentStart - insertLength; const textAtCursor = diff.value.substring( insertOffset, insertOffset + nextDiffInsert.length ); const isInsertMoveable = textAtCursor === nextDiffInsert; if (!isInsertMoveable) { return null; } const beforeCursor = diff.value.substring(0, insertOffset); const afterCursor = diff.value.substring(insertOffset); const result = []; if (beforeCursor.length > 0) { result.push({ value: beforeCursor, count: beforeCursor.length, added: false, removed: false }); } result.push(nextDiff); if (afterCursor.length > 0) { result.push({ value: afterCursor, count: afterCursor.length, added: false, removed: false }); } return result; } /** * Try to move a deletion operation to the cursor position by looking back at the previous unchanged segment. * This is a "look-back" strategy. * * @param diff - The current deletion diff segment. * @param adjustedDiffs - The array of previously processed diff segments. * @param cursorAfterChange - The cursor position after the change. * @param lastDiffPosition - The position in the document up to (but not including) the current diff. * @return An array of adjusted diff segments if the deletion was successfully moved, null otherwise. */ tryMoveDeletionToCursor(diff, adjustedDiffs, cursorAfterChange, lastDiffPosition) { const prevDiff = adjustedDiffs[adjustedDiffs.length - 1]; if (!prevDiff || prevDiff.added || prevDiff.removed) { return null; } const prevSegmentStart = lastDiffPosition - (prevDiff.count ?? 0); const prevSegmentEnd = lastDiffPosition; if (cursorAfterChange < prevSegmentStart || cursorAfterChange >= prevSegmentEnd) { return null; } const deletedChars = diff.value; const deleteOffset = cursorAfterChange - prevSegmentStart; const textAtCursor = prevDiff.value.substring( deleteOffset, deleteOffset + deletedChars.length ); const canBePlacedHere = textAtCursor === deletedChars; if (!canBePlacedHere) { return null; } const beforeCursor = prevDiff.value.substring(0, deleteOffset); const atAndAfterCursor = prevDiff.value.substring(deleteOffset); const deletionLength = diff.count ?? 0; const afterDeletion = atAndAfterCursor.substring(deletionLength); const result = []; if (beforeCursor.length > 0) { result.push({ value: beforeCursor, count: beforeCursor.length, added: false, removed: false }); } result.push(diff); if (afterDeletion.length > 0) { result.push({ value: afterDeletion, count: afterDeletion.length, added: false, removed: false }); } return result; } /** * Convert two Deltas to string representations for diffing. * * @param other - The other Delta to convert. * @return A tuple of [thisString, otherString]. */ deltasToStrings(other) { return [this, other].map((delta) => { return delta.map((op) => { if (op.insert !== null || op.insert !== void 0) { return typeof op.insert === "string" ? op.insert : NULL_CHARACTER; } const prep = delta === other ? "on" : "with"; throw new Error( "diff() called " + prep + " non-document" ); }).join(""); }); } /** * Process diff changes and convert them to Delta operations. * * @param changes - The array of changes from the diff algorithm. * @param thisIter - Iterator for this Delta's operations. * @param otherIter - Iterator for the other Delta's operations. * @return A Delta containing the processed diff operations. */ convertChangesToDelta(changes, thisIter, otherIter) { const retDelta = new _Delta(); changes.forEach((component) => { let length3 = component.count ?? 0; while (length3 > 0) { let opLength = 0; if (component.added) { opLength = Math.min(otherIter.peekLength(), length3); retDelta.push(otherIter.next(opLength)); } else if (component.removed) { opLength = Math.min(length3, thisIter.peekLength()); thisIter.next(opLength); retDelta.delete(opLength); } else { opLength = Math.min( thisIter.peekLength(), otherIter.peekLength(), length3 ); const thisOp = thisIter.next(opLength); const otherOp = otherIter.next(opLength); if ((0, import_es63.default)(thisOp.insert, otherOp.insert)) { retDelta.retain( opLength, AttributeMap_default.diff( thisOp.attributes, otherOp.attributes ) ); } else { retDelta.push(otherOp).delete(opLength); } } length3 -= opLength; } }); return retDelta; } }; var Delta_default = Delta; // packages/sync/build-module/private-apis.mjs var privateApis = {}; lock(privateApis, { ConnectionErrorCode, createSyncManager, Delta: Delta_default, CRDT_DOC_META_PERSISTENCE_KEY, CRDT_RECORD_MAP_KEY, LOCAL_EDITOR_ORIGIN, LOCAL_UNDO_IGNORED_ORIGIN, retrySyncConnection: () => pollingManager.retryNow() }); // packages/core-data/build-module/awareness/post-editor-awareness.mjs var import_block_editor3 = __toESM(require_block_editor(), 1); // packages/core-data/build-module/awareness/base-awareness.mjs var import_data2 = __toESM(require_data(), 1); // packages/core-data/build-module/awareness/config.mjs var AWARENESS_CURSOR_UPDATE_THROTTLE_IN_MS = 100; var LOCAL_CURSOR_UPDATE_DEBOUNCE_IN_MS = 5; var REMOVAL_DELAY_IN_MS = 5e3; // packages/core-data/build-module/awareness/utils.mjs function getBrowserName() { const userAgent = window.navigator.userAgent; let browserName = "Unknown"; if (userAgent.includes("Firefox")) { browserName = "Firefox"; } else if (userAgent.includes("Edg")) { browserName = "Microsoft Edge"; } else if (userAgent.includes("Chrome") && !userAgent.includes("Edg")) { browserName = "Chrome"; } else if (userAgent.includes("Safari") && !userAgent.includes("Chrome")) { browserName = "Safari"; } else if (userAgent.includes("MSIE") || userAgent.includes("Trident")) { browserName = "Internet Explorer"; } else if (userAgent.includes("Opera") || userAgent.includes("OPR")) { browserName = "Opera"; } return browserName; } function areMapsEqual(map1, map2, comparatorFn) { if (map1.size !== map2.size) { return false; } for (const [key, value1] of map1.entries()) { if (!map2.has(key)) { return false; } if (!comparatorFn(value1, map2.get(key))) { return false; } } return true; } function areCollaboratorInfosEqual(collaboratorInfo1, collaboratorInfo2) { if (!collaboratorInfo1 || !collaboratorInfo2) { return collaboratorInfo1 === collaboratorInfo2; } if (Object.keys(collaboratorInfo1).length !== Object.keys(collaboratorInfo2).length) { return false; } return Object.entries(collaboratorInfo1).every(([key, value]) => { return value === collaboratorInfo2[key]; }); } function generateCollaboratorInfo(currentCollaborator) { const { avatar_urls, id: id2, name, slug } = currentCollaborator; return { avatar_urls, // eslint-disable-line camelcase browserType: getBrowserName(), enteredAt: Date.now(), id: id2, name, slug }; } function getRecordValue(obj, key) { if ("object" === typeof obj && null !== obj && key in obj) { return obj[key]; } return null; } function getTypedKeys(obj) { return Object.keys(obj); } // packages/core-data/build-module/awareness/typed-awareness.mjs var TypedAwareness = class extends Awareness { /** * Get the states from an awareness document. */ getStates() { return super.getStates(); } /** * Get a local state field from an awareness document. * @param field */ getLocalStateField(field) { const state = this.getLocalState(); return getRecordValue(state, field); } /** * Set a local state field on an awareness document. * @param field * @param value */ setLocalStateField(field, value) { super.setLocalStateField(field, value); } }; // packages/core-data/build-module/awareness/awareness-state.mjs var AwarenessWithEqualityChecks = class extends TypedAwareness { /** OVERRIDDEN METHODS */ /** * Set a local state field on an awareness document. Calling this method may * trigger rerenders of any subscribed components. * * Equality checks are provided by the abstract `equalityFieldChecks` property. * @param field - The field to set. * @param value - The value to set. */ setLocalStateField(field, value) { if (this.isFieldEqual( field, value, this.getLocalStateField(field) ?? void 0 )) { return; } super.setLocalStateField(field, value); } /** CUSTOM METHODS */ /** * Determine if a field value has changed using the provided equality checks. * @param field - The field to check. * @param value1 - The first value to compare. * @param value2 - The second value to compare. */ isFieldEqual(field, value1, value2) { if (["clientId", "isConnected", "isMe"].includes(field)) { return value1 === value2; } if (field in this.equalityFieldChecks) { const fn = this.equalityFieldChecks[field]; return fn(value1, value2); } throw new Error( `No equality check implemented for awareness state field "${field.toString()}".` ); } /** * Determine if two states are equal by comparing each field using the * provided equality checks. * @param state1 - The first state to compare. * @param state2 - The second state to compare. */ isStateEqual(state1, state2) { return [ .../* @__PURE__ */ new Set([ ...getTypedKeys(state1), ...getTypedKeys(state2) ]) ].every((field) => { const value1 = state1[field]; const value2 = state2[field]; return this.isFieldEqual(field, value1, value2); }); } }; var AwarenessState = class extends AwarenessWithEqualityChecks { /** CUSTOM PROPERTIES */ /** * Whether the setUp method has been called, to avoid running it multiple * times. */ hasSetupRun = false; /** * We keep track of all seen states during the current session for two reasons: * * 1. So that we can represent recently disconnected collaborators in our UI, even * after they have been removed from the awareness document. * 2. So that we can provide debug information about all collaborators seen during * the session. */ disconnectedCollaborators = /* @__PURE__ */ new Set(); seenStates = /* @__PURE__ */ new Map(); /** * Hold a snapshot of the previous awareness state allows us to compare the * state values and avoid unnecessary updates to subscribers. */ previousSnapshot = /* @__PURE__ */ new Map(); stateSubscriptions = []; /** * In some cases, we may want to throttle setting local state fields to avoid * overwhelming the awareness document with rapid updates. At the same time, we * want to ensure that when we read our own state locally, we get the latest * value -- even if it hasn't yet been set on the awareness instance. */ myThrottledState = {}; throttleTimeouts = /* @__PURE__ */ new Map(); /** CUSTOM METHODS */ /** * Set up the awareness state. This method is idempotent and will only run * once. Subclasses should override `onSetUp()` instead of this method to * add their own setup logic. * * This is defined as a readonly arrow function property to prevent * subclasses from overriding it. */ setUp = () => { if (this.hasSetupRun) { return; } this.hasSetupRun = true; this.onSetUp(); this.on( "change", ({ added, removed, updated }) => { [...added, ...updated].forEach((id2) => { this.disconnectedCollaborators.delete(id2); }); removed.forEach((id2) => { this.disconnectedCollaborators.add(id2); setTimeout(() => { this.disconnectedCollaborators.delete(id2); this.updateSubscribers( true /* force update */ ); }, REMOVAL_DELAY_IN_MS); }); this.updateSubscribers(); } ); }; /** * Get the most recent state from the last processed change event. * * @return An array of EnhancedState< State >. */ getCurrentState() { return Array.from(this.previousSnapshot.values()); } /** * Get all seen states in this session to enable debug reporting. */ getSeenStates() { return this.seenStates; } /** * Allow external code to subscribe to awareness state changes. * @param callback - The callback to subscribe to. */ onStateChange(callback) { this.stateSubscriptions.push(callback); return () => { this.stateSubscriptions = this.stateSubscriptions.filter( (cb) => cb !== callback ); }; } /** * Set a local state field on an awareness document with throttle. See caveats * of this.setLocalStateField. * @param field - The field to set. * @param value - The value to set. * @param wait - The wait time in milliseconds. */ setThrottledLocalStateField(field, value, wait) { this.setLocalStateField(field, value); this.throttleTimeouts.set( field, setTimeout(() => { this.throttleTimeouts.delete(field); if (this.myThrottledState[field]) { this.setLocalStateField( field, this.myThrottledState[field] ); delete this.myThrottledState[field]; } }, wait) ); } /** * Set the current collaborator's connection status as awareness state. * @param isConnected - The connection status. */ setConnectionStatus(isConnected) { if (isConnected) { this.disconnectedCollaborators.delete(this.clientID); } else { this.disconnectedCollaborators.add(this.clientID); } this.updateSubscribers( true /* force update */ ); } /** * Update all subscribed listeners with the latest awareness state. * @param forceUpdate - Whether to force an update. */ updateSubscribers(forceUpdate = false) { if (!this.stateSubscriptions.length) { return; } const states = this.getStates(); this.seenStates = new Map([ ...this.seenStates.entries(), ...states.entries() ]); const updatedStates = new Map( [...this.disconnectedCollaborators, ...states.keys()].filter((clientId) => { return Object.keys(this.seenStates.get(clientId) ?? {}).length > 0; }).map((clientId) => { const rawState = this.seenStates.get(clientId); const isConnected = !this.disconnectedCollaborators.has(clientId); const isMe = clientId === this.clientID; const myState = isMe ? this.myThrottledState : {}; const state = { ...rawState, ...myState, clientId, isConnected, isMe }; return [clientId, state]; }) ); if (!forceUpdate) { if (areMapsEqual( this.previousSnapshot, updatedStates, this.isStateEqual.bind(this) )) { return; } } this.previousSnapshot = updatedStates; this.stateSubscriptions.forEach((callback) => { callback(Array.from(updatedStates.values())); }); } }; // packages/core-data/build-module/name.mjs var STORE_NAME = "core"; // packages/core-data/build-module/awareness/base-awareness.mjs var BaseAwarenessState = class extends AwarenessState { onSetUp() { void this.setCurrentCollaboratorInfo(); } /** * Set the current collaborator info in the local state. */ async setCurrentCollaboratorInfo() { const currentUser2 = await (0, import_data2.resolveSelect)(STORE_NAME).getCurrentUser(); const collaboratorInfo = generateCollaboratorInfo(currentUser2); this.setLocalStateField("collaboratorInfo", collaboratorInfo); } }; var baseEqualityFieldChecks = { collaboratorInfo: areCollaboratorInfosEqual }; var BaseAwareness = class extends BaseAwarenessState { equalityFieldChecks = baseEqualityFieldChecks; }; // packages/core-data/build-module/awareness/block-lookup.mjs var import_data3 = __toESM(require_data(), 1); var import_block_editor = __toESM(require_block_editor(), 1); function getBlockPathInYdoc(yType) { const path = []; let current = yType; while (current) { const parentArray = current.parent; if (!parentArray || !(parentArray instanceof yjs_exports.Array)) { return null; } let index = -1; for (let i = 0; i < parentArray.length; i++) { if (parentArray.get(i) === current) { index = i; break; } } if (index === -1) { return null; } path.unshift(index); const grandparent = parentArray.parent; if (grandparent instanceof yjs_exports.Map && grandparent.get("clientId") !== void 0) { current = grandparent; } else { break; } } return path; } function resolveBlockClientIdByPath(path) { if (path.length === 0) { return null; } const { getBlocks } = (0, import_data3.select)(import_block_editor.store); const postContentBlocks = getPostContentBlocks(getBlocks(), getBlocks); let blocks = postContentBlocks; for (let i = 0; i < path.length; i++) { const block = blocks[path[i]]; if (!block) { return null; } if (i === path.length - 1) { return block.clientId; } blocks = block.innerBlocks; } return null; } function getPostContentBlocks(rootBlocks, getBlocks) { const postContentBlock = findBlockByName(rootBlocks, "core/post-content"); if (postContentBlock) { return getBlocks(postContentBlock.clientId); } return rootBlocks; } function findBlockByName(blocks, name) { for (const block of blocks) { if (block.name === name) { return block; } if (block.innerBlocks?.length) { const found = findBlockByName(block.innerBlocks, name); if (found) { return found; } } } return null; } // packages/core-data/build-module/utils/crdt-utils.mjs var import_rich_text = __toESM(require_rich_text(), 1); // packages/core-data/build-module/lock-unlock.mjs var import_private_apis3 = __toESM(require_private_apis(), 1); var { lock: lock2, unlock: unlock2 } = (0, import_private_apis3.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", "@wordpress/core-data" ); // packages/core-data/build-module/sync.mjs var { ConnectionErrorCode: ConnectionErrorCode2, createSyncManager: createSyncManager2, Delta: Delta2, CRDT_DOC_META_PERSISTENCE_KEY: CRDT_DOC_META_PERSISTENCE_KEY2, CRDT_RECORD_MAP_KEY: CRDT_RECORD_MAP_KEY2, LOCAL_EDITOR_ORIGIN: LOCAL_EDITOR_ORIGIN2, LOCAL_UNDO_IGNORED_ORIGIN: LOCAL_UNDO_IGNORED_ORIGIN2, retrySyncConnection } = unlock2(privateApis); var syncManager; function getSyncManager() { if (syncManager) { return syncManager; } syncManager = createSyncManager2(); return syncManager; } // packages/core-data/build-module/utils/crdt-utils.mjs function getRootMap(doc2, key) { return doc2.getMap(key); } function createYMap(partial = {}) { return new yjs_exports.Map(Object.entries(partial)); } function isYMap(value) { return value instanceof yjs_exports.Map; } function findBlockByClientIdInDoc(blockId, ydoc) { const ymap = getRootMap(ydoc, CRDT_RECORD_MAP_KEY2); const blocks = ymap.get("blocks"); if (!(blocks instanceof yjs_exports.Array)) { return null; } return findBlockByClientIdInBlocks(blockId, blocks); } var MARKER_START = 57344; function pickMarker(text2) { const tryCount = 16; for (let code = MARKER_START; code < MARKER_START + tryCount; code++) { const candidate = String.fromCharCode(code); if (!text2.includes(candidate)) { return candidate; } } return null; } function htmlIndexToRichTextOffset(html, htmlIndex) { if (!html.includes("<") && !html.includes("&")) { return htmlIndex; } const marker = pickMarker(html); if (!marker) { return htmlIndex; } const withMarker = html.slice(0, htmlIndex) + marker + html.slice(htmlIndex); const value = (0, import_rich_text.create)({ html: withMarker }); const markerPos = value.text.indexOf(marker); return markerPos === -1 ? htmlIndex : markerPos; } function richTextOffsetToHtmlIndex(html, richTextOffset) { if (!html.includes("<") && !html.includes("&")) { return richTextOffset; } const marker = pickMarker(html); if (!marker) { return richTextOffset; } const value = (0, import_rich_text.create)({ html }); const markerValue = (0, import_rich_text.create)({ text: marker }); if (value.formats[richTextOffset]) { markerValue.formats[0] = value.formats[richTextOffset]; } const withMarker = (0, import_rich_text.insert)( value, markerValue, richTextOffset, richTextOffset ); const htmlWithMarker = (0, import_rich_text.toHTMLString)({ value: withMarker }); const markerIndex = htmlWithMarker.indexOf(marker); return markerIndex === -1 ? richTextOffset : markerIndex; } function findBlockByClientIdInBlocks(blockId, blocks) { for (const block of blocks) { if (block.get("clientId") === blockId) { return block; } const innerBlocks = block.get("innerBlocks"); if (innerBlocks && innerBlocks.length > 0) { const innerBlock = findBlockByClientIdInBlocks( blockId, innerBlocks ); if (innerBlock) { return innerBlock; } } } return null; } // packages/core-data/build-module/utils/crdt-user-selections.mjs var import_data4 = __toESM(require_data(), 1); var import_block_editor2 = __toESM(require_block_editor(), 1); var SelectionType = /* @__PURE__ */ ((SelectionType2) => { SelectionType2["None"] = "none"; SelectionType2["Cursor"] = "cursor"; SelectionType2["SelectionInOneBlock"] = "selection-in-one-block"; SelectionType2["SelectionInMultipleBlocks"] = "selection-in-multiple-blocks"; SelectionType2["WholeBlock"] = "whole-block"; return SelectionType2; })(SelectionType || {}); var SelectionDirection = /* @__PURE__ */ ((SelectionDirection2) => { SelectionDirection2["Forward"] = "f"; SelectionDirection2["Backward"] = "b"; return SelectionDirection2; })(SelectionDirection || {}); function getSelectionState(selectionStart, selectionEnd, yDoc, options) { const { selectionDirection } = options ?? {}; const ymap = getRootMap(yDoc, CRDT_RECORD_MAP_KEY2); const yBlocks = ymap.get("blocks"); const isSelectionEmpty = Object.keys(selectionStart).length === 0; const noSelection = { type: "none" /* None */ }; if (isSelectionEmpty || !yBlocks) { return noSelection; } const isSelectionInOneBlock = selectionStart.clientId === selectionEnd.clientId; const isCursorOnly = isSelectionInOneBlock && selectionStart.offset === selectionEnd.offset; const isSelectionAWholeBlock = isSelectionInOneBlock && selectionStart.offset === void 0 && selectionEnd.offset === void 0; if (isSelectionAWholeBlock) { const path = getBlockPathForLocalClientId(selectionStart.clientId); const blockPosition = path ? createRelativePositionForBlockPath(path, yBlocks) : null; if (!blockPosition) { return noSelection; } return { type: "whole-block", blockPosition }; } else if (isCursorOnly) { const cursorPosition = getCursorPosition(selectionStart, yBlocks); if (!cursorPosition) { return noSelection; } return { type: "cursor", cursorPosition }; } else if (isSelectionInOneBlock) { const cursorStartPosition2 = getCursorPosition( selectionStart, yBlocks ); const cursorEndPosition2 = getCursorPosition(selectionEnd, yBlocks); if (!cursorStartPosition2 || !cursorEndPosition2) { return noSelection; } return { type: "selection-in-one-block", cursorStartPosition: cursorStartPosition2, cursorEndPosition: cursorEndPosition2, selectionDirection }; } const cursorStartPosition = getCursorPosition(selectionStart, yBlocks); const cursorEndPosition = getCursorPosition(selectionEnd, yBlocks); if (!cursorStartPosition || !cursorEndPosition) { return noSelection; } return { type: "selection-in-multiple-blocks", cursorStartPosition, cursorEndPosition, selectionDirection }; } function getCursorPosition(selection, blocks) { const path = getBlockPathForLocalClientId(selection.clientId); const block = path ? findBlockByPath(path, blocks) : null; if (!block || !selection.attributeKey || void 0 === selection.offset) { return null; } const attributes = block.get("attributes"); const currentYText = attributes?.get(selection.attributeKey); if (!(currentYText instanceof yjs_exports.Text)) { return null; } const relativePosition = yjs_exports.createRelativePositionFromTypeIndex( currentYText, richTextOffsetToHtmlIndex(currentYText.toString(), selection.offset) ); return { relativePosition, absoluteOffset: selection.offset }; } function getBlockPathForLocalClientId(clientId) { const { getBlockIndex, getBlockRootClientId, getBlockName } = (0, import_data4.select)(import_block_editor2.store); const path = []; let current = clientId; while (current) { const index = getBlockIndex(current); if (index === -1) { return null; } path.unshift(index); const parent = getBlockRootClientId(current); if (!parent) { break; } const parentName = getBlockName(parent); if (parentName === "core/post-content") { break; } current = parent; } return path.length > 0 ? path : null; } function findBlockByPath(path, blocks) { let currentBlocks = blocks; for (let i = 0; i < path.length; i++) { if (path[i] >= currentBlocks.length) { return null; } const block = currentBlocks.get(path[i]); if (!block) { return null; } if (i === path.length - 1) { return block; } currentBlocks = block.get("innerBlocks") ?? new yjs_exports.Array(); } return null; } function createRelativePositionForBlockPath(path, blocks) { let currentBlocks = blocks; for (let i = 0; i < path.length; i++) { if (path[i] >= currentBlocks.length) { return null; } if (i === path.length - 1) { return yjs_exports.createRelativePositionFromTypeIndex( currentBlocks, path[i] ); } const block = currentBlocks.get(path[i]); currentBlocks = block?.get("innerBlocks") ?? new yjs_exports.Array(); } return null; } function areSelectionsStatesEqual(selection1, selection2) { if (selection1.type !== selection2.type) { return false; } switch (selection1.type) { case "none": return true; case "cursor": return areCursorPositionsEqual( selection1.cursorPosition, selection2.cursorPosition ); case "selection-in-one-block": return areCursorPositionsEqual( selection1.cursorStartPosition, selection2.cursorStartPosition ) && areCursorPositionsEqual( selection1.cursorEndPosition, selection2.cursorEndPosition ) && selection1.selectionDirection === selection2.selectionDirection; case "selection-in-multiple-blocks": return areCursorPositionsEqual( selection1.cursorStartPosition, selection2.cursorStartPosition ) && areCursorPositionsEqual( selection1.cursorEndPosition, selection2.cursorEndPosition ) && selection1.selectionDirection === selection2.selectionDirection; case "whole-block": return yjs_exports.compareRelativePositions( selection1.blockPosition, selection2.blockPosition ); default: return false; } } function areCursorPositionsEqual(cursorPosition1, cursorPosition2) { const isRelativePositionEqual = yjs_exports.compareRelativePositions( cursorPosition1.relativePosition, cursorPosition2.relativePosition ); const isAbsoluteOffsetEqual = cursorPosition1.absoluteOffset === cursorPosition2.absoluteOffset; return isRelativePositionEqual && isAbsoluteOffsetEqual; } // packages/core-data/build-module/awareness/post-editor-awareness.mjs var PostEditorAwareness = class extends BaseAwarenessState { constructor(doc2, kind, name, postId) { super(doc2); this.kind = kind; this.name = name; this.postId = postId; } equalityFieldChecks = { ...baseEqualityFieldChecks, editorState: this.areEditorStatesEqual }; onSetUp() { super.onSetUp(); this.subscribeToCollaboratorSelectionChanges(); } /** * Subscribe to collaborator selection changes and update the selection state. */ subscribeToCollaboratorSelectionChanges() { const { getSelectionStart, getSelectionEnd, getSelectedBlocksInitialCaretPosition } = (0, import_data5.select)(import_block_editor3.store); let selectionStart = getSelectionStart(); let selectionEnd = getSelectionEnd(); let localCursorTimeout = null; let selectionBeforeDebounce = null; (0, import_data5.subscribe)(() => { const newSelectionStart = getSelectionStart(); const newSelectionEnd = getSelectionEnd(); if (newSelectionStart === selectionStart && newSelectionEnd === selectionEnd) { return; } if (!selectionBeforeDebounce) { selectionBeforeDebounce = { start: selectionStart, end: selectionEnd }; } selectionStart = newSelectionStart; selectionEnd = newSelectionEnd; const initialPosition = getSelectedBlocksInitialCaretPosition(); void this.updateSelectionInEntityRecord( selectionStart, selectionEnd, initialPosition ); if (localCursorTimeout) { clearTimeout(localCursorTimeout); } localCursorTimeout = setTimeout(() => { const selectionStateOptions = {}; if (selectionBeforeDebounce) { selectionStateOptions.selectionDirection = detectSelectionDirection( selectionBeforeDebounce.start, selectionBeforeDebounce.end, selectionStart, selectionEnd ); selectionBeforeDebounce = null; } const selectionState = getSelectionState( selectionStart, selectionEnd, this.doc, selectionStateOptions ); this.setThrottledLocalStateField( "editorState", { selection: selectionState }, AWARENESS_CURSOR_UPDATE_THROTTLE_IN_MS ); }, LOCAL_CURSOR_UPDATE_DEBOUNCE_IN_MS); }); } /** * Update the entity record with the current collaborator's selection. * * @param selectionStart - The start position of the selection. * @param selectionEnd - The end position of the selection. * @param initialPosition - The initial position of the selection. */ async updateSelectionInEntityRecord(selectionStart, selectionEnd, initialPosition) { const edits = { selection: { selectionStart, selectionEnd, initialPosition } }; const options = { undoIgnore: true }; (0, import_data5.dispatch)(STORE_NAME).editEntityRecord( this.kind, this.name, this.postId, edits, options ); } /** * Check if two editor states are equal. * * @param state1 - The first editor state. * @param state2 - The second editor state. * @return True if the editor states are equal, false otherwise. */ areEditorStatesEqual(state1, state2) { if (!state1 || !state2) { return state1 === state2; } if (!state1.selection || !state2.selection) { return state1.selection === state2.selection; } return areSelectionsStatesEqual(state1.selection, state2.selection); } /** * Resolve a selection state to a text index and block client ID. * * For text-based selections, navigates up from the resolved Y.Text via * AbstractType.parent to find the containing block, then resolves the * local clientId via the block's tree path. * For WholeBlock selections, resolves the block's relative position and * then finds the local clientId via tree path. * * Tree-path resolution is used instead of reading the clientId directly * from the Yjs block because the local block-editor store may use different * clientIds (e.g. in "Show Template" mode where blocks are cloned). * * @param selection - The selection state. * @return The rich-text offset and block client ID, or nulls if not resolvable. */ convertSelectionStateToAbsolute(selection) { if (selection.type === SelectionType.None) { return { richTextOffset: null, localClientId: null }; } if (selection.type === SelectionType.WholeBlock) { const absolutePos = yjs_exports.createAbsolutePositionFromRelativePosition( selection.blockPosition, this.doc ); let localClientId2 = null; if (absolutePos && absolutePos.type instanceof yjs_exports.Array) { const parentArray = absolutePos.type; const block = parentArray.get(absolutePos.index); if (block instanceof yjs_exports.Map) { const path2 = getBlockPathInYdoc(block); localClientId2 = path2 ? resolveBlockClientIdByPath(path2) : null; } } return { richTextOffset: null, localClientId: localClientId2 }; } const cursorPos = "cursorPosition" in selection ? selection.cursorPosition : selection.cursorStartPosition; const absolutePosition = yjs_exports.createAbsolutePositionFromRelativePosition( cursorPos.relativePosition, this.doc ); if (!absolutePosition) { return { richTextOffset: null, localClientId: null }; } const yType = absolutePosition.type.parent?.parent; const path = yType instanceof yjs_exports.Map ? getBlockPathInYdoc(yType) : null; const localClientId = path ? resolveBlockClientIdByPath(path) : null; return { richTextOffset: htmlIndexToRichTextOffset( absolutePosition.type.toString(), absolutePosition.index ), localClientId }; } /** * Type guard to check if a struct is a Y.Item (not Y.GC) * @param struct - The struct to check. * @return True if the struct is a Y.Item, false otherwise. */ isYItem(struct) { return "content" in struct; } /** * Get data for debugging, using the awareness state. * * @return {YDocDebugData} The debug data. */ getDebugData() { const ydoc = this.doc; const docData = Object.fromEntries( Array.from(ydoc.share, ([key, value]) => [ key, value.toJSON() ]) ); const collaboratorMapData = new Map( Array.from(this.getSeenStates().entries()).map( ([clientId, collaboratorState]) => [ String(clientId), { name: collaboratorState.collaboratorInfo.name, wpUserId: collaboratorState.collaboratorInfo.id } ] ) ); const serializableClientItems = {}; ydoc.store.clients.forEach((structs, clientId) => { const items2 = structs.filter(this.isYItem); serializableClientItems[clientId] = items2.map((item) => { const { left, right, ...rest } = item; return { ...rest, left: left ? { id: left.id, length: left.length, origin: left.origin, content: left.content } : null, right: right ? { id: right.id, length: right.length, origin: right.origin, content: right.content } : null }; }); }); return { doc: docData, clients: serializableClientItems, collaboratorMap: Object.fromEntries(collaboratorMapData) }; } }; function detectSelectionDirection(prevStart, prevEnd, newStart, newEnd) { const startMoved = !areBlockSelectionsEqual(prevStart, newStart); const endMoved = !areBlockSelectionsEqual(prevEnd, newEnd); if (startMoved && !endMoved) { return SelectionDirection.Backward; } return SelectionDirection.Forward; } function areBlockSelectionsEqual(a, b) { return a.clientId === b.clientId && a.attributeKey === b.attributeKey && a.offset === b.offset; } // packages/core-data/build-module/utils/crdt.mjs var import_es65 = __toESM(require_es6(), 1); var import_blocks3 = __toESM(require_blocks(), 1); // node_modules/uuid/dist/esm-browser/rng.js var getRandomValues2; var rnds8 = new Uint8Array(16); function rng() { if (!getRandomValues2) { getRandomValues2 = typeof crypto !== "undefined" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto); if (!getRandomValues2) { throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported"); } } return getRandomValues2(rnds8); } // node_modules/uuid/dist/esm-browser/stringify.js var byteToHex = []; for (let i = 0; i < 256; ++i) { byteToHex.push((i + 256).toString(16).slice(1)); } function unsafeStringify(arr, offset = 0) { return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]; } // node_modules/uuid/dist/esm-browser/native.js var randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto); var native_default = { randomUUID }; // node_modules/uuid/dist/esm-browser/v4.js function v4(options, buf, offset) { if (native_default.randomUUID && !buf && !options) { return native_default.randomUUID(); } options = options || {}; const rnds = options.random || (options.rng || rng)(); rnds[6] = rnds[6] & 15 | 64; rnds[8] = rnds[8] & 63 | 128; if (buf) { offset = offset || 0; for (let i = 0; i < 16; ++i) { buf[offset + i] = rnds[i]; } return buf; } return unsafeStringify(rnds); } var v4_default = v4; // packages/core-data/build-module/utils/crdt-blocks.mjs var import_es64 = __toESM(require_es6(), 1); var import_blocks = __toESM(require_blocks(), 1); var import_rich_text3 = __toESM(require_rich_text(), 1); // packages/core-data/build-module/utils/crdt-text.mjs var import_rich_text2 = __toESM(require_rich_text(), 1); var RICH_TEXT_CACHE_MAX_SIZE = 500; function createRichTextDataCache(maxSize) { const cache3 = /* @__PURE__ */ new Map(); return function(value) { const cached = cache3.get(value); if (cached) { return cached; } const result = import_rich_text2.RichTextData.fromHTMLString(value); if (cache3.size >= maxSize) { cache3.delete(cache3.keys().next().value); } cache3.set(value, result); return result; }; } var getCachedRichTextData = createRichTextDataCache( RICH_TEXT_CACHE_MAX_SIZE ); // packages/core-data/build-module/utils/crdt-blocks.mjs var serializableBlocksCache = /* @__PURE__ */ new WeakMap(); function serializeAttributeValue(value) { if (value instanceof import_rich_text3.RichTextData) { return value.valueOf(); } if (Array.isArray(value)) { return value.map(serializeAttributeValue); } if (value && typeof value === "object") { const result = {}; for (const [k, v] of Object.entries(value)) { result[k] = serializeAttributeValue(v); } return result; } return value; } function makeBlockAttributesSerializable(blockName, attributes) { const newAttributes = { ...attributes }; for (const [key, value] of Object.entries(attributes)) { if (isLocalAttribute(blockName, key)) { delete newAttributes[key]; continue; } newAttributes[key] = serializeAttributeValue(value); } return newAttributes; } function makeBlocksSerializable(blocks) { return blocks.map((block) => { const { name, innerBlocks, attributes, ...rest } = block; delete rest.validationIssues; return { ...rest, name, attributes: makeBlockAttributesSerializable(name, attributes), innerBlocks: makeBlocksSerializable(innerBlocks) }; }); } function deserializeAttributeValue(schema, value) { if (schema?.type === "rich-text" && typeof value === "string") { return getCachedRichTextData(value); } if (Array.isArray(value)) { return value.map( (item) => deserializeAttributeValue(schema, item) ); } if (value && typeof value === "object") { const result = {}; for (const [key, innerValue] of Object.entries( value )) { result[key] = deserializeAttributeValue( schema?.query?.[key], innerValue ); } return result; } return value; } function deserializeBlockAttributes(blocks) { return blocks.map((block) => { const { name, innerBlocks, attributes, ...rest } = block; const newAttributes = { ...attributes }; for (const [key, value] of Object.entries(attributes)) { const schema = getBlockAttributeType(name, key); if (schema) { newAttributes[key] = deserializeAttributeValue( schema, value ); } } return { ...rest, name, attributes: newAttributes, innerBlocks: deserializeBlockAttributes(innerBlocks ?? []) }; }); } function areBlocksEqual(gblock, yblock) { const yblockAsJson = yblock.toJSON(); const overwrites = { innerBlocks: null, clientId: null }; const res = (0, import_es64.default)( Object.assign({}, gblock, overwrites), Object.assign({}, yblockAsJson, overwrites) ); const inners = gblock.innerBlocks || []; const yinners = yblock.get("innerBlocks"); return res && inners.length === yinners?.length && inners.every( (block, i) => areBlocksEqual(block, yinners.get(i)) ); } function createNewYAttributeMap(blockName, attributes) { return new yjs_exports.Map( Object.entries(attributes).map( ([attributeName, attributeValue]) => { return [ attributeName, createNewYAttributeValue( blockName, attributeName, attributeValue ) ]; } ) ); } function createNewYAttributeValue(blockName, attributeName, attributeValue) { const isRichText = isRichTextAttribute(blockName, attributeName); if (isRichText) { return new yjs_exports.Text(attributeValue?.toString() ?? ""); } return attributeValue; } function createNewYBlock(block) { return createYMap( Object.fromEntries( Object.entries(block).map(([key, value]) => { switch (key) { case "attributes": { return [ key, createNewYAttributeMap(block.name, value) ]; } case "innerBlocks": { const innerBlocks = new yjs_exports.Array(); if (!Array.isArray(value)) { return [key, innerBlocks]; } innerBlocks.insert( 0, value.map( (innerBlock) => createNewYBlock(innerBlock) ) ); return [key, innerBlocks]; } default: return [key, value]; } }) ) ); } function mergeCrdtBlocks(yblocks, incomingBlocks, cursorPosition) { if (!serializableBlocksCache.has(incomingBlocks)) { serializableBlocksCache.set( incomingBlocks, makeBlocksSerializable(incomingBlocks) ); } const blocksToSync = serializableBlocksCache.get(incomingBlocks) ?? []; const numOfCommonEntries = Math.min( blocksToSync.length ?? 0, yblocks.length ); let left = 0; let right = 0; for (; left < numOfCommonEntries && areBlocksEqual(blocksToSync[left], yblocks.get(left)); left++) { } for (; right < numOfCommonEntries - left && areBlocksEqual( blocksToSync[blocksToSync.length - right - 1], yblocks.get(yblocks.length - right - 1) ); right++) { } const numOfUpdatesNeeded = numOfCommonEntries - left - right; const numOfInsertionsNeeded = Math.max( 0, blocksToSync.length - yblocks.length ); const numOfDeletionsNeeded = Math.max( 0, yblocks.length - blocksToSync.length ); for (let i = 0; i < numOfUpdatesNeeded; i++, left++) { const block = blocksToSync[left]; const yblock = yblocks.get(left); Object.entries(block).forEach(([key, value]) => { switch (key) { case "attributes": { const currentAttributes = yblock.get(key); if (!currentAttributes) { yblock.set( key, createNewYAttributeMap(block.name, value) ); break; } Object.entries(value).forEach( ([attributeName, attributeValue]) => { const currentAttribute = currentAttributes?.get(attributeName); const isExpectedType = isExpectedAttributeType( block.name, attributeName, currentAttribute ); const isAttributeChanged = !isExpectedType || !(0, import_es64.default)( currentAttribute, attributeValue ); if (isAttributeChanged) { updateYBlockAttribute( block.name, attributeName, attributeValue, currentAttributes, cursorPosition ); } } ); currentAttributes.forEach( (_attrValue, attrName) => { if (!value.hasOwnProperty(attrName)) { currentAttributes.delete(attrName); } } ); break; } case "innerBlocks": { let yInnerBlocks = yblock.get(key); if (!(yInnerBlocks instanceof yjs_exports.Array)) { yInnerBlocks = new yjs_exports.Array(); yblock.set(key, yInnerBlocks); } mergeCrdtBlocks( yInnerBlocks, value ?? [], cursorPosition ); break; } default: if (!(0, import_es64.default)(block[key], yblock.get(key))) { yblock.set(key, value); } } }); yblock.forEach((_v, k) => { if (!block.hasOwnProperty(k)) { yblock.delete(k); } }); } yblocks.delete(left, numOfDeletionsNeeded); for (let i = 0; i < numOfInsertionsNeeded; i++, left++) { const newBlock = [createNewYBlock(blocksToSync[left])]; yblocks.insert(left, newBlock); } const knownClientIds = /* @__PURE__ */ new Set(); for (let j = 0; j < yblocks.length; j++) { const yblock = yblocks.get(j); let clientId = yblock.get("clientId"); if (!clientId) { continue; } if (knownClientIds.has(clientId)) { clientId = v4_default(); yblock.set("clientId", clientId); } knownClientIds.add(clientId); } } function updateYBlockAttribute(blockName, attributeName, attributeValue, currentAttributes, cursorPosition) { const isRichText = isRichTextAttribute(blockName, attributeName); const currentAttribute = currentAttributes.get(attributeName); if (isRichText && "string" === typeof attributeValue && currentAttributes.has(attributeName) && currentAttribute instanceof yjs_exports.Text) { mergeRichTextUpdate(currentAttribute, attributeValue, cursorPosition); } else { currentAttributes.set( attributeName, createNewYAttributeValue(blockName, attributeName, attributeValue) ); } } var cachedBlockAttributeTypes; function getBlockAttributeType(blockName, attributeName) { if (!cachedBlockAttributeTypes) { cachedBlockAttributeTypes = /* @__PURE__ */ new Map(); for (const blockType of (0, import_blocks.getBlockTypes)()) { cachedBlockAttributeTypes.set( blockType.name, new Map( Object.entries(blockType.attributes ?? {}).map( ([name, definition]) => { const { role, type, query } = definition; return [name, { role, type, query }]; } ) ) ); } } return cachedBlockAttributeTypes.get(blockName)?.get(attributeName); } function isExpectedAttributeType(blockName, attributeName, attributeValue) { const expectedAttributeType = getBlockAttributeType( blockName, attributeName )?.type; if (expectedAttributeType === "rich-text") { return attributeValue instanceof yjs_exports.Text; } if (expectedAttributeType === "string") { return typeof attributeValue === "string"; } return true; } function isLocalAttribute(blockName, attributeName) { return "local" === getBlockAttributeType(blockName, attributeName)?.role; } function isRichTextAttribute(blockName, attributeName) { return "rich-text" === getBlockAttributeType(blockName, attributeName)?.type; } var localDoc; function mergeRichTextUpdate(blockYText, updatedValue, cursorPosition = null) { if (!localDoc) { localDoc = new yjs_exports.Doc(); } const localYText = localDoc.getText("temporary-text"); localYText.delete(0, localYText.length); localYText.insert(0, updatedValue); const currentValueAsDelta = new Delta2(blockYText.toDelta()); const updatedValueAsDelta = new Delta2(localYText.toDelta()); const deltaDiff = currentValueAsDelta.diffWithCursor( updatedValueAsDelta, cursorPosition ); blockYText.applyDelta(deltaDiff.ops); } // packages/core-data/build-module/utils/crdt-selection.mjs var import_data6 = __toESM(require_data(), 1); var import_block_editor4 = __toESM(require_block_editor(), 1); var import_blocks2 = __toESM(require_blocks(), 1); // packages/core-data/build-module/utils/block-selection-history.mjs var SELECTION_HISTORY_DEFAULT_SIZE = 5; var YSelectionType = /* @__PURE__ */ ((YSelectionType2) => { YSelectionType2["RelativeSelection"] = "RelativeSelection"; YSelectionType2["BlockSelection"] = "BlockSelection"; return YSelectionType2; })(YSelectionType || {}); function createBlockSelectionHistory(ydoc, historySize = SELECTION_HISTORY_DEFAULT_SIZE) { let history = []; const getSelectionHistory2 = () => { return history.slice(0); }; const updateSelection = (newSelection) => { if (!newSelection?.selectionStart?.clientId || !newSelection?.selectionEnd?.clientId) { return; } const { selectionStart, selectionEnd } = newSelection; const start = convertWPBlockSelectionToSelection( selectionStart, ydoc ); const end = convertWPBlockSelectionToSelection(selectionEnd, ydoc); addToHistory({ start, end }); }; const addToHistory = (yFullSelection) => { const startClientId = yFullSelection.start.clientId; const endClientId = yFullSelection.end.clientId; history = history.filter((entry) => { const isSameBlockCombination = entry.start.clientId === startClientId && entry.end.clientId === endClientId; return !isSameBlockCombination; }); history.unshift(yFullSelection); if (history.length > historySize + 1) { history = history.slice(0, historySize + 1); } }; return { getSelectionHistory: getSelectionHistory2, updateSelection }; } function convertWPBlockSelectionToSelection(selection, ydoc) { const clientId = selection.clientId; const block = findBlockByClientIdInDoc(clientId, ydoc); const attributes = block?.get("attributes"); const attributeKey = selection.attributeKey; const changedYText = attributeKey ? attributes?.get(attributeKey) : void 0; const isYText = changedYText instanceof yjs_exports.Text; const isFullyDefinedSelection = attributeKey && clientId; if (!isYText || !isFullyDefinedSelection) { return { type: "BlockSelection", clientId }; } const offset = selection.offset ?? 0; const relativePosition = yjs_exports.createRelativePositionFromTypeIndex( changedYText, richTextOffsetToHtmlIndex(changedYText.toString(), offset) ); return { type: "RelativeSelection", attributeKey, relativePosition, clientId, offset }; } // packages/core-data/build-module/utils/crdt-selection.mjs var selectionHistoryMap = /* @__PURE__ */ new WeakMap(); function getBlockSelectionHistory(ydoc) { let history = selectionHistoryMap.get(ydoc); if (!history) { history = createBlockSelectionHistory(ydoc); selectionHistoryMap.set(ydoc, history); } return history; } function getSelectionHistory(ydoc) { return getBlockSelectionHistory(ydoc).getSelectionHistory(); } function updateSelectionHistory(ydoc, wpSelection) { return getBlockSelectionHistory(ydoc).updateSelection(wpSelection); } function convertYSelectionToBlockSelection(ySelection, ydoc) { if (ySelection.type === YSelectionType.RelativeSelection) { const { relativePosition, attributeKey, clientId } = ySelection; const absolutePosition = yjs_exports.createAbsolutePositionFromRelativePosition( relativePosition, ydoc ); if (absolutePosition) { return { clientId, attributeKey, offset: htmlIndexToRichTextOffset( absolutePosition.type.toString(), absolutePosition.index ) }; } } else if (ySelection.type === YSelectionType.BlockSelection) { return { clientId: ySelection.clientId, attributeKey: void 0, offset: void 0 }; } return null; } function convertYFullSelectionToWPSelection(yFullSelection, ydoc) { const { start, end } = yFullSelection; const startBlock = findBlockByClientIdInDoc(start.clientId, ydoc); const endBlock = findBlockByClientIdInDoc(end.clientId, ydoc); if (!startBlock || !endBlock) { return null; } const startBlockSelection = convertYSelectionToBlockSelection( start, ydoc ); const endBlockSelection = convertYSelectionToBlockSelection(end, ydoc); if (startBlockSelection === null || endBlockSelection === null) { return null; } return { selectionStart: startBlockSelection, selectionEnd: endBlockSelection }; } function findSelectionFromHistory(ydoc, selectionHistory) { for (const positionToTry of selectionHistory) { const result = convertYFullSelectionToWPSelection( positionToTry, ydoc ); if (result !== null) { return result; } } return null; } function restoreSelection(selectionHistory, ydoc) { const selectionToRestore = findSelectionFromHistory( ydoc, selectionHistory ); if (selectionToRestore === null) { return; } const { getBlock } = (0, import_data6.select)(import_block_editor4.store); const { resetSelection } = (0, import_data6.dispatch)(import_block_editor4.store); const { selectionStart, selectionEnd } = selectionToRestore; const isSelectionInSameBlock = selectionStart.clientId === selectionEnd.clientId; if (isSelectionInSameBlock) { const block = getBlock(selectionStart.clientId); const isBlockEmpty = block && (0, import_blocks2.isUnmodifiedBlock)(block); const isBeginningOfEmptyBlock = 0 === selectionStart.offset && 0 === selectionEnd.offset && isBlockEmpty && !selectionStart.attributeKey && !selectionEnd.attributeKey; if (isBeginningOfEmptyBlock) { const selectionStartWithoutOffset = { clientId: selectionStart.clientId }; const selectionEndWithoutOffset = { clientId: selectionEnd.clientId }; resetSelection( selectionStartWithoutOffset, selectionEndWithoutOffset, 0 ); } else { resetSelection(selectionStart, selectionEnd, 0); } } else { resetSelection(selectionEnd, selectionEnd, 0); } } function getShiftedSelection(ydoc, selectionHistory) { if (selectionHistory.length === 0) { return null; } const { start, end } = selectionHistory[0]; if (start.type === YSelectionType.BlockSelection || end.type === YSelectionType.BlockSelection) { return null; } const selectionStart = convertYSelectionToBlockSelection(start, ydoc); const selectionEnd = convertYSelectionToBlockSelection(end, ydoc); if (!selectionStart || !selectionEnd) { return null; } const startShifted = selectionStart.offset !== start.offset; const endShifted = selectionEnd.offset !== end.offset; if (!startShifted && !endShifted) { return null; } return { selectionStart, selectionEnd }; } // packages/core-data/build-module/utils/crdt.mjs var POST_META_KEY_FOR_CRDT_DOC_PERSISTENCE = "_crdt_document"; var disallowedPostMetaKeys = /* @__PURE__ */ new Set([ POST_META_KEY_FOR_CRDT_DOC_PERSISTENCE ]); function defaultApplyChangesToCRDTDoc(ydoc, changes) { const ymap = getRootMap(ydoc, CRDT_RECORD_MAP_KEY2); Object.entries(changes).forEach(([key, newValue]) => { if ("function" === typeof newValue) { return; } switch (key) { // Add support for additional data types here. default: { const currentValue = ymap.get(key); updateMapValue(ymap, key, currentValue, newValue); } } }); } function applyPostChangesToCRDTDoc(ydoc, changes, syncedProperties) { const ymap = getRootMap(ydoc, CRDT_RECORD_MAP_KEY2); Object.keys(changes).forEach((key) => { if (!syncedProperties.has(key)) { return; } const newValue = changes[key]; if ("function" === typeof newValue) { return; } switch (key) { case "blocks": { if (!newValue) { ymap.set(key, void 0); break; } let currentBlocks = ymap.get(key); if (!(currentBlocks instanceof yjs_exports.Array)) { currentBlocks = new yjs_exports.Array(); ymap.set(key, currentBlocks); } const cursorPosition = changes.selection?.selectionStart?.offset ?? null; mergeCrdtBlocks(currentBlocks, newValue, cursorPosition); break; } case "content": case "excerpt": case "title": { const currentValue = ymap.get(key); let rawValue = getRawValue(newValue); if (key === "title" && !currentValue?.toString() && "Auto Draft" === rawValue) { rawValue = ""; } if (currentValue instanceof yjs_exports.Text) { mergeRichTextUpdate(currentValue, rawValue ?? ""); } else { const newYText = new yjs_exports.Text(rawValue ?? ""); ymap.set(key, newYText); } break; } // "Meta" is overloaded term; here, it refers to post meta. case "meta": { let metaMap = ymap.get("meta"); if (!isYMap(metaMap)) { metaMap = createYMap(); ymap.set("meta", metaMap); } Object.entries(newValue ?? {}).forEach( ([metaKey, metaValue]) => { if (disallowedPostMetaKeys.has(metaKey)) { return; } updateMapValue( metaMap, metaKey, metaMap.get(metaKey), // current value in CRDT metaValue // new value from changes ); } ); break; } case "slug": { if (!newValue) { break; } const currentValue = ymap.get(key); updateMapValue(ymap, key, currentValue, newValue); break; } // Add support for additional properties here. default: { const currentValue = ymap.get(key); updateMapValue(ymap, key, currentValue, newValue); } } }); if (changes.selection) { const selection = changes.selection; setTimeout(() => { updateSelectionHistory(ydoc, selection); }, 0); } } function defaultGetChangesFromCRDTDoc(crdtDoc) { return getRootMap(crdtDoc, CRDT_RECORD_MAP_KEY2).toJSON(); } function getPostChangesFromCRDTDoc(ydoc, editedRecord, syncedProperties) { const ymap = getRootMap(ydoc, CRDT_RECORD_MAP_KEY2); let allowedMetaChanges = {}; const changes = Object.fromEntries( Object.entries(ymap.toJSON()).filter(([key, newValue]) => { if (!syncedProperties.has(key)) { return false; } const currentValue = editedRecord[key]; switch (key) { case "blocks": { if (ydoc.meta?.get(CRDT_DOC_META_PERSISTENCE_KEY2) && editedRecord.content) { const blocksJson = ymap.get("blocks")?.toJSON() ?? []; return (0, import_blocks3.__unstableSerializeAndClean)(blocksJson).trim() !== getRawValue(editedRecord.content); } return true; } case "date": { const currentDateIsFloating = null === currentValue || editedRecord.modified === currentValue; if (currentDateIsFloating) { return false; } return haveValuesChanged(currentValue, newValue); } case "meta": { const currentMeta = currentValue ?? {}; allowedMetaChanges = Object.fromEntries( Object.entries(newValue ?? {}).filter( ([metaKey]) => { if (disallowedPostMetaKeys.has(metaKey)) { return false; } return metaKey in currentMeta; } ) ); const mergedValue = { ...currentMeta, ...allowedMetaChanges }; return haveValuesChanged(currentValue, mergedValue); } case "status": { if ("auto-draft" === newValue) { return false; } return haveValuesChanged(currentValue, newValue); } case "content": case "excerpt": case "title": { return haveValuesChanged( getRawValue(currentValue), newValue ); } // Add support for additional data types here. default: { return haveValuesChanged(currentValue, newValue); } } }) ); if (changes.blocks) { changes.blocks = deserializeBlockAttributes( changes.blocks ); } if ("object" === typeof changes.meta) { changes.meta = { ...editedRecord.meta, ...allowedMetaChanges }; } const selectionHistory = getSelectionHistory(ydoc); const shiftedSelection = getShiftedSelection(ydoc, selectionHistory); if (shiftedSelection) { changes.selection = { ...shiftedSelection, initialPosition: 0 }; } return changes; } var defaultSyncConfig = { applyChangesToCRDTDoc: defaultApplyChangesToCRDTDoc, createAwareness: (ydoc) => new BaseAwareness(ydoc), getChangesFromCRDTDoc: defaultGetChangesFromCRDTDoc }; var defaultCollectionSyncConfig = { applyChangesToCRDTDoc: () => { }, getChangesFromCRDTDoc: () => ({}), shouldSync: (_, objectId) => null === objectId }; function getRawValue(value) { if ("string" === typeof value) { return value; } if (value && "object" === typeof value && "raw" in value && "string" === typeof value.raw) { return value.raw; } return void 0; } function haveValuesChanged(currentValue, newValue) { return !(0, import_es65.default)(currentValue, newValue); } function updateMapValue(map2, key, currentValue, newValue) { if (void 0 === newValue) { map2.delete(key); return; } if (haveValuesChanged(currentValue, newValue)) { map2.set(key, newValue); } } // packages/core-data/build-module/entities.mjs var DEFAULT_ENTITY_KEY = "id"; var POST_RAW_ATTRIBUTES = ["title", "excerpt", "content"]; var blocksTransientEdits = { blocks: { read: (record) => (0, import_blocks4.parse)(record.content?.raw ?? ""), write: (record) => ({ content: (0, import_blocks4.__unstableSerializeAndClean)(record.blocks) }) } }; var rootEntitiesConfig = [ { label: (0, import_i18n.__)("Base"), kind: "root", key: false, name: "__unstableBase", baseURL: "/", baseURLParams: { // Please also change the preload path when changing this. // @see lib/compat/wordpress-7.0/preload.php _fields: [ "description", "gmt_offset", "home", "image_sizes", "image_size_threshold", "image_output_formats", "jpeg_interlaced", "png_interlaced", "gif_interlaced", "name", "site_icon", "site_icon_url", "site_logo", "timezone_string", "url", "page_for_posts", "page_on_front", "show_on_front" ].join(",") }, // The entity doesn't support selecting multiple records. // The property is maintained for backward compatibility. plural: "__unstableBases" }, { label: (0, import_i18n.__)("Post Type"), name: "postType", kind: "root", key: "slug", baseURL: "/wp/v2/types", baseURLParams: { context: "edit" }, plural: "postTypes" }, { name: "media", kind: "root", baseURL: "/wp/v2/media", baseURLParams: { context: "edit" }, plural: "mediaItems", label: (0, import_i18n.__)("Media"), rawAttributes: ["caption", "title", "description"], supportsPagination: true }, { name: "taxonomy", kind: "root", key: "slug", baseURL: "/wp/v2/taxonomies", baseURLParams: { context: "edit" }, plural: "taxonomies", label: (0, import_i18n.__)("Taxonomy") }, { name: "sidebar", kind: "root", baseURL: "/wp/v2/sidebars", baseURLParams: { context: "edit" }, plural: "sidebars", transientEdits: { blocks: true }, label: (0, import_i18n.__)("Widget areas") }, { name: "widget", kind: "root", baseURL: "/wp/v2/widgets", baseURLParams: { context: "edit" }, plural: "widgets", transientEdits: { blocks: true }, label: (0, import_i18n.__)("Widgets") }, { name: "widgetType", kind: "root", baseURL: "/wp/v2/widget-types", baseURLParams: { context: "edit" }, plural: "widgetTypes", label: (0, import_i18n.__)("Widget types") }, { label: (0, import_i18n.__)("User"), name: "user", kind: "root", baseURL: "/wp/v2/users", getTitle: (record) => record?.name || record?.slug, baseURLParams: { context: "edit" }, plural: "users", supportsPagination: true }, { name: "comment", kind: "root", baseURL: "/wp/v2/comments", baseURLParams: { context: "edit" }, plural: "comments", label: (0, import_i18n.__)("Comment"), supportsPagination: true, syncConfig: defaultCollectionSyncConfig }, { name: "menu", kind: "root", baseURL: "/wp/v2/menus", baseURLParams: { context: "edit" }, plural: "menus", label: (0, import_i18n.__)("Menu"), supportsPagination: true }, { name: "menuItem", kind: "root", baseURL: "/wp/v2/menu-items", baseURLParams: { context: "edit" }, plural: "menuItems", label: (0, import_i18n.__)("Menu Item"), rawAttributes: ["title"], supportsPagination: true }, { name: "menuLocation", kind: "root", baseURL: "/wp/v2/menu-locations", baseURLParams: { context: "edit" }, plural: "menuLocations", label: (0, import_i18n.__)("Menu Location"), key: "name" }, { label: (0, import_i18n.__)("Global Styles"), name: "globalStyles", kind: "root", baseURL: "/wp/v2/global-styles", baseURLParams: { context: "edit" }, plural: "globalStylesVariations", // Should be different from name. getTitle: () => (0, import_i18n.__)("Custom Styles"), getRevisionsUrl: (parentId, revisionId) => `/wp/v2/global-styles/${parentId}/revisions${revisionId ? "/" + revisionId : ""}`, supportsPagination: true }, { label: (0, import_i18n.__)("Themes"), name: "theme", kind: "root", baseURL: "/wp/v2/themes", baseURLParams: { context: "edit" }, plural: "themes", key: "stylesheet" }, { label: (0, import_i18n.__)("Plugins"), name: "plugin", kind: "root", baseURL: "/wp/v2/plugins", baseURLParams: { context: "edit" }, plural: "plugins", key: "plugin" }, { label: (0, import_i18n.__)("Status"), name: "status", kind: "root", baseURL: "/wp/v2/statuses", baseURLParams: { context: "edit" }, plural: "statuses", key: "slug" }, { label: (0, import_i18n.__)("Registered Templates"), name: "registeredTemplate", kind: "root", baseURL: "/wp/v2/registered-templates", key: "id" }, { label: (0, import_i18n.__)("Font Collections"), name: "fontCollection", kind: "root", baseURL: "/wp/v2/font-collections", baseURLParams: { context: "view" }, plural: "fontCollections", key: "slug" }, { label: (0, import_i18n.__)("Icons"), name: "icon", kind: "root", baseURL: "/wp/v2/icons", baseURLParams: { context: "view" }, plural: "icons", key: "name" } ]; var deprecatedEntities = { root: { media: { since: "6.9", alternative: { kind: "postType", name: "attachment" } } } }; var additionalEntityConfigLoaders = [ { kind: "postType", loadEntities: loadPostTypeEntities }, { kind: "taxonomy", loadEntities: loadTaxonomyEntities }, { kind: "root", name: "site", plural: "sites", loadEntities: loadSiteEntity } ]; var prePersistPostType = async (persistedRecord, edits, name, isTemplate) => { const newEdits = {}; if (!isTemplate && persistedRecord?.status === "auto-draft") { if (!edits.status && !newEdits.status) { newEdits.status = "draft"; } if ((!edits.title || edits.title === "Auto Draft") && !newEdits.title && (!persistedRecord?.title || persistedRecord?.title === "Auto Draft")) { newEdits.title = ""; } } if (persistedRecord) { const objectType = `postType/${name}`; const objectId = persistedRecord.id; const serializedDoc = await getSyncManager()?.createPersistedCRDTDoc( objectType, objectId ); if (serializedDoc) { newEdits.meta = { ...edits.meta, [POST_META_KEY_FOR_CRDT_DOC_PERSISTENCE]: serializedDoc }; } } return newEdits; }; async function loadPostTypeEntities() { const postTypesPromise = (0, import_api_fetch2.default)({ path: "/wp/v2/types?context=view" }); const taxonomiesPromise = window._wpCollaborationEnabled ? (0, import_api_fetch2.default)({ path: "/wp/v2/taxonomies?context=view" }) : Promise.resolve({}); const [postTypes, taxonomies] = await Promise.all([ postTypesPromise, taxonomiesPromise ]); return Object.entries(postTypes ?? {}).map(([name, postType]) => { const isTemplate = ["wp_template", "wp_template_part"].includes( name ); const namespace = postType?.rest_namespace ?? "wp/v2"; const syncedProperties = /* @__PURE__ */ new Set([ "author", "blocks", "content", "comment_status", "date", "excerpt", "featured_media", "format", "meta", "ping_status", "slug", "status", "sticky", "template", "title", ...postType.taxonomies?.map((taxonomy) => taxonomies?.[taxonomy]?.rest_base)?.filter(Boolean) ?? [] ]); const entity2 = { kind: "postType", baseURL: `/${namespace}/${postType.rest_base}`, baseURLParams: { context: "edit" }, name, label: postType.name, transientEdits: { ...blocksTransientEdits, selection: true }, mergedEdits: { meta: true }, rawAttributes: POST_RAW_ATTRIBUTES, getTitle: (record) => record?.title?.rendered || record?.title || (isTemplate ? capitalCase(record.slug ?? "") : String(record.id)), __unstablePrePersist: (persistedRecord, edits) => prePersistPostType(persistedRecord, edits, name, isTemplate), __unstable_rest_base: postType.rest_base, supportsPagination: true, getRevisionsUrl: (parentId, revisionId) => `/${namespace}/${postType.rest_base}/${parentId}/revisions${revisionId ? "/" + revisionId : ""}`, revisionKey: isTemplate && !window?.__experimentalTemplateActivate ? "wp_id" : DEFAULT_ENTITY_KEY }; entity2.syncConfig = { /** * Apply changes from the local editor to the local CRDT document so * that those changes can be synced to other peers (via the provider). * * @param {import('@wordpress/sync').CRDTDoc} crdtDoc * @param {Partial< import('@wordpress/sync').ObjectData >} changes * @return {void} */ applyChangesToCRDTDoc: (crdtDoc, changes) => applyPostChangesToCRDTDoc(crdtDoc, changes, syncedProperties), /** * Create the awareness instance for the entity's CRDT document. * * @param {import('@wordpress/sync').CRDTDoc} ydoc * @param {import('@wordpress/sync').ObjectID} objectId * @return {import('@wordpress/sync').Awareness} Awareness instance */ createAwareness: (ydoc, objectId) => { const kind = "postType"; const id2 = parseInt(objectId, 10); return new PostEditorAwareness(ydoc, kind, name, id2); }, /** * Extract changes from a CRDT document that can be used to update the * local editor state. * * @param {import('@wordpress/sync').CRDTDoc} crdtDoc * @param {import('@wordpress/sync').ObjectData} editedRecord * @return {Partial< import('@wordpress/sync').ObjectData >} Changes to record */ getChangesFromCRDTDoc: (crdtDoc, editedRecord) => getPostChangesFromCRDTDoc( crdtDoc, editedRecord, syncedProperties ), /** * Extract changes from a CRDT document that can be used to update the * local editor state. * * @param {import('@wordpress/sync').ObjectData} record * @return {Partial< import('@wordpress/sync').ObjectData >} Changes to record */ getPersistedCRDTDoc: (record) => { return record?.meta?.[POST_META_KEY_FOR_CRDT_DOC_PERSISTENCE] || null; } }; return entity2; }); } async function loadTaxonomyEntities() { const taxonomies = await (0, import_api_fetch2.default)({ path: "/wp/v2/taxonomies?context=view" }); return Object.entries(taxonomies ?? {}).map(([name, taxonomy]) => { const namespace = taxonomy?.rest_namespace ?? "wp/v2"; const entity2 = { kind: "taxonomy", baseURL: `/${namespace}/${taxonomy.rest_base}`, baseURLParams: { context: "edit" }, name, label: taxonomy.name, getTitle: (record) => record?.name, supportsPagination: true }; entity2.syncConfig = defaultSyncConfig; return entity2; }); } async function loadSiteEntity() { const entity2 = { label: (0, import_i18n.__)("Site"), name: "site", kind: "root", key: false, baseURL: "/wp/v2/settings", meta: {} }; const site = await (0, import_api_fetch2.default)({ path: entity2.baseURL, method: "OPTIONS" }); const labels = {}; Object.entries(site?.schema?.properties ?? {}).forEach( ([key, value]) => { if (typeof value === "object" && value.title) { labels[key] = value.title; } } ); return [{ ...entity2, meta: { labels } }]; } var getMethodName = (kind, name, prefix = "get") => { const kindPrefix = kind === "root" ? "" : pascalCase(kind); const suffix = pascalCase(name); return `${prefix}${kindPrefix}${suffix}`; }; // packages/core-data/build-module/queried-data/reducer.mjs function getContextFromAction(action) { const { query } = action; if (!query) { return "default"; } const queryParts = get_query_parts_default(query); return queryParts.context; } function getMergedItemIds(itemIds, nextItemIds, page, perPage) { const receivedAllIds = page === 1 && perPage === -1; if (receivedAllIds) { return nextItemIds; } const nextItemIdsStartIndex = (page - 1) * perPage; const size2 = Math.max( itemIds?.length ?? 0, nextItemIdsStartIndex + nextItemIds.length ); const mergedItemIds = new Array(size2); for (let i = 0; i < size2; i++) { const isInNextItemsRange = i >= nextItemIdsStartIndex && i < nextItemIdsStartIndex + perPage; mergedItemIds[i] = isInNextItemsRange ? nextItemIds[i - nextItemIdsStartIndex] : itemIds?.[i]; } return mergedItemIds; } function removeEntitiesById(entities2, ids) { return Object.fromEntries( Object.entries(entities2).filter( ([id2]) => !ids.some((itemId) => { if (Number.isInteger(itemId)) { return itemId === +id2; } return itemId === id2; }) ) ); } function items(state = {}, action) { switch (action.type) { case "RECEIVE_ITEMS": { const context = getContextFromAction(action); const key = action.key || DEFAULT_ENTITY_KEY; const itemsList = Array.isArray(action.items) ? action.items : [action.items]; return { ...state, [context]: { ...state[context], ...Object.fromEntries( itemsList.map((item) => [ item?.[key], conservativeMapItem( state?.[context]?.[item?.[key]], item ) ]) ) } }; } case "REMOVE_ITEMS": return Object.fromEntries( Object.entries(state).map(([itemId, contextState]) => [ itemId, removeEntitiesById(contextState, action.itemIds) ]) ); } return state; } function itemIsComplete(state = {}, action) { switch (action.type) { case "RECEIVE_ITEMS": { const context = getContextFromAction(action); const { query, key = DEFAULT_ENTITY_KEY } = action; const itemsList = Array.isArray(action.items) ? action.items : [action.items]; const queryParts = query ? get_query_parts_default(query) : {}; const isCompleteQuery = !query || !Array.isArray(queryParts.fields); return { ...state, [context]: { ...state[context], ...itemsList.reduce((result, item) => { const itemId = item?.[key]; result[itemId] = state?.[context]?.[itemId] || isCompleteQuery; return result; }, {}) } }; } case "REMOVE_ITEMS": return Object.fromEntries( Object.entries(state).map(([itemId, contextState]) => [ itemId, removeEntitiesById(contextState, action.itemIds) ]) ); } return state; } var receiveQueries = (0, import_compose.compose)([ // Limit to matching action type so we don't attempt to replace action on // an unhandled action. if_matching_action_default((action) => "query" in action), // Inject query parts into action for use both in `onSubKey` and reducer. replace_action_default((action) => { if (action.query) { return { ...action, ...get_query_parts_default(action.query) }; } return action; }), on_sub_key_default("context"), // Queries shape is shared, but keyed by query `stableKey` part. Original // reducer tracks only a single query object. on_sub_key_default("stableKey") ])((state = {}, action) => { if (action.type !== "RECEIVE_ITEMS") { return state; } if (!Array.isArray(action.items)) { return state; } const key = action.key ?? DEFAULT_ENTITY_KEY; return { itemIds: getMergedItemIds( state?.itemIds || [], action.items.map((item) => item?.[key]).filter(Boolean), action.page, action.perPage ), meta: action.meta }; }); var queries = (state = {}, action) => { switch (action.type) { case "RECEIVE_ITEMS": return receiveQueries(state, action); case "REMOVE_ITEMS": const removedItems = action.itemIds.reduce((result, itemId) => { result[itemId] = true; return result; }, {}); return Object.fromEntries( Object.entries(state).map( ([queryGroup, contextQueries]) => [ queryGroup, Object.fromEntries( Object.entries(contextQueries).map( ([query, queryItems]) => [ query, { ...queryItems, itemIds: queryItems.itemIds.filter( (queryId) => !removedItems[queryId] ) } ] ) ) ] ) ); default: return state; } }; var reducer_default = (0, import_data7.combineReducers)({ items, itemIsComplete, queries }); // packages/core-data/build-module/reducer.mjs function users(state = { byId: {}, queries: {} }, action) { switch (action.type) { case "RECEIVE_USER_QUERY": return { byId: { ...state.byId, // Key users by their ID. ...action.users.reduce( (newUsers, user) => ({ ...newUsers, [user.id]: user }), {} ) }, queries: { ...state.queries, [action.queryID]: action.users.map((user) => user.id) } }; } return state; } function currentUser(state = {}, action) { switch (action.type) { case "RECEIVE_CURRENT_USER": return action.currentUser; } return state; } function currentTheme(state = void 0, action) { switch (action.type) { case "RECEIVE_CURRENT_THEME": return action.currentTheme.stylesheet; } return state; } function currentGlobalStylesId(state = void 0, action) { switch (action.type) { case "RECEIVE_CURRENT_GLOBAL_STYLES_ID": return action.id; } return state; } function themeBaseGlobalStyles(state = {}, action) { switch (action.type) { case "RECEIVE_THEME_GLOBAL_STYLES": return { ...state, [action.stylesheet]: action.globalStyles }; } return state; } function themeGlobalStyleVariations(state = {}, action) { switch (action.type) { case "RECEIVE_THEME_GLOBAL_STYLE_VARIATIONS": return { ...state, [action.stylesheet]: action.variations }; } return state; } var withMultiEntityRecordEdits = (reducer) => (state, action) => { if (action.type === "UNDO" || action.type === "REDO") { const { record } = action; let newState = state; record.forEach(({ id: { kind, name, recordId }, changes }) => { newState = reducer(newState, { type: "EDIT_ENTITY_RECORD", kind, name, recordId, edits: Object.entries(changes).reduce( (acc, [key, value]) => { acc[key] = action.type === "UNDO" ? value.from : value.to; return acc; }, {} ) }); }); return newState; } return reducer(state, action); }; function entity(entityConfig) { return (0, import_compose2.compose)([ withMultiEntityRecordEdits, // Limit to matching action type so we don't attempt to replace action on // an unhandled action. if_matching_action_default( (action) => action.name && action.kind && action.name === entityConfig.name && action.kind === entityConfig.kind ), // Inject the entity config into the action. replace_action_default((action) => { return { key: entityConfig.key || DEFAULT_ENTITY_KEY, ...action }; }) ])( (0, import_data8.combineReducers)({ queriedData: reducer_default, edits: (state = {}, action) => { switch (action.type) { case "RECEIVE_ITEMS": const context = action?.query?.context ?? "default"; if (context !== "default") { return state; } const nextState = { ...state }; const itemsList = Array.isArray(action.items) ? action.items : [action.items]; for (const record of itemsList) { const recordId = record?.[action.key]; const edits = nextState[recordId]; if (!edits) { continue; } const nextEdits2 = Object.keys(edits).reduce( (acc, key) => { if ( // Edits are the "raw" attribute values, but records may have // objects with more properties, so we use `get` here for the // comparison. !(0, import_es66.default)( edits[key], record[key]?.raw ?? record[key] ) && // Sometimes the server alters the sent value which means // we need to also remove the edits before the api request. (!action.persistedEdits || !(0, import_es66.default)( edits[key], action.persistedEdits[key] )) ) { acc[key] = edits[key]; } return acc; }, {} ); if (Object.keys(nextEdits2).length) { nextState[recordId] = nextEdits2; } else { delete nextState[recordId]; } } return nextState; case "EDIT_ENTITY_RECORD": const nextEdits = { ...state[action.recordId], ...action.edits }; Object.keys(nextEdits).forEach((key) => { if (nextEdits[key] === void 0) { delete nextEdits[key]; } }); return { ...state, [action.recordId]: nextEdits }; } return state; }, saving: (state = {}, action) => { switch (action.type) { case "SAVE_ENTITY_RECORD_START": case "SAVE_ENTITY_RECORD_FINISH": return { ...state, [action.recordId]: { pending: action.type === "SAVE_ENTITY_RECORD_START", error: action.error, isAutosave: action.isAutosave } }; } return state; }, deleting: (state = {}, action) => { switch (action.type) { case "DELETE_ENTITY_RECORD_START": case "DELETE_ENTITY_RECORD_FINISH": return { ...state, [action.recordId]: { pending: action.type === "DELETE_ENTITY_RECORD_START", error: action.error } }; } return state; }, revisions: (state = {}, action) => { if (action.type === "RECEIVE_ITEM_REVISIONS") { const recordKey = action.recordKey; delete action.recordKey; const newState = reducer_default(state[recordKey], { ...action, type: "RECEIVE_ITEMS" }); return { ...state, [recordKey]: newState }; } if (action.type === "REMOVE_ITEMS") { return Object.fromEntries( Object.entries(state).filter( ([id2]) => !action.itemIds.some((itemId) => { if (Number.isInteger(itemId)) { return itemId === +id2; } return itemId === id2; }) ) ); } return state; } }) ); } function entitiesConfig(state = rootEntitiesConfig, action) { switch (action.type) { case "ADD_ENTITIES": return [...state, ...action.entities]; } return state; } var entities = (state = {}, action) => { const newConfig = entitiesConfig(state.config, action); let entitiesDataReducer = state.reducer; if (!entitiesDataReducer || newConfig !== state.config) { const entitiesByKind = newConfig.reduce((acc, record) => { const { kind } = record; if (!acc[kind]) { acc[kind] = []; } acc[kind].push(record); return acc; }, {}); entitiesDataReducer = (0, import_data8.combineReducers)( Object.fromEntries( Object.entries(entitiesByKind).map( ([kind, subEntities]) => { const kindReducer = (0, import_data8.combineReducers)( Object.fromEntries( subEntities.map((entityConfig) => [ entityConfig.name, entity(entityConfig) ]) ) ); return [kind, kindReducer]; } ) ) ); } const newData = entitiesDataReducer(state.records, action); if (newData === state.records && newConfig === state.config && entitiesDataReducer === state.reducer) { return state; } return { reducer: entitiesDataReducer, records: newData, config: newConfig }; }; function undoManager(state = (0, import_undo_manager2.createUndoManager)()) { return state; } function editsReference(state = {}, action) { switch (action.type) { case "EDIT_ENTITY_RECORD": case "UNDO": case "REDO": return {}; } return state; } function embedPreviews(state = {}, action) { switch (action.type) { case "RECEIVE_EMBED_PREVIEW": const { url, preview } = action; return { ...state, [url]: preview }; } return state; } function userPermissions(state = {}, action) { switch (action.type) { case "RECEIVE_USER_PERMISSION": return { ...state, [action.key]: action.isAllowed }; case "RECEIVE_USER_PERMISSIONS": return { ...state, ...action.permissions }; } return state; } function autosaves(state = {}, action) { switch (action.type) { case "RECEIVE_AUTOSAVES": const { postId, autosaves: autosavesData } = action; return { ...state, [postId]: autosavesData }; } return state; } function blockPatterns(state = [], action) { switch (action.type) { case "RECEIVE_BLOCK_PATTERNS": return action.patterns; } return state; } function blockPatternCategories(state = [], action) { switch (action.type) { case "RECEIVE_BLOCK_PATTERN_CATEGORIES": return action.categories; } return state; } function userPatternCategories(state = [], action) { switch (action.type) { case "RECEIVE_USER_PATTERN_CATEGORIES": return action.patternCategories; } return state; } function navigationFallbackId(state = null, action) { switch (action.type) { case "RECEIVE_NAVIGATION_FALLBACK_ID": return action.fallbackId; } return state; } function themeGlobalStyleRevisions(state = {}, action) { switch (action.type) { case "RECEIVE_THEME_GLOBAL_STYLE_REVISIONS": return { ...state, [action.currentId]: action.revisions }; } return state; } function defaultTemplates(state = {}, action) { switch (action.type) { case "RECEIVE_DEFAULT_TEMPLATE": return { ...state, [JSON.stringify(action.query)]: action.templateId }; } return state; } function registeredPostMeta(state = {}, action) { switch (action.type) { case "RECEIVE_REGISTERED_POST_META": return { ...state, [action.postType]: action.registeredPostMeta }; } return state; } function editorSettings(state = null, action) { switch (action.type) { case "RECEIVE_EDITOR_SETTINGS": return action.settings; } return state; } function editorAssets(state = null, action) { switch (action.type) { case "RECEIVE_EDITOR_ASSETS": return action.assets; } return state; } function syncConnectionStatuses(state = {}, action) { switch (action.type) { case "SET_SYNC_CONNECTION_STATUS": { const key = `${action.kind}/${action.name}:${action.key}`; return { ...state, [key]: action.status }; } case "CLEAR_SYNC_CONNECTION_STATUS": { const key = `${action.kind}/${action.name}:${action.key}`; const { [key]: _, ...rest } = state; return rest; } } return state; } function collaborationSupported(state = true, action) { switch (action.type) { case "SET_COLLABORATION_SUPPORTED": return action.supported; case "SET_SYNC_CONNECTION_STATUS": if (ConnectionErrorCode2.DOCUMENT_SIZE_LIMIT_EXCEEDED === action.status?.error?.code) { return false; } return state; } return state; } var reducer_default2 = (0, import_data8.combineReducers)({ users, currentTheme, currentGlobalStylesId, currentUser, themeGlobalStyleVariations, themeBaseGlobalStyles, themeGlobalStyleRevisions, entities, editsReference, undoManager, embedPreviews, userPermissions, autosaves, blockPatterns, blockPatternCategories, userPatternCategories, navigationFallbackId, defaultTemplates, registeredPostMeta, editorSettings, editorAssets, syncConnectionStatuses, collaborationSupported }); // packages/core-data/build-module/selectors.mjs var selectors_exports = {}; __export(selectors_exports, { __experimentalGetCurrentGlobalStylesId: () => __experimentalGetCurrentGlobalStylesId, __experimentalGetCurrentThemeBaseGlobalStyles: () => __experimentalGetCurrentThemeBaseGlobalStyles, __experimentalGetCurrentThemeGlobalStylesVariations: () => __experimentalGetCurrentThemeGlobalStylesVariations, __experimentalGetDirtyEntityRecords: () => __experimentalGetDirtyEntityRecords, __experimentalGetEntitiesBeingSaved: () => __experimentalGetEntitiesBeingSaved, __experimentalGetEntityRecordNoResolver: () => __experimentalGetEntityRecordNoResolver, canUser: () => canUser, canUserEditEntityRecord: () => canUserEditEntityRecord, getAuthors: () => getAuthors, getAutosave: () => getAutosave, getAutosaves: () => getAutosaves, getBlockPatternCategories: () => getBlockPatternCategories, getBlockPatterns: () => getBlockPatterns, getCurrentTheme: () => getCurrentTheme, getCurrentThemeGlobalStylesRevisions: () => getCurrentThemeGlobalStylesRevisions, getCurrentUser: () => getCurrentUser, getDefaultTemplateId: () => getDefaultTemplateId, getEditedEntityRecord: () => getEditedEntityRecord, getEmbedPreview: () => getEmbedPreview, getEntitiesByKind: () => getEntitiesByKind, getEntitiesConfig: () => getEntitiesConfig, getEntity: () => getEntity, getEntityConfig: () => getEntityConfig, getEntityRecord: () => getEntityRecord, getEntityRecordEdits: () => getEntityRecordEdits, getEntityRecordNonTransientEdits: () => getEntityRecordNonTransientEdits, getEntityRecords: () => getEntityRecords, getEntityRecordsTotalItems: () => getEntityRecordsTotalItems, getEntityRecordsTotalPages: () => getEntityRecordsTotalPages, getLastEntityDeleteError: () => getLastEntityDeleteError, getLastEntitySaveError: () => getLastEntitySaveError, getRawEntityRecord: () => getRawEntityRecord, getRedoEdit: () => getRedoEdit, getReferenceByDistinctEdits: () => getReferenceByDistinctEdits, getRevision: () => getRevision, getRevisions: () => getRevisions, getThemeSupports: () => getThemeSupports, getUndoEdit: () => getUndoEdit, getUserPatternCategories: () => getUserPatternCategories, getUserQueryResults: () => getUserQueryResults, hasEditsForEntityRecord: () => hasEditsForEntityRecord, hasEntityRecord: () => hasEntityRecord, hasEntityRecords: () => hasEntityRecords, hasFetchedAutosaves: () => hasFetchedAutosaves, hasRedo: () => hasRedo, hasUndo: () => hasUndo, isAutosavingEntityRecord: () => isAutosavingEntityRecord, isDeletingEntityRecord: () => isDeletingEntityRecord, isPreviewEmbedFallback: () => isPreviewEmbedFallback, isRequestingEmbedPreview: () => isRequestingEmbedPreview, isSavingEntityRecord: () => isSavingEntityRecord }); var import_data10 = __toESM(require_data(), 1); var import_url2 = __toESM(require_url(), 1); var import_deprecated2 = __toESM(require_deprecated(), 1); // packages/core-data/build-module/private-selectors.mjs var private_selectors_exports = {}; __export(private_selectors_exports, { getBlockPatternsForPostType: () => getBlockPatternsForPostType, getEditorAssets: () => getEditorAssets, getEditorSettings: () => getEditorSettings, getEntityRecordPermissions: () => getEntityRecordPermissions, getEntityRecordsPermissions: () => getEntityRecordsPermissions, getHomePage: () => getHomePage, getNavigationFallbackId: () => getNavigationFallbackId, getPostsPageId: () => getPostsPageId, getRegisteredPostMeta: () => getRegisteredPostMeta, getSyncConnectionStatus: () => getSyncConnectionStatus, getTemplateId: () => getTemplateId, getUndoManager: () => getUndoManager, isCollaborationSupported: () => isCollaborationSupported }); var import_data9 = __toESM(require_data(), 1); // packages/core-data/build-module/utils/log-entity-deprecation.mjs var import_deprecated = __toESM(require_deprecated(), 1); var loggedAlready = false; function logEntityDeprecation(kind, name, functionName, { alternativeFunctionName, isShorthandSelector = false } = {}) { const deprecation = deprecatedEntities[kind]?.[name]; if (!deprecation) { return; } if (!loggedAlready) { const { alternative } = deprecation; const message = isShorthandSelector ? `'${functionName}'` : `The '${kind}', '${name}' entity (used via '${functionName}')`; let alternativeMessage = `the '${alternative.kind}', '${alternative.name}' entity`; if (alternativeFunctionName) { alternativeMessage += ` via the '${alternativeFunctionName}' function`; } (0, import_deprecated.default)(message, { ...deprecation, alternative: alternativeMessage }); } loggedAlready = true; setTimeout(() => { loggedAlready = false; }, 0); } // packages/core-data/build-module/private-selectors.mjs function getUndoManager(state) { return getSyncManager()?.undoManager ?? state.undoManager; } function getNavigationFallbackId(state) { return state.navigationFallbackId; } var getBlockPatternsForPostType = (0, import_data9.createRegistrySelector)( (select5) => (0, import_data9.createSelector)( (state, postType) => select5(STORE_NAME).getBlockPatterns().filter( ({ postTypes }) => !postTypes || Array.isArray(postTypes) && postTypes.includes(postType) ), () => [select5(STORE_NAME).getBlockPatterns()] ) ); var getEntityRecordsPermissions = (0, import_data9.createRegistrySelector)( (select5) => (0, import_data9.createSelector)( (state, kind, name, ids) => { const normalizedIds = Array.isArray(ids) ? ids : [ids]; return normalizedIds.map((id2) => ({ delete: select5(STORE_NAME).canUser("delete", { kind, name, id: id2 }), update: select5(STORE_NAME).canUser("update", { kind, name, id: id2 }) })); }, (state) => [state.userPermissions] ) ); function getEntityRecordPermissions(state, kind, name, id2) { logEntityDeprecation(kind, name, "getEntityRecordPermissions"); return getEntityRecordsPermissions(state, kind, name, id2)[0]; } function getRegisteredPostMeta(state, postType) { return state.registeredPostMeta?.[postType] ?? {}; } function normalizePageId(value) { if (!value || !["number", "string"].includes(typeof value)) { return null; } if (Number(value) === 0) { return null; } return value.toString(); } var getHomePage = (0, import_data9.createRegistrySelector)( (select5) => (0, import_data9.createSelector)( () => { const siteData = select5(STORE_NAME).getEntityRecord( "root", "__unstableBase" ); if (!siteData) { return null; } const homepageId = siteData?.show_on_front === "page" ? normalizePageId(siteData.page_on_front) : null; if (homepageId) { return { postType: "page", postId: homepageId }; } const frontPageTemplateId = select5( STORE_NAME ).getDefaultTemplateId({ slug: "front-page" }); if (!frontPageTemplateId) { return null; } return { postType: "wp_template", postId: frontPageTemplateId }; }, (state) => [ // Even though getDefaultTemplateId.shouldInvalidate returns true when root/site changes, // it doesn't seem to invalidate this cache, I'm not sure why. getEntityRecord(state, "root", "site"), getEntityRecord(state, "root", "__unstableBase"), getDefaultTemplateId(state, { slug: "front-page" }) ] ) ); var getPostsPageId = (0, import_data9.createRegistrySelector)((select5) => () => { const siteData = select5(STORE_NAME).getEntityRecord( "root", "__unstableBase" ); return siteData?.show_on_front === "page" ? normalizePageId(siteData.page_for_posts) : null; }); var getTemplateId = (0, import_data9.createRegistrySelector)( (select5) => (state, postType, postId) => { const homepage = unlock2(select5(STORE_NAME)).getHomePage(); if (!homepage) { return; } if (postType === "page" && postType === homepage?.postType && postId.toString() === homepage?.postId) { const templates = select5(STORE_NAME).getEntityRecords( "postType", "wp_template", { per_page: -1 } ); if (!templates) { return; } const id2 = templates.find(({ slug }) => slug === "front-page")?.id; if (id2) { return id2; } } const editedEntity = select5(STORE_NAME).getEditedEntityRecord( "postType", postType, postId ); if (!editedEntity) { return; } const postsPageId = unlock2(select5(STORE_NAME)).getPostsPageId(); if (postType === "page" && postsPageId === postId.toString()) { return select5(STORE_NAME).getDefaultTemplateId({ slug: "home" }); } const currentTemplateSlug = editedEntity.template; if (currentTemplateSlug) { const currentTemplate = select5(STORE_NAME).getEntityRecords("postType", "wp_template", { per_page: -1 })?.find(({ slug }) => slug === currentTemplateSlug); if (currentTemplate) { return currentTemplate.id; } } let slugToCheck; if (editedEntity.slug) { slugToCheck = postType === "page" ? `${postType}-${editedEntity.slug}` : `single-${postType}-${editedEntity.slug}`; } else { slugToCheck = postType === "page" ? "page" : `single-${postType}`; } return select5(STORE_NAME).getDefaultTemplateId({ slug: slugToCheck }); } ); function getEditorSettings(state) { return state.editorSettings; } function getEditorAssets(state) { return state.editorAssets; } function isCollaborationSupported(state) { return state.collaborationSupported; } function getSyncConnectionStatus(state) { if (!state.syncConnectionStatuses) { return void 0; } const PRIORITIZED_STATUSES = ["disconnected", "connecting", "connected"]; let coalesced; for (const status of Object.values(state.syncConnectionStatuses)) { if (!coalesced || PRIORITIZED_STATUSES.indexOf(status.status) < PRIORITIZED_STATUSES.indexOf(coalesced.status)) { coalesced = status; } } return coalesced; } // packages/core-data/build-module/selectors.mjs var EMPTY_OBJECT = {}; var isRequestingEmbedPreview = (0, import_data10.createRegistrySelector)( (select5) => (state, url) => { return select5(STORE_NAME).isResolving("getEmbedPreview", [ url ]); } ); function getAuthors(state, query) { (0, import_deprecated2.default)("select( 'core' ).getAuthors()", { since: "5.9", alternative: "select( 'core' ).getUsers({ who: 'authors' })" }); const path = (0, import_url2.addQueryArgs)( "/wp/v2/users/?who=authors&per_page=100", query ); return getUserQueryResults(state, path); } function getCurrentUser(state) { return state.currentUser; } var getUserQueryResults = (0, import_data10.createSelector)( (state, queryID) => { const queryResults = state.users.queries[queryID] ?? []; return queryResults.map((id2) => state.users.byId[id2]); }, (state, queryID) => [ state.users.queries[queryID], state.users.byId ] ); function getEntitiesByKind(state, kind) { (0, import_deprecated2.default)("wp.data.select( 'core' ).getEntitiesByKind()", { since: "6.0", alternative: "wp.data.select( 'core' ).getEntitiesConfig()" }); return getEntitiesConfig(state, kind); } var getEntitiesConfig = (0, import_data10.createSelector)( (state, kind) => state.entities.config.filter((entity2) => entity2.kind === kind), /* eslint-disable @typescript-eslint/no-unused-vars */ (state, kind) => state.entities.config /* eslint-enable @typescript-eslint/no-unused-vars */ ); function getEntity(state, kind, name) { (0, import_deprecated2.default)("wp.data.select( 'core' ).getEntity()", { since: "6.0", alternative: "wp.data.select( 'core' ).getEntityConfig()" }); return getEntityConfig(state, kind, name); } function getEntityConfig(state, kind, name) { logEntityDeprecation(kind, name, "getEntityConfig"); return state.entities.config?.find( (config) => config.kind === kind && config.name === name ); } var getEntityRecord = (0, import_data10.createSelector)( ((state, kind, name, key, query) => { logEntityDeprecation(kind, name, "getEntityRecord"); const queriedState = state.entities.records?.[kind]?.[name]?.queriedData; if (!queriedState) { return void 0; } const context = query?.context ?? "default"; if (!query || !query._fields) { if (!queriedState.itemIsComplete[context]?.[key]) { return void 0; } return queriedState.items[context][key]; } const item = queriedState.items[context]?.[key]; if (!item) { return item; } const filteredItem = {}; const fields = get_normalized_comma_separable_default(query._fields) ?? []; for (let f = 0; f < fields.length; f++) { const field = fields[f].split("."); let value = item; field.forEach((fieldName) => { value = value?.[fieldName]; }); setNestedValue(filteredItem, field, value); } return filteredItem; }), (state, kind, name, recordId, query) => { const context = query?.context ?? "default"; const queriedState = state.entities.records?.[kind]?.[name]?.queriedData; return [ queriedState?.items[context]?.[recordId], queriedState?.itemIsComplete[context]?.[recordId] ]; } ); getEntityRecord.__unstableNormalizeArgs = (args2) => { const newArgs = [...args2]; const recordKey = newArgs?.[2]; newArgs[2] = isNumericID(recordKey) ? Number(recordKey) : recordKey; return newArgs; }; function hasEntityRecord(state, kind, name, key, query) { const queriedState = state.entities.records?.[kind]?.[name]?.queriedData; if (!queriedState) { return false; } const context = query?.context ?? "default"; if (!query || !query._fields) { return !!queriedState.itemIsComplete[context]?.[key]; } const item = queriedState.items[context]?.[key]; if (!item) { return false; } const fields = get_normalized_comma_separable_default(query._fields) ?? []; for (let i = 0; i < fields.length; i++) { const path = fields[i].split("."); let value = item; for (let p = 0; p < path.length; p++) { const part = path[p]; if (!value || !Object.hasOwn(value, part)) { return false; } value = value[part]; } } return true; } function __experimentalGetEntityRecordNoResolver(state, kind, name, key) { return getEntityRecord(state, kind, name, key); } var getRawEntityRecord = (0, import_data10.createSelector)( (state, kind, name, key) => { logEntityDeprecation(kind, name, "getRawEntityRecord"); const record = getEntityRecord( state, kind, name, key ); return record && Object.keys(record).reduce((accumulator, _key) => { if (isRawAttribute(getEntityConfig(state, kind, name), _key)) { accumulator[_key] = record[_key]?.raw !== void 0 ? record[_key]?.raw : record[_key]; } else { accumulator[_key] = record[_key]; } return accumulator; }, {}); }, (state, kind, name, recordId, query) => { const context = query?.context ?? "default"; return [ state.entities.config, state.entities.records?.[kind]?.[name]?.queriedData?.items[context]?.[recordId], state.entities.records?.[kind]?.[name]?.queriedData?.itemIsComplete[context]?.[recordId] ]; } ); function hasEntityRecords(state, kind, name, query) { logEntityDeprecation(kind, name, "hasEntityRecords"); return Array.isArray(getEntityRecords(state, kind, name, query)); } var getEntityRecords = ((state, kind, name, query) => { logEntityDeprecation(kind, name, "getEntityRecords"); const queriedState = state.entities.records?.[kind]?.[name]?.queriedData; if (!queriedState) { return null; } return getQueriedItems(queriedState, query); }); var getEntityRecordsTotalItems = (state, kind, name, query) => { logEntityDeprecation(kind, name, "getEntityRecordsTotalItems"); const queriedState = state.entities.records?.[kind]?.[name]?.queriedData; if (!queriedState) { return null; } return getQueriedTotalItems(queriedState, query); }; var getEntityRecordsTotalPages = (state, kind, name, query) => { logEntityDeprecation(kind, name, "getEntityRecordsTotalPages"); const queriedState = state.entities.records?.[kind]?.[name]?.queriedData; if (!queriedState) { return null; } if (query?.per_page === -1) { return 1; } const totalItems = getQueriedTotalItems(queriedState, query); if (!totalItems) { return totalItems; } if (!query?.per_page) { return getQueriedTotalPages(queriedState, query); } return Math.ceil(totalItems / query.per_page); }; var __experimentalGetDirtyEntityRecords = (0, import_data10.createSelector)( (state) => { const { entities: { records } } = state; const dirtyRecords = []; Object.keys(records).forEach((kind) => { Object.keys(records[kind]).forEach((name) => { const primaryKeys = Object.keys(records[kind][name].edits).filter( (primaryKey) => ( // The entity record must exist (not be deleted), // and it must have edits. getEntityRecord(state, kind, name, primaryKey) && hasEditsForEntityRecord(state, kind, name, primaryKey) ) ); if (primaryKeys.length) { const entityConfig = getEntityConfig(state, kind, name); primaryKeys.forEach((primaryKey) => { const entityRecord = getEditedEntityRecord( state, kind, name, primaryKey ); dirtyRecords.push({ // We avoid using primaryKey because it's transformed into a string // when it's used as an object key. key: entityRecord ? entityRecord[entityConfig.key || DEFAULT_ENTITY_KEY] : void 0, title: entityConfig?.getTitle?.(entityRecord) || "", name, kind }); }); } }); }); return dirtyRecords; }, (state) => [state.entities.records] ); var __experimentalGetEntitiesBeingSaved = (0, import_data10.createSelector)( (state) => { const { entities: { records } } = state; const recordsBeingSaved = []; Object.keys(records).forEach((kind) => { Object.keys(records[kind]).forEach((name) => { const primaryKeys = Object.keys(records[kind][name].saving).filter( (primaryKey) => isSavingEntityRecord(state, kind, name, primaryKey) ); if (primaryKeys.length) { const entityConfig = getEntityConfig(state, kind, name); primaryKeys.forEach((primaryKey) => { const entityRecord = getEditedEntityRecord( state, kind, name, primaryKey ); recordsBeingSaved.push({ // We avoid using primaryKey because it's transformed into a string // when it's used as an object key. key: entityRecord ? entityRecord[entityConfig.key || DEFAULT_ENTITY_KEY] : void 0, title: entityConfig?.getTitle?.(entityRecord) || "", name, kind }); }); } }); }); return recordsBeingSaved; }, (state) => [state.entities.records] ); function getEntityRecordEdits(state, kind, name, recordId) { logEntityDeprecation(kind, name, "getEntityRecordEdits"); return state.entities.records?.[kind]?.[name]?.edits?.[recordId]; } var getEntityRecordNonTransientEdits = (0, import_data10.createSelector)( (state, kind, name, recordId) => { logEntityDeprecation(kind, name, "getEntityRecordNonTransientEdits"); const { transientEdits } = getEntityConfig(state, kind, name) || {}; const edits = getEntityRecordEdits(state, kind, name, recordId) || {}; if (!transientEdits) { return edits; } return Object.keys(edits).reduce((acc, key) => { if (!transientEdits[key]) { acc[key] = edits[key]; } return acc; }, {}); }, (state, kind, name, recordId) => [ state.entities.config, state.entities.records?.[kind]?.[name]?.edits?.[recordId] ] ); function hasEditsForEntityRecord(state, kind, name, recordId) { logEntityDeprecation(kind, name, "hasEditsForEntityRecord"); return isSavingEntityRecord(state, kind, name, recordId) || Object.keys( getEntityRecordNonTransientEdits(state, kind, name, recordId) ).length > 0; } var getEditedEntityRecord = (0, import_data10.createSelector)( (state, kind, name, recordId) => { logEntityDeprecation(kind, name, "getEditedEntityRecord"); const raw = getRawEntityRecord(state, kind, name, recordId); const edited = getEntityRecordEdits(state, kind, name, recordId); if (!raw && !edited) { return false; } return { ...raw, ...edited }; }, (state, kind, name, recordId, query) => { const context = query?.context ?? "default"; return [ state.entities.config, state.entities.records?.[kind]?.[name]?.queriedData.items[context]?.[recordId], state.entities.records?.[kind]?.[name]?.queriedData.itemIsComplete[context]?.[recordId], state.entities.records?.[kind]?.[name]?.edits?.[recordId] ]; } ); function isAutosavingEntityRecord(state, kind, name, recordId) { logEntityDeprecation(kind, name, "isAutosavingEntityRecord"); const { pending, isAutosave } = state.entities.records?.[kind]?.[name]?.saving?.[recordId] ?? {}; return Boolean(pending && isAutosave); } function isSavingEntityRecord(state, kind, name, recordId) { logEntityDeprecation(kind, name, "isSavingEntityRecord"); return state.entities.records?.[kind]?.[name]?.saving?.[recordId]?.pending ?? false; } function isDeletingEntityRecord(state, kind, name, recordId) { logEntityDeprecation(kind, name, "isDeletingEntityRecord"); return state.entities.records?.[kind]?.[name]?.deleting?.[recordId]?.pending ?? false; } function getLastEntitySaveError(state, kind, name, recordId) { logEntityDeprecation(kind, name, "getLastEntitySaveError"); return state.entities.records?.[kind]?.[name]?.saving?.[recordId]?.error; } function getLastEntityDeleteError(state, kind, name, recordId) { logEntityDeprecation(kind, name, "getLastEntityDeleteError"); return state.entities.records?.[kind]?.[name]?.deleting?.[recordId]?.error; } function getUndoEdit(state) { (0, import_deprecated2.default)("select( 'core' ).getUndoEdit()", { since: "6.3" }); return void 0; } function getRedoEdit(state) { (0, import_deprecated2.default)("select( 'core' ).getRedoEdit()", { since: "6.3" }); return void 0; } function hasUndo(state) { return getUndoManager(state).hasUndo(); } function hasRedo(state) { return getUndoManager(state).hasRedo(); } function getCurrentTheme(state) { if (!state.currentTheme) { return null; } return getEntityRecord(state, "root", "theme", state.currentTheme); } function __experimentalGetCurrentGlobalStylesId(state) { return state.currentGlobalStylesId; } function getThemeSupports(state) { return getCurrentTheme(state)?.theme_supports ?? EMPTY_OBJECT; } function getEmbedPreview(state, url) { return state.embedPreviews[url]; } function isPreviewEmbedFallback(state, url) { const preview = state.embedPreviews[url]; const oEmbedLinkCheck = '' + url + ""; if (!preview) { return false; } return preview.html === oEmbedLinkCheck; } function canUser(state, action, resource, id2) { const isEntity = typeof resource === "object"; if (isEntity && (!resource.kind || !resource.name)) { return false; } if (isEntity) { logEntityDeprecation(resource.kind, resource.name, "canUser"); } const key = getUserPermissionCacheKey(action, resource, id2); return state.userPermissions[key]; } function canUserEditEntityRecord(state, kind, name, recordId) { (0, import_deprecated2.default)(`wp.data.select( 'core' ).canUserEditEntityRecord()`, { since: "6.7", alternative: `wp.data.select( 'core' ).canUser( 'update', { kind, name, id } )` }); return canUser(state, "update", { kind, name, id: recordId }); } function getAutosaves(state, postType, postId) { return state.autosaves[postId]; } function getAutosave(state, postType, postId, authorId) { if (authorId === void 0) { return; } const autosaves2 = state.autosaves[postId]; return autosaves2?.find( (autosave) => autosave.author === authorId ); } var hasFetchedAutosaves = (0, import_data10.createRegistrySelector)( (select5) => (state, postType, postId) => { return select5(STORE_NAME).hasFinishedResolution("getAutosaves", [ postType, postId ]); } ); function getReferenceByDistinctEdits(state) { return state.editsReference; } function __experimentalGetCurrentThemeBaseGlobalStyles(state) { const currentTheme2 = getCurrentTheme(state); if (!currentTheme2) { return null; } return state.themeBaseGlobalStyles[currentTheme2.stylesheet]; } function __experimentalGetCurrentThemeGlobalStylesVariations(state) { const currentTheme2 = getCurrentTheme(state); if (!currentTheme2) { return null; } return state.themeGlobalStyleVariations[currentTheme2.stylesheet]; } function getBlockPatterns(state) { return state.blockPatterns; } function getBlockPatternCategories(state) { return state.blockPatternCategories; } function getUserPatternCategories(state) { return state.userPatternCategories; } function getCurrentThemeGlobalStylesRevisions(state) { (0, import_deprecated2.default)("select( 'core' ).getCurrentThemeGlobalStylesRevisions()", { since: "6.5.0", alternative: "select( 'core' ).getRevisions( 'root', 'globalStyles', ${ recordKey } )" }); const currentGlobalStylesId2 = __experimentalGetCurrentGlobalStylesId(state); if (!currentGlobalStylesId2) { return null; } return state.themeGlobalStyleRevisions[currentGlobalStylesId2]; } function getDefaultTemplateId(state, query) { return state.defaultTemplates[JSON.stringify(query)]; } var getRevisions = (state, kind, name, recordKey, query) => { logEntityDeprecation(kind, name, "getRevisions"); const queriedStateRevisions = state.entities.records?.[kind]?.[name]?.revisions?.[recordKey]; if (!queriedStateRevisions) { return null; } return getQueriedItems(queriedStateRevisions, query); }; var getRevision = (0, import_data10.createSelector)( (state, kind, name, recordKey, revisionKey, query) => { logEntityDeprecation(kind, name, "getRevision"); const queriedState = state.entities.records?.[kind]?.[name]?.revisions?.[recordKey]; if (!queriedState) { return void 0; } const context = query?.context ?? "default"; if (!query || !query._fields) { if (!queriedState.itemIsComplete[context]?.[revisionKey]) { return void 0; } return queriedState.items[context][revisionKey]; } const item = queriedState.items[context]?.[revisionKey]; if (!item) { return item; } const filteredItem = {}; const fields = get_normalized_comma_separable_default(query._fields) ?? []; for (let f = 0; f < fields.length; f++) { const field = fields[f].split("."); let value = item; field.forEach((fieldName) => { value = value?.[fieldName]; }); setNestedValue(filteredItem, field, value); } return filteredItem; }, (state, kind, name, recordKey, revisionKey, query) => { const context = query?.context ?? "default"; const queriedState = state.entities.records?.[kind]?.[name]?.revisions?.[recordKey]; return [ queriedState?.items?.[context]?.[revisionKey], queriedState?.itemIsComplete?.[context]?.[revisionKey] ]; } ); // packages/core-data/build-module/actions.mjs var actions_exports = {}; __export(actions_exports, { __experimentalBatch: () => __experimentalBatch, __experimentalReceiveCurrentGlobalStylesId: () => __experimentalReceiveCurrentGlobalStylesId, __experimentalReceiveThemeBaseGlobalStyles: () => __experimentalReceiveThemeBaseGlobalStyles, __experimentalReceiveThemeGlobalStyleVariations: () => __experimentalReceiveThemeGlobalStyleVariations, __experimentalSaveSpecifiedEntityEdits: () => __experimentalSaveSpecifiedEntityEdits, __unstableCreateUndoLevel: () => __unstableCreateUndoLevel, addEntities: () => addEntities, clearEntityRecordEdits: () => clearEntityRecordEdits, deleteEntityRecord: () => deleteEntityRecord, editEntityRecord: () => editEntityRecord, receiveAutosaves: () => receiveAutosaves, receiveCurrentTheme: () => receiveCurrentTheme, receiveCurrentUser: () => receiveCurrentUser, receiveDefaultTemplateId: () => receiveDefaultTemplateId, receiveEmbedPreview: () => receiveEmbedPreview, receiveEntityRecords: () => receiveEntityRecords, receiveNavigationFallbackId: () => receiveNavigationFallbackId, receiveRevisions: () => receiveRevisions, receiveThemeGlobalStyleRevisions: () => receiveThemeGlobalStyleRevisions, receiveThemeSupports: () => receiveThemeSupports, receiveUploadPermissions: () => receiveUploadPermissions, receiveUserPermission: () => receiveUserPermission, receiveUserPermissions: () => receiveUserPermissions, receiveUserQuery: () => receiveUserQuery, redo: () => redo, saveEditedEntityRecord: () => saveEditedEntityRecord, saveEntityRecord: () => saveEntityRecord, undo: () => undo }); var import_es67 = __toESM(require_es6(), 1); var import_api_fetch4 = __toESM(require_api_fetch(), 1); var import_url3 = __toESM(require_url(), 1); var import_deprecated3 = __toESM(require_deprecated(), 1); // packages/core-data/build-module/batch/default-processor.mjs var import_api_fetch3 = __toESM(require_api_fetch(), 1); var maxItems = null; function chunk(arr, chunkSize) { const tmp = [...arr]; const cache3 = []; while (tmp.length) { cache3.push(tmp.splice(0, chunkSize)); } return cache3; } async function defaultProcessor(requests) { if (maxItems === null) { const preflightResponse = await (0, import_api_fetch3.default)({ path: "/batch/v1", method: "OPTIONS" }); maxItems = preflightResponse.endpoints[0].args.requests.maxItems; } const results = []; for (const batchRequests of chunk(requests, maxItems)) { const batchResponse = await (0, import_api_fetch3.default)({ path: "/batch/v1", method: "POST", data: { validation: "require-all-validate", requests: batchRequests.map((request) => ({ path: request.path, body: request.data, // Rename 'data' to 'body'. method: request.method, headers: request.headers })) } }); let batchResults; if (batchResponse.failed) { batchResults = batchResponse.responses.map((response) => ({ error: response?.body })); } else { batchResults = batchResponse.responses.map((response) => { const result = {}; if (response.status >= 200 && response.status < 300) { result.output = response.body; } else { result.error = response.body; } return result; }); } results.push(...batchResults); } return results; } // packages/core-data/build-module/batch/create-batch.mjs function createBatch(processor = defaultProcessor) { let lastId = 0; let queue = []; const pending = new ObservableSet(); return { /** * Adds an input to the batch and returns a promise that is resolved or * rejected when the input is processed by `batch.run()`. * * You may also pass a thunk which allows inputs to be added * asynchronously. * * ``` * // Both are allowed: * batch.add( { path: '/v1/books', ... } ); * batch.add( ( add ) => add( { path: '/v1/books', ... } ) ); * ``` * * If a thunk is passed, `batch.run()` will pause until either: * * - The thunk calls its `add` argument, or; * - The thunk returns a promise and that promise resolves, or; * - The thunk returns a non-promise. * * @param {any|Function} inputOrThunk Input to add or thunk to execute. * * @return {Promise|any} If given an input, returns a promise that * is resolved or rejected when the batch is * processed. If given a thunk, returns the return * value of that thunk. */ add(inputOrThunk) { const id2 = ++lastId; pending.add(id2); const add = (input) => new Promise((resolve, reject) => { queue.push({ input, resolve, reject }); pending.delete(id2); }); if (typeof inputOrThunk === "function") { return Promise.resolve(inputOrThunk(add)).finally(() => { pending.delete(id2); }); } return add(inputOrThunk); }, /** * Runs the batch. This calls `batchProcessor` and resolves or rejects * all promises returned by `add()`. * * @return {Promise} A promise that resolves to a boolean that is true * if the processor returned no errors. */ async run() { if (pending.size) { await new Promise((resolve) => { const unsubscribe = pending.subscribe(() => { if (!pending.size) { unsubscribe(); resolve(void 0); } }); }); } let results; try { results = await processor( queue.map(({ input }) => input) ); if (results.length !== queue.length) { throw new Error( "run: Array returned by processor must be same size as input array." ); } } catch (error) { for (const { reject } of queue) { reject(error); } throw error; } let isSuccess = true; results.forEach((result, key) => { const queueItem = queue[key]; if (result?.error) { queueItem?.reject(result.error); isSuccess = false; } else { queueItem?.resolve(result?.output ?? result); } }); queue = []; return isSuccess; } }; } var ObservableSet = class { constructor(...args2) { this.set = new Set(...args2); this.subscribers = /* @__PURE__ */ new Set(); } get size() { return this.set.size; } add(value) { this.set.add(value); this.subscribers.forEach((subscriber) => subscriber()); return this; } delete(value) { const isSuccess = this.set.delete(value); this.subscribers.forEach((subscriber) => subscriber()); return isSuccess; } subscribe(subscriber) { this.subscribers.add(subscriber); return () => { this.subscribers.delete(subscriber); }; } }; // packages/core-data/build-module/actions.mjs function addTitleToAutoDraft(record) { return record.status === "auto-draft" ? { ...record, title: "" } : record; } function receiveUserQuery(queryID, users2) { return { type: "RECEIVE_USER_QUERY", users: Array.isArray(users2) ? users2 : [users2], queryID }; } function receiveCurrentUser(currentUser2) { return { type: "RECEIVE_CURRENT_USER", currentUser: currentUser2 }; } function addEntities(entities2) { return { type: "ADD_ENTITIES", entities: entities2 }; } function receiveEntityRecords(kind, name, records, query = void 0, invalidateCache = false, edits = void 0, meta = void 0) { if (kind === "postType") { records = Array.isArray(records) ? records.map(addTitleToAutoDraft) : addTitleToAutoDraft(records); } let action; if (query) { action = receiveQueriedItems(records, query, edits, meta); } else { action = receiveItems(records, edits, meta); } return { ...action, kind, name, invalidateCache }; } function receiveCurrentTheme(currentTheme2) { return { type: "RECEIVE_CURRENT_THEME", currentTheme: currentTheme2 }; } function __experimentalReceiveCurrentGlobalStylesId(currentGlobalStylesId2) { return { type: "RECEIVE_CURRENT_GLOBAL_STYLES_ID", id: currentGlobalStylesId2 }; } function __experimentalReceiveThemeBaseGlobalStyles(stylesheet, globalStyles) { return { type: "RECEIVE_THEME_GLOBAL_STYLES", stylesheet, globalStyles }; } function __experimentalReceiveThemeGlobalStyleVariations(stylesheet, variations) { return { type: "RECEIVE_THEME_GLOBAL_STYLE_VARIATIONS", stylesheet, variations }; } function receiveThemeSupports() { (0, import_deprecated3.default)("wp.data.dispatch( 'core' ).receiveThemeSupports", { since: "5.9" }); return { type: "DO_NOTHING" }; } function receiveThemeGlobalStyleRevisions(currentId, revisions) { (0, import_deprecated3.default)( "wp.data.dispatch( 'core' ).receiveThemeGlobalStyleRevisions()", { since: "6.5.0", alternative: "wp.data.dispatch( 'core' ).receiveRevisions" } ); return { type: "RECEIVE_THEME_GLOBAL_STYLE_REVISIONS", currentId, revisions }; } function receiveEmbedPreview(url, preview) { return { type: "RECEIVE_EMBED_PREVIEW", url, preview }; } var deleteEntityRecord = (kind, name, recordId, query, { __unstableFetch = import_api_fetch4.default, throwOnError = false } = {}) => async ({ dispatch: dispatch3, resolveSelect: resolveSelect2 }) => { logEntityDeprecation(kind, name, "deleteEntityRecord"); const configs = await resolveSelect2.getEntitiesConfig(kind); const entityConfig = configs.find( (config) => config.kind === kind && config.name === name ); let error; let deletedRecord = false; if (!entityConfig) { return; } const lock3 = await dispatch3.__unstableAcquireStoreLock( STORE_NAME, ["entities", "records", kind, name, recordId], { exclusive: true } ); try { dispatch3({ type: "DELETE_ENTITY_RECORD_START", kind, name, recordId }); let hasError = false; let { baseURL } = entityConfig; if (kind === "postType" && name === "wp_template" && (recordId && typeof recordId === "string" && !/^\d+$/.test(recordId) || !window?.__experimentalTemplateActivate)) { baseURL = baseURL.slice(0, baseURL.lastIndexOf("/")) + "/templates"; } try { let path = `${baseURL}/${recordId}`; if (query) { path = (0, import_url3.addQueryArgs)(path, query); } deletedRecord = await __unstableFetch({ path, method: "DELETE" }); await dispatch3(removeItems(kind, name, recordId, true)); if (entityConfig.syncConfig) { const objectType = `${kind}/${name}`; const objectId = recordId; getSyncManager()?.unload(objectType, objectId); } } catch (_error) { hasError = true; error = _error; } dispatch3({ type: "DELETE_ENTITY_RECORD_FINISH", kind, name, recordId, error }); if (hasError && throwOnError) { throw error; } return deletedRecord; } finally { dispatch3.__unstableReleaseStoreLock(lock3); } }; var editEntityRecord = (kind, name, recordId, edits, options = {}) => ({ select: select5, dispatch: dispatch3 }) => { logEntityDeprecation(kind, name, "editEntityRecord"); const entityConfig = select5.getEntityConfig(kind, name); if (!entityConfig) { throw new Error( `The entity being edited (${kind}, ${name}) does not have a loaded config.` ); } const { mergedEdits = {} } = entityConfig; const record = select5.getRawEntityRecord(kind, name, recordId); const editedRecord = select5.getEditedEntityRecord( kind, name, recordId ); const editsWithMerges = Object.keys(edits).reduce((acc, key) => { acc[key] = mergedEdits[key] ? { ...editedRecord[key], ...edits[key] } : edits[key]; return acc; }, {}); const edit = { kind, name, recordId, // Clear edits when they are equal to their persisted counterparts // so that the property is not considered dirty. edits: Object.keys(edits).reduce((acc, key) => { const recordValue = record[key]; const value = editsWithMerges[key]; acc[key] = (0, import_es67.default)(recordValue, value) ? void 0 : value; return acc; }, {}) }; if (entityConfig.syncConfig) { const objectType = `${kind}/${name}`; const objectId = recordId; const isNewUndoLevel = options.undoIgnore ? false : !options.isCached; const origin2 = options.undoIgnore ? LOCAL_UNDO_IGNORED_ORIGIN2 : LOCAL_EDITOR_ORIGIN2; getSyncManager()?.update( objectType, objectId, editsWithMerges, origin2, { isNewUndoLevel } ); } if (!options.undoIgnore) { select5.getUndoManager().addRecord( [ { id: { kind, name, recordId }, changes: Object.keys(edits).reduce((acc, key) => { acc[key] = { from: editedRecord[key], to: edits[key] }; return acc; }, {}) } ], options.isCached ); } dispatch3({ type: "EDIT_ENTITY_RECORD", ...edit }); }; var clearEntityRecordEdits = (kind, name, recordId) => ({ select: select5, dispatch: dispatch3 }) => { const entityConfig = select5.getEntityConfig(kind, name); logEntityDeprecation(kind, name, "clearEntityRecordEdits"); if (!entityConfig) { throw new Error( `The entity being edited (${kind}, ${name}) does not have a loaded config.` ); } const currentEdits = select5.getEntityRecordEdits( kind, name, recordId ); if (!currentEdits) { return; } const clearedEdits = Object.keys(currentEdits).reduce( (acc, key) => { acc[key] = void 0; return acc; }, {} ); dispatch3({ type: "EDIT_ENTITY_RECORD", kind, name, recordId, edits: clearedEdits }); }; var undo = () => ({ select: select5, dispatch: dispatch3 }) => { const undoRecord = select5.getUndoManager().undo(); if (!undoRecord) { return; } dispatch3({ type: "UNDO", record: undoRecord }); }; var redo = () => ({ select: select5, dispatch: dispatch3 }) => { const redoRecord = select5.getUndoManager().redo(); if (!redoRecord) { return; } dispatch3({ type: "REDO", record: redoRecord }); }; var __unstableCreateUndoLevel = () => ({ select: select5 }) => { select5.getUndoManager().addRecord(); }; var saveEntityRecord = (kind, name, record, { isAutosave = false, __unstableFetch = import_api_fetch4.default, throwOnError = false } = {}) => async ({ select: select5, resolveSelect: resolveSelect2, dispatch: dispatch3 }) => { logEntityDeprecation(kind, name, "saveEntityRecord"); const configs = await resolveSelect2.getEntitiesConfig(kind); const entityConfig = configs.find( (config) => config.kind === kind && config.name === name ); if (!entityConfig) { return; } const entityIdKey = entityConfig.key ?? DEFAULT_ENTITY_KEY; const recordId = record[entityIdKey]; const isNewRecord = !!entityIdKey && !recordId; const lock3 = await dispatch3.__unstableAcquireStoreLock( STORE_NAME, ["entities", "records", kind, name, recordId || v4_default()], { exclusive: true } ); try { for (const [key, value] of Object.entries(record)) { if (typeof value === "function") { const evaluatedValue = value( select5.getEditedEntityRecord(kind, name, recordId) ); dispatch3.editEntityRecord( kind, name, recordId, { [key]: evaluatedValue }, { undoIgnore: true } ); record[key] = evaluatedValue; } } dispatch3({ type: "SAVE_ENTITY_RECORD_START", kind, name, recordId, isAutosave }); let updatedRecord; let error; let hasError = false; let { baseURL } = entityConfig; if (kind === "postType" && name === "wp_template" && (recordId && typeof recordId === "string" && !/^\d+$/.test(recordId) || !window?.__experimentalTemplateActivate)) { baseURL = baseURL.slice(0, baseURL.lastIndexOf("/")) + "/templates"; } try { const path = `${baseURL}${recordId ? "/" + recordId : ""}`; const persistedRecord = !isNewRecord ? select5.getRawEntityRecord(kind, name, recordId) : {}; if (isAutosave) { const currentUser2 = select5.getCurrentUser(); const currentUserId = currentUser2 ? currentUser2.id : void 0; const autosavePost = await resolveSelect2.getAutosave( persistedRecord.type, persistedRecord.id, currentUserId ); let data = { ...persistedRecord, ...autosavePost, ...record }; data = Object.keys(data).reduce( (acc, key) => { if ([ "title", "excerpt", "content", "meta" ].includes(key)) { acc[key] = data[key]; } return acc; }, { // Do not update the `status` if we have edited it when auto saving. // It's very important to let the user explicitly save this change, // because it can lead to unexpected results. An example would be to // have a draft post and change the status to publish. status: data.status === "auto-draft" ? "draft" : void 0 } ); updatedRecord = await __unstableFetch({ path: `${path}/autosaves`, method: "POST", data }); if (persistedRecord.id === updatedRecord.id) { let newRecord = { ...persistedRecord, ...data, ...updatedRecord }; newRecord = Object.keys(newRecord).reduce( (acc, key) => { if (["title", "excerpt", "content"].includes( key )) { acc[key] = newRecord[key]; } else if (key === "status") { acc[key] = persistedRecord.status === "auto-draft" && newRecord.status === "draft" ? newRecord.status : persistedRecord.status; } else { acc[key] = persistedRecord[key]; } return acc; }, {} ); dispatch3.receiveEntityRecords( kind, name, newRecord, void 0, true ); } else { dispatch3.receiveAutosaves( persistedRecord.id, updatedRecord ); } } else { let edits = record; if (entityConfig.__unstablePrePersist) { edits = { ...edits, ...await entityConfig.__unstablePrePersist( persistedRecord, edits ) }; } updatedRecord = await __unstableFetch({ path, method: recordId ? "PUT" : "POST", data: edits }); dispatch3.receiveEntityRecords( kind, name, updatedRecord, void 0, true, edits ); if (entityConfig.syncConfig) { getSyncManager()?.update( `${kind}/${name}`, recordId, updatedRecord, LOCAL_UNDO_IGNORED_ORIGIN2, { isSave: true } ); } } } catch (_error) { hasError = true; error = _error; } dispatch3({ type: "SAVE_ENTITY_RECORD_FINISH", kind, name, recordId, error, isAutosave }); if (hasError && throwOnError) { throw error; } return updatedRecord; } finally { dispatch3.__unstableReleaseStoreLock(lock3); } }; var __experimentalBatch = (requests) => async ({ dispatch: dispatch3 }) => { const batch = createBatch(); const api = { saveEntityRecord(kind, name, record, options) { return batch.add( (add) => dispatch3.saveEntityRecord(kind, name, record, { ...options, __unstableFetch: add }) ); }, saveEditedEntityRecord(kind, name, recordId, options) { return batch.add( (add) => dispatch3.saveEditedEntityRecord(kind, name, recordId, { ...options, __unstableFetch: add }) ); }, deleteEntityRecord(kind, name, recordId, query, options) { return batch.add( (add) => dispatch3.deleteEntityRecord(kind, name, recordId, query, { ...options, __unstableFetch: add }) ); } }; const resultPromises = requests.map((request) => request(api)); const [, ...results] = await Promise.all([ batch.run(), ...resultPromises ]); return results; }; var saveEditedEntityRecord = (kind, name, recordId, options) => async ({ select: select5, dispatch: dispatch3, resolveSelect: resolveSelect2 }) => { logEntityDeprecation(kind, name, "saveEditedEntityRecord"); if (!select5.hasEditsForEntityRecord(kind, name, recordId)) { return; } const configs = await resolveSelect2.getEntitiesConfig(kind); const entityConfig = configs.find( (config) => config.kind === kind && config.name === name ); if (!entityConfig) { return; } const entityIdKey = entityConfig.key || DEFAULT_ENTITY_KEY; const edits = select5.getEntityRecordNonTransientEdits( kind, name, recordId ); const record = { [entityIdKey]: recordId, ...edits }; return await dispatch3.saveEntityRecord(kind, name, record, options); }; var __experimentalSaveSpecifiedEntityEdits = (kind, name, recordId, itemsToSave, options) => async ({ select: select5, dispatch: dispatch3, resolveSelect: resolveSelect2 }) => { logEntityDeprecation( kind, name, "__experimentalSaveSpecifiedEntityEdits" ); if (!select5.hasEditsForEntityRecord(kind, name, recordId)) { return; } const edits = select5.getEntityRecordNonTransientEdits( kind, name, recordId ); const editsToSave = {}; for (const item of itemsToSave) { setNestedValue(editsToSave, item, getNestedValue(edits, item)); } const configs = await resolveSelect2.getEntitiesConfig(kind); const entityConfig = configs.find( (config) => config.kind === kind && config.name === name ); const entityIdKey = entityConfig?.key || DEFAULT_ENTITY_KEY; if (recordId) { editsToSave[entityIdKey] = recordId; } return await dispatch3.saveEntityRecord( kind, name, editsToSave, options ); }; function receiveUploadPermissions(hasUploadPermissions) { (0, import_deprecated3.default)("wp.data.dispatch( 'core' ).receiveUploadPermissions", { since: "5.9", alternative: "receiveUserPermission" }); return receiveUserPermission("create/media", hasUploadPermissions); } function receiveUserPermission(key, isAllowed) { return { type: "RECEIVE_USER_PERMISSION", key, isAllowed }; } function receiveUserPermissions(permissions) { return { type: "RECEIVE_USER_PERMISSIONS", permissions }; } function receiveAutosaves(postId, autosaves2) { return { type: "RECEIVE_AUTOSAVES", postId, autosaves: Array.isArray(autosaves2) ? autosaves2 : [autosaves2] }; } function receiveNavigationFallbackId(fallbackId) { return { type: "RECEIVE_NAVIGATION_FALLBACK_ID", fallbackId }; } function receiveDefaultTemplateId(query, templateId) { return { type: "RECEIVE_DEFAULT_TEMPLATE", query, templateId }; } var receiveRevisions = (kind, name, recordKey, records, query, invalidateCache = false, meta) => async ({ dispatch: dispatch3, resolveSelect: resolveSelect2 }) => { logEntityDeprecation(kind, name, "receiveRevisions"); const configs = await resolveSelect2.getEntitiesConfig(kind); const entityConfig = configs.find( (config) => config.kind === kind && config.name === name ); const key = entityConfig && entityConfig?.revisionKey ? entityConfig.revisionKey : DEFAULT_ENTITY_KEY; dispatch3({ type: "RECEIVE_ITEM_REVISIONS", key, items: records, recordKey, meta, query, kind, name, invalidateCache }); }; // packages/core-data/build-module/private-actions.mjs var private_actions_exports = {}; __export(private_actions_exports, { editMediaEntity: () => editMediaEntity, receiveEditorAssets: () => receiveEditorAssets, receiveEditorSettings: () => receiveEditorSettings, receiveRegisteredPostMeta: () => receiveRegisteredPostMeta, setCollaborationSupported: () => setCollaborationSupported, setSyncConnectionStatus: () => setSyncConnectionStatus }); var import_api_fetch5 = __toESM(require_api_fetch(), 1); function receiveRegisteredPostMeta(postType, registeredPostMeta2) { return { type: "RECEIVE_REGISTERED_POST_META", postType, registeredPostMeta: registeredPostMeta2 }; } var editMediaEntity = (recordId, edits = {}, { __unstableFetch = import_api_fetch5.default, throwOnError = false } = {}) => async ({ dispatch: dispatch3, resolveSelect: resolveSelect2 }) => { if (!recordId) { return; } const kind = "postType"; const name = "attachment"; const configs = await resolveSelect2.getEntitiesConfig(kind); const entityConfig = configs.find( (config) => config.kind === kind && config.name === name ); if (!entityConfig) { return; } const lock3 = await dispatch3.__unstableAcquireStoreLock( STORE_NAME, ["entities", "records", kind, name, recordId], { exclusive: true } ); let updatedRecord; let error; let hasError = false; try { dispatch3({ type: "SAVE_ENTITY_RECORD_START", kind, name, recordId }); try { const path = `${entityConfig.baseURL}/${recordId}/edit`; const newRecord = await __unstableFetch({ path, method: "POST", data: { ...edits } }); if (newRecord) { dispatch3.receiveEntityRecords( kind, name, newRecord, void 0, true, void 0, void 0 ); updatedRecord = newRecord; } } catch (e) { error = e; hasError = true; } dispatch3({ type: "SAVE_ENTITY_RECORD_FINISH", kind, name, recordId, error }); if (hasError && throwOnError) { throw error; } return updatedRecord; } finally { dispatch3.__unstableReleaseStoreLock(lock3); } }; function receiveEditorSettings(settings) { return { type: "RECEIVE_EDITOR_SETTINGS", settings }; } function receiveEditorAssets(assets) { return { type: "RECEIVE_EDITOR_ASSETS", assets }; } var setCollaborationSupported = (supported) => ({ dispatch: dispatch3 }) => { dispatch3({ type: "SET_COLLABORATION_SUPPORTED", supported }); }; function setSyncConnectionStatus(kind, name, key, status) { if (!status) { return { type: "CLEAR_SYNC_CONNECTION_STATUS", kind, name, key }; } return { type: "SET_SYNC_CONNECTION_STATUS", kind, name, key, status }; } // packages/core-data/build-module/resolvers.mjs var resolvers_exports = {}; __export(resolvers_exports, { __experimentalGetCurrentGlobalStylesId: () => __experimentalGetCurrentGlobalStylesId2, __experimentalGetCurrentThemeBaseGlobalStyles: () => __experimentalGetCurrentThemeBaseGlobalStyles2, __experimentalGetCurrentThemeGlobalStylesVariations: () => __experimentalGetCurrentThemeGlobalStylesVariations2, canUser: () => canUser2, canUserEditEntityRecord: () => canUserEditEntityRecord2, getAuthors: () => getAuthors2, getAutosave: () => getAutosave2, getAutosaves: () => getAutosaves2, getBlockPatternCategories: () => getBlockPatternCategories2, getBlockPatterns: () => getBlockPatterns2, getCurrentTheme: () => getCurrentTheme2, getCurrentThemeGlobalStylesRevisions: () => getCurrentThemeGlobalStylesRevisions2, getCurrentUser: () => getCurrentUser2, getDefaultTemplateId: () => getDefaultTemplateId2, getEditedEntityRecord: () => getEditedEntityRecord2, getEditorAssets: () => getEditorAssets2, getEditorSettings: () => getEditorSettings2, getEmbedPreview: () => getEmbedPreview2, getEntitiesConfig: () => getEntitiesConfig2, getEntityRecord: () => getEntityRecord2, getEntityRecords: () => getEntityRecords2, getEntityRecordsTotalItems: () => getEntityRecordsTotalItems2, getEntityRecordsTotalPages: () => getEntityRecordsTotalPages2, getNavigationFallbackId: () => getNavigationFallbackId2, getRawEntityRecord: () => getRawEntityRecord2, getRegisteredPostMeta: () => getRegisteredPostMeta2, getRevision: () => getRevision2, getRevisions: () => getRevisions2, getThemeSupports: () => getThemeSupports2, getUserPatternCategories: () => getUserPatternCategories2 }); var import_url6 = __toESM(require_url(), 1); var import_html_entities2 = __toESM(require_html_entities(), 1); var import_api_fetch9 = __toESM(require_api_fetch(), 1); // packages/core-data/build-module/fetch/index.mjs var import_api_fetch8 = __toESM(require_api_fetch(), 1); // packages/core-data/build-module/fetch/__experimental-fetch-link-suggestions.mjs var import_api_fetch6 = __toESM(require_api_fetch(), 1); var import_url4 = __toESM(require_url(), 1); var import_html_entities = __toESM(require_html_entities(), 1); var import_i18n2 = __toESM(require_i18n(), 1); async function fetchLinkSuggestions(search, searchOptions = {}, editorSettings2 = {}) { const searchOptionsToUse = searchOptions.isInitialSuggestions && searchOptions.initialSuggestionsSearchOptions ? { ...searchOptions, ...searchOptions.initialSuggestionsSearchOptions } : searchOptions; const { type, subtype, page, perPage = searchOptions.isInitialSuggestions ? 3 : 20 } = searchOptionsToUse; const { disablePostFormats = false } = editorSettings2; const queries2 = []; if (!type || type === "post") { queries2.push( (0, import_api_fetch6.default)({ path: (0, import_url4.addQueryArgs)("/wp/v2/search", { search, page, per_page: perPage, type: "post", subtype }) }).then((results2) => { return results2.map((result) => { return { id: result.id, url: result.url, title: (0, import_html_entities.decodeEntities)(result.title || "") || (0, import_i18n2.__)("(no title)"), type: result.subtype || result.type, kind: "post-type" }; }); }).catch(() => []) // Fail by returning no results. ); } if (!type || type === "term") { queries2.push( (0, import_api_fetch6.default)({ path: (0, import_url4.addQueryArgs)("/wp/v2/search", { search, page, per_page: perPage, type: "term", subtype }) }).then((results2) => { return results2.map((result) => { return { id: result.id, url: result.url, title: (0, import_html_entities.decodeEntities)(result.title || "") || (0, import_i18n2.__)("(no title)"), type: result.subtype || result.type, kind: "taxonomy" }; }); }).catch(() => []) // Fail by returning no results. ); } if (!disablePostFormats && (!type || type === "post-format")) { queries2.push( (0, import_api_fetch6.default)({ path: (0, import_url4.addQueryArgs)("/wp/v2/search", { search, page, per_page: perPage, type: "post-format", subtype }) }).then((results2) => { return results2.map((result) => { return { id: result.id, url: result.url, title: (0, import_html_entities.decodeEntities)(result.title || "") || (0, import_i18n2.__)("(no title)"), type: result.subtype || result.type, kind: "taxonomy" }; }); }).catch(() => []) // Fail by returning no results. ); } if (!type || type === "attachment") { queries2.push( (0, import_api_fetch6.default)({ path: (0, import_url4.addQueryArgs)("/wp/v2/media", { search, page, per_page: perPage }) }).then((results2) => { return results2.map((result) => { return { id: result.id, url: result.source_url, title: (0, import_html_entities.decodeEntities)(result.title.rendered || "") || (0, import_i18n2.__)("(no title)"), type: result.type, kind: "media" }; }); }).catch(() => []) // Fail by returning no results. ); } const responses = await Promise.all(queries2); let results = responses.flat(); results = results.filter((result) => !!result.id); results = sortResults(results, search); results = results.slice(0, perPage); return results; } function sortResults(results, search) { const searchTokens = tokenize2(search); const scores = {}; for (const result of results) { if (result.title) { const titleTokens = tokenize2(result.title); const exactMatchingTokens = titleTokens.filter( (titleToken) => searchTokens.some( (searchToken) => titleToken === searchToken ) ); const subMatchingTokens = titleTokens.filter( (titleToken) => searchTokens.some( (searchToken) => titleToken !== searchToken && titleToken.includes(searchToken) ) ); const exactMatchScore = exactMatchingTokens.length / titleTokens.length * 10; const subMatchScore = subMatchingTokens.length / titleTokens.length; scores[result.id] = exactMatchScore + subMatchScore; } else { scores[result.id] = 0; } } return results.sort((a, b) => scores[b.id] - scores[a.id]); } function tokenize2(text2) { return text2.toLowerCase().match(/[\p{L}\p{N}]+/gu) || []; } // packages/core-data/build-module/fetch/__experimental-fetch-url-data.mjs var import_api_fetch7 = __toESM(require_api_fetch(), 1); var import_url5 = __toESM(require_url(), 1); var CACHE = /* @__PURE__ */ new Map(); var fetchUrlData = async (url, options = {}) => { const endpoint = "/wp-block-editor/v1/url-details"; const args2 = { url: (0, import_url5.prependHTTP)(url) }; if (!(0, import_url5.isURL)(url)) { return Promise.reject(`${url} is not a valid URL.`); } const protocol = (0, import_url5.getProtocol)(url); if (!protocol || !(0, import_url5.isValidProtocol)(protocol) || !protocol.startsWith("http") || !/^https?:\/\/[^\/\s]/i.test(url)) { return Promise.reject( `${url} does not have a valid protocol. URLs must be "http" based` ); } if (CACHE.has(url)) { return CACHE.get(url); } return (0, import_api_fetch7.default)({ path: (0, import_url5.addQueryArgs)(endpoint, args2), ...options }).then((res) => { CACHE.set(url, res); return res; }); }; var experimental_fetch_url_data_default = fetchUrlData; // packages/core-data/build-module/fetch/index.mjs async function fetchBlockPatterns() { const restPatterns = await (0, import_api_fetch8.default)({ path: "/wp/v2/block-patterns/patterns" }); if (!restPatterns) { return []; } return restPatterns.map( (pattern) => Object.fromEntries( Object.entries(pattern).map(([key, value]) => [ camelCase(key), value ]) ) ); } // packages/core-data/build-module/resolvers.mjs var getAuthors2 = (query) => async ({ dispatch: dispatch3 }) => { const path = (0, import_url6.addQueryArgs)( "/wp/v2/users/?who=authors&per_page=100", query ); const users2 = await (0, import_api_fetch9.default)({ path }); dispatch3.receiveUserQuery(path, users2); }; var getCurrentUser2 = () => async ({ dispatch: dispatch3 }) => { const currentUser2 = await (0, import_api_fetch9.default)({ path: "/wp/v2/users/me" }); dispatch3.receiveCurrentUser(currentUser2); }; var getEntityRecord2 = (kind, name, key = "", query) => async ({ select: select5, dispatch: dispatch3, registry, resolveSelect: resolveSelect2 }) => { const configs = await resolveSelect2.getEntitiesConfig(kind); const entityConfig = configs.find( (config) => config.name === name && config.kind === kind ); if (!entityConfig) { return; } const lock3 = await dispatch3.__unstableAcquireStoreLock( STORE_NAME, ["entities", "records", kind, name, key], { exclusive: false } ); try { if (query !== void 0 && query._fields) { query = { ...query, _fields: [ .../* @__PURE__ */ new Set([ ...get_normalized_comma_separable_default(query._fields) || [], entityConfig.key || DEFAULT_ENTITY_KEY ]) ].join() }; } if (query !== void 0 && query._fields) { const hasRecord = select5.hasEntityRecord( kind, name, key, query ); if (hasRecord) { return; } } let { baseURL } = entityConfig; if (kind === "postType" && name === "wp_template" && (key && typeof key === "string" && !/^\d+$/.test(key) || !window?.__experimentalTemplateActivate)) { baseURL = baseURL.slice(0, baseURL.lastIndexOf("/")) + "/templates"; } const path = (0, import_url6.addQueryArgs)(baseURL + (key ? "/" + key : ""), { ...entityConfig.baseURLParams, ...query }); const response = await (0, import_api_fetch9.default)({ path, parse: false }); const record = await response.json(); const permissions = getUserPermissionsFromAllowHeader( response.headers?.get("allow") ); const canUserResolutionsArgs = []; const receiveUserPermissionArgs = {}; for (const action of ALLOWED_RESOURCE_ACTIONS) { receiveUserPermissionArgs[getUserPermissionCacheKey(action, { kind, name, id: key })] = permissions[action]; canUserResolutionsArgs.push([ action, { kind, name, id: key } ]); } if (entityConfig.syncConfig && isNumericID(key) && !query) { const objectType = `${kind}/${name}`; const objectId = key; const recordWithTransients = { ...record }; Object.entries(entityConfig.transientEdits ?? {}).filter( ([propName, transientConfig]) => void 0 === recordWithTransients[propName] && transientConfig && "object" === typeof transientConfig && "read" in transientConfig && "function" === typeof transientConfig.read ).forEach(([propName, transientConfig]) => { recordWithTransients[propName] = transientConfig.read(recordWithTransients); }); void getSyncManager()?.load( entityConfig.syncConfig, objectType, objectId, recordWithTransients, { // Handle edits sourced from the sync manager. editRecord: (edits, options = {}) => { if (!Object.keys(edits).length) { return; } dispatch3({ type: "EDIT_ENTITY_RECORD", kind, name, recordId: key, edits, meta: { undo: void 0 }, options }); }, // Get the current entity record (with edits) getEditedRecord: async () => await resolveSelect2.getEditedEntityRecord( kind, name, key ), // Handle sync connection status changes. onStatusChange: (status) => { dispatch3.setSyncConnectionStatus( kind, name, key, status ); }, // Refetch the current entity record from the database. refetchRecord: async () => { dispatch3.receiveEntityRecords( kind, name, await (0, import_api_fetch9.default)({ path, parse: true }), query ); }, // Persist the CRDT document. // // TODO: Currently, persisted CRDT documents are stored in post meta. // This effectively means that only post entities support CRDT // persistence. As we add support for syncing additional entity, // we'll need to revisit where persisted CRDT documents are stored. persistCRDTDoc: () => { resolveSelect2.getEditedEntityRecord(kind, name, key).then((editedRecord) => { const { meta, status } = editedRecord; if ("auto-draft" === status || !meta) { return; } dispatch3.saveEntityRecord( kind, name, editedRecord ); }); }, addUndoMeta: (ydoc, meta) => { const selectionHistory = getSelectionHistory(ydoc); if (selectionHistory) { meta.set( "selectionHistory", selectionHistory ); } }, restoreUndoMeta: (ydoc, meta) => { const selectionHistory = meta.get("selectionHistory"); if (selectionHistory) { setTimeout(() => { restoreSelection(selectionHistory, ydoc); }, 0); } } } ); } registry.batch(() => { dispatch3.receiveEntityRecords(kind, name, record, query); dispatch3.receiveUserPermissions(receiveUserPermissionArgs); dispatch3.finishResolutions("canUser", canUserResolutionsArgs); }); } finally { dispatch3.__unstableReleaseStoreLock(lock3); } }; getEntityRecord2.shouldInvalidate = (action, kind, name) => { return kind === "root" && name === "site" && (action.type === "RECEIVE_ITEMS" && // Making sure persistedEdits is set seems to be the only way of // knowing whether it's an update or fetch. Only an update would // have persistedEdits. action.persistedEdits && action.persistedEdits.status !== "auto-draft" || action.type === "REMOVE_ITEMS") && action.kind === "postType" && action.name === "wp_template"; }; var getRawEntityRecord2 = forward_resolver_default("getEntityRecord"); var getEditedEntityRecord2 = forward_resolver_default("getEntityRecord"); var getEntityRecords2 = (kind, name, query = {}) => async ({ dispatch: dispatch3, registry, resolveSelect: resolveSelect2 }) => { const configs = await resolveSelect2.getEntitiesConfig(kind); const entityConfig = configs.find( (config) => config.name === name && config.kind === kind ); if (!entityConfig) { return; } const lock3 = await dispatch3.__unstableAcquireStoreLock( STORE_NAME, ["entities", "records", kind, name], { exclusive: false } ); const rawQuery = { ...query }; const key = entityConfig.key || DEFAULT_ENTITY_KEY; function getResolutionsArgs(records, recordsQuery) { const queryArgs = Object.fromEntries( Object.entries(recordsQuery).filter(([k, v]) => { return ["context", "_fields"].includes(k) && !!v; }) ); return records.filter((record) => record?.[key]).map((record) => [ kind, name, record[key], Object.keys(queryArgs).length > 0 ? queryArgs : void 0 ]); } try { if (query._fields) { query = { ...query, _fields: [ .../* @__PURE__ */ new Set([ ...get_normalized_comma_separable_default(query._fields) || [], key ]) ].join() }; } let { baseURL } = entityConfig; const { combinedTemplates = true } = query; if (kind === "postType" && name === "wp_template" && combinedTemplates) { baseURL = baseURL.slice(0, baseURL.lastIndexOf("/")) + "/templates"; } const path = (0, import_url6.addQueryArgs)(baseURL, { ...entityConfig.baseURLParams, ...query }); let records = [], meta; if (entityConfig.supportsPagination && query.per_page !== -1) { const response = await (0, import_api_fetch9.default)({ path, parse: false }); records = Object.values(await response.json()); meta = { totalItems: parseInt( response.headers.get("X-WP-Total") ), totalPages: parseInt( response.headers.get("X-WP-TotalPages") ) }; } else if (query.per_page === -1 && query[RECEIVE_INTERMEDIATE_RESULTS] === true) { let page = 1; let totalPages; do { const response = await (0, import_api_fetch9.default)({ path: (0, import_url6.addQueryArgs)(path, { page, per_page: 100 }), parse: false }); const pageRecords = Object.values(await response.json()); totalPages = parseInt( response.headers.get("X-WP-TotalPages") ); if (!meta) { meta = { totalItems: parseInt( response.headers.get("X-WP-Total") ), totalPages: 1 }; } records.push(...pageRecords); registry.batch(() => { dispatch3.receiveEntityRecords( kind, name, records, query, false, void 0, meta ); dispatch3.finishResolutions( "getEntityRecord", getResolutionsArgs(pageRecords, rawQuery) ); }); page++; } while (page <= totalPages); } else { records = Object.values(await (0, import_api_fetch9.default)({ path })); meta = { totalItems: records.length, totalPages: 1 }; } if (entityConfig.syncConfig && -1 === query.per_page) { const objectType = `${kind}/${name}`; getSyncManager()?.loadCollection( entityConfig.syncConfig, objectType, { onStatusChange: (status) => { dispatch3.setSyncConnectionStatus( kind, name, null, status ); }, refetchRecords: async () => { dispatch3.receiveEntityRecords( kind, name, await (0, import_api_fetch9.default)({ path, parse: true }), query ); } } ); } if (query._fields) { records = records.map((record) => { query._fields.split(",").forEach((field) => { if (!record.hasOwnProperty(field)) { record[field] = void 0; } }); return record; }); } registry.batch(() => { dispatch3.receiveEntityRecords( kind, name, records, query, false, void 0, meta ); const targetHints = records.filter( (record) => !!record?.[key] && !!record?._links?.self?.[0]?.targetHints?.allow ).map((record) => ({ id: record[key], permissions: getUserPermissionsFromAllowHeader( record._links.self[0].targetHints.allow ) })); const canUserResolutionsArgs = []; const receiveUserPermissionArgs = {}; for (const targetHint of targetHints) { for (const action of ALLOWED_RESOURCE_ACTIONS) { canUserResolutionsArgs.push([ action, { kind, name, id: targetHint.id } ]); receiveUserPermissionArgs[getUserPermissionCacheKey(action, { kind, name, id: targetHint.id })] = targetHint.permissions[action]; } } if (targetHints.length > 0) { dispatch3.receiveUserPermissions( receiveUserPermissionArgs ); dispatch3.finishResolutions( "canUser", canUserResolutionsArgs ); } dispatch3.finishResolutions( "getEntityRecord", getResolutionsArgs(records, rawQuery) ); dispatch3.__unstableReleaseStoreLock(lock3); }); } catch (e) { dispatch3.__unstableReleaseStoreLock(lock3); } }; getEntityRecords2.shouldInvalidate = (action, kind, name) => { return (action.type === "RECEIVE_ITEMS" || action.type === "REMOVE_ITEMS") && action.invalidateCache && kind === action.kind && name === action.name; }; var getEntityRecordsTotalItems2 = forward_resolver_default("getEntityRecords"); var getEntityRecordsTotalPages2 = forward_resolver_default("getEntityRecords"); var getCurrentTheme2 = () => async ({ dispatch: dispatch3, resolveSelect: resolveSelect2 }) => { const activeThemes = await resolveSelect2.getEntityRecords( "root", "theme", { status: "active" } ); dispatch3.receiveCurrentTheme(activeThemes[0]); }; var getThemeSupports2 = forward_resolver_default("getCurrentTheme"); var getEmbedPreview2 = (url) => async ({ dispatch: dispatch3 }) => { try { const embedProxyResponse = await (0, import_api_fetch9.default)({ path: (0, import_url6.addQueryArgs)("/oembed/1.0/proxy", { url }) }); dispatch3.receiveEmbedPreview(url, embedProxyResponse); } catch (error) { dispatch3.receiveEmbedPreview(url, false); } }; var canUser2 = (requestedAction, resource, id2) => async ({ dispatch: dispatch3, registry, resolveSelect: resolveSelect2 }) => { if (!ALLOWED_RESOURCE_ACTIONS.includes(requestedAction)) { throw new Error(`'${requestedAction}' is not a valid action.`); } const { hasStartedResolution } = registry.select(STORE_NAME); for (const relatedAction of ALLOWED_RESOURCE_ACTIONS) { if (relatedAction === requestedAction) { continue; } const isAlreadyResolving = hasStartedResolution("canUser", [ relatedAction, resource, id2 ]); if (isAlreadyResolving) { return; } } let resourcePath = null; if (typeof resource === "object") { if (!resource.kind || !resource.name) { throw new Error("The entity resource object is not valid."); } const configs = await resolveSelect2.getEntitiesConfig( resource.kind ); const entityConfig = configs.find( (config) => config.name === resource.name && config.kind === resource.kind ); if (!entityConfig) { return; } resourcePath = entityConfig.baseURL + (resource.id ? "/" + resource.id : ""); } else { resourcePath = `/wp/v2/${resource}` + (id2 ? "/" + id2 : ""); } let response; try { response = await (0, import_api_fetch9.default)({ path: resourcePath, method: "OPTIONS", parse: false }); } catch (error) { return; } const permissions = getUserPermissionsFromAllowHeader( response.headers?.get("allow") ); registry.batch(() => { for (const action of ALLOWED_RESOURCE_ACTIONS) { const key = getUserPermissionCacheKey(action, resource, id2); dispatch3.receiveUserPermission(key, permissions[action]); if (action !== requestedAction) { dispatch3.finishResolution("canUser", [ action, resource, id2 ]); } } }); }; var canUserEditEntityRecord2 = (kind, name, recordId) => async ({ dispatch: dispatch3 }) => { await dispatch3(canUser2("update", { kind, name, id: recordId })); }; var getAutosaves2 = (postType, postId) => async ({ dispatch: dispatch3, resolveSelect: resolveSelect2 }) => { const { rest_base: restBase, rest_namespace: restNamespace = "wp/v2", supports } = await resolveSelect2.getPostType(postType); if (!supports?.autosave) { return; } const autosaves2 = await (0, import_api_fetch9.default)({ path: `/${restNamespace}/${restBase}/${postId}/autosaves?context=edit` }); if (autosaves2 && autosaves2.length) { dispatch3.receiveAutosaves(postId, autosaves2); } }; var getAutosave2 = (postType, postId) => async ({ resolveSelect: resolveSelect2 }) => { await resolveSelect2.getAutosaves(postType, postId); }; var __experimentalGetCurrentGlobalStylesId2 = () => async ({ dispatch: dispatch3, resolveSelect: resolveSelect2 }) => { const activeThemes = await resolveSelect2.getEntityRecords( "root", "theme", { status: "active" } ); const globalStylesURL = activeThemes?.[0]?._links?.["wp:user-global-styles"]?.[0]?.href; if (!globalStylesURL) { return; } const matches = globalStylesURL.match(/\/(\d+)(?:\?|$)/); const id2 = matches ? Number(matches[1]) : null; if (id2) { dispatch3.__experimentalReceiveCurrentGlobalStylesId(id2); } }; var __experimentalGetCurrentThemeBaseGlobalStyles2 = () => async ({ resolveSelect: resolveSelect2, dispatch: dispatch3 }) => { const currentTheme2 = await resolveSelect2.getCurrentTheme(); const themeGlobalStyles = await (0, import_api_fetch9.default)({ path: `/wp/v2/global-styles/themes/${currentTheme2.stylesheet}?context=view` }); dispatch3.__experimentalReceiveThemeBaseGlobalStyles( currentTheme2.stylesheet, themeGlobalStyles ); }; var __experimentalGetCurrentThemeGlobalStylesVariations2 = () => async ({ resolveSelect: resolveSelect2, dispatch: dispatch3 }) => { const currentTheme2 = await resolveSelect2.getCurrentTheme(); const variations = await (0, import_api_fetch9.default)({ path: `/wp/v2/global-styles/themes/${currentTheme2.stylesheet}/variations?context=view` }); dispatch3.__experimentalReceiveThemeGlobalStyleVariations( currentTheme2.stylesheet, variations ); }; var getCurrentThemeGlobalStylesRevisions2 = () => async ({ resolveSelect: resolveSelect2, dispatch: dispatch3 }) => { const globalStylesId = await resolveSelect2.__experimentalGetCurrentGlobalStylesId(); const record = globalStylesId ? await resolveSelect2.getEntityRecord( "root", "globalStyles", globalStylesId ) : void 0; const revisionsURL = record?._links?.["version-history"]?.[0]?.href; if (revisionsURL) { const resetRevisions = await (0, import_api_fetch9.default)({ url: revisionsURL }); const revisions = resetRevisions?.map( (revision) => Object.fromEntries( Object.entries(revision).map(([key, value]) => [ camelCase(key), value ]) ) ); dispatch3.receiveThemeGlobalStyleRevisions( globalStylesId, revisions ); } }; getCurrentThemeGlobalStylesRevisions2.shouldInvalidate = (action) => { return action.type === "SAVE_ENTITY_RECORD_FINISH" && action.kind === "root" && !action.error && action.name === "globalStyles"; }; var getBlockPatterns2 = () => async ({ dispatch: dispatch3 }) => { const patterns = await fetchBlockPatterns(); dispatch3({ type: "RECEIVE_BLOCK_PATTERNS", patterns }); }; var getBlockPatternCategories2 = () => async ({ dispatch: dispatch3 }) => { const categories = await (0, import_api_fetch9.default)({ path: "/wp/v2/block-patterns/categories" }); dispatch3({ type: "RECEIVE_BLOCK_PATTERN_CATEGORIES", categories }); }; var getUserPatternCategories2 = () => async ({ dispatch: dispatch3, resolveSelect: resolveSelect2 }) => { const patternCategories = await resolveSelect2.getEntityRecords( "taxonomy", "wp_pattern_category", { per_page: -1, _fields: "id,name,description,slug", context: "view" } ); const mappedPatternCategories = patternCategories?.map((userCategory) => ({ ...userCategory, label: (0, import_html_entities2.decodeEntities)(userCategory.name), name: userCategory.slug })) || []; dispatch3({ type: "RECEIVE_USER_PATTERN_CATEGORIES", patternCategories: mappedPatternCategories }); }; var getNavigationFallbackId2 = () => async ({ dispatch: dispatch3, select: select5, registry }) => { const fallback = await (0, import_api_fetch9.default)({ path: (0, import_url6.addQueryArgs)("/wp-block-editor/v1/navigation-fallback", { _embed: true }) }); const record = fallback?._embedded?.self; registry.batch(() => { dispatch3.receiveNavigationFallbackId(fallback?.id); if (!record) { return; } const existingFallbackEntityRecord = select5.getEntityRecord( "postType", "wp_navigation", fallback.id ); const invalidateNavigationQueries = !existingFallbackEntityRecord; dispatch3.receiveEntityRecords( "postType", "wp_navigation", record, void 0, invalidateNavigationQueries ); dispatch3.finishResolution("getEntityRecord", [ "postType", "wp_navigation", fallback.id ]); }); }; var getDefaultTemplateId2 = (query) => async ({ dispatch: dispatch3, registry, resolveSelect: resolveSelect2 }) => { const template = await (0, import_api_fetch9.default)({ path: (0, import_url6.addQueryArgs)("/wp/v2/templates/lookup", query) }); await resolveSelect2.getEntitiesConfig("postType"); const id2 = window?.__experimentalTemplateActivate ? template?.wp_id || template?.id : template?.id; if (id2) { template.id = id2; registry.batch(() => { dispatch3.receiveDefaultTemplateId(query, id2); dispatch3.receiveEntityRecords( "postType", template.type, template ); dispatch3.finishResolution("getEntityRecord", [ "postType", template.type, id2 ]); }); } }; getDefaultTemplateId2.shouldInvalidate = (action) => { return action.type === "RECEIVE_ITEMS" && action.kind === "root" && action.name === "site"; }; var getRevisions2 = (kind, name, recordKey, query = {}) => async ({ dispatch: dispatch3, registry, resolveSelect: resolveSelect2 }) => { const configs = await resolveSelect2.getEntitiesConfig(kind); const entityConfig = configs.find( (config) => config.name === name && config.kind === kind ); if (!entityConfig) { return; } if (query._fields) { query = { ...query, _fields: [ .../* @__PURE__ */ new Set([ ...get_normalized_comma_separable_default(query._fields) || [], entityConfig.revisionKey || DEFAULT_ENTITY_KEY ]) ].join() }; } const path = (0, import_url6.addQueryArgs)( entityConfig.getRevisionsUrl(recordKey), query ); let records, response; const meta = {}; const isPaginated = entityConfig.supportsPagination && query.per_page !== -1; try { response = await (0, import_api_fetch9.default)({ path, parse: !isPaginated }); } catch (error) { return; } if (response) { if (isPaginated) { records = Object.values(await response.json()); meta.totalItems = parseInt( response.headers.get("X-WP-Total") ); } else { records = Object.values(response); } if (query._fields) { records = records.map((record) => { query._fields.split(",").forEach((field) => { if (!record.hasOwnProperty(field)) { record[field] = void 0; } }); return record; }); } registry.batch(() => { dispatch3.receiveRevisions( kind, name, recordKey, records, query, false, meta ); if (!query?._fields && !query.context) { const key = entityConfig.revisionKey || DEFAULT_ENTITY_KEY; const resolutionsArgs = records.filter((record) => record[key]).map((record) => [ kind, name, recordKey, record[key] ]); dispatch3.finishResolutions( "getRevision", resolutionsArgs ); } }); } }; getRevisions2.shouldInvalidate = (action, kind, name, recordKey) => action.type === "SAVE_ENTITY_RECORD_FINISH" && name === action.name && kind === action.kind && !action.error && recordKey === action.recordId; var getRevision2 = (kind, name, recordKey, revisionKey, query) => async ({ dispatch: dispatch3, resolveSelect: resolveSelect2 }) => { const configs = await resolveSelect2.getEntitiesConfig(kind); const entityConfig = configs.find( (config) => config.name === name && config.kind === kind ); if (!entityConfig) { return; } if (query !== void 0 && query._fields) { query = { ...query, _fields: [ .../* @__PURE__ */ new Set([ ...get_normalized_comma_separable_default(query._fields) || [], entityConfig.revisionKey || DEFAULT_ENTITY_KEY ]) ].join() }; } const path = (0, import_url6.addQueryArgs)( entityConfig.getRevisionsUrl(recordKey, revisionKey), query ); let record; try { record = await (0, import_api_fetch9.default)({ path }); } catch (error) { return; } if (record) { dispatch3.receiveRevisions(kind, name, recordKey, record, query); } }; var getRegisteredPostMeta2 = (postType) => async ({ dispatch: dispatch3, resolveSelect: resolveSelect2 }) => { let options; try { const { rest_namespace: restNamespace = "wp/v2", rest_base: restBase } = await resolveSelect2.getPostType(postType) || {}; options = await (0, import_api_fetch9.default)({ path: `${restNamespace}/${restBase}/?context=edit`, method: "OPTIONS" }); } catch (error) { return; } if (options) { dispatch3.receiveRegisteredPostMeta( postType, options?.schema?.properties?.meta?.properties ); } }; var getEntitiesConfig2 = (kind) => async ({ dispatch: dispatch3 }) => { const loader = additionalEntityConfigLoaders.find( (l) => l.kind === kind ); if (!loader) { return; } try { const configs = await loader.loadEntities(); if (!configs.length) { return; } dispatch3.addEntities(configs); } catch { } }; var getEditorSettings2 = () => async ({ dispatch: dispatch3 }) => { const settings = await (0, import_api_fetch9.default)({ path: "/wp-block-editor/v1/settings" }); dispatch3.receiveEditorSettings(settings); }; var getEditorAssets2 = () => async ({ dispatch: dispatch3 }) => { const assets = await (0, import_api_fetch9.default)({ path: "/wp-block-editor/v1/assets" }); dispatch3.receiveEditorAssets(assets); }; // packages/core-data/build-module/locks/utils.mjs function deepCopyLocksTreePath(tree, path) { const newTree = { ...tree }; let currentNode = newTree; for (const branchName of path) { currentNode.children = { ...currentNode.children, [branchName]: { locks: [], children: {}, ...currentNode.children[branchName] } }; currentNode = currentNode.children[branchName]; } return newTree; } function getNode(tree, path) { let currentNode = tree; for (const branchName of path) { const nextNode = currentNode.children[branchName]; if (!nextNode) { return null; } currentNode = nextNode; } return currentNode; } function* iteratePath(tree, path) { let currentNode = tree; yield currentNode; for (const branchName of path) { const nextNode = currentNode.children[branchName]; if (!nextNode) { break; } yield nextNode; currentNode = nextNode; } } function* iterateDescendants(node) { const stack = Object.values(node.children); while (stack.length) { const childNode = stack.pop(); yield childNode; stack.push(...Object.values(childNode.children)); } } function hasConflictingLock({ exclusive }, locks2) { if (exclusive && locks2.length) { return true; } if (!exclusive && locks2.filter((lock3) => lock3.exclusive).length) { return true; } return false; } // packages/core-data/build-module/locks/reducer.mjs var DEFAULT_STATE = { requests: [], tree: { locks: [], children: {} } }; function locks(state = DEFAULT_STATE, action) { switch (action.type) { case "ENQUEUE_LOCK_REQUEST": { const { request } = action; return { ...state, requests: [request, ...state.requests] }; } case "GRANT_LOCK_REQUEST": { const { lock: lock3, request } = action; const { store: store2, path } = request; const storePath = [store2, ...path]; const newTree = deepCopyLocksTreePath(state.tree, storePath); const node = getNode(newTree, storePath); node.locks = [...node.locks, lock3]; return { ...state, requests: state.requests.filter((r) => r !== request), tree: newTree }; } case "RELEASE_LOCK": { const { lock: lock3 } = action; const storePath = [lock3.store, ...lock3.path]; const newTree = deepCopyLocksTreePath(state.tree, storePath); const node = getNode(newTree, storePath); node.locks = node.locks.filter((l) => l !== lock3); return { ...state, tree: newTree }; } } return state; } // packages/core-data/build-module/locks/selectors.mjs function getPendingLockRequests(state) { return state.requests; } function isLockAvailable(state, store2, path, { exclusive }) { const storePath = [store2, ...path]; const locks2 = state.tree; for (const node2 of iteratePath(locks2, storePath)) { if (hasConflictingLock({ exclusive }, node2.locks)) { return false; } } const node = getNode(locks2, storePath); if (!node) { return true; } for (const descendant of iterateDescendants(node)) { if (hasConflictingLock({ exclusive }, descendant.locks)) { return false; } } return true; } // packages/core-data/build-module/locks/engine.mjs function createLocks() { let state = locks(void 0, { type: "@@INIT" }); function processPendingLockRequests() { for (const request of getPendingLockRequests(state)) { const { store: store2, path, exclusive, notifyAcquired } = request; if (isLockAvailable(state, store2, path, { exclusive })) { const lock3 = { store: store2, path, exclusive }; state = locks(state, { type: "GRANT_LOCK_REQUEST", lock: lock3, request }); notifyAcquired(lock3); } } } function acquire(store2, path, exclusive) { return new Promise((resolve) => { state = locks(state, { type: "ENQUEUE_LOCK_REQUEST", request: { store: store2, path, exclusive, notifyAcquired: resolve } }); processPendingLockRequests(); }); } function release(lock3) { state = locks(state, { type: "RELEASE_LOCK", lock: lock3 }); processPendingLockRequests(); } return { acquire, release }; } // packages/core-data/build-module/locks/actions.mjs function createLocksActions() { const locks2 = createLocks(); function __unstableAcquireStoreLock(store2, path, { exclusive }) { return () => locks2.acquire(store2, path, exclusive); } function __unstableReleaseStoreLock(lock3) { return () => locks2.release(lock3); } return { __unstableAcquireStoreLock, __unstableReleaseStoreLock }; } // packages/core-data/build-module/dynamic-entities.mjs var dynamicActions; var dynamicSelectors; // packages/core-data/build-module/entity-provider.mjs var import_element2 = __toESM(require_element(), 1); // packages/core-data/build-module/entity-context.mjs var import_element = __toESM(require_element(), 1); var EntityContext = (0, import_element.createContext)({}); EntityContext.displayName = "EntityContext"; // packages/core-data/build-module/entity-provider.mjs var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); function EntityProvider({ kind, type: name, id: id2, revisionId, children }) { const parent = (0, import_element2.useContext)(EntityContext); const childContext = (0, import_element2.useMemo)( () => ({ ...parent, ...kind && { [kind]: { ...parent?.[kind], [name]: id2 } }, ...revisionId !== void 0 && { revisionId } }), [parent, kind, name, id2, revisionId] ); return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(EntityContext.Provider, { value: childContext, children }); } // packages/core-data/build-module/hooks/use-entity-record.mjs var import_data12 = __toESM(require_data(), 1); var import_deprecated4 = __toESM(require_deprecated(), 1); var import_element3 = __toESM(require_element(), 1); // packages/core-data/build-module/hooks/use-query-select.mjs var import_data11 = __toESM(require_data(), 1); // node_modules/memize/dist/index.js function memize(fn, options) { var size2 = 0; var head; var tail; options = options || {}; function memoized() { var node = head, len = arguments.length, args2, i; searchCache: while (node) { if (node.args.length !== arguments.length) { node = node.next; continue; } for (i = 0; i < len; i++) { if (node.args[i] !== arguments[i]) { node = node.next; continue searchCache; } } if (node !== head) { if (node === tail) { tail = node.prev; } node.prev.next = node.next; if (node.next) { node.next.prev = node.prev; } node.next = head; node.prev = null; head.prev = node; head = node; } return node.val; } args2 = new Array(len); for (i = 0; i < len; i++) { args2[i] = arguments[i]; } node = { args: args2, // Generate the result from original function val: fn.apply(null, args2) }; if (head) { head.prev = node; node.next = head; } else { tail = node; } if (size2 === /** @type {MemizeOptions} */ options.maxSize) { tail = /** @type {MemizeCacheNode} */ tail.prev; tail.next = null; } else { size2++; } head = node; return node.val; } memoized.clear = function() { head = null; tail = null; size2 = 0; }; return memoized; } // packages/core-data/build-module/hooks/memoize.mjs var memoize_default = memize; // packages/core-data/build-module/hooks/constants.mjs var Status = /* @__PURE__ */ ((Status2) => { Status2["Idle"] = "IDLE"; Status2["Resolving"] = "RESOLVING"; Status2["Error"] = "ERROR"; Status2["Success"] = "SUCCESS"; return Status2; })(Status || {}); // packages/core-data/build-module/hooks/use-query-select.mjs var META_SELECTORS = [ "getIsResolving", "hasStartedResolution", "hasFinishedResolution", "isResolving", "getCachedResolvers" ]; function useQuerySelect(mapQuerySelect, deps) { return (0, import_data11.useSelect)((select5, registry) => { const resolve = (store2) => enrichSelectors(select5(store2)); return mapQuerySelect(resolve, registry); }, deps); } var enrichSelectors = memoize_default(((selectors) => { const resolvers = {}; for (const selectorName in selectors) { if (META_SELECTORS.includes(selectorName)) { continue; } Object.defineProperty(resolvers, selectorName, { get: () => (...args2) => { const data = selectors[selectorName](...args2); const resolutionStatus = selectors.getResolutionState( selectorName, args2 )?.status; let status; switch (resolutionStatus) { case "resolving": status = Status.Resolving; break; case "finished": status = Status.Success; break; case "error": status = Status.Error; break; case void 0: status = Status.Idle; break; } return { data, status, isResolving: status === Status.Resolving, hasStarted: status !== Status.Idle, hasResolved: status === Status.Success || status === Status.Error }; } }); } return resolvers; })); // packages/core-data/build-module/hooks/use-entity-record.mjs var EMPTY_OBJECT2 = {}; function useEntityRecord(kind, name, recordId, options = { enabled: true }) { const { editEntityRecord: editEntityRecord2, saveEditedEntityRecord: saveEditedEntityRecord2 } = (0, import_data12.useDispatch)(store); const mutations = (0, import_element3.useMemo)( () => ({ edit: (record2, editOptions = {}) => editEntityRecord2(kind, name, recordId, record2, editOptions), save: (saveOptions = {}) => saveEditedEntityRecord2(kind, name, recordId, { throwOnError: true, ...saveOptions }) }), [editEntityRecord2, kind, name, recordId, saveEditedEntityRecord2] ); const { editedRecord, hasEdits, edits } = (0, import_data12.useSelect)( (select5) => { if (!options.enabled) { return { editedRecord: EMPTY_OBJECT2, hasEdits: false, edits: EMPTY_OBJECT2 }; } return { editedRecord: select5(store).getEditedEntityRecord( kind, name, recordId ), hasEdits: select5(store).hasEditsForEntityRecord( kind, name, recordId ), edits: select5(store).getEntityRecordNonTransientEdits( kind, name, recordId ) }; }, [kind, name, recordId, options.enabled] ); const { data: record, ...querySelectRest } = useQuerySelect( (query) => { if (!options.enabled) { return { data: null }; } return query(store).getEntityRecord(kind, name, recordId); }, [kind, name, recordId, options.enabled] ); return { record, editedRecord, hasEdits, edits, ...querySelectRest, ...mutations }; } function __experimentalUseEntityRecord(kind, name, recordId, options) { (0, import_deprecated4.default)(`wp.data.__experimentalUseEntityRecord`, { alternative: "wp.data.useEntityRecord", since: "6.1" }); return useEntityRecord(kind, name, recordId, options); } // packages/core-data/build-module/hooks/use-entity-records.mjs var import_url7 = __toESM(require_url(), 1); var import_deprecated5 = __toESM(require_deprecated(), 1); var import_data13 = __toESM(require_data(), 1); var import_element4 = __toESM(require_element(), 1); var EMPTY_ARRAY = []; function useEntityRecords(kind, name, queryArgs = {}, options = { enabled: true }) { const queryAsString = (0, import_url7.addQueryArgs)("", queryArgs); const { data: records, ...rest } = useQuerySelect( (query) => { if (!options.enabled) { return { // Avoiding returning a new reference on every execution. data: EMPTY_ARRAY }; } return query(store).getEntityRecords(kind, name, queryArgs); }, [kind, name, queryAsString, options.enabled] ); const { totalItems, totalPages } = (0, import_data13.useSelect)( (select5) => { if (!options.enabled) { return { totalItems: null, totalPages: null }; } return { totalItems: select5(store).getEntityRecordsTotalItems( kind, name, queryArgs ), totalPages: select5(store).getEntityRecordsTotalPages( kind, name, queryArgs ) }; }, [kind, name, queryAsString, options.enabled] ); return { records, totalItems, totalPages, ...rest }; } function __experimentalUseEntityRecords(kind, name, queryArgs, options) { (0, import_deprecated5.default)(`wp.data.__experimentalUseEntityRecords`, { alternative: "wp.data.useEntityRecords", since: "6.1" }); return useEntityRecords(kind, name, queryArgs, options); } function useEntityRecordsWithPermissions(kind, name, queryArgs = {}, options = { enabled: true }) { const entityConfig = (0, import_data13.useSelect)( (select5) => select5(store).getEntityConfig(kind, name), [kind, name] ); const { records: data, ...ret } = useEntityRecords( kind, name, { ...queryArgs, // If _fields is provided, we need to include _links in the request for permission caching to work. ...queryArgs._fields ? { _fields: [ .../* @__PURE__ */ new Set([ ...get_normalized_comma_separable_default( queryArgs._fields ) || [], "_links" ]) ].join() } : {} }, options ); const ids = (0, import_element4.useMemo)( () => data?.map( // @ts-ignore (record) => record[entityConfig?.key ?? "id"] ) ?? [], [data, entityConfig?.key] ); const permissions = (0, import_data13.useSelect)( (select5) => { const { getEntityRecordsPermissions: getEntityRecordsPermissions2 } = unlock2( select5(store) ); return getEntityRecordsPermissions2(kind, name, ids); }, [ids, kind, name] ); const dataWithPermissions = (0, import_element4.useMemo)( () => data?.map((record, index) => ({ // @ts-ignore ...record, permissions: permissions[index] })) ?? [], [data, permissions] ); return { records: dataWithPermissions, ...ret }; } // packages/core-data/build-module/hooks/use-resource-permissions.mjs var import_deprecated6 = __toESM(require_deprecated(), 1); var import_warning = __toESM(require_warning(), 1); function useResourcePermissions(resource, id2) { const isEntity = typeof resource === "object"; const resourceAsString = isEntity ? JSON.stringify(resource) : resource; if (isEntity && typeof id2 !== "undefined") { (0, import_warning.default)( `When 'resource' is an entity object, passing 'id' as a separate argument isn't supported.` ); } return useQuerySelect( (resolve) => { const hasId = isEntity ? !!resource.id : !!id2; const { canUser: canUser3 } = resolve(store); const create9 = canUser3( "create", isEntity ? { kind: resource.kind, name: resource.name } : resource ); if (!hasId) { const read2 = canUser3("read", resource); const isResolving2 = create9.isResolving || read2.isResolving; const hasResolved2 = create9.hasResolved && read2.hasResolved; let status2 = Status.Idle; if (isResolving2) { status2 = Status.Resolving; } else if (hasResolved2) { status2 = Status.Success; } return { status: status2, isResolving: isResolving2, hasResolved: hasResolved2, canCreate: create9.hasResolved && create9.data, canRead: read2.hasResolved && read2.data }; } const read = canUser3("read", resource, id2); const update = canUser3("update", resource, id2); const _delete = canUser3("delete", resource, id2); const isResolving = read.isResolving || create9.isResolving || update.isResolving || _delete.isResolving; const hasResolved = read.hasResolved && create9.hasResolved && update.hasResolved && _delete.hasResolved; let status = Status.Idle; if (isResolving) { status = Status.Resolving; } else if (hasResolved) { status = Status.Success; } return { status, isResolving, hasResolved, canRead: hasResolved && read.data, canCreate: hasResolved && create9.data, canUpdate: hasResolved && update.data, canDelete: hasResolved && _delete.data }; }, [resourceAsString, id2] ); } var use_resource_permissions_default = useResourcePermissions; function __experimentalUseResourcePermissions(resource, id2) { (0, import_deprecated6.default)(`wp.data.__experimentalUseResourcePermissions`, { alternative: "wp.data.useResourcePermissions", since: "6.1" }); return useResourcePermissions(resource, id2); } // packages/core-data/build-module/hooks/use-entity-block-editor.mjs var import_element6 = __toESM(require_element(), 1); var import_data14 = __toESM(require_data(), 1); var import_blocks5 = __toESM(require_blocks(), 1); // packages/core-data/build-module/hooks/use-entity-id.mjs var import_element5 = __toESM(require_element(), 1); function useEntityId(kind, name) { const context = (0, import_element5.useContext)(EntityContext); return context?.[kind]?.[name]; } // packages/core-data/build-module/footnotes/index.mjs var import_rich_text4 = __toESM(require_rich_text(), 1); // packages/core-data/build-module/footnotes/get-rich-text-values-cached.mjs var import_block_editor5 = __toESM(require_block_editor(), 1); var unlockedApis; var cache = /* @__PURE__ */ new WeakMap(); function getRichTextValuesCached(block) { if (!unlockedApis) { unlockedApis = unlock2(import_block_editor5.privateApis); } if (!cache.has(block)) { const values = unlockedApis.getRichTextValues([block]); cache.set(block, values); } return cache.get(block); } // packages/core-data/build-module/footnotes/get-footnotes-order.mjs var cache2 = /* @__PURE__ */ new WeakMap(); function getBlockFootnotesOrder(block) { if (!cache2.has(block)) { const order = []; for (const value of getRichTextValuesCached(block)) { if (!value) { continue; } value.replacements.forEach(({ type, attributes }) => { if (type === "core/footnote") { order.push(attributes["data-fn"]); } }); } cache2.set(block, order); } return cache2.get(block); } function getFootnotesOrder(blocks) { return blocks.flatMap(getBlockFootnotesOrder); } // packages/core-data/build-module/footnotes/index.mjs var oldFootnotes = {}; function updateFootnotesFromMeta(blocks, meta) { const output = { blocks }; if (!meta) { return output; } if (meta.footnotes === void 0) { return output; } const newOrder = getFootnotesOrder(blocks); const footnotes = meta.footnotes ? JSON.parse(meta.footnotes) : []; const currentOrder = footnotes.map((fn) => fn.id); if (currentOrder.join("") === newOrder.join("")) { return output; } const newFootnotes = newOrder.map( (fnId) => footnotes.find((fn) => fn.id === fnId) || oldFootnotes[fnId] || { id: fnId, content: "" } ); function updateAttributes(attributes) { if (!attributes || Array.isArray(attributes) || typeof attributes !== "object") { return attributes; } attributes = { ...attributes }; for (const key in attributes) { const value = attributes[key]; if (Array.isArray(value)) { attributes[key] = value.map(updateAttributes); continue; } if (typeof value !== "string" && !(value instanceof import_rich_text4.RichTextData)) { continue; } const richTextValue = typeof value === "string" ? import_rich_text4.RichTextData.fromHTMLString(value) : new import_rich_text4.RichTextData(value); let hasFootnotes = false; richTextValue.replacements.forEach((replacement) => { if (replacement.type === "core/footnote") { const id2 = replacement.attributes["data-fn"]; const index = newOrder.indexOf(id2); const countValue = (0, import_rich_text4.create)({ html: replacement.innerHTML }); countValue.text = String(index + 1); countValue.formats = Array.from( { length: countValue.text.length }, () => countValue.formats[0] ); countValue.replacements = Array.from( { length: countValue.text.length }, () => countValue.replacements[0] ); replacement.innerHTML = (0, import_rich_text4.toHTMLString)({ value: countValue }); hasFootnotes = true; } }); if (hasFootnotes) { attributes[key] = typeof value === "string" ? richTextValue.toHTMLString() : richTextValue; } } return attributes; } function updateBlocksAttributes(__blocks) { return __blocks.map((block) => { return { ...block, attributes: updateAttributes(block.attributes), innerBlocks: updateBlocksAttributes(block.innerBlocks) }; }); } const newBlocks = updateBlocksAttributes(blocks); oldFootnotes = { ...oldFootnotes, ...footnotes.reduce((acc, fn) => { if (!newOrder.includes(fn.id)) { acc[fn.id] = fn; } return acc; }, {}) }; return { meta: { ...meta, footnotes: JSON.stringify(newFootnotes) }, blocks: newBlocks }; } // packages/core-data/build-module/hooks/use-entity-block-editor.mjs var EMPTY_ARRAY2 = []; var parsedBlocksCache = /* @__PURE__ */ new Map(); function useEntityBlockEditor(kind, name, { id: _id } = {}) { const providerId = useEntityId(kind, name); const id2 = _id ?? providerId; const { content, editedBlocks, meta } = (0, import_data14.useSelect)( (select5) => { if (!id2) { return {}; } const { getEditedEntityRecord: getEditedEntityRecord3 } = select5(STORE_NAME); const editedRecord = getEditedEntityRecord3(kind, name, id2); return { editedBlocks: editedRecord.blocks, content: editedRecord.content, meta: editedRecord.meta }; }, [kind, name, id2] ); const { __unstableCreateUndoLevel: __unstableCreateUndoLevel2, editEntityRecord: editEntityRecord2 } = (0, import_data14.useDispatch)(STORE_NAME); const blocks = (0, import_element6.useMemo)(() => { if (!id2) { return void 0; } if (editedBlocks) { return editedBlocks; } if (!content || typeof content !== "string") { return EMPTY_ARRAY2; } const cacheKey = `${kind}:${name}:${id2}`; const cached = parsedBlocksCache.get(cacheKey); let _blocks; if (cached && cached.content === content) { _blocks = cached.blocks; } else { _blocks = (0, import_blocks5.parse)(content); parsedBlocksCache.set(cacheKey, { content, blocks: _blocks }); } return _blocks; }, [kind, name, id2, editedBlocks, content]); const onChange = (0, import_element6.useCallback)( (newBlocks, options) => { const noChange = blocks === newBlocks; if (noChange) { return __unstableCreateUndoLevel2(kind, name, id2); } const { selection, ...rest } = options; const edits = { selection, content: ({ blocks: blocksForSerialization = [] }) => (0, import_blocks5.__unstableSerializeAndClean)(blocksForSerialization), ...updateFootnotesFromMeta(newBlocks, meta) }; editEntityRecord2(kind, name, id2, edits, { isCached: false, ...rest }); }, [ kind, name, id2, blocks, meta, __unstableCreateUndoLevel2, editEntityRecord2 ] ); const onInput = (0, import_element6.useCallback)( (newBlocks, options) => { const { selection, ...rest } = options; const edits = { selection, ...updateFootnotesFromMeta(newBlocks, meta) }; editEntityRecord2(kind, name, id2, edits, { isCached: true, ...rest }); }, [kind, name, id2, meta, editEntityRecord2] ); return [blocks, onInput, onChange]; } // packages/core-data/build-module/hooks/use-entity-prop.mjs var import_element7 = __toESM(require_element(), 1); var import_data15 = __toESM(require_data(), 1); function useEntityProp(kind, name, prop, _id) { const providerId = useEntityId(kind, name); const id2 = _id ?? providerId; const context = (0, import_element7.useContext)(EntityContext); const revisionId = context?.revisionId; const { value, fullValue } = (0, import_data15.useSelect)( (select5) => { if (revisionId) { const revisions = select5(STORE_NAME).getRevisions( kind, name, id2, { per_page: -1, context: "edit", _fields: "id,date,author,meta,title.raw,excerpt.raw,content.raw" } ); const entityConfig = select5(STORE_NAME).getEntityConfig( kind, name ); const revKey = entityConfig?.revisionKey || DEFAULT_ENTITY_KEY; const revision = revisions?.find( (r) => r[revKey] === revisionId ); return revision ? { value: revision[prop]?.raw ?? revision[prop], fullValue: revision[prop] } : {}; } const { getEntityRecord: getEntityRecord3, getEditedEntityRecord: getEditedEntityRecord3 } = select5(STORE_NAME); const record = getEntityRecord3(kind, name, id2); const editedRecord = getEditedEntityRecord3(kind, name, id2); return record && editedRecord ? { value: editedRecord[prop], fullValue: record[prop] } : {}; }, [kind, name, id2, prop, revisionId] ); const { editEntityRecord: editEntityRecord2 } = (0, import_data15.useDispatch)(STORE_NAME); const setValue = (0, import_element7.useCallback)( (newValue) => { if (revisionId) { return; } editEntityRecord2(kind, name, id2, { [prop]: newValue }); }, [editEntityRecord2, kind, name, id2, prop, revisionId] ); return [value, setValue, fullValue]; } // packages/core-data/build-module/hooks/use-post-editor-awareness-state.mjs var import_compose3 = __toESM(require_compose(), 1); var import_element8 = __toESM(require_element(), 1); var defaultResolvedSelection = { richTextOffset: null, localClientId: null }; var defaultState = { activeCollaborators: [], resolveSelection: () => defaultResolvedSelection, getDebugData: () => ({ doc: {}, clients: {}, collaboratorMap: {} }), isCurrentCollaboratorDisconnected: false }; function getAwarenessState(awareness, newState) { const activeCollaborators = newState ?? awareness.getCurrentState(); return { activeCollaborators, resolveSelection: (selection) => awareness.convertSelectionStateToAbsolute(selection), getDebugData: () => awareness.getDebugData(), isCurrentCollaboratorDisconnected: activeCollaborators.find((collaborator) => collaborator.isMe)?.isConnected === false }; } function usePostEditorAwarenessState(postId, postType) { const [state, setState] = (0, import_element8.useState)(defaultState); (0, import_element8.useEffect)(() => { if (null === postId || null === postType) { setState(defaultState); return; } const objectType = `postType/${postType}`; const objectId = postId.toString(); const awareness = getSyncManager()?.getAwareness( objectType, objectId ); if (!awareness) { setState(defaultState); return; } awareness.setUp(); setState(getAwarenessState(awareness)); const unsubscribe = awareness?.onStateChange( (newState) => { setState(getAwarenessState(awareness, newState)); } ); return unsubscribe; }, [postId, postType]); return state; } function useActiveCollaborators(postId, postType) { return usePostEditorAwarenessState(postId, postType).activeCollaborators; } function useResolvedSelection(postId, postType) { return usePostEditorAwarenessState(postId, postType).resolveSelection; } function useLastPostSave(postId, postType) { const [lastSave, setLastSave] = (0, import_element8.useState)(null); (0, import_element8.useEffect)(() => { if (null === postId || null === postType) { setLastSave(null); return; } const awareness = getSyncManager()?.getAwareness( `postType/${postType}`, postId.toString() ); if (!awareness) { setLastSave(null); return; } awareness.setUp(); const stateMap = awareness.doc.getMap("state"); const recordMap = awareness.doc.getMap("document"); const setupTime = Date.now(); const observer = (event) => { if (event.keysChanged.has("savedAt")) { const savedAt = stateMap.get("savedAt"); const savedByClientId = stateMap.get("savedBy"); if (typeof savedAt === "number" && typeof savedByClientId === "number" && savedAt > setupTime) { const postStatus = recordMap.get("status"); setLastSave({ savedAt, savedByClientId, postStatus }); } } }; stateMap.observe(observer); return () => { stateMap.unobserve(observer); }; }, [postId, postType]); return lastSave; } function useOnCollaboratorJoin(postId, postType, callback) { const { activeCollaborators } = usePostEditorAwarenessState( postId, postType ); const prevCollaborators = (0, import_compose3.usePrevious)(activeCollaborators); (0, import_element8.useEffect)(() => { if (!prevCollaborators || prevCollaborators.length === 0) { return; } const prevMap = new Map( prevCollaborators.map((collaborator) => [ collaborator.clientId, collaborator ]) ); const me = activeCollaborators.find( (collaborator) => collaborator.isMe ); for (const collaborator of activeCollaborators) { if (!prevMap.has(collaborator.clientId) && !collaborator.isMe) { callback(collaborator, me); } } }, [activeCollaborators, prevCollaborators, callback]); } function useOnCollaboratorLeave(postId, postType, callback) { const { activeCollaborators } = usePostEditorAwarenessState( postId, postType ); const prevCollaborators = (0, import_compose3.usePrevious)(activeCollaborators); (0, import_element8.useEffect)(() => { if (!prevCollaborators || prevCollaborators.length === 0) { return; } const newMap = new Map( activeCollaborators.map((collaborator) => [ collaborator.clientId, collaborator ]) ); for (const prevCollab of prevCollaborators) { if (prevCollab.isMe || !prevCollab.isConnected) { continue; } const newCollab = newMap.get(prevCollab.clientId); if (!newCollab?.isConnected) { callback(prevCollab); } } }, [activeCollaborators, prevCollaborators, callback]); } function useOnPostSave(postId, postType, callback) { const { activeCollaborators } = usePostEditorAwarenessState( postId, postType ); const lastPostSave = useLastPostSave(postId, postType); const prevPostSave = (0, import_compose3.usePrevious)(lastPostSave); (0, import_element8.useEffect)(() => { if (!lastPostSave) { return; } if (prevPostSave && lastPostSave.savedAt === prevPostSave.savedAt) { return; } const saver = activeCollaborators.find( (collaborator) => collaborator.clientId === lastPostSave.savedByClientId && !collaborator.isMe ); if (!saver) { return; } callback(lastPostSave, saver, prevPostSave ?? null); }, [lastPostSave, prevPostSave, activeCollaborators, callback]); } // packages/core-data/build-module/private-apis.mjs var lockedApis = { useEntityRecordsWithPermissions, RECEIVE_INTERMEDIATE_RESULTS, retrySyncConnection, useActiveCollaborators, useResolvedSelection, useOnCollaboratorJoin, useOnCollaboratorLeave, useOnPostSave, SelectionType, SelectionDirection }; var privateApis2 = {}; lock2(privateApis2, lockedApis); // packages/core-data/build-module/index.mjs var entitiesConfig2 = [ ...rootEntitiesConfig, ...additionalEntityConfigLoaders.filter((config) => !!config.name) ]; var entitySelectors = entitiesConfig2.reduce((result, entity2) => { const { kind, name, plural } = entity2; const getEntityRecordMethodName = getMethodName(kind, name); result[getEntityRecordMethodName] = (state, key, query) => { logEntityDeprecation(kind, name, getEntityRecordMethodName, { isShorthandSelector: true, alternativeFunctionName: "getEntityRecord" }); return getEntityRecord(state, kind, name, key, query); }; if (plural) { const getEntityRecordsMethodName = getMethodName(kind, plural, "get"); result[getEntityRecordsMethodName] = (state, query) => { logEntityDeprecation(kind, name, getEntityRecordsMethodName, { isShorthandSelector: true, alternativeFunctionName: "getEntityRecords" }); return getEntityRecords(state, kind, name, query); }; } return result; }, {}); var entityResolvers = entitiesConfig2.reduce((result, entity2) => { const { kind, name, plural } = entity2; const getEntityRecordMethodName = getMethodName(kind, name); result[getEntityRecordMethodName] = (key, query) => { logEntityDeprecation(kind, name, getEntityRecordMethodName, { isShorthandSelector: true, alternativeFunctionName: "getEntityRecord" }); return getEntityRecord2(kind, name, key, query); }; if (plural) { const getEntityRecordsMethodName = getMethodName(kind, plural, "get"); result[getEntityRecordsMethodName] = (...args2) => { logEntityDeprecation(kind, plural, getEntityRecordsMethodName, { isShorthandSelector: true, alternativeFunctionName: "getEntityRecords" }); return getEntityRecords2(kind, name, ...args2); }; result[getEntityRecordsMethodName].shouldInvalidate = (action) => getEntityRecords2.shouldInvalidate(action, kind, name); } return result; }, {}); var entityActions = entitiesConfig2.reduce((result, entity2) => { const { kind, name } = entity2; const saveEntityRecordMethodName = getMethodName(kind, name, "save"); result[saveEntityRecordMethodName] = (record, options) => { logEntityDeprecation(kind, name, saveEntityRecordMethodName, { isShorthandSelector: true, alternativeFunctionName: "saveEntityRecord" }); return saveEntityRecord(kind, name, record, options); }; const deleteEntityRecordMethodName = getMethodName(kind, name, "delete"); result[deleteEntityRecordMethodName] = (key, query, options) => { logEntityDeprecation(kind, name, deleteEntityRecordMethodName, { isShorthandSelector: true, alternativeFunctionName: "deleteEntityRecord" }); return deleteEntityRecord(kind, name, key, query, options); }; return result; }, {}); var storeConfig = () => ({ reducer: reducer_default2, actions: { ...dynamicActions, ...actions_exports, ...entityActions, ...createLocksActions() }, selectors: { ...dynamicSelectors, ...selectors_exports, ...entitySelectors }, resolvers: { ...resolvers_exports, ...entityResolvers } }); var store = (0, import_data16.createReduxStore)(STORE_NAME, storeConfig()); unlock2(store).registerPrivateSelectors(private_selectors_exports); unlock2(store).registerPrivateActions(private_actions_exports); (0, import_data16.register)(store); return __toCommonJS(index_exports); })(); dist/edit-post.js000064400000352625152375074240010003 0ustar00var wp; (wp ||= {}).editPost = (() => { var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // package-external:@wordpress/blocks var require_blocks = __commonJS({ "package-external:@wordpress/blocks"(exports, module) { module.exports = window.wp.blocks; } }); // package-external:@wordpress/block-library var require_block_library = __commonJS({ "package-external:@wordpress/block-library"(exports, module) { module.exports = window.wp.blockLibrary; } }); // package-external:@wordpress/deprecated var require_deprecated = __commonJS({ "package-external:@wordpress/deprecated"(exports, module) { module.exports = window.wp.deprecated; } }); // package-external:@wordpress/element var require_element = __commonJS({ "package-external:@wordpress/element"(exports, module) { module.exports = window.wp.element; } }); // package-external:@wordpress/data var require_data = __commonJS({ "package-external:@wordpress/data"(exports, module) { module.exports = window.wp.data; } }); // package-external:@wordpress/preferences var require_preferences = __commonJS({ "package-external:@wordpress/preferences"(exports, module) { module.exports = window.wp.preferences; } }); // package-external:@wordpress/widgets var require_widgets = __commonJS({ "package-external:@wordpress/widgets"(exports, module) { module.exports = window.wp.widgets; } }); // package-external:@wordpress/editor var require_editor = __commonJS({ "package-external:@wordpress/editor"(exports, module) { module.exports = window.wp.editor; } }); // package-external:@wordpress/i18n var require_i18n = __commonJS({ "package-external:@wordpress/i18n"(exports, module) { module.exports = window.wp.i18n; } }); // package-external:@wordpress/components var require_components = __commonJS({ "package-external:@wordpress/components"(exports, module) { module.exports = window.wp.components; } }); // vendor-external:react/jsx-runtime var require_jsx_runtime = __commonJS({ "vendor-external:react/jsx-runtime"(exports, module) { module.exports = window.ReactJSXRuntime; } }); // package-external:@wordpress/primitives var require_primitives = __commonJS({ "package-external:@wordpress/primitives"(exports, module) { module.exports = window.wp.primitives; } }); // package-external:@wordpress/private-apis var require_private_apis = __commonJS({ "package-external:@wordpress/private-apis"(exports, module) { module.exports = window.wp.privateApis; } }); // package-external:@wordpress/compose var require_compose = __commonJS({ "package-external:@wordpress/compose"(exports, module) { module.exports = window.wp.compose; } }); // package-external:@wordpress/block-editor var require_block_editor = __commonJS({ "package-external:@wordpress/block-editor"(exports, module) { module.exports = window.wp.blockEditor; } }); // package-external:@wordpress/style-engine var require_style_engine = __commonJS({ "package-external:@wordpress/style-engine"(exports, module) { module.exports = window.wp.styleEngine; } }); // package-external:@wordpress/plugins var require_plugins = __commonJS({ "package-external:@wordpress/plugins"(exports, module) { module.exports = window.wp.plugins; } }); // package-external:@wordpress/notices var require_notices = __commonJS({ "package-external:@wordpress/notices"(exports, module) { module.exports = window.wp.notices; } }); // package-external:@wordpress/commands var require_commands = __commonJS({ "package-external:@wordpress/commands"(exports, module) { module.exports = window.wp.commands; } }); // package-external:@wordpress/url var require_url = __commonJS({ "package-external:@wordpress/url"(exports, module) { module.exports = window.wp.url; } }); // package-external:@wordpress/html-entities var require_html_entities = __commonJS({ "package-external:@wordpress/html-entities"(exports, module) { module.exports = window.wp.htmlEntities; } }); // package-external:@wordpress/core-data var require_core_data = __commonJS({ "package-external:@wordpress/core-data"(exports, module) { module.exports = window.wp.coreData; } }); // package-external:@wordpress/keyboard-shortcuts var require_keyboard_shortcuts = __commonJS({ "package-external:@wordpress/keyboard-shortcuts"(exports, module) { module.exports = window.wp.keyboardShortcuts; } }); // package-external:@wordpress/api-fetch var require_api_fetch = __commonJS({ "package-external:@wordpress/api-fetch"(exports, module) { module.exports = window.wp.apiFetch; } }); // package-external:@wordpress/hooks var require_hooks = __commonJS({ "package-external:@wordpress/hooks"(exports, module) { module.exports = window.wp.hooks; } }); // package-external:@wordpress/keycodes var require_keycodes = __commonJS({ "package-external:@wordpress/keycodes"(exports, module) { module.exports = window.wp.keycodes; } }); // packages/edit-post/build-module/index.mjs var index_exports = {}; __export(index_exports, { PluginBlockSettingsMenuItem: () => PluginBlockSettingsMenuItem, PluginDocumentSettingPanel: () => PluginDocumentSettingPanel, PluginMoreMenuItem: () => PluginMoreMenuItem, PluginPostPublishPanel: () => PluginPostPublishPanel, PluginPostStatusInfo: () => PluginPostStatusInfo, PluginPrePublishPanel: () => PluginPrePublishPanel, PluginSidebar: () => PluginSidebar, PluginSidebarMoreMenuItem: () => PluginSidebarMoreMenuItem, __experimentalFullscreenModeClose: () => fullscreen_mode_close_default, __experimentalMainDashboardButton: () => __experimentalMainDashboardButton, __experimentalPluginPostExcerpt: () => __experimentalPluginPostExcerpt, initializeEditor: () => initializeEditor, reinitializeEditor: () => reinitializeEditor, store: () => store }); var import_blocks3 = __toESM(require_blocks(), 1); var import_block_library2 = __toESM(require_block_library(), 1); var import_deprecated4 = __toESM(require_deprecated(), 1); var import_element13 = __toESM(require_element(), 1); var import_data26 = __toESM(require_data(), 1); var import_preferences11 = __toESM(require_preferences(), 1); var import_widgets = __toESM(require_widgets(), 1); var import_editor20 = __toESM(require_editor(), 1); // node_modules/clsx/dist/clsx.mjs function r(e) { var t, f, n = ""; if ("string" == typeof e || "number" == typeof e) n += e; else if ("object" == typeof e) if (Array.isArray(e)) { var o = e.length; for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f); } else for (f in e) e[f] && (n && (n += " "), n += f); return n; } function clsx() { for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t); return n; } var clsx_default = clsx; // packages/admin-ui/build-module/navigable-region/index.mjs var import_element = __toESM(require_element(), 1); var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); var NavigableRegion = (0, import_element.forwardRef)( ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => { return /* @__PURE__ */ (0, import_jsx_runtime.jsx)( Tag, { ref, className: clsx_default("admin-ui-navigable-region", className), "aria-label": ariaLabel, role: "region", tabIndex: "-1", ...props, children } ); } ); NavigableRegion.displayName = "NavigableRegion"; var navigable_region_default = NavigableRegion; // packages/icons/build-module/library/arrow-up-left.mjs var import_primitives = __toESM(require_primitives(), 1); var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); var arrow_up_left_default = /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives.Path, { d: "M14 6H6v8h1.5V8.5L17 18l1-1-9.5-9.5H14V6Z" }) }); // packages/icons/build-module/library/chevron-down.mjs var import_primitives2 = __toESM(require_primitives(), 1); var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); var chevron_down_default = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives2.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives2.Path, { d: "M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z" }) }); // packages/icons/build-module/library/chevron-up.mjs var import_primitives3 = __toESM(require_primitives(), 1); var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); var chevron_up_default = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives3.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives3.Path, { d: "M6.5 12.4L12 8l5.5 4.4-.9 1.2L12 10l-4.5 3.6-1-1.2z" }) }); // packages/icons/build-module/library/fullscreen.mjs var import_primitives4 = __toESM(require_primitives(), 1); var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); var fullscreen_default = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives4.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives4.Path, { d: "M6 4a2 2 0 0 0-2 2v3h1.5V6a.5.5 0 0 1 .5-.5h3V4H6Zm3 14.5H6a.5.5 0 0 1-.5-.5v-3H4v3a2 2 0 0 0 2 2h3v-1.5Zm6 1.5v-1.5h3a.5.5 0 0 0 .5-.5v-3H20v3a2 2 0 0 1-2 2h-3Zm3-16a2 2 0 0 1 2 2v3h-1.5V6a.5.5 0 0 0-.5-.5h-3V4h3Z" }) }); // packages/icons/build-module/library/wordpress.mjs var import_primitives5 = __toESM(require_primitives(), 1); var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); var wordpress_default = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives5.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "-2 -2 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives5.Path, { d: "M20 10c0-5.51-4.49-10-10-10C4.48 0 0 4.49 0 10c0 5.52 4.48 10 10 10 5.51 0 10-4.48 10-10zM7.78 15.37L4.37 6.22c.55-.02 1.17-.08 1.17-.08.5-.06.44-1.13-.06-1.11 0 0-1.45.11-2.37.11-.18 0-.37 0-.58-.01C4.12 2.69 6.87 1.11 10 1.11c2.33 0 4.45.87 6.05 2.34-.68-.11-1.65.39-1.65 1.58 0 .74.45 1.36.9 2.1.35.61.55 1.36.55 2.46 0 1.49-1.4 5-1.4 5l-3.03-8.37c.54-.02.82-.17.82-.17.5-.05.44-1.25-.06-1.22 0 0-1.44.12-2.38.12-.87 0-2.33-.12-2.33-.12-.5-.03-.56 1.2-.06 1.22l.92.08 1.26 3.41zM17.41 10c.24-.64.74-1.87.43-4.25.7 1.29 1.05 2.71 1.05 4.25 0 3.29-1.73 6.24-4.4 7.78.97-2.59 1.94-5.2 2.92-7.78zM6.1 18.09C3.12 16.65 1.11 13.53 1.11 10c0-1.3.23-2.48.72-3.59C3.25 10.3 4.67 14.2 6.1 18.09zm4.03-6.63l2.58 6.98c-.86.29-1.76.45-2.71.45-.79 0-1.57-.11-2.29-.33.81-2.38 1.62-4.74 2.42-7.1z" }) }); // packages/edit-post/build-module/components/layout/index.mjs var import_editor18 = __toESM(require_editor(), 1); var import_data25 = __toESM(require_data(), 1); var import_block_editor2 = __toESM(require_block_editor(), 1); // packages/global-styles-engine/build-module/utils/common.mjs var import_style_engine = __toESM(require_style_engine(), 1); var ROOT_BLOCK_SELECTOR = "body"; var ROOT_CSS_PROPERTIES_SELECTOR = ":root"; // packages/global-styles-engine/build-module/core/render.mjs var import_blocks = __toESM(require_blocks(), 1); var import_style_engine2 = __toESM(require_style_engine(), 1); var import_data = __toESM(require_data(), 1); // packages/global-styles-engine/build-module/utils/spacing.mjs function getSpacingPresetCssVar(value) { if (!value) { return; } const slug = value.match(/var:preset\|spacing\|(.+)/); if (!slug) { return value; } return `var(--wp--preset--spacing--${slug[1]})`; } // packages/global-styles-engine/build-module/utils/gap.mjs function getGapBoxControlValueFromStyle(blockGapValue) { if (!blockGapValue) { return null; } const isValueString = typeof blockGapValue === "string"; return { top: isValueString ? blockGapValue : blockGapValue?.top, left: isValueString ? blockGapValue : blockGapValue?.left }; } function getGapCSSValue(blockGapValue, defaultValue = "0") { const blockGapBoxControlValue = getGapBoxControlValueFromStyle(blockGapValue); if (!blockGapBoxControlValue) { return null; } const row = getSpacingPresetCssVar(blockGapBoxControlValue?.top) || defaultValue; const column = getSpacingPresetCssVar(blockGapBoxControlValue?.left) || defaultValue; return row === column ? row : `${row} ${column}`; } // packages/global-styles-engine/build-module/utils/layout.mjs var LAYOUT_DEFINITIONS = { default: { name: "default", slug: "flow", className: "is-layout-flow", baseStyles: [ { selector: " > .alignleft", rules: { float: "left", "margin-inline-start": "0", "margin-inline-end": "2em" } }, { selector: " > .alignright", rules: { float: "right", "margin-inline-start": "2em", "margin-inline-end": "0" } }, { selector: " > .aligncenter", rules: { "margin-left": "auto !important", "margin-right": "auto !important" } } ], spacingStyles: [ { selector: " > :first-child", rules: { "margin-block-start": "0" } }, { selector: " > :last-child", rules: { "margin-block-end": "0" } }, { selector: " > *", rules: { "margin-block-start": null, "margin-block-end": "0" } } ] }, constrained: { name: "constrained", slug: "constrained", className: "is-layout-constrained", baseStyles: [ { selector: " > .alignleft", rules: { float: "left", "margin-inline-start": "0", "margin-inline-end": "2em" } }, { selector: " > .alignright", rules: { float: "right", "margin-inline-start": "2em", "margin-inline-end": "0" } }, { selector: " > .aligncenter", rules: { "margin-left": "auto !important", "margin-right": "auto !important" } }, { selector: " > :where(:not(.alignleft):not(.alignright):not(.alignfull))", rules: { "max-width": "var(--wp--style--global--content-size)", "margin-left": "auto !important", "margin-right": "auto !important" } }, { selector: " > .alignwide", rules: { "max-width": "var(--wp--style--global--wide-size)" } } ], spacingStyles: [ { selector: " > :first-child", rules: { "margin-block-start": "0" } }, { selector: " > :last-child", rules: { "margin-block-end": "0" } }, { selector: " > *", rules: { "margin-block-start": null, "margin-block-end": "0" } } ] }, flex: { name: "flex", slug: "flex", className: "is-layout-flex", displayMode: "flex", baseStyles: [ { selector: "", rules: { "flex-wrap": "wrap", "align-items": "center" } }, { selector: " > :is(*, div)", // :is(*, div) instead of just * increases the specificity by 001. rules: { margin: "0" } } ], spacingStyles: [ { selector: "", rules: { gap: null } } ] }, grid: { name: "grid", slug: "grid", className: "is-layout-grid", displayMode: "grid", baseStyles: [ { selector: " > :is(*, div)", // :is(*, div) instead of just * increases the specificity by 001. rules: { margin: "0" } } ], spacingStyles: [ { selector: "", rules: { gap: null } } ] } }; // packages/global-styles-engine/build-module/core/render.mjs function getLayoutStyles({ layoutDefinitions = LAYOUT_DEFINITIONS, style, selector, hasBlockGapSupport, hasFallbackGapSupport, fallbackGapValue }) { let ruleset = ""; let gapValue = hasBlockGapSupport ? getGapCSSValue(style?.spacing?.blockGap) : ""; if (hasFallbackGapSupport) { if (selector === ROOT_BLOCK_SELECTOR) { gapValue = !gapValue ? "0.5em" : gapValue; } else if (!hasBlockGapSupport && fallbackGapValue) { gapValue = fallbackGapValue; } } if (gapValue && layoutDefinitions) { Object.values(layoutDefinitions).forEach( ({ className, name, spacingStyles }) => { if (!hasBlockGapSupport && "flex" !== name && "grid" !== name) { return; } if (spacingStyles?.length) { spacingStyles.forEach((spacingStyle) => { const declarations = []; if (spacingStyle.rules) { Object.entries(spacingStyle.rules).forEach( ([cssProperty, cssValue]) => { declarations.push( `${cssProperty}: ${cssValue ? cssValue : gapValue}` ); } ); } if (declarations.length) { let combinedSelector = ""; if (!hasBlockGapSupport) { combinedSelector = selector === ROOT_BLOCK_SELECTOR ? `:where(.${className}${spacingStyle?.selector || ""})` : `:where(${selector}.${className}${spacingStyle?.selector || ""})`; } else { combinedSelector = selector === ROOT_BLOCK_SELECTOR ? `:root :where(.${className})${spacingStyle?.selector || ""}` : `:root :where(${selector}-${className})${spacingStyle?.selector || ""}`; } ruleset += `${combinedSelector} { ${declarations.join( "; " )}; }`; } }); } } ); if (selector === ROOT_BLOCK_SELECTOR && hasBlockGapSupport) { ruleset += `${ROOT_CSS_PROPERTIES_SELECTOR} { --wp--style--block-gap: ${gapValue}; }`; } } if (selector === ROOT_BLOCK_SELECTOR && layoutDefinitions) { const validDisplayModes = ["block", "flex", "grid"]; Object.values(layoutDefinitions).forEach( ({ className, displayMode, baseStyles }) => { if (displayMode && validDisplayModes.includes(displayMode)) { ruleset += `${selector} .${className} { display:${displayMode}; }`; } if (baseStyles?.length) { baseStyles.forEach((baseStyle) => { const declarations = []; if (baseStyle.rules) { Object.entries(baseStyle.rules).forEach( ([cssProperty, cssValue]) => { declarations.push( `${cssProperty}: ${cssValue}` ); } ); } if (declarations.length) { const combinedSelector = `.${className}${baseStyle?.selector || ""}`; ruleset += `${combinedSelector} { ${declarations.join( "; " )}; }`; } }); } } ); } return ruleset; } // packages/edit-post/build-module/components/layout/index.mjs var import_plugins = __toESM(require_plugins(), 1); var import_i18n14 = __toESM(require_i18n(), 1); var import_element12 = __toESM(require_element(), 1); var import_notices3 = __toESM(require_notices(), 1); var import_preferences10 = __toESM(require_preferences(), 1); var import_commands2 = __toESM(require_commands(), 1); var import_block_library = __toESM(require_block_library(), 1); var import_url5 = __toESM(require_url(), 1); var import_html_entities = __toESM(require_html_entities(), 1); var import_core_data8 = __toESM(require_core_data(), 1); var import_components9 = __toESM(require_components(), 1); var import_compose3 = __toESM(require_compose(), 1); // packages/edit-post/build-module/components/back-button/index.mjs var import_editor2 = __toESM(require_editor(), 1); var import_components2 = __toESM(require_components(), 1); // packages/edit-post/build-module/components/back-button/fullscreen-mode-close.mjs var import_data2 = __toESM(require_data(), 1); var import_components = __toESM(require_components(), 1); var import_i18n = __toESM(require_i18n(), 1); var import_url = __toESM(require_url(), 1); var import_editor = __toESM(require_editor(), 1); var import_core_data = __toESM(require_core_data(), 1); var import_compose = __toESM(require_compose(), 1); var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); var siteIconVariants = { edit: { clipPath: "inset(0% round 0px)" }, hover: { clipPath: "inset( 22% round 2px )" }, tap: { clipPath: "inset(0% round 0px)" } }; var toggleHomeIconVariants = { edit: { opacity: 0, scale: 0.2 }, hover: { opacity: 1, scale: 1, clipPath: "inset( 22% round 2px )" } }; function FullscreenModeClose({ showTooltip, icon, href, initialPost }) { const { isRequestingSiteIcon, postType, siteIconUrl } = (0, import_data2.useSelect)( (select3) => { const { getCurrentPostType } = select3(import_editor.store); const { getEntityRecord, getPostType, isResolving } = select3(import_core_data.store); const siteData = getEntityRecord("root", "__unstableBase", void 0) || {}; const _postType = initialPost?.type || getCurrentPostType(); return { isRequestingSiteIcon: isResolving("getEntityRecord", [ "root", "__unstableBase", void 0 ]), postType: getPostType(_postType), siteIconUrl: siteData.site_icon_url }; }, [initialPost?.type] ); const disableMotion = (0, import_compose.useReducedMotion)(); const transition = { duration: disableMotion ? 0 : 0.2 }; if (!postType) { return null; } let siteIconContent; if (isRequestingSiteIcon && !siteIconUrl) { siteIconContent = /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "edit-post-fullscreen-mode-close-site-icon__image" }); } else if (siteIconUrl) { siteIconContent = /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( "img", { className: "edit-post-fullscreen-mode-close-site-icon__image", alt: (0, import_i18n.__)("Site Icon"), src: siteIconUrl } ); } else { siteIconContent = /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( import_components.Icon, { className: "edit-post-fullscreen-mode-close-site-icon__icon", icon: wordpress_default, size: 48 } ); } const buttonIcon = icon ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_components.Icon, { size: "36px", icon }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "edit-post-fullscreen-mode-close-site-icon", children: siteIconContent }); const classes = clsx_default("edit-post-fullscreen-mode-close", { "has-icon": siteIconUrl }); const buttonHref = href ?? (0, import_url.addQueryArgs)("edit.php", { post_type: postType.slug }); const buttonLabel = postType?.labels?.view_items ?? (0, import_i18n.__)("Back"); return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)( import_components.__unstableMotion.div, { className: "edit-post-fullscreen-mode-close__view-mode-toggle", animate: "edit", initial: "edit", whileHover: "hover", whileTap: "tap", transition, children: [ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( import_components.Button, { __next40pxDefaultSize: true, className: classes, href: buttonHref, label: buttonLabel, showTooltip, tooltipPosition: "middle right", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_components.__unstableMotion.div, { variants: !disableMotion && siteIconVariants, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "edit-post-fullscreen-mode-close__view-mode-toggle-icon", children: buttonIcon }) }) } ), /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( import_components.__unstableMotion.div, { className: clsx_default( "edit-post-fullscreen-mode-close__back-icon", { "has-site-icon": siteIconUrl } ), variants: !disableMotion && toggleHomeIconVariants, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_components.Icon, { icon: arrow_up_left_default }) } ) ] } ); } var fullscreen_mode_close_default = FullscreenModeClose; // packages/edit-post/build-module/lock-unlock.mjs var import_private_apis = __toESM(require_private_apis(), 1); var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", "@wordpress/edit-post" ); // packages/edit-post/build-module/components/back-button/index.mjs var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); var { BackButton: BackButtonFill } = unlock(import_editor2.privateApis); var slideX = { hidden: { x: "-100%" }, distractionFreeInactive: { x: 0 }, hover: { x: 0, transition: { type: "tween", delay: 0.2 } } }; function BackButton({ initialPost }) { return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(BackButtonFill, { children: ({ length }) => length <= 1 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( import_components2.__unstableMotion.div, { variants: slideX, transition: { type: "tween", delay: 0.8 }, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( fullscreen_mode_close_default, { showTooltip: true, initialPost } ) } ) }); } var back_button_default = BackButton; // packages/edit-post/build-module/components/editor-initialization/listener-hooks.mjs var import_data3 = __toESM(require_data(), 1); var import_element2 = __toESM(require_element(), 1); var import_editor3 = __toESM(require_editor(), 1); var import_core_data2 = __toESM(require_core_data(), 1); // packages/edit-post/build-module/store/constants.mjs var STORE_NAME = "core/edit-post"; var VIEW_AS_LINK_SELECTOR = "#wp-admin-bar-view a"; var VIEW_AS_PREVIEW_LINK_SELECTOR = "#wp-admin-bar-preview a"; // packages/edit-post/build-module/components/editor-initialization/listener-hooks.mjs var useUpdatePostLinkListener = () => { const { isViewable, newPermalink } = (0, import_data3.useSelect)((select3) => { const { getPostType } = select3(import_core_data2.store); const { getCurrentPost, getEditedPostAttribute } = select3(import_editor3.store); const postType = getPostType(getEditedPostAttribute("type")); return { isViewable: postType?.viewable, newPermalink: getCurrentPost().link }; }, []); const nodeToUpdateRef = (0, import_element2.useRef)(); (0, import_element2.useEffect)(() => { nodeToUpdateRef.current = document.querySelector(VIEW_AS_PREVIEW_LINK_SELECTOR) || document.querySelector(VIEW_AS_LINK_SELECTOR); }, []); (0, import_element2.useEffect)(() => { if (!newPermalink || !nodeToUpdateRef.current) { return; } if (!isViewable) { nodeToUpdateRef.current.style.display = "none"; return; } nodeToUpdateRef.current.style.display = ""; nodeToUpdateRef.current.setAttribute("href", newPermalink); }, [newPermalink, isViewable]); }; // packages/edit-post/build-module/components/editor-initialization/index.mjs function EditorInitialization() { useUpdatePostLinkListener(); return null; } // packages/edit-post/build-module/components/keyboard-shortcuts/index.mjs var import_element3 = __toESM(require_element(), 1); var import_data7 = __toESM(require_data(), 1); var import_keyboard_shortcuts = __toESM(require_keyboard_shortcuts(), 1); var import_i18n3 = __toESM(require_i18n(), 1); // packages/edit-post/build-module/store/index.mjs var import_data6 = __toESM(require_data(), 1); // packages/edit-post/build-module/store/reducer.mjs var import_data4 = __toESM(require_data(), 1); function isSavingMetaBoxes(state = false, action) { switch (action.type) { case "REQUEST_META_BOX_UPDATES": return true; case "META_BOX_UPDATES_SUCCESS": case "META_BOX_UPDATES_FAILURE": return false; default: return state; } } function mergeMetaboxes(metaboxes = [], newMetaboxes) { const mergedMetaboxes = [...metaboxes]; for (const metabox of newMetaboxes) { const existing = mergedMetaboxes.findIndex( (box) => box.id === metabox.id ); if (existing !== -1) { mergedMetaboxes[existing] = { ...mergedMetaboxes[existing], ...metabox }; } else { mergedMetaboxes.push(metabox); } } return mergedMetaboxes; } function metaBoxLocations(state = {}, action) { switch (action.type) { case "SET_META_BOXES_PER_LOCATIONS": { const newState = { ...state }; for (const [location, metaboxes] of Object.entries( action.metaBoxesPerLocation )) { newState[location] = mergeMetaboxes( newState[location], metaboxes ); } return newState; } } return state; } function metaBoxesInitialized(state = false, action) { switch (action.type) { case "META_BOXES_INITIALIZED": return true; } return state; } var metaBoxes = (0, import_data4.combineReducers)({ isSaving: isSavingMetaBoxes, locations: metaBoxLocations, initialized: metaBoxesInitialized }); var reducer_default = (0, import_data4.combineReducers)({ metaBoxes }); // packages/edit-post/build-module/store/actions.mjs var actions_exports = {}; __export(actions_exports, { __experimentalSetPreviewDeviceType: () => __experimentalSetPreviewDeviceType, __unstableCreateTemplate: () => __unstableCreateTemplate, closeGeneralSidebar: () => closeGeneralSidebar, closeModal: () => closeModal, closePublishSidebar: () => closePublishSidebar, hideBlockTypes: () => hideBlockTypes, initializeMetaBoxes: () => initializeMetaBoxes, metaBoxUpdatesFailure: () => metaBoxUpdatesFailure, metaBoxUpdatesSuccess: () => metaBoxUpdatesSuccess, openGeneralSidebar: () => openGeneralSidebar, openModal: () => openModal, openPublishSidebar: () => openPublishSidebar, removeEditorPanel: () => removeEditorPanel, requestMetaBoxUpdates: () => requestMetaBoxUpdates, setAvailableMetaBoxesPerLocation: () => setAvailableMetaBoxesPerLocation, setIsEditingTemplate: () => setIsEditingTemplate, setIsInserterOpened: () => setIsInserterOpened, setIsListViewOpened: () => setIsListViewOpened, showBlockTypes: () => showBlockTypes, switchEditorMode: () => switchEditorMode, toggleDistractionFree: () => toggleDistractionFree, toggleEditorPanelEnabled: () => toggleEditorPanelEnabled, toggleEditorPanelOpened: () => toggleEditorPanelOpened, toggleFeature: () => toggleFeature, toggleFullscreenMode: () => toggleFullscreenMode, togglePinnedPluginItem: () => togglePinnedPluginItem, togglePublishSidebar: () => togglePublishSidebar, updatePreferredStyleVariations: () => updatePreferredStyleVariations }); var import_api_fetch = __toESM(require_api_fetch(), 1); var import_preferences = __toESM(require_preferences(), 1); var import_editor4 = __toESM(require_editor(), 1); var import_deprecated = __toESM(require_deprecated(), 1); var import_hooks = __toESM(require_hooks(), 1); var import_core_data3 = __toESM(require_core_data(), 1); var import_notices = __toESM(require_notices(), 1); var import_i18n2 = __toESM(require_i18n(), 1); // packages/edit-post/build-module/utils/meta-boxes.mjs var getMetaBoxContainer = (location) => { const area = document.querySelector( `.edit-post-meta-boxes-area.is-${location} .metabox-location-${location}` ); if (area) { return area; } return document.querySelector("#metaboxes .metabox-location-" + location); }; // packages/edit-post/build-module/store/actions.mjs var { interfaceStore } = unlock(import_editor4.privateApis); var openGeneralSidebar = (name) => ({ registry }) => { registry.dispatch(interfaceStore).enableComplementaryArea("core", name); }; var closeGeneralSidebar = () => ({ registry }) => registry.dispatch(interfaceStore).disableComplementaryArea("core"); var openModal = (name) => ({ registry }) => { (0, import_deprecated.default)("select( 'core/edit-post' ).openModal( name )", { since: "6.3", alternative: "select( 'core/interface').openModal( name )" }); return registry.dispatch(interfaceStore).openModal(name); }; var closeModal = () => ({ registry }) => { (0, import_deprecated.default)("select( 'core/edit-post' ).closeModal()", { since: "6.3", alternative: "select( 'core/interface').closeModal()" }); return registry.dispatch(interfaceStore).closeModal(); }; var openPublishSidebar = () => ({ registry }) => { (0, import_deprecated.default)("dispatch( 'core/edit-post' ).openPublishSidebar", { since: "6.6", alternative: "dispatch( 'core/editor').openPublishSidebar" }); registry.dispatch(import_editor4.store).openPublishSidebar(); }; var closePublishSidebar = () => ({ registry }) => { (0, import_deprecated.default)("dispatch( 'core/edit-post' ).closePublishSidebar", { since: "6.6", alternative: "dispatch( 'core/editor').closePublishSidebar" }); registry.dispatch(import_editor4.store).closePublishSidebar(); }; var togglePublishSidebar = () => ({ registry }) => { (0, import_deprecated.default)("dispatch( 'core/edit-post' ).togglePublishSidebar", { since: "6.6", alternative: "dispatch( 'core/editor').togglePublishSidebar" }); registry.dispatch(import_editor4.store).togglePublishSidebar(); }; var toggleEditorPanelEnabled = (panelName) => ({ registry }) => { (0, import_deprecated.default)("dispatch( 'core/edit-post' ).toggleEditorPanelEnabled", { since: "6.5", alternative: "dispatch( 'core/editor').toggleEditorPanelEnabled" }); registry.dispatch(import_editor4.store).toggleEditorPanelEnabled(panelName); }; var toggleEditorPanelOpened = (panelName) => ({ registry }) => { (0, import_deprecated.default)("dispatch( 'core/edit-post' ).toggleEditorPanelOpened", { since: "6.5", alternative: "dispatch( 'core/editor').toggleEditorPanelOpened" }); registry.dispatch(import_editor4.store).toggleEditorPanelOpened(panelName); }; var removeEditorPanel = (panelName) => ({ registry }) => { (0, import_deprecated.default)("dispatch( 'core/edit-post' ).removeEditorPanel", { since: "6.5", alternative: "dispatch( 'core/editor').removeEditorPanel" }); registry.dispatch(import_editor4.store).removeEditorPanel(panelName); }; var toggleFeature = (feature) => ({ registry }) => registry.dispatch(import_preferences.store).toggle("core/edit-post", feature); var switchEditorMode = (mode) => ({ registry }) => { (0, import_deprecated.default)("dispatch( 'core/edit-post' ).switchEditorMode", { since: "6.6", alternative: "dispatch( 'core/editor').switchEditorMode" }); registry.dispatch(import_editor4.store).switchEditorMode(mode); }; var togglePinnedPluginItem = (pluginName) => ({ registry }) => { const isPinned = registry.select(interfaceStore).isItemPinned("core", pluginName); registry.dispatch(interfaceStore)[isPinned ? "unpinItem" : "pinItem"]("core", pluginName); }; function updatePreferredStyleVariations() { (0, import_deprecated.default)("dispatch( 'core/edit-post' ).updatePreferredStyleVariations", { since: "6.6", hint: "Preferred Style Variations are not supported anymore." }); return { type: "NOTHING" }; } var showBlockTypes = (blockNames) => ({ registry }) => { unlock(registry.dispatch(import_editor4.store)).showBlockTypes(blockNames); }; var hideBlockTypes = (blockNames) => ({ registry }) => { unlock(registry.dispatch(import_editor4.store)).hideBlockTypes(blockNames); }; function setAvailableMetaBoxesPerLocation(metaBoxesPerLocation) { return { type: "SET_META_BOXES_PER_LOCATIONS", metaBoxesPerLocation }; } var requestMetaBoxUpdates = () => async ({ registry, select: select3, dispatch: dispatch2 }) => { dispatch2({ type: "REQUEST_META_BOX_UPDATES" }); if (window.tinyMCE) { window.tinyMCE.triggerSave(); } const baseFormData = new window.FormData( document.querySelector(".metabox-base-form") ); const postId = baseFormData.get("post_ID"); const postType = baseFormData.get("post_type"); const post = registry.select(import_core_data3.store).getEditedEntityRecord("postType", postType, postId); const additionalData = [ post.comment_status ? ["comment_status", post.comment_status] : false, post.ping_status ? ["ping_status", post.ping_status] : false, post.sticky ? ["sticky", post.sticky] : false, post.author ? ["post_author", post.author] : false ].filter(Boolean); const activeMetaBoxLocations = select3.getActiveMetaBoxLocations(); const formDataToMerge = [ baseFormData, ...activeMetaBoxLocations.map( (location) => new window.FormData(getMetaBoxContainer(location)) ) ]; const formData = formDataToMerge.reduce((memo, currentFormData) => { for (const [key, value] of currentFormData) { memo.append(key, value); } return memo; }, new window.FormData()); additionalData.forEach( ([key, value]) => formData.append(key, value) ); try { await (0, import_api_fetch.default)({ url: window._wpMetaBoxUrl, method: "POST", body: formData, parse: false }); dispatch2.metaBoxUpdatesSuccess(); } catch { dispatch2.metaBoxUpdatesFailure(); } }; function metaBoxUpdatesSuccess() { return { type: "META_BOX_UPDATES_SUCCESS" }; } function metaBoxUpdatesFailure() { return { type: "META_BOX_UPDATES_FAILURE" }; } var __experimentalSetPreviewDeviceType = (deviceType) => ({ registry }) => { (0, import_deprecated.default)( "dispatch( 'core/edit-post' ).__experimentalSetPreviewDeviceType", { since: "6.5", version: "6.7", hint: "registry.dispatch( editorStore ).setDeviceType" } ); registry.dispatch(import_editor4.store).setDeviceType(deviceType); }; var setIsInserterOpened = (value) => ({ registry }) => { (0, import_deprecated.default)("dispatch( 'core/edit-post' ).setIsInserterOpened", { since: "6.5", alternative: "dispatch( 'core/editor').setIsInserterOpened" }); registry.dispatch(import_editor4.store).setIsInserterOpened(value); }; var setIsListViewOpened = (isOpen) => ({ registry }) => { (0, import_deprecated.default)("dispatch( 'core/edit-post' ).setIsListViewOpened", { since: "6.5", alternative: "dispatch( 'core/editor').setIsListViewOpened" }); registry.dispatch(import_editor4.store).setIsListViewOpened(isOpen); }; function setIsEditingTemplate() { (0, import_deprecated.default)("dispatch( 'core/edit-post' ).setIsEditingTemplate", { since: "6.5", alternative: "dispatch( 'core/editor').setRenderingMode" }); return { type: "NOTHING" }; } function __unstableCreateTemplate() { (0, import_deprecated.default)("dispatch( 'core/edit-post' ).__unstableCreateTemplate", { since: "6.5" }); return { type: "NOTHING" }; } var metaBoxesInitialized2 = false; var initializeMetaBoxes = () => ({ registry, select: select3, dispatch: dispatch2 }) => { const isEditorReady = registry.select(import_editor4.store).__unstableIsEditorReady(); if (!isEditorReady) { return; } if (metaBoxesInitialized2) { return; } const postType = registry.select(import_editor4.store).getCurrentPostType(); if (window.postboxes.page !== postType) { window.postboxes.add_postbox_toggles(postType); } metaBoxesInitialized2 = true; (0, import_hooks.addAction)( "editor.savePost", "core/edit-post/save-metaboxes", async (post, options) => { if (!options.isAutosave && select3.hasMetaBoxes()) { await dispatch2.requestMetaBoxUpdates(); } } ); dispatch2({ type: "META_BOXES_INITIALIZED" }); }; var toggleDistractionFree = () => ({ registry }) => { (0, import_deprecated.default)("dispatch( 'core/edit-post' ).toggleDistractionFree", { since: "6.6", alternative: "dispatch( 'core/editor').toggleDistractionFree" }); registry.dispatch(import_editor4.store).toggleDistractionFree(); }; var toggleFullscreenMode = () => ({ registry }) => { const isFullscreen = registry.select(import_preferences.store).get("core/edit-post", "fullscreenMode"); registry.dispatch(import_preferences.store).toggle("core/edit-post", "fullscreenMode"); registry.dispatch(import_notices.store).createInfoNotice( isFullscreen ? (0, import_i18n2.__)("Fullscreen mode deactivated.") : (0, import_i18n2.__)("Fullscreen mode activated."), { id: "core/edit-post/toggle-fullscreen-mode/notice", type: "snackbar", actions: [ { label: (0, import_i18n2.__)("Undo"), onClick: () => { registry.dispatch(import_preferences.store).toggle( "core/edit-post", "fullscreenMode" ); } } ] } ); }; // packages/edit-post/build-module/store/selectors.mjs var selectors_exports = {}; __export(selectors_exports, { __experimentalGetInsertionPoint: () => __experimentalGetInsertionPoint, __experimentalGetPreviewDeviceType: () => __experimentalGetPreviewDeviceType, areMetaBoxesInitialized: () => areMetaBoxesInitialized, getActiveGeneralSidebarName: () => getActiveGeneralSidebarName, getActiveMetaBoxLocations: () => getActiveMetaBoxLocations, getAllMetaBoxes: () => getAllMetaBoxes, getEditedPostTemplate: () => getEditedPostTemplate, getEditorMode: () => getEditorMode, getHiddenBlockTypes: () => getHiddenBlockTypes, getMetaBoxesPerLocation: () => getMetaBoxesPerLocation, getPreference: () => getPreference, getPreferences: () => getPreferences, hasMetaBoxes: () => hasMetaBoxes, isEditingTemplate: () => isEditingTemplate, isEditorPanelEnabled: () => isEditorPanelEnabled, isEditorPanelOpened: () => isEditorPanelOpened, isEditorPanelRemoved: () => isEditorPanelRemoved, isEditorSidebarOpened: () => isEditorSidebarOpened, isFeatureActive: () => isFeatureActive, isInserterOpened: () => isInserterOpened, isListViewOpened: () => isListViewOpened, isMetaBoxLocationActive: () => isMetaBoxLocationActive, isMetaBoxLocationVisible: () => isMetaBoxLocationVisible, isModalActive: () => isModalActive, isPluginItemPinned: () => isPluginItemPinned, isPluginSidebarOpened: () => isPluginSidebarOpened, isPublishSidebarOpened: () => isPublishSidebarOpened, isSavingMetaBoxes: () => isSavingMetaBoxes2 }); var import_data5 = __toESM(require_data(), 1); var import_preferences2 = __toESM(require_preferences(), 1); var import_core_data4 = __toESM(require_core_data(), 1); var import_editor5 = __toESM(require_editor(), 1); var import_deprecated2 = __toESM(require_deprecated(), 1); var { interfaceStore: interfaceStore2 } = unlock(import_editor5.privateApis); var EMPTY_ARRAY = []; var EMPTY_OBJECT = {}; var getEditorMode = (0, import_data5.createRegistrySelector)( (select3) => () => select3(import_preferences2.store).get("core", "editorMode") ?? "visual" ); var isEditorSidebarOpened = (0, import_data5.createRegistrySelector)( (select3) => () => { const activeGeneralSidebar = select3(interfaceStore2).getActiveComplementaryArea("core"); return ["edit-post/document", "edit-post/block"].includes( activeGeneralSidebar ); } ); var isPluginSidebarOpened = (0, import_data5.createRegistrySelector)( (select3) => () => { const activeGeneralSidebar = select3(interfaceStore2).getActiveComplementaryArea("core"); return !!activeGeneralSidebar && !["edit-post/document", "edit-post/block"].includes( activeGeneralSidebar ); } ); var getActiveGeneralSidebarName = (0, import_data5.createRegistrySelector)( (select3) => () => { return select3(interfaceStore2).getActiveComplementaryArea("core"); } ); function convertPanelsToOldFormat(inactivePanels, openPanels) { const panelsWithEnabledState = inactivePanels?.reduce( (accumulatedPanels, panelName) => ({ ...accumulatedPanels, [panelName]: { enabled: false } }), {} ); const panels = openPanels?.reduce((accumulatedPanels, panelName) => { const currentPanelState = accumulatedPanels?.[panelName]; return { ...accumulatedPanels, [panelName]: { ...currentPanelState, opened: true } }; }, panelsWithEnabledState ?? {}); return panels ?? panelsWithEnabledState ?? EMPTY_OBJECT; } var getPreferences = (0, import_data5.createRegistrySelector)((select3) => () => { (0, import_deprecated2.default)(`select( 'core/edit-post' ).getPreferences`, { since: "6.0", alternative: `select( 'core/preferences' ).get` }); const corePreferences = ["editorMode", "hiddenBlockTypes"].reduce( (accumulatedPrefs, preferenceKey) => { const value = select3(import_preferences2.store).get( "core", preferenceKey ); return { ...accumulatedPrefs, [preferenceKey]: value }; }, {} ); const inactivePanels = select3(import_preferences2.store).get( "core", "inactivePanels" ); const openPanels = select3(import_preferences2.store).get("core", "openPanels"); const panels = convertPanelsToOldFormat(inactivePanels, openPanels); return { ...corePreferences, panels }; }); function getPreference(state, preferenceKey, defaultValue) { (0, import_deprecated2.default)(`select( 'core/edit-post' ).getPreference`, { since: "6.0", alternative: `select( 'core/preferences' ).get` }); const preferences = getPreferences(state); const value = preferences[preferenceKey]; return value === void 0 ? defaultValue : value; } var getHiddenBlockTypes = (0, import_data5.createRegistrySelector)((select3) => () => { return select3(import_preferences2.store).get("core", "hiddenBlockTypes") ?? EMPTY_ARRAY; }); var isPublishSidebarOpened = (0, import_data5.createRegistrySelector)( (select3) => () => { (0, import_deprecated2.default)(`select( 'core/edit-post' ).isPublishSidebarOpened`, { since: "6.6", alternative: `select( 'core/editor' ).isPublishSidebarOpened` }); return select3(import_editor5.store).isPublishSidebarOpened(); } ); var isEditorPanelRemoved = (0, import_data5.createRegistrySelector)( (select3) => (state, panelName) => { (0, import_deprecated2.default)(`select( 'core/edit-post' ).isEditorPanelRemoved`, { since: "6.5", alternative: `select( 'core/editor' ).isEditorPanelRemoved` }); return select3(import_editor5.store).isEditorPanelRemoved(panelName); } ); var isEditorPanelEnabled = (0, import_data5.createRegistrySelector)( (select3) => (state, panelName) => { (0, import_deprecated2.default)(`select( 'core/edit-post' ).isEditorPanelEnabled`, { since: "6.5", alternative: `select( 'core/editor' ).isEditorPanelEnabled` }); return select3(import_editor5.store).isEditorPanelEnabled(panelName); } ); var isEditorPanelOpened = (0, import_data5.createRegistrySelector)( (select3) => (state, panelName) => { (0, import_deprecated2.default)(`select( 'core/edit-post' ).isEditorPanelOpened`, { since: "6.5", alternative: `select( 'core/editor' ).isEditorPanelOpened` }); return select3(import_editor5.store).isEditorPanelOpened(panelName); } ); var isModalActive = (0, import_data5.createRegistrySelector)( (select3) => (state, modalName) => { (0, import_deprecated2.default)(`select( 'core/edit-post' ).isModalActive`, { since: "6.3", alternative: `select( 'core/interface' ).isModalActive` }); return !!select3(interfaceStore2).isModalActive(modalName); } ); var isFeatureActive = (0, import_data5.createRegistrySelector)( (select3) => (state, feature) => { return !!select3(import_preferences2.store).get("core/edit-post", feature); } ); var isPluginItemPinned = (0, import_data5.createRegistrySelector)( (select3) => (state, pluginName) => { return select3(interfaceStore2).isItemPinned("core", pluginName); } ); var getActiveMetaBoxLocations = (0, import_data5.createSelector)( (state) => { return Object.keys(state.metaBoxes.locations).filter( (location) => isMetaBoxLocationActive(state, location) ); }, (state) => [state.metaBoxes.locations] ); var isMetaBoxLocationVisible = (0, import_data5.createRegistrySelector)( (select3) => (state, location) => { return isMetaBoxLocationActive(state, location) && getMetaBoxesPerLocation(state, location)?.some(({ id }) => { return select3(import_editor5.store).isEditorPanelEnabled( `meta-box-${id}` ); }); } ); function isMetaBoxLocationActive(state, location) { const metaBoxes2 = getMetaBoxesPerLocation(state, location); return !!metaBoxes2 && metaBoxes2.length !== 0; } function getMetaBoxesPerLocation(state, location) { return state.metaBoxes.locations[location]; } var getAllMetaBoxes = (0, import_data5.createSelector)( (state) => { return Object.values(state.metaBoxes.locations).flat(); }, (state) => [state.metaBoxes.locations] ); function hasMetaBoxes(state) { return getActiveMetaBoxLocations(state).length > 0; } function isSavingMetaBoxes2(state) { return state.metaBoxes.isSaving; } var __experimentalGetPreviewDeviceType = (0, import_data5.createRegistrySelector)( (select3) => () => { (0, import_deprecated2.default)( `select( 'core/edit-site' ).__experimentalGetPreviewDeviceType`, { since: "6.5", version: "6.7", alternative: `select( 'core/editor' ).getDeviceType` } ); return select3(import_editor5.store).getDeviceType(); } ); var isInserterOpened = (0, import_data5.createRegistrySelector)((select3) => () => { (0, import_deprecated2.default)(`select( 'core/edit-post' ).isInserterOpened`, { since: "6.5", alternative: `select( 'core/editor' ).isInserterOpened` }); return select3(import_editor5.store).isInserterOpened(); }); var __experimentalGetInsertionPoint = (0, import_data5.createRegistrySelector)( (select3) => () => { (0, import_deprecated2.default)( `select( 'core/edit-post' ).__experimentalGetInsertionPoint`, { since: "6.5", version: "6.7" } ); return unlock(select3(import_editor5.store)).getInserter(); } ); var isListViewOpened = (0, import_data5.createRegistrySelector)((select3) => () => { (0, import_deprecated2.default)(`select( 'core/edit-post' ).isListViewOpened`, { since: "6.5", alternative: `select( 'core/editor' ).isListViewOpened` }); return select3(import_editor5.store).isListViewOpened(); }); var isEditingTemplate = (0, import_data5.createRegistrySelector)((select3) => () => { (0, import_deprecated2.default)(`select( 'core/edit-post' ).isEditingTemplate`, { since: "6.5", alternative: `select( 'core/editor' ).getRenderingMode` }); return select3(import_editor5.store).getCurrentPostType() === "wp_template"; }); function areMetaBoxesInitialized(state) { return state.metaBoxes.initialized; } var getEditedPostTemplate = (0, import_data5.createRegistrySelector)( (select3) => () => { const { id: postId, type: postType } = select3(import_editor5.store).getCurrentPost(); const templateId = unlock(select3(import_core_data4.store)).getTemplateId( postType, postId ); if (!templateId) { return void 0; } return select3(import_core_data4.store).getEditedEntityRecord( "postType", "wp_template", templateId ); } ); // packages/edit-post/build-module/store/index.mjs var store = (0, import_data6.createReduxStore)(STORE_NAME, { reducer: reducer_default, actions: actions_exports, selectors: selectors_exports }); (0, import_data6.register)(store); // packages/edit-post/build-module/components/keyboard-shortcuts/index.mjs function KeyboardShortcuts() { const { toggleFullscreenMode: toggleFullscreenMode2 } = (0, import_data7.useDispatch)(store); const { registerShortcut } = (0, import_data7.useDispatch)(import_keyboard_shortcuts.store); (0, import_element3.useEffect)(() => { registerShortcut({ name: "core/edit-post/toggle-fullscreen", category: "global", description: (0, import_i18n3.__)("Enable or disable fullscreen mode."), keyCombination: { modifier: "secondary", character: "f" } }); }, []); (0, import_keyboard_shortcuts.useShortcut)("core/edit-post/toggle-fullscreen", () => { toggleFullscreenMode2(); }); return null; } var keyboard_shortcuts_default = KeyboardShortcuts; // packages/edit-post/build-module/components/init-pattern-modal/index.mjs var import_data8 = __toESM(require_data(), 1); var import_i18n4 = __toESM(require_i18n(), 1); var import_components3 = __toESM(require_components(), 1); var import_element4 = __toESM(require_element(), 1); var import_editor6 = __toESM(require_editor(), 1); var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1); function InitPatternModal() { const { editPost } = (0, import_data8.useDispatch)(import_editor6.store); const [syncType, setSyncType] = (0, import_element4.useState)(void 0); const [title, setTitle] = (0, import_element4.useState)(""); const isNewPost = (0, import_data8.useSelect)( (select3) => select3(import_editor6.store).isCleanNewPost(), [] ); const [isModalOpen, setIsModalOpen] = (0, import_element4.useState)(() => isNewPost); if (!isNewPost) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_jsx_runtime9.Fragment, { children: isModalOpen && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( import_components3.Modal, { title: (0, import_i18n4.__)("Create pattern"), onRequestClose: () => { setIsModalOpen(false); }, overlayClassName: "reusable-blocks-menu-items__convert-modal", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( "form", { onSubmit: (event) => { event.preventDefault(); setIsModalOpen(false); editPost({ title, meta: { wp_pattern_sync_status: syncType } }); }, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_components3.__experimentalVStack, { spacing: "5", children: [ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( import_components3.TextControl, { label: (0, import_i18n4.__)("Name"), value: title, onChange: setTitle, placeholder: (0, import_i18n4.__)("My pattern"), className: "patterns-create-modal__name-input", __next40pxDefaultSize: true } ), /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( import_components3.ToggleControl, { label: (0, import_i18n4._x)("Synced", "pattern (singular)"), help: (0, import_i18n4.__)( "Sync this pattern across multiple locations." ), checked: !syncType, onChange: () => { setSyncType( !syncType ? "unsynced" : void 0 ); } } ), /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_components3.__experimentalHStack, { justify: "right", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( import_components3.Button, { __next40pxDefaultSize: true, variant: "primary", type: "submit", disabled: !title, accessibleWhenDisabled: true, children: (0, import_i18n4.__)("Create") } ) }) ] }) } ) } ) }); } // packages/edit-post/build-module/components/browser-url/index.mjs var import_element5 = __toESM(require_element(), 1); var import_data9 = __toESM(require_data(), 1); var import_url2 = __toESM(require_url(), 1); var import_editor7 = __toESM(require_editor(), 1); function getPostEditURL(postId) { return (0, import_url2.addQueryArgs)("post.php", { post: postId, action: "edit" }); } function BrowserURL() { const [historyId, setHistoryId] = (0, import_element5.useState)(null); const { postId, postStatus } = (0, import_data9.useSelect)((select3) => { const { getCurrentPost } = select3(import_editor7.store); const post = getCurrentPost(); let { id, status, type } = post; const isTemplate = ["wp_template", "wp_template_part"].includes( type ); if (isTemplate) { id = post.wp_id; } return { postId: id, postStatus: status }; }, []); (0, import_element5.useEffect)(() => { if (postId && postId !== historyId && postStatus !== "auto-draft") { window.history.replaceState( { id: postId }, "Post " + postId, getPostEditURL(postId) ); setHistoryId(postId); } }, [postId, postStatus, historyId]); return null; } // packages/edit-post/build-module/components/meta-boxes/index.mjs var import_data12 = __toESM(require_data(), 1); // packages/edit-post/build-module/components/meta-boxes/meta-boxes-area/index.mjs var import_element6 = __toESM(require_element(), 1); var import_components4 = __toESM(require_components(), 1); var import_data10 = __toESM(require_data(), 1); var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1); function MetaBoxesArea({ location }) { const container = (0, import_element6.useRef)(null); const formRef = (0, import_element6.useRef)(null); (0, import_element6.useEffect)(() => { formRef.current = document.querySelector( ".metabox-location-" + location ); if (formRef.current) { container.current.appendChild(formRef.current); } return () => { if (formRef.current) { document.querySelector("#metaboxes").appendChild(formRef.current); } }; }, [location]); const isSaving = (0, import_data10.useSelect)((select3) => { return select3(store).isSavingMetaBoxes(); }, []); const classes = clsx_default("edit-post-meta-boxes-area", `is-${location}`, { "is-loading": isSaving }); return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: classes, children: [ isSaving && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_components4.Spinner, {}), /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( "div", { className: "edit-post-meta-boxes-area__container", ref: container } ), /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "edit-post-meta-boxes-area__clear" }) ] }); } var meta_boxes_area_default = MetaBoxesArea; // packages/edit-post/build-module/components/meta-boxes/meta-box-visibility.mjs var import_element7 = __toESM(require_element(), 1); var import_data11 = __toESM(require_data(), 1); var import_editor8 = __toESM(require_editor(), 1); function MetaBoxVisibility({ id }) { const isVisible = (0, import_data11.useSelect)( (select3) => { return select3(import_editor8.store).isEditorPanelEnabled( `meta-box-${id}` ); }, [id] ); (0, import_element7.useEffect)(() => { const element = document.getElementById(id); if (!element) { return; } if (isVisible) { element.classList.remove("is-hidden"); } else { element.classList.add("is-hidden"); } }, [id, isVisible]); return null; } // packages/edit-post/build-module/components/meta-boxes/index.mjs var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1); function MetaBoxes({ location }) { const metaBoxes2 = (0, import_data12.useSelect)( (select3) => select3(store).getMetaBoxesPerLocation(location), [location] ); return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [ (metaBoxes2 ?? []).map(({ id }) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(MetaBoxVisibility, { id }, id)), /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(meta_boxes_area_default, { location }) ] }); } // packages/edit-post/build-module/components/more-menu/index.mjs var import_i18n10 = __toESM(require_i18n(), 1); var import_compose2 = __toESM(require_compose(), 1); var import_editor14 = __toESM(require_editor(), 1); var import_keycodes = __toESM(require_keycodes(), 1); var import_preferences8 = __toESM(require_preferences(), 1); // packages/edit-post/build-module/components/more-menu/manage-patterns-menu-item.mjs var import_components5 = __toESM(require_components(), 1); var import_core_data5 = __toESM(require_core_data(), 1); var import_data13 = __toESM(require_data(), 1); var import_i18n5 = __toESM(require_i18n(), 1); var import_url3 = __toESM(require_url(), 1); var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1); function ManagePatternsMenuItem() { const url = (0, import_data13.useSelect)((select3) => { const { canUser } = select3(import_core_data5.store); const defaultUrl = (0, import_url3.addQueryArgs)("edit.php", { post_type: "wp_block" }); const patternsUrl = (0, import_url3.addQueryArgs)("site-editor.php", { p: "/pattern" }); return canUser("create", { kind: "postType", name: "wp_template" }) ? patternsUrl : defaultUrl; }, []); return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_components5.MenuItem, { role: "menuitem", href: url, children: (0, import_i18n5.__)("Manage patterns") }); } var manage_patterns_menu_item_default = ManagePatternsMenuItem; // packages/edit-post/build-module/components/more-menu/welcome-guide-menu-item.mjs var import_data14 = __toESM(require_data(), 1); var import_preferences3 = __toESM(require_preferences(), 1); var import_i18n6 = __toESM(require_i18n(), 1); var import_editor9 = __toESM(require_editor(), 1); var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1); function WelcomeGuideMenuItem() { const isEditingTemplate2 = (0, import_data14.useSelect)( (select3) => select3(import_editor9.store).getCurrentPostType() === "wp_template", [] ); return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)( import_preferences3.PreferenceToggleMenuItem, { scope: "core/edit-post", name: isEditingTemplate2 ? "welcomeGuideTemplate" : "welcomeGuide", label: (0, import_i18n6.__)("Welcome Guide") } ); } // packages/edit-post/build-module/components/preferences-modal/index.mjs var import_i18n9 = __toESM(require_i18n(), 1); var import_preferences7 = __toESM(require_preferences(), 1); var import_editor13 = __toESM(require_editor(), 1); // packages/edit-post/build-module/components/preferences-modal/meta-boxes-section.mjs var import_i18n8 = __toESM(require_i18n(), 1); var import_data17 = __toESM(require_data(), 1); var import_editor12 = __toESM(require_editor(), 1); var import_preferences6 = __toESM(require_preferences(), 1); // packages/edit-post/build-module/components/preferences-modal/enable-custom-fields.mjs var import_element8 = __toESM(require_element(), 1); var import_i18n7 = __toESM(require_i18n(), 1); var import_components6 = __toESM(require_components(), 1); var import_data15 = __toESM(require_data(), 1); var import_editor10 = __toESM(require_editor(), 1); var import_preferences4 = __toESM(require_preferences(), 1); var import_url4 = __toESM(require_url(), 1); var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1); var { PreferenceBaseOption } = unlock(import_preferences4.privateApis); function submitCustomFieldsForm() { const customFieldsForm = document.getElementById( "toggle-custom-fields-form" ); customFieldsForm.querySelector('[name="_wp_http_referer"]').setAttribute("value", (0, import_url4.getPathAndQueryString)(window.location.href)); customFieldsForm.submit(); } function CustomFieldsConfirmation({ willEnable }) { const [isReloading, setIsReloading] = (0, import_element8.useState)(false); return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { className: "edit-post-preferences-modal__custom-fields-confirmation-message", children: (0, import_i18n7.__)( "A page reload is required for this change. Make sure your content is saved before reloading." ) }), /* @__PURE__ */ (0, import_jsx_runtime14.jsx)( import_components6.Button, { __next40pxDefaultSize: true, variant: "secondary", isBusy: isReloading, accessibleWhenDisabled: true, disabled: isReloading, onClick: () => { setIsReloading(true); submitCustomFieldsForm(); }, children: willEnable ? (0, import_i18n7.__)("Show & Reload Page") : (0, import_i18n7.__)("Hide & Reload Page") } ) ] }); } function EnableCustomFieldsOption({ label }) { const areCustomFieldsEnabled = (0, import_data15.useSelect)((select3) => { return !!select3(import_editor10.store).getEditorSettings().enableCustomFields; }, []); const [isChecked, setIsChecked] = (0, import_element8.useState)(areCustomFieldsEnabled); return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)( PreferenceBaseOption, { label, isChecked, onChange: setIsChecked, children: isChecked !== areCustomFieldsEnabled && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(CustomFieldsConfirmation, { willEnable: isChecked }) } ); } // packages/edit-post/build-module/components/preferences-modal/enable-panel.mjs var import_data16 = __toESM(require_data(), 1); var import_editor11 = __toESM(require_editor(), 1); var import_preferences5 = __toESM(require_preferences(), 1); var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1); var { PreferenceBaseOption: PreferenceBaseOption2 } = unlock(import_preferences5.privateApis); function EnablePanelOption(props) { const { toggleEditorPanelEnabled: toggleEditorPanelEnabled2 } = (0, import_data16.useDispatch)(import_editor11.store); const { isChecked, isRemoved } = (0, import_data16.useSelect)( (select3) => { const { isEditorPanelEnabled: isEditorPanelEnabled2, isEditorPanelRemoved: isEditorPanelRemoved2 } = select3(import_editor11.store); return { isChecked: isEditorPanelEnabled2(props.panelName), isRemoved: isEditorPanelRemoved2(props.panelName) }; }, [props.panelName] ); if (isRemoved) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)( PreferenceBaseOption2, { isChecked, onChange: () => toggleEditorPanelEnabled2(props.panelName), ...props } ); } // packages/edit-post/build-module/components/preferences-modal/meta-boxes-section.mjs var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1); var { PreferencesModalSection } = unlock(import_preferences6.privateApis); function MetaBoxesSection({ areCustomFieldsRegistered, metaBoxes: metaBoxes2, ...sectionProps }) { const thirdPartyMetaBoxes = metaBoxes2.filter( ({ id }) => id !== "postcustom" ); if (!areCustomFieldsRegistered && thirdPartyMetaBoxes.length === 0) { return null; } return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(PreferencesModalSection, { ...sectionProps, children: [ areCustomFieldsRegistered && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(EnableCustomFieldsOption, { label: (0, import_i18n8.__)("Custom fields") }), thirdPartyMetaBoxes.map(({ id, title }) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)( EnablePanelOption, { label: title, panelName: `meta-box-${id}` }, id )) ] }); } var meta_boxes_section_default = (0, import_data17.withSelect)((select3) => { const { getEditorSettings } = select3(import_editor12.store); const { getAllMetaBoxes: getAllMetaBoxes2 } = select3(store); return { // This setting should not live in the block editor's store. areCustomFieldsRegistered: getEditorSettings().enableCustomFields !== void 0, metaBoxes: getAllMetaBoxes2() }; })(MetaBoxesSection); // packages/edit-post/build-module/components/preferences-modal/index.mjs var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1); var { PreferenceToggleControl } = unlock(import_preferences7.privateApis); var { PreferencesModal } = unlock(import_editor13.privateApis); function EditPostPreferencesModal() { const extraSections = { general: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(meta_boxes_section_default, { title: (0, import_i18n9.__)("Advanced") }), appearance: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)( PreferenceToggleControl, { scope: "core/edit-post", featureName: "themeStyles", help: (0, import_i18n9.__)("Make the editor look like your theme."), label: (0, import_i18n9.__)("Use theme styles") } ) }; return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(PreferencesModal, { extraSections }); } // packages/edit-post/build-module/components/more-menu/index.mjs var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1); var { ToolsMoreMenuGroup, ViewMoreMenuGroup } = unlock(import_editor14.privateApis); var MoreMenu = () => { const isLargeViewport = (0, import_compose2.useViewportMatch)("large"); return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_jsx_runtime18.Fragment, { children: [ isLargeViewport && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ViewMoreMenuGroup, { children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)( import_preferences8.PreferenceToggleMenuItem, { scope: "core/edit-post", name: "fullscreenMode", label: (0, import_i18n10.__)("Fullscreen mode"), info: (0, import_i18n10.__)("Show and hide the admin user interface"), messageActivated: (0, import_i18n10.__)("Fullscreen mode activated."), messageDeactivated: (0, import_i18n10.__)( "Fullscreen mode deactivated." ), shortcut: import_keycodes.displayShortcut.secondary("f") } ) }), /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(ToolsMoreMenuGroup, { children: [ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(manage_patterns_menu_item_default, {}), /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(WelcomeGuideMenuItem, {}) ] }), /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(EditPostPreferencesModal, {}) ] }); }; var more_menu_default = MoreMenu; // packages/edit-post/build-module/components/welcome-guide/index.mjs var import_data20 = __toESM(require_data(), 1); // packages/edit-post/build-module/components/welcome-guide/default.mjs var import_data18 = __toESM(require_data(), 1); var import_components7 = __toESM(require_components(), 1); var import_i18n11 = __toESM(require_i18n(), 1); var import_element9 = __toESM(require_element(), 1); // packages/edit-post/build-module/components/welcome-guide/image.mjs var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1); function WelcomeGuideImage({ nonAnimatedSrc, animatedSrc }) { return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("picture", { className: "edit-post-welcome-guide__image", children: [ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)( "source", { srcSet: nonAnimatedSrc, media: "(prefers-reduced-motion: reduce)" } ), /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("img", { src: animatedSrc, width: "312", height: "240", alt: "" }) ] }); } // packages/edit-post/build-module/components/welcome-guide/default.mjs var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); function WelcomeGuideDefault() { const { toggleFeature: toggleFeature2 } = (0, import_data18.useDispatch)(store); return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)( import_components7.Guide, { className: "edit-post-welcome-guide", contentLabel: (0, import_i18n11.__)("Welcome to the editor"), finishButtonText: (0, import_i18n11.__)("Get started"), onFinish: () => toggleFeature2("welcomeGuide"), pages: [ { image: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)( WelcomeGuideImage, { nonAnimatedSrc: "https://s.w.org/images/block-editor/welcome-canvas.svg", animatedSrc: "https://s.w.org/images/block-editor/welcome-canvas.gif" } ), content: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("h1", { className: "edit-post-welcome-guide__heading", children: (0, import_i18n11.__)("Welcome to the editor") }), /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { className: "edit-post-welcome-guide__text", children: (0, import_i18n11.__)( "In the WordPress editor, each paragraph, image, or video is presented as a distinct \u201Cblock\u201D of content." ) }) ] }) }, { image: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)( WelcomeGuideImage, { nonAnimatedSrc: "https://s.w.org/images/block-editor/welcome-editor.svg", animatedSrc: "https://s.w.org/images/block-editor/welcome-editor.gif" } ), content: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("h1", { className: "edit-post-welcome-guide__heading", children: (0, import_i18n11.__)("Customize each block") }), /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { className: "edit-post-welcome-guide__text", children: (0, import_i18n11.__)( "Each block comes with its own set of controls for changing things like color, width, and alignment. These will show and hide automatically when you have a block selected." ) }) ] }) }, { image: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)( WelcomeGuideImage, { nonAnimatedSrc: "https://s.w.org/images/block-editor/welcome-library.svg", animatedSrc: "https://s.w.org/images/block-editor/welcome-library.gif" } ), content: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("h1", { className: "edit-post-welcome-guide__heading", children: (0, import_i18n11.__)("Explore all blocks") }), /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { className: "edit-post-welcome-guide__text", children: (0, import_element9.createInterpolateElement)( (0, import_i18n11.__)( "All of the blocks available to you live in the block library. You\u2019ll find it wherever you see the icon." ), { InserterIconImage: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)( "img", { alt: (0, import_i18n11.__)("inserter"), src: "data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='18' height='18' rx='2' fill='%231E1E1E'/%3E%3Cpath d='M9.22727 4V14M4 8.77273H14' stroke='white' stroke-width='1.5'/%3E%3C/svg%3E%0A" } ) } ) }) ] }) }, { image: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)( WelcomeGuideImage, { nonAnimatedSrc: "https://s.w.org/images/block-editor/welcome-documentation.svg", animatedSrc: "https://s.w.org/images/block-editor/welcome-documentation.gif" } ), content: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("h1", { className: "edit-post-welcome-guide__heading", children: (0, import_i18n11.__)("Learn more") }), /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { className: "edit-post-welcome-guide__text", children: (0, import_element9.createInterpolateElement)( (0, import_i18n11.__)( "New to the block editor? Want to learn more about using it? Here's a detailed guide." ), { a: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)( import_components7.ExternalLink, { href: (0, import_i18n11.__)( "https://wordpress.org/documentation/article/wordpress-block-editor/" ) } ) } ) }) ] }) } ] } ); } // packages/edit-post/build-module/components/welcome-guide/template.mjs var import_data19 = __toESM(require_data(), 1); var import_components8 = __toESM(require_components(), 1); var import_i18n12 = __toESM(require_i18n(), 1); var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); function WelcomeGuideTemplate() { const { toggleFeature: toggleFeature2 } = (0, import_data19.useDispatch)(store); return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)( import_components8.Guide, { className: "edit-template-welcome-guide", contentLabel: (0, import_i18n12.__)("Welcome to the template editor"), finishButtonText: (0, import_i18n12.__)("Get started"), onFinish: () => toggleFeature2("welcomeGuideTemplate"), pages: [ { image: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)( WelcomeGuideImage, { nonAnimatedSrc: "https://s.w.org/images/block-editor/welcome-template-editor.svg", animatedSrc: "https://s.w.org/images/block-editor/welcome-template-editor.gif" } ), content: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_jsx_runtime21.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("h1", { className: "edit-post-welcome-guide__heading", children: (0, import_i18n12.__)("Welcome to the template editor") }), /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("p", { className: "edit-post-welcome-guide__text", children: (0, import_i18n12.__)( "Templates help define the layout of the site. You can customize all aspects of your posts and pages using blocks and patterns in this editor." ) }) ] }) } ] } ); } // packages/edit-post/build-module/components/welcome-guide/index.mjs var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1); function WelcomeGuide({ postType }) { const { isActive, isEditingTemplate: isEditingTemplate2 } = (0, import_data20.useSelect)( (select3) => { const { isFeatureActive: isFeatureActive2 } = select3(store); const _isEditingTemplate = postType === "wp_template"; const feature = _isEditingTemplate ? "welcomeGuideTemplate" : "welcomeGuide"; return { isActive: isFeatureActive2(feature), isEditingTemplate: _isEditingTemplate }; }, [postType] ); if (!isActive) { return null; } return isEditingTemplate2 ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(WelcomeGuideTemplate, {}) : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(WelcomeGuideDefault, {}); } // packages/edit-post/build-module/commands/use-commands.mjs var import_data21 = __toESM(require_data(), 1); var import_i18n13 = __toESM(require_i18n(), 1); var import_commands = __toESM(require_commands(), 1); var import_preferences9 = __toESM(require_preferences(), 1); var import_notices2 = __toESM(require_notices(), 1); function useCommands() { const { isFullscreen } = (0, import_data21.useSelect)((select3) => { const { get } = select3(import_preferences9.store); return { isFullscreen: get("core/edit-post", "fullscreenMode") }; }, []); const { toggle } = (0, import_data21.useDispatch)(import_preferences9.store); const { createInfoNotice } = (0, import_data21.useDispatch)(import_notices2.store); (0, import_commands.useCommand)({ name: "core/toggle-fullscreen-mode", label: isFullscreen ? (0, import_i18n13.__)("Exit fullscreen") : (0, import_i18n13.__)("Enter fullscreen"), icon: fullscreen_default, category: "command", callback: ({ close }) => { toggle("core/edit-post", "fullscreenMode"); close(); createInfoNotice( isFullscreen ? (0, import_i18n13.__)("Fullscreen off.") : (0, import_i18n13.__)("Fullscreen on."), { id: "core/edit-post/toggle-fullscreen-mode/notice", type: "snackbar", actions: [ { label: (0, import_i18n13.__)("Undo"), onClick: () => { toggle("core/edit-post", "fullscreenMode"); } } ] } ); } }); } // packages/edit-post/build-module/components/layout/use-should-iframe.mjs var import_editor15 = __toESM(require_editor(), 1); var import_data22 = __toESM(require_data(), 1); var import_blocks2 = __toESM(require_blocks(), 1); var import_block_editor = __toESM(require_block_editor(), 1); var isGutenbergPlugin = false ? true : false; function useShouldIframe() { return (0, import_data22.useSelect)((select3) => { const { getCurrentPostType, getDeviceType } = select3(import_editor15.store); const { getClientIdsWithDescendants, getBlockName } = select3(import_block_editor.store); const { getBlockType } = select3(import_blocks2.store); return ( // If the Gutenberg plugin is active, we ALWAYS use the iframe for // consistency across the post and site editor. We plan on enforcing // the iframe in the future, so Gutenberg both serves as way for us // to warn plugin developers and for plugin developers to test their // blocks easily. Before GB v22.5, we only enforced it for // block-based themes (classic themes used the same rules as core). isGutenbergPlugin || // We also still want to iframe all the special // editor features and modes such as device previews, zoom out, and // template/pattern editing. getDeviceType() !== "Desktop" || ["wp_template", "wp_block"].includes(getCurrentPostType()) || unlock(select3(import_block_editor.store)).isZoomOut() || // Finally, still iframe the editor if all present blocks are v3 // (which means they are marked as iframe-compatible). [...new Set(getClientIdsWithDescendants().map(getBlockName))].map(getBlockType).filter(Boolean).every((blockType) => blockType.apiVersion >= 3) ); }, []); } // packages/edit-post/build-module/hooks/use-navigate-to-entity-record.mjs var import_element10 = __toESM(require_element(), 1); var import_data23 = __toESM(require_data(), 1); var import_editor16 = __toESM(require_editor(), 1); var import_core_data6 = __toESM(require_core_data(), 1); function useNavigateToEntityRecord(initialPostId, initialPostType, defaultRenderingMode) { const registry = (0, import_data23.useRegistry)(); const [postHistory, dispatch2] = (0, import_element10.useReducer)( (historyState, { type, post: post2, previousRenderingMode: previousRenderingMode2, selectedBlockClientId }) => { if (type === "push") { const updatedHistory = [...historyState]; const currentIndex = updatedHistory.length - 1; updatedHistory[currentIndex] = { ...updatedHistory[currentIndex], selectedBlockClientId }; return [...updatedHistory, { post: post2, previousRenderingMode: previousRenderingMode2 }]; } if (type === "pop") { if (historyState.length > 1) { return historyState.slice(0, -1); } } return historyState; }, [ { post: { postId: initialPostId, postType: initialPostType } } ] ); const { post, previousRenderingMode } = postHistory[postHistory.length - 1]; const { getRenderingMode } = (0, import_data23.useSelect)(import_editor16.store); const { setRenderingMode } = (0, import_data23.useDispatch)(import_editor16.store); const { editEntityRecord } = (0, import_data23.useDispatch)(import_core_data6.store); const onNavigateToEntityRecord = (0, import_element10.useCallback)( (params) => { const entityEdits = registry.select(import_core_data6.store).getEntityRecordEdits("postType", post.postType, post.postId); const externalClientId = entityEdits?.selection?.selectionStart?.clientId ?? null; dispatch2({ type: "push", post: { postId: params.postId, postType: params.postType }, // Save the current rendering mode so we can restore it when navigating back. previousRenderingMode: getRenderingMode(), selectedBlockClientId: externalClientId }); setRenderingMode(defaultRenderingMode); }, [ registry, post.postType, post.postId, getRenderingMode, setRenderingMode, defaultRenderingMode ] ); const onNavigateToPreviousEntityRecord = (0, import_element10.useCallback)(() => { if (postHistory.length > 1) { const previousItem = postHistory[postHistory.length - 2]; if (previousItem.selectedBlockClientId) { editEntityRecord( "postType", previousItem.post.postType, previousItem.post.postId, { selection: { selectionStart: { clientId: previousItem.selectedBlockClientId }, selectionEnd: { clientId: previousItem.selectedBlockClientId } } }, { undoIgnore: true } ); } } dispatch2({ type: "pop" }); if (previousRenderingMode) { setRenderingMode(previousRenderingMode); } }, [ setRenderingMode, previousRenderingMode, postHistory, editEntityRecord ]); return { currentPost: post, onNavigateToEntityRecord, onNavigateToPreviousEntityRecord: postHistory.length > 1 ? onNavigateToPreviousEntityRecord : void 0 }; } // packages/edit-post/build-module/components/meta-boxes/use-meta-box-initialization.mjs var import_data24 = __toESM(require_data(), 1); var import_editor17 = __toESM(require_editor(), 1); var import_core_data7 = __toESM(require_core_data(), 1); var import_element11 = __toESM(require_element(), 1); var useMetaBoxInitialization = (enabled) => { const { isEnabledAndEditorReady, isCollaborationEnabled, hasIncompatibleMetaBoxes, hasActiveMetaBoxes } = (0, import_data24.useSelect)( (select3) => { const { __unstableIsEditorReady, isCollaborationEnabledForCurrentPost } = unlock(select3(import_editor17.store)); return { isEnabledAndEditorReady: enabled && __unstableIsEditorReady(), isCollaborationEnabled: isCollaborationEnabledForCurrentPost(), hasIncompatibleMetaBoxes: enabled ? select3(store).getAllMetaBoxes().some((metaBox) => !metaBox.__rtc_compatible) : false, hasActiveMetaBoxes: enabled && select3(store).hasMetaBoxes() }; }, [enabled] ); const { setCollaborationSupported } = unlock((0, import_data24.useDispatch)(import_core_data7.store)); const { updateEditorSettings } = (0, import_data24.useDispatch)(import_editor17.store); const { initializeMetaBoxes: initializeMetaBoxes2 } = (0, import_data24.useDispatch)(store); (0, import_element11.useEffect)(() => { if (isEnabledAndEditorReady) { initializeMetaBoxes2(); if (isCollaborationEnabled && hasIncompatibleMetaBoxes) { setCollaborationSupported(false); } if (hasActiveMetaBoxes) { updateEditorSettings({ disableVisualRevisions: true }); } } }, [ isEnabledAndEditorReady, initializeMetaBoxes2, isCollaborationEnabled, setCollaborationSupported, hasIncompatibleMetaBoxes, hasActiveMetaBoxes, updateEditorSettings ]); }; // packages/edit-post/build-module/components/layout/index.mjs var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1); var { useCommandContext } = unlock(import_commands2.privateApis); var { useDrag } = unlock(import_components9.privateApis); var { Editor, FullscreenMode } = unlock(import_editor18.privateApis); var { BlockKeyboardShortcuts } = unlock(import_block_library.privateApis); var DESIGN_POST_TYPES = [ "wp_template", "wp_template_part", "wp_block", "wp_navigation" ]; function useEditorStyles(settings) { const { hasThemeStyleSupport } = (0, import_data25.useSelect)((select3) => { return { hasThemeStyleSupport: select3(store).isFeatureActive("themeStyles") }; }, []); return (0, import_element12.useMemo)(() => { const presetStyles = settings.styles?.filter( (style) => style.__unstableType && style.__unstableType !== "theme" ) ?? []; const defaultEditorStyles = [ ...settings?.defaultEditorStyles ?? [], ...presetStyles ]; const hasThemeStyles = hasThemeStyleSupport && presetStyles.length !== (settings.styles?.length ?? 0); if (!settings.disableLayoutStyles && !hasThemeStyles) { defaultEditorStyles.push({ css: getLayoutStyles({ style: {}, selector: "body", hasBlockGapSupport: false, hasFallbackGapSupport: true, fallbackGapValue: "0.5em" }) }); } return hasThemeStyles ? settings.styles ?? [] : defaultEditorStyles; }, [ settings.defaultEditorStyles, settings.disableLayoutStyles, settings.styles, hasThemeStyleSupport ]); } function MetaBoxesMain({ isLegacy }) { const [isOpen, openHeight, hasAnyVisible] = (0, import_data25.useSelect)((select3) => { const { get } = select3(import_preferences10.store); const { isMetaBoxLocationVisible: isMetaBoxLocationVisible2 } = select3(store); return [ !!get("core/edit-post", "metaBoxesMainIsOpen"), get("core/edit-post", "metaBoxesMainOpenHeight"), isMetaBoxLocationVisible2("normal") || isMetaBoxLocationVisible2("advanced") || isMetaBoxLocationVisible2("side") ]; }, []); const { set: setPreference } = (0, import_data25.useDispatch)(import_preferences10.store); const isShort = (0, import_compose3.useMediaQuery)("(max-height: 549px)"); const [{ min = 0, max }, setHeightConstraints] = (0, import_element12.useState)(() => ({})); const effectSizeConstraints = (0, import_compose3.useRefEffect)((node) => { const container = node.closest( ".interface-interface-skeleton__content" ); if (!container) { return; } const noticeLists = container.querySelectorAll( ":scope > .components-notice-list" ); const resizeHandle = container.querySelector( ".edit-post-meta-boxes-main__presenter" ); const deriveConstraints = () => { const fullHeight = container.offsetHeight; let nextMax = fullHeight; for (const element of noticeLists) { nextMax -= element.offsetHeight; } const nextMin = resizeHandle.offsetHeight; setHeightConstraints({ min: nextMin, max: nextMax }); }; const observer = new window.ResizeObserver(deriveConstraints); observer.observe(container); for (const element of noticeLists) { observer.observe(element); } return () => observer.disconnect(); }, []); const metaBoxesMainRef = (0, import_element12.useRef)(); const setMainRefs = (0, import_compose3.useMergeRefs)([ metaBoxesMainRef, effectSizeConstraints ]); const separatorRef = (0, import_element12.useRef)(); const separatorHelpId = (0, import_element12.useId)(); const heightRef = (0, import_element12.useRef)(); const applyHeight = (candidateHeight = "auto", isPersistent) => { let styleHeight; if (candidateHeight === "auto") { isPersistent = false; styleHeight = candidateHeight; } else { candidateHeight = Math.min(max, Math.max(min, candidateHeight)); heightRef.current = candidateHeight; styleHeight = `${candidateHeight}px`; } if (isPersistent) { setPreference( "core/edit-post", "metaBoxesMainOpenHeight", candidateHeight ); } else { metaBoxesMainRef.current.style.height = styleHeight; if (!isShort) { separatorRef.current.ariaValueNow = getAriaValueNow(candidateHeight); } } }; const bindDragGesture = useDrag( ({ movement, first, last, memo, tap, args }) => { const pane = metaBoxesMainRef.current; const [, yMovement] = movement; if (first) { pane.classList.add("is-resizing"); let fromHeight = heightRef.current ?? pane.offsetHeight; if (isOpen) { if (fromHeight > max) { fromHeight = max; } } else { fromHeight = min; } applyHeight(fromHeight - yMovement); return { fromHeight }; } if (!first && !last && !tap) { applyHeight(memo.fromHeight - yMovement); return memo; } pane.classList.remove("is-resizing"); if (tap) { const [onTap] = args; onTap?.(); return; } const nextIsOpen = heightRef.current > min; persistIsOpen(nextIsOpen); applyHeight(heightRef.current, nextIsOpen); }, { keyboardDisplacement: 20, filterTaps: true } ); if (!hasAnyVisible) { return; } const contents = /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)( "div", { className: "edit-post-layout__metaboxes edit-post-meta-boxes-main__liner", hidden: !isLegacy && !isOpen, children: [ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(MetaBoxes, { location: "normal" }), /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(MetaBoxes, { location: "advanced" }) ] } ); if (isLegacy) { return contents; } const isAutoHeight = openHeight === void 0; const usedOpenHeight = isShort ? "auto" : openHeight; const usedHeight = isOpen ? usedOpenHeight : min; const getAriaValueNow = (height) => Math.round((height - min) / (max - min) * 100); const usedAriaValueNow = max === void 0 || isAutoHeight ? 50 : getAriaValueNow(usedHeight); const persistIsOpen = (to = !isOpen) => setPreference("core/edit-post", "metaBoxesMainIsOpen", to); const paneLabel = (0, import_i18n14.__)("Meta Boxes"); const toggle = /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)( "button", { "aria-expanded": isOpen, onClick: ({ detail }) => { if (isShort || !detail) { persistIsOpen(); } }, ...!isShort && bindDragGesture(persistIsOpen), children: [ paneLabel, /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_components9.Icon, { icon: isOpen ? chevron_up_default : chevron_down_default }) ] } ); const separator = !isShort && /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_components9.Tooltip, { text: (0, import_i18n14.__)("Drag to resize"), children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)( "button", { ref: separatorRef, role: "separator", "aria-valuenow": usedAriaValueNow, "aria-label": (0, import_i18n14.__)("Drag to resize"), "aria-describedby": separatorHelpId, ...bindDragGesture() } ) }), /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_components9.VisuallyHidden, { id: separatorHelpId, children: (0, import_i18n14.__)( "Use up and down arrow keys to resize the meta box pane." ) }) ] }); return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)( navigable_region_default, { "aria-label": paneLabel, ref: setMainRefs, className: clsx_default( "edit-post-meta-boxes-main", !isShort && "is-resizable" ), style: { height: usedHeight }, children: [ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "edit-post-meta-boxes-main__presenter", children: [ toggle, separator ] }), contents ] } ); } function Layout({ postId: initialPostId, postType: initialPostType, settings, initialEdits }) { useCommands(); const shouldIframe = useShouldIframe(); const { createErrorNotice } = (0, import_data25.useDispatch)(import_notices3.store); const { currentPost: { postId: currentPostId, postType: currentPostType }, onNavigateToEntityRecord, onNavigateToPreviousEntityRecord } = useNavigateToEntityRecord( initialPostId, initialPostType, "post-only" ); const isEditingTemplate2 = currentPostType === "wp_template"; const { mode, isFullscreenActive, hasResolvedMode, hasActiveMetaboxes, hasBlockSelected, showIconLabels, isDistractionFree, showMetaBoxes, isWelcomeGuideVisible, templateId, isDevicePreview } = (0, import_data25.useSelect)( (select3) => { const { get } = select3(import_preferences10.store); const { isFeatureActive: isFeatureActive2, hasMetaBoxes: hasMetaBoxes2 } = select3(store); const { canUser, getPostType, getTemplateId } = unlock( select3(import_core_data8.store) ); const supportsTemplateMode = settings.supportsTemplateMode; const isViewable = getPostType(currentPostType)?.viewable ?? false; const canViewTemplate = canUser("read", { kind: "postType", name: "wp_template" }); const { getBlockSelectionStart, isZoomOut } = unlock( select3(import_block_editor2.store) ); const { getEditorMode: getEditorMode2, getDefaultRenderingMode, getDeviceType } = unlock(select3(import_editor18.store)); const isNotDesignPostType = !DESIGN_POST_TYPES.includes(currentPostType); const isDirectlyEditingPattern = currentPostType === "wp_block" && !onNavigateToPreviousEntityRecord; const _templateId = getTemplateId(currentPostType, currentPostId); const defaultMode = getDefaultRenderingMode(currentPostType); return { mode: getEditorMode2(), isFullscreenActive: isFeatureActive2("fullscreenMode"), hasActiveMetaboxes: hasMetaBoxes2(), hasResolvedMode: defaultMode === "template-locked" ? !!_templateId : defaultMode !== void 0, hasBlockSelected: !!getBlockSelectionStart(), showIconLabels: get("core", "showIconLabels"), isDistractionFree: get("core", "distractionFree"), showMetaBoxes: isNotDesignPostType && !isZoomOut() || isDirectlyEditingPattern, isWelcomeGuideVisible: isFeatureActive2("welcomeGuide"), templateId: supportsTemplateMode && isViewable && canViewTemplate && !isEditingTemplate2 ? _templateId : null, isDevicePreview: getDeviceType() !== "Desktop" }; }, [ currentPostType, currentPostId, isEditingTemplate2, settings.supportsTemplateMode, onNavigateToPreviousEntityRecord ] ); useMetaBoxInitialization(hasActiveMetaboxes && hasResolvedMode); const commandContext = hasBlockSelected ? "block-selection-edit" : "entity-edit"; useCommandContext(commandContext); const styles = useEditorStyles(settings); const editorSettings = (0, import_element12.useMemo)( () => ({ ...settings, styles, onNavigateToEntityRecord, onNavigateToPreviousEntityRecord, defaultRenderingMode: "post-only" }), [ settings, styles, onNavigateToEntityRecord, onNavigateToPreviousEntityRecord ] ); if (showIconLabels) { document.body.classList.add("show-icon-labels"); } else { document.body.classList.remove("show-icon-labels"); } const navigateRegionsProps = (0, import_components9.__unstableUseNavigateRegions)(); const className = clsx_default("edit-post-layout", "is-mode-" + mode, { "has-metaboxes": hasActiveMetaboxes }); function onPluginAreaError(name) { createErrorNotice( (0, import_i18n14.sprintf)( /* translators: %s: plugin name */ (0, import_i18n14.__)( 'The "%s" plugin has encountered an error and cannot be rendered.' ), name ) ); } const { createSuccessNotice } = (0, import_data25.useDispatch)(import_notices3.store); const onActionPerformed = (0, import_element12.useCallback)( (actionId, items) => { switch (actionId) { case "move-to-trash": { document.location.href = (0, import_url5.addQueryArgs)("edit.php", { trashed: 1, post_type: items[0].type, ids: items[0].id }); } break; case "duplicate-post": { const newItem = items[0]; const title = typeof newItem.title === "string" ? newItem.title : newItem.title?.rendered; createSuccessNotice( (0, import_i18n14.sprintf)( // translators: %s: Title of the created post or template, e.g: "Hello world". (0, import_i18n14.__)('"%s" successfully created.'), (0, import_html_entities.decodeEntities)(title) || (0, import_i18n14.__)("(no title)") ), { type: "snackbar", id: "duplicate-post-action", actions: [ { label: (0, import_i18n14.__)("Edit"), onClick: () => { const postId = newItem.id; document.location.href = (0, import_url5.addQueryArgs)("post.php", { post: postId, action: "edit" }); } } ] } ); } break; } }, [createSuccessNotice] ); const initialPost = (0, import_element12.useMemo)(() => { return { type: initialPostType, id: initialPostId }; }, [initialPostType, initialPostId]); const backButton = (0, import_compose3.useViewportMatch)("medium") && isFullscreenActive ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(back_button_default, { initialPost }) : null; return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_components9.SlotFillProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_editor18.ErrorBoundary, { canCopyContent: true, children: [ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(WelcomeGuide, { postType: currentPostType }), /* @__PURE__ */ (0, import_jsx_runtime23.jsx)( "div", { className: navigateRegionsProps.className, ...navigateRegionsProps, ref: navigateRegionsProps.ref, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)( Editor, { settings: editorSettings, initialEdits, postType: currentPostType, postId: currentPostId, templateId, className, forceIsDirty: hasActiveMetaboxes, disableIframe: !shouldIframe, autoFocus: !isWelcomeGuideVisible, onActionPerformed, extraSidebarPanels: showMetaBoxes && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(MetaBoxes, { location: "side" }), extraContent: !isDistractionFree && showMetaBoxes && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(MetaBoxesMain, { isLegacy: isDevicePreview }), children: [ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_editor18.PostLockedModal, {}), /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(EditorInitialization, {}), /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(FullscreenMode, { isActive: isFullscreenActive }), /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(BrowserURL, {}), /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_editor18.UnsavedChangesWarning, {}), /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_editor18.AutosaveMonitor, {}), /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_editor18.LocalAutosaveMonitor, {}), /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(keyboard_shortcuts_default, {}), /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_editor18.EditorKeyboardShortcutsRegister, {}), /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(BlockKeyboardShortcuts, {}), currentPostType === "wp_block" && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(InitPatternModal, {}), /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_plugins.PluginArea, { onError: onPluginAreaError }), /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(more_menu_default, {}), backButton, /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_notices3.SnackbarNotices, { className: "edit-post-layout__snackbar" }) ] } ) } ) ] }) }); } var layout_default = Layout; // packages/edit-post/build-module/deprecated.mjs var import_editor19 = __toESM(require_editor(), 1); var import_url6 = __toESM(require_url(), 1); var import_deprecated3 = __toESM(require_deprecated(), 1); var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1); var { PluginPostExcerpt } = unlock(import_editor19.privateApis); var isSiteEditor = (0, import_url6.getPath)(window.location.href)?.includes( "site-editor.php" ); var deprecateSlot = (name) => { (0, import_deprecated3.default)(`wp.editPost.${name}`, { since: "6.6", alternative: `wp.editor.${name}` }); }; function PluginBlockSettingsMenuItem(props) { if (isSiteEditor) { return null; } deprecateSlot("PluginBlockSettingsMenuItem"); return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_editor19.PluginBlockSettingsMenuItem, { ...props }); } function PluginDocumentSettingPanel(props) { if (isSiteEditor) { return null; } deprecateSlot("PluginDocumentSettingPanel"); return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_editor19.PluginDocumentSettingPanel, { ...props }); } function PluginMoreMenuItem(props) { if (isSiteEditor) { return null; } deprecateSlot("PluginMoreMenuItem"); return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_editor19.PluginMoreMenuItem, { ...props }); } function PluginPrePublishPanel(props) { if (isSiteEditor) { return null; } deprecateSlot("PluginPrePublishPanel"); return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_editor19.PluginPrePublishPanel, { ...props }); } function PluginPostPublishPanel(props) { if (isSiteEditor) { return null; } deprecateSlot("PluginPostPublishPanel"); return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_editor19.PluginPostPublishPanel, { ...props }); } function PluginPostStatusInfo(props) { if (isSiteEditor) { return null; } deprecateSlot("PluginPostStatusInfo"); return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_editor19.PluginPostStatusInfo, { ...props }); } function PluginSidebar(props) { if (isSiteEditor) { return null; } deprecateSlot("PluginSidebar"); return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_editor19.PluginSidebar, { ...props }); } function PluginSidebarMoreMenuItem(props) { if (isSiteEditor) { return null; } deprecateSlot("PluginSidebarMoreMenuItem"); return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_editor19.PluginSidebarMoreMenuItem, { ...props }); } function __experimentalPluginPostExcerpt() { if (isSiteEditor) { return null; } (0, import_deprecated3.default)("wp.editPost.__experimentalPluginPostExcerpt", { since: "6.6", hint: "Core and custom panels can be access programmatically using their panel name.", link: "https://developer.wordpress.org/block-editor/reference-guides/slotfills/plugin-document-setting-panel/#accessing-a-panel-programmatically" }); return PluginPostExcerpt; } // packages/edit-post/build-module/index.mjs var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1); var { BackButton: __experimentalMainDashboardButton, registerCoreBlockBindingsSources } = unlock(import_editor20.privateApis); function initializeEditor(id, postType, postId, settings, initialEdits) { const isMediumOrBigger = window.matchMedia("(min-width: 782px)").matches; const target = document.getElementById(id); const root = (0, import_element13.createRoot)(target); (0, import_data26.dispatch)(import_preferences11.store).setDefaults("core/edit-post", { fullscreenMode: true, themeStyles: true, welcomeGuide: true, welcomeGuideTemplate: true }); (0, import_data26.dispatch)(import_preferences11.store).setDefaults("core", { allowRightClickOverrides: true, editorMode: "visual", editorTool: "edit", fixedToolbar: false, hiddenBlockTypes: [], inactivePanels: [], openPanels: ["post-status"], showBlockBreadcrumbs: true, showIconLabels: false, showListViewByDefault: false, enableChoosePatternModal: true, isPublishSidebarEnabled: true, showCollaborationCursor: false, showCollaborationNotifications: true }); if (window.__clientSideMediaProcessing) { (0, import_data26.dispatch)(import_preferences11.store).setDefaults("core/media", { requireApproval: true, optimizeOnUpload: true }); } (0, import_data26.dispatch)(import_blocks3.store).reapplyBlockTypeFilters(); if (isMediumOrBigger && (0, import_data26.select)(import_preferences11.store).get("core", "showListViewByDefault") && !(0, import_data26.select)(import_preferences11.store).get("core", "distractionFree")) { (0, import_data26.dispatch)(import_editor20.store).setIsListViewOpened(true); } (0, import_block_library2.registerCoreBlocks)(); registerCoreBlockBindingsSources(); (0, import_widgets.registerLegacyWidgetBlock)({ inserter: false }); (0, import_widgets.registerWidgetGroupBlock)({ inserter: false }); if (false) { (0, import_block_library2.__experimentalRegisterExperimentalCoreBlocks)({ enableFSEBlocks: settings.__unstableEnableFullSiteEditingBlocks }); } const documentMode = document.compatMode === "CSS1Compat" ? "Standards" : "Quirks"; if (documentMode !== "Standards") { console.warn( "Your browser is using Quirks Mode. \nThis can cause rendering issues such as blocks overlaying meta boxes in the editor. Quirks Mode can be triggered by PHP errors or HTML code appearing before the opening . Try checking the raw page source or your site's PHP error log and resolving errors there, removing any HTML before the doctype, or disabling plugins." ); } const isIphone = window.navigator.userAgent.indexOf("iPhone") !== -1; if (isIphone) { window.addEventListener("scroll", (event) => { const editorScrollContainer = document.getElementsByClassName( "interface-interface-skeleton__body" )[0]; if (event.target === document) { if (window.scrollY > 100) { editorScrollContainer.scrollTop = editorScrollContainer.scrollTop + window.scrollY; } if (document.getElementsByClassName("is-mode-visual")[0]) { window.scrollTo(0, 0); } } }); } window.addEventListener("dragover", (e) => e.preventDefault(), false); window.addEventListener("drop", (e) => e.preventDefault(), false); root.render( /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_element13.StrictMode, { children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)( layout_default, { settings, postId, postType, initialEdits } ) }) ); return root; } function reinitializeEditor() { (0, import_deprecated4.default)("wp.editPost.reinitializeEditor", { since: "6.2", version: "6.3" }); } return __toCommonJS(index_exports); })(); dist/element.min.js000064400000030252152375074240010273 0ustar00/*! This file is auto-generated */ "use strict";var wp;(wp||={}).element=(()=>{var oe=Object.create;var S=Object.defineProperty;var ie=Object.getOwnPropertyDescriptor;var ae=Object.getOwnPropertyNames;var se=Object.getPrototypeOf,ue=Object.prototype.hasOwnProperty;var x=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),le=(e,t)=>{for(var o in t)S(e,o,{get:t[o],enumerable:!0})},L=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of ae(t))!ue.call(e,n)&&n!==o&&S(e,n,{get:()=>t[n],enumerable:!(i=ie(t,n))||i.enumerable});return e};var O=(e,t,o)=>(o=e!=null?oe(se(e)):{},L(t||!e||!e.__esModule?S(o,"default",{value:e,enumerable:!0}):o,e)),ce=e=>L(S({},"__esModule",{value:!0}),e);var N=x((Fe,D)=>{D.exports=window.React});var j=x((We,F)=>{F.exports=window.ReactDOM});var z=x(A=>{"use strict";var V=j();A.createRoot=V.createRoot,A.hydrateRoot=V.hydrateRoot;var $e});var J=x((st,Z)=>{Z.exports=window.wp.escapeHtml});var Ue={};le(Ue,{Children:()=>r.Children,Component:()=>r.Component,Fragment:()=>r.Fragment,Platform:()=>B,PureComponent:()=>r.PureComponent,RawHTML:()=>P,StrictMode:()=>r.StrictMode,Suspense:()=>r.Suspense,cloneElement:()=>r.cloneElement,concatChildren:()=>fe,createContext:()=>r.createContext,createElement:()=>r.createElement,createInterpolateElement:()=>H,createPortal:()=>u.createPortal,createRef:()=>r.createRef,createRoot:()=>E.createRoot,findDOMNode:()=>u.findDOMNode,flushSync:()=>u.flushSync,forwardRef:()=>r.forwardRef,hydrate:()=>u.hydrate,hydrateRoot:()=>E.hydrateRoot,isEmptyElement:()=>be,isValidElement:()=>r.isValidElement,lazy:()=>r.lazy,memo:()=>r.memo,render:()=>u.render,renderToString:()=>ne,startTransition:()=>r.startTransition,switchChildrenNodeName:()=>pe,unmountComponentAtNode:()=>u.unmountComponentAtNode,useCallback:()=>r.useCallback,useContext:()=>r.useContext,useDebugValue:()=>r.useDebugValue,useDeferredValue:()=>r.useDeferredValue,useEffect:()=>r.useEffect,useId:()=>r.useId,useImperativeHandle:()=>r.useImperativeHandle,useInsertionEffect:()=>r.useInsertionEffect,useLayoutEffect:()=>r.useLayoutEffect,useMemo:()=>r.useMemo,useReducer:()=>r.useReducer,useRef:()=>r.useRef,useState:()=>r.useState,useSyncExternalStore:()=>r.useSyncExternalStore,useTransition:()=>r.useTransition});var r=O(N(),1);function fe(...e){return e.reduce((t,o,i)=>(r.Children.forEach(o,(n,a)=>{(0,r.isValidElement)(n)&&typeof n!="string"&&(n=(0,r.cloneElement)(n,{key:[i,a].join()})),t.push(n)}),t),[])}function pe(e,t){return e&&r.Children.map(e,(o,i)=>{if(typeof o?.valueOf()=="string")return(0,r.createElement)(t,{key:i},o);if(!(0,r.isValidElement)(o))return o;let{children:n,...a}=o.props;return(0,r.createElement)(t,{key:i,...a},n)})}var f,p,h,d,U=/<(\/)?(\w+)\s*(\/)?>/g;function C(e,t,o,i,n){return{element:e,tokenStart:t,tokenLength:o,prevOffset:i,leadingTextStart:n,children:[]}}var de=(e,t)=>{if(f=e,p=0,h=[],d=[],U.lastIndex=0,!he(t))throw new TypeError("The conversionMap provided is not valid. It must be an object with values that are React Elements");do;while(ye(t));return(0,r.createElement)(r.Fragment,null,...h)},he=e=>{let t=typeof e=="object"&&e!==null,o=t&&Object.values(e);return t&&o.length>0&&o.every(i=>(0,r.isValidElement)(i))};function ye(e){let t=me(),[o,i,n,a]=t,s=d.length,l=n>p?p:null;if(i&&!e[i])return k(),!1;switch(o){case"no-more-tokens":if(s!==0){let{leadingTextStart:w,tokenStart:_}=d.pop();h.push(f.substr(w,_))}return k(),!1;case"self-closed":return s===0?(l!==null&&h.push(f.substr(l,n-l)),h.push(e[i]),p=n+a,!0):(M(C(e[i],n,a)),p=n+a,!0);case"opener":return d.push(C(e[i],n,a,n+a,l)),p=n+a,!0;case"closer":if(s===1)return ge(n),p=n+a,!0;let c=d.pop(),R=f.substr(c.prevOffset,n-c.prevOffset);c.children.push(R),c.prevOffset=n+a;let y=C(c.element,c.tokenStart,c.tokenLength,n+a);return y.children=c.children,M(y),p=n+a,!0;default:return k(),!1}}function me(){let e=U.exec(f);if(e===null)return["no-more-tokens"];let t=e.index,[o,i,n,a]=e,s=o.length;return a?["self-closed",n,t,s]:i?["closer",n,t,s]:["opener",n,t,s]}function k(){let e=f.length-p;e!==0&&h.push(f.substr(p,e))}function M(e){let{element:t,tokenStart:o,tokenLength:i,prevOffset:n,children:a}=e,s=d[d.length-1],l=f.substr(s.prevOffset,o-s.prevOffset);l&&s.children.push(l),s.children.push((0,r.cloneElement)(t,null,...a)),s.prevOffset=n||o+i}function ge(e){let{element:t,leadingTextStart:o,prevOffset:i,tokenStart:n,children:a}=d.pop(),s=e?f.substr(i,e-i):f.substr(i);s&&a.push(s),o!==null&&h.push(f.substr(o,n-o)),h.push((0,r.cloneElement)(t,null,...a))}var H=de;var u=O(j(),1),E=O(z(),1);var be=e=>typeof e=="number"?!1:typeof e?.valueOf()=="string"||Array.isArray(e)?!e.length:!e;var we={OS:"web",select(e){return"web"in e?e.web:e.default},isWeb:!0},B=we;function W(e){return Object.prototype.toString.call(e)==="[object Object]"}function $(e){var t,o;return W(e)===!1?!1:(t=e.constructor,t===void 0?!0:(o=t.prototype,!(W(o)===!1||o.hasOwnProperty("isPrototypeOf")===!1)))}var m=function(){return m=Object.assign||function(t){for(var o,i=1,n=arguments.length;i{typeof i=="string"&&i.trim()!==""&&(o+=i)}),(0,r.createElement)("div",{dangerouslySetInnerHTML:{__html:o},...t})}var re=(0,r.createContext)(void 0);re.displayName="ElementContext";var{Provider:Se,Consumer:xe}=re,Oe=(0,r.forwardRef)(()=>null),Ee=new Set(["string","boolean","number"]),Te=new Set(["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"]),Pe=new Set(["allowfullscreen","allowpaymentrequest","allowusermedia","async","autofocus","autoplay","checked","controls","default","defer","disabled","download","formnovalidate","hidden","ismap","itemscope","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected","typemustmatch"]),Re=new Set(["autocapitalize","autocomplete","charset","contenteditable","crossorigin","decoding","dir","draggable","enctype","formenctype","formmethod","http-equiv","inputmode","kind","method","preload","scope","shape","spellcheck","translate","type","wrap"]),Ce=new Set(["animation","animationIterationCount","baselineShift","borderImageOutset","borderImageSlice","borderImageWidth","columnCount","cx","cy","fillOpacity","flexGrow","flexShrink","floodOpacity","fontWeight","gridColumnEnd","gridColumnStart","gridRowEnd","gridRowStart","lineHeight","opacity","order","orphans","r","rx","ry","shapeImageThreshold","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","tabSize","widows","x","y","zIndex","zoom"]);function I(e,t){return t.some(o=>e.indexOf(o)===0)}function ke(e){return e==="key"||e==="children"}function je(e,t){return e==="style"?Me(t):t}var K=["accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipPath","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dominantBaseline","enableBackground","fillOpacity","fillRule","floodColor","floodOpacity","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","horizAdvX","horizOriginX","imageRendering","letterSpacing","lightingColor","markerEnd","markerMid","markerStart","overlinePosition","overlineThickness","paintOrder","panose1","pointerEvents","renderingIntent","shapeRendering","stopColor","stopOpacity","strikethroughPosition","strikethroughThickness","strokeDasharray","strokeDashoffset","strokeLinecap","strokeLinejoin","strokeMiterlimit","strokeOpacity","strokeWidth","textAnchor","textDecoration","textRendering","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","wordSpacing","writingMode","xmlnsXlink","xHeight"].reduce((e,t)=>(e[t.toLowerCase()]=t,e),{}),Q=["allowReorder","attributeName","attributeType","autoReverse","baseFrequency","baseProfile","calcMode","clipPathUnits","contentScriptType","contentStyleType","diffuseConstant","edgeMode","externalResourcesRequired","filterRes","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","suppressContentEditableWarning","suppressHydrationWarning","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector"].reduce((e,t)=>(e[t.toLowerCase()]=t,e),{}),ee=["xlink:actuate","xlink:arcrole","xlink:href","xlink:role","xlink:show","xlink:title","xlink:type","xml:base","xml:lang","xml:space","xmlns:xlink"].reduce((e,t)=>(e[t.replace(":","").toLowerCase()]=t,e),{});function Ae(e){switch(e){case"htmlFor":return"for";case"className":return"class"}let t=e.toLowerCase();return Q[t]?Q[t]:K[t]?T(K[t]):ee[t]?ee[t]:t}function Ie(e){return e.startsWith("--")?e:I(e,["ms","O","Moz","Webkit"])?"-"+T(e):T(e)}function Le(e,t){return typeof t=="number"&&t!==0&&!I(e,["--"])&&!Ce.has(e)?t+"px":t}function g(e,t,o={}){if(e==null||e===!1)return"";if(Array.isArray(e))return v(e,t,o);switch(typeof e){case"string":return(0,b.escapeHTML)(e);case"number":return e.toString()}let{type:i,props:n}=e;switch(i){case r.StrictMode:case r.Fragment:return v(n.children,t,o);case P:let{children:a,...s}=n;return te(Object.keys(s).length?"div":null,{...s,dangerouslySetInnerHTML:{__html:a}},t,o)}switch(typeof i){case"string":return te(i,n,t,o);case"function":return i.prototype&&typeof i.prototype.render=="function"?De(i,n,t,o):g(i(n,o),t,o)}switch(i&&i.$$typeof){case Se.$$typeof:return v(n.children,n.value,o);case xe.$$typeof:return g(n.children(t||i._currentValue),t,o);case Oe.$$typeof:return g(i.render(n),t,o)}return""}function te(e,t,o,i={}){let n="";if(e==="textarea"&&t.hasOwnProperty("value")){n=v(t.value,o,i);let{value:s,...l}=t;t=l}else t.dangerouslySetInnerHTML&&typeof t.dangerouslySetInnerHTML.__html=="string"?n=t.dangerouslySetInnerHTML.__html:typeof t.children<"u"&&(n=v(t.children,o,i));if(!e)return n;let a=Ne(t);return Te.has(e)?"<"+e+a+"/>":"<"+e+a+">"+n+""}function De(e,t,o,i={}){let n=new e(t,i);return typeof n.getChildContext=="function"&&Object.assign(i,n.getChildContext()),g(n.render(),o,i)}function v(e,t,o={}){let i="",n=Array.isArray(e)?e:[e];for(let a=0;a * * Copyright (c) 2014-2017, Jon Schlinkert. * Released under the MIT License. *) */ dist/hooks.js000064400000027722152375074240007213 0ustar00"use strict"; var wp; (wp ||= {}).hooks = (() => { var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // packages/hooks/build-module/index.mjs var index_exports = {}; __export(index_exports, { actions: () => actions, addAction: () => addAction, addFilter: () => addFilter, applyFilters: () => applyFilters, applyFiltersAsync: () => applyFiltersAsync, createHooks: () => createHooks_default, currentAction: () => currentAction, currentFilter: () => currentFilter, defaultHooks: () => defaultHooks, didAction: () => didAction, didFilter: () => didFilter, doAction: () => doAction, doActionAsync: () => doActionAsync, doingAction: () => doingAction, doingFilter: () => doingFilter, filters: () => filters, hasAction: () => hasAction, hasFilter: () => hasFilter, removeAction: () => removeAction, removeAllActions: () => removeAllActions, removeAllFilters: () => removeAllFilters, removeFilter: () => removeFilter }); // packages/hooks/build-module/validateNamespace.mjs function validateNamespace(namespace) { if ("string" !== typeof namespace || "" === namespace) { console.error("The namespace must be a non-empty string."); return false; } if (!/^[a-zA-Z][a-zA-Z0-9_.\-\/]*$/.test(namespace)) { console.error( "The namespace can only contain numbers, letters, dashes, periods, underscores and slashes." ); return false; } return true; } var validateNamespace_default = validateNamespace; // packages/hooks/build-module/validateHookName.mjs function validateHookName(hookName) { if ("string" !== typeof hookName || "" === hookName) { console.error("The hook name must be a non-empty string."); return false; } if (/^__/.test(hookName)) { console.error("The hook name cannot begin with `__`."); return false; } if (!/^[a-zA-Z][a-zA-Z0-9_.-]*$/.test(hookName)) { console.error( "The hook name can only contain numbers, letters, dashes, periods and underscores." ); return false; } return true; } var validateHookName_default = validateHookName; // packages/hooks/build-module/createAddHook.mjs function createAddHook(hooks, storeKey) { return function addHook(hookName, namespace, callback, priority = 10) { const hooksStore = hooks[storeKey]; if (!validateHookName_default(hookName)) { return; } if (!validateNamespace_default(namespace)) { return; } if ("function" !== typeof callback) { console.error("The hook callback must be a function."); return; } if ("number" !== typeof priority) { console.error( "If specified, the hook priority must be a number." ); return; } const handler = { callback, priority, namespace }; if (hooksStore[hookName]) { const handlers = hooksStore[hookName].handlers; let i; for (i = handlers.length; i > 0; i--) { if (priority >= handlers[i - 1].priority) { break; } } if (i === handlers.length) { handlers[i] = handler; } else { handlers.splice(i, 0, handler); } hooksStore.__current.forEach((hookInfo) => { if (hookInfo.name === hookName && hookInfo.currentIndex >= i) { hookInfo.currentIndex++; } }); } else { hooksStore[hookName] = { handlers: [handler], runs: 0 }; } if (hookName !== "hookAdded") { hooks.doAction( "hookAdded", hookName, namespace, callback, priority ); } }; } var createAddHook_default = createAddHook; // packages/hooks/build-module/createRemoveHook.mjs function createRemoveHook(hooks, storeKey, removeAll = false) { return function removeHook(hookName, namespace) { const hooksStore = hooks[storeKey]; if (!validateHookName_default(hookName)) { return; } if (!removeAll && !validateNamespace_default(namespace)) { return; } if (!hooksStore[hookName]) { return 0; } let handlersRemoved = 0; if (removeAll) { handlersRemoved = hooksStore[hookName].handlers.length; hooksStore[hookName] = { runs: hooksStore[hookName].runs, handlers: [] }; } else { const handlers = hooksStore[hookName].handlers; for (let i = handlers.length - 1; i >= 0; i--) { if (handlers[i].namespace === namespace) { handlers.splice(i, 1); handlersRemoved++; hooksStore.__current.forEach((hookInfo) => { if (hookInfo.name === hookName && hookInfo.currentIndex >= i) { hookInfo.currentIndex--; } }); } } } if (hookName !== "hookRemoved") { hooks.doAction("hookRemoved", hookName, namespace); } return handlersRemoved; }; } var createRemoveHook_default = createRemoveHook; // packages/hooks/build-module/createHasHook.mjs function createHasHook(hooks, storeKey) { return function hasHook(hookName, namespace) { const hooksStore = hooks[storeKey]; if ("undefined" !== typeof namespace) { return hookName in hooksStore && hooksStore[hookName].handlers.some( (hook) => hook.namespace === namespace ); } return hookName in hooksStore; }; } var createHasHook_default = createHasHook; // packages/hooks/build-module/createRunHook.mjs function createRunHook(hooks, storeKey, returnFirstArg, async) { return function runHook(hookName, ...args) { const hooksStore = hooks[storeKey]; if (!hooksStore[hookName]) { hooksStore[hookName] = { handlers: [], runs: 0 }; } hooksStore[hookName].runs++; const handlers = hooksStore[hookName].handlers; if (true) { if ("hookAdded" !== hookName && hooksStore.all) { handlers.push(...hooksStore.all.handlers); } } if (!handlers || !handlers.length) { return returnFirstArg ? args[0] : void 0; } const hookInfo = { name: hookName, currentIndex: 0 }; async function asyncRunner() { try { hooksStore.__current.add(hookInfo); let result = returnFirstArg ? args[0] : void 0; while (hookInfo.currentIndex < handlers.length) { const handler = handlers[hookInfo.currentIndex]; result = await handler.callback.apply(null, args); if (returnFirstArg) { args[0] = result; } hookInfo.currentIndex++; } return returnFirstArg ? result : void 0; } finally { hooksStore.__current.delete(hookInfo); } } function syncRunner() { try { hooksStore.__current.add(hookInfo); let result = returnFirstArg ? args[0] : void 0; while (hookInfo.currentIndex < handlers.length) { const handler = handlers[hookInfo.currentIndex]; result = handler.callback.apply(null, args); if (returnFirstArg) { args[0] = result; } hookInfo.currentIndex++; } return returnFirstArg ? result : void 0; } finally { hooksStore.__current.delete(hookInfo); } } return (async ? asyncRunner : syncRunner)(); }; } var createRunHook_default = createRunHook; // packages/hooks/build-module/createCurrentHook.mjs function createCurrentHook(hooks, storeKey) { return function currentHook() { const hooksStore = hooks[storeKey]; const currentArray = Array.from(hooksStore.__current); return currentArray.at(-1)?.name ?? null; }; } var createCurrentHook_default = createCurrentHook; // packages/hooks/build-module/createDoingHook.mjs function createDoingHook(hooks, storeKey) { return function doingHook(hookName) { const hooksStore = hooks[storeKey]; if ("undefined" === typeof hookName) { return hooksStore.__current.size > 0; } return Array.from(hooksStore.__current).some( (hook) => hook.name === hookName ); }; } var createDoingHook_default = createDoingHook; // packages/hooks/build-module/createDidHook.mjs function createDidHook(hooks, storeKey) { return function didHook(hookName) { const hooksStore = hooks[storeKey]; if (!validateHookName_default(hookName)) { return; } return hooksStore[hookName] && hooksStore[hookName].runs ? hooksStore[hookName].runs : 0; }; } var createDidHook_default = createDidHook; // packages/hooks/build-module/createHooks.mjs var _Hooks = class { actions; filters; addAction; addFilter; removeAction; removeFilter; hasAction; hasFilter; removeAllActions; removeAllFilters; doAction; doActionAsync; applyFilters; applyFiltersAsync; currentAction; currentFilter; doingAction; doingFilter; didAction; didFilter; constructor() { this.actions = /* @__PURE__ */ Object.create(null); this.actions.__current = /* @__PURE__ */ new Set(); this.filters = /* @__PURE__ */ Object.create(null); this.filters.__current = /* @__PURE__ */ new Set(); this.addAction = createAddHook_default(this, "actions"); this.addFilter = createAddHook_default(this, "filters"); this.removeAction = createRemoveHook_default(this, "actions"); this.removeFilter = createRemoveHook_default(this, "filters"); this.hasAction = createHasHook_default(this, "actions"); this.hasFilter = createHasHook_default(this, "filters"); this.removeAllActions = createRemoveHook_default(this, "actions", true); this.removeAllFilters = createRemoveHook_default(this, "filters", true); this.doAction = createRunHook_default(this, "actions", false, false); this.doActionAsync = createRunHook_default(this, "actions", false, true); this.applyFilters = createRunHook_default(this, "filters", true, false); this.applyFiltersAsync = createRunHook_default(this, "filters", true, true); this.currentAction = createCurrentHook_default(this, "actions"); this.currentFilter = createCurrentHook_default(this, "filters"); this.doingAction = createDoingHook_default(this, "actions"); this.doingFilter = createDoingHook_default(this, "filters"); this.didAction = createDidHook_default(this, "actions"); this.didFilter = createDidHook_default(this, "filters"); } }; function createHooks() { return new _Hooks(); } var createHooks_default = createHooks; // packages/hooks/build-module/index.mjs var defaultHooks = createHooks_default(); var { addAction, addFilter, removeAction, removeFilter, hasAction, hasFilter, removeAllActions, removeAllFilters, doAction, doActionAsync, applyFilters, applyFiltersAsync, currentAction, currentFilter, doingAction, doingFilter, didAction, didFilter, actions, filters } = defaultHooks; return __toCommonJS(index_exports); })(); dist/warning.min.js000064400000001363152375074240010310 0ustar00/*! This file is auto-generated */ "use strict";var wp;(wp||={}).warning=(()=>{var i=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var c=(r,t)=>{for(var n in t)i(r,n,{get:t[n],enumerable:!0})},d=(r,t,n,u)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of f(t))!l.call(r,o)&&o!==n&&i(r,o,{get:()=>t[o],enumerable:!(u=a(t,o))||u.enumerable});return r};var h=r=>d(i({},"__esModule",{value:!0}),r);var p={};c(p,{default:()=>g});var e=new Set;function w(){return!1}function g(r){if(w()&&!e.has(r)){console.warn(r);try{throw Error(r)}catch{}e.add(r)}}return h(p);})(); if (typeof wp.warning === 'object' && wp.warning.default) { wp.warning = wp.warning.default; } dist/data.min.js000064400000063654152375074240007567 0ustar00/*! This file is auto-generated */ "use strict";var wp;(wp||={}).data=(()=>{var lr=Object.create;var ne=Object.defineProperty;var dr=Object.getOwnPropertyDescriptor;var pr=Object.getOwnPropertyNames;var mr=Object.getPrototypeOf,hr=Object.prototype.hasOwnProperty;var I=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),oe=(e,t)=>{for(var r in t)ne(e,r,{get:t[r],enumerable:!0})},ze=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of pr(t))!hr.call(e,o)&&o!==r&&ne(e,o,{get:()=>t[o],enumerable:!(n=dr(t,o))||n.enumerable});return e};var v=(e,t,r)=>(r=e!=null?lr(mr(e)):{},ze(t||!e||!e.__esModule?ne(r,"default",{value:e,enumerable:!0}):r,e)),yr=e=>ze(ne({},"__esModule",{value:!0}),e);var be=I((Vn,qe)=>{qe.exports=window.wp.deprecated});var Ee=I((Kn,Qe)=>{"use strict";function U(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?U=function(t){return typeof t}:U=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},U(e)}function wr(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Xe(e,t){for(var r=0;r1&&arguments[1]!==void 0?arguments[1]:this;this._map.forEach(function(s,i){i!==null&&U(i)==="object"&&(s=s[1]),r.call(o,s,i,n)})}},{key:"clear",value:function(){this._map=new Map,this._arrayTreeMap=new Map,this._objectTreeMap=new Map}},{key:"size",get:function(){return this._map.size}}]),e})();Qe.exports=Rr});var et=I((Wn,Ze)=>{Ze.exports=window.wp.reduxRoutine});var q=I((Gn,tt)=>{tt.exports=window.wp.compose});var ct=I((Yn,ut)=>{ut.exports=window.wp.privateApis});var Tt=I((jo,xt)=>{"use strict";var nn=function(t){return on(t)&&!sn(t)};function on(e){return!!e&&typeof e=="object"}function sn(e){var t=Object.prototype.toString.call(e);return t==="[object RegExp]"||t==="[object Date]"||cn(e)}var an=typeof Symbol=="function"&&Symbol.for,un=an?Symbol.for("react.element"):60103;function cn(e){return e.$$typeof===un}function fn(e){return Array.isArray(e)?[]:{}}function ee(e,t){return t.clone!==!1&&t.isMergeableObject(e)?B(fn(e),e,t):e}function ln(e,t,r){return e.concat(t).map(function(n){return ee(n,r)})}function dn(e,t){if(!t.customMerge)return B;var r=t.customMerge(e);return typeof r=="function"?r:B}function pn(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return Object.propertyIsEnumerable.call(e,t)}):[]}function Ot(e){return Object.keys(e).concat(pn(e))}function _t(e,t){try{return t in e}catch{return!1}}function mn(e,t){return _t(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}function hn(e,t,r){var n={};return r.isMergeableObject(e)&&Ot(e).forEach(function(o){n[o]=ee(e[o],r)}),Ot(t).forEach(function(o){mn(e,o)||(_t(e,o)&&r.isMergeableObject(t[o])?n[o]=dn(o,r)(e[o],t[o],r):n[o]=ee(t[o],r))}),n}function B(e,t,r){r=r||{},r.arrayMerge=r.arrayMerge||ln,r.isMergeableObject=r.isMergeableObject||nn,r.cloneUnlessOtherwiseSpecified=ee;var n=Array.isArray(t),o=Array.isArray(e),s=n===o;return s?n?r.arrayMerge(e,t,r):hn(e,t,r):ee(t,r)}B.all=function(t,r){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce(function(n,o){return B(n,o,r)},{})};var yn=B;xt.exports=yn});var Dt=I((Fo,Pt)=>{Pt.exports=window.wp.priorityQueue});var V=I((Vo,Lt)=>{Lt.exports=window.wp.element});var kt=I(($o,Ut)=>{Ut.exports=window.wp.isShallowEqual});var pe=I((Zo,Bt)=>{Bt.exports=window.ReactJSXRuntime});var kn={};oe(kn,{AsyncModeProvider:()=>Ue,RegistryConsumer:()=>re,RegistryProvider:()=>Le,combineReducers:()=>Pe,controls:()=>it,createReduxStore:()=>Q,createRegistry:()=>ue,createRegistryControl:()=>H,createRegistrySelector:()=>rt,createSelector:()=>J,dispatch:()=>nr,plugins:()=>De,register:()=>Un,registerGenericStore:()=>Pn,registerStore:()=>Dn,resolveSelect:()=>Mn,select:()=>or,subscribe:()=>Cn,suspendSelect:()=>Nn,use:()=>Ln,useDispatch:()=>Fe,useRegistry:()=>M,useSelect:()=>de,useSuspenseSelect:()=>Ht,withDispatch:()=>er,withRegistry:()=>rr,withSelect:()=>Xt});var Et=v(be(),1);function O(e){return`Minified Redux error #${e}; visit https://redux.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var gr=typeof Symbol=="function"&&Symbol.observable||"@@observable",He=gr,ve=()=>Math.random().toString(36).substring(7).split("").join("."),Sr={INIT:`@@redux/INIT${ve()}`,REPLACE:`@@redux/REPLACE${ve()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${ve()}`},Be=Sr;function br(e){if(typeof e!="object"||e===null)return!1;let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||Object.getPrototypeOf(e)===null}function we(e,t,r){if(typeof e!="function")throw new Error(O(2));if(typeof t=="function"&&typeof r=="function"||typeof r=="function"&&typeof arguments[3]=="function")throw new Error(O(0));if(typeof t=="function"&&typeof r>"u"&&(r=t,t=void 0),typeof r<"u"){if(typeof r!="function")throw new Error(O(1));return r(we)(e,t)}let n=e,o=t,s=new Map,i=s,f=0,a=!1;function u(){i===s&&(i=new Map,s.forEach((y,w)=>{i.set(w,y)}))}function c(){if(a)throw new Error(O(3));return o}function m(y){if(typeof y!="function")throw new Error(O(4));if(a)throw new Error(O(5));let w=!0;u();let g=f++;return i.set(g,y),function(){if(w){if(a)throw new Error(O(6));w=!1,u(),i.delete(g),s=null}}}function b(y){if(!br(y))throw new Error(O(7));if(typeof y.type>"u")throw new Error(O(8));if(typeof y.type!="string")throw new Error(O(17));if(a)throw new Error(O(9));try{a=!0,o=n(o,y)}finally{a=!1}return(s=i).forEach(g=>{g()}),y}function S(y){if(typeof y!="function")throw new Error(O(10));n=y,b({type:Be.REPLACE})}function R(){let y=m;return{subscribe(w){if(typeof w!="object"||w===null)throw new Error(O(11));function g(){let _=w;_.next&&_.next(c())}return g(),{unsubscribe:y(g)}},[He](){return this}}}return b({type:Be.INIT}),{dispatch:b,subscribe:m,getState:c,replaceReducer:S,[He]:R}}function vr(...e){return e.length===0?t=>t:e.length===1?e[0]:e.reduce((t,r)=>(...n)=>t(r(...n)))}function Ye(...e){return t=>(r,n)=>{let o=t(r,n),s=()=>{throw new Error(O(15))},i={getState:o.getState,dispatch:(a,...u)=>s(a,...u)},f=e.map(a=>a(i));return s=vr(...f)(o.dispatch),{...o,dispatch:s}}}var St=v(Ee(),1),bt=v(et(),1),vt=v(q(),1);function se(e){let t=Object.keys(e);return function(n={},o){let s={},i=!1;for(let f of t){let a=e[f],u=n[f],c=a(u,o);s[f]=c,i=i||c!==u}return i?s:n}}function rt(e){let t=new WeakMap,r=(...n)=>{let o=t.get(r.registry);return o||(o=e(r.registry.select),t.set(r.registry,o)),o(...n)};return r.isRegistrySelector=!0,r}function H(e){return e.isRegistryControl=!0,e}var nt="@@data/SELECT",ot="@@data/RESOLVE_SELECT",st="@@data/DISPATCH";function Re(e){return e!==null&&typeof e=="object"}function Or(e,t,...r){return{type:nt,storeKey:Re(e)?e.name:e,selectorName:t,args:r}}function _r(e,t,...r){return{type:ot,storeKey:Re(e)?e.name:e,selectorName:t,args:r}}function xr(e,t,...r){return{type:st,storeKey:Re(e)?e.name:e,actionName:t,args:r}}var it={select:Or,resolveSelect:_r,dispatch:xr},at={[nt]:H(e=>({storeKey:t,selectorName:r,args:n})=>e.select(t)[r](...n)),[ot]:H(e=>({storeKey:t,selectorName:r,args:n})=>{let o=e.select(t)[r].hasResolver?"resolveSelect":"select";return e[o](t)[r](...n)}),[st]:H(e=>({storeKey:t,actionName:r,args:n})=>e.dispatch(t)[r](...n))};var ft=v(ct(),1),{lock:C,unlock:k}=(0,ft.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/data");function Oe(e){return!!e&&(typeof e=="object"||typeof e=="function")&&typeof e.then=="function"}var Tr=()=>e=>t=>Oe(t)?t.then(r=>{if(r)return e(r)}):e(t),lt=Tr;var Ar=(e,t)=>()=>r=>n=>{let o=e.select(t).getCachedResolvers();return Object.entries(o).forEach(([i,f])=>{let a=e.stores[t]?.resolvers?.[i];!a||!a.shouldInvalidate||f.forEach((u,c)=>{u!==void 0&&(u.status!=="finished"&&u.status!=="error"||a.shouldInvalidate(n,...c)&&e.dispatch(t).invalidateResolution(i,c))})}),r(n)},dt=Ar;function pt(e){return()=>t=>r=>typeof r=="function"?r(e):t(r)}var P=v(Ee(),1);var mt=e=>t=>(r={},n)=>{let o=n[e];if(o===void 0)return r;let s=t(r[o],n);return s===r[o]?r:{...r,[o]:s}};function j(e){if(e==null)return[];let t=e.length,r=t;for(;r>0&&e[r-1]===void 0;)r--;return r===t?e:e.slice(0,r)}var Ir=mt("selectorName")((e=new P.default,t)=>{switch(t.type){case"START_RESOLUTION":{let r=new P.default(e);return r.set(j(t.args),{status:"resolving"}),r}case"FINISH_RESOLUTION":{let r=new P.default(e);return r.set(j(t.args),{status:"finished"}),r}case"FAIL_RESOLUTION":{let r=new P.default(e);return r.set(j(t.args),{status:"error",error:t.error}),r}case"START_RESOLUTIONS":{let r=new P.default(e);for(let n of t.args)r.set(j(n),{status:"resolving"});return r}case"FINISH_RESOLUTIONS":{let r=new P.default(e);for(let n of t.args)r.set(j(n),{status:"finished"});return r}case"FAIL_RESOLUTIONS":{let r=new P.default(e);return t.args.forEach((n,o)=>{let s={status:"error",error:void 0},i=t.errors[o];i&&(s.error=i),r.set(j(n),s)}),r}case"INVALIDATE_RESOLUTION":{let r=new P.default(e);return r.delete(j(t.args)),r}}return e}),jr=(e={},t)=>{switch(t.type){case"INVALIDATE_RESOLUTION_FOR_STORE":return{};case"INVALIDATE_RESOLUTION_FOR_STORE_SELECTOR":{if(t.selectorName in e){let{[t.selectorName]:r,...n}=e;return n}return e}case"START_RESOLUTION":case"FINISH_RESOLUTION":case"FAIL_RESOLUTION":case"START_RESOLUTIONS":case"FINISH_RESOLUTIONS":case"FAIL_RESOLUTIONS":case"INVALIDATE_RESOLUTION":return Ir(e,t);default:return e}},ht=jr;var xe={};oe(xe,{countSelectorsByStatus:()=>Kr,getCachedResolvers:()=>Vr,getIsResolving:()=>Pr,getResolutionError:()=>kr,getResolutionState:()=>F,hasFinishedResolution:()=>Lr,hasResolutionFailed:()=>Ur,hasResolvingSelectors:()=>$r,hasStartedResolution:()=>Dr,isResolving:()=>Fr});var gt=v(be(),1);var _e={};function Mr(e){return[e]}function Nr(e){return!!e&&typeof e=="object"}function Cr(){var e={clear:function(){e.head=null}};return e}function yt(e,t,r){var n;if(e.length!==t.length)return!1;for(n=r;nArray.from(t._map.values()).some(r=>r[1]?.status==="resolving"))}var Kr=J(e=>{let t={};return Object.values(e).forEach(r=>Array.from(r._map.values()).forEach(n=>{let o=n[1]?.status??"error";t[o]||(t[o]=0),t[o]++})),t},e=>[e]);var je={};oe(je,{failResolution:()=>Ie,failResolutions:()=>zr,finishResolution:()=>Ae,finishResolutions:()=>Gr,invalidateResolution:()=>qr,invalidateResolutionForStore:()=>Hr,invalidateResolutionForStoreSelector:()=>Br,startResolution:()=>Te,startResolutions:()=>Wr});function Te(e,t){return{type:"START_RESOLUTION",selectorName:e,args:t}}function Ae(e,t){return{type:"FINISH_RESOLUTION",selectorName:e,args:t}}function Ie(e,t,r){return{type:"FAIL_RESOLUTION",selectorName:e,args:t,error:r}}function Wr(e,t){return{type:"START_RESOLUTIONS",selectorName:e,args:t}}function Gr(e,t){return{type:"FINISH_RESOLUTIONS",selectorName:e,args:t}}function zr(e,t,r){return{type:"FAIL_RESOLUTIONS",selectorName:e,args:t,errors:r}}function qr(e,t){return{type:"INVALIDATE_RESOLUTION",selectorName:e,args:t}}function Hr(){return{type:"INVALIDATE_RESOLUTION_FOR_STORE"}}function Br(e){return{type:"INVALIDATE_RESOLUTION_FOR_STORE_SELECTOR",selectorName:e}}var Me=e=>{let t=[...e];for(let r=t.length-1;r>=0;r--)t[r]===void 0&&t.splice(r,1);return t},D=(e,t)=>Object.fromEntries(Object.entries(e??{}).map(([r,n])=>[r,t(n,r)])),Yr=(e,t)=>t instanceof Map?Object.fromEntries(t):t instanceof window.HTMLElement?null:t;function Xr(){let e={};return{isRunning(t,r){return e[t]&&e[t].get(Me(r))},clear(t,r){e[t]&&e[t].delete(Me(r))},markAsRunning(t,r){e[t]||(e[t]=new St.default),e[t].set(Me(r),!0)}}}function ie(e,t){let r=new WeakMap;return{get(n){let o=e(n);if(!o)return null;let s=r.get(o);return s||(s=t(o,n),r.set(o,s)),s}}}function ae(e,t){return new Proxy(e,{get:(r,n)=>t.get(n)||Reflect.get(r,n)})}function Q(e,t){let r={},n={},o={privateActions:r,registerPrivateActions:i=>{Object.assign(r,i)},privateSelectors:n,registerPrivateSelectors:i=>{Object.assign(n,i)}},s={name:e,instantiate:i=>{let f=new Set,a=t.reducer,c=Jr(e,t,i,{registry:i,get dispatch(){return T},get select(){return K},get resolveSelect(){return G}});C(c,o);let m=Xr();function b(h){return(...x)=>Promise.resolve(c.dispatch(h(...x)))}let S={...D(je,b),...D(t.actions,b)},R=ae(S,ie(h=>r[h],b)),T=new Proxy(h=>c.dispatch(h),{get:(h,x)=>R[x]});C(S,R);let y=t.resolvers?D(t.resolvers,en):{};function w(h,x){h.isRegistrySelector&&(h.registry=i);let A=(...X)=>{X=Ne(h,X);let Se=c.__unstableOriginalGetState();return h.isRegistrySelector&&(h.registry=i),h(Se.root,...X)};A.__unstableNormalizeArgs=h.__unstableNormalizeArgs;let z=y[x];return z?tn(A,x,z,c,m,E):(A.hasResolver=!1,A)}function g(h){let x=(A,z,...X)=>{if(A){let Ge=t.selectors?.[A];Ge&&(z=Ne(Ge,z))}let Se=c.__unstableOriginalGetState();return h(Se.metadata,A,z,...X)};return x.hasResolver=!1,x}let E=D(xe,g),_=D(t.selectors,w),l={...E,..._},d=ie(h=>n[h],w),p=ae(l,d);for(let h of Object.keys(n))d.get(h);let K=new Proxy(h=>h(c.__unstableOriginalGetState()),{get:(h,x)=>p[x]});C(l,p);let W=Qr(c,y,E),G=D(_,W),ye=ae(G,ie(h=>d.get(h),W));C(G,ye);let Ke=Zr(c,E),ge={...E,...D(_,Ke)},sr=ae(ge,ie(h=>d.get(h),Ke));C(ge,sr);let ir=()=>l,ar=()=>S,ur=()=>G,cr=()=>ge;c.__unstableOriginalGetState=c.getState,c.getState=()=>c.__unstableOriginalGetState().root;let fr=c&&(h=>(f.add(h),()=>f.delete(h))),We=c.__unstableOriginalGetState();return c.subscribe(()=>{let h=c.__unstableOriginalGetState(),x=h!==We;if(We=h,x)for(let A of f)A()}),{reducer:a,store:c,actions:S,selectors:l,resolvers:y,getSelectors:ir,getResolveSelectors:ur,getSuspendSelectors:cr,getActions:ar,subscribe:fr}}};return C(s,o),s}function Jr(e,t,r,n){let o={...t.controls,...at},s=D(o,m=>m.isRegistryControl?m(r):m),i=[dt(r,e),lt,(0,bt.default)(s),pt(n)],f=[Ye(...i)];typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION__&&f.push(window.__REDUX_DEVTOOLS_EXTENSION__({name:e,instanceId:e,serialize:{replacer:Yr}}));let{reducer:a,initialState:u}=t,c=se({metadata:ht,root:a});return we(c,{root:u},(0,vt.compose)(f))}function Qr(e,t,r){return(n,o)=>n.hasResolver?(...s)=>new Promise((i,f)=>{let a=t[o],u=()=>r.hasFinishedResolution(o,s)||typeof a.isFulfilled=="function"&&a.isFulfilled(e.getState(),...s),c=R=>{if(r.hasResolutionFailed(o,s)){let y=r.getResolutionError(o,s);f(y)}else i(R)},m=()=>n.apply(null,s),b=m();if(u())return c(b);let S=e.subscribe(()=>{u()&&(S(),c(m()))})}):async(...s)=>n.apply(null,s)}function Zr(e,t){return(r,n)=>r.hasResolver?(...o)=>{let s=r.apply(null,o);if(t.hasFinishedResolution(n,o)){if(t.hasResolutionFailed(n,o))throw t.getResolutionError(n,o);return s}throw new Promise(i=>{let f=e.subscribe(()=>{t.hasFinishedResolution(n,o)&&(i(),f())})})}:r}function en(e){return e.fulfill?e:{...e,fulfill:e}}function tn(e,t,r,n,o,s){function i(a){o.isRunning(t,a)||s.hasStartedResolution(t,a)||typeof r.isFulfilled=="function"&&r.isFulfilled(n.getState(),...a)||(o.markAsRunning(t,a),setTimeout(async()=>{o.clear(t,a),n.dispatch(Te(t,a));try{let u=r.fulfill(...a);u&&await n.dispatch(u),n.dispatch(Ae(t,a))}catch(u){n.dispatch(Ie(t,a,u))}},0))}let f=(...a)=>(a=Ne(e,a),i(a),e(...a));return f.hasResolver=!0,f}function Ne(e,t){return e.__unstableNormalizeArgs&&typeof e.__unstableNormalizeArgs=="function"&&t?.length?e.__unstableNormalizeArgs(t):t}var rn={name:"core/data",instantiate(e){let t=n=>(o,...s)=>e.select(o)[n](...s),r=n=>(o,...s)=>e.dispatch(o)[n](...s);return{getSelectors(){return Object.fromEntries(["getIsResolving","hasStartedResolution","hasFinishedResolution","isResolving","getCachedResolvers"].map(n=>[n,t(n)]))},getActions(){return Object.fromEntries(["startResolution","finishResolution","invalidateResolution","invalidateResolutionForStore","invalidateResolutionForStoreSelector"].map(n=>[n,r(n)]))},subscribe(){return()=>()=>{}}}}},wt=rn;function Ce(){let e=!1,t=!1,r=new Set,n=()=>Array.from(r).forEach(o=>o());return{get isPaused(){return e},subscribe(o){return r.add(o),()=>r.delete(o)},pause(){e=!0},resume(){e=!1,t&&(t=!1,n())},emit(){if(e){t=!0;return}n()}}}function Z(e){return typeof e=="string"?e:e.name}function ue(e={},t=null){let r={},n=Ce(),o=null;function s(){n.emit()}let i=(l,d)=>{if(!d)return n.subscribe(l);let p=Z(d),K=r[p];return K?K.subscribe(l):t?t.subscribe(l,d):n.subscribe(l)};function f(l){let d=Z(l);o?.add(d);let p=r[d];return p?p.getSelectors():t?.select(d)}function a(l,d){o=new Set;try{return l.call(this)}finally{d.current=Array.from(o),o=null}}function u(l){let d=Z(l);o?.add(d);let p=r[d];return p?p.getResolveSelectors():t&&t.resolveSelect(d)}function c(l){let d=Z(l);o?.add(d);let p=r[d];return p?p.getSuspendSelectors():t&&t.suspendSelect(d)}function m(l){let d=Z(l),p=r[d];return p?p.getActions():t&&t.dispatch(d)}function b(l){return Object.fromEntries(Object.entries(l).map(([d,p])=>typeof p!="function"?[d,p]:[d,function(){return g[d].apply(null,arguments)}]))}function S(l,d){if(r[l])return console.error('Store "'+l+'" is already registered.'),r[l];let p=d();if(typeof p.getSelectors!="function")throw new TypeError("store.getSelectors must be a function");if(typeof p.getActions!="function")throw new TypeError("store.getActions must be a function");if(typeof p.subscribe!="function")throw new TypeError("store.subscribe must be a function");p.emitter=Ce();let K=p.subscribe;if(p.subscribe=W=>{let G=p.emitter.subscribe(W),ye=K(()=>{if(p.emitter.isPaused){p.emitter.emit();return}W()});return()=>{ye?.(),G?.()}},r[l]=p,p.subscribe(s),t)try{k(p.store).registerPrivateActions(k(t).privateActionsOf(l)),k(p.store).registerPrivateSelectors(k(t).privateSelectorsOf(l))}catch{}return p}function R(l){S(l.name,()=>l.instantiate(g))}function T(l,d){(0,Et.default)("wp.data.registerGenericStore",{since:"5.9",alternative:"wp.data.register( storeDescriptor )"}),S(l,()=>d)}function y(l,d){if(!d.reducer)throw new TypeError("Must specify store reducer");return S(l,()=>Q(l,d).instantiate(g)).store}function w(l){if(n.isPaused){l();return}n.pause(),Object.values(r).forEach(d=>d.emitter.pause());try{l()}finally{n.resume(),Object.values(r).forEach(d=>d.emitter.resume())}}let g={batch:w,stores:r,namespaces:r,subscribe:i,select:f,resolveSelect:u,suspendSelect:c,dispatch:m,use:E,register:R,registerGenericStore:T,registerStore:y,__unstableMarkListeningStores:a};function E(l,d){if(l)return g={...g,...l(g,d)},g}g.register(wt);for(let[l,d]of Object.entries(e))g.register(Q(l,d));t&&t.subscribe(s);let _=b(g);return C(_,{privateActionsOf:l=>{try{return k(r[l].store).privateActions}catch{return{}}},privateSelectorsOf:l=>{try{return k(r[l].store).privateSelectors}catch{return{}}}}),_}var L=ue();var De={};oe(De,{persistence:()=>Ct});function Rt(e){return Object.prototype.toString.call(e)==="[object Object]"}function ce(e){var t,r;return Rt(e)===!1?!1:(t=e.constructor,t===void 0?!0:(r=t.prototype,!(Rt(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)))}var Mt=v(Tt(),1);var Y,At={getItem(e){return!Y||!Y[e]?null:Y[e]},setItem(e,t){Y||At.clear(),Y[e]=String(t)},clear(){Y=Object.create(null)}},It=At;var te;try{te=window.localStorage,te.setItem("__wpDataTestLocalStorage",""),te.removeItem("__wpDataTestLocalStorage")}catch{te=It}var jt=te;var gn=jt,Sn="WP_DATA",bn=e=>(t,r)=>r.nextState===t?t:e(t,r);function vn(e){let{storage:t=gn,storageKey:r=Sn}=e,n;function o(){if(n===void 0){let i=t.getItem(r);if(i===null)n={};else try{n=JSON.parse(i)}catch{n={}}}return n}function s(i,f){n={...n,[i]:f},t.setItem(r,JSON.stringify(n))}return{get:o,set:s}}function Nt(e,t){let r=vn(t);function n(o,s,i){let f;if(Array.isArray(i)){let u=i.reduce((c,m)=>Object.assign(c,{[m]:(b,S)=>S.nextState[m]}),{});f=bn(Pe(u))}else f=(u,c)=>c.nextState;let a=f(void 0,{nextState:o()});return()=>{let u=f(a,{nextState:o()});u!==a&&(r.set(s,u),a=u)}}return{registerStore(o,s){if(!s.persist)return e.registerStore(o,s);let i=r.get()[o];if(i!==void 0){let a=s.reducer(s.initialState,{type:"@@WP/PERSISTENCE_RESTORE"});ce(a)&&ce(i)?a=(0,Mt.default)(a,i,{isMergeableObject:ce}):a=i,s={...s,initialState:a}}let f=e.registerStore(o,s);return f.subscribe(n(f.getState,o,s.persist)),f}}}Nt.__unstableMigrate=()=>{};var Ct=Nt;var me=v(q(),1);var Gt=v(Dt(),1),N=v(V(),1),zt=v(kt(),1);var Vt=v(V(),1);var Ft=v(V(),1);var fe=(0,Ft.createContext)(L);fe.displayName="RegistryProviderContext";var{Consumer:wn,Provider:En}=fe,re=wn,Le=En;function M(){return(0,Vt.useContext)(fe)}var Kt=v(V(),1);var $t=v(V(),1),le=(0,$t.createContext)(!1);le.displayName="AsyncModeContext";var{Consumer:qo,Provider:Rn}=le;var Ue=Rn;function Wt(){return(0,Kt.useContext)(le)}var ke=(0,Gt.createQueue)();function On(e,t){let r=t?e.suspendSelect:e.select,n={},o,s,i=!1,f,a,u,c=new Map;function m(S){return e.stores[S]?.store?.getState?.()??{}}let b=S=>{let R=[...S],T=new Set;function y(g){if(i)for(let p of R)c.get(p)!==m(p)&&(i=!1);c.clear();let E=()=>{i=!1,g()},_=()=>{f?ke.add(n,E):E()},l=[];function d(p){l.push(e.subscribe(_,p))}for(let p of R)d(p);return T.add(d),()=>{T.delete(d);for(let p of l.values())p?.();ke.cancel(n)}}function w(g){for(let E of g)if(!R.includes(E)){R.push(E);for(let _ of T)_(E)}}return{subscribe:y,updateStores:w}};return(S,R)=>{function T(){if(i&&S===o)return s;let w={current:null},g=e.__unstableMarkListeningStores(()=>S(r,e),w);if(a)a.updateStores(w.current);else{for(let E of w.current)c.set(E,m(E));a=b(w.current)}(0,zt.isShallowEqual)(s,g)||(s=g),o=S,i=!0}function y(){return T(),s}return f&&!R&&(i=!1,ke.cancel(n)),T(),f=R,{subscribe:a.subscribe,getValue:y}}}function _n(e){return M().select(e)}function qt(e,t,r){let n=M(),o=Wt(),s=(0,N.useMemo)(()=>On(n,e),[n,e]),i=(0,N.useCallback)(t,r),{subscribe:f,getValue:a}=s(i,o),u=(0,N.useSyncExternalStore)(f,a,a);return(0,N.useDebugValue)(u),u}function de(e,t){let r=typeof e!="function",n=(0,N.useRef)(r);if(r!==n.current){let o=n.current?"static":"mapping",s=r?"static":"mapping";throw new Error(`Switching useSelect from ${o} to ${s} is not allowed`)}return r?_n(e):qt(!1,e,t)}function Ht(e,t){return qt(!0,e,t)}var Yt=v(pe(),1),xn=e=>(0,me.createHigherOrderComponent)(t=>(0,me.pure)(r=>{let o=de((s,i)=>e(s,r,i));return(0,Yt.jsx)(t,{...r,...o})}),"withSelect"),Xt=xn;var Qt=v(q(),1);var Tn=e=>{let{dispatch:t}=M();return e===void 0?t:t(e)},Fe=Tn;var he=v(V(),1),Jt=v(q(),1);var An=(e,t)=>{let r=M(),n=(0,he.useRef)(e);return(0,Jt.useIsomorphicLayoutEffect)(()=>{n.current=e}),(0,he.useMemo)(()=>{let o=n.current(r.dispatch,r);return Object.fromEntries(Object.entries(o).map(([s,i])=>(typeof i!="function"&&console.warn(`Property ${s} returned from dispatchMap in useDispatchWithMap must be a function.`),[s,(...f)=>n.current(r.dispatch,r)[s](...f)])))},[r,...t])},Ve=An;var Zt=v(pe(),1),In=e=>(0,Qt.createHigherOrderComponent)(t=>r=>{let o=Ve((s,i)=>e(s,r,i),[]);return(0,Zt.jsx)(t,{...r,...o})},"withDispatch"),er=In;var tr=v(q(),1);var $e=v(pe(),1),jn=(0,tr.createHigherOrderComponent)(e=>t=>(0,$e.jsx)(re,{children:r=>(0,$e.jsx)(e,{...t,registry:r})}),"withRegistry"),rr=jn;function nr(e){return L.dispatch(e)}function or(e){return L.select(e)}var $=L,Pe=se;function Mn(e){return $.resolveSelect(e)}var Nn=e=>$.suspendSelect(e),Cn=(e,t)=>$.subscribe(e,t),Pn=$.registerGenericStore,Dn=$.registerStore,Ln=$.use,Un=e=>$.register(e);return yr(kn);})(); /*! Bundled license information: is-plain-object/dist/is-plain-object.mjs: (*! * is-plain-object * * Copyright (c) 2014-2017, Jon Schlinkert. * Released under the MIT License. *) */ dist/media-utils.min.js000064400000733217152375074240011072 0ustar00/*! This file is auto-generated */ "use strict";var wp;(wp||={}).mediaUtils=(()=>{var Qb=Object.create;var Ci=Object.defineProperty;var Jb=Object.getOwnPropertyDescriptor;var ex=Object.getOwnPropertyNames;var tx=Object.getPrototypeOf,rx=Object.prototype.hasOwnProperty;var Oe=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),ox=(e,t)=>{for(var r in t)Ci(e,r,{get:t[r],enumerable:!0})},md=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of ex(t))!rx.call(e,n)&&n!==r&&Ci(e,n,{get:()=>t[n],enumerable:!(o=Jb(t,n))||o.enumerable});return e};var u=(e,t,r)=>(r=e!=null?Qb(tx(e)):{},md(t||!e||!e.__esModule?Ci(r,"default",{value:e,enumerable:!0}):r,e)),nx=e=>md(Ci({},"__esModule",{value:!0}),e);var z=Oe((O_,pd)=>{pd.exports=window.wp.element});var j=Oe((A_,vd)=>{vd.exports=window.wp.i18n});var ll=Oe((N_,wd)=>{wd.exports=window.wp.blob});var ul=Oe((D_,yd)=>{yd.exports=window.wp.apiFetch});var Pn=Oe((lS,Ad)=>{Ad.exports=window.wp.coreData});var qt=Oe((uS,Id)=>{Id.exports=window.wp.data});var G=Oe((cS,Pd)=>{Pd.exports=window.wp.components});var le=Oe((dS,Rd)=>{Rd.exports=window.wp.primitives});var P=Oe((fS,Vd)=>{Vd.exports=window.ReactJSXRuntime});var bt=Oe((bC,Nd)=>{Nd.exports=window.wp.compose});var ue=Oe((xC,Dd)=>{Dd.exports=window.React});var Zd=Oe((YC,Kd)=>{Kd.exports=window.ReactDOM});var Qd=Oe(Xd=>{"use strict";var jo=ue();function Cx(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Ex=typeof Object.is=="function"?Object.is:Cx,Tx=jo.useState,Ox=jo.useEffect,Ax=jo.useLayoutEffect,Ix=jo.useDebugValue;function Px(e,t){var r=t(),o=Tx({inst:{value:r,getSnapshot:t}}),n=o[0].inst,i=o[1];return Ax(function(){n.value=r,n.getSnapshot=t,mu(n)&&i({inst:n})},[e,r,t]),Ox(function(){return mu(n)&&i({inst:n}),e(function(){mu(n)&&i({inst:n})})},[e]),Ix(r),r}function mu(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!Ex(e,r)}catch{return!0}}function Rx(e,t){return t()}var Vx=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?Rx:Px;Xd.useSyncExternalStore=jo.useSyncExternalStore!==void 0?jo.useSyncExternalStore:Vx});var ef=Oe(($C,Jd)=>{"use strict";Jd.exports=Qd()});var pu=Oe((QC,of)=>{of.exports=window.wp.privateApis});var hu=Oe((s2,pf)=>{pf.exports=window.wp.keycodes});var Up=Oe((AR,os)=>{var zp={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u1EA4:"A",\u1EAE:"A",\u1EB2:"A",\u1EB4:"A",\u1EB6:"A",\u00C6:"AE",\u1EA6:"A",\u1EB0:"A",\u0202:"A",\u1EA2:"A",\u1EA0:"A",\u1EA8:"A",\u1EAA:"A",\u1EAC:"A",\u00C7:"C",\u1E08:"C",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u1EBE:"E",\u1E16:"E",\u1EC0:"E",\u1E14:"E",\u1E1C:"E",\u0206:"E",\u1EBA:"E",\u1EBC:"E",\u1EB8:"E",\u1EC2:"E",\u1EC4:"E",\u1EC6:"E",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u1E2E:"I",\u020A:"I",\u1EC8:"I",\u1ECA:"I",\u00D0:"D",\u00D1:"N",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u1ED0:"O",\u1E4C:"O",\u1E52:"O",\u020E:"O",\u1ECE:"O",\u1ECC:"O",\u1ED4:"O",\u1ED6:"O",\u1ED8:"O",\u1EDC:"O",\u1EDE:"O",\u1EE0:"O",\u1EDA:"O",\u1EE2:"O",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u1EE6:"U",\u1EE4:"U",\u1EEC:"U",\u1EEE:"U",\u1EF0:"U",\u00DD:"Y",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u1EA5:"a",\u1EAF:"a",\u1EB3:"a",\u1EB5:"a",\u1EB7:"a",\u00E6:"ae",\u1EA7:"a",\u1EB1:"a",\u0203:"a",\u1EA3:"a",\u1EA1:"a",\u1EA9:"a",\u1EAB:"a",\u1EAD:"a",\u00E7:"c",\u1E09:"c",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u1EBF:"e",\u1E17:"e",\u1EC1:"e",\u1E15:"e",\u1E1D:"e",\u0207:"e",\u1EBB:"e",\u1EBD:"e",\u1EB9:"e",\u1EC3:"e",\u1EC5:"e",\u1EC7:"e",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u1E2F:"i",\u020B:"i",\u1EC9:"i",\u1ECB:"i",\u00F0:"d",\u00F1:"n",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u1ED1:"o",\u1E4D:"o",\u1E53:"o",\u020F:"o",\u1ECF:"o",\u1ECD:"o",\u1ED5:"o",\u1ED7:"o",\u1ED9:"o",\u1EDD:"o",\u1EDF:"o",\u1EE1:"o",\u1EDB:"o",\u1EE3:"o",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u1EE7:"u",\u1EE5:"u",\u1EED:"u",\u1EEF:"u",\u1EF1:"u",\u00FD:"y",\u00FF:"y",\u0100:"A",\u0101:"a",\u0102:"A",\u0103:"a",\u0104:"A",\u0105:"a",\u0106:"C",\u0107:"c",\u0108:"C",\u0109:"c",\u010A:"C",\u010B:"c",\u010C:"C",\u010D:"c",C\u0306:"C",c\u0306:"c",\u010E:"D",\u010F:"d",\u0110:"D",\u0111:"d",\u0112:"E",\u0113:"e",\u0114:"E",\u0115:"e",\u0116:"E",\u0117:"e",\u0118:"E",\u0119:"e",\u011A:"E",\u011B:"e",\u011C:"G",\u01F4:"G",\u011D:"g",\u01F5:"g",\u011E:"G",\u011F:"g",\u0120:"G",\u0121:"g",\u0122:"G",\u0123:"g",\u0124:"H",\u0125:"h",\u0126:"H",\u0127:"h",\u1E2A:"H",\u1E2B:"h",\u0128:"I",\u0129:"i",\u012A:"I",\u012B:"i",\u012C:"I",\u012D:"i",\u012E:"I",\u012F:"i",\u0130:"I",\u0131:"i",\u0132:"IJ",\u0133:"ij",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u1E30:"K",\u1E31:"k",K\u0306:"K",k\u0306:"k",\u0139:"L",\u013A:"l",\u013B:"L",\u013C:"l",\u013D:"L",\u013E:"l",\u013F:"L",\u0140:"l",\u0141:"l",\u0142:"l",\u1E3E:"M",\u1E3F:"m",M\u0306:"M",m\u0306:"m",\u0143:"N",\u0144:"n",\u0145:"N",\u0146:"n",\u0147:"N",\u0148:"n",\u0149:"n",N\u0306:"N",n\u0306:"n",\u014C:"O",\u014D:"o",\u014E:"O",\u014F:"o",\u0150:"O",\u0151:"o",\u0152:"OE",\u0153:"oe",P\u0306:"P",p\u0306:"p",\u0154:"R",\u0155:"r",\u0156:"R",\u0157:"r",\u0158:"R",\u0159:"r",R\u0306:"R",r\u0306:"r",\u0212:"R",\u0213:"r",\u015A:"S",\u015B:"s",\u015C:"S",\u015D:"s",\u015E:"S",\u0218:"S",\u0219:"s",\u015F:"s",\u0160:"S",\u0161:"s",\u0162:"T",\u0163:"t",\u021B:"t",\u021A:"T",\u0164:"T",\u0165:"t",\u0166:"T",\u0167:"t",T\u0306:"T",t\u0306:"t",\u0168:"U",\u0169:"u",\u016A:"U",\u016B:"u",\u016C:"U",\u016D:"u",\u016E:"U",\u016F:"u",\u0170:"U",\u0171:"u",\u0172:"U",\u0173:"u",\u0216:"U",\u0217:"u",V\u0306:"V",v\u0306:"v",\u0174:"W",\u0175:"w",\u1E82:"W",\u1E83:"w",X\u0306:"X",x\u0306:"x",\u0176:"Y",\u0177:"y",\u0178:"Y",Y\u0306:"Y",y\u0306:"y",\u0179:"Z",\u017A:"z",\u017B:"Z",\u017C:"z",\u017D:"Z",\u017E:"z",\u017F:"s",\u0192:"f",\u01A0:"O",\u01A1:"o",\u01AF:"U",\u01B0:"u",\u01CD:"A",\u01CE:"a",\u01CF:"I",\u01D0:"i",\u01D1:"O",\u01D2:"o",\u01D3:"U",\u01D4:"u",\u01D5:"U",\u01D6:"u",\u01D7:"U",\u01D8:"u",\u01D9:"U",\u01DA:"u",\u01DB:"U",\u01DC:"u",\u1EE8:"U",\u1EE9:"u",\u1E78:"U",\u1E79:"u",\u01FA:"A",\u01FB:"a",\u01FC:"AE",\u01FD:"ae",\u01FE:"O",\u01FF:"o",\u00DE:"TH",\u00FE:"th",\u1E54:"P",\u1E55:"p",\u1E64:"S",\u1E65:"s",X\u0301:"X",x\u0301:"x",\u0403:"\u0413",\u0453:"\u0433",\u040C:"\u041A",\u045C:"\u043A",A\u030B:"A",a\u030B:"a",E\u030B:"E",e\u030B:"e",I\u030B:"I",i\u030B:"i",\u01F8:"N",\u01F9:"n",\u1ED2:"O",\u1ED3:"o",\u1E50:"O",\u1E51:"o",\u1EEA:"U",\u1EEB:"u",\u1E80:"W",\u1E81:"w",\u1EF2:"Y",\u1EF3:"y",\u0200:"A",\u0201:"a",\u0204:"E",\u0205:"e",\u0208:"I",\u0209:"i",\u020C:"O",\u020D:"o",\u0210:"R",\u0211:"r",\u0214:"U",\u0215:"u",B\u030C:"B",b\u030C:"b",\u010C\u0323:"C",\u010D\u0323:"c",\u00CA\u030C:"E",\u00EA\u030C:"e",F\u030C:"F",f\u030C:"f",\u01E6:"G",\u01E7:"g",\u021E:"H",\u021F:"h",J\u030C:"J",\u01F0:"j",\u01E8:"K",\u01E9:"k",M\u030C:"M",m\u030C:"m",P\u030C:"P",p\u030C:"p",Q\u030C:"Q",q\u030C:"q",\u0158\u0329:"R",\u0159\u0329:"r",\u1E66:"S",\u1E67:"s",V\u030C:"V",v\u030C:"v",W\u030C:"W",w\u030C:"w",X\u030C:"X",x\u030C:"x",Y\u030C:"Y",y\u030C:"y",A\u0327:"A",a\u0327:"a",B\u0327:"B",b\u0327:"b",\u1E10:"D",\u1E11:"d",\u0228:"E",\u0229:"e",\u0190\u0327:"E",\u025B\u0327:"e",\u1E28:"H",\u1E29:"h",I\u0327:"I",i\u0327:"i",\u0197\u0327:"I",\u0268\u0327:"i",M\u0327:"M",m\u0327:"m",O\u0327:"O",o\u0327:"o",Q\u0327:"Q",q\u0327:"q",U\u0327:"U",u\u0327:"u",X\u0327:"X",x\u0327:"x",Z\u0327:"Z",z\u0327:"z",\u0439:"\u0438",\u0419:"\u0418",\u0451:"\u0435",\u0401:"\u0415"},Wp=Object.keys(zp).join("|"),Mw=new RegExp(Wp,"g"),Fw=new RegExp(Wp,"");function Lw(e){return zp[e]}var Gp=function(e){return e.replace(Mw,Lw)},Bw=function(e){return!!e.match(Fw)};os.exports=Gp;os.exports.has=Bw;os.exports.remove=Gp});var rv=Oe((MR,tv)=>{"use strict";tv.exports=function e(t,r){if(t===r)return!0;if(t&&r&&typeof t=="object"&&typeof r=="object"){if(t.constructor!==r.constructor)return!1;var o,n,i;if(Array.isArray(t)){if(o=t.length,o!=r.length)return!1;for(n=o;n--!==0;)if(!e(t[n],r[n]))return!1;return!0}if(t instanceof Map&&r instanceof Map){if(t.size!==r.size)return!1;for(n of t.entries())if(!r.has(n[0]))return!1;for(n of t.entries())if(!e(n[1],r.get(n[0])))return!1;return!0}if(t instanceof Set&&r instanceof Set){if(t.size!==r.size)return!1;for(n of t.entries())if(!r.has(n[0]))return!1;return!0}if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(r)){if(o=t.length,o!=r.length)return!1;for(n=o;n--!==0;)if(t[n]!==r[n])return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if(i=Object.keys(t),o=i.length,o!==Object.keys(r).length)return!1;for(n=o;n--!==0;)if(!Object.prototype.hasOwnProperty.call(r,i[n]))return!1;for(n=o;n--!==0;){var a=i[n];if(!e(t[a],r[a]))return!1}return!0}return t!==t&&r!==r}});var Or=Oe((rD,kv)=>{kv.exports=window.wp.date});var sh=Oe((GD,ah)=>{ah.exports=window.wp.warning});var ol=Oe((wL,gb)=>{gb.exports=window.wp.url});var jb=Oe((YL,Bb)=>{Bb.exports=window.wp.notices});var E_={};ox(E_,{MediaUpload:()=>xd,privateApis:()=>dd,transformAttachment:()=>kr,uploadMedia:()=>Vi,validateFileSize:()=>Pi,validateMimeType:()=>Oi,validateMimeTypeForUser:()=>Ii});var gd=u(z(),1),bd=u(j(),1),ix=[],ax=()=>{let{wp:e}=window;return e.media.view.MediaFrame.Select.extend({featuredImageToolbar(t){this.createSelectToolbar(t,{text:e.media.view.l10n.setFeaturedImage,state:this.options.state})},editState(){let t=this.state("featured-image").get("selection"),r=new e.media.view.EditImage({model:t.single(),controller:this}).render();this.content.set(r),r.loadEditor()},createStates:function(){this.on("toolbar:create:featured-image",this.featuredImageToolbar,this),this.on("content:render:edit-image",this.editState,this),this.states.add([new e.media.controller.FeaturedImage,new e.media.controller.EditImage({model:this.options.editImage})])}})},sx=()=>{let{wp:e}=window;return e.media.view.MediaFrame.Select.extend({createStates(){let t=this.options;this.options.states||this.states.add([new e.media.controller.Library({library:e.media.query(t.library),multiple:t.multiple,title:t.title,priority:20,filterable:"uploaded"}),new e.media.controller.EditImage({model:t.editImage})])}})},lx=()=>{let{wp:e}=window;return e.media.view.MediaFrame.Post.extend({galleryToolbar(){let t=this.state().get("editing");this.toolbar.set(new e.media.view.Toolbar({controller:this,items:{insert:{style:"primary",text:t?e.media.view.l10n.updateGallery:e.media.view.l10n.insertGallery,priority:80,requires:{library:!0},click(){let r=this.controller,o=r.state();r.close(),o.trigger("update",o.get("library")),r.setState(r.options.state),r.reset()}}}}))},editState(){let t=this.state("gallery").get("selection"),r=new e.media.view.EditImage({model:t.single(),controller:this}).render();this.content.set(r),r.loadEditor()},createStates:function(){this.on("toolbar:create:main-gallery",this.galleryToolbar,this),this.on("content:render:edit-image",this.editState,this),this.states.add([new e.media.controller.Library({id:"gallery",title:e.media.view.l10n.createGalleryTitle,priority:40,toolbar:"main-gallery",filterable:"uploaded",multiple:"add",editable:!1,library:e.media.query({type:"image",...this.options.library})}),new e.media.controller.EditImage({model:this.options.editImage}),new e.media.controller.GalleryEdit({library:this.options.selection,editing:this.options.editing,menu:"gallery",displaySettings:!1,multiple:!0}),new e.media.controller.GalleryAdd])}})},hd=e=>["sizes","mime","type","subtype","id","url","alt","link","caption"].reduce((r,o)=>(e?.hasOwnProperty(o)&&(r[o]=e[o]),r),{}),Ei=e=>{let{wp:t}=window;return t.media.query({order:"ASC",orderby:"post__in",post__in:e,posts_per_page:-1,query:!0,type:"image"})},ux=class extends gd.Component{constructor(){super(...arguments),this.openModal=this.openModal.bind(this),this.onOpen=this.onOpen.bind(this),this.onSelect=this.onSelect.bind(this),this.onUpdate=this.onUpdate.bind(this),this.onClose=this.onClose.bind(this)}initializeListeners(){this.frame.on("select",this.onSelect),this.frame.on("update",this.onUpdate),this.frame.on("open",this.onOpen),this.frame.on("close",this.onClose)}buildAndSetGalleryFrame(){let{addToGallery:e=!1,allowedTypes:t,multiple:r=!1,value:o=ix}=this.props;if(o===this.lastGalleryValue)return;let{wp:n}=window;this.lastGalleryValue=o,this.frame&&this.frame.remove();let i;e?i="gallery-library":i=o&&o.length?"gallery-edit":"gallery",this.GalleryDetailsMediaFrame||(this.GalleryDetailsMediaFrame=lx());let a=Ei(o),s=new n.media.model.Selection(a.models,{props:a.props.toJSON(),multiple:r});this.frame=new this.GalleryDetailsMediaFrame({mimeType:t,state:i,multiple:r,selection:s,editing:!!o?.length}),n.media.frame=this.frame,this.initializeListeners()}buildAndSetFeatureImageFrame(){let{wp:e}=window,{value:t,multiple:r,allowedTypes:o}=this.props,n=ax(),i=Ei(t),a=new e.media.model.Selection(i.models,{props:i.props.toJSON()});this.frame=new n({mimeType:o,state:"featured-image",multiple:r,selection:a,editing:t}),e.media.frame=this.frame,e.media.view.settings.post={...e.media.view.settings.post,featuredImageId:t||-1}}buildAndSetSingleMediaFrame(){let{wp:e}=window,{allowedTypes:t,multiple:r=!1,title:o=(0,bd.__)("Select or Upload Media"),value:n}=this.props,i={title:o,multiple:r};t&&(i.library={type:t}),this.frame&&this.frame.remove();let a=sx(),s=Ei(n),l=new e.media.model.Selection(s.models,{props:s.props.toJSON()});this.frame=new a({mimeType:t,multiple:r,selection:l,...i}),e.media.frame=this.frame}componentWillUnmount(){this.frame?.remove()}onUpdate(e){let{onSelect:t,multiple:r=!1}=this.props,o=this.frame.state(),n=e||o.get("selection");!n||!n.models.length||t(r?n.models.map(i=>hd(i.toJSON())):hd(n.models[0].toJSON()))}onSelect(){let{onSelect:e,multiple:t=!1}=this.props,r=this.frame.state().get("selection").toJSON();e(t?r:r[0])}onOpen(){let{wp:e}=window,{value:t}=this.props;if(this.updateCollection(),this.props.mode&&this.frame.content.mode(this.props.mode),!(Array.isArray(t)?!!t?.length:!!t))return;let o=this.props.gallery,n=this.frame.state().get("selection"),i=Array.isArray(t)?t:[t];o||i.forEach(s=>{n.add(e.media.attachment(s))});let a=Ei(i);a.more().done(function(){o&&a?.models?.length&&n.add(a.models)})}onClose(){let{onClose:e}=this.props;e&&e(),this.frame.detach()}updateCollection(){let e=this.frame.content.get();if(e&&e.collection){let t=e.collection;t.toArray().forEach(r=>r.trigger("destroy",r)),t.mirroring._hasMore=!0,t.more()}}openModal(){let{gallery:e=!1,unstableFeaturedImageFlow:t=!1,modalClass:r}=this.props;e?this.buildAndSetGalleryFrame():this.buildAndSetSingleMediaFrame(),r&&this.frame.$el.addClass(r),t&&this.buildAndSetFeatureImageFrame(),this.initializeListeners(),this.frame.open()}render(){return this.props.render({open:this.openModal})}},xd=ux;var In=u(j(),1),Ri=u(ll(),1);var _d=u(ul(),1);function cx(e){return e!==null&&typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype}function An(e,t,r){if(cx(r))for(let[o,n]of Object.entries(r))An(e,`${t}[${o}]`,n);else r!==void 0&&e.append(t,String(r))}function kr(e){let{alt_text:t,source_url:r,...o}=e;return{...o,alt:e.alt_text,caption:e.caption?.raw??"",title:e.title.raw,url:e.source_url,poster:e._embedded?.["wp:featuredmedia"]?.[0]?.source_url||void 0}}async function Sd(e,t={},r){let o=new FormData;o.append("file",e,e.name||e.type.replace("/","."));for(let[n,i]of Object.entries(t))An(o,n,i);return kr(await(0,_d.default)({path:"/wp/v2/media?_embed=wp:featuredmedia",body:o,method:"POST",signal:r}))}var Ti=u(j(),1);var Wt=class extends Error{code;file;constructor({code:e,message:t,file:r,cause:o}){super(t,{cause:o}),Object.setPrototypeOf(this,new.target.prototype),this.code=e,this.file=r}};function Oi(e,t){if(!t)return;let r=t.some(o=>o.includes("/")?o===e.type:e.type.startsWith(`${o}/`));if(e.type&&!r)throw new Wt({code:"MIME_TYPE_NOT_SUPPORTED",message:(0,Ti.sprintf)((0,Ti.__)("%s: Sorry, this file type is not supported here."),e.name),file:e})}var Ai=u(j(),1);function Cd(e){return e?Object.entries(e).flatMap(([t,r])=>{let[o]=r.split("/"),n=t.split("|");return[r,...n.map(i=>`${o}/${i}`)]}):null}function Ii(e,t){let r=Cd(t);if(!r)return;let o=r.includes(e.type);if(e.type&&!o)throw new Wt({code:"MIME_TYPE_NOT_ALLOWED_FOR_USER",message:(0,Ai.sprintf)((0,Ai.__)("%s: Sorry, you are not allowed to upload this file type."),e.name),file:e})}var Bo=u(j(),1);function Pi(e,t){if(e.size<=0)throw new Wt({code:"EMPTY_FILE",message:(0,Bo.sprintf)((0,Bo.__)("%s: This file is empty."),e.name),file:e});if(t&&e.size>t)throw new Wt({code:"SIZE_ABOVE_LIMIT",message:(0,Bo.sprintf)((0,Bo.__)("%s: This file exceeds the maximum upload size for this site."),e.name),file:e})}function Vi({wpAllowedMimeTypes:e,allowedTypes:t,additionalData:r={},filesList:o,maxUploadFileSize:n,onError:i,onFileChange:a,signal:s,multiple:l=!0}){if(!l&&o.length>1){i?.(new Error((0,In.__)("Only one file can be used here.")));return}let c=[],f=[],p=(d,m)=>{window.__clientSideMediaProcessing||f[d]?.url&&(0,Ri.revokeBlobURL)(f[d].url),f[d]=m,a?.(f.filter(v=>v!==null))};for(let d of o){try{Ii(d,e)}catch(m){i?.(m);continue}try{Oi(d,t)}catch(m){i?.(m);continue}try{Pi(d,n)}catch(m){i?.(m);continue}c.push(d),window.__clientSideMediaProcessing||(f.push({url:(0,Ri.createBlobURL)(d)}),a?.(f))}c.map(async(d,m)=>{try{let v=await Sd(d,r,s);p(m,v)}catch(v){p(m,null);let _;typeof v=="object"&&v!==null&&"message"in v?_=typeof v.message=="string"?v.message:String(v.message):_=(0,In.sprintf)((0,In.__)("Error while uploading file %s to the media library."),d.name),i?.(new Wt({code:"GENERAL",message:_,file:d,cause:v instanceof Error?v:void 0}))}})}var Ni=u(j(),1);var Ed=u(ul(),1);async function Td(e,t,r={},o){let n=new FormData;n.append("file",e,e.name||e.type.replace("/","."));for(let[i,a]of Object.entries(r))An(n,i,a);return kr(await(0,Ed.default)({path:`/wp/v2/media/${t}/sideload`,body:n,method:"POST",signal:o}))}var dx=()=>{};async function Od({file:e,attachmentId:t,additionalData:r={},signal:o,onFileChange:n,onError:i=dx}){try{let a=await Td(e,t,r,o);n?.([a])}catch(a){let s;a instanceof Error?s=a.message:s=(0,Ni.sprintf)((0,Ni.__)("Error while sideloading file %s to the server."),e.name),i(new Wt({code:"GENERAL",message:s,file:e,cause:a instanceof Error?a:void 0}))}}var gt=u(z(),1),$e=u(j(),1),yi=u(Pn(),1),_i=u(qt(),1),mo=u(G(),1);var Di=u(le(),1),cl=u(P(),1),dl=(0,cl.jsx)(Di.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,cl.jsx)(Di.Path,{d:"m16.5 13.5-3.7 3.7V4h-1.5v13.2l-3.8-3.7-1 1 5.5 5.6 5.5-5.6z"})});var ki=u(le(),1),fl=u(P(),1),ml=(0,fl.jsx)(ki.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,fl.jsx)(ki.Path,{d:"M20 11.2H6.8l3.7-3.7-1-1L3.9 12l5.6 5.5 1-1-3.7-3.7H20z"})});var Mi=u(le(),1),pl=u(P(),1),vl=(0,pl.jsx)(Mi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,pl.jsx)(Mi.Path,{d:"m14.5 6.5-1 1 3.7 3.7H4v1.6h13.2l-3.7 3.7 1 1 5.6-5.5z"})});var Fi=u(le(),1),hl=u(P(),1),gl=(0,hl.jsx)(Fi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,hl.jsx)(Fi.Path,{d:"M12 3.9 6.5 9.5l1 1 3.8-3.7V20h1.5V6.8l3.7 3.7 1-1z"})});var Li=u(le(),1),bl=u(P(),1),xl=(0,bl.jsx)(Li.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,bl.jsx)(Li.Path,{d:"M17.7 4.3c-1.2 0-2.8 0-3.8 1-.6.6-.9 1.5-.9 2.6V14c-.6-.6-1.5-1-2.5-1C8.6 13 7 14.6 7 16.5S8.6 20 10.5 20c1.5 0 2.8-1 3.3-2.3.5-.8.7-1.8.7-2.5V7.9c0-.7.2-1.2.5-1.6.6-.6 1.8-.6 2.8-.6h.3V4.3h-.4z"})});var Bi=u(le(),1),wl=u(P(),1),ji=(0,wl.jsx)(Bi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,wl.jsx)(Bi.Path,{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM5 4.5h14c.3 0 .5.2.5.5v3.5h-15V5c0-.3.2-.5.5-.5zm8 5.5h6.5v3.5H13V10zm-1.5 3.5h-7V10h7v3.5zm-7 5.5v-4h7v4.5H5c-.3 0-.5-.2-.5-.5zm14.5.5h-6V15h6.5v4c0 .3-.2.5-.5.5z"})});var Hi=u(le(),1),yl=u(P(),1),zi=(0,yl.jsx)(Hi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,yl.jsx)(Hi.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M6 5.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM4 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2V6zm11-.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5h-3a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM13 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2h-3a2 2 0 01-2-2V6zm5 8.5h-3a.5.5 0 00-.5.5v3a.5.5 0 00.5.5h3a.5.5 0 00.5-.5v-3a.5.5 0 00-.5-.5zM15 13a2 2 0 00-2 2v3a2 2 0 002 2h3a2 2 0 002-2v-3a2 2 0 00-2-2h-3zm-9 1.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5v-3a.5.5 0 01.5-.5zM4 15a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2v-3z"})});var Wi=u(le(),1),_l=u(P(),1),Rn=(0,_l.jsx)(Wi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,_l.jsx)(Wi.Path,{d:"M16.5 7.5 10 13.9l-2.5-2.4-1 1 3.5 3.6 7.5-7.6z"})});var Gi=u(le(),1),Sl=u(P(),1),Cl=(0,Sl.jsx)(Gi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Sl.jsx)(Gi.Path,{d:"M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z"})});var Ui=u(le(),1),El=u(P(),1),Tl=(0,El.jsx)(Ui.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,El.jsx)(Ui.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M10.289 4.836A1 1 0 0111.275 4h1.306a1 1 0 01.987.836l.244 1.466c.787.26 1.503.679 2.108 1.218l1.393-.522a1 1 0 011.216.437l.653 1.13a1 1 0 01-.23 1.273l-1.148.944a6.025 6.025 0 010 2.435l1.149.946a1 1 0 01.23 1.272l-.653 1.13a1 1 0 01-1.216.437l-1.394-.522c-.605.54-1.32.958-2.108 1.218l-.244 1.466a1 1 0 01-.987.836h-1.306a1 1 0 01-.986-.836l-.244-1.466a5.995 5.995 0 01-2.108-1.218l-1.394.522a1 1 0 01-1.217-.436l-.653-1.131a1 1 0 01.23-1.272l1.149-.946a6.026 6.026 0 010-2.435l-1.148-.944a1 1 0 01-.23-1.272l.653-1.131a1 1 0 011.217-.437l1.393.522a5.994 5.994 0 012.108-1.218l.244-1.466zM14.929 12a3 3 0 11-6 0 3 3 0 016 0z"})});var Yi=u(le(),1),Ol=u(P(),1),Al=(0,Ol.jsx)(Yi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Ol.jsx)(Yi.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M7.25 16.437a6.5 6.5 0 1 1 9.5 0V16A2.75 2.75 0 0 0 14 13.25h-4A2.75 2.75 0 0 0 7.25 16v.437Zm1.5 1.193a6.47 6.47 0 0 0 3.25.87 6.47 6.47 0 0 0 3.25-.87V16c0-.69-.56-1.25-1.25-1.25h-4c-.69 0-1.25.56-1.25 1.25v1.63ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm10-2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z"})});var qi=u(le(),1),Il=u(P(),1),Pl=(0,Il.jsx)(qi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Il.jsx)(qi.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M3 7c0-1.1.9-2 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Zm2-.5h14c.3 0 .5.2.5.5v1L12 13.5 4.5 7.9V7c0-.3.2-.5.5-.5Zm-.5 3.3V17c0 .3.2.5.5.5h14c.3 0 .5-.2.5-.5V9.8L12 15.4 4.5 9.8Z"})});var $i=u(le(),1),Rl=u(P(),1),Vl=(0,Rl.jsx)($i.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Rl.jsx)($i.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12.218 5.377a.25.25 0 0 0-.436 0l-7.29 12.96a.25.25 0 0 0 .218.373h14.58a.25.25 0 0 0 .218-.372l-7.29-12.96Zm-1.743-.735c.669-1.19 2.381-1.19 3.05 0l7.29 12.96a1.75 1.75 0 0 1-1.525 2.608H4.71a1.75 1.75 0 0 1-1.525-2.608l7.29-12.96ZM12.75 17.46h-1.5v-1.5h1.5v1.5Zm-1.5-3h1.5v-5h-1.5v5Z"})});var Ki=u(le(),1),Nl=u(P(),1),Dl=(0,Nl.jsx)(Ki.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Nl.jsx)(Ki.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12.848 8a1 1 0 0 1-.914-.594l-.723-1.63a.5.5 0 0 0-.447-.276H5a.5.5 0 0 0-.5.5v11.5a.5.5 0 0 0 .5.5h14a.5.5 0 0 0 .5-.5v-9A.5.5 0 0 0 19 8h-6.152Zm.612-1.5a.5.5 0 0 1-.462-.31l-.445-1.084A2 2 0 0 0 10.763 4H5a2 2 0 0 0-2 2v11.5a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2h-5.54Z"})});var Zi=u(le(),1),kl=u(P(),1),Ml=(0,kl.jsx)(Zi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,kl.jsx)(Zi.Path,{d:"M4 8.8h8.9V7.2H4v1.6zm0 7h8.9v-1.5H4v1.5zM18 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z"})});var Xi=u(le(),1),Fl=u(P(),1),Ll=(0,Fl.jsx)(Xi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Fl.jsx)(Xi.Path,{d:"M11.1 15.8H20v-1.5h-8.9v1.5zm0-8.6v1.5H20V7.2h-8.9zM6 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-7c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"})});var Qi=u(le(),1),Bl=u(P(),1),Vn=(0,Bl.jsx)(Qi.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Bl.jsx)(Qi.Path,{d:"M10 17.5H14V16H10V17.5ZM6 6V7.5H18V6H6ZM8 12.5H16V11H8V12.5Z"})});var Ji=u(le(),1),jl=u(P(),1),Hl=(0,jl.jsx)(Ji.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,jl.jsx)(Ji.Path,{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM5 4.5h14c.3 0 .5.2.5.5v8.4l-3-2.9c-.3-.3-.8-.3-1 0L11.9 14 9 12c-.3-.2-.6-.2-.8 0l-3.6 2.6V5c-.1-.3.1-.5.4-.5zm14 15H5c-.3 0-.5-.2-.5-.5v-2.4l4.1-3 3 1.9c.3.2.7.2.9-.1L16 12l3.5 3.4V19c0 .3-.2.5-.5.5z"})});var ea=u(le(),1),zl=u(P(),1),Wl=(0,zl.jsx)(ea.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,zl.jsx)(ea.Path,{d:"M10 17.389H8.444A5.194 5.194 0 1 1 8.444 7H10v1.5H8.444a3.694 3.694 0 0 0 0 7.389H10v1.5ZM14 7h1.556a5.194 5.194 0 0 1 0 10.39H14v-1.5h1.556a3.694 3.694 0 0 0 0-7.39H14V7Zm-4.5 6h5v-1.5h-5V13Z"})});var ta=u(le(),1),Gl=u(P(),1),Ul=(0,Gl.jsx)(ta.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Gl.jsx)(ta.Path,{d:"M15 4H9c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h6c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 14c0 .3-.2.5-.5.5H9c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h6c.3 0 .5.2.5.5v12zm-4.5-.5h2V16h-2v1.5z"})});var ra=u(le(),1),Yl=u(P(),1),Nn=(0,Yl.jsx)(ra.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Yl.jsx)(ra.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"})});var oa=u(le(),1),ql=u(P(),1),na=(0,ql.jsx)(oa.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,ql.jsx)(oa.Path,{d:"M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z"})});var ia=u(le(),1),$l=u(P(),1),aa=(0,$l.jsx)(ia.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,$l.jsx)(ia.Path,{d:"M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z"})});var sa=u(le(),1),Kl=u(P(),1),Zl=(0,Kl.jsx)(sa.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Kl.jsx)(sa.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm9 1V8h-1.5v3.5h-2V13H13Z"})});var la=u(le(),1),Xl=u(P(),1),Ql=(0,Xl.jsx)(la.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Xl.jsx)(la.Path,{d:"M13 5c-3.3 0-6 2.7-6 6 0 1.4.5 2.7 1.3 3.7l-3.8 3.8 1.1 1.1 3.8-3.8c1 .8 2.3 1.3 3.7 1.3 3.3 0 6-2.7 6-6S16.3 5 13 5zm0 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z"})});var ua=u(le(),1),Jl=u(P(),1),eu=(0,Jl.jsx)(ua.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,Jl.jsx)(ua.Path,{d:"M3.99961 13C4.67043 13.3354 4.6703 13.3357 4.67017 13.3359L4.67298 13.3305C4.67621 13.3242 4.68184 13.3135 4.68988 13.2985C4.70595 13.2686 4.7316 13.2218 4.76695 13.1608C4.8377 13.0385 4.94692 12.8592 5.09541 12.6419C5.39312 12.2062 5.84436 11.624 6.45435 11.0431C7.67308 9.88241 9.49719 8.75 11.9996 8.75C14.502 8.75 16.3261 9.88241 17.5449 11.0431C18.1549 11.624 18.6061 12.2062 18.9038 12.6419C19.0523 12.8592 19.1615 13.0385 19.2323 13.1608C19.2676 13.2218 19.2933 13.2686 19.3093 13.2985C19.3174 13.3135 19.323 13.3242 19.3262 13.3305L19.3291 13.3359C19.3289 13.3357 19.3288 13.3354 19.9996 13C20.6704 12.6646 20.6703 12.6643 20.6701 12.664L20.6697 12.6632L20.6688 12.6614L20.6662 12.6563L20.6583 12.6408C20.6517 12.6282 20.6427 12.6108 20.631 12.5892C20.6078 12.5459 20.5744 12.4852 20.5306 12.4096C20.4432 12.2584 20.3141 12.0471 20.1423 11.7956C19.7994 11.2938 19.2819 10.626 18.5794 9.9569C17.1731 8.61759 14.9972 7.25 11.9996 7.25C9.00203 7.25 6.82614 8.61759 5.41987 9.9569C4.71736 10.626 4.19984 11.2938 3.85694 11.7956C3.68511 12.0471 3.55605 12.2584 3.4686 12.4096C3.42484 12.4852 3.39142 12.5459 3.36818 12.5892C3.35656 12.6108 3.34748 12.6282 3.34092 12.6408L3.33297 12.6563L3.33041 12.6614L3.32948 12.6632L3.32911 12.664C3.32894 12.6643 3.32879 12.6646 3.99961 13ZM11.9996 16C13.9326 16 15.4996 14.433 15.4996 12.5C15.4996 10.567 13.9326 9 11.9996 9C10.0666 9 8.49961 10.567 8.49961 12.5C8.49961 14.433 10.0666 16 11.9996 16Z"})});var ca=u(le(),1),tu=u(P(),1),Dn=(0,tu.jsx)(ca.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,tu.jsx)(ca.Path,{d:"M20.7 12.7s0-.1-.1-.2c0-.2-.2-.4-.4-.6-.3-.5-.9-1.2-1.6-1.8-.7-.6-1.5-1.3-2.6-1.8l-.6 1.4c.9.4 1.6 1 2.1 1.5.6.6 1.1 1.2 1.4 1.6.1.2.3.4.3.5v.1l.7-.3.7-.3Zm-5.2-9.3-1.8 4c-.5-.1-1.1-.2-1.7-.2-3 0-5.2 1.4-6.6 2.7-.7.7-1.2 1.3-1.6 1.8-.2.3-.3.5-.4.6 0 0 0 .1-.1.2s0 0 .7.3l.7.3V13c0-.1.2-.3.3-.5.3-.4.7-1 1.4-1.6 1.2-1.2 3-2.3 5.5-2.3H13v.3c-.4 0-.8-.1-1.1-.1-1.9 0-3.5 1.6-3.5 3.5s.6 2.3 1.6 2.9l-2 4.4.9.4 7.6-16.2-.9-.4Zm-3 12.6c1.7-.2 3-1.7 3-3.5s-.2-1.4-.6-1.9L12.4 16Z"})});var da=u(le(),1),ru=u(P(),1),ou=(0,ru.jsx)(da.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,ru.jsx)(da.Path,{d:"M18.5 15v3.5H13V6.7l4.5 4.1 1-1.1-6.2-5.8-5.8 5.8 1 1.1 4-4v11.7h-6V15H4v5h16v-5z"})});var fa=u(le(),1),nu=u(P(),1),iu=(0,nu.jsx)(fa.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,nu.jsx)(fa.Path,{d:"M18.7 3H5.3C4 3 3 4 3 5.3v13.4C3 20 4 21 5.3 21h13.4c1.3 0 2.3-1 2.3-2.3V5.3C21 4 20 3 18.7 3zm.8 15.7c0 .4-.4.8-.8.8H5.3c-.4 0-.8-.4-.8-.8V5.3c0-.4.4-.8.8-.8h13.4c.4 0 .8.4.8.8v13.4zM10 15l5-3-5-3v6z"})});var Md=u(ue(),1),kd={};function au(e,t){let r=Md.useRef(kd);return r.current===kd&&(r.current=e(t)),r}function su(e,...t){let r=new URL(`https://base-ui.com/production-error/${e}`);return t.forEach(o=>r.searchParams.append("args[]",o)),`Base UI error #${e}; visit ${r} for the full message.`}var pa=u(ue(),1);function lu(e,t,r,o){let n=au(Ld).current;return fx(n,e,t,r,o)&&Bd(n,[e,t,r,o]),n.callback}function Fd(e){let t=au(Ld).current;return mx(t,e)&&Bd(t,e),t.callback}function Ld(){return{callback:null,cleanup:null,refs:[]}}function fx(e,t,r,o,n){return e.refs[0]!==t||e.refs[1]!==r||e.refs[2]!==o||e.refs[3]!==n}function mx(e,t){return e.refs.length!==t.length||e.refs.some((r,o)=>r!==t[o])}function Bd(e,t){if(e.refs=t,t.every(r=>r==null)){e.callback=null;return}e.callback=r=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),r!=null){let o=Array(t.length).fill(null);for(let n=0;n{for(let n=0;n=e}function uu(e){if(!zd.isValidElement(e))return null;let t=e,r=t.props;return(Hd(19)?r?.ref:t.ref)??null}function kn(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}function Wd(e,t){let r={};for(let o in e){let n=e[o];if(t?.hasOwnProperty(o)){let i=t[o](n);i!=null&&Object.assign(r,i);continue}n===!0?r[`data-${o.toLowerCase()}`]="":n&&(r[`data-${o.toLowerCase()}`]=n.toString())}return r}function Gd(e,t){return typeof e=="function"?e(t):e}function Ud(e,t){return typeof e=="function"?e(t):e}var Fn={};function ma(e,t,r,o,n){let i={...cu(e,Fn)};return t&&(i=Mn(i,t)),r&&(i=Mn(i,r)),o&&(i=Mn(i,o)),n&&(i=Mn(i,n)),i}function Yd(e){if(e.length===0)return Fn;if(e.length===1)return cu(e[0],Fn);let t={...cu(e[0],Fn)};for(let r=1;r=65&&n<=90&&(typeof t=="function"||typeof t>"u")}function qd(e){return typeof e=="function"}function cu(e,t){return qd(e)?e(t):e??Fn}function gx(e,t){return t?e?r=>{if(xx(r)){let n=r;bx(n);let i=t(n);return n.baseUIHandlerPrevented||e?.(n),i}let o=t(r);return e?.(r),o}:t:e}function bx(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function du(e,t){return t?e?t+" "+e:t:e}function xx(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}var wx=Object.freeze([]),Mr=Object.freeze({});var fu=u(ue(),1);function $d(e,t,r={}){let o=t.render,n=yx(t,r);if(r.enabled===!1)return null;let i=r.state??Mr;return _x(e,o,n,i)}function yx(e,t={}){let{className:r,style:o,render:n}=e,{state:i=Mr,ref:a,props:s,stateAttributesMapping:l,enabled:c=!0}=t,f=c?Gd(r,i):void 0,p=c?Ud(o,i):void 0,d=c?Wd(i,l):Mr,m=c?kn(d,Array.isArray(s)?Yd(s):s)??Mr:Mr;return typeof document<"u"&&(c?Array.isArray(a)?m.ref=Fd([m.ref,uu(n),...a]):m.ref=lu(m.ref,uu(n),a):lu(null,null)),c?(f!==void 0&&(m.className=du(m.className,f)),p!==void 0&&(m.style=kn(m.style,p)),m):Mr}function _x(e,t,r,o){if(t){if(typeof t=="function")return t(r,o);let n=ma(r,t.props);return n.ref=r.ref,pa.cloneElement(t,n)}if(e&&typeof e=="string")return Sx(e,r);throw new Error(su(8))}function Sx(e,t){return e==="button"?(0,fu.createElement)("button",{type:"button",...t,key:t.key}):e==="img"?(0,fu.createElement)("img",{alt:"",...t,key:t.key}):pa.createElement(e,t)}function tf(e){return $d(e.defaultTagName??"div",e,e)}function rf(e){var t,r,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var n=e.length;for(t=0;t{},fields:[],data:[],paginationInfo:{totalItems:0,totalPages:0},selection:[],onChangeSelection:()=>{},setOpenedFilter:()=>{},openedFilter:null,getItemId:e=>e.id,isItemClickable:()=>!0,renderItemLink:void 0,containerWidth:0,containerRef:(0,xa.createRef)(),resizeObserverRef:()=>{},defaultLayouts:{list:{},grid:{},table:{}},filters:[],isShowingFilter:!1,setIsShowingFilter:()=>{},hasInitiallyLoaded:!1,hasInfiniteScrollHandler:!1,config:{perPageSizes:[]}});mf.displayName="DataViewsContext";var q=mf;var xr=u(j(),1);var xo=u(j(),1),Aa=u(G(),1),wt=u(z(),1),Su=u(hu(),1);var vf=u(G(),1),hf=u(j(),1),gf=u(P(),1);function qr({selection:e,onChangeSelection:t,item:r,getItemId:o,titleField:n,disabled:i,...a}){let s=o(r),l=!i&&e.includes(s),c=n?.getValue?.({item:r})||(0,hf.__)("(no title)");return(0,gf.jsx)(vf.CheckboxControl,{className:"dataviews-selection-checkbox","aria-label":c,"aria-disabled":i,checked:l,onChange:()=>{i||t(e.includes(s)?e.filter(f=>s!==f):[...e,s])},...a})}var go=u(G(),1),wf=u(j(),1),zo=u(z(),1);var yf=u(qt(),1),gu=u(bt(),1);var bf=u(pu(),1),{lock:u2,unlock:Z}=(0,bf.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/dataviews");var be=u(P(),1),{Menu:Ho,kebabCase:Mx}=Z(go.privateApis);function Fx({action:e,onClick:t,items:r,variant:o}){let n=typeof e.label=="string"?e.label:e.label(r);return(0,be.jsx)(go.Button,{disabled:!!e.disabled,accessibleWhenDisabled:!0,size:"compact",variant:o,onClick:t,children:n})}function Lx({action:e,onClick:t,items:r}){let o=typeof e.label=="string"?e.label:e.label(r);return(0,be.jsx)(Ho.Item,{disabled:e.disabled,onClick:t,children:(0,be.jsx)(Ho.ItemLabel,{children:o})})}function Ln({action:e,items:t,closeModal:r}){let o=typeof e.label=="string"?e.label:e.label(t),n=typeof e.modalHeader=="function"?e.modalHeader(t):e.modalHeader;return(0,be.jsx)(go.Modal,{title:n||o,__experimentalHideHeader:!!e.hideModalHeader,onRequestClose:r,focusOnMount:e.modalFocusOnMount??!0,size:e.modalSize||"medium",overlayClassName:`dataviews-action-modal dataviews-action-modal__${Mx(e.id)}`,children:(0,be.jsx)(e.RenderModal,{items:t,closeModal:r})})}function bu({actions:e,item:t,registry:r,setActiveModalAction:o}){let{primaryActions:n,regularActions:i}=(0,zo.useMemo)(()=>e.reduce((s,l)=>((l.isPrimary?s.primaryActions:s.regularActions).push(l),s),{primaryActions:[],regularActions:[]}),[e]),a=s=>s.map(l=>(0,be.jsx)(Lx,{action:l,onClick:()=>{if("RenderModal"in l){o(l);return}l.callback([t],{registry:r})},items:[t]},l.id));return(0,be.jsxs)(Ho.Group,{children:[a(n),a(i)]})}function Wo({item:e,actions:t,isCompact:r}){let o=(0,yf.useRegistry)(),{primaryActions:n,eligibleActions:i}=(0,zo.useMemo)(()=>{let s=t.filter(c=>!c.isEligible||c.isEligible(e));return{primaryActions:s.filter(c=>c.isPrimary),eligibleActions:s}},[t,e]),a=(0,gu.useViewportMatch)("medium","<");return r?(0,be.jsx)(xf,{item:e,actions:i,isSmall:!0,registry:o}):(0,be.jsxs)(L,{direction:"row",justify:"flex-end",className:"dataviews-item-actions",style:{flexShrink:0,width:"auto"},children:[(0,be.jsx)(xu,{item:e,actions:n,registry:o}),(n.lengthi(null)})]})}function xu({item:e,actions:t,registry:r,buttonVariant:o}){let[n,i]=(0,zo.useState)(null);return(0,gu.useViewportMatch)("medium","<")||!Array.isArray(t)||t.length===0?null:(0,be.jsxs)(be.Fragment,{children:[t.map(s=>(0,be.jsx)(Fx,{action:s,onClick:()=>{if("RenderModal"in s){i(s);return}s.callback([e],{registry:r})},items:[e],variant:o},s.id)),!!n&&(0,be.jsx)(Ln,{action:n,items:[e],closeModal:()=>i(null)})]})}var yu=u(G(),1),wu=u(j(),1),bo=u(z(),1),Bx=u(qt(),1);var jx=u(bt(),1);var $r=u(j(),1);function _f(e,t,r){return e>0?(0,$r.sprintf)((0,$r._n)("%d Item selected","%d Items selected",e),e):r>t?(0,$r.sprintf)((0,$r._n)("%1$d of %2$d Item","%1$d of %2$d Items",r),t,r):(0,$r.sprintf)((0,$r._n)("%d Item","%d Items",t),t)}var wa=u(P(),1);function ya(e,t){return(0,bo.useMemo)(()=>e.some(r=>r.supportsBulk&&(!r.isEligible||r.isEligible(t))),[e,t])}function _a(e,t){return(0,bo.useMemo)(()=>t.some(r=>e.some(o=>o.supportsBulk&&(!o.isEligible||o.isEligible(r)))),[e,t])}function Sa({selection:e,onChangeSelection:t,data:r,actions:o,getItemId:n}){let i=(0,bo.useMemo)(()=>r.filter(l=>o.some(c=>c.supportsBulk&&(!c.isEligible||c.isEligible(l)))),[r,o]),a=r.filter(l=>e.includes(n(l))&&i.includes(l)),s=a.length===i.length;return(0,wa.jsx)(yu.CheckboxControl,{className:"dataviews-view-table-selection-checkbox",checked:s,indeterminate:!s&&!!a.length,onChange:()=>{t(s?[]:i.map(l=>n(l)))},"aria-label":s?(0,wu.__)("Deselect all"):(0,wu.__)("Select all")})}var hr=u(j(),1);var gr=u(G(),1),Kr=u(z(),1);function Ca(e,t){let r=[e?.titleField,e?.mediaField,e?.descriptionField].filter(Boolean);return t.filter(o=>!r.includes(o.id)&&o.type!=="media"&&o.enableHiding!==!1)}var J=u(P(),1),{Menu:ce}=Z(gr.privateApis);function Hx({children:e}){return Kr.Children.toArray(e).filter(Boolean).map((t,r)=>(0,J.jsxs)(Kr.Fragment,{children:[r>0&&(0,J.jsx)(ce.Separator,{}),t]},r))}var zx=(0,Kr.forwardRef)(function({fieldId:t,view:r,fields:o,onChangeView:n,onHide:i,setOpenedFilter:a,canMove:s=!0,canInsertLeft:l=!0,canInsertRight:c=!0},f){let p=r.fields??[],d=p?.indexOf(t),m=r.sort?.field===t,v=!1,_=!1,h=!1,b=[],y=o.find(S=>S.id===t),{setIsShowingFilter:A}=(0,Kr.useContext)(q);if(!y)return null;v=y.enableHiding!==!1,_=y.enableSorting!==!1;let V=y.header;if(b=!!y.filterBy&&y.filterBy?.operators||[],h=!r.filters?.some(S=>t===S.field)&&!!(y.hasElements||y.Edit)&&y.filterBy!==!1&&!y.filterBy?.isPrimary,!_&&!s&&!v&&!h)return V;let R=Ca(r,o).filter(S=>!p.includes(S.id)),M=(l||c)&&!!R.length,k=(0,hr.isRTL)();return(0,J.jsxs)(ce,{children:[(0,J.jsxs)(ce.TriggerButton,{render:(0,J.jsx)(gr.Button,{size:"compact",className:"dataviews-view-table-header-button",ref:f,variant:"tertiary"}),children:[V,r.sort&&m&&(0,J.jsx)("span",{"aria-hidden":"true",children:af[r.sort.direction]})]}),(0,J.jsx)(ce.Popover,{style:{minWidth:"240px"},children:(0,J.jsxs)(Hx,{children:[_&&(0,J.jsx)(ce.Group,{children:va.map(S=>{let I=r.sort&&m&&r.sort.direction===S,N=`${t}-${S}`;return(0,J.jsx)(ce.RadioItem,{name:"view-table-sorting",value:N,checked:I,onChange:()=>{n({...r,sort:{field:t,direction:S},showLevels:!1})},children:(0,J.jsx)(ce.ItemLabel,{children:ga[S]})},N)})}),h&&(0,J.jsx)(ce.Group,{children:(0,J.jsx)(ce.Item,{prefix:(0,J.jsx)(gr.Icon,{icon:Vn}),onClick:()=>{a(t),A(!0),n({...r,page:1,filters:[...r.filters||[],{field:t,value:void 0,operator:b[0]}]})},children:(0,J.jsx)(ce.ItemLabel,{children:(0,hr.__)("Add filter")})})}),(s||v||M)&&y&&(0,J.jsxs)(ce.Group,{children:[s&&(0,J.jsx)(ce.Item,{prefix:(0,J.jsx)(gr.Icon,{icon:ml}),disabled:k?d>=p.length-1:d<1,onClick:()=>{let S=k?d+1:d-1,I=[...p];I.splice(d,1),I.splice(S,0,t),n({...r,fields:I})},children:(0,J.jsx)(ce.ItemLabel,{children:(0,hr.__)("Move left")})}),s&&(0,J.jsx)(ce.Item,{prefix:(0,J.jsx)(gr.Icon,{icon:vl}),disabled:k?d<1:d>=p.length-1,onClick:()=>{let S=k?d-1:d+1,I=[...p];I.splice(d,1),I.splice(S,0,t),n({...r,fields:I})},children:(0,J.jsx)(ce.ItemLabel,{children:(0,hr.__)("Move right")})}),l&&!!R.length&&(0,J.jsxs)(ce,{children:[(0,J.jsx)(ce.SubmenuTriggerItem,{children:(0,J.jsx)(ce.ItemLabel,{children:(0,hr.__)("Insert left")})}),(0,J.jsx)(ce.Popover,{children:R.map(S=>{let I=k?d+1:d;return(0,J.jsx)(ce.Item,{onClick:()=>{n({...r,fields:[...p.slice(0,I),S.id,...p.slice(I)]})},children:(0,J.jsx)(ce.ItemLabel,{children:S.label})},S.id)})})]}),c&&!!R.length&&(0,J.jsxs)(ce,{children:[(0,J.jsx)(ce.SubmenuTriggerItem,{children:(0,J.jsx)(ce.ItemLabel,{children:(0,hr.__)("Insert right")})}),(0,J.jsx)(ce.Popover,{children:R.map(S=>{let I=k?d:d+1;return(0,J.jsx)(ce.Item,{onClick:()=>{n({...r,fields:[...p.slice(0,I),S.id,...p.slice(I)]})},children:(0,J.jsx)(ce.ItemLabel,{children:S.label})},S.id)})})]}),v&&y&&(0,J.jsx)(ce.Item,{prefix:(0,J.jsx)(gr.Icon,{icon:Dn}),onClick:()=>{i(y),n({...r,fields:p.filter(S=>S!==t)})},children:(0,J.jsx)(ce.ItemLabel,{children:(0,hr.__)("Hide column")})})]})]})})]})}),Wx=zx,Go=Wx;var Sf=u(z(),1),_u=u(P(),1);function Gx({item:e,isItemClickable:t,onClickItem:r,className:o}){return!t(e)||!r?{className:o}:{className:o?`${o} ${o}--clickable`:void 0,role:"button",tabIndex:0,onClick:n=>{n.stopPropagation(),r(e)},onKeyDown:n=>{(n.key==="Enter"||n.key===""||n.key===" ")&&(n.stopPropagation(),r(e))}}}function Zr({item:e,isItemClickable:t,onClickItem:r,renderItemLink:o,className:n,children:i,...a}){if(!t(e))return(0,_u.jsx)("div",{className:n,...a,children:i});if(o){let l=o({item:e,className:`${n} ${n}--clickable`,...a,children:i});return(0,Sf.cloneElement)(l,{onClick:c=>{c.stopPropagation(),l.props.onClick&&l.props.onClick(c)},onKeyDown:c=>{(c.key==="Enter"||c.key===""||c.key===" ")&&(c.stopPropagation(),l.props.onKeyDown&&l.props.onKeyDown(c))}})}let s=Gx({item:e,isItemClickable:t,onClickItem:r,className:n});return(0,_u.jsx)("div",{...s,...a,children:i})}var Xt=u(P(),1);function Ux({item:e,level:t,titleField:r,mediaField:o,descriptionField:n,onClickItem:i,renderItemLink:a,isItemClickable:s}){return(0,Xt.jsxs)(L,{direction:"row",gap:"md",align:"flex-start",justify:"flex-start",children:[o&&(0,Xt.jsx)(Zr,{item:e,isItemClickable:s,onClickItem:i,renderItemLink:a,className:"dataviews-view-table__cell-content-wrapper dataviews-column-primary__media","aria-label":s(e)&&(i||a)&&r?r.getValue?.({item:e}):void 0,children:(0,Xt.jsx)(o.render,{item:e,field:o,config:{sizes:"32px"}})}),(0,Xt.jsxs)(L,{direction:"column",align:"flex-start",className:"dataviews-view-table__primary-column-content",children:[r&&(0,Xt.jsxs)(Zr,{item:e,isItemClickable:s,onClickItem:i,renderItemLink:a,className:"dataviews-view-table__cell-content-wrapper dataviews-title-field",children:[t!==void 0&&t>0&&(0,Xt.jsxs)("span",{className:"dataviews-view-table__level",children:[Array(t).fill("\u2014").join(" "),"\xA0"]}),(0,Xt.jsx)(r.render,{item:e,field:r})]}),n&&(0,Xt.jsx)(n.render,{item:e,field:n})]})]})}var Ea=Ux;var Cf=u(bt(),1),Uo=u(z(),1),Ef=u(j(),1),Yx=e=>(0,Ef.isRTL)()?Math.abs(e.scrollLeft)<=1:e.scrollLeft+e.clientWidth>=e.scrollWidth-1;function Tf({scrollContainerRef:e,enabled:t=!1}){let[r,o]=(0,Uo.useState)(!1),n=(0,Cf.useDebounce)((0,Uo.useCallback)(()=>{let i=e.current;i&&o(Yx(i))},[e,o]),200);return(0,Uo.useEffect)(()=>typeof window>"u"||!t||!e.current?()=>{}:(n(),e.current.addEventListener("scroll",n),window.addEventListener("resize",n),()=>{e.current?.removeEventListener("scroll",n),window.removeEventListener("resize",n)}),[e,t]),r}function kt(e,t){return e.reduce((r,o)=>{let n=t.getValue({item:o});return r.has(n)||r.set(n,[]),r.get(n)?.push(o),r},new Map)}var Xr=u(G(),1),Af=u(j(),1),If=u(z(),1);var Tt=u(P(),1);function Of({field:e,isVisible:t,onToggleVisibility:r}){return(0,Tt.jsx)(Xr.__experimentalItem,{onClick:e.enableHiding?r:void 0,children:(0,Tt.jsxs)(L,{direction:"row",gap:"sm",justify:"flex-start",align:"center",children:[(0,Tt.jsx)("div",{style:{height:24,width:24},children:t&&(0,Tt.jsx)(Xr.Icon,{icon:Rn})}),(0,Tt.jsx)("span",{className:"dataviews-view-config__label",children:e.label})]})})}function qx(e){return!!e}function Ta({showLabel:e=!0}){let{view:t,fields:r,onChangeView:o}=(0,If.useContext)(q),n=Ca(t,r);if(!n?.length)return null;let i=r.find(v=>v.id===t.titleField),a=r.find(v=>v.id===t.mediaField),s=r.find(v=>v.id===t.descriptionField),l=[{field:i,isVisibleFlag:"showTitle"},{field:a,isVisibleFlag:"showMedia"},{field:s,isVisibleFlag:"showDescription"}].filter(({field:v})=>qx(v)),c=t.fields??[],f=n.filter(v=>c.includes(v.id)).length,p=l.filter(({isVisibleFlag:v})=>t[v]??!0),d=p.length+f,m=d===1&&p.length===1;return(0,Tt.jsxs)(L,{direction:"column",className:"dataviews-field-control",children:[e&&(0,Tt.jsx)(Xr.BaseControl.VisualLabel,{children:(0,Af.__)("Properties")}),(0,Tt.jsx)(L,{direction:"column",className:"dataviews-view-config__properties",children:(0,Tt.jsxs)(Xr.__experimentalItemGroup,{isBordered:!0,isSeparated:!0,size:"medium",children:[l.map(({field:v,isVisibleFlag:_})=>{let h=t[_]??!0,b=m&&h?{...v,enableHiding:!1}:v;return(0,Tt.jsx)(Of,{field:b,isVisible:h,onToggleVisibility:()=>{o({...t,[_]:!h})}},v.id)}),n.map(v=>{let _=c.includes(v.id),h=d===1&&_?{...v,enableHiding:!1}:v;return(0,Tt.jsx)(Of,{field:h,isVisible:_,onToggleVisibility:()=>{o({...t,fields:_?c.filter(b=>b!==v.id):[...c,v.id]})}},v.id)})]})})]})}var Oa=u(z(),1);function Qt(e,t={delay:400}){let[r,o]=(0,Oa.useState)(!1);return(0,Oa.useEffect)(()=>{if(!e)return;let n=setTimeout(()=>{o(!0)},t.delay);return()=>{clearTimeout(n),o(!1)}},[e,t.delay]),r}var K=u(P(),1);function Rf(e,t){if(e)return e;if(t==="integer"||t==="number")return"end"}function $x({item:e,fields:t,column:r,align:o}){let n=t.find(a=>a.id===r);if(!n)return null;let i=Y("dataviews-view-table__cell-content-wrapper",{"dataviews-view-table__cell-align-end":o==="end","dataviews-view-table__cell-align-center":o==="center"});return(0,K.jsx)("div",{className:i,children:(0,K.jsx)(n.render,{item:e,field:n})})}function Pf({hasBulkActions:e,item:t,level:r,actions:o,fields:n,id:i,view:a,titleField:s,mediaField:l,descriptionField:c,selection:f,getItemId:p,isItemClickable:d,onClickItem:m,renderItemLink:v,onChangeSelection:_,isActionsColumnSticky:h,posinset:b}){let{paginationInfo:y}=(0,wt.useContext)(q),A=ya(o,t),V=A&&f.includes(i),{showTitle:R=!0,showMedia:M=!0,showDescription:k=!0,infiniteScrollEnabled:S}=a,I=(0,wt.useRef)(!1),N=a.fields??[],g=s&&R||l&&M||c&&k;return(0,K.jsxs)("tr",{className:Y("dataviews-view-table__row",{"is-selected":A&&V,"has-bulk-actions":A}),onTouchStart:()=>{I.current=!0},"aria-setsize":S?y.totalItems:void 0,"aria-posinset":b,role:S?"article":void 0,onMouseDown:E=>{let T=(0,Su.isAppleOS)()?E.metaKey:E.ctrlKey;E.button===0&&T&&window.navigator.userAgent.toLowerCase().includes("firefox")&&E?.preventDefault()},onClick:E=>{if(!A)return;((0,Su.isAppleOS)()?E.metaKey:E.ctrlKey)&&!I.current&&document.getSelection()?.type!=="Range"&&_(f.includes(i)?f.filter(w=>i!==w):[...f,i])},children:[e&&(0,K.jsx)("td",{className:"dataviews-view-table__checkbox-column",children:(0,K.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper",children:(0,K.jsx)(qr,{item:t,selection:f,onChangeSelection:_,getItemId:p,titleField:s,disabled:!A})})}),g&&(0,K.jsx)("td",{children:(0,K.jsx)(Ea,{item:t,level:r,titleField:R?s:void 0,mediaField:M?l:void 0,descriptionField:k?c:void 0,isItemClickable:d,onClickItem:m,renderItemLink:v})}),N.map(E=>{let{width:T,maxWidth:w,minWidth:O,align:x}=a.layout?.styles?.[E]??{},C=n.find(D=>D.id===E),F=Rf(x,C?.type);return(0,K.jsx)("td",{style:{width:T,maxWidth:w,minWidth:O},children:(0,K.jsx)($x,{fields:n,item:t,column:E,align:F})},E)}),!!o?.length&&(0,K.jsx)("td",{className:Y("dataviews-view-table__actions-column",{"dataviews-view-table__actions-column--sticky":!0,"dataviews-view-table__actions-column--stuck":h}),onClick:E=>E.stopPropagation(),children:(0,K.jsx)(Wo,{item:t,actions:o})})]})}function Kx({actions:e,data:t,fields:r,getItemId:o,getItemLevel:n,isLoading:i=!1,onChangeView:a,onChangeSelection:s,selection:l,setOpenedFilter:c,onClickItem:f,isItemClickable:p,renderItemLink:d,view:m,className:v,empty:_}){let{containerRef:h}=(0,wt.useContext)(q),b=Qt(i),y=(0,wt.useRef)(new Map),A=(0,wt.useRef)(void 0),[V,R]=(0,wt.useState)(),[M,k]=(0,wt.useState)(null);(0,wt.useEffect)(()=>{A.current&&(A.current.focus(),A.current=void 0)});let S=(0,wt.useId)(),I=Tf({scrollContainerRef:h,enabled:!!e?.length}),N=_a(e,t);if(V){A.current=V,R(void 0);return}let g=$=>{let Ne=y.current.get($.id),tt=Ne?y.current.get(Ne.fallback):void 0;R(tt?.node)},E=$=>{$.preventDefault(),$.stopPropagation();let Ne={getBoundingClientRect:()=>({x:$.clientX,y:$.clientY,top:$.clientY,left:$.clientX,right:$.clientX,bottom:$.clientY,width:0,height:0,toJSON:()=>({})})};window.requestAnimationFrame(()=>{k(Ne)})},T=!!t?.length,w=r.find($=>$.id===m.titleField),O=r.find($=>$.id===m.mediaField),x=r.find($=>$.id===m.descriptionField),C=m.groupBy?.field?r.find($=>$.id===m.groupBy?.field):null,F=C?kt(t,C):null,{showTitle:D=!0,showMedia:W=!0,showDescription:Q=!0}=m,ge=w&&D||O&&W||x&&Q,et=m.fields??[],Et=($,Ne)=>tt=>{tt?y.current.set($,{node:tt,fallback:et[Ne>0?Ne-1:1]}):y.current.delete($)},Dr=m.infiniteScrollEnabled&&!F,po=(0,xo.isRTL)();return T?(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)("table",{className:Y("dataviews-view-table",v,{[`has-${m.layout?.density}-density`]:m.layout?.density&&["compact","comfortable"].includes(m.layout.density),"has-bulk-actions":N,"is-refreshing":!Dr&&b}),"aria-busy":i,"aria-describedby":S,role:Dr?"feed":void 0,inert:!Dr&&i?"true":void 0,children:[(0,K.jsxs)("colgroup",{children:[N&&(0,K.jsx)("col",{className:"dataviews-view-table__col-checkbox"}),ge&&(0,K.jsx)("col",{className:"dataviews-view-table__col-first-data"}),et.map(($,Ne)=>(0,K.jsx)("col",{className:Y(`dataviews-view-table__col-${$}`,{"dataviews-view-table__col-first-data":!ge&&Ne===0})},`col-${$}`)),!!e?.length&&(0,K.jsx)("col",{className:"dataviews-view-table__col-actions"})]}),M&&(0,K.jsx)(Aa.Popover,{anchor:M,onClose:()=>k(null),placement:"bottom-start",children:(0,K.jsx)(Ta,{showLabel:!1})}),(0,K.jsx)("thead",{onContextMenu:E,children:(0,K.jsxs)("tr",{className:"dataviews-view-table__row",children:[N&&(0,K.jsx)("th",{className:"dataviews-view-table__checkbox-column",scope:"col",onContextMenu:E,children:(0,K.jsx)(Sa,{selection:l,onChangeSelection:s,data:t,actions:e,getItemId:o})}),ge&&(0,K.jsx)("th",{scope:"col",children:w&&(0,K.jsx)(Go,{ref:Et(w.id,0),fieldId:w.id,view:m,fields:r,onChangeView:a,onHide:g,setOpenedFilter:c,canMove:!1,canInsertLeft:po?m.layout?.enableMoving??!0:!1,canInsertRight:po?!1:m.layout?.enableMoving??!0})}),et.map(($,Ne)=>{let{width:tt,maxWidth:vo,minWidth:Cn,align:En}=m.layout?.styles?.[$]??{},Tn=r.find(sl=>sl.id===$),Si=Rf(En,Tn?.type),On=m.layout?.enableMoving??!0;return(0,K.jsx)("th",{style:{width:tt,maxWidth:vo,minWidth:Cn,textAlign:Si},"aria-sort":m.sort?.direction&&m.sort?.field===$?ha[m.sort.direction]:void 0,scope:"col",children:(0,K.jsx)(Go,{ref:Et($,Ne),fieldId:$,view:m,fields:r,onChangeView:a,onHide:g,setOpenedFilter:c,canMove:On,canInsertLeft:On,canInsertRight:On})},$)}),!!e?.length&&(0,K.jsx)("th",{className:Y("dataviews-view-table__actions-column",{"dataviews-view-table__actions-column--sticky":!0,"dataviews-view-table__actions-column--stuck":!I}),children:(0,K.jsx)("span",{className:"dataviews-view-table-header",children:(0,xo.__)("Actions")})})]})}),T&&C&&F?Array.from(F.entries()).map(([$,Ne])=>(0,K.jsxs)("tbody",{children:[(0,K.jsx)("tr",{className:"dataviews-view-table__group-header-row",children:(0,K.jsx)("td",{colSpan:et.length+(ge?1:0)+(N?1:0)+(e?.length?1:0),className:"dataviews-view-table__group-header-cell",children:m.groupBy?.showLabel===!1?$:(0,xo.sprintf)((0,xo.__)("%1$s: %2$s"),C.label,$)})}),Ne.map((tt,vo)=>(0,K.jsx)(Pf,{item:tt,level:m.showLevels&&typeof n=="function"?n(tt):void 0,hasBulkActions:N,actions:e,fields:r,id:o(tt)||vo.toString(),view:m,titleField:w,mediaField:O,descriptionField:x,selection:l,getItemId:o,onChangeSelection:s,onClickItem:f,renderItemLink:d,isItemClickable:p,isActionsColumnSticky:!I},o(tt)))]},`group-${$}`)):(0,K.jsx)("tbody",{children:T&&t.map(($,Ne)=>(0,K.jsx)(Pf,{item:$,level:m.showLevels&&typeof n=="function"?n($):void 0,hasBulkActions:N,actions:e,fields:r,id:o($)||Ne.toString(),view:m,titleField:w,mediaField:O,descriptionField:x,selection:l,getItemId:o,onChangeSelection:s,onClickItem:f,renderItemLink:d,isItemClickable:p,isActionsColumnSticky:!I,posinset:Dr?Ne+1:void 0},o($)))})]}),Dr&&i&&(0,K.jsx)("div",{className:"dataviews-loading",id:S,children:(0,K.jsx)("p",{className:"dataviews-loading-more",children:(0,K.jsx)(Aa.Spinner,{})})})]}):(0,K.jsx)("div",{className:Y("dataviews-no-results",{"is-refreshing":b}),id:S,children:_})}var Vf=Kx;var Mf=u(G(),1),Ra=u(j(),1);var Ot=u(G(),1);var Bn=u(j(),1),Df=u(bt(),1),kf=u(hu(),1),Pa=u(z(),1);var Zx=u(G(),1),Xx=u(j(),1),Ia=u(z(),1);var Qx=u(P(),1),Jx=[{value:120,breakpoint:1},{value:170,breakpoint:1},{value:230,breakpoint:1},{value:290,breakpoint:1112},{value:350,breakpoint:1636},{value:430,breakpoint:588}],e0=Jx[2].value;function Nf(){let e=(0,Ia.useContext)(q),t=e.view;return(0,Ia.useMemo)(()=>{let r=e.containerWidth,o=32,n=t.layout?.previewSize??e0,i=Math.floor((r+o)/(n+o));return Math.max(1,i)},[e.containerWidth,t.layout?.previewSize])}var ie=u(P(),1),{Badge:t0}=Z(Ot.privateApis);function r0(e,t){let r=[];for(let o=0,n=e.length;o{if(b.onClickCapture?.(x),(0,kf.isAppleOS)()?x.metaKey:x.ctrlKey){if(x.stopPropagation(),x.preventDefault(),!M)return;o(r.includes(k)?r.filter(C=>k!==C):[...r,k])}},children:[(0,ie.jsx)(Zr,{item:l,isItemClickable:i,onClickItem:n,renderItemLink:a,className:Y("dataviews-view-grid__media",{"dataviews-view-grid__media--placeholder":!g}),...w,children:E}),_&&(0,ie.jsx)(qr,{item:l,selection:r,onChangeSelection:o,getItemId:s,titleField:p,disabled:!M}),!!c?.length&&(0,ie.jsx)("div",{className:"dataviews-view-grid__media-actions",children:(0,ie.jsx)(Wo,{item:l,actions:c,isCompact:!0})}),A&&(0,ie.jsx)("div",{className:"dataviews-view-grid__title",children:(0,ie.jsx)(Zr,{item:l,isItemClickable:i,onClickItem:n,renderItemLink:a,className:"dataviews-view-grid__title-field dataviews-title-field",...O,title:p?.getValueFormatted({item:l,field:p})||void 0,children:T})}),(0,ie.jsxs)(L,{direction:"column",gap:"xs",children:[R&&d?.render&&(0,ie.jsx)(d.render,{item:l,field:d}),!!v?.length&&(0,ie.jsx)(L,{direction:"row",className:"dataviews-view-grid__badge-fields",gap:"sm",wrap:"wrap",align:"top",justify:"flex-start",children:v.map(x=>(0,ie.jsx)(t0,{className:"dataviews-view-grid__field-value",children:(0,ie.jsx)(x.render,{item:l,field:x})},x.id))}),!!m?.length&&(0,ie.jsx)(L,{direction:"column",className:"dataviews-view-grid__fields",gap:"xs",children:m.map(x=>(0,ie.jsx)(Ot.Flex,{className:"dataviews-view-grid__field",gap:1,justify:"flex-start",expanded:!0,style:{height:"auto"},direction:"row",children:(0,ie.jsxs)(ie.Fragment,{children:[(0,ie.jsx)(Ot.Tooltip,{text:x.label,children:(0,ie.jsx)(Ot.FlexItem,{className:"dataviews-view-grid__field-name",children:x.header})}),(0,ie.jsx)(Ot.FlexItem,{className:"dataviews-view-grid__field-value",style:{maxHeight:"none"},children:(0,ie.jsx)(x.render,{item:l,field:x})})]})},x.id))})]})]})});function Cu({data:e,isInfiniteScroll:t,className:r,inert:o,isLoading:n,view:i,fields:a,selection:s,onChangeSelection:l,onClickItem:c,isItemClickable:f,renderItemLink:p,getItemId:d,actions:m}){let{paginationInfo:v,resizeObserverRef:_}=(0,Pa.useContext)(q),h=Nf(),b=_a(m,e),y=a.find(N=>N.id===i?.titleField),A=a.find(N=>N.id===i?.mediaField),V=a.find(N=>N.id===i?.descriptionField),R=i.fields??[],{regularFields:M,badgeFields:k}=R.reduce((N,g)=>{let E=a.find(w=>w.id===g);if(!E)return N;let T=i.layout?.badgeFields?.includes(g)?"badgeFields":"regularFields";return N[T].push(E),N},{regularFields:[],badgeFields:[]}),S="900px",I=Math.ceil(e.length/h);return(0,ie.jsx)(Ot.Composite,{role:t?"feed":"grid",className:Y("dataviews-view-grid",r),focusWrap:!0,"aria-busy":n,"aria-rowcount":t?void 0:I,ref:_,inert:o,children:r0(e,h).map((N,g)=>(0,ie.jsx)(Ot.Composite.Row,{render:(0,ie.jsx)("div",{role:"row","aria-rowindex":g+1,"aria-label":(0,Bn.sprintf)((0,Bn.__)("Row %d"),g+1),className:"dataviews-view-grid__row",style:{gridTemplateColumns:`repeat( ${h}, minmax(0, 1fr) )`}}),children:N.map((E,T)=>{let w=g*h+T;return(0,ie.jsx)(Ot.Composite.Item,{render:O=>(0,ie.jsx)(o0,{...O,role:t?"article":"gridcell","aria-setsize":t?v.totalItems:void 0,"aria-posinset":t?w+1:void 0,view:i,selection:s,onChangeSelection:l,onClickItem:c,isItemClickable:f,renderItemLink:p,getItemId:d,item:E,actions:m,mediaField:A,titleField:y,descriptionField:V,regularFields:M,badgeFields:k,hasBulkActions:b,config:{sizes:S}})},d(E))})},g))})}var At=u(P(),1);function n0({actions:e,data:t,fields:r,getItemId:o,isLoading:n,onChangeSelection:i,onClickItem:a,isItemClickable:s,renderItemLink:l,selection:c,view:f,className:p,empty:d}){let m=Qt(!!n),v=!!t?.length,_=f.groupBy?.field?r.find(A=>A.id===f.groupBy?.field):null,h=_?kt(t,_):null,b=f.infiniteScrollEnabled&&!h;if(!v)return(0,At.jsx)("div",{className:Y("dataviews-no-results",{"is-refreshing":m}),children:d});let y={className:Y(p,{"is-refreshing":!b&&m}),inert:!b&&n?"true":void 0,isLoading:n,view:f,fields:r,selection:c,onChangeSelection:i,onClickItem:a,isItemClickable:s,renderItemLink:l,getItemId:o,actions:e};return(0,At.jsxs)(At.Fragment,{children:[v&&_&&h&&(0,At.jsx)(L,{direction:"column",gap:"lg",children:Array.from(h.entries()).map(([A,V])=>(0,At.jsxs)(L,{direction:"column",gap:"sm",children:[(0,At.jsx)("h3",{className:"dataviews-view-grid__group-header",children:f.groupBy?.showLabel===!1?A:(0,Ra.sprintf)((0,Ra.__)("%1$s: %2$s"),_.label,A)}),(0,At.jsx)(Cu,{...y,data:V,isInfiniteScroll:!1})]},A))}),!h&&(0,At.jsx)(Cu,{...y,data:t,isInfiniteScroll:!!b}),b&&n&&(0,At.jsx)("p",{className:"dataviews-loading-more",children:(0,At.jsx)(Mf.Spinner,{})})]})}var Ff=n0;var Va=u(bt(),1),We=u(G(),1),Le=u(z(),1),jn=u(j(),1);var Au=u(qt(),1);var U=u(P(),1),{Menu:Eu}=Z(We.privateApis);function Tu(e){return`${e}-item-wrapper`}function i0(e,t){return`${e}-primary-action-${t}`}function Ou(e){return`${e}-dropdown`}function a0({idPrefix:e,primaryAction:t,item:r}){let o=(0,Au.useRegistry)(),[n,i]=(0,Le.useState)(!1),a=i0(e,t.id),s=typeof t.label=="string"?t.label:t.label([r]);return"RenderModal"in t?(0,U.jsx)("div",{role:"gridcell",children:(0,U.jsx)(We.Composite.Item,{id:a,render:(0,U.jsx)(We.Button,{disabled:!!t.disabled,accessibleWhenDisabled:!0,text:s,size:"small",onClick:()=>i(!0)}),children:n&&(0,U.jsx)(Ln,{action:t,items:[r],closeModal:()=>i(!1)})})},t.id):(0,U.jsx)("div",{role:"gridcell",children:(0,U.jsx)(We.Composite.Item,{id:a,render:(0,U.jsx)(We.Button,{disabled:!!t.disabled,accessibleWhenDisabled:!0,size:"small",onClick:()=>{t.callback([r],{registry:o})},children:s})})},t.id)}function Lf({view:e,actions:t,idPrefix:r,isSelected:o,item:n,titleField:i,mediaField:a,descriptionField:s,onSelect:l,otherFields:c,onDropdownTriggerKeyDown:f,posinset:p}){let{showTitle:d=!0,showMedia:m=!0,showDescription:v=!0,infiniteScrollEnabled:_}=e,h=(0,Le.useRef)(null),b=`${r}-label`,y=`${r}-description`,A=(0,Au.useRegistry)(),[V,R]=(0,Le.useState)(!1),[M,k]=(0,Le.useState)(null),S=({type:x})=>{R(x==="mouseenter")},{paginationInfo:I}=(0,Le.useContext)(q);(0,Le.useEffect)(()=>{o&&h.current?.scrollIntoView({behavior:"auto",block:"nearest",inline:"nearest"})},[o]);let{primaryAction:N,eligibleActions:g}=(0,Le.useMemo)(()=>{let x=t.filter(F=>!F.isEligible||F.isEligible(n));return{primaryAction:x.filter(F=>F.isPrimary)[0],eligibleActions:x}},[t,n]),E=N&&t.length===1,T=m&&a?.render?(0,U.jsx)("div",{className:"dataviews-view-list__media-wrapper",children:(0,U.jsx)(a.render,{item:n,field:a,config:{sizes:"52px"}})}):null,w=d&&i?.render?(0,U.jsx)(i.render,{item:n,field:i}):null,O=g?.length>0&&(0,U.jsxs)(L,{direction:"row",gap:"md",className:"dataviews-view-list__item-actions",children:[N&&(0,U.jsx)(a0,{idPrefix:r,primaryAction:N,item:n}),!E&&(0,U.jsxs)("div",{role:"gridcell",children:[(0,U.jsxs)(Eu,{placement:"bottom-end",children:[(0,U.jsx)(Eu.TriggerButton,{render:(0,U.jsx)(We.Composite.Item,{id:Ou(r),render:(0,U.jsx)(We.Button,{size:"small",icon:Nn,label:(0,jn.__)("Actions"),accessibleWhenDisabled:!0,disabled:!t.length,onKeyDown:f})})}),(0,U.jsx)(Eu.Popover,{children:(0,U.jsx)(bu,{actions:g,item:n,registry:A,setActiveModalAction:k})})]}),!!M&&(0,U.jsx)(Ln,{action:M,items:[n],closeModal:()=>k(null)})]})]});return(0,U.jsx)(We.Composite.Row,{ref:h,render:(0,U.jsx)("div",{"aria-posinset":p,"aria-setsize":_?I.totalItems:void 0}),role:_?"article":"row",className:Y({"is-selected":o,"is-hovered":V}),onMouseEnter:S,onMouseLeave:S,children:(0,U.jsxs)(L,{direction:"row",className:"dataviews-view-list__item-wrapper",children:[(0,U.jsx)("div",{role:"gridcell",children:(0,U.jsx)(We.Composite.Item,{id:Tu(r),"aria-pressed":o,"aria-labelledby":b,"aria-describedby":y,className:"dataviews-view-list__item",onClick:()=>l(n)})}),(0,U.jsxs)(L,{direction:"row",gap:"md",justify:"start",align:"flex-start",style:{flex:1,minWidth:0},children:[T,(0,U.jsxs)(L,{direction:"column",gap:"xs",className:"dataviews-view-list__field-wrapper",children:[(0,U.jsxs)(L,{direction:"row",align:"center",children:[(0,U.jsx)("div",{className:"dataviews-title-field dataviews-view-list__title-field",id:b,children:w}),O]}),v&&s?.render&&(0,U.jsx)("div",{className:"dataviews-view-list__field",children:(0,U.jsx)(s.render,{item:n,field:s})}),(0,U.jsx)("div",{className:"dataviews-view-list__fields",id:y,children:c.map(x=>(0,U.jsxs)("div",{className:"dataviews-view-list__field",children:[(0,U.jsx)(We.VisuallyHidden,{as:"span",className:"dataviews-view-list__field-label",children:x.label}),(0,U.jsx)("span",{className:"dataviews-view-list__field-value",children:(0,U.jsx)(x.render,{item:n,field:x})})]},x.id))})]})]})]})})}function s0(e){return!!e}function Iu(e){let{actions:t,data:r,fields:o,getItemId:n,isLoading:i,onChangeSelection:a,selection:s,view:l,className:c,empty:f}=e,p=(0,Va.useInstanceId)(Iu,"view-list"),d=Qt(!!i),m=r?.findLast(x=>s.includes(n(x))),v=o.find(x=>x.id===l.titleField),_=o.find(x=>x.id===l.mediaField),h=o.find(x=>x.id===l.descriptionField),b=(l?.fields??[]).map(x=>o.find(C=>x===C.id)).filter(s0),y=x=>a([n(x)]),A=(0,Le.useCallback)(x=>`${p}-${n(x)}`,[p,n]),V=(0,Le.useCallback)((x,C)=>C.startsWith(A(x)),[A]),[R,M]=(0,Le.useState)(void 0);(0,Le.useEffect)(()=>{m&&M(Tu(A(m)))},[m,A]);let k=r.findIndex(x=>V(x,R??"")),S=(0,Va.usePrevious)(k),I=k!==-1,N=(0,Le.useCallback)((x,C)=>{let F=Math.min(r.length-1,Math.max(0,x));if(!r[F])return;let D=A(r[F]),W=C(D);M(W),document.getElementById(W)?.focus()},[r,A]);(0,Le.useEffect)(()=>{!I&&(S!==void 0&&S!==-1)&&N(S,Tu)},[I,N,S]);let g=(0,Le.useCallback)(x=>{x.key==="ArrowDown"&&(x.preventDefault(),N(k+1,Ou)),x.key==="ArrowUp"&&(x.preventDefault(),N(k-1,Ou))},[N,k]),E=!!r?.length,T=l.groupBy?.field?o.find(x=>x.id===l.groupBy?.field):null,w=E&&T?kt(r,T):null,O=l.infiniteScrollEnabled&&!w;return E?E&&T&&w?(0,U.jsx)(We.Composite,{id:`${p}`,render:(0,U.jsx)("div",{}),className:"dataviews-view-list__group",role:"grid",activeId:R,setActiveId:M,children:(0,U.jsx)(L,{direction:"column",gap:"lg",className:Y("dataviews-view-list",c),children:Array.from(w.entries()).map(([x,C])=>(0,U.jsxs)(L,{direction:"column",gap:"sm",children:[(0,U.jsx)("h3",{className:"dataviews-view-list__group-header",children:l.groupBy?.showLabel===!1?x:(0,jn.sprintf)((0,jn.__)("%1$s: %2$s"),T.label,x)}),C.map(F=>{let D=A(F);return(0,U.jsx)(Lf,{view:l,idPrefix:D,actions:t,item:F,isSelected:F===m,onSelect:y,mediaField:_,titleField:v,descriptionField:h,otherFields:b,onDropdownTriggerKeyDown:g},D)})]},x))})}):(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(We.Composite,{id:p,render:(0,U.jsx)("div",{}),className:Y("dataviews-view-list",c,{[`has-${l.layout?.density}-density`]:l.layout?.density&&["compact","comfortable"].includes(l.layout.density),"is-refreshing":!O&&d}),role:l.infiniteScrollEnabled?"feed":"grid",activeId:R,setActiveId:M,inert:!O&&i?"true":void 0,children:r.map((x,C)=>{let F=A(x);return(0,U.jsx)(Lf,{view:l,idPrefix:F,actions:t,item:x,isSelected:x===m,onSelect:y,mediaField:_,titleField:v,descriptionField:h,otherFields:b,onDropdownTriggerKeyDown:g,posinset:l.infiniteScrollEnabled?C+1:void 0},F)})}),O&&i&&(0,U.jsx)("p",{className:"dataviews-loading-more",children:(0,U.jsx)(We.Spinner,{})})]}):(0,U.jsx)("div",{className:Y("dataviews-no-results",{"is-refreshing":d}),children:f})}var Yf=u(G(),1);var Na=u(j(),1),Bf=u(z(),1);var Yo=u(P(),1);function jf({groupName:e,groupData:t,groupField:r,showLabel:o=!0,children:n}){let i=o?(0,Bf.createInterpolateElement)((0,Na.sprintf)((0,Na.__)("%s: "),r.label).trim(),{groupName:(0,Yo.jsx)(r.render,{item:t[0],field:r})}):(0,Yo.jsx)(r.render,{item:t[0],field:r});return(0,Yo.jsxs)(L,{direction:"column",className:"dataviews-view-activity__group",children:[(0,Yo.jsx)("h3",{className:"dataviews-view-activity__group-header",children:i}),n]},e)}var Hf=u(G(),1),wo=u(z(),1),zf=u(qt(),1),Wf=u(bt(),1);var De=u(P(),1);function l0(e){let{view:t,actions:r,item:o,titleField:n,mediaField:i,descriptionField:a,otherFields:s,posinset:l,onClickItem:c,renderItemLink:f,isItemClickable:p}=e,{showTitle:d=!0,showMedia:m=!0,showDescription:v=!0,infiniteScrollEnabled:_}=t,h=(0,wo.useRef)(null),b=(0,zf.useRegistry)(),{paginationInfo:y}=(0,wo.useContext)(q),{primaryActions:A,eligibleActions:V}=(0,wo.useMemo)(()=>{let g=r.filter(T=>!T.isEligible||T.isEligible(o));return{primaryActions:g.filter(T=>T.isPrimary),eligibleActions:g}},[r,o]),R=(0,Wf.useViewportMatch)("medium","<"),M=t.layout?.density??"balanced",k=m&&M!=="compact"&&i?.render?(0,De.jsx)(i.render,{item:o,field:i,config:{sizes:M==="comfortable"?"32px":"24px"}}):null,S=(0,De.jsx)("div",{className:"dataviews-view-activity__item-type-icon",children:k||(0,De.jsx)("span",{className:"dataviews-view-activity__item-bullet","aria-hidden":"true"})}),I=d&&n?.render?(0,De.jsx)(n.render,{item:o,field:n}):null,N=(0,wo.useMemo)(()=>M==="comfortable"?"md":"sm",[M]);return(0,De.jsx)("div",{ref:h,role:_?"article":void 0,"aria-posinset":l,"aria-setsize":_?y.totalItems:void 0,className:Y("dataviews-view-activity__item",M==="compact"&&"is-compact",M==="balanced"&&"is-balanced",M==="comfortable"&&"is-comfortable"),children:(0,De.jsxs)(L,{direction:"row",gap:"lg",justify:"start",align:"flex-start",children:[(0,De.jsx)(L,{direction:"column",gap:"xs",align:"center",className:"dataviews-view-activity__item-type",children:S}),(0,De.jsxs)(L,{direction:"column",gap:N,align:"flex-start",className:"dataviews-view-activity__item-content",children:[I&&(0,De.jsx)(Zr,{item:o,isItemClickable:p,onClickItem:c,renderItemLink:f,className:"dataviews-view-activity__item-title",children:I}),v&&a&&(0,De.jsx)("div",{className:"dataviews-view-activity__item-description",children:(0,De.jsx)(a.render,{item:o,field:a})}),(0,De.jsx)("div",{className:"dataviews-view-activity__item-fields",children:s.map(g=>(0,De.jsxs)("div",{className:"dataviews-view-activity__item-field",children:[(0,De.jsx)(Hf.VisuallyHidden,{as:"span",className:"dataviews-view-activity__item-field-label",children:g.label}),(0,De.jsx)("span",{className:"dataviews-view-activity__item-field-value",children:(0,De.jsx)(g.render,{item:o,field:g})})]},g.id))}),!!A?.length&&(0,De.jsx)(xu,{item:o,actions:A,registry:b,buttonVariant:"secondary"})]}),(A.length0)&&(0,De.jsx)("div",{className:"dataviews-view-activity__item-actions",children:(0,De.jsx)(Wo,{item:o,actions:V,isCompact:!0})})]})})}var Gf=l0;var Uf=u(ue(),1);function u0(e){return!!e}function Pu(e){let{data:t,fields:r,getItemId:o,view:n}=e,i=r.find(c=>c.id===n.titleField),a=r.find(c=>c.id===n.mediaField),s=r.find(c=>c.id===n.descriptionField),l=(n?.fields??[]).map(c=>r.find(f=>c===f.id)).filter(u0);return t.map((c,f)=>(0,Uf.createElement)(Gf,{...e,key:o(c),item:c,mediaField:a,titleField:i,descriptionField:s,otherFields:l,posinset:n.infiniteScrollEnabled?f+1:void 0}))}var It=u(P(),1);function qf(e){let{empty:t,data:r,fields:o,isLoading:n,view:i,className:a}=e,s=Qt(!!n),l=!!r?.length,c=i.groupBy?.field?o.find(_=>_.id===i.groupBy?.field):null,f=l&&c?kt(r,c):null,p=i.infiniteScrollEnabled&&!f;if(!l)return(0,It.jsx)("div",{className:Y("dataviews-no-results",{"is-refreshing":s}),children:t});let d=!p&&!!n,m=Y("dataviews-view-activity",a,{"is-refreshing":!p&&s}),v=f?Array.from(f.entries()):[];return l&&c&&f?(0,It.jsx)(L,{direction:"column",gap:"sm",className:m,inert:d?"true":void 0,children:v.map(([_,h])=>(0,It.jsx)(jf,{groupName:_,groupData:h,groupField:c,showLabel:i.groupBy?.showLabel!==!1,children:(0,It.jsx)(Pu,{...e,data:h})},_))}):(0,It.jsxs)(It.Fragment,{children:[(0,It.jsx)("div",{className:m,role:i.infiniteScrollEnabled?"feed":void 0,inert:d?"true":void 0,children:(0,It.jsx)(Pu,{...e})}),p&&n&&(0,It.jsx)("p",{className:"dataviews-loading-more",children:(0,It.jsx)(Yf.Spinner,{})})]})}var yt=u(G(),1),Wn=u(j(),1),Jf=u(bt(),1),em=u(z(),1);var Da=u(G(),1),Kf=u(qt(),1),yo=u(z(),1);var Vu=u(j(),1);var Hn=u(G(),1),qo=u(z(),1),Pt=u(j(),1);var br=u(P(),1);function Ru(){let{view:e,onChangeView:t,paginationInfo:{totalItems:r=0,totalPages:o}}=(0,qo.useContext)(q);if(!r||!o||e.infiniteScrollEnabled)return null;let n=e.page??1,i=Array.from(Array(o)).map((a,s)=>{let l=s+1;return{value:l.toString(),label:l.toString(),"aria-label":n===l?(0,Pt.sprintf)((0,Pt.__)("Page %1$d of %2$d"),n,o):l.toString()}});return!!r&&o!==1&&(0,br.jsxs)(L,{direction:"row",className:"dataviews-pagination",justify:"end",align:"center",gap:"xl",children:[(0,br.jsx)(L,{direction:"row",justify:"flex-start",align:"center",gap:"xs",className:"dataviews-pagination__page-select",children:(0,qo.createInterpolateElement)((0,Pt.sprintf)((0,Pt._x)("
Page
%1$s
of %2$d
","paging"),"",o),{div:(0,br.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,br.jsx)(Hn.SelectControl,{"aria-label":(0,Pt.__)("Current page"),value:n.toString(),options:i,onChange:a=>{t({...e,page:+a})},size:"small",variant:"minimal"})})}),(0,br.jsxs)(L,{direction:"row",gap:"xs",align:"center",children:[(0,br.jsx)(Hn.Button,{onClick:()=>t({...e,page:n-1}),disabled:n===1,accessibleWhenDisabled:!0,label:(0,Pt.__)("Previous page"),icon:(0,Pt.isRTL)()?na:aa,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,br.jsx)(Hn.Button,{onClick:()=>t({...e,page:n+1}),disabled:n>=o,accessibleWhenDisabled:!0,label:(0,Pt.__)("Next page"),icon:(0,Pt.isRTL)()?aa:na,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})}var $f=(0,qo.memo)(Ru);var Mt=u(P(),1),c0=[];function zn(e){return(0,yo.useMemo)(()=>e?.every(t=>t.supportsBulk),[e])}function d0({selection:e,selectedItems:t,onChangeSelection:r,data:o,getItemId:n}){let i=t.length===o.length;return(0,Mt.jsx)(Da.CheckboxControl,{className:"dataviews-view-table-selection-checkbox",checked:i,indeterminate:!i&&!!t.length,onChange:()=>{if(i)r(e.filter(a=>!o.some(s=>a===n(s))));else{let a=new Set([...e,...o.map(s=>n(s))]);r(Array.from(a))}},"aria-label":i?(0,Vu.__)("Deselect all"):(0,Vu.__)("Select all")})}function f0({actions:e,items:t,selection:r}){let o=(0,Kf.useRegistry)(),[n,i]=(0,yo.useState)(null);return(0,Mt.jsx)(L,{direction:"row",gap:"xs",children:e.map(a=>{if(!("callback"in a))return null;let{id:s,label:l,icon:c,isPrimary:f,callback:p}=a,d=typeof l=="string"?l:l(t),m=f?"primary":"tertiary",v=s===n;return(0,Mt.jsx)(Da.Button,{accessibleWhenDisabled:!0,icon:c,disabled:v||!r?.length,isBusy:v,onClick:async()=>{i(s),await p(t,{registry:o}),i(null)},size:"compact",variant:m,children:d},s)})})}function Nu(){let{data:e,selection:t,onChangeSelection:r,getItemId:o,actions:n=c0,paginationInfo:i}=(0,yo.useContext)(q),a=zn(n),s=_f(t.length,e.length,i.totalItems),l=(0,yo.useMemo)(()=>e.filter(c=>t.includes(o(c))),[t,o,e]);return(0,Mt.jsxs)(L,{direction:"row",justify:"space-between",align:"center",className:"dataviews-footer",gap:"sm",children:[(0,Mt.jsxs)(L,{direction:"row",className:"dataviews-picker-footer__bulk-selection",gap:"md",align:"center",children:[a&&(0,Mt.jsx)(d0,{selection:t,selectedItems:l,onChangeSelection:r,data:e,getItemId:o}),(0,Mt.jsx)("span",{className:"dataviews-bulk-actions-footer__item-count",children:s})]}),(0,Mt.jsx)($f,{}),!!n?.length&&(0,Mt.jsx)("div",{className:"dataviews-picker-footer__actions",children:(0,Mt.jsx)(f0,{actions:n,items:l,selection:t})})]})}var Zf=u(z(),1);var Xf=u(P(),1),Du=(0,Zf.forwardRef)(({className:e,previewSize:t,...r},o)=>(0,Xf.jsx)("div",{ref:o,className:Y("dataviews-view-grid-items",e),style:{gridTemplateColumns:t&&`repeat(auto-fill, minmax(${t}px, 1fr))`},...r}));var X=u(P(),1),{Badge:m0}=Z(yt.privateApis);function Qf({view:e,multiselect:t,selection:r,onChangeSelection:o,getItemId:n,item:i,mediaField:a,titleField:s,descriptionField:l,regularFields:c,badgeFields:f,config:p,posinset:d,setsize:m}){let{showTitle:v=!0,showMedia:_=!0,showDescription:h=!0}=e,b=n(i),y=r.includes(b),A=a?.render?(0,X.jsx)(a.render,{item:i,field:a,config:p}):null,V=v&&s?.render?(0,X.jsx)(s.render,{item:i,field:s}):null;return(0,X.jsxs)(yt.Composite.Item,{"aria-label":s?s.getValue({item:i})||(0,Wn.__)("(no title)"):void 0,render:({children:R,...M})=>(0,X.jsx)(L,{direction:"column",children:R,...M}),role:"option","aria-posinset":d,"aria-setsize":m,className:Y("dataviews-view-picker-grid__card",{"is-selected":y}),"aria-selected":y,onClick:()=>{if(y)o(r.filter(R=>b!==R));else{let R=t?[...r,b]:[b];o(R)}},children:[_&&A&&(0,X.jsx)("div",{className:"dataviews-view-picker-grid__media",children:A}),_&&A&&(0,X.jsx)(qr,{item:i,selection:r,onChangeSelection:o,getItemId:n,titleField:s,disabled:!1,"aria-hidden":!0,tabIndex:-1}),v&&(0,X.jsx)(L,{direction:"row",justify:"space-between",className:"dataviews-view-picker-grid__title-actions",children:(0,X.jsx)("div",{className:"dataviews-view-picker-grid__title-field dataviews-title-field",children:V})}),(0,X.jsxs)(L,{direction:"column",gap:"xs",children:[h&&l?.render&&(0,X.jsx)(l.render,{item:i,field:l}),!!f?.length&&(0,X.jsx)(L,{direction:"row",className:"dataviews-view-picker-grid__badge-fields",gap:"sm",wrap:"wrap",align:"top",justify:"flex-start",children:f.map(R=>(0,X.jsx)(m0,{className:"dataviews-view-picker-grid__field-value",children:(0,X.jsx)(R.render,{item:i,field:R})},R.id))}),!!c?.length&&(0,X.jsx)(L,{direction:"column",className:"dataviews-view-picker-grid__fields",gap:"xs",children:c.map(R=>(0,X.jsx)(yt.Flex,{className:"dataviews-view-picker-grid__field",gap:1,justify:"flex-start",expanded:!0,style:{height:"auto"},direction:"row",children:(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(yt.FlexItem,{className:"dataviews-view-picker-grid__field-name",children:R.header}),(0,X.jsx)(yt.FlexItem,{className:"dataviews-view-picker-grid__field-value",style:{maxHeight:"none"},children:(0,X.jsx)(R.render,{item:i,field:R})})]})},R.id))})]})]},b)}function tm({groupName:e,groupField:t,showLabel:r=!0,children:o}){let n=(0,Jf.useInstanceId)(tm,"dataviews-view-picker-grid-group__header");return(0,X.jsxs)(L,{direction:"column",gap:"sm",role:"group","aria-labelledby":n,children:[(0,X.jsx)("h3",{className:"dataviews-view-picker-grid-group__header",id:n,children:r?(0,Wn.sprintf)((0,Wn.__)("%1$s: %2$s"),t.label,e):e}),o]},e)}function p0({actions:e,data:t,fields:r,getItemId:o,isLoading:n,onChangeSelection:i,selection:a,view:s,className:l,empty:c}){let{resizeObserverRef:f,paginationInfo:p,itemListLabel:d}=(0,em.useContext)(q),m=r.find(T=>T.id===s?.titleField),v=r.find(T=>T.id===s?.mediaField),_=r.find(T=>T.id===s?.descriptionField),h=s.fields??[],{regularFields:b,badgeFields:y}=h.reduce((T,w)=>{let O=r.find(C=>C.id===w);if(!O)return T;let x=s.layout?.badgeFields?.includes(w)?"badgeFields":"regularFields";return T[x].push(O),T},{regularFields:[],badgeFields:[]}),A=!!t?.length,V=s.layout?.previewSize,R=zn(e),M="900px",k=s.groupBy?.field?r.find(T=>T.id===s.groupBy?.field):null,S=k?kt(t,k):null,I=s.infiniteScrollEnabled&&!S,N=s?.page??1,g=s?.perPage??0,E=I?p?.totalItems:void 0;return(0,X.jsxs)(X.Fragment,{children:[A&&k&&S&&(0,X.jsx)(yt.Composite,{virtualFocus:!0,orientation:"horizontal",role:"listbox","aria-multiselectable":R,className:Y("dataviews-view-picker-grid",l),"aria-label":d,render:({children:T,...w})=>(0,X.jsx)(L,{direction:"column",gap:"lg",children:T,...w}),children:Array.from(S.entries()).map(([T,w])=>(0,X.jsx)(tm,{groupName:T,groupField:k,showLabel:s.groupBy?.showLabel!==!1,children:(0,X.jsx)(Du,{previewSize:V,style:{gridTemplateColumns:V&&`repeat(auto-fill, minmax(${V}px, 1fr))`},"aria-busy":n,ref:f,children:w.map(O=>{let x=(N-1)*g+t.indexOf(O)+1;return(0,X.jsx)(Qf,{view:s,multiselect:R,selection:a,onChangeSelection:i,getItemId:o,item:O,mediaField:v,titleField:m,descriptionField:_,regularFields:b,badgeFields:y,config:{sizes:M},posinset:x,setsize:E},o(O))})})},T))}),A&&!S&&(0,X.jsx)(yt.Composite,{render:(0,X.jsx)(Du,{className:Y("dataviews-view-picker-grid",l),previewSize:V,"aria-busy":n,ref:f}),virtualFocus:!0,orientation:"horizontal",role:"listbox","aria-multiselectable":R,"aria-label":d,children:t.map((T,w)=>{let O=I?w+1:void 0;return I||(O=(N-1)*g+w+1),(0,X.jsx)(Qf,{view:s,multiselect:R,selection:a,onChangeSelection:i,getItemId:o,item:T,mediaField:v,titleField:m,descriptionField:_,regularFields:b,badgeFields:y,config:{sizes:M},posinset:O,setsize:E},o(T))})}),!A&&(0,X.jsx)("div",{className:Y({"dataviews-loading":n,"dataviews-no-results":!n}),children:n?(0,X.jsx)("p",{children:(0,X.jsx)(yt.Spinner,{})}):c}),A&&n&&(0,X.jsx)("p",{className:"dataviews-loading-more",children:(0,X.jsx)(yt.Spinner,{})})]})}var rm=p0;var ka=u(j(),1),_o=u(G(),1),Ft=u(z(),1);var ee=u(P(),1);function v0({item:e,fields:t,column:r,align:o}){let n=t.find(a=>a.id===r);if(!n)return null;let i=Y("dataviews-view-table__cell-content-wrapper",{"dataviews-view-table__cell-align-end":o==="end","dataviews-view-table__cell-align-center":o==="center"});return(0,ee.jsx)("div",{className:i,children:(0,ee.jsx)(n.render,{item:e,field:n})})}function om({item:e,fields:t,id:r,view:o,titleField:n,mediaField:i,descriptionField:a,selection:s,getItemId:l,onChangeSelection:c,multiselect:f,posinset:p}){let{paginationInfo:d}=(0,Ft.useContext)(q),m=s.includes(r),[v,_]=(0,Ft.useState)(!1),{showTitle:h=!0,showMedia:b=!0,showDescription:y=!0,infiniteScrollEnabled:A}=o,V=()=>{_(!0)},R=()=>{_(!1)},M=o.fields??[],k=n&&h||i&&b||a&&y;return(0,ee.jsxs)(_o.Composite.Item,{render:({children:S,...I})=>(0,ee.jsx)("tr",{className:Y("dataviews-view-table__row",{"is-selected":m,"is-hovered":v}),onMouseEnter:V,onMouseLeave:R,children:S,...I}),"aria-selected":m,"aria-setsize":d.totalItems||void 0,"aria-posinset":p,role:A?"article":"option",onClick:()=>{if(m)c(s.filter(S=>r!==S));else{let S=f?[...s,r]:[r];c(S)}},children:[(0,ee.jsx)("td",{className:"dataviews-view-table__checkbox-column",role:"presentation",children:(0,ee.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper",children:(0,ee.jsx)(qr,{item:e,selection:s,onChangeSelection:c,getItemId:l,titleField:n,disabled:!1,"aria-hidden":!0,tabIndex:-1})})}),k&&(0,ee.jsx)("td",{role:"presentation",children:(0,ee.jsx)(Ea,{item:e,titleField:h?n:void 0,mediaField:b?i:void 0,descriptionField:y?a:void 0,isItemClickable:()=>!1})}),M.map(S=>{let{width:I,maxWidth:N,minWidth:g,align:E}=o.layout?.styles?.[S]??{};return(0,ee.jsx)("td",{style:{width:I,maxWidth:N,minWidth:g},role:"presentation",children:(0,ee.jsx)(v0,{fields:t,item:e,column:S,align:E})},S)})]},r)}function h0({actions:e,data:t,fields:r,getItemId:o,isLoading:n=!1,onChangeView:i,onChangeSelection:a,selection:s,setOpenedFilter:l,view:c,className:f,empty:p}){let d=(0,Ft.useRef)(new Map),m=(0,Ft.useRef)(void 0),[v,_]=(0,Ft.useState)(),h=zn(e)??!1;(0,Ft.useEffect)(()=>{m.current&&(m.current.focus(),m.current=void 0)});let b=(0,Ft.useId)();if(v){m.current=v,_(void 0);return}let y=x=>{let C=d.current.get(x.id),F=C?d.current.get(C.fallback):void 0;_(F?.node)},A=!!t?.length,V=r.find(x=>x.id===c.titleField),R=r.find(x=>x.id===c.mediaField),M=r.find(x=>x.id===c.descriptionField),k=c.groupBy?.field?r.find(x=>x.id===c.groupBy?.field):null,S=k?kt(t,k):null,{showTitle:I=!0,showMedia:N=!0,showDescription:g=!0}=c,E=V&&I||R&&N||M&&g,T=c.fields??[],w=(x,C)=>F=>{F?d.current.set(x,{node:F,fallback:T[C>0?C-1:1]}):d.current.delete(x)},O=c.infiniteScrollEnabled&&!S;return(0,ee.jsxs)(ee.Fragment,{children:[(0,ee.jsxs)("table",{className:Y("dataviews-view-table","dataviews-view-picker-table",f,{[`has-${c.layout?.density}-density`]:c.layout?.density&&["compact","comfortable"].includes(c.layout.density)}),"aria-busy":n,"aria-describedby":b,role:O?"feed":"listbox",children:[(0,ee.jsx)("thead",{role:"presentation",children:(0,ee.jsxs)("tr",{className:"dataviews-view-table__row",role:"presentation",children:[(0,ee.jsx)("th",{className:"dataviews-view-table__checkbox-column",children:h&&(0,ee.jsx)(Sa,{selection:s,onChangeSelection:a,data:t,actions:e,getItemId:o})}),E&&(0,ee.jsx)("th",{children:V&&(0,ee.jsx)(Go,{ref:w(V.id,0),fieldId:V.id,view:c,fields:r,onChangeView:i,onHide:y,setOpenedFilter:l,canMove:!1})}),T.map((x,C)=>{let{width:F,maxWidth:D,minWidth:W,align:Q}=c.layout?.styles?.[x]??{};return(0,ee.jsx)("th",{style:{width:F,maxWidth:D,minWidth:W,textAlign:Q},"aria-sort":c.sort?.direction&&c.sort?.field===x?ha[c.sort.direction]:void 0,scope:"col",children:(0,ee.jsx)(Go,{ref:w(x,C),fieldId:x,view:c,fields:r,onChangeView:i,onHide:y,setOpenedFilter:l,canMove:c.layout?.enableMoving??!0})},x)})]})}),A&&k&&S?Array.from(S.entries()).map(([x,C])=>(0,ee.jsxs)(_o.Composite,{virtualFocus:!0,orientation:"vertical",render:(0,ee.jsx)("tbody",{role:"group"}),children:[(0,ee.jsx)("tr",{className:"dataviews-view-table__group-header-row",role:"presentation",children:(0,ee.jsx)("td",{colSpan:T.length+(E?1:0)+1,className:"dataviews-view-table__group-header-cell",role:"presentation",children:c.groupBy?.showLabel===!1?x:(0,ka.sprintf)((0,ka.__)("%1$s: %2$s"),k.label,x)})}),C.map((F,D)=>(0,ee.jsx)(om,{item:F,fields:r,id:o(F)||D.toString(),view:c,titleField:V,mediaField:R,descriptionField:M,selection:s,getItemId:o,onChangeSelection:a,multiselect:h},o(F)))]},`group-${x}`)):(0,ee.jsx)(_o.Composite,{render:(0,ee.jsx)("tbody",{role:"presentation"}),virtualFocus:!0,orientation:"vertical",children:A&&t.map((x,C)=>(0,ee.jsx)(om,{item:x,fields:r,id:o(x)||C.toString(),view:c,titleField:V,mediaField:R,descriptionField:M,selection:s,getItemId:o,onChangeSelection:a,multiselect:h,posinset:C+1},o(x)))})]}),(0,ee.jsxs)("div",{className:Y({"dataviews-loading":n,"dataviews-no-results":!A&&!n}),id:b,children:[!A&&(n?(0,ee.jsx)("p",{children:(0,ee.jsx)(_o.Spinner,{})}):p),A&&n&&(0,ee.jsx)("p",{className:"dataviews-loading-more",children:(0,ee.jsx)(_o.Spinner,{})})]})]})}var nm=h0;var im=u(G(),1),am=u(j(),1),sm=u(z(),1);var lm=u(P(),1),g0=[{value:120,breakpoint:1},{value:170,breakpoint:1},{value:230,breakpoint:1},{value:290,breakpoint:1112},{value:350,breakpoint:1636},{value:430,breakpoint:588}];function ku(){let e=(0,sm.useContext)(q),t=e.view,r=g0.filter(a=>e.containerWidth>=a.breakpoint),o=t.layout?.previewSize??230,n=r.map((a,s)=>({...a,index:s})).filter(a=>a.value<=o).sort((a,s)=>s.value-a.value)[0]?.index??0,i=r.map((a,s)=>({value:s}));return(0,lm.jsx)(im.RangeControl,{__next40pxDefaultSize:!0,showTooltip:!1,label:(0,am.__)("Preview size"),value:n,min:0,max:r.length-1,withInputField:!1,onChange:(a=0)=>{e.onChangeView({...t,layout:{...t.layout,previewSize:r[a].value}})},step:1,marks:i})}var $o=u(G(),1),Ko=u(j(),1),um=u(z(),1);var Zo=u(P(),1);function Gn(){let e=(0,um.useContext)(q),t=e.view;return(0,Zo.jsxs)($o.__experimentalToggleGroupControl,{size:"__unstable-large",label:(0,Ko.__)("Density"),value:t.layout?.density||"balanced",onChange:r=>{e.onChangeView({...t,layout:{...t.layout,density:r}})},isBlock:!0,children:[(0,Zo.jsx)($o.__experimentalToggleGroupControlOption,{value:"comfortable",label:(0,Ko._x)("Comfortable","Density option for DataView layout")},"comfortable"),(0,Zo.jsx)($o.__experimentalToggleGroupControlOption,{value:"balanced",label:(0,Ko._x)("Balanced","Density option for DataView layout")},"balanced"),(0,Zo.jsx)($o.__experimentalToggleGroupControlOption,{value:"compact",label:(0,Ko._x)("Compact","Density option for DataView layout")},"compact")]})}var Qr=[{type:ba,label:(0,xr.__)("Table"),component:Vf,icon:ji,viewConfigOptions:Gn},{type:lf,label:(0,xr.__)("Grid"),component:Ff,icon:zi,viewConfigOptions:ku},{type:uf,label:(0,xr.__)("List"),component:Iu,icon:(0,xr.isRTL)()?Ml:Ll,viewConfigOptions:Gn},{type:cf,label:(0,xr.__)("Activity"),component:qf,icon:Zl,viewConfigOptions:Gn},{type:df,label:(0,xr.__)("Grid"),component:rm,icon:zi,viewConfigOptions:ku,isPicker:!0},{type:ff,label:(0,xr.__)("Table"),component:nm,icon:ji,viewConfigOptions:Gn,isPicker:!0}];var fn=u(z(),1);var Gt=u(G(),1),Ar=u(j(),1),ps=u(z(),1);function Un(...e){}function Mu(e,t){if(b0(e)){let r=x0(t)?t():t;return e(r)}return e}function b0(e){return typeof e=="function"}function x0(e){return typeof e=="function"}function _t(e,t){return typeof Object.hasOwn=="function"?Object.hasOwn(e,t):Object.prototype.hasOwnProperty.call(e,t)}function Jr(...e){return(...t)=>{for(let r of e)typeof r=="function"&&r(...t)}}function Yn(e){return e.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}function Fu(e,t){let r={...e};for(let o of t)_t(r,o)&&delete r[o];return r}function Lu(e,t){let r={};for(let o of t)_t(e,o)&&(r[o]=e[o]);return r}function qn(e){return e}function Ke(e,t){if(!e)throw typeof t!="string"?new Error("Invariant failed"):new Error(t)}function Bu(e){return Object.keys(e)}function ju(e,...t){let r=typeof e=="function"?e(...t):e;return r==null?!1:!r}function So(e){return e.disabled||e["aria-disabled"]===!0||e["aria-disabled"]==="true"}function Ze(e){let t={};for(let r in e)e[r]!==void 0&&(t[r]=e[r]);return t}function te(...e){for(let t of e)if(t!==void 0)return t}var cm=u(ue(),1);function dm(e,t){typeof e=="function"?e(t):e&&(e.current=t)}function w0(e){return!e||!(0,cm.isValidElement)(e)?!1:"ref"in e.props||"ref"in e}function fm(e){return w0(e)?{...e.props}.ref||e.ref:null}function mm(e,t){let r={...e};for(let o in t){if(!_t(t,o))continue;if(o==="className"){let i="className";r[i]=e[i]?`${e[i]} ${t[i]}`:t[i];continue}if(o==="style"){let i="style";r[i]=e[i]?{...e[i],...t[i]}:t[i];continue}let n=t[o];if(typeof n=="function"&&o.startsWith("on")){let i=e[o];if(typeof i=="function"){r[o]=(...a)=>{n(...a),i(...a)};continue}}r[o]=n}return r}var eo=y0();function y0(){var e;return typeof window<"u"&&!!((e=window.document)!=null&&e.createElement)}function wr(e){return e?"self"in e?e.document:e.ownerDocument||document:document}function Co(e,t=!1){var r;let{activeElement:o}=wr(e);if(!o?.nodeName)return null;if(Hu(o)&&((r=o.contentDocument)!=null&&r.body))return Co(o.contentDocument.body,t);if(t){let n=o.getAttribute("aria-activedescendant");if(n){let i=wr(o).getElementById(n);if(i)return i}}return o}function Jt(e,t){return e===t||e.contains(t)}function Hu(e){return e.tagName==="IFRAME"}function yr(e){let t=e.tagName.toLowerCase();return t==="button"?!0:t==="input"&&e.type?_0.indexOf(e.type)!==-1:!1}var _0=["button","color","file","image","reset","submit"];function zu(e){if(typeof e.checkVisibility=="function")return e.checkVisibility();let t=e;return t.offsetWidth>0||t.offsetHeight>0||e.getClientRects().length>0}function ft(e){try{let t=e instanceof HTMLInputElement&&e.selectionStart!==null,r=e.tagName==="TEXTAREA";return t||r||!1}catch{return!1}}function $n(e){return e.isContentEditable||ft(e)}function Wu(e){if(ft(e))return e.value;if(e.isContentEditable){let t=wr(e).createRange();return t.selectNodeContents(e),t.toString()}return""}function Xo(e){let t=0,r=0;if(ft(e))t=e.selectionStart||0,r=e.selectionEnd||0;else if(e.isContentEditable){let o=wr(e).getSelection();if(o?.rangeCount&&o.anchorNode&&Jt(e,o.anchorNode)&&o.focusNode&&Jt(e,o.focusNode)){let n=o.getRangeAt(0),i=n.cloneRange();i.selectNodeContents(e),i.setEnd(n.startContainer,n.startOffset),t=i.toString().length,i.setEnd(n.endContainer,n.endOffset),r=i.toString().length}}return{start:t,end:r}}function Gu(e,t){let r=["dialog","menu","listbox","tree","grid"],o=e?.getAttribute("role");return o&&r.indexOf(o)!==-1?o:t}function Qo(e){if(!e)return null;let t=r=>r==="auto"||r==="scroll";if(e.clientHeight&&e.scrollHeight>e.clientHeight){let{overflowY:r}=getComputedStyle(e);if(t(r))return e}else if(e.clientWidth&&e.scrollWidth>e.clientWidth){let{overflowX:r}=getComputedStyle(e);if(t(r))return e}return Qo(e.parentElement)||document.scrollingElement||document.body}function Kn(e,...t){/text|search|password|tel|url/i.test(e.type)&&e.setSelectionRange(...t)}function Uu(e,t){let r=e.map((n,i)=>[i,n]),o=!1;return r.sort(([n,i],[a,s])=>{let l=t(i),c=t(s);return l===c||!l||!c?0:S0(l,c)?(n>a&&(o=!0),-1):(ni):e}function S0(e,t){return!!(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_PRECEDING)}function Yu(){return eo&&!!navigator.maxTouchPoints}function Ma(){return eo?/mac|iphone|ipad|ipod/i.test(navigator.platform):!1}function Eo(){return eo&&Ma()&&/apple/i.test(navigator.vendor)}function qu(){return eo&&/firefox\//i.test(navigator.userAgent)}function Fa(e){return!!(e.currentTarget&&!Jt(e.currentTarget,e.target))}function it(e){return e.target===e.currentTarget}function pm(e){let t=e.currentTarget;if(!t)return!1;let r=Ma();if(r&&!e.metaKey||!r&&!e.ctrlKey)return!1;let o=t.tagName.toLowerCase();return o==="a"||o==="button"&&t.type==="submit"||o==="input"&&t.type==="submit"}function vm(e){let t=e.currentTarget;if(!t)return!1;let r=t.tagName.toLowerCase();return e.altKey?r==="a"||r==="button"&&t.type==="submit"||r==="input"&&t.type==="submit":!1}function To(e,t){let r=new FocusEvent("blur",t),o=e.dispatchEvent(r),n={...t,bubbles:!0};return e.dispatchEvent(new FocusEvent("focusout",n)),o}function hm(e,t,r){let o=new KeyboardEvent(t,r);return e.dispatchEvent(o)}function $u(e,t){let r=new MouseEvent("click",t);return e.dispatchEvent(r)}function La(e,t){let r=t||e.currentTarget,o=e.relatedTarget;return!o||!Jt(r,o)}function to(e,t,r,o){let i=(s=>{if(o){let c=setTimeout(s,o);return()=>clearTimeout(c)}let l=requestAnimationFrame(s);return()=>cancelAnimationFrame(l)})(()=>{e.removeEventListener(t,a,!0),r()}),a=()=>{i(),r()};return e.addEventListener(t,a,{once:!0,capture:!0}),i}function er(e,t,r,o=window){let n=[];try{o.document.addEventListener(e,t,r);for(let a of Array.from(o.frames))n.push(er(e,t,r,a))}catch{}return()=>{try{o.document.removeEventListener(e,t,r)}catch{}for(let a of n)a()}}var C0=u(ue(),1),me=u(ue(),1),Ku={...C0},gm=Ku.useId,oO=Ku.useDeferredValue,bm=Ku.useInsertionEffect,Te=eo?me.useLayoutEffect:me.useEffect;function E0(e){let[t]=(0,me.useState)(e);return t}function _m(e){let t=(0,me.useRef)(e);return Te(()=>{t.current=e}),t}function re(e){let t=(0,me.useRef)(()=>{throw new Error("Cannot call an event handler while rendering.")});return bm?bm(()=>{t.current=e}):t.current=e,(0,me.useCallback)((...r)=>{var o;return(o=t.current)==null?void 0:o.call(t,...r)},[])}function Sm(e){let[t,r]=(0,me.useState)(null);return Te(()=>{if(t==null||!e)return;let o=null;return e(n=>(o=n,t)),()=>{e(o)}},[t,e]),[t,r]}function Ae(...e){return(0,me.useMemo)(()=>{if(e.some(Boolean))return t=>{for(let r of e)dm(r,t)}},e)}function Lt(e){if(gm){let o=gm();return e||o}let[t,r]=(0,me.useState)(e);return Te(()=>{if(e||t)return;let o=Math.random().toString(36).slice(2,8);r(`id-${o}`)},[e,t]),e||t}function Cm(e,t){let r=i=>{if(typeof i=="string")return i},[o,n]=(0,me.useState)(()=>r(t));return Te(()=>{let i=e&&"current"in e?e.current:e;n(i?.tagName.toLowerCase()||r(t))},[e,t]),o}function Em(e,t,r){let o=E0(r),[n,i]=(0,me.useState)(o);return(0,me.useEffect)(()=>{let a=e&&"current"in e?e.current:e;if(!a)return;let s=()=>{let c=a.getAttribute(t);i(c??o)},l=new MutationObserver(s);return l.observe(a,{attributeFilter:[t]}),s(),()=>l.disconnect()},[e,t,o]),n}function tr(e,t){let r=(0,me.useRef)(!1);(0,me.useEffect)(()=>{if(r.current)return e();r.current=!0},t),(0,me.useEffect)(()=>()=>{r.current=!1},[])}function Tm(e,t){let r=(0,me.useRef)(!1);Te(()=>{if(r.current)return e();r.current=!0},t),Te(()=>()=>{r.current=!1},[])}function Om(){return(0,me.useReducer)(()=>[],[])}function ke(e){return re(typeof e=="function"?e:()=>e)}function rr(e,t,r=[]){let o=(0,me.useCallback)(n=>(e.wrapElement&&(n=e.wrapElement(n)),t(n)),[...r,e.wrapElement]);return{...e,wrapElement:o}}function Am(e,t,r){let o=e.onLoadedMetadataCapture,n=(0,me.useMemo)(()=>Object.assign(()=>{},{...o,[t]:r}),[o,t,r]);return[o?.[t],{onLoadedMetadataCapture:n}]}var xm=!1;function Im(){return(0,me.useEffect)(()=>{xm||(er("mousemove",O0,!0),er("mousedown",Ba,!0),er("mouseup",Ba,!0),er("keydown",Ba,!0),er("scroll",Ba,!0),xm=!0)},[]),re(()=>Zu)}var Zu=!1,wm=0,ym=0;function T0(e){let t=e.movementX||e.screenX-wm,r=e.movementY||e.screenY-ym;return wm=e.screenX,ym=e.screenY,t||r||!1}function O0(e){T0(e)&&(Zu=!0)}function Ba(){Zu=!1}var mt=u(ue(),1),Oo=u(P(),1);function pe(e){let t=mt.forwardRef((r,o)=>e({...r,ref:o}));return t.displayName=e.displayName||e.name,t}function ro(e,t){return mt.memo(e,t)}function xe(e,t){let{wrapElement:r,render:o,...n}=t,i=Ae(t.ref,fm(o)),a;if(mt.isValidElement(o)){let s={...o.props,ref:i};a=mt.cloneElement(o,mm(n,s))}else o?a=o(n):a=(0,Oo.jsx)(e,{...n});return r?r(a):a}function we(e){let t=(r={})=>e(r);return t.displayName=e.name,t}function St(e=[],t=[]){let r=mt.createContext(void 0),o=mt.createContext(void 0),n=()=>mt.useContext(r),i=(c=!1)=>{let f=mt.useContext(o),p=n();return c?f:f||p},a=()=>{let c=mt.useContext(o),f=n();if(!(c&&c===f))return f},s=c=>e.reduceRight((f,p)=>(0,Oo.jsx)(p,{...c,children:f}),(0,Oo.jsx)(r.Provider,{...c}));return{context:r,scopedContext:o,useContext:n,useScopedContext:i,useProviderContext:a,ContextProvider:s,ScopedContextProvider:c=>(0,Oo.jsx)(s,{...c,children:t.reduceRight((f,p)=>(0,Oo.jsx)(p,{...c,children:f}),(0,Oo.jsx)(o.Provider,{...c}))})}}var Zn=St(),Pm=Zn.useContext,uO=Zn.useScopedContext,cO=Zn.useProviderContext,Rm=Zn.ContextProvider,Vm=Zn.ScopedContextProvider;var Xu=u(ue(),1),Xn=St([Rm],[Vm]),ja=Xn.useContext,pO=Xn.useScopedContext,Nm=Xn.useProviderContext,Jo=Xn.ContextProvider,Ha=Xn.ScopedContextProvider,Dm=(0,Xu.createContext)(void 0),km=(0,Xu.createContext)(void 0);function Mm(e,t){return e.find(r=>t?!r.disabled&&r.id!==t:!r.disabled)}function or(e,t){return t&&e.item(t)||null}function Fm(e){let t=[];for(let r of e){let o=t.find(n=>{var i;return((i=n[0])==null?void 0:i.rowId)===r.rowId});o?o.push(r):t.push([r])}return t}function Lm(e,t=!1){if(ft(e))e.setSelectionRange(t?e.value.length:0,e.value.length);else if(e.isContentEditable){let r=wr(e).getSelection();r?.selectAllChildren(e),t&&r?.collapseToEnd()}}var Qu=Symbol("FOCUS_SILENTLY");function Bm(e){e[Qu]=!0,e.focus({preventScroll:!0})}function jm(e){let t=e[Qu];return delete e[Qu],t}function Ao(e,t,r){if(!t||t===r)return!1;let o=e.item(t.id);return!(!o||r&&o.element===r)}var za=u(ue(),1),A0="div",Ju=we(function({store:t,shouldRegisterItem:r=!0,getItem:o=qn,element:n,...i}){let a=Pm();t=t||a;let s=Lt(i.id),l=(0,za.useRef)(n);return(0,za.useEffect)(()=>{let c=l.current;if(!s||!c||!r)return;let f=o({id:s,element:c});return t?.renderItem(f)},[s,r,o,t]),i={...i,ref:Ae(l,i.ref)},Ze(i)}),_O=pe(function(t){let r=Ju(t);return xe(A0,r)});var Hm=u(ue(),1),zm=(0,Hm.createContext)(!0);var Wm="input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], summary, iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])";function Qn(e){return!(!e.matches(Wm)||!zu(e)||e.closest("[inert]"))}function Gm(e){for(;e&&!Qn(e);)e=e.closest(Wm);return e||null}function Bt(e){let t=Co(e);if(!t)return!1;if(t===e)return!0;let r=t.getAttribute("aria-activedescendant");return r?r===e.id:!1}function ec(e){let t=Co(e);if(!t)return!1;if(Jt(e,t))return!0;let r=t.getAttribute("aria-activedescendant");return!r||!("id"in e)?!1:r===e.id?!0:!!e.querySelector(`#${CSS.escape(r)}`)}function Um(e){!ec(e)&&Qn(e)&&e.focus()}function Ym(e,t){"scrollIntoView"in e?(e.focus({preventScroll:!0}),e.scrollIntoView({block:"nearest",inline:"nearest",...t})):e.focus()}var Rt=u(ue(),1),I0="div",qm=Eo(),P0=["text","search","url","tel","email","password","number","date","month","week","time","datetime","datetime-local"],R0=Symbol("safariFocusAncestor");function $m(e,t){e&&(e[R0]=t)}function V0(e){let{tagName:t,readOnly:r,type:o}=e;return t==="TEXTAREA"&&!r||t==="SELECT"&&!r?!0:t==="INPUT"&&!r?P0.includes(o):!!(e.isContentEditable||e.getAttribute("role")==="combobox"&&e.dataset.name)}function N0(e){return"labels"in e?e.labels:null}function Km(e){return e.tagName.toLowerCase()==="input"&&e.type?e.type==="radio"||e.type==="checkbox":!1}function D0(e){return e?e==="button"||e==="summary"||e==="input"||e==="select"||e==="textarea"||e==="a":!0}function k0(e){return e?e==="button"||e==="input"||e==="select"||e==="textarea":!0}function M0(e,t,r,o,n){return e?t?r&&!o?-1:void 0:r?n:n||0:n}function tc(e,t){return re(r=>{e?.(r),!r.defaultPrevented&&t&&(r.stopPropagation(),r.preventDefault())})}var Zm=!1,rc=!0;function F0(e){let t=e.target;t&&"hasAttribute"in t&&(t.hasAttribute("data-focus-visible")||(rc=!1))}function L0(e){e.metaKey||e.ctrlKey||e.altKey||(rc=!0)}var Jn=we(function({focusable:t=!0,accessibleWhenDisabled:r,autoFocus:o,onFocusVisible:n,...i}){let a=(0,Rt.useRef)(null);(0,Rt.useEffect)(()=>{t&&(Zm||(er("mousedown",F0,!0),er("keydown",L0,!0),Zm=!0))},[t]),qm&&(0,Rt.useEffect)(()=>{if(!t)return;let w=a.current;if(!w||!Km(w))return;let O=N0(w);if(!O)return;let x=()=>queueMicrotask(()=>w.focus());for(let C of O)C.addEventListener("mouseup",x);return()=>{for(let C of O)C.removeEventListener("mouseup",x)}},[t]);let s=t&&So(i),l=!!s&&!r,[c,f]=(0,Rt.useState)(!1);(0,Rt.useEffect)(()=>{t&&l&&c&&f(!1)},[t,l,c]),(0,Rt.useEffect)(()=>{if(!t||!c)return;let w=a.current;if(!w||typeof IntersectionObserver>"u")return;let O=new IntersectionObserver(()=>{Qn(w)||f(!1)});return O.observe(w),()=>O.disconnect()},[t,c]);let p=tc(i.onKeyPressCapture,s),d=tc(i.onMouseDownCapture,s),m=tc(i.onClickCapture,s),v=i.onMouseDown,_=re(w=>{if(v?.(w),w.defaultPrevented||!t)return;let O=w.currentTarget;if(!qm||Fa(w)||!yr(O)&&!Km(O))return;let x=!1,C=()=>{x=!0},F={capture:!0,once:!0};O.addEventListener("focusin",C,F);let D=Gm(O.parentElement);$m(D,!0),to(O,"mouseup",()=>{O.removeEventListener("focusin",C,!0),$m(D,!1),!x&&Um(O)})}),h=(w,O)=>{if(O&&(w.currentTarget=O),!t)return;let x=w.currentTarget;x&&Bt(x)&&(n?.(w),!w.defaultPrevented&&(x.dataset.focusVisible="true",f(!0)))},b=i.onKeyDownCapture,y=re(w=>{if(b?.(w),w.defaultPrevented||!t||c||w.metaKey||w.altKey||w.ctrlKey||!it(w))return;let O=w.currentTarget;to(O,"focusout",()=>h(w,O))}),A=i.onFocusCapture,V=re(w=>{if(A?.(w),w.defaultPrevented||!t)return;if(!it(w)){f(!1);return}let O=w.currentTarget,x=()=>h(w,O);rc||V0(w.target)?to(w.target,"focusout",x):f(!1)}),R=i.onBlur,M=re(w=>{R?.(w),t&&La(w)&&(w.currentTarget.removeAttribute("data-focus-visible"),f(!1))}),k=(0,Rt.useContext)(zm),S=re(w=>{t&&o&&w&&k&&queueMicrotask(()=>{Bt(w)||Qn(w)&&w.focus()})}),I=Cm(a),N=t&&D0(I),g=t&&k0(I),E=i.style,T=(0,Rt.useMemo)(()=>l?{pointerEvents:"none",...E}:E,[l,E]);return i={"data-focus-visible":t&&c||void 0,"data-autofocus":o||void 0,"aria-disabled":s||void 0,...i,ref:Ae(a,S,i.ref),style:T,tabIndex:M0(t,l,N,g,i.tabIndex),disabled:g&&l?!0:void 0,contentEditable:s?void 0:i.contentEditable,onKeyPressCapture:p,onClickCapture:m,onMouseDownCapture:d,onMouseDown:_,onKeyDownCapture:y,onFocusCapture:V,onBlur:M},Ze(i)}),LO=pe(function(t){let r=Jn(t);return xe(I0,r)});var oo=u(ue(),1),B0="button";function Xm(e){if(!e.isTrusted)return!1;let t=e.currentTarget;return e.key==="Enter"?yr(t)||t.tagName==="SUMMARY"||t.tagName==="A":e.key===" "?yr(t)||t.tagName==="SUMMARY"||t.tagName==="INPUT"||t.tagName==="SELECT":!1}var j0=Symbol("command"),oc=we(function({clickOnEnter:t=!0,clickOnSpace:r=!0,...o}){let n=(0,oo.useRef)(null),[i,a]=(0,oo.useState)(!1);(0,oo.useEffect)(()=>{n.current&&a(yr(n.current))},[]);let[s,l]=(0,oo.useState)(!1),c=(0,oo.useRef)(!1),f=So(o),[p,d]=Am(o,j0,!0),m=o.onKeyDown,v=re(b=>{m?.(b);let y=b.currentTarget;if(b.defaultPrevented||p||f||!it(b)||ft(y)||y.isContentEditable)return;let A=t&&b.key==="Enter",V=r&&b.key===" ",R=b.key==="Enter"&&!t,M=b.key===" "&&!r;if(R||M){b.preventDefault();return}if(A||V){let k=Xm(b);if(A){if(!k){b.preventDefault();let{view:S,...I}=b,N=()=>$u(y,I);qu()?to(y,"keyup",N):queueMicrotask(N)}}else V&&(c.current=!0,k||(b.preventDefault(),l(!0)))}}),_=o.onKeyUp,h=re(b=>{if(_?.(b),b.defaultPrevented||p||f||b.metaKey)return;let y=r&&b.key===" ";if(c.current&&y&&(c.current=!1,!Xm(b))){b.preventDefault(),l(!1);let A=b.currentTarget,{view:V,...R}=b;queueMicrotask(()=>$u(A,R))}});return o={"data-active":s||void 0,type:i?"button":void 0,...d,...o,ref:Ae(n,o.ref),onKeyDown:v,onKeyUp:h},o=Jn(o),o}),qO=pe(function(t){let r=oc(t);return xe(B0,r)});function Io(e,t){let r=e.__unstableInternals;return Ke(r,"Invalid store"),r[t]}function pt(e,...t){let r=e,o=r,n=Symbol(),i=Un,a=new Set,s=new Set,l=new Set,c=new Set,f=new Set,p=new WeakMap,d=new WeakMap,m=S=>(l.add(S),()=>l.delete(S)),v=()=>{let S=a.size,I=Symbol();a.add(I);let N=()=>{a.delete(I),!a.size&&i()};if(S)return N;let g=Bu(r).map(w=>Jr(...t.map(O=>{var x;let C=(x=O?.getState)==null?void 0:x.call(O);if(C&&_t(C,w))return Ue(O,[w],F=>{M(w,F[w],!0)})}))),E=[];for(let w of l)E.push(w());let T=t.map(en);return i=Jr(...g,...E,...T),N},_=(S,I,N=c)=>(N.add(I),d.set(I,S),()=>{var g;(g=p.get(I))==null||g(),p.delete(I),d.delete(I),N.delete(I)}),h=(S,I)=>_(S,I),b=(S,I)=>(p.set(I,I(r,r)),_(S,I)),y=(S,I)=>(p.set(I,I(r,o)),_(S,I,f)),A=S=>pt(Lu(r,S),k),V=S=>pt(Fu(r,S),k),R=()=>r,M=(S,I,N=!1)=>{var g;if(!_t(r,S))return;let E=Mu(I,r[S]);if(E===r[S])return;if(!N)for(let x of t)(g=x?.setState)==null||g.call(x,S,E);let T=r;r={...r,[S]:E};let w=Symbol();n=w,s.add(S);let O=(x,C,F)=>{var D;let W=d.get(x),Q=ge=>F?F.has(ge):ge===S;(!W||W.some(Q))&&((D=p.get(x))==null||D(),p.set(x,x(r,C)))};for(let x of c)O(x,T);queueMicrotask(()=>{if(n!==w)return;let x=r;for(let C of f)O(C,o,s);o=x,s.clear()})},k={getState:R,setState:M,__unstableInternals:{setup:m,init:v,subscribe:h,sync:b,batch:y,pick:A,omit:V}};return k}function Ge(e,...t){if(e)return Io(e,"setup")(...t)}function en(e,...t){if(e)return Io(e,"init")(...t)}function tn(e,...t){if(e)return Io(e,"subscribe")(...t)}function Ue(e,...t){if(e)return Io(e,"sync")(...t)}function no(e,...t){if(e)return Io(e,"batch")(...t)}function ei(e,...t){if(e)return Io(e,"omit")(...t)}function nc(e,...t){if(e)return Io(e,"pick")(...t)}function Po(...e){var t;let r={};for(let n of e){let i=(t=n?.getState)==null?void 0:t.call(n);i&&Object.assign(r,i)}let o=pt(r,...e);return Object.assign({},...e,o)}var nr=u(ue(),1),Qm=u(ef(),1),{useSyncExternalStore:Jm}=Qm.default,ep=()=>()=>{};function rn(e,t=qn){let r=nr.useCallback(n=>e?tn(e,null,n):ep(),[e]),o=()=>{let n=typeof t=="string"?t:null,i=typeof t=="function"?t:null,a=e?.getState();if(i)return i(a);if(a&&n&&_t(a,n))return a[n]};return Jm(r,o,o)}function Ga(e,t){let r=nr.useRef({}),o=nr.useCallback(i=>e?tn(e,null,i):ep(),[e]),n=()=>{let i=e?.getState(),a=!1,s=r.current;for(let l in t){let c=t[l];if(typeof c=="function"){let f=c(i);f!==s[l]&&(s[l]=f,a=!0)}if(typeof c=="string"){if(!i||!_t(i,c))continue;let f=i[c];f!==s[l]&&(s[l]=f,a=!0)}}return a&&(r.current={...s}),r.current};return Jm(o,n,n)}function Ie(e,t,r,o){let n=_t(t,r)?t[r]:void 0,i=o?t[o]:void 0,a=_m({value:n,setValue:i});Te(()=>Ue(e,[r],(s,l)=>{let{value:c,setValue:f}=a.current;f&&s[r]!==l[r]&&s[r]!==c&&f(s[r])}),[e,r]),Te(()=>{if(n!==void 0)return e.setState(r,n),no(e,[r],()=>{n!==void 0&&e.setState(r,n)})})}function on(e,t){let[r,o]=nr.useState(()=>e(t));Te(()=>en(r),[r]);let n=nr.useCallback(s=>rn(r,s),[r]),i=nr.useMemo(()=>({...r,useState:n}),[r,n]),a=re(()=>{o(s=>e({...t,...s.getState()}))});return[i,a]}var _r=u(ue(),1),rp=u(P(),1),H0="button";function z0(e){return $n(e)?!0:e.tagName==="INPUT"&&!yr(e)}function W0(e,t=!1){let r=e.clientHeight,{top:o}=e.getBoundingClientRect(),n=Math.max(r*.875,r-40)*1.5,i=t?r-n+o:n+o;return e.tagName==="HTML"?i+e.scrollTop:i}function G0(e,t=!1){let{top:r}=e.getBoundingClientRect();return t?r+e.clientHeight:r}function tp(e,t,r,o=!1){var n;if(!t||!r)return;let{renderedItems:i}=t.getState(),a=Qo(e);if(!a)return;let s=W0(a,o),l,c;for(let f=0;f=0){c!==void 0&&c<_&&(l=p);break}c=_}return l}function U0(e,t){return it(e)?!1:Ao(t,e.target)}var ic=we(function({store:t,rowId:r,preventScrollOnKeyDown:o=!1,moveOnKeyPress:n=!0,tabbable:i=!1,getItem:a,"aria-setsize":s,"aria-posinset":l,...c}){let f=ja();t=t||f;let p=Lt(c.id),d=(0,_r.useRef)(null),m=(0,_r.useContext)(km),_=So(c)&&!c.accessibleWhenDisabled,{rowId:h,baseElement:b,isActiveItem:y,ariaSetSize:A,ariaPosInSet:V,isTabbable:R}=Ga(t,{rowId(C){if(r)return r;if(C&&m?.baseElement&&m.baseElement===C.baseElement)return m.id},baseElement(C){return C?.baseElement||void 0},isActiveItem(C){return!!C&&C.activeId===p},ariaSetSize(C){if(s!=null)return s;if(C&&m?.ariaSetSize&&m.baseElement===C.baseElement)return m.ariaSetSize},ariaPosInSet(C){if(l!=null)return l;if(!C||!m?.ariaPosInSet||m.baseElement!==C.baseElement)return;let F=C.renderedItems.filter(D=>D.rowId===h);return m.ariaPosInSet+F.findIndex(D=>D.id===p)},isTabbable(C){if(!C?.renderedItems.length)return!0;if(C.virtualFocus)return!1;if(i)return!0;if(C.activeId===null)return!1;let F=t?.item(C.activeId);return F?.disabled||!F?.element?!0:C.activeId===p}}),M=(0,_r.useCallback)(C=>{var F;let D={...C,id:p||C.id,rowId:h,disabled:!!_,children:(F=C.element)==null?void 0:F.textContent};return a?a(D):D},[p,h,_,a]),k=c.onFocus,S=(0,_r.useRef)(!1),I=re(C=>{if(k?.(C),C.defaultPrevented||Fa(C)||!p||!t||U0(C,t))return;let{virtualFocus:F,baseElement:D}=t.getState();if(t.setActiveId(p),$n(C.currentTarget)&&Lm(C.currentTarget),!F||!it(C)||z0(C.currentTarget)||!D?.isConnected)return;Eo()&&C.currentTarget.hasAttribute("data-autofocus")&&C.currentTarget.scrollIntoView({block:"nearest",inline:"nearest"}),S.current=!0,C.relatedTarget===D||Ao(t,C.relatedTarget)?Bm(D):D.focus()}),N=c.onBlurCapture,g=re(C=>{if(N?.(C),C.defaultPrevented)return;let F=t?.getState();F?.virtualFocus&&S.current&&(S.current=!1,C.preventDefault(),C.stopPropagation())}),E=c.onKeyDown,T=ke(o),w=ke(n),O=re(C=>{if(E?.(C),C.defaultPrevented||!it(C)||!t)return;let{currentTarget:F}=C,D=t.getState(),W=t.item(p),Q=!!W?.rowId,ge=D.orientation!=="horizontal",et=D.orientation!=="vertical",Et=()=>!!(Q||et||!D.baseElement||!ft(D.baseElement)),po={ArrowUp:(Q||ge)&&t.up,ArrowRight:(Q||et)&&t.next,ArrowDown:(Q||ge)&&t.down,ArrowLeft:(Q||et)&&t.previous,Home:()=>{if(Et())return!Q||C.ctrlKey?t?.first():t?.previous(-1)},End:()=>{if(Et())return!Q||C.ctrlKey?t?.last():t?.next(-1)},PageUp:()=>tp(F,t,t?.up,!0),PageDown:()=>tp(F,t,t?.down)}[C.key];if(po){if($n(F)){let Ne=Xo(F),tt=et&&C.key==="ArrowLeft",vo=et&&C.key==="ArrowRight",Cn=ge&&C.key==="ArrowUp",En=ge&&C.key==="ArrowDown";if(vo||En){let{length:Tn}=Wu(F);if(Ne.end!==Tn)return}else if((tt||Cn)&&Ne.start!==0)return}let $=po();if(T(C)||$!==void 0){if(!w(C))return;C.preventDefault(),t.move($)}}}),x=(0,_r.useMemo)(()=>({id:p,baseElement:b}),[p,b]);return c=rr(c,C=>(0,rp.jsx)(Dm.Provider,{value:x,children:C}),[x]),c={id:p,"data-active-item":y||void 0,...c,ref:Ae(d,c.ref),tabIndex:R?c.tabIndex:-1,onFocus:I,onBlurCapture:g,onKeyDown:O},c=oc(c),c=Ju({store:t,...c,getItem:M,shouldRegisterItem:p?c.shouldRegisterItem:!1}),Ze({...c,"aria-setsize":A,"aria-posinset":V})}),pA=ro(pe(function(t){let r=ic(t);return xe(H0,r)}));function ac(e){return Array.isArray(e)?e:typeof e<"u"?[e]:[]}function ti(e){let t=[];for(let r of e)t.push(...r);return t}function nn(e){return e.slice().reverse()}var ir=u(ue(),1),np=u(P(),1),Y0="div";function q0(e){return e.some(t=>!!t.rowId)}function $0(e){let t=e.target;return t&&!ft(t)?!1:e.key.length===1&&!e.ctrlKey&&!e.metaKey}function K0(e){return e.key==="Shift"||e.key==="Control"||e.key==="Alt"||e.key==="Meta"}function op(e,t,r){return re(o=>{var n;if(t?.(o),o.defaultPrevented||o.isPropagationStopped()||!it(o)||K0(o)||$0(o))return;let i=e.getState(),a=(n=or(e,i.activeId))==null?void 0:n.element;if(!a)return;let{view:s,...l}=o,c=r?.current;a!==c&&a.focus(),hm(a,o.type,l)||o.preventDefault(),o.currentTarget.contains(a)&&o.stopPropagation()})}function Z0(e){return Mm(ti(nn(Fm(e))))}function X0(e){let[t,r]=(0,ir.useState)(!1),o=(0,ir.useCallback)(()=>r(!0),[]),n=e.useState(i=>or(e,i.activeId));return(0,ir.useEffect)(()=>{let i=n?.element;t&&i&&(r(!1),i.focus({preventScroll:!0}))},[n,t]),o}var sc=we(function({store:t,composite:r=!0,focusOnMove:o=r,moveOnKeyPress:n=!0,...i}){let a=Nm();t=t||a,Ke(t,!1);let s=(0,ir.useRef)(null),l=(0,ir.useRef)(null),c=X0(t),f=t.useState("moves"),[,p]=Sm(r?t.setBaseElement:null);(0,ir.useEffect)(()=>{var g;if(!t||!f||!r||!o)return;let{activeId:E}=t.getState(),T=(g=or(t,E))==null?void 0:g.element;T&&Ym(T)},[t,f,r,o]),Te(()=>{if(!t||!f||!r)return;let{baseElement:g,activeId:E}=t.getState();if(!(E===null)||!g)return;let w=l.current;l.current=null,w&&To(w,{relatedTarget:g}),Bt(g)||g.focus()},[t,f,r]);let d=t.useState("activeId"),m=t.useState("virtualFocus");Te(()=>{var g;if(!t||!r||!m)return;let E=l.current;if(l.current=null,!E)return;let w=((g=or(t,d))==null?void 0:g.element)||Co(E);w!==E&&To(E,{relatedTarget:w})},[t,d,m,r]);let v=op(t,i.onKeyDownCapture,l),_=op(t,i.onKeyUpCapture,l),h=i.onFocusCapture,b=re(g=>{if(h?.(g),g.defaultPrevented||!t)return;let{virtualFocus:E}=t.getState();if(!E)return;let T=g.relatedTarget,w=jm(g.currentTarget);it(g)&&w&&(g.stopPropagation(),l.current=T)}),y=i.onFocus,A=re(g=>{if(y?.(g),g.defaultPrevented||!r||!t)return;let{relatedTarget:E}=g,{virtualFocus:T}=t.getState();T?it(g)&&!Ao(t,E)&&queueMicrotask(c):it(g)&&t.setActiveId(null)}),V=i.onBlurCapture,R=re(g=>{var E;if(V?.(g),g.defaultPrevented||!t)return;let{virtualFocus:T,activeId:w}=t.getState();if(!T)return;let O=(E=or(t,w))==null?void 0:E.element,x=g.relatedTarget,C=Ao(t,x),F=l.current;l.current=null,it(g)&&C?(x===O?F&&F!==x&&To(F,g):O?To(O,g):F&&To(F,g),g.stopPropagation()):!Ao(t,g.target)&&O&&To(O,g)}),M=i.onKeyDown,k=ke(n),S=re(g=>{var E;if(M?.(g),g.nativeEvent.isComposing||g.defaultPrevented||!t||!it(g))return;let{orientation:T,renderedItems:w,activeId:O}=t.getState(),x=or(t,O);if((E=x?.element)!=null&&E.isConnected)return;let C=T!=="horizontal",F=T!=="vertical",D=q0(w);if((g.key==="ArrowLeft"||g.key==="ArrowRight"||g.key==="Home"||g.key==="End")&&ft(g.currentTarget))return;let et={ArrowUp:(D||C)&&(()=>{if(D){let Et=Z0(w);return Et?.id}return t?.last()}),ArrowRight:(D||F)&&t.first,ArrowDown:(D||C)&&t.first,ArrowLeft:(D||F)&&t.last,Home:t.first,End:t.last,PageUp:t.first,PageDown:t.last}[g.key];if(et){let Et=et();if(Et!==void 0){if(!k(g))return;g.preventDefault(),t.move(Et)}}});i=rr(i,g=>(0,np.jsx)(Jo,{value:t,children:g}),[t]),i={"aria-activedescendant":t.useState(g=>{var E;if(t&&r&&g.virtualFocus)return(E=or(t,g.activeId))==null?void 0:E.id}),...i,ref:Ae(s,p,i.ref),onKeyDownCapture:v,onKeyUpCapture:_,onFocusCapture:b,onFocus:A,onBlurCapture:R,onKeyDown:S};let N=t.useState(g=>r&&(g.virtualFocus||g.activeId===null));return i=Jn({focusable:N,...i}),i}),PA=pe(function(t){let r=sc(t);return xe(Y0,r)});var ri=St(),NA=ri.useContext,DA=ri.useScopedContext,lc=ri.useProviderContext,ip=ri.ContextProvider,ap=ri.ScopedContextProvider;var uc=u(ue(),1),oi=St([ip],[ap]),LA=oi.useContext,BA=oi.useScopedContext,jA=oi.useProviderContext,sp=oi.ContextProvider,Ua=oi.ScopedContextProvider,HA=(0,uc.createContext)(void 0),zA=(0,uc.createContext)(void 0);var an=u(ue(),1),cp=u(Zd(),1),cc=u(P(),1),Q0="div";function lp(e,t){let r=setTimeout(t,e);return()=>clearTimeout(r)}function J0(e){let t=requestAnimationFrame(()=>{t=requestAnimationFrame(e)});return()=>cancelAnimationFrame(t)}function up(...e){return e.join(", ").split(", ").reduce((t,r)=>{let o=r.endsWith("ms")?1:1e3,n=Number.parseFloat(r||"0s")*o;return n>t?n:t},0)}function dc(e,t,r){return!r&&t!==!1&&(!e||!!t)}var ew=we(function({store:t,alwaysVisible:r,...o}){let n=lc();t=t||n,Ke(t,!1);let i=(0,an.useRef)(null),a=Lt(o.id),[s,l]=(0,an.useState)(null),c=t.useState("open"),f=t.useState("mounted"),p=t.useState("animated"),d=t.useState("contentElement"),m=rn(t.disclosure,"contentElement");Te(()=>{i.current&&t?.setContentElement(i.current)},[t]),Te(()=>{let b;return t?.setState("animated",y=>(b=y,!0)),()=>{b!==void 0&&t?.setState("animated",b)}},[t]),Te(()=>{if(p){if(!d?.isConnected){l(null);return}return J0(()=>{l(c?"enter":f?"leave":null)})}},[p,d,c,f]),Te(()=>{if(!t||!p||!s||!d)return;let b=()=>t?.setState("animating",!1),y=()=>(0,cp.flushSync)(b);if(s==="leave"&&c||s==="enter"&&!c)return;if(typeof p=="number")return lp(p,y);let{transitionDuration:A,animationDuration:V,transitionDelay:R,animationDelay:M}=getComputedStyle(d),{transitionDuration:k="0",animationDuration:S="0",transitionDelay:I="0",animationDelay:N="0"}=m?getComputedStyle(m):{},g=up(R,M,I,N),E=up(A,V,k,S),T=g+E;if(!T){s==="enter"&&t.setState("animated",!1),b();return}let w=1e3/60,O=Math.max(T-w,0);return lp(O,y)},[t,p,d,m,c,s]),o=rr(o,b=>(0,cc.jsx)(Ua,{value:t,children:b}),[t]);let v=dc(f,o.hidden,r),_=o.style,h=(0,an.useMemo)(()=>v?{..._,display:"none"}:_,[v,_]);return o={id:a,"data-open":c||void 0,"data-enter":s==="enter"||void 0,"data-leave":s==="leave"||void 0,hidden:v,...o,ref:Ae(a?t.setContentElement:null,i,o.ref),style:h},Ze(o)}),tw=pe(function(t){let r=ew(t);return xe(Q0,r)}),ZA=pe(function({unmountOnHide:t,...r}){let o=lc(),n=r.store||o;return rn(n,a=>!t||a?.mounted)===!1?null:(0,cc.jsx)(tw,{...r})});function dp(e={}){let t=Po(e.store,ei(e.disclosure,["contentElement","disclosureElement"]));let r=t?.getState(),o=te(e.open,r?.open,e.defaultOpen,!1),n=te(e.animated,r?.animated,!1),i={open:o,animated:n,animating:!!n&&o,mounted:o,contentElement:te(r?.contentElement,null),disclosureElement:te(r?.disclosureElement,null)},a=pt(i,t);return Ge(a,()=>Ue(a,["animated","animating"],s=>{s.animated||a.setState("animating",!1)})),Ge(a,()=>tn(a,["open"],()=>{a.getState().animated&&a.setState("animating",!0)})),Ge(a,()=>Ue(a,["open","animating"],s=>{a.setState("mounted",s.open||s.animating)})),{...a,disclosure:e.disclosure,setOpen:s=>a.setState("open",s),show:()=>a.setState("open",!0),hide:()=>a.setState("open",!1),toggle:()=>a.setState("open",s=>!s),stopAnimation:()=>a.setState("animating",!1),setContentElement:s=>a.setState("contentElement",s),setDisclosureElement:s=>a.setState("disclosureElement",s)}}function fp(e,t,r){return tr(t,[r.store,r.disclosure]),Ie(e,r,"open","setOpen"),Ie(e,r,"mounted","setMounted"),Ie(e,r,"animated"),Object.assign(e,{disclosure:r.disclosure})}var ni=St([sp],[Ua]),aI=ni.useContext,sI=ni.useScopedContext,mp=ni.useProviderContext,pp=ni.ContextProvider,vp=ni.ScopedContextProvider;function rw(e){var t;let r=e.find(i=>!!i.element),o=[...e].reverse().find(i=>!!i.element),n=(t=r?.element)==null?void 0:t.parentElement;for(;n&&o?.element;){if(o&&n.contains(o.element))return n;n=n.parentElement}return wr(n).body}function ow(e){return e?.__unstablePrivateStore}function hp(e={}){var t;e.store;let r=(t=e.store)==null?void 0:t.getState(),o=te(e.items,r?.items,e.defaultItems,[]),n=new Map(o.map(d=>[d.id,d])),i={items:o,renderedItems:te(r?.renderedItems,[])},a=ow(e.store),s=pt({items:o,renderedItems:i.renderedItems},a),l=pt(i,e.store),c=d=>{let m=Uu(d,v=>v.element);s.setState("renderedItems",m),l.setState("renderedItems",m)};Ge(l,()=>en(s)),Ge(s,()=>no(s,["items"],d=>{l.setState("items",d.items)})),Ge(s,()=>no(s,["renderedItems"],d=>{let m=!0,v=requestAnimationFrame(()=>{let{renderedItems:y}=l.getState();d.renderedItems!==y&&c(d.renderedItems)});if(typeof IntersectionObserver!="function")return()=>cancelAnimationFrame(v);let _=()=>{if(m){m=!1;return}cancelAnimationFrame(v),v=requestAnimationFrame(()=>c(d.renderedItems))},h=rw(d.renderedItems),b=new IntersectionObserver(_,{root:h});for(let y of d.renderedItems)y.element&&b.observe(y.element);return()=>{cancelAnimationFrame(v),b.disconnect()}}));let f=(d,m,v=!1)=>{let _;return m(b=>{let y=b.findIndex(({id:V})=>V===d.id),A=b.slice();if(y!==-1){_=b[y];let V={..._,...d};A[y]=V,n.set(d.id,V)}else A.push(d),n.set(d.id,d);return A}),()=>{m(b=>{if(!_)return v&&n.delete(d.id),b.filter(({id:V})=>V!==d.id);let y=b.findIndex(({id:V})=>V===d.id);if(y===-1)return b;let A=b.slice();return A[y]=_,n.set(d.id,_),A})}},p=d=>f(d,m=>s.setState("items",m),!0);return{...l,registerItem:p,renderItem:d=>Jr(p(d),f(d,m=>s.setState("renderedItems",m))),item:d=>{if(!d)return null;let m=n.get(d);if(!m){let{items:v}=s.getState();m=v.find(_=>_.id===d),m&&n.set(d,m)}return m||null},__unstablePrivateStore:s}}function gp(e,t,r){return tr(t,[r.store]),Ie(e,r,"items","setItems"),e}var nw={id:null};function Sr(e,t){return e.find(r=>t?!r.disabled&&r.id!==t:!r.disabled)}function iw(e,t){return e.filter(r=>t?!r.disabled&&r.id!==t:!r.disabled)}function bp(e,t){return e.filter(r=>r.rowId===t)}function aw(e,t,r=!1){let o=e.findIndex(n=>n.id===t);return[...e.slice(o+1),...r?[nw]:[],...e.slice(0,o)]}function xp(e){let t=[];for(let r of e){let o=t.find(n=>{var i;return((i=n[0])==null?void 0:i.rowId)===r.rowId});o?o.push(r):t.push([r])}return t}function wp(e){let t=0;for(let{length:r}of e)r>t&&(t=r);return t}function sw(e){return{id:"__EMPTY_ITEM__",disabled:!0,rowId:e}}function lw(e,t,r){let o=wp(e);for(let n of e)for(let i=0;iUe(a,["renderedItems","activeId"],l=>{a.setState("activeId",c=>{var f;return c!==void 0?c:(f=Sr(l.renderedItems))==null?void 0:f.id})}));let s=(l="next",c={})=>{var f,p;let d=a.getState(),{skip:m=0,activeId:v=d.activeId,focusShift:_=d.focusShift,focusLoop:h=d.focusLoop,focusWrap:b=d.focusWrap,includesBaseElement:y=d.includesBaseElement,renderedItems:A=d.renderedItems,rtl:V=d.rtl}=c,R=l==="up"||l==="down",M=l==="next"||l==="down",k=M?V&&!R:!V||R,S=_&&!m,I=R?ti(lw(xp(A),v,S)):A;if(I=k?nn(I):I,I=R?uw(I):I,v==null)return(f=Sr(I))==null?void 0:f.id;let N=I.find(D=>D.id===v);if(!N)return(p=Sr(I))==null?void 0:p.id;let g=I.some(D=>D.rowId),E=I.indexOf(N),T=I.slice(E+1),w=bp(T,N.rowId);if(m){let D=iw(w,v),W=D.slice(m)[0]||D[D.length-1];return W?.id}let O=h&&(R?h!=="horizontal":h!=="vertical"),x=g&&b&&(R?b!=="horizontal":b!=="vertical"),C=M?(!g||R)&&O&&y:R?y:!1;if(O){let D=x&&!C?I:bp(I,N.rowId),W=aw(D,v,C),Q=Sr(W,v);return Q?.id}if(x){let D=Sr(C?w:T,v);return C?D?.id||null:D?.id}let F=Sr(w,v);return!F&&C?null:F?.id};return{...o,...a,setBaseElement:l=>a.setState("baseElement",l),setActiveId:l=>a.setState("activeId",l),move:l=>{l!==void 0&&(a.setState("activeId",l),a.setState("moves",c=>c+1))},first:()=>{var l;return(l=Sr(a.getState().renderedItems))==null?void 0:l.id},last:()=>{var l;return(l=Sr(nn(a.getState().renderedItems)))==null?void 0:l.id},next:l=>(l!==void 0&&typeof l=="number"&&(l={skip:l}),s("next",l)),previous:l=>(l!==void 0&&typeof l=="number"&&(l={skip:l}),s("previous",l)),down:l=>(l!==void 0&&typeof l=="number"&&(l={skip:l}),s("down",l)),up:l=>(l!==void 0&&typeof l=="number"&&(l={skip:l}),s("up",l))}}function _p(e){return{id:Lt(e.id),...e}}function Sp(e,t,r){return e=gp(e,t,r),Ie(e,r,"activeId","setActiveId"),Ie(e,r,"includesBaseElement"),Ie(e,r,"virtualFocus"),Ie(e,r,"orientation"),Ie(e,r,"rtl"),Ie(e,r,"focusLoop"),Ie(e,r,"focusWrap"),Ie(e,r,"focusShift"),e}var Ya=u(ue(),1),qa=(0,Ya.createContext)(void 0),ii=St([pp,Jo],[vp,Ha]),fc=ii.useContext,sn=ii.useScopedContext,$a=ii.useProviderContext,Cp=ii.ContextProvider,Ep=ii.ScopedContextProvider,Ka=(0,Ya.createContext)(void 0),Tp=(0,Ya.createContext)(!1);function Op(e={}){return dp(e)}function Ap(e,t,r){return fp(e,t,r)}function Ip({popover:e,...t}={}){let r=Po(t.store,ei(e,["arrowElement","anchorElement","contentElement","popoverElement","disclosureElement"]));let o=r?.getState(),n=Op({...t,store:r}),i=te(t.placement,o?.placement,"bottom"),a={...n.getState(),placement:i,currentPlacement:i,anchorElement:te(o?.anchorElement,null),popoverElement:te(o?.popoverElement,null),arrowElement:te(o?.arrowElement,null),rendered:Symbol("rendered")},s=pt(a,n,r);return{...n,...s,setAnchorElement:l=>s.setState("anchorElement",l),setPopoverElement:l=>s.setState("popoverElement",l),setArrowElement:l=>s.setState("arrowElement",l),render:()=>s.setState("rendered",Symbol("rendered"))}}function Pp(e,t,r){return tr(t,[r.popover]),Ie(e,r,"placement"),Ap(e,t,r)}var cw="div",mc=we(function({store:t,...r}){let o=mp();return t=t||o,r={...r,ref:Ae(t?.setAnchorElement,r.ref)},r}),GI=pe(function(t){let r=mc(t);return xe(cw,r)});var Rp=u(ue(),1),dw="div";function Vp(e){let t=e.relatedTarget;return t?.nodeType===Node.ELEMENT_NODE?t:null}function fw(e){let t=Vp(e);return t?Jt(e.currentTarget,t):!1}var pc=Symbol("composite-hover");function mw(e){let t=Vp(e);if(!t)return!1;do{if(_t(t,pc)&&t[pc])return!0;t=t.parentElement}while(t);return!1}var vc=we(function({store:t,focusOnHover:r=!0,blurOnHoverEnd:o=!!r,...n}){let i=ja();t=t||i,Ke(t,!1);let a=Im(),s=n.onMouseMove,l=ke(r),c=re(v=>{if(s?.(v),!v.defaultPrevented&&a()&&l(v)){if(!ec(v.currentTarget)){let _=t?.getState().baseElement;_&&!Bt(_)&&_.focus()}t?.setActiveId(v.currentTarget.id)}}),f=n.onMouseLeave,p=ke(o),d=re(v=>{var _;f?.(v),!v.defaultPrevented&&a()&&(fw(v)||mw(v)||l(v)&&p(v)&&(t?.setActiveId(null),(_=t?.getState().baseElement)==null||_.focus()))}),m=(0,Rp.useCallback)(v=>{v&&(v[pc]=!0)},[]);return n={...n,ref:Ae(m,n.ref),onMouseMove:c,onMouseLeave:d},Ze(n)}),QI=ro(pe(function(t){let r=vc(t);return xe(dw,r)}));var Xe=u(ue(),1),pw="input";function Np(e,t,r){if(!r)return!1;let o=e.find(n=>!n.disabled&&n.value);return o?.value===t}function Dp(e,t){return!t||e==null?!1:(e=Yn(e),t.length>e.length&&t.toLowerCase().indexOf(e.toLowerCase())===0)}function vw(e){return e.type==="input"}function hw(e){return e==="inline"||e==="list"||e==="both"||e==="none"}function gw(e){let t=e.find(r=>{var o;return r.disabled?!1:((o=r.element)==null?void 0:o.getAttribute("role"))!=="tab"});return t?.id}var bw=we(function({store:t,focusable:r=!0,autoSelect:o=!1,getAutoSelectId:n,setValueOnChange:i,showMinLength:a=0,showOnChange:s,showOnMouseDown:l,showOnClick:c=l,showOnKeyDown:f,showOnKeyPress:p=f,blurActiveItemOnClick:d,setValueOnClick:m=!0,moveOnKeyPress:v=!0,autoComplete:_="list",...h}){let b=$a();t=t||b,Ke(t,!1);let y=(0,Xe.useRef)(null),[A,V]=Om(),R=(0,Xe.useRef)(!1),M=(0,Xe.useRef)(!1),k=t.useState(B=>B.virtualFocus&&o),S=_==="inline"||_==="both",[I,N]=(0,Xe.useState)(S);Tm(()=>{S&&N(!0)},[S]);let g=t.useState("value"),E=(0,Xe.useRef)(void 0);(0,Xe.useEffect)(()=>Ue(t,["selectedValue","activeId"],(B,se)=>{E.current=se.selectedValue}),[]);let T=t.useState(B=>{var se;if(S&&I&&!(B.activeValue&&Array.isArray(B.selectedValue)&&(B.selectedValue.includes(B.activeValue)||(se=E.current)!=null&&se.includes(B.activeValue))))return B.activeValue}),w=t.useState("renderedItems"),O=t.useState("open"),x=t.useState("contentElement"),C=(0,Xe.useMemo)(()=>{if(!S||!I)return g;if(Np(w,T,k)){if(Dp(g,T)){let se=T?.slice(g.length)||"";return g+se}return g}return T||g},[S,I,w,T,k,g]);(0,Xe.useEffect)(()=>{let B=y.current;if(!B)return;let se=()=>N(!0);return B.addEventListener("combobox-item-move",se),()=>{B.removeEventListener("combobox-item-move",se)}},[]),(0,Xe.useEffect)(()=>{if(!S||!I||!T||!Np(w,T,k)||!Dp(g,T))return;let se=Un;return queueMicrotask(()=>{let Be=y.current;if(!Be)return;let{start:je,end:Dt}=Xo(Be),vr=g.length,rt=T.length;Kn(Be,vr,rt),se=()=>{if(!Bt(Be))return;let{start:ho,end:Xb}=Xo(Be);ho===vr&&Xb===rt&&Kn(Be,je,Dt)}}),()=>se()},[A,S,I,T,w,k,g]);let F=(0,Xe.useRef)(null),D=re(n),W=(0,Xe.useRef)(null);(0,Xe.useEffect)(()=>{if(!O||!x)return;let B=Qo(x);if(!B)return;F.current=B;let se=()=>{R.current=!1},Be=()=>{if(!t||!R.current)return;let{activeId:Dt}=t.getState();Dt!==null&&Dt!==W.current&&(R.current=!1)},je={passive:!0,capture:!0};return B.addEventListener("wheel",se,je),B.addEventListener("touchmove",se,je),B.addEventListener("scroll",Be,je),()=>{B.removeEventListener("wheel",se,!0),B.removeEventListener("touchmove",se,!0),B.removeEventListener("scroll",Be,!0)}},[O,x,t]),Te(()=>{g&&(M.current||(R.current=!0))},[g]),Te(()=>{k!=="always"&&O||(R.current=O)},[k,O]);let Q=t.useState("resetValueOnSelect");tr(()=>{var B,se;let Be=R.current;if(!t||!O||!Be&&!Q)return;let{baseElement:je,contentElement:Dt,activeId:vr}=t.getState();if(!(je&&!Bt(je))){if(Dt?.hasAttribute("data-placing")){let rt=new MutationObserver(V);return rt.observe(Dt,{attributeFilter:["data-placing"]}),()=>rt.disconnect()}if(k&&Be){let rt=D(w),ho=rt!==void 0?rt:(B=gw(w))!=null?B:t.first();W.current=ho,t.move(ho??null)}else{let rt=(se=t.item(vr||t.first()))==null?void 0:se.element;rt&&"scrollIntoView"in rt&&rt.scrollIntoView({block:"nearest",inline:"nearest"})}}},[t,O,A,g,k,Q,D,w]),(0,Xe.useEffect)(()=>{if(!S)return;let B=y.current;if(!B)return;let se=[B,x].filter(je=>!!je),Be=je=>{se.every(Dt=>La(je,Dt))&&t?.setValue(C)};for(let je of se)je.addEventListener("focusout",Be);return()=>{for(let je of se)je.removeEventListener("focusout",Be)}},[S,x,t,C]);let ge=B=>B.currentTarget.value.length>=a,et=h.onChange,Et=ke(s??ge),Dr=ke(i??!t.tag),po=re(B=>{if(et?.(B),B.defaultPrevented||!t)return;let se=B.currentTarget,{value:Be,selectionStart:je,selectionEnd:Dt}=se,vr=B.nativeEvent;if(R.current=!0,vw(vr)&&(vr.isComposing&&(R.current=!1,M.current=!0),S)){let rt=vr.inputType==="insertText"||vr.inputType==="insertCompositionText",ho=je===Be.length;N(rt&&ho)}if(Dr(B)){let rt=Be===t.getState().value;t.setValue(Be),queueMicrotask(()=>{Kn(se,je,Dt)}),S&&k&&rt&&V()}Et(B)&&t.show(),(!k||!R.current)&&t.setActiveId(null)}),$=h.onCompositionEnd,Ne=re(B=>{R.current=!0,M.current=!1,$?.(B),!B.defaultPrevented&&k&&V()}),tt=h.onMouseDown,vo=ke(d??(()=>!!t?.getState().includesBaseElement)),Cn=ke(m),En=ke(c??ge),Tn=re(B=>{tt?.(B),!B.defaultPrevented&&(B.button||B.ctrlKey||t&&(vo(B)&&t.setActiveId(null),Cn(B)&&t.setValue(C),En(B)&&to(B.currentTarget,"mouseup",t.show)))}),Si=h.onKeyDown,On=ke(p??ge),sl=re(B=>{if(Si?.(B),B.repeat||(R.current=!1),B.defaultPrevented||B.ctrlKey||B.altKey||B.shiftKey||B.metaKey||!t)return;let{open:se}=t.getState();se||(B.key==="ArrowUp"||B.key==="ArrowDown")&&On(B)&&(B.preventDefault(),t.show())}),fd=h.onBlur,qb=re(B=>{R.current=!1,fd?.(B),B.defaultPrevented}),$b=Lt(h.id),Kb=hw(_)?_:void 0,Zb=t.useState(B=>B.activeId===null);return h={id:$b,role:"combobox","aria-autocomplete":Kb,"aria-haspopup":Gu(x,"listbox"),"aria-expanded":O,"aria-controls":x?.id,"data-active-item":Zb||void 0,value:C,...h,ref:Ae(y,h.ref),onChange:po,onCompositionEnd:Ne,onMouseDown:Tn,onKeyDown:sl,onBlur:qb},h=sc({store:t,focusable:r,...h,moveOnKeyPress:B=>ju(v,B)?!1:(S&&N(!0),!0)}),h=mc({store:t,...h}),{autoComplete:"off",...h}}),Za=pe(function(t){let r=bw(t);return xe(pw,r)});var Xa=u(ue(),1),hc=u(P(),1),xw="div";function ww(e,t){if(t!=null)return e==null?!1:Array.isArray(e)?e.includes(t):e===t}function yw(e){var t;return(t={menu:"menuitem",listbox:"option",tree:"treeitem"}[e])!=null?t:"option"}var kp=we(function({store:t,value:r,hideOnClick:o,setValueOnClick:n,selectValueOnClick:i=!0,resetValueOnSelect:a,focusOnHover:s=!1,moveOnKeyPress:l=!0,getItem:c,...f}){var p;let d=sn();t=t||d,Ke(t,!1);let{resetValueOnSelectState:m,multiSelectable:v,selected:_}=Ga(t,{resetValueOnSelectState:"resetValueOnSelect",multiSelectable(g){return Array.isArray(g.selectedValue)},selected(g){return ww(g.selectedValue,r)}}),h=(0,Xa.useCallback)(g=>{let E={...g,value:r};return c?c(E):E},[r,c]);n=n??!v,o=o??(r!=null&&!v);let b=f.onClick,y=ke(n),A=ke(i),V=ke((p=a??m)!=null?p:v),R=ke(o),M=re(g=>{b?.(g),!g.defaultPrevented&&(vm(g)||pm(g)||(r!=null&&(A(g)&&(V(g)&&t?.resetValue(),t?.setSelectedValue(E=>Array.isArray(E)?E.includes(r)?E.filter(T=>T!==r):[...E,r]:r)),y(g)&&t?.setValue(r)),R(g)&&t?.hide()))}),k=f.onKeyDown,S=re(g=>{if(k?.(g),g.defaultPrevented)return;let E=t?.getState().baseElement;if(!E||Bt(E))return;(g.key.length===1||g.key==="Backspace"||g.key==="Delete")&&(queueMicrotask(()=>E.focus()),ft(E)&&t?.setValue(E.value))});v&&_!=null&&(f={"aria-selected":_,...f}),f=rr(f,g=>(0,hc.jsx)(Ka.Provider,{value:r,children:(0,hc.jsx)(Tp.Provider,{value:_??!1,children:g})}),[r,_]);let I=(0,Xa.useContext)(qa);f={role:yw(I),children:r,...f,onClick:M,onKeyDown:S};let N=ke(l);return f=ic({store:t,...f,getItem:h,moveOnKeyPress:g=>{if(!N(g))return!1;let E=new Event("combobox-item-move"),T=t?.getState().baseElement;return T?.dispatchEvent(E),!0}}),f=vc({store:t,focusOnHover:s,...f}),f}),ai=ro(pe(function(t){let r=kp(t);return xe(xw,r)}));var Qa=u(ue(),1),Fp=u(P(),1),_w="span";function Mp(e){return Yn(e).toLowerCase()}function Sw(e,t){let r=[];for(let o of t){let n=0,i=o.length;for(;e.indexOf(o,n)!==-1;){let a=e.indexOf(o,n);a!==-1&&r.push([a,i]),n=a+1}}return r}function Cw(e){return e.filter(([t,r],o,n)=>!n.some(([i,a],s)=>s!==o&&i<=t&&i+a>=t+r))}function Ew(e){return e.sort(([t],[r])=>t-r)}function Tw(e,t){if(!e||!t)return e;let r=ac(t).filter(Boolean).map(Mp),o=[],n=(l,c=!1)=>(0,Fp.jsx)("span",{"data-autocomplete-value":c?"":void 0,"data-user-value":c?void 0:"",children:l},o.length),i=Ew(Cw(Sw(Mp(e),new Set(r))));if(!i.length)return o.push(n(e,!0)),o;let[a]=i[0];return[e.slice(0,a),...i.flatMap(([l,c],f)=>{var p;let d=e.slice(l,l+c),m=(p=i[f+1])==null?void 0:p[0],v=e.slice(l+c,m);return[d,v]})].forEach((l,c)=>{l&&o.push(n(l,c%2===0))}),o}var Ow=we(function({store:t,value:r,userValue:o,...n}){let i=sn();t=t||i;let a=(0,Qa.useContext)(Ka),s=r??a,l=rn(t,f=>o??f?.value);return n={children:(0,Qa.useMemo)(()=>{if(s)return l?Tw(s,l):s},[s,l]),...n},Ze(n)}),Ja=pe(function(t){let r=Ow(t);return xe(_w,r)});var Aw="label",Iw=we(function({store:t,...r}){let o=$a();return t=t||o,Ke(t,!1),r={htmlFor:t.useState(i=>{var a;return(a=i.baseElement)==null?void 0:a.id}),...r},Ze(r)}),es=ro(pe(function(t){let r=Iw(t);return xe(Aw,r)}));var ts=u(ue(),1),gc=u(P(),1),Pw="div",Lp=we(function({store:t,alwaysVisible:r,...o}){let n=sn(!0),i=fc();t=t||i;let a=!!t&&t===n;Ke(t,!1);let s=(0,ts.useRef)(null),l=Lt(o.id),c=t.useState("mounted"),f=dc(c,o.hidden,r),p=f?{...o.style,display:"none"}:o.style,d=t.useState(V=>Array.isArray(V.selectedValue)),m=Em(s,"role",o.role),_=(m==="listbox"||m==="tree"||m==="grid")&&d||void 0,[h,b]=(0,ts.useState)(!1),y=t.useState("contentElement");Te(()=>{if(!c)return;let V=s.current;if(!V||y!==V)return;let R=()=>{b(!!V.querySelector("[role='listbox']"))},M=new MutationObserver(R);return M.observe(V,{subtree:!0,childList:!0,attributeFilter:["role"]}),R(),()=>M.disconnect()},[c,y]),h||(o={role:"listbox","aria-multiselectable":_,...o}),o=rr(o,V=>(0,gc.jsx)(Ep,{value:t,children:(0,gc.jsx)(qa.Provider,{value:m,children:V})}),[t,m]);let A=l&&(!n||!a)?t.setContentElement:null;return o={id:l,hidden:f,...o,ref:Ae(A,s,o.ref),style:p},Ze(o)}),si=pe(function(t){let r=Lp(t);return xe(Pw,r)});var bc=u(ue(),1),GP=(0,bc.createContext)(null),UP=(0,bc.createContext)(null),li=St([Jo],[Ha]),Bp=li.useContext,YP=li.useScopedContext,qP=li.useProviderContext,$P=li.ContextProvider,KP=li.ScopedContextProvider;var Rw=Eo()&&Yu();function jp({tag:e,...t}={}){let r=Po(t.store,nc(e,["value","rtl"]));let o=e?.getState(),n=r?.getState(),i=te(t.activeId,n?.activeId,t.defaultActiveId,null),a=yp({...t,activeId:i,includesBaseElement:te(t.includesBaseElement,n?.includesBaseElement,!0),orientation:te(t.orientation,n?.orientation,"vertical"),focusLoop:te(t.focusLoop,n?.focusLoop,!0),focusWrap:te(t.focusWrap,n?.focusWrap,!0),virtualFocus:te(t.virtualFocus,n?.virtualFocus,!0)}),s=Ip({...t,placement:te(t.placement,n?.placement,"bottom-start")}),l=te(t.value,n?.value,t.defaultValue,""),c=te(t.selectedValue,n?.selectedValue,o?.values,t.defaultSelectedValue,""),f=Array.isArray(c),p={...a.getState(),...s.getState(),value:l,selectedValue:c,resetValueOnSelect:te(t.resetValueOnSelect,n?.resetValueOnSelect,f),resetValueOnHide:te(t.resetValueOnHide,n?.resetValueOnHide,f&&!e),activeValue:n?.activeValue},d=pt(p,a,s,r);return Rw&&Ge(d,()=>Ue(d,["virtualFocus"],()=>{d.setState("virtualFocus",!1)})),Ge(d,()=>{if(e)return Jr(Ue(d,["selectedValue"],m=>{Array.isArray(m.selectedValue)&&e.setValues(m.selectedValue)}),Ue(e,["values"],m=>{d.setState("selectedValue",m.values)}))}),Ge(d,()=>Ue(d,["resetValueOnHide","mounted"],m=>{m.resetValueOnHide&&(m.mounted||d.setState("value",l))})),Ge(d,()=>Ue(d,["open"],m=>{m.open||(d.setState("activeId",i),d.setState("moves",0))})),Ge(d,()=>Ue(d,["moves","activeId"],(m,v)=>{m.moves===v.moves&&d.setState("activeValue",void 0)})),Ge(d,()=>no(d,["moves","renderedItems"],(m,v)=>{if(m.moves===v.moves)return;let{activeId:_}=d.getState(),h=a.item(_);d.setState("activeValue",h?.value)})),{...s,...a,...d,tag:e,setValue:m=>d.setState("value",m),resetValue:()=>d.setState("value",p.value),setSelectedValue:m=>d.setState("selectedValue",m)}}function Nw(e){let t=Bp();return e={...e,tag:e.tag!==void 0?e.tag:t},_p(e)}function Dw(e,t,r){return tr(t,[r.tag]),Ie(e,r,"value","setValue"),Ie(e,r,"selectedValue","setSelectedValue"),Ie(e,r,"resetValueOnHide"),Ie(e,r,"resetValueOnSelect"),Object.assign(Sp(Pp(e,t,r),t,r),{tag:r.tag})}function xc(e={}){e=Nw(e);let[t,r]=on(jp,e);return Dw(t,r,e)}var Hp=u(P(),1);function rs(e={}){let t=xc(e);return(0,Hp.jsx)(Cp,{value:t,children:e.children})}var Kp=u(Up(),1);var Zp=u(bt(),1),Cr=u(j(),1),Ro=u(z(),1),jt=u(G(),1);var jw=[],ui=(e,t)=>e.singleSelection?t?.value:Array.isArray(t?.value)?t.value:!Array.isArray(t?.value)&&t?.value?[t.value]:jw;var ci=u(z(),1),Hw=[];function Ye({elements:e,getElements:t}){let r=Array.isArray(e)&&e.length>0?e:Hw,[o,n]=(0,ci.useState)(r),[i,a]=(0,ci.useState)(!1);return(0,ci.useEffect)(()=>{if(!t){n(r);return}let s=!1;return a(!0),t().then(l=>{if(!s){let c=Array.isArray(l)&&l.length>0?l:r;n(c)}}).catch(()=>{s||n(r)}).finally(()=>{s||a(!1)}),()=>{s=!0}},[t,r]),{elements:o,isLoading:i}}var ne=u(P(),1);function Yp(e=""){return(0,Kp.default)(e.trim().toLowerCase())}var qp=(e,t,r)=>e.singleSelection?r:Array.isArray(t?.value)?t.value.includes(r)?t.value.filter(o=>o!==r):[...t.value,r]:[r];function $p(e,t){return`${e}-${t}`}var Xp=({selected:e})=>(0,ne.jsx)("span",{className:Y("dataviews-filters__search-widget-listitem-multi-selection",{"is-selected":e}),children:e&&(0,ne.jsx)(jt.Icon,{icon:Rn})}),Qp=({selected:e})=>(0,ne.jsx)("span",{className:Y("dataviews-filters__search-widget-listitem-single-selection",{"is-selected":e})});function Jp({view:e,filter:t,onChangeView:r}){let o=(0,Zp.useInstanceId)(Jp,"dataviews-filter-list-box"),[n,i]=(0,Ro.useState)(t.operators?.length===1?void 0:null),a=e.filters?.find(l=>l.field===t.field),s=ui(t,a);return(0,ne.jsx)(jt.Composite,{virtualFocus:!0,focusLoop:!0,activeId:n,setActiveId:i,role:"listbox",className:"dataviews-filters__search-widget-listbox","aria-label":(0,Cr.sprintf)((0,Cr.__)("List of: %1$s"),t.name),onFocusVisible:()=>{!n&&t.elements.length&&i($p(o,t.elements[0].value))},render:(0,ne.jsx)(jt.Composite.Typeahead,{}),children:t.elements.map(l=>(0,ne.jsxs)(jt.Composite.Hover,{render:(0,ne.jsx)(jt.Composite.Item,{id:$p(o,l.value),render:(0,ne.jsx)("div",{"aria-label":l.label,role:"option",className:"dataviews-filters__search-widget-listitem"}),onClick:()=>{let c=a?[...(e.filters??[]).map(f=>f.field===t.field?{...f,operator:a.operator||t.operators[0],value:qp(t,a,l.value)}:f)]:[...e.filters??[],{field:t.field,operator:t.operators[0],value:qp(t,a,l.value)}];r({...e,page:1,filters:c})}}),children:[t.singleSelection&&(0,ne.jsx)(Qp,{selected:s===l.value}),!t.singleSelection&&(0,ne.jsx)(Xp,{selected:s.includes(l.value)}),(0,ne.jsx)("span",{className:"dataviews-filters__search-widget-listitem-value",title:l.label,children:l.label})]},l.value))})}function zw({view:e,filter:t,onChangeView:r}){let[o,n]=(0,Ro.useState)(""),i=(0,Ro.useDeferredValue)(o),a=e.filters?.find(c=>c.field===t.field),s=ui(t,a),l=(0,Ro.useMemo)(()=>{let c=Yp(i);return t.elements.filter(f=>Yp(f.label).includes(c))},[t.elements,i]);return(0,ne.jsxs)(rs,{selectedValue:s,setSelectedValue:c=>{let f=a?[...(e.filters??[]).map(p=>p.field===t.field?{...p,operator:a.operator||t.operators[0],value:c}:p)]:[...e.filters??[],{field:t.field,operator:t.operators[0],value:c}];r({...e,page:1,filters:f})},setValue:n,children:[(0,ne.jsxs)("div",{className:"dataviews-filters__search-widget-filter-combobox__wrapper",children:[(0,ne.jsx)(es,{render:(0,ne.jsx)(jt.VisuallyHidden,{children:(0,Cr.__)("Search items")}),children:(0,Cr.__)("Search items")}),(0,ne.jsx)(Za,{autoSelect:"always",placeholder:(0,Cr.__)("Search"),className:"dataviews-filters__search-widget-filter-combobox__input"}),(0,ne.jsx)("div",{className:"dataviews-filters__search-widget-filter-combobox__icon",children:(0,ne.jsx)(jt.Icon,{icon:Ql})})]}),(0,ne.jsxs)(si,{className:"dataviews-filters__search-widget-filter-combobox-list",alwaysVisible:!0,children:[l.map(c=>(0,ne.jsxs)(ai,{resetValueOnSelect:!1,value:c.value,className:"dataviews-filters__search-widget-listitem",hideOnClick:!1,setValueOnClick:!1,focusOnHover:!0,children:[t.singleSelection&&(0,ne.jsx)(Qp,{selected:s===c.value}),!t.singleSelection&&(0,ne.jsx)(Xp,{selected:s.includes(c.value)}),(0,ne.jsxs)("span",{className:"dataviews-filters__search-widget-listitem-value",title:c.label,children:[(0,ne.jsx)(Ja,{className:"dataviews-filters__search-widget-filter-combobox-item-value",value:c.label}),!!c.description&&(0,ne.jsx)("span",{className:"dataviews-filters__search-widget-listitem-description",children:c.description})]})]},c.value)),!l.length&&(0,ne.jsx)("p",{children:(0,Cr.__)("No results found")})]})]})}function ev(e){let{elements:t,isLoading:r}=Ye({elements:e.filter.elements,getElements:e.filter.getElements});if(r)return(0,ne.jsx)("div",{className:"dataviews-filters__search-widget-no-elements",children:(0,ne.jsx)(jt.Spinner,{})});if(t.length===0)return(0,ne.jsx)("div",{className:"dataviews-filters__search-widget-no-elements",children:(0,Cr.__)("No elements found")});let o=t.length>10?zw:Jp;return(0,ne.jsx)(o,{...e,filter:{...e.filter,elements:t}})}var ov=u(rv(),1),nv=u(bt(),1),wc=u(z(),1),iv=u(G(),1);var yc=u(P(),1);function av({filter:e,view:t,onChangeView:r,fields:o}){let n=t.filters?.find(c=>c.field===e.field),i=ui(e,n),a=(0,wc.useMemo)(()=>{let c=o.find(f=>f.id===e.field);return c&&{...c,isValid:{},getValue:({item:f})=>f[c.id],setValue:({value:f})=>({[c.id]:f})}},[o,e.field]),s=(0,wc.useMemo)(()=>(t.filters??[]).reduce((c,f)=>(c[f.field]=f.value,c),{}),[t.filters]),l=(0,nv.useEvent)(c=>{if(!a||!n)return;let f=a.getValue({item:c});(0,ov.default)(f,i)||r({...t,filters:(t.filters??[]).map(p=>p.field===e.field?{...p,operator:n.operator||e.operators[0],value:f===""?void 0:f}:p)})});return!a||!a.Edit||!n?null:(0,yc.jsx)(iv.Flex,{className:"dataviews-filters__user-input-widget",gap:2.5,direction:"column",children:(0,yc.jsx)(a.Edit,{hideLabelFromVision:!0,data:s,field:a,operator:n.operator,onChange:l})})}var Ww=Math.pow(10,8)*24*60*60*1e3,BR=-Ww,ns=6048e5,sv=864e5;var Gw=3600;var lv=Gw*24,jR=lv*7,Uw=lv*365.2425,Yw=Uw/12,HR=Yw*3,_c=Symbol.for("constructDateFrom");function He(e,t){return typeof e=="function"?e(t):e&&typeof e=="object"&&_c in e?e[_c](t):e instanceof Date?new e.constructor(t):new Date(t)}function fe(e,t){return He(t||e,e)}function is(e,t,r){let o=fe(e,r?.in);return isNaN(t)?He(r?.in||e,NaN):(t&&o.setDate(o.getDate()+t),o)}function as(e,t,r){let o=fe(e,r?.in);if(isNaN(t))return He(r?.in||e,NaN);if(!t)return o;let n=o.getDate(),i=He(r?.in||e,o.getTime());i.setMonth(o.getMonth()+t+1,0);let a=i.getDate();return n>=a?i:(o.setFullYear(i.getFullYear(),i.getMonth(),n),o)}var qw={};function io(){return qw}function Er(e,t){let r=io(),o=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,n=fe(e,t?.in),i=n.getDay(),a=(i=i.getTime()?o+1:r.getTime()>=s.getTime()?o:o-1}function Sc(e){let t=fe(e),r=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return r.setUTCFullYear(t.getFullYear()),+e-+r}function uv(e,...t){let r=He.bind(null,e||t.find(o=>typeof o=="object"));return t.map(r)}function Cc(e,t){let r=fe(e,t?.in);return r.setHours(0,0,0,0),r}function cv(e,t,r){let[o,n]=uv(r?.in,e,t),i=Cc(o),a=Cc(n),s=+i-Sc(i),l=+a-Sc(a);return Math.round((s-l)/sv)}function dv(e,t){let r=ss(e,t),o=He(t?.in||e,0);return o.setFullYear(r,0,4),o.setHours(0,0,0,0),Vo(o)}function fv(e,t,r){return is(e,t*7,r)}function mv(e,t,r){return as(e,t*12,r)}function pv(e){return e instanceof Date||typeof e=="object"&&Object.prototype.toString.call(e)==="[object Date]"}function ln(e){return!(!pv(e)&&typeof e!="number"||isNaN(+fe(e)))}function vv(e,t){let r=fe(e,t?.in);return r.setDate(1),r.setHours(0,0,0,0),r}function ls(e,t){let r=fe(e,t?.in);return r.setFullYear(r.getFullYear(),0,1),r.setHours(0,0,0,0),r}var $w={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},hv=(e,t,r)=>{let o,n=$w[e];return typeof n=="string"?o=n:t===1?o=n.one:o=n.other.replace("{{count}}",t.toString()),r?.addSuffix?r.comparison&&r.comparison>0?"in "+o:o+" ago":o};function us(e){return(t={})=>{let r=t.width?String(t.width):e.defaultWidth;return e.formats[r]||e.formats[e.defaultWidth]}}var Kw={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},Zw={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},Xw={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},gv={date:us({formats:Kw,defaultWidth:"full"}),time:us({formats:Zw,defaultWidth:"full"}),dateTime:us({formats:Xw,defaultWidth:"full"})};var Qw={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},bv=(e,t,r,o)=>Qw[e];function un(e){return(t,r)=>{let o=r?.context?String(r.context):"standalone",n;if(o==="formatting"&&e.formattingValues){let a=e.defaultFormattingWidth||e.defaultWidth,s=r?.width?String(r.width):a;n=e.formattingValues[s]||e.formattingValues[a]}else{let a=e.defaultWidth,s=r?.width?String(r.width):e.defaultWidth;n=e.values[s]||e.values[a]}let i=e.argumentCallback?e.argumentCallback(t):t;return n[i]}}var Jw={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},ey={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},ty={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},ry={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},oy={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},ny={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},iy=(e,t)=>{let r=Number(e),o=r%100;if(o>20||o<10)switch(o%10){case 1:return r+"st";case 2:return r+"nd";case 3:return r+"rd"}return r+"th"},xv={ordinalNumber:iy,era:un({values:Jw,defaultWidth:"wide"}),quarter:un({values:ey,defaultWidth:"wide",argumentCallback:e=>e-1}),month:un({values:ty,defaultWidth:"wide"}),day:un({values:ry,defaultWidth:"wide"}),dayPeriod:un({values:oy,defaultWidth:"wide",formattingValues:ny,defaultFormattingWidth:"wide"})};function cn(e){return(t,r={})=>{let o=r.width,n=o&&e.matchPatterns[o]||e.matchPatterns[e.defaultMatchWidth],i=t.match(n);if(!i)return null;let a=i[0],s=o&&e.parsePatterns[o]||e.parsePatterns[e.defaultParseWidth],l=Array.isArray(s)?sy(s,p=>p.test(a)):ay(s,p=>p.test(a)),c;c=e.valueCallback?e.valueCallback(l):l,c=r.valueCallback?r.valueCallback(c):c;let f=t.slice(a.length);return{value:c,rest:f}}}function ay(e,t){for(let r in e)if(Object.prototype.hasOwnProperty.call(e,r)&&t(e[r]))return r}function sy(e,t){for(let r=0;r{let o=t.match(e.matchPattern);if(!o)return null;let n=o[0],i=t.match(e.parsePattern);if(!i)return null;let a=e.valueCallback?e.valueCallback(i[0]):i[0];a=r.valueCallback?r.valueCallback(a):a;let s=t.slice(n.length);return{value:a,rest:s}}}var ly=/^(\d+)(th|st|nd|rd)?/i,uy=/\d+/i,cy={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},dy={any:[/^b/i,/^(a|c)/i]},fy={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},my={any:[/1/i,/2/i,/3/i,/4/i]},py={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},vy={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},hy={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},gy={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},by={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},xy={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},yv={ordinalNumber:wv({matchPattern:ly,parsePattern:uy,valueCallback:e=>parseInt(e,10)}),era:cn({matchPatterns:cy,defaultMatchWidth:"wide",parsePatterns:dy,defaultParseWidth:"any"}),quarter:cn({matchPatterns:fy,defaultMatchWidth:"wide",parsePatterns:my,defaultParseWidth:"any",valueCallback:e=>e+1}),month:cn({matchPatterns:py,defaultMatchWidth:"wide",parsePatterns:vy,defaultParseWidth:"any"}),day:cn({matchPatterns:hy,defaultMatchWidth:"wide",parsePatterns:gy,defaultParseWidth:"any"}),dayPeriod:cn({matchPatterns:by,defaultMatchWidth:"any",parsePatterns:xy,defaultParseWidth:"any"})};var Ec={code:"en-US",formatDistance:hv,formatLong:gv,formatRelative:bv,localize:xv,match:yv,options:{weekStartsOn:0,firstWeekContainsDate:1}};function _v(e,t){let r=fe(e,t?.in);return cv(r,ls(r))+1}function Sv(e,t){let r=fe(e,t?.in),o=+Vo(r)-+dv(r);return Math.round(o/ns)+1}function cs(e,t){let r=fe(e,t?.in),o=r.getFullYear(),n=io(),i=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,a=He(t?.in||e,0);a.setFullYear(o+1,0,i),a.setHours(0,0,0,0);let s=Er(a,t),l=He(t?.in||e,0);l.setFullYear(o,0,i),l.setHours(0,0,0,0);let c=Er(l,t);return+r>=+s?o+1:+r>=+c?o:o-1}function Cv(e,t){let r=io(),o=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,n=cs(e,t),i=He(t?.in||e,0);return i.setFullYear(n,0,o),i.setHours(0,0,0,0),Er(i,t)}function Ev(e,t){let r=fe(e,t?.in),o=+Er(r,t)-+Cv(r,t);return Math.round(o/ns)+1}function ae(e,t){let r=e<0?"-":"",o=Math.abs(e).toString().padStart(t,"0");return r+o}var Tr={y(e,t){let r=e.getFullYear(),o=r>0?r:1-r;return ae(t==="yy"?o%100:o,t.length)},M(e,t){let r=e.getMonth();return t==="M"?String(r+1):ae(r+1,2)},d(e,t){return ae(e.getDate(),t.length)},a(e,t){let r=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return r.toUpperCase();case"aaa":return r;case"aaaaa":return r[0];default:return r==="am"?"a.m.":"p.m."}},h(e,t){return ae(e.getHours()%12||12,t.length)},H(e,t){return ae(e.getHours(),t.length)},m(e,t){return ae(e.getMinutes(),t.length)},s(e,t){return ae(e.getSeconds(),t.length)},S(e,t){let r=t.length,o=e.getMilliseconds(),n=Math.trunc(o*Math.pow(10,r-3));return ae(n,t.length)}};var dn={am:"am",pm:"pm",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},Tc={G:function(e,t,r){let o=e.getFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return r.era(o,{width:"abbreviated"});case"GGGGG":return r.era(o,{width:"narrow"});default:return r.era(o,{width:"wide"})}},y:function(e,t,r){if(t==="yo"){let o=e.getFullYear(),n=o>0?o:1-o;return r.ordinalNumber(n,{unit:"year"})}return Tr.y(e,t)},Y:function(e,t,r,o){let n=cs(e,o),i=n>0?n:1-n;if(t==="YY"){let a=i%100;return ae(a,2)}return t==="Yo"?r.ordinalNumber(i,{unit:"year"}):ae(i,t.length)},R:function(e,t){let r=ss(e);return ae(r,t.length)},u:function(e,t){let r=e.getFullYear();return ae(r,t.length)},Q:function(e,t,r){let o=Math.ceil((e.getMonth()+1)/3);switch(t){case"Q":return String(o);case"QQ":return ae(o,2);case"Qo":return r.ordinalNumber(o,{unit:"quarter"});case"QQQ":return r.quarter(o,{width:"abbreviated",context:"formatting"});case"QQQQQ":return r.quarter(o,{width:"narrow",context:"formatting"});default:return r.quarter(o,{width:"wide",context:"formatting"})}},q:function(e,t,r){let o=Math.ceil((e.getMonth()+1)/3);switch(t){case"q":return String(o);case"qq":return ae(o,2);case"qo":return r.ordinalNumber(o,{unit:"quarter"});case"qqq":return r.quarter(o,{width:"abbreviated",context:"standalone"});case"qqqqq":return r.quarter(o,{width:"narrow",context:"standalone"});default:return r.quarter(o,{width:"wide",context:"standalone"})}},M:function(e,t,r){let o=e.getMonth();switch(t){case"M":case"MM":return Tr.M(e,t);case"Mo":return r.ordinalNumber(o+1,{unit:"month"});case"MMM":return r.month(o,{width:"abbreviated",context:"formatting"});case"MMMMM":return r.month(o,{width:"narrow",context:"formatting"});default:return r.month(o,{width:"wide",context:"formatting"})}},L:function(e,t,r){let o=e.getMonth();switch(t){case"L":return String(o+1);case"LL":return ae(o+1,2);case"Lo":return r.ordinalNumber(o+1,{unit:"month"});case"LLL":return r.month(o,{width:"abbreviated",context:"standalone"});case"LLLLL":return r.month(o,{width:"narrow",context:"standalone"});default:return r.month(o,{width:"wide",context:"standalone"})}},w:function(e,t,r,o){let n=Ev(e,o);return t==="wo"?r.ordinalNumber(n,{unit:"week"}):ae(n,t.length)},I:function(e,t,r){let o=Sv(e);return t==="Io"?r.ordinalNumber(o,{unit:"week"}):ae(o,t.length)},d:function(e,t,r){return t==="do"?r.ordinalNumber(e.getDate(),{unit:"date"}):Tr.d(e,t)},D:function(e,t,r){let o=_v(e);return t==="Do"?r.ordinalNumber(o,{unit:"dayOfYear"}):ae(o,t.length)},E:function(e,t,r){let o=e.getDay();switch(t){case"E":case"EE":case"EEE":return r.day(o,{width:"abbreviated",context:"formatting"});case"EEEEE":return r.day(o,{width:"narrow",context:"formatting"});case"EEEEEE":return r.day(o,{width:"short",context:"formatting"});default:return r.day(o,{width:"wide",context:"formatting"})}},e:function(e,t,r,o){let n=e.getDay(),i=(n-o.weekStartsOn+8)%7||7;switch(t){case"e":return String(i);case"ee":return ae(i,2);case"eo":return r.ordinalNumber(i,{unit:"day"});case"eee":return r.day(n,{width:"abbreviated",context:"formatting"});case"eeeee":return r.day(n,{width:"narrow",context:"formatting"});case"eeeeee":return r.day(n,{width:"short",context:"formatting"});default:return r.day(n,{width:"wide",context:"formatting"})}},c:function(e,t,r,o){let n=e.getDay(),i=(n-o.weekStartsOn+8)%7||7;switch(t){case"c":return String(i);case"cc":return ae(i,t.length);case"co":return r.ordinalNumber(i,{unit:"day"});case"ccc":return r.day(n,{width:"abbreviated",context:"standalone"});case"ccccc":return r.day(n,{width:"narrow",context:"standalone"});case"cccccc":return r.day(n,{width:"short",context:"standalone"});default:return r.day(n,{width:"wide",context:"standalone"})}},i:function(e,t,r){let o=e.getDay(),n=o===0?7:o;switch(t){case"i":return String(n);case"ii":return ae(n,t.length);case"io":return r.ordinalNumber(n,{unit:"day"});case"iii":return r.day(o,{width:"abbreviated",context:"formatting"});case"iiiii":return r.day(o,{width:"narrow",context:"formatting"});case"iiiiii":return r.day(o,{width:"short",context:"formatting"});default:return r.day(o,{width:"wide",context:"formatting"})}},a:function(e,t,r){let n=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"});case"aaa":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return r.dayPeriod(n,{width:"narrow",context:"formatting"});default:return r.dayPeriod(n,{width:"wide",context:"formatting"})}},b:function(e,t,r){let o=e.getHours(),n;switch(o===12?n=dn.noon:o===0?n=dn.midnight:n=o/12>=1?"pm":"am",t){case"b":case"bb":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"});case"bbb":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return r.dayPeriod(n,{width:"narrow",context:"formatting"});default:return r.dayPeriod(n,{width:"wide",context:"formatting"})}},B:function(e,t,r){let o=e.getHours(),n;switch(o>=17?n=dn.evening:o>=12?n=dn.afternoon:o>=4?n=dn.morning:n=dn.night,t){case"B":case"BB":case"BBB":return r.dayPeriod(n,{width:"abbreviated",context:"formatting"});case"BBBBB":return r.dayPeriod(n,{width:"narrow",context:"formatting"});default:return r.dayPeriod(n,{width:"wide",context:"formatting"})}},h:function(e,t,r){if(t==="ho"){let o=e.getHours()%12;return o===0&&(o=12),r.ordinalNumber(o,{unit:"hour"})}return Tr.h(e,t)},H:function(e,t,r){return t==="Ho"?r.ordinalNumber(e.getHours(),{unit:"hour"}):Tr.H(e,t)},K:function(e,t,r){let o=e.getHours()%12;return t==="Ko"?r.ordinalNumber(o,{unit:"hour"}):ae(o,t.length)},k:function(e,t,r){let o=e.getHours();return o===0&&(o=24),t==="ko"?r.ordinalNumber(o,{unit:"hour"}):ae(o,t.length)},m:function(e,t,r){return t==="mo"?r.ordinalNumber(e.getMinutes(),{unit:"minute"}):Tr.m(e,t)},s:function(e,t,r){return t==="so"?r.ordinalNumber(e.getSeconds(),{unit:"second"}):Tr.s(e,t)},S:function(e,t){return Tr.S(e,t)},X:function(e,t,r){let o=e.getTimezoneOffset();if(o===0)return"Z";switch(t){case"X":return Ov(o);case"XXXX":case"XX":return No(o);default:return No(o,":")}},x:function(e,t,r){let o=e.getTimezoneOffset();switch(t){case"x":return Ov(o);case"xxxx":case"xx":return No(o);default:return No(o,":")}},O:function(e,t,r){let o=e.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+Tv(o,":");default:return"GMT"+No(o,":")}},z:function(e,t,r){let o=e.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+Tv(o,":");default:return"GMT"+No(o,":")}},t:function(e,t,r){let o=Math.trunc(+e/1e3);return ae(o,t.length)},T:function(e,t,r){return ae(+e,t.length)}};function Tv(e,t=""){let r=e>0?"-":"+",o=Math.abs(e),n=Math.trunc(o/60),i=o%60;return i===0?r+String(n):r+String(n)+t+ae(i,2)}function Ov(e,t){return e%60===0?(e>0?"-":"+")+ae(Math.abs(e)/60,2):No(e,t)}function No(e,t=""){let r=e>0?"-":"+",o=Math.abs(e),n=ae(Math.trunc(o/60),2),i=ae(o%60,2);return r+n+t+i}var Av=(e,t)=>{switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}},Iv=(e,t)=>{switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}},wy=(e,t)=>{let r=e.match(/(P+)(p+)?/)||[],o=r[1],n=r[2];if(!n)return Av(e,t);let i;switch(o){case"P":i=t.dateTime({width:"short"});break;case"PP":i=t.dateTime({width:"medium"});break;case"PPP":i=t.dateTime({width:"long"});break;default:i=t.dateTime({width:"full"});break}return i.replace("{{date}}",Av(o,t)).replace("{{time}}",Iv(n,t))},Pv={p:Iv,P:wy};var yy=/^D+$/,_y=/^Y+$/,Sy=["D","DD","YY","YYYY"];function Rv(e){return yy.test(e)}function Vv(e){return _y.test(e)}function Nv(e,t,r){let o=Cy(e,t,r);if(console.warn(o),Sy.includes(e))throw new RangeError(o)}function Cy(e,t,r){let o=e[0]==="Y"?"years":"days of the month";return`Use \`${e.toLowerCase()}\` instead of \`${e}\` (in \`${t}\`) for formatting ${o} to the input \`${r}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var Ey=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,Ty=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,Oy=/^'([^]*?)'?$/,Ay=/''/g,Iy=/[a-zA-Z]/;function Oc(e,t,r){let o=io(),n=r?.locale??o.locale??Ec,i=r?.firstWeekContainsDate??r?.locale?.options?.firstWeekContainsDate??o.firstWeekContainsDate??o.locale?.options?.firstWeekContainsDate??1,a=r?.weekStartsOn??r?.locale?.options?.weekStartsOn??o.weekStartsOn??o.locale?.options?.weekStartsOn??0,s=fe(e,r?.in);if(!ln(s))throw new RangeError("Invalid time value");let l=t.match(Ty).map(f=>{let p=f[0];if(p==="p"||p==="P"){let d=Pv[p];return d(f,n.formatLong)}return f}).join("").match(Ey).map(f=>{if(f==="''")return{isToken:!1,value:"'"};let p=f[0];if(p==="'")return{isToken:!1,value:Py(f)};if(Tc[p])return{isToken:!0,value:f};if(p.match(Iy))throw new RangeError("Format string contains an unescaped latin alphabet character `"+p+"`");return{isToken:!1,value:f}});n.localize.preprocessor&&(l=n.localize.preprocessor(s,l));let c={firstWeekContainsDate:i,weekStartsOn:a,locale:n};return l.map(f=>{if(!f.isToken)return f.value;let p=f.value;(!r?.useAdditionalWeekYearTokens&&Vv(p)||!r?.useAdditionalDayOfYearTokens&&Rv(p))&&Nv(p,t,String(e));let d=Tc[p[0]];return d(s,p,n.localize,c)}).join("")}function Py(e){let t=e.match(Oy);return t?t[1].replace(Ay,"'"):e}function Do(e,t,r){return is(e,-t,r)}function ds(e,t,r){return as(e,-t,r)}function Dv(e,t,r){return fv(e,-t,r)}function fs(e,t,r){return mv(e,-t,r)}var H=u(j(),1),Pe=u(z(),1),vt=u(Or(),1);var Ac=u(P(),1),Me={Name:(0,Ac.jsx)("span",{className:"dataviews-filters__summary-filter-text-name"}),Value:(0,Ac.jsx)("span",{className:"dataviews-filters__summary-filter-text-value"})};function Mv(e,t){switch(t){case"days":return Do(new Date,e);case"weeks":return Dv(new Date,e);case"months":return ds(new Date,e);case"years":return fs(new Date,e);default:return new Date}}var Fv={label:(0,H.__)("Is none of"),filterText:(e,t)=>(0,Pe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is none of: %2$s"),e.name,t.map(r=>r.label).join(", ")),Me),filter:((e,t,r)=>{if(!r?.length)return!0;let o=t.getValue({item:e});return Array.isArray(o)?!r.some(n=>o.includes(n)):typeof o=="string"?!r.includes(o):!1}),selection:"multi"},ms=[{name:_e,label:(0,H.__)("Includes"),filterText:(e,t)=>(0,Pe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s includes: %2$s"),e.name,t.map(r=>r.label).join(", ")),Me),filter(e,t,r){if(!r?.length)return!0;let o=t.getValue({item:e});return Array.isArray(o)?r.some(n=>o.includes(n)):typeof o=="string"?r.includes(o):!1},selection:"multi"},{name:Se,...Fv},{name:ot,label:(0,H.__)("Includes all"),filterText:(e,t)=>(0,Pe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s includes all: %2$s"),e.name,t.map(r=>r.label).join(", ")),Me),filter(e,t,r){return r?.length?r.every(o=>t.getValue({item:e})?.includes(o)):!0},selection:"multi"},{name:nt,...Fv},{name:ct,label:(0,H.__)("Between (inc)"),filterText:(e,t)=>(0,Pe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s between (inc): %2$s and %3$s"),e.name,t[0].label[0],t[0].label[1]),Me),filter(e,t,r){if(!Array.isArray(r)||r.length!==2||r[0]===void 0||r[1]===void 0)return!0;let o=t.getValue({item:e});return typeof o=="number"||o instanceof Date||typeof o=="string"?o>=r[0]&&o<=r[1]:!1},selection:"custom"},{name:dt,label:(0,H.__)("In the past"),filterText:(e,t)=>(0,Pe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is in the past: %2$s"),e.name,`${t[0].value.value} ${t[0].value.unit}`),Me),filter(e,t,r){if(r?.value===void 0||r?.unit===void 0)return!0;let o=Mv(r.value,r.unit),n=(0,vt.getDate)(t.getValue({item:e}));return n>=o&&n<=new Date},selection:"custom"},{name:xt,label:(0,H.__)("Over"),filterText:(e,t)=>(0,Pe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is over: %2$s"),e.name,`${t[0].value.value} ${t[0].value.unit}`),Me),filter(e,t,r){if(r?.value===void 0||r?.unit===void 0)return!0;let o=Mv(r.value,r.unit);return(0,vt.getDate)(t.getValue({item:e}))(0,Pe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is: %2$s"),e.name,t[0].label),Me),filter(e,t,r){return r===t.getValue({item:e})||r===void 0},selection:"single"},{name:Ee,label:(0,H.__)("Is not"),filterText:(e,t)=>(0,Pe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is not: %2$s"),e.name,t[0].label),Me),filter(e,t,r){return r!==t.getValue({item:e})},selection:"single"},{name:Fr,label:(0,H.__)("Less than"),filterText:(e,t)=>(0,Pe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is less than: %2$s"),e.name,t[0].label),Me),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})(0,Pe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is greater than: %2$s"),e.name,t[0].label),Me),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})>r},selection:"single"},{name:Br,label:(0,H.__)("Less than or equal"),filterText:(e,t)=>(0,Pe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is less than or equal to: %2$s"),e.name,t[0].label),Me),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})<=r},selection:"single"},{name:jr,label:(0,H.__)("Greater than or equal"),filterText:(e,t)=>(0,Pe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is greater than or equal to: %2$s"),e.name,t[0].label),Me),filter(e,t,r){return r===void 0?!0:t.getValue({item:e})>=r},selection:"single"},{name:Hr,label:(0,H.__)("Before"),filterText:(e,t)=>(0,Pe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is before: %2$s"),e.name,t[0].label),Me),filter(e,t,r){if(r===void 0)return!0;let o=(0,vt.getDate)(r);return(0,vt.getDate)(t.getValue({item:e}))(0,Pe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is after: %2$s"),e.name,t[0].label),Me),filter(e,t,r){if(r===void 0)return!0;let o=(0,vt.getDate)(r);return(0,vt.getDate)(t.getValue({item:e}))>o},selection:"single"},{name:Wr,label:(0,H.__)("Before (inc)"),filterText:(e,t)=>(0,Pe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is on or before: %2$s"),e.name,t[0].label),Me),filter(e,t,r){if(r===void 0)return!0;let o=(0,vt.getDate)(r);return(0,vt.getDate)(t.getValue({item:e}))<=o},selection:"single"},{name:Gr,label:(0,H.__)("After (inc)"),filterText:(e,t)=>(0,Pe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is on or after: %2$s"),e.name,t[0].label),Me),filter(e,t,r){if(r===void 0)return!0;let o=(0,vt.getDate)(r);return(0,vt.getDate)(t.getValue({item:e}))>=o},selection:"single"},{name:$t,label:(0,H.__)("Contains"),filterText:(e,t)=>(0,Pe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s contains: %2$s"),e.name,t[0].label),Me),filter(e,t,r){if(r===void 0)return!0;let o=t.getValue({item:e});return typeof o=="string"&&r&&o.toLowerCase().includes(String(r).toLowerCase())},selection:"single"},{name:Kt,label:(0,H.__)("Doesn't contain"),filterText:(e,t)=>(0,Pe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s doesn't contain: %2$s"),e.name,t[0].label),Me),filter(e,t,r){if(r===void 0)return!0;let o=t.getValue({item:e});return typeof o=="string"&&r&&!o.toLowerCase().includes(String(r).toLowerCase())},selection:"single"},{name:Zt,label:(0,H.__)("Starts with"),filterText:(e,t)=>(0,Pe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s starts with: %2$s"),e.name,t[0].label),Me),filter(e,t,r){if(r===void 0)return!0;let o=t.getValue({item:e});return typeof o=="string"&&r&&o.toLowerCase().startsWith(String(r).toLowerCase())},selection:"single"},{name:Ur,label:(0,H.__)("On"),filterText:(e,t)=>(0,Pe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is: %2$s"),e.name,t[0].label),Me),filter(e,t,r){if(r===void 0)return!0;let o=(0,vt.getDate)(r),n=(0,vt.getDate)(t.getValue({item:e}));return o.getTime()===n.getTime()},selection:"single"},{name:Yr,label:(0,H.__)("Not on"),filterText:(e,t)=>(0,Pe.createInterpolateElement)((0,H.sprintf)((0,H.__)("%1$s is not: %2$s"),e.name,t[0].label),Me),filter(e,t,r){if(r===void 0)return!0;let o=(0,vt.getDate)(r),n=(0,vt.getDate)(t.getValue({item:e}));return o.getTime()!==n.getTime()},selection:"single"}],ko=e=>ms.find(t=>t.name===e),Lv=()=>ms.map(e=>e.name),Bv=e=>ms.filter(t=>t.selection==="single").some(t=>t.name===e),jv=e=>ms.some(t=>t.name===e);var Qe=u(P(),1),Ry="Enter",Vy=" ",Ny=({activeElements:e,filterInView:t,filter:r})=>{if(e===void 0||e.length===0)return r.name;let o=ko(t?.operator);return o!==void 0?o.filterText(r,e):(0,Ar.sprintf)((0,Ar.__)("Unknown status for %1$s"),r.name)};function Dy({filter:e,view:t,onChangeView:r}){let o=e.operators?.map(a=>({value:a,label:ko(a)?.label||a})),n=t.filters?.find(a=>a.field===e.field),i=n?.operator||e.operators[0];return o.length>1&&(0,Qe.jsxs)(L,{direction:"row",gap:"sm",justify:"flex-start",className:"dataviews-filters__summary-operators-container",align:"center",children:[(0,Qe.jsx)(Gt.FlexItem,{className:"dataviews-filters__summary-operators-filter-name",children:e.name}),(0,Qe.jsx)(Gt.SelectControl,{className:"dataviews-filters__summary-operators-filter-select",label:(0,Ar.__)("Conditions"),value:i,options:o,onChange:a=>{let s=a,l=n?.operator,c=n?[...(t.filters??[]).map(f=>{if(f.field===e.field){let p=ko(l)?.selection,d=ko(s)?.selection,m=p!==d||[p,d].includes("custom");return{...f,value:m?void 0:f.value,operator:s}}return f})]:[...t.filters??[],{field:e.field,operator:s,value:void 0}];r({...t,page:1,filters:c})},size:"small",variant:"minimal",hideLabelFromVision:!0})]})}function Hv({addFilterRef:e,openedFilter:t,fields:r,...o}){let n=(0,ps.useRef)(null),{filter:i,view:a,onChangeView:s}=o,l=a.filters?.find(h=>h.field===i.field),c=[],f=(0,ps.useMemo)(()=>{let h=r.find(b=>b.id===i.field);return h&&{...h,getValue:({item:b})=>b[h.id]}},[r,i.field]),{elements:p}=Ye({elements:i.elements,getElements:i.getElements});if(p.length>0)c=p.filter(h=>i.singleSelection?h.value===l?.value:l?.value?.includes(h.value));else if(Array.isArray(l?.value)){let h=l.value.map(b=>f?.getValueFormatted({item:{[f.id]:b},field:f})||String(b));c=[{value:l.value,label:h}]}else if(typeof l?.value=="object")c=[{value:l.value,label:l.value}];else if(l?.value!==void 0){let h=f!==void 0?f.getValueFormatted({item:{[f.id]:l.value},field:f}):String(l.value);c=[{value:l.value,label:h}]}let d=i.isPrimary,m=l?.isLocked,v=!m&&l?.value!==void 0,_=!m&&(!d||v);return(0,Qe.jsx)(Gt.Dropdown,{defaultOpen:t===i.field,contentClassName:"dataviews-filters__summary-popover",popoverProps:{placement:"bottom-start",role:"dialog"},onClose:()=>{n.current?.focus()},renderToggle:({isOpen:h,onToggle:b})=>(0,Qe.jsxs)("div",{className:"dataviews-filters__summary-chip-container",children:[(0,Qe.jsx)(Gt.Tooltip,{text:(0,Ar.sprintf)((0,Ar.__)("Filter by: %1$s"),i.name.toLowerCase()),placement:"top",children:(0,Qe.jsx)("div",{className:Y("dataviews-filters__summary-chip",{"has-reset":_,"has-values":v,"is-not-clickable":m}),role:"button",tabIndex:m?-1:0,onClick:()=>{m||b()},onKeyDown:y=>{!m&&[Ry,Vy].includes(y.key)&&(b(),y.preventDefault())},"aria-disabled":m,"aria-pressed":h,"aria-expanded":h,ref:n,children:(0,Qe.jsx)(Ny,{activeElements:c,filterInView:l,filter:i})})}),_&&(0,Qe.jsx)(Gt.Tooltip,{text:d?(0,Ar.__)("Reset"):(0,Ar.__)("Remove"),placement:"top",children:(0,Qe.jsx)("button",{className:Y("dataviews-filters__summary-chip-remove",{"has-values":v}),onClick:()=>{s({...a,page:1,filters:a.filters?.filter(y=>y.field!==i.field)}),d?n.current?.focus():e.current?.focus()},children:(0,Qe.jsx)(Gt.Icon,{icon:Cl})})})]}),renderContent:()=>(0,Qe.jsxs)(L,{direction:"column",justify:"flex-start",children:[(0,Qe.jsx)(Dy,{...o}),o.filter.hasElements?(0,Qe.jsx)(ev,{...o,filter:{...o.filter,elements:p}}):(0,Qe.jsx)(av,{...o,fields:r})]})})}var vs=u(G(),1),zv=u(j(),1),Wv=u(z(),1);var Ir=u(P(),1),{Menu:di}=Z(vs.privateApis);function Ic({filters:e,view:t,onChangeView:r,setOpenedFilter:o,triggerProps:n}){let i=e.filter(a=>!a.isVisible);return(0,Ir.jsxs)(di,{children:[(0,Ir.jsx)(di.TriggerButton,{...n}),(0,Ir.jsx)(di.Popover,{children:i.map(a=>(0,Ir.jsx)(di.Item,{onClick:()=>{o(a.field),r({...t,page:1,filters:[...t.filters||[],{field:a.field,value:void 0,operator:a.operators[0]}]})},children:(0,Ir.jsx)(di.ItemLabel,{children:a.name})},a.field))})]})}function ky({filters:e,view:t,onChangeView:r,setOpenedFilter:o},n){if(!e.length||e.every(({isPrimary:a})=>a))return null;let i=e.filter(a=>!a.isVisible);return(0,Ir.jsx)(Ic,{triggerProps:{render:(0,Ir.jsx)(vs.Button,{accessibleWhenDisabled:!0,size:"compact",className:"dataviews-filters-button",variant:"tertiary",disabled:!i.length,ref:n}),children:(0,zv.__)("Add filter")},filters:e,view:t,onChangeView:r,setOpenedFilter:o})}var Gv=(0,Wv.forwardRef)(ky);var Uv=u(G(),1),Yv=u(j(),1),qv=u(P(),1);function $v({filters:e,view:t,onChangeView:r}){let o=i=>e.some(a=>a.field===i&&a.isPrimary),n=!t.search&&!t.filters?.some(i=>!i.isLocked&&(i.value!==void 0||!o(i.field)));return(0,qv.jsx)(Uv.Button,{disabled:n,accessibleWhenDisabled:!0,size:"compact",variant:"tertiary",className:"dataviews-filters__reset-button",onClick:()=>{r({...t,page:1,search:"",filters:t.filters?.filter(i=>!!i.isLocked)||[]})},children:(0,Yv.__)("Reset")})}var Kv=u(z(),1);function My(e,t){return(0,Kv.useMemo)(()=>{let r=[];return e.forEach(o=>{if(o.filterBy===!1||!o.hasElements&&!o.Edit)return;let n=o.filterBy.operators,i=!!o.filterBy?.isPrimary,a=t.filters?.some(s=>s.field===o.id&&!!s.isLocked)??!1;r.push({field:o.id,name:o.label,elements:o.elements,getElements:o.getElements,hasElements:o.hasElements,singleSelection:n.some(s=>Bv(s)),operators:n,isVisible:a||i||!!t.filters?.some(s=>s.field===o.id&&jv(s.operator)),isPrimary:i,isLocked:a})}),r.sort((o,n)=>o.isLocked&&!n.isLocked?-1:!o.isLocked&&n.isLocked?1:o.isPrimary&&!n.isPrimary?-1:!o.isPrimary&&n.isPrimary?1:o.name.localeCompare(n.name)),r},[e,t])}var fi=My;var mi=u(P(),1);function Fy({className:e}){let{fields:t,view:r,onChangeView:o,openedFilter:n,setOpenedFilter:i}=(0,fn.useContext)(q),a=(0,fn.useRef)(null),s=fi(t,r),l=(0,mi.jsx)(Gv,{filters:s,view:r,onChangeView:o,ref:a,setOpenedFilter:i},"add-filter"),c=s.filter(p=>p.isVisible);if(c.length===0)return null;let f=[...c.map(p=>(0,mi.jsx)(Hv,{filter:p,view:r,fields:t,onChangeView:o,addFilterRef:a,openedFilter:n},p.field)),l];return f.push((0,mi.jsx)($v,{filters:s,view:r,onChangeView:o},"reset-filters")),(0,mi.jsx)(L,{direction:"row",justify:"flex-start",gap:"sm",style:{width:"fit-content"},wrap:"wrap",className:e,children:f})}var pi=(0,fn.memo)(Fy);var ao=u(z(),1),Zv=u(G(),1);var hs=u(j(),1);var ar=u(P(),1);function Ly(){let{filters:e,view:t,onChangeView:r,setOpenedFilter:o,isShowingFilter:n,setIsShowingFilter:i}=(0,ao.useContext)(q),a=(0,ao.useRef)(null),s=(0,ao.useCallback)(m=>{r(m),i(!0)},[r,i]);if(e.length===0)return null;let l=e.some(m=>m.isVisible),c={label:(0,hs.__)("Add filter"),"aria-expanded":!1,isPressed:!1},f={label:(0,hs._x)("Filter","verb"),"aria-expanded":n,isPressed:n,onClick:()=>{n||o(null),i(!n)}},p=e.some(m=>m.isPrimary||m.isLocked),d=(0,ar.jsx)(Zv.Button,{ref:a,className:"dataviews-filters__visibility-toggle",size:"compact",icon:Vn,disabled:p,accessibleWhenDisabled:!0,...l?f:c});return(0,ar.jsx)("div",{className:"dataviews-filters__container-visibility-toggle",children:l?(0,ar.jsx)(By,{buttonRef:a,filtersCount:t.filters?.length,children:d}):(0,ar.jsx)(Ic,{filters:e,view:t,onChangeView:s,setOpenedFilter:o,triggerProps:{render:d}})})}function By({buttonRef:e,filtersCount:t,children:r}){return(0,ao.useEffect)(()=>()=>{e.current?.focus()},[e]),(0,ar.jsxs)(ar.Fragment,{children:[r,!!t&&(0,ar.jsx)("span",{className:"dataviews-filters-toggle__count",children:t})]})}var gs=Ly;var Xv=u(z(),1);var Qv=u(P(),1);function jy(e){let{isShowingFilter:t}=(0,Xv.useContext)(q);return t?(0,Qv.jsx)(pi,{...e}):null}var bs=jy;var Jv=u(z(),1),eh=u(G(),1),th=u(j(),1);var mn=u(P(),1);function Pc({className:e}){let{actions:t=[],data:r,fields:o,getItemId:n,getItemLevel:i,hasInitiallyLoaded:a,isLoading:s,view:l,onChangeView:c,selection:f,onChangeSelection:p,setOpenedFilter:d,onClickItem:m,isItemClickable:v,renderItemLink:_,defaultLayouts:h,empty:b=(0,mn.jsx)("p",{children:(0,th.__)("No results")})}=(0,Jv.useContext)(q),y=Qt(!a,{delay:200});if(!a)return y?(0,mn.jsx)("div",{className:"dataviews-loading",children:(0,mn.jsx)("p",{children:(0,mn.jsx)(eh.Spinner,{})})}):null;let A=Qr.find(V=>V.type===l.type&&h[V.type])?.component;return(0,mn.jsx)(A,{className:e,actions:t,data:r,fields:o,getItemId:n,getItemLevel:i,isLoading:s,onChangeView:c,onChangeSelection:p,selection:f,setOpenedFilter:d,onClickItem:m,renderItemLink:_,isItemClickable:v,view:l,empty:b})}var rh=u(j(),1),Ut=u(z(),1),oh=u(G(),1),nh=u(bt(),1);var ih=u(P(),1),Hy=(0,Ut.memo)(function({label:t}){let{view:r,onChangeView:o}=(0,Ut.useContext)(q),[n,i,a]=(0,nh.useDebouncedInput)(r.search);(0,Ut.useEffect)(()=>{i(r.search??"")},[r.search,i]);let s=(0,Ut.useRef)(o),l=(0,Ut.useRef)(r);(0,Ut.useEffect)(()=>{s.current=o,l.current=r},[o,r]),(0,Ut.useEffect)(()=>{a!==l.current?.search&&s.current({...l.current,page:1,search:a})},[a]);let c=t||(0,rh.__)("Search");return(0,ih.jsx)(oh.SearchControl,{className:"dataviews-search",onChange:i,value:n,label:c,placeholder:c,size:"compact"})}),Rc=Hy;var Fe=u(G(),1),Pr=u(j(),1),Yt=u(z(),1);var Nc=u(sh(),1),fh=u(bt(),1);var lh=u(G(),1),Vc=u(j(),1),uh=u(z(),1);var ch=u(P(),1);function dh(){let e=(0,uh.useContext)(q),{view:t,onChangeView:r}=e,o=t.infiniteScrollEnabled??!1;return e.hasInfiniteScrollHandler?(0,ch.jsx)(lh.ToggleControl,{label:(0,Vc.__)("Enable infinite scroll"),help:(0,Vc.__)("Automatically load more content as you scroll, instead of showing pagination links."),checked:o,onChange:n=>{r({...t,infiniteScrollEnabled:n})}}):null}var oe=u(P(),1),{Menu:vi}=Z(Fe.privateApis),zy={className:"dataviews-config__popover",placement:"bottom-end",offset:9};function Dc(){let{view:e,onChangeView:t,defaultLayouts:r}=(0,Yt.useContext)(q),o=Object.keys(r);if(o.length<=1)return null;let n=Qr.find(i=>e.type===i.type);return(0,oe.jsxs)(vi,{children:[(0,oe.jsx)(vi.TriggerButton,{render:(0,oe.jsx)(Fe.Button,{size:"compact",icon:n?.icon,label:(0,Pr.__)("Layout")})}),(0,oe.jsx)(vi.Popover,{children:o.map(i=>{let a=Qr.find(s=>s.type===i);return a?(0,oe.jsx)(vi.RadioItem,{value:i,name:"view-actions-available-view",checked:i===e.type,hideOnClick:!0,onChange:s=>{switch(s.target.value){case"list":case"grid":case"table":case"pickerGrid":case"pickerTable":case"activity":let l={...e};return"layout"in l&&delete l.layout,t({...l,type:s.target.value,...r[s.target.value]})}(0,Nc.default)("Invalid dataview")},children:(0,oe.jsx)(vi.ItemLabel,{children:a.label})},i):null})})]})}function Wy(){let{view:e,fields:t,onChangeView:r}=(0,Yt.useContext)(q),o=(0,Yt.useMemo)(()=>t.filter(i=>i.enableSorting!==!1).map(i=>({label:i.label,value:i.id})),[t]);return(0,oe.jsx)(Fe.SelectControl,{__next40pxDefaultSize:!0,label:(0,Pr.__)("Sort by"),value:e.sort?.field,options:o,onChange:n=>{r({...e,sort:{direction:e?.sort?.direction||"desc",field:n},showLevels:!1})}})}function Gy(){let{view:e,fields:t,onChangeView:r}=(0,Yt.useContext)(q);if(t.filter(i=>i.enableSorting!==!1).length===0)return null;let n=e.sort?.direction;return!n&&e.sort?.field&&(n="desc"),(0,oe.jsx)(Fe.__experimentalToggleGroupControl,{className:"dataviews-view-config__sort-direction",__next40pxDefaultSize:!0,isBlock:!0,label:(0,Pr.__)("Order"),value:n,onChange:i=>{if(i==="asc"||i==="desc"){r({...e,sort:{direction:i,field:e.sort?.field||t.find(a=>a.enableSorting!==!1)?.id||""},showLevels:!1});return}(0,Nc.default)("Invalid direction")},children:va.map(i=>(0,oe.jsx)(Fe.__experimentalToggleGroupControlOptionIcon,{value:i,icon:sf[i],label:ga[i]},i))})}function Uy(){let{view:e,config:t,onChangeView:r}=(0,Yt.useContext)(q),{infiniteScrollEnabled:o}=e;return!t||!t.perPageSizes||t.perPageSizes.length<2||t.perPageSizes.length>6||o?null:(0,oe.jsx)(Fe.__experimentalToggleGroupControl,{__next40pxDefaultSize:!0,isBlock:!0,label:(0,Pr.__)("Items per page"),value:e.perPage||10,disabled:!e?.sort?.field,onChange:n=>{let i=typeof n=="number"||n===void 0?n:parseInt(n,10);r({...e,perPage:i,page:1})},children:t.perPageSizes.map(n=>(0,oe.jsx)(Fe.__experimentalToggleGroupControlOption,{value:n,label:n.toString()},n))})}function Yy(){let{onReset:e}=(0,Yt.useContext)(q);return e===void 0?null:(0,oe.jsx)(Fe.Button,{variant:"tertiary",size:"compact",disabled:e===!1,accessibleWhenDisabled:!0,className:"dataviews-view-config__reset-button",onClick:()=>{typeof e=="function"&&e()},children:(0,Pr.__)("Reset view")})}function kc(){let{view:e,onReset:t}=(0,Yt.useContext)(q),r=(0,fh.useInstanceId)(mh,"dataviews-view-config-dropdown"),o=Qr.find(i=>i.type===e.type),n=typeof t=="function";return(0,oe.jsx)(Fe.Dropdown,{expandOnMobile:!0,popoverProps:{...zy,id:r},renderToggle:({onToggle:i,isOpen:a})=>(0,oe.jsxs)("div",{className:"dataviews-view-config__toggle-wrapper",children:[(0,oe.jsx)(Fe.Button,{size:"compact",icon:Tl,label:(0,Pr._x)("View options","View is used as a noun"),onClick:i,"aria-expanded":a?"true":"false","aria-controls":r}),n&&(0,oe.jsx)("span",{className:"dataviews-view-config__modified-indicator"})]}),renderContent:()=>(0,oe.jsx)(Fe.__experimentalDropdownContentWrapper,{paddingSize:"medium",className:"dataviews-config__popover-content-wrapper",children:(0,oe.jsxs)(L,{direction:"column",className:"dataviews-view-config",gap:"xl",children:[(0,oe.jsxs)(L,{direction:"row",justify:"space-between",align:"center",className:"dataviews-view-config__header",children:[(0,oe.jsx)(Fe.__experimentalHeading,{level:2,className:"dataviews-settings-section__title",children:(0,Pr.__)("Appearance")}),(0,oe.jsx)(Yy,{})]}),(0,oe.jsxs)(L,{direction:"column",gap:"lg",children:[(0,oe.jsxs)(L,{direction:"row",gap:"sm",className:"dataviews-view-config__sort-controls",children:[(0,oe.jsx)(Wy,{}),(0,oe.jsx)(Gy,{})]}),!!o?.viewConfigOptions&&(0,oe.jsx)(o.viewConfigOptions,{}),(0,oe.jsx)(dh,{}),(0,oe.jsx)(Uy,{}),(0,oe.jsx)(Ta,{})]})]})})})}function mh(){return(0,oe.jsxs)(oe.Fragment,{children:[(0,oe.jsx)(Dc,{}),(0,oe.jsx)(kc,{})]})}var qy=(0,Yt.memo)(mh),ph=qy;var vh=u(G(),1),hh=u(z(),1);function ve(e,t){let r;return e?.required&&t?.required?r=t?.required?.message?t.required:void 0:e?.pattern&&t?.pattern?r=t.pattern:e?.min&&t?.min?r=t.min:e?.max&&t?.max?r=t.max:e?.minLength&&t?.minLength?r=t.minLength:e?.maxLength&&t?.maxLength?r=t.maxLength:e?.elements&&t?.elements?r=t.elements:t?.custom&&(r=t.custom),r}var gh=u(P(),1),{ValidatedCheckboxControl:$y}=Z(vh.privateApis);function bh({field:e,onChange:t,data:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{getValue:a,setValue:s,label:l,description:c,isValid:f}=e,p=(0,hh.useCallback)(()=>{t(s({item:r,value:!a({item:r})}))},[r,a,t,s]);return(0,gh.jsx)($y,{required:!!e.isValid?.required,markWhenOptional:n,customValidity:ve(f,i),hidden:o,label:l,help:c,checked:a({item:r}),onChange:p})}var xs=u(G(),1),xh=u(z(),1);var Mc=u(P(),1),{ValidatedComboboxControl:Ky}=Z(xs.privateApis);function ws({data:e,field:t,onChange:r,hideLabelFromVision:o,validity:n}){let{label:i,description:a,placeholder:s,getValue:l,setValue:c,isValid:f}=t,p=l({item:e})??"",d=(0,xh.useCallback)(_=>r(c({item:e,value:_??""})),[e,r,c]),{elements:m,isLoading:v}=Ye({elements:t.elements,getElements:t.getElements});return v?(0,Mc.jsx)(xs.Spinner,{}):(0,Mc.jsx)(Ky,{required:!!t.isValid?.required,customValidity:ve(f,n),label:i,value:p,help:a,placeholder:s,options:m,onChange:d,hideLabelFromVision:o,allowReset:!0,expandOnFocus:!0})}var Cs=u(G(),1),Ht=u(z(),1),Ss=u(j(),1),Vt=u(Or(),1);var vn=u(G(),1),Fc=u(z(),1),sr=u(j(),1);var pn=u(P(),1),Zy={[dt]:[{value:"days",label:(0,sr.__)("Days")},{value:"weeks",label:(0,sr.__)("Weeks")},{value:"months",label:(0,sr.__)("Months")},{value:"years",label:(0,sr.__)("Years")}],[xt]:[{value:"days",label:(0,sr.__)("Days ago")},{value:"weeks",label:(0,sr.__)("Weeks ago")},{value:"months",label:(0,sr.__)("Months ago")},{value:"years",label:(0,sr.__)("Years ago")}]};function ys({className:e,data:t,field:r,onChange:o,hideLabelFromVision:n,operator:i}){let a=Zy[i===dt?"inThePast":"over"],{id:s,label:l,getValue:c,setValue:f}=r,p=c({item:t}),{value:d="",unit:m=a[0].value}=p&&typeof p=="object"?p:{},v=(0,Fc.useCallback)(h=>o(f({item:t,value:{value:Number(h),unit:m}})),[o,f,t,m]),_=(0,Fc.useCallback)(h=>o(f({item:t,value:{value:d,unit:h}})),[o,f,t,d]);return(0,pn.jsx)(vn.BaseControl,{id:s,className:Y(e,"dataviews-controls__relative-date"),label:l,hideLabelFromVision:n,children:(0,pn.jsxs)(L,{direction:"row",gap:"sm",children:[(0,pn.jsx)(vn.__experimentalNumberControl,{__next40pxDefaultSize:!0,className:"dataviews-controls__relative-date-number",spinControls:"none",min:1,step:1,value:d,onChange:v}),(0,pn.jsx)(vn.SelectControl,{className:"dataviews-controls__relative-date-unit",__next40pxDefaultSize:!0,label:(0,sr.__)("Unit"),value:m,options:a,onChange:_,hideLabelFromVision:!0})]})})}var wh=u(Or(),1);function _s(e){if(!e)return null;let t=(0,wh.getDate)(e);return t&&ln(t)?t:null}var so=u(P(),1),{DateCalendar:Xy,ValidatedInputControl:Qy}=Z(Cs.privateApis),Jy=e=>e?(0,Vt.dateI18n)("Y-m-d\\TH:i",(0,Vt.getDate)(e)):"";function e1({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:s,description:l,setValue:c,getValue:f,isValid:p}=t,d=f({item:e}),m=typeof d=="string"?d:void 0,[v,_]=(0,Ht.useState)(()=>_s(m)||new Date),h=(0,Ht.useRef)(null),b=(0,Ht.useRef)(void 0),y=(0,Ht.useRef)(null),A=(0,Ht.useCallback)(N=>r(c({item:e,value:N})),[e,r,c]);(0,Ht.useEffect)(()=>()=>{b.current&&clearTimeout(b.current)},[]);let V=(0,Ht.useCallback)(N=>{let g;if(N){let E=(0,Vt.dateI18n)("Y-m-d",N),T;m?T=(0,Vt.dateI18n)("H:i",(0,Vt.getDate)(m)):T=(0,Vt.dateI18n)("H:i",N),g=(0,Vt.getDate)(`${E}T${T}`).toISOString(),A(g),b.current&&clearTimeout(b.current)}else A(void 0);y.current=h.current&&h.current.ownerDocument.activeElement,b.current=setTimeout(()=>{h.current&&(h.current.focus(),h.current.blur(),A(g),y.current&&y.current instanceof HTMLElement&&y.current.focus())},0)},[A,m]),R=(0,Ht.useCallback)(N=>{if(N){let g=(0,Vt.getDate)(N);A(g.toISOString());let E=_s(g.toISOString());E&&_(E)}else A(void 0)},[A]),{format:M}=t,k=M.weekStartsOn??(0,Vt.getSettings)().l10n.startOfWeek,{timezone:{string:S}}=(0,Vt.getSettings)(),I=s;return p?.required&&!n&&!o?I=`${s} (${(0,Ss.__)("Required")})`:!p?.required&&n&&!o&&(I=`${s} (${(0,Ss.__)("Optional")})`),(0,so.jsx)(Cs.BaseControl,{id:a,label:I,help:l,hideLabelFromVision:o,children:(0,so.jsxs)(L,{direction:"column",gap:"lg",children:[(0,so.jsx)(Xy,{style:{width:"100%"},selected:m&&_s(m)||void 0,onSelect:V,month:v,onMonthChange:_,timeZone:S||void 0,weekStartsOn:k}),(0,so.jsx)(Qy,{ref:h,__next40pxDefaultSize:!0,required:!!p?.required,customValidity:ve(p,i),type:"datetime-local",label:(0,Ss.__)("Date time"),hideLabelFromVision:!0,value:Jy(m),onChange:R})]})})}function yh({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){return i===dt||i===xt?(0,so.jsx)(ys,{className:"dataviews-controls__datetime",data:e,field:t,onChange:r,hideLabelFromVision:o,operator:i}):(0,so.jsx)(e1,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a})}var st=u(G(),1),de=u(z(),1),ze=u(j(),1),at=u(Or(),1);var he=u(P(),1),{DateCalendar:t1,DateRangeCalendar:r1}=Z(st.privateApis),o1=[{id:"today",label:(0,ze.__)("Today"),getValue:()=>(0,at.getDate)(null)},{id:"yesterday",label:(0,ze.__)("Yesterday"),getValue:()=>{let e=(0,at.getDate)(null);return Do(e,1)}},{id:"past-week",label:(0,ze.__)("Past week"),getValue:()=>{let e=(0,at.getDate)(null);return Do(e,7)}},{id:"past-month",label:(0,ze.__)("Past month"),getValue:()=>{let e=(0,at.getDate)(null);return ds(e,1)}}],n1=[{id:"last-7-days",label:(0,ze.__)("Last 7 days"),getValue:()=>{let e=(0,at.getDate)(null);return[Do(e,7),e]}},{id:"last-30-days",label:(0,ze.__)("Last 30 days"),getValue:()=>{let e=(0,at.getDate)(null);return[Do(e,30),e]}},{id:"month-to-date",label:(0,ze.__)("Month to date"),getValue:()=>{let e=(0,at.getDate)(null);return[vv(e),e]}},{id:"last-year",label:(0,ze.__)("Last year"),getValue:()=>{let e=(0,at.getDate)(null);return[fs(e,1),e]}},{id:"year-to-date",label:(0,ze.__)("Year to date"),getValue:()=>{let e=(0,at.getDate)(null);return[ls(e),e]}}],hn=e=>{if(!e)return null;let t=(0,at.getDate)(e);return t&&ln(t)?t:null},Lc=e=>e?typeof e=="string"?e:Oc(e,"yyyy-MM-dd"):"";function _h({field:e,validity:t,inputRefs:r,isTouched:o,setIsTouched:n,children:i}){let{isValid:a}=e,[s,l]=(0,de.useState)(void 0),c=(0,de.useCallback)(()=>{let p=Array.isArray(r)?r:[r];for(let d of p){let m=d.current;if(m&&!m.validity.valid){l({type:"invalid",message:m.validationMessage});return}}l(void 0)},[r]);return(0,de.useEffect)(()=>{let p=Array.isArray(r)?r:[r],d=t?ve(a,t):void 0;for(let m of p){let v=m.current;v&&v.setCustomValidity(d?.type==="invalid"&&d.message?d.message:"")}},[r,a,t]),(0,de.useEffect)(()=>{let p=Array.isArray(r)?r:[r],d=m=>{m.preventDefault(),n(!0)};for(let m of p)m.current?.addEventListener("invalid",d);return()=>{for(let m of p)m.current?.removeEventListener("invalid",d)}},[r,n]),(0,de.useEffect)(()=>{if(!o)return;let p=t?ve(a,t):void 0;p?l(p):c()},[o,a,t,c]),(0,he.jsxs)("div",{onBlur:p=>{o||(!p.relatedTarget||!p.currentTarget.contains(p.relatedTarget))&&n(!0)},children:[i,(0,he.jsx)("div",{"aria-live":"polite",children:s&&(0,he.jsxs)("p",{className:Y("components-validated-control__indicator",s.type==="invalid"?"is-invalid":void 0),children:[(0,he.jsx)(st.Icon,{className:"components-validated-control__indicator-icon",icon:Vl,size:16,fill:"currentColor"}),s.message]})})]})}function i1({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:s,setValue:l,getValue:c,isValid:f,format:p}=t,[d,m]=(0,de.useState)(null),v=p.weekStartsOn??(0,at.getSettings)().l10n.startOfWeek,_=c({item:e}),h=typeof _=="string"?_:void 0,[b,y]=(0,de.useState)(()=>hn(h)||new Date),[A,V]=(0,de.useState)(!1),R=(0,de.useRef)(null),M=(0,de.useCallback)(E=>r(l({item:e,value:E})),[e,r,l]),k=(0,de.useCallback)(E=>{let T=E?Oc(E,"yyyy-MM-dd"):void 0;M(T),m(null),V(!0)},[M]),S=(0,de.useCallback)(E=>{let T=E.getValue(),w=Lc(T);y(T),M(w),m(E.id),V(!0)},[M]),I=(0,de.useCallback)(E=>{if(M(E),E){let T=hn(E);T&&y(T)}m(null),V(!0)},[M]),{timezone:{string:N}}=(0,at.getSettings)(),g=s;return f?.required&&!n?g=`${s} (${(0,ze.__)("Required")})`:!f?.required&&n&&(g=`${s} (${(0,ze.__)("Optional")})`),(0,he.jsx)(_h,{field:t,validity:i,inputRefs:R,isTouched:A,setIsTouched:V,children:(0,he.jsx)(st.BaseControl,{id:a,className:"dataviews-controls__date",label:g,hideLabelFromVision:o,children:(0,he.jsxs)(L,{direction:"column",gap:"lg",children:[(0,he.jsxs)(L,{direction:"row",gap:"sm",wrap:"wrap",justify:"flex-start",children:[o1.map(E=>{let T=d===E.id;return(0,he.jsx)(st.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:T,size:"small",onClick:()=>S(E),children:E.label},E.id)}),(0,he.jsx)(st.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:!d,size:"small",disabled:!!d,accessibleWhenDisabled:!1,children:(0,ze.__)("Custom")})]}),(0,he.jsx)(st.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:R,type:"date",label:(0,ze.__)("Date"),hideLabelFromVision:!0,value:h,onChange:I,required:!!t.isValid?.required}),(0,he.jsx)(t1,{style:{width:"100%"},selected:h&&hn(h)||void 0,onSelect:k,month:b,onMonthChange:y,timeZone:N||void 0,weekStartsOn:v})]})})})}function a1({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{id:a,label:s,getValue:l,setValue:c,format:f}=t,p,d=l({item:e});Array.isArray(d)&&d.length===2&&d.every(w=>typeof w=="string")&&(p=d);let m=f.weekStartsOn??(0,at.getSettings)().l10n.startOfWeek,v=(0,de.useCallback)(w=>{r(c({item:e,value:w}))},[e,r,c]),[_,h]=(0,de.useState)(null),b=(0,de.useMemo)(()=>{if(!p)return{from:void 0,to:void 0};let[w,O]=p;return{from:hn(w)||void 0,to:hn(O)||void 0}},[p]),[y,A]=(0,de.useState)(()=>b.from||new Date),[V,R]=(0,de.useState)(!1),M=(0,de.useRef)(null),k=(0,de.useRef)(null),S=(0,de.useCallback)((w,O)=>{w&&O?v([Lc(w),Lc(O)]):!w&&!O&&v(void 0)},[v]),I=(0,de.useCallback)(w=>{S(w?.from,w?.to),h(null),R(!0)},[S]),N=(0,de.useCallback)(w=>{let[O,x]=w.getValue();A(O),S(O,x),h(w.id),R(!0)},[S]),g=(0,de.useCallback)((w,O)=>{let[x,C]=p||[void 0,void 0];if(S(w==="from"?O:x,w==="to"?O:C),O){let W=hn(O);W&&A(W)}h(null),R(!0)},[p,S]),{timezone:E}=(0,at.getSettings)(),T=s;return t.isValid?.required&&!n?T=`${s} (${(0,ze.__)("Required")})`:!t.isValid?.required&&n&&(T=`${s} (${(0,ze.__)("Optional")})`),(0,he.jsx)(_h,{field:t,validity:i,inputRefs:[M,k],isTouched:V,setIsTouched:R,children:(0,he.jsx)(st.BaseControl,{id:a,className:"dataviews-controls__date",label:T,hideLabelFromVision:o,children:(0,he.jsxs)(L,{direction:"column",gap:"lg",children:[(0,he.jsxs)(L,{direction:"row",gap:"sm",wrap:"wrap",justify:"flex-start",children:[n1.map(w=>{let O=_===w.id;return(0,he.jsx)(st.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:O,size:"small",onClick:()=>N(w),children:w.label},w.id)}),(0,he.jsx)(st.Button,{className:"dataviews-controls__date-preset",variant:"tertiary",isPressed:!_,size:"small",accessibleWhenDisabled:!1,disabled:!!_,children:(0,ze.__)("Custom")})]}),(0,he.jsxs)(L,{direction:"row",gap:"sm",justify:"space-between",className:"dataviews-controls__date-range-inputs",children:[(0,he.jsx)(st.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:M,type:"date",label:(0,ze.__)("From"),hideLabelFromVision:!0,value:p?.[0],onChange:w=>g("from",w),required:!!t.isValid?.required}),(0,he.jsx)(st.__experimentalInputControl,{__next40pxDefaultSize:!0,ref:k,type:"date",label:(0,ze.__)("To"),hideLabelFromVision:!0,value:p?.[1],onChange:w=>g("to",w),required:!!t.isValid?.required})]}),(0,he.jsx)(r1,{style:{width:"100%"},selected:b,onSelect:I,month:y,onMonthChange:A,timeZone:E.string||void 0,weekStartsOn:m})]})})})}function Sh({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){return i===dt||i===xt?(0,he.jsx)(ys,{className:"dataviews-controls__date",data:e,field:t,onChange:r,hideLabelFromVision:o,operator:i}):i===ct?(0,he.jsx)(a1,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a}):(0,he.jsx)(i1,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a})}var Es=u(G(),1),Ch=u(z(),1);var Bc=u(P(),1),{ValidatedSelectControl:s1}=Z(Es.privateApis);function Ts({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{type:a,label:s,description:l,getValue:c,setValue:f,isValid:p}=t,d=a==="array",m=c({item:e})??(d?[]:""),v=(0,Ch.useCallback)(b=>r(f({item:e,value:b})),[e,r,f]),{elements:_,isLoading:h}=Ye({elements:t.elements,getElements:t.getElements});return h?(0,Bc.jsx)(Es.Spinner,{}):(0,Bc.jsx)(s1,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:ve(p,i),label:s,value:m,help:l,options:_,onChange:v,__next40pxDefaultSize:!0,hideLabelFromVision:o,multiple:d})}var jc=u(P(),1),l1=10;function Eh(e){let{field:t}=e,{elements:r}=Ye({elements:t.elements,getElements:t.getElements});return r.length>=l1?(0,jc.jsx)(ws,{...e}):(0,jc.jsx)(Ts,{...e})}var As=u(G(),1);var Th=u(G(),1),Oh=u(z(),1);var Ah=u(P(),1),{ValidatedInputControl:u1}=Z(Th.privateApis);function lr({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,type:i,prefix:a,suffix:s,validity:l}){let{label:c,placeholder:f,description:p,getValue:d,setValue:m,isValid:v}=t,_=d({item:e}),h=(0,Oh.useCallback)(b=>r(m({item:e,value:b})),[e,m,r]);return(0,Ah.jsx)(u1,{required:!!v.required,markWhenOptional:n,customValidity:ve(v,l),label:c,placeholder:f,value:_??"",help:p,onChange:h,hideLabelFromVision:o,type:i,prefix:a,suffix:s,pattern:v.pattern?v.pattern.constraint:void 0,minLength:v.minLength?v.minLength.constraint:void 0,maxLength:v.maxLength?v.maxLength.constraint:void 0,__next40pxDefaultSize:!0})}var Os=u(P(),1);function Ih({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,Os.jsx)(lr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:"email",prefix:(0,Os.jsx)(As.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,Os.jsx)(As.Icon,{icon:Pl})})})}var Ps=u(G(),1);var Is=u(P(),1);function Ph({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,Is.jsx)(lr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:"tel",prefix:(0,Is.jsx)(Ps.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,Is.jsx)(Ps.Icon,{icon:Ul})})})}var Vs=u(G(),1);var Rs=u(P(),1);function Rh({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){return(0,Rs.jsx)(lr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:"url",prefix:(0,Rs.jsx)(Vs.__experimentalInputControlPrefixWrapper,{variant:"icon",children:(0,Rs.jsx)(Vs.Icon,{icon:Wl})})})}var Rr=u(G(),1),hi=u(z(),1),Ns=u(j(),1);var lo=u(P(),1),{ValidatedNumberControl:c1}=Z(Rr.privateApis);function Vh(e){if(e===""||e===void 0)return"";let t=Number(e);return Number.isFinite(t)?t:""}function d1({value:e,onChange:t,hideLabelFromVision:r,step:o}){let[n="",i=""]=e,a=(0,hi.useCallback)(l=>t([Vh(l),i]),[t,i]),s=(0,hi.useCallback)(l=>t([n,Vh(l)]),[t,n]);return(0,lo.jsx)(Rr.BaseControl,{help:(0,Ns.__)("The max. value must be greater than the min. value."),children:(0,lo.jsxs)(Rr.Flex,{direction:"row",gap:4,children:[(0,lo.jsx)(Rr.__experimentalNumberControl,{label:(0,Ns.__)("Min."),value:n,max:i?Number(i)-o:void 0,onChange:a,__next40pxDefaultSize:!0,hideLabelFromVision:r,step:o}),(0,lo.jsx)(Rr.__experimentalNumberControl,{label:(0,Ns.__)("Max."),value:i,min:n?Number(n)+o:void 0,onChange:s,__next40pxDefaultSize:!0,hideLabelFromVision:r,step:o})]})})}function Ds({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,operator:i,validity:a}){let s=t.format?.decimals??0,l=Math.pow(10,Math.abs(s)*-1),{label:c,description:f,getValue:p,setValue:d,isValid:m}=t,v=p({item:e})??"",_=(0,hi.useCallback)(b=>{r(d({item:e,value:["",void 0].includes(b)?void 0:Number(b)}))},[e,r,d]),h=(0,hi.useCallback)(b=>{r(d({item:e,value:b}))},[e,r,d]);if(i===ct){let b=["",""];return Array.isArray(v)&&v.length===2&&v.every(y=>typeof y=="number"||y==="")&&(b=v),(0,lo.jsx)(d1,{value:b,onChange:h,hideLabelFromVision:o,step:l})}return(0,lo.jsx)(c1,{required:!!m.required,markWhenOptional:n,customValidity:ve(m,a),label:c,help:f,value:v,onChange:_,__next40pxDefaultSize:!0,hideLabelFromVision:o,step:l,min:m.min?m.min.constraint:void 0,max:m.max?m.max.constraint:void 0})}var Nh=u(P(),1);function Dh(e){return(0,Nh.jsx)(Ds,{...e})}var kh=u(P(),1);function Mh(e){return(0,kh.jsx)(Ds,{...e})}var ks=u(G(),1),Fh=u(z(),1);var Hc=u(P(),1),{ValidatedRadioControl:f1}=Z(ks.privateApis);function Lh({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,description:s,getValue:l,setValue:c,isValid:f}=t,{elements:p,isLoading:d}=Ye({elements:t.elements,getElements:t.getElements}),m=l({item:e}),v=(0,Fh.useCallback)(_=>r(c({item:e,value:_})),[e,r,c]);return d?(0,Hc.jsx)(ks.Spinner,{}):(0,Hc.jsx)(f1,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:ve(f,i),label:a,help:s,onChange:v,options:p,selected:m,hideLabelFromVision:o})}var zc=u(z(),1);var Bh=u(P(),1);function jh({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,config:i,validity:a}){let{prefix:s,suffix:l}=i||{};return(0,Bh.jsx)(lr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:a,prefix:s?(0,zc.createElement)(s):void 0,suffix:l?(0,zc.createElement)(l):void 0})}var Hh=u(G(),1),zh=u(z(),1);var Wh=u(P(),1),{ValidatedToggleControl:m1}=Z(Hh.privateApis);function Gh({field:e,onChange:t,data:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,description:s,getValue:l,setValue:c,isValid:f}=e,p=(0,zh.useCallback)(()=>{t(c({item:r,value:!l({item:r})}))},[t,c,r,l]);return(0,Wh.jsx)(m1,{required:!!f.required,markWhenOptional:n,customValidity:ve(f,i),hidden:o,label:a,help:s,checked:l({item:r}),onChange:p})}var Uh=u(G(),1),Yh=u(z(),1);var qh=u(P(),1),{ValidatedTextareaControl:p1}=Z(Uh.privateApis);function $h({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,config:i,validity:a}){let{rows:s=4}=i||{},{label:l,placeholder:c,description:f,setValue:p,isValid:d}=t,m=t.getValue({item:e}),v=(0,Yh.useCallback)(_=>r(p({item:e,value:_})),[e,r,p]);return(0,qh.jsx)(p1,{required:!!d.required,markWhenOptional:n,customValidity:ve(d,a),label:l,placeholder:c,value:m??"",help:f,onChange:v,rows:s,minLength:d.minLength?d.minLength.constraint:void 0,maxLength:d.maxLength?d.maxLength.constraint:void 0,__next40pxDefaultSize:!0,hideLabelFromVision:o})}var gn=u(G(),1),Kh=u(z(),1);var Ms=u(P(),1),{ValidatedToggleGroupControl:v1}=Z(gn.privateApis);function Zh({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{getValue:a,setValue:s,isValid:l}=t,c=a({item:e}),f=(0,Kh.useCallback)(v=>r(s({item:e,value:v})),[e,r,s]),{elements:p,isLoading:d}=Ye({elements:t.elements,getElements:t.getElements});if(d)return(0,Ms.jsx)(gn.Spinner,{});if(p.length===0)return null;let m=p.find(v=>v.value===c);return(0,Ms.jsx)(v1,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:ve(l,i),__next40pxDefaultSize:!0,isBlock:!0,label:t.label,help:m?.description||t.description,onChange:f,value:c,hideLabelFromVision:o,children:p.map(v=>(0,Ms.jsx)(gn.__experimentalToggleGroupControlOption,{label:v.label,value:v.value},v.value))})}var Fs=u(G(),1),Ls=u(z(),1);var gi=u(P(),1),{ValidatedFormTokenField:h1}=Z(Fs.privateApis);function Xh({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,placeholder:s,getValue:l,setValue:c,isValid:f}=t,p=l({item:e}),{elements:d,isLoading:m}=Ye({elements:t.elements,getElements:t.getElements}),v=(0,Ls.useMemo)(()=>Array.isArray(p)?p.map(h=>d?.find(y=>y.value===h)||{value:h,label:h}):[],[p,d]),_=(0,Ls.useCallback)(h=>{let b=h.map(y=>typeof y=="object"&&"value"in y?y.value:y);r(c({item:e,value:b}))},[r,c,e]);return m?(0,gi.jsx)(Fs.Spinner,{}):(0,gi.jsx)(h1,{required:!!f?.required,markWhenOptional:n,customValidity:ve(f,i),label:o?void 0:a,value:v,onChange:_,placeholder:s,suggestions:d?.map(h=>h.value),__experimentalValidateInput:h=>t.isValid?.elements&&d?d.some(b=>b.value===h||b.label===h):!0,__experimentalExpandOnFocus:d&&d.length>0,__experimentalShowHowTo:!t.isValid?.elements,displayTransform:h=>typeof h=="object"&&"label"in h?h.label:typeof h=="string"&&d&&d.find(y=>y.value===h)?.label||h,__experimentalRenderItem:({item:h})=>{if(typeof h=="string"&&d){let b=d.find(y=>y.value===h);return(0,gi.jsx)("span",{children:b?.label||h})}return(0,gi.jsx)("span",{children:h})}})}var g1={grad:.9,turn:360,rad:360/(2*Math.PI)},Vr=function(e){return typeof e=="string"?e.length>0:typeof e=="number"},qe=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r+0},zt=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e>t?e:t},ag=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},Qh=function(e){return{r:zt(e.r,0,255),g:zt(e.g,0,255),b:zt(e.b,0,255),a:zt(e.a)}},Wc=function(e){return{r:qe(e.r),g:qe(e.g),b:qe(e.b),a:qe(e.a,3)}},b1=/^#([0-9a-f]{3,8})$/i,Bs=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},sg=function(e){var t=e.r,r=e.g,o=e.b,n=e.a,i=Math.max(t,r,o),a=i-Math.min(t,r,o),s=a?i===t?(r-o)/a:i===r?2+(o-t)/a:4+(t-r)/a:0;return{h:60*(s<0?s+6:s),s:i?a/i*100:0,v:i/255*100,a:n}},lg=function(e){var t=e.h,r=e.s,o=e.v,n=e.a;t=t/360*6,r/=100,o/=100;var i=Math.floor(t),a=o*(1-r),s=o*(1-(t-i)*r),l=o*(1-(1-t+i)*r),c=i%6;return{r:255*[o,s,a,a,l,o][c],g:255*[l,o,o,s,a,a][c],b:255*[a,a,l,o,o,s][c],a:n}},Jh=function(e){return{h:ag(e.h),s:zt(e.s,0,100),l:zt(e.l,0,100),a:zt(e.a)}},eg=function(e){return{h:qe(e.h),s:qe(e.s),l:qe(e.l),a:qe(e.a,3)}},tg=function(e){return lg((r=(t=e).s,{h:t.h,s:(r*=((o=t.l)<50?o:100-o)/100)>0?2*r/(o+r)*100:0,v:o+r,a:t.a}));var t,r,o},bi=function(e){return{h:(t=sg(e)).h,s:(n=(200-(r=t.s))*(o=t.v)/100)>0&&n<200?r*o/100/(n<=100?n:200-n)*100:0,l:n/2,a:t.a};var t,r,o,n},x1=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,w1=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,y1=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,_1=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,rg={string:[[function(e){var t=b1.exec(e);return t?(e=t[1]).length<=4?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:e.length===4?qe(parseInt(e[3]+e[3],16)/255,2):1}:e.length===6||e.length===8?{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:e.length===8?qe(parseInt(e.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(e){var t=y1.exec(e)||_1.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:Qh({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(e){var t=x1.exec(e)||w1.exec(e);if(!t)return null;var r,o,n=Jh({h:(r=t[1],o=t[2],o===void 0&&(o="deg"),Number(r)*(g1[o]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return tg(n)},"hsl"]],object:[[function(e){var t=e.r,r=e.g,o=e.b,n=e.a,i=n===void 0?1:n;return Vr(t)&&Vr(r)&&Vr(o)?Qh({r:Number(t),g:Number(r),b:Number(o),a:Number(i)}):null},"rgb"],[function(e){var t=e.h,r=e.s,o=e.l,n=e.a,i=n===void 0?1:n;if(!Vr(t)||!Vr(r)||!Vr(o))return null;var a=Jh({h:Number(t),s:Number(r),l:Number(o),a:Number(i)});return tg(a)},"hsl"],[function(e){var t=e.h,r=e.s,o=e.v,n=e.a,i=n===void 0?1:n;if(!Vr(t)||!Vr(r)||!Vr(o))return null;var a=(function(s){return{h:ag(s.h),s:zt(s.s,0,100),v:zt(s.v,0,100),a:zt(s.a)}})({h:Number(t),s:Number(r),v:Number(o),a:Number(i)});return lg(a)},"hsv"]]},og=function(e,t){for(var r=0;r=.5},e.prototype.toHex=function(){return t=Wc(this.rgba),r=t.r,o=t.g,n=t.b,a=(i=t.a)<1?Bs(qe(255*i)):"","#"+Bs(r)+Bs(o)+Bs(n)+a;var t,r,o,n,i,a},e.prototype.toRgb=function(){return Wc(this.rgba)},e.prototype.toRgbString=function(){return t=Wc(this.rgba),r=t.r,o=t.g,n=t.b,(i=t.a)<1?"rgba("+r+", "+o+", "+n+", "+i+")":"rgb("+r+", "+o+", "+n+")";var t,r,o,n,i},e.prototype.toHsl=function(){return eg(bi(this.rgba))},e.prototype.toHslString=function(){return t=eg(bi(this.rgba)),r=t.h,o=t.s,n=t.l,(i=t.a)<1?"hsla("+r+", "+o+"%, "+n+"%, "+i+")":"hsl("+r+", "+o+"%, "+n+"%)";var t,r,o,n,i},e.prototype.toHsv=function(){return t=sg(this.rgba),{h:qe(t.h),s:qe(t.s),v:qe(t.v),a:qe(t.a,3)};var t},e.prototype.invert=function(){return lt({r:255-(t=this.rgba).r,g:255-t.g,b:255-t.b,a:t.a});var t},e.prototype.saturate=function(t){return t===void 0&&(t=.1),lt(Gc(this.rgba,t))},e.prototype.desaturate=function(t){return t===void 0&&(t=.1),lt(Gc(this.rgba,-t))},e.prototype.grayscale=function(){return lt(Gc(this.rgba,-1))},e.prototype.lighten=function(t){return t===void 0&&(t=.1),lt(ng(this.rgba,t))},e.prototype.darken=function(t){return t===void 0&&(t=.1),lt(ng(this.rgba,-t))},e.prototype.rotate=function(t){return t===void 0&&(t=15),this.hue(this.hue()+t)},e.prototype.alpha=function(t){return typeof t=="number"?lt({r:(r=this.rgba).r,g:r.g,b:r.b,a:t}):qe(this.rgba.a,3);var r},e.prototype.hue=function(t){var r=bi(this.rgba);return typeof t=="number"?lt({h:t,s:r.s,l:r.l,a:r.a}):qe(r.h)},e.prototype.isEqual=function(t){return this.toHex()===lt(t).toHex()},e})(),lt=function(e){return e instanceof ig?e:new ig(e)};var Ct=u(G(),1),Yc=u(z(),1),ug=u(j(),1);var Nr=u(P(),1),{ValidatedInputControl:C1}=Z(Ct.privateApis),E1=({color:e,onColorChange:t})=>{let r=e&<(e).isValid()?e:"#ffffff";return(0,Nr.jsx)(Ct.Dropdown,{className:"dataviews-controls__color-picker-dropdown",popoverProps:{resize:!1},renderToggle:({onToggle:o})=>(0,Nr.jsx)(Ct.Button,{onClick:o,"aria-label":(0,ug.__)("Open color picker"),size:"small",icon:()=>(0,Nr.jsx)(Ct.ColorIndicator,{colorValue:r})}),renderContent:()=>(0,Nr.jsx)(Ct.__experimentalDropdownContentWrapper,{paddingSize:"none",children:(0,Nr.jsx)(Ct.ColorPicker,{color:r,onChange:t,enableAlpha:!0})})})};function cg({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let{label:a,placeholder:s,description:l,setValue:c,isValid:f}=t,p=t.getValue({item:e})||"",d=(0,Yc.useCallback)(v=>{r(c({item:e,value:v}))},[e,r,c]),m=(0,Yc.useCallback)(v=>{r(c({item:e,value:v||""}))},[e,r,c]);return(0,Nr.jsx)(C1,{required:!!t.isValid?.required,markWhenOptional:n,customValidity:ve(f,i),label:a,placeholder:s,value:p,help:l,onChange:m,hideLabelFromVision:o,type:"text",prefix:(0,Nr.jsx)(Ct.__experimentalInputControlPrefixWrapper,{variant:"control",children:(0,Nr.jsx)(E1,{color:p,onColorChange:d})})})}var Hs=u(G(),1),zs=u(z(),1),qc=u(j(),1);var js=u(P(),1);function dg({data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i}){let[a,s]=(0,zs.useState)(!1),l=(0,zs.useCallback)(()=>{s(c=>!c)},[]);return(0,js.jsx)(lr,{data:e,field:t,onChange:r,hideLabelFromVision:o,markWhenOptional:n,validity:i,type:a?"text":"password",suffix:(0,js.jsx)(Hs.__experimentalInputControlSuffixWrapper,{variant:"control",children:(0,js.jsx)(Hs.Button,{icon:a?Dn:eu,onClick:l,size:"small",label:a?(0,qc.__)("Hide password"):(0,qc.__)("Show password")})})})}function Ws(e){return Array.isArray(e.elements)&&e.elements.length>0||typeof e.getElements=="function"}var mg=u(P(),1),fg={adaptiveSelect:Eh,array:Xh,checkbox:bh,color:cg,combobox:ws,datetime:yh,date:Sh,email:Ih,telephone:Ph,url:Rh,integer:Dh,number:Mh,password:dg,radio:Lh,select:Ts,text:jh,toggle:Gh,textarea:$h,toggleGroup:Zh};function T1(e){return e&&typeof e=="object"&&typeof e.control=="string"}function O1(e){let{control:t,...r}=e,o=Gs(t);return o===null?null:function(i){return(0,mg.jsx)(o,{...i,config:r})}}function pg(e,t){return typeof e.Edit=="function"?e.Edit:typeof e.Edit=="string"?Gs(e.Edit):T1(e.Edit)?O1(e.Edit):Ws(e)&&e.type!=="array"?Gs("adaptiveSelect"):t===null?null:Gs(t)}function Gs(e){return Object.keys(fg).includes(e)?fg[e]:null}function A1(e,t,r){if(e.filterBy===!1)return!1;let o=e.filterBy?.operators?.filter(n=>r.includes(n))??t;return o.length===0?!1:{isPrimary:!!e.filterBy?.isPrimary,operators:o}}var vg=A1;var I1=e=>({item:t})=>{let r=e.split("."),o=t;for(let n of r)o.hasOwnProperty(n)?o=o[n]:o=void 0;return o},hg=I1;var P1=e=>({value:t})=>{let r=e.split("."),o={},n=o;for(let i of r.slice(0,-1))n[i]={},n=n[i];return n[r.at(-1)]=t,o},gg=P1;var xg=u(j(),1);function Us({item:e,field:t}){let{elements:r,isLoading:o}=Ye({elements:t.elements,getElements:t.getElements}),n=t.getValue({item:e});return o||r.length===0?n:r?.find(i=>i.value===n)?.label||t.getValue({item:e})}var bg=u(P(),1);function Re({item:e,field:t}){return t.hasElements?(0,bg.jsx)(Us,{item:e,field:t}):t.getValueFormatted({item:e,field:t})}var ur=(e,t,r)=>r==="asc"?e.localeCompare(t):t.localeCompare(e);function Ve(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)}function cr(e,t){if(typeof t.isValid.minLength?.constraint!="number")return!1;let r=t.getValue({item:e});return[void 0,"",null].includes(r)?!0:String(r).length>=t.isValid.minLength.constraint}function dr(e,t){if(typeof t.isValid.maxLength?.constraint!="number")return!1;let r=t.getValue({item:e});return[void 0,"",null].includes(r)?!0:String(r).length<=t.isValid.maxLength.constraint}function fr(e,t){if(t.isValid.pattern?.constraint===void 0)return!0;try{let r=new RegExp(t.isValid.pattern.constraint),o=t.getValue({item:e});return[void 0,"",null].includes(o)?!0:r.test(String(o))}catch{return!1}}function ye(e,t){let o=(t.elements??[]).map(i=>i.value);if(o.length===0)return!0;let n=t.getValue({item:e});return[].concat(n).every(i=>o.includes(i))}function R1({item:e,field:t}){return t.getValue({item:e})}var ht=R1;var V1=/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;function N1(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!V1.test(r)?(0,xg.__)("Value must be a valid email address."):null}var wg={type:"email",render:Re,Edit:"email",sort:ur,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[_e,Se],validOperators:[Ce,Ee,$t,Kt,Zt,_e,Se,ot,nt],format:{},getValueFormatted:ht,validate:{required:Ve,pattern:fr,minLength:cr,maxLength:dr,elements:ye,custom:N1}};var yg=u(j(),1);var bn=(e,t,r)=>r==="asc"?e-t:t-e;function Ys(e,t){if(typeof t.isValid.min?.constraint!="number")return!1;let r=t.getValue({item:e});return[void 0,"",null].includes(r)?!0:Number(r)>=t.isValid.min.constraint}function qs(e,t){if(typeof t.isValid.max?.constraint!="number")return!1;let r=t.getValue({item:e});return[void 0,"",null].includes(r)?!0:Number(r)<=t.isValid.max.constraint}var _g={separatorThousand:","};function D1({item:e,field:t}){let r=t.getValue({item:e});if(r==null)return"";if(r=Number(r),!Number.isFinite(r))return String(r);let o;t.type!=="integer"?o=_g:o=t.format;let{separatorThousand:n}=o,i=Math.trunc(r);return n?String(i).replace(/\B(?=(\d{3})+(?!\d))/g,n):String(i)}function k1(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!Number.isInteger(r)?(0,yg.__)("Value must be an integer."):null}var Sg={type:"integer",render:Re,Edit:"integer",sort:bn,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ce,Ee,Fr,Lr,Br,jr,ct],validOperators:[Ce,Ee,Fr,Lr,Br,jr,ct,_e,Se,ot,nt],format:_g,getValueFormatted:D1,validate:{required:Ve,min:Ys,max:qs,elements:ye,custom:k1}};var Cg=u(j(),1);var Eg={separatorThousand:",",separatorDecimal:".",decimals:2};function M1({item:e,field:t}){let r=t.getValue({item:e});if(r==null)return"";if(r=Number(r),!Number.isFinite(r))return String(r);let o;t.type!=="number"?o=Eg:o=t.format;let{separatorThousand:n,separatorDecimal:i,decimals:a}=o,s=r.toFixed(a),[l,c]=s.split("."),f=n?l.replace(/\B(?=(\d{3})+(?!\d))/g,n):l;return a===0?f:f+i+c}function F1(e){return e===""||e===void 0||e===null}function L1(e,t){let r=t.getValue({item:e});return!F1(r)&&!Number.isFinite(r)?(0,Cg.__)("Value must be a number."):null}var Tg={type:"number",render:Re,Edit:"number",sort:bn,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ce,Ee,Fr,Lr,Br,jr,ct],validOperators:[Ce,Ee,Fr,Lr,Br,jr,ct,_e,Se,ot,nt],format:Eg,getValueFormatted:M1,validate:{required:Ve,min:Ys,max:qs,elements:ye,custom:L1}};var Og={type:"text",render:Re,Edit:"text",sort:ur,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[_e,Se],validOperators:[Ce,Ee,$t,Kt,Zt,_e,Se,ot,nt],format:{},getValueFormatted:ht,validate:{required:Ve,pattern:fr,minLength:cr,maxLength:dr,elements:ye}};var Mo=u(Or(),1);var Ag={datetime:(0,Mo.getSettings)().formats.datetime,weekStartsOn:(0,Mo.getSettings)().l10n.startOfWeek};function B1({item:e,field:t}){let r=t.getValue({item:e});if(["",void 0,null].includes(r))return"";let o;return t.type!=="datetime"?o=Ag:o=t.format,(0,Mo.dateI18n)(o.datetime,(0,Mo.getDate)(r))}var j1=(e,t,r)=>{let o=new Date(e).getTime(),n=new Date(t).getTime();return r==="asc"?o-n:n-o},Ig={type:"datetime",render:Re,Edit:"datetime",sort:j1,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ur,Yr,Hr,zr,Wr,Gr,dt,xt],validOperators:[Ur,Yr,Hr,zr,Wr,Gr,dt,xt],format:Ag,getValueFormatted:B1,validate:{required:Ve,elements:ye}};var Fo=u(Or(),1);var Pg={date:(0,Fo.getSettings)().formats.date,weekStartsOn:(0,Fo.getSettings)().l10n.startOfWeek};function H1({item:e,field:t}){let r=t.getValue({item:e});if(["",void 0,null].includes(r))return"";let o;return t.type!=="date"?o=Pg:o=t.format,(0,Fo.dateI18n)(o.date,(0,Fo.getDate)(r))}var z1=(e,t,r)=>{let o=new Date(e).getTime(),n=new Date(t).getTime();return r==="asc"?o-n:n-o},Rg={type:"date",render:Re,Edit:"date",sort:z1,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ur,Yr,Hr,zr,Wr,Gr,dt,xt,ct],validOperators:[Ur,Yr,Hr,zr,Wr,Gr,dt,xt,ct],format:Pg,getValueFormatted:H1,validate:{required:Ve,elements:ye}};var $s=u(j(),1);function Vg(e,t){return t.getValue({item:e})===!0}function W1({item:e,field:t}){let r=t.getValue({item:e});return r===!0?(0,$s.__)("True"):r===!1?(0,$s.__)("False"):""}function G1(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&![!0,!1].includes(r)?(0,$s.__)("Value must be true, false, or undefined"):null}var U1=(e,t,r)=>{let o=!!e;return o===!!t?0:r==="asc"?o?1:-1:o?-1:1},Ng={type:"boolean",render:Re,Edit:"checkbox",sort:U1,validate:{required:Vg,elements:ye,custom:G1},enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ce,Ee],validOperators:[Ce,Ee],format:{},getValueFormatted:W1};var Dg={type:"media",render:()=>null,Edit:null,sort:()=>0,enableSorting:!1,enableGlobalSearch:!1,defaultOperators:[],validOperators:[],format:{},getValueFormatted:ht,validate:{}};var $c=u(j(),1);function kg(e,t){let r=t.getValue({item:e});return Array.isArray(r)&&r.length>0&&r.every(o=>![void 0,"",null].includes(o))}function Mg({item:e,field:t}){let r=t.getValue({item:e});return(Array.isArray(r)?r:[]).join(", ")}function Y1({item:e,field:t}){return Mg({item:e,field:t})}function q1(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!Array.isArray(r)?(0,$c.__)("Value must be an array."):r.every(o=>typeof o=="string")?null:(0,$c.__)("Every value must be a string.")}var $1=(e,t,r)=>{let o=Array.isArray(e)?e:[],n=Array.isArray(t)?t:[];if(o.length!==n.length)return r==="asc"?o.length-n.length:n.length-o.length;let i=o.join(","),a=n.join(",");return r==="asc"?i.localeCompare(a):a.localeCompare(i)},Fg={type:"array",render:Y1,Edit:"array",sort:$1,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[_e,Se],validOperators:[_e,Se,ot,nt],format:{},getValueFormatted:Mg,validate:{required:kg,elements:ye,custom:q1}};function K1({item:e,field:t}){return t.getValue({item:e})?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":""}var Lg={type:"password",render:Re,Edit:"password",sort:()=>0,enableSorting:!1,enableGlobalSearch:!1,defaultOperators:[],validOperators:[],format:{},getValueFormatted:K1,validate:{required:Ve,pattern:fr,minLength:cr,maxLength:dr,elements:ye}};var Bg={type:"telephone",render:Re,Edit:"telephone",sort:ur,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[_e,Se],validOperators:[Ce,Ee,$t,Kt,Zt,_e,Se,ot,nt],format:{},getValueFormatted:ht,validate:{required:Ve,pattern:fr,minLength:cr,maxLength:dr,elements:ye}};var jg=u(j(),1);var xn=u(P(),1);function Z1({item:e,field:t}){if(t.hasElements)return(0,xn.jsx)(Us,{item:e,field:t});let r=ht({item:e,field:t});return!r||!lt(r).isValid()?r:(0,xn.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[(0,xn.jsx)("div",{style:{width:"16px",height:"16px",borderRadius:"50%",backgroundColor:r,border:"1px solid #ddd",flexShrink:0}}),(0,xn.jsx)("span",{children:r})]})}function X1(e,t){let r=t.getValue({item:e});return![void 0,"",null].includes(r)&&!lt(r).isValid()?(0,jg.__)("Value must be a valid color."):null}var Q1=(e,t,r)=>{let o=lt(e),n=lt(t);if(!o.isValid()&&!n.isValid())return 0;if(!o.isValid())return r==="asc"?1:-1;if(!n.isValid())return r==="asc"?-1:1;let i=o.toHsl(),a=n.toHsl();return i.h!==a.h?r==="asc"?i.h-a.h:a.h-i.h:i.s!==a.s?r==="asc"?i.s-a.s:a.s-i.s:r==="asc"?i.l-a.l:a.l-i.l},Hg={type:"color",render:Z1,Edit:"color",sort:Q1,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[_e,Se],validOperators:[Ce,Ee,_e,Se],format:{},getValueFormatted:ht,validate:{required:Ve,elements:ye,custom:X1}};var zg={type:"url",render:Re,Edit:"url",sort:ur,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[_e,Se],validOperators:[Ce,Ee,$t,Kt,Zt,_e,Se,ot,nt],format:{},getValueFormatted:ht,validate:{required:Ve,pattern:fr,minLength:cr,maxLength:dr,elements:ye}};var J1=(e,t,r)=>typeof e=="number"&&typeof t=="number"?bn(e,t,r):ur(e,t,r),Wg={render:Re,Edit:null,sort:J1,enableSorting:!0,enableGlobalSearch:!1,defaultOperators:[Ce,Ee],validOperators:Lv(),format:{},getValueFormatted:ht,validate:{required:Ve,elements:ye}};function Gg(e,t){let r;e.isValid?.required===!0&&t.validate.required!==void 0&&(r={constraint:!0,validate:t.validate.required});let o;(e.isValid?.elements===!0||e.isValid?.elements===void 0&&(e.elements||e.getElements))&&t.validate.elements!==void 0&&(o={constraint:!0,validate:t.validate.elements});let n;typeof e.isValid?.min=="number"&&t.validate.min!==void 0&&(n={constraint:e.isValid.min,validate:t.validate.min});let i;typeof e.isValid?.max=="number"&&t.validate.max!==void 0&&(i={constraint:e.isValid.max,validate:t.validate.max});let a;typeof e.isValid?.minLength=="number"&&t.validate.minLength!==void 0&&(a={constraint:e.isValid.minLength,validate:t.validate.minLength});let s;typeof e.isValid?.maxLength=="number"&&t.validate.maxLength!==void 0&&(s={constraint:e.isValid.maxLength,validate:t.validate.maxLength});let l;e.isValid?.pattern!==void 0&&t.validate.pattern!==void 0&&(l={constraint:e.isValid?.pattern,validate:t.validate.pattern});let c=e.isValid?.custom??t.validate.custom;return{required:r,elements:o,min:n,max:i,minLength:a,maxLength:s,pattern:l,custom:c}}function Ug(e){return e.validOperators.reduce((t,r)=>{let o=ko(r);return o?.filter&&(t[r]=o.filter),t},{})}function e_(e,t){return{...t.format,...e.format}}var Yg=e_;function t_(e){let t=[wg,Sg,Tg,Og,Ig,Rg,Ng,Dg,Fg,Lg,Bg,Hg,zg].find(r=>r?.type===e);return t||Wg}function qg(e){return e.map(t=>{let r=t_(t.type),o=t.getValue||hg(t.id),n=function(i,a,s){let l=o({item:i}),c=o({item:a});return t.sort?t.sort(l,c,s):r.sort(l,c,s)};return{id:t.id,label:t.label||t.id,header:t.header||t.label||t.id,description:t.description,placeholder:t.placeholder,getValue:o,setValue:t.setValue||gg(t.id),elements:t.elements,getElements:t.getElements,hasElements:Ws(t),isVisible:t.isVisible,enableHiding:t.enableHiding??!0,readOnly:t.readOnly??!1,type:r.type,render:t.render??r.render,Edit:pg(t,r.Edit),sort:n,enableSorting:t.enableSorting??r.enableSorting,enableGlobalSearch:t.enableGlobalSearch??r.enableGlobalSearch,isValid:Gg(t,r),filterBy:vg(t,r.defaultOperators,r.validOperators),filter:Ug(r),format:Yg(t,r),getValueFormatted:t.getValueFormatted??r.getValueFormatted}})}var Nt=u(z(),1),Ks=u(bt(),1);var Je=u(P(),1),r_=()=>!1,o_=Qr.filter(e=>e.isPicker),n_=e=>e.id,i_=[];function a_({search:e=!0,searchLabel:t=void 0}){return(0,Je.jsxs)(Je.Fragment,{children:[(0,Je.jsxs)(L,{direction:"row",align:"top",justify:"space-between",className:"dataviews__view-actions",gap:"xs",children:[(0,Je.jsxs)(L,{direction:"row",gap:"sm",justify:"start",className:"dataviews__search",children:[e&&(0,Je.jsx)(Rc,{label:t}),(0,Je.jsx)(gs,{})]}),(0,Je.jsx)(L,{direction:"row",gap:"xs",style:{flexShrink:0},children:(0,Je.jsx)(ph,{})})]}),(0,Je.jsx)(bs,{className:"dataviews-filters__container"}),(0,Je.jsx)(Pc,{}),(0,Je.jsx)(Nu,{})]})}function s_({view:e,onChangeView:t,fields:r,search:o=!0,searchLabel:n=void 0,actions:i=i_,data:a,getItemId:s=n_,isLoading:l=!1,paginationInfo:c,defaultLayouts:f,selection:p,onChangeSelection:d,children:m,config:v={perPageSizes:[10,20,50,100]},itemListLabel:_,empty:h}){let{infiniteScrollHandler:b}=c,y=(0,Nt.useRef)(null),[A,V]=(0,Nt.useState)(0),R=(0,Ks.useResizeObserver)(O=>{V(O[0].borderBoxSize[0].inlineSize)},{box:"border-box"}),[M,k]=(0,Nt.useState)(null);function S(O){let x=typeof O=="function"?O(p):O;d&&d(x)}let I=(0,Nt.useMemo)(()=>qg(r),[r]),N=fi(I,e),g=(0,Nt.useMemo)(()=>(N||[]).some(O=>O.isPrimary||O.isLocked),[N]),[E,T]=(0,Nt.useState)(g);(0,Nt.useEffect)(()=>{g&&!E&&T(!0)},[g,E]),(0,Nt.useEffect)(()=>{if(!e.infiniteScrollEnabled||!y.current)return;let O=(0,Ks.throttle)(C=>{let F=C.target,D=F.scrollTop,W=F.scrollHeight,Q=F.clientHeight;D+Q>=W-100&&b?.()},100),x=y.current;return x.addEventListener("scroll",O),()=>{x.removeEventListener("scroll",O),O.cancel()}},[b,e.infiniteScrollEnabled]);let w=(0,Nt.useMemo)(()=>Object.fromEntries(Object.entries(f).filter(([O])=>o_.some(x=>x.type===O))),[f]);return w[e.type]?(0,Je.jsx)(q.Provider,{value:{view:e,onChangeView:t,fields:I,actions:i,data:a,isLoading:l,paginationInfo:c,isItemClickable:r_,selection:p,onChangeSelection:S,openedFilter:M,setOpenedFilter:k,getItemId:s,containerWidth:A,containerRef:y,resizeObserverRef:R,defaultLayouts:w,filters:N,isShowingFilter:E,setIsShowingFilter:T,config:v,itemListLabel:_,empty:h,hasInitiallyLoaded:!0,hasInfiniteScrollHandler:!!b},children:(0,Je.jsx)("div",{className:"dataviews-picker-wrapper",ref:y,children:m??(0,Je.jsx)(a_,{search:o,searchLabel:n})})}):null}var mr=s_;mr.BulkActionToolbar=Nu;mr.Filters=pi;mr.FiltersToggled=bs;mr.FiltersToggle=gs;mr.Layout=Pc;mr.LayoutSwitcher=Dc;mr.Pagination=Ru;mr.Search=Rc;mr.ViewConfig=kc;var Kc=mr;var $g=u(j(),1),Kg=u(G(),1),Zg=u(P(),1),l_={id:"alt_text",type:"text",label:(0,$g.__)("Alt text"),isVisible:e=>e?.media_type==="image",render:({item:e})=>e?.alt_text||"-",Edit:({field:e,onChange:t,data:r})=>(0,Zg.jsx)(Kg.TextareaControl,{label:e.label,value:r.alt_text||"",onChange:o=>t({alt_text:o}),rows:2}),enableSorting:!1,filterBy:!1},Zc=l_;var rb=u(j(),1);var Xs=u(z(),1),Xg=u(j(),1);function Zs(e){return e?typeof e=="string"?e:typeof e=="object"&&(e.rendered||e.raw)||"":""}var Qs=u(P(),1);function Qg({item:e}){let[t,r]=(0,Xs.useState)(null),o=e.post,n=e._embedded?.["wp:attached-to"]?.[0]?.id,i=e._embedded?.["wp:attached-to"]?.[0]?.title;return(0,Xs.useEffect)(()=>{o&&o===n&&r(Zs(i)||n?.toString()||""),o||r((0,Xg.__)("(Unattached)"))},[o,n,i]),(0,Qs.jsx)(Qs.Fragment,{children:t})}var el=u(Pn(),1),tl=u(G(),1),Js=u(j(),1),Lo=u(z(),1),Jg=u(bt(),1),eb=u(qt(),1);var Xc=u(P(),1);function tb({data:e,onChange:t}){let r=e.post&&e?._embedded?.["wp:attached-to"]?.[0]?[{label:Zs(e._embedded?.["wp:attached-to"]?.[0]?.title),value:e.post.toString()}]:[],[o,n]=(0,Lo.useState)(r),[i,a]=(0,Lo.useState)([]),[s,l]=(0,Lo.useState)(!1),[c,f]=(0,Lo.useState)(e?.post?.toString()??null),p=(0,eb.useSelect)(h=>h(el.store).getPostTypes(),[]),d=()=>{t({post:0,_embedded:{...e?._embedded,"wp:attached-to":void 0}}),n([])},m=async h=>{l(!0);let b=await(0,el.__experimentalFetchLinkSuggestions)(h,{type:"post",isInitialSuggestions:!0},{});a(b);let y=b.map(A=>({label:A.title,value:A.id.toString()}));n(y),l(!1)},v=h=>{if(!h){d();return}if(f(h),h){let b=i.find(y=>y.id===Number(h));if(b&&p){let y=p.find(V=>V.slug===b?.type),A={...y&&{type:y.slug},id:Number(h),title:{raw:b.title,rendered:b.title}};t({post:Number(h),_embedded:{...e?._embedded,"wp:attached-to":[A]}})}}},_=e.post?(0,Lo.createInterpolateElement)((0,Js.__)("Search for a post or page to attach this media to or ."),{button:(0,Xc.jsx)(tl.Button,{__next40pxDefaultSize:!0,onClick:d,variant:"link",accessibleWhenDisabled:!0})}):(0,Js.__)("Search for a post or page to attach this media to.");return(0,Xc.jsx)(tl.ComboboxControl,{className:"dataviews-media-field__attached-to",__next40pxDefaultSize:!0,isLoading:s,label:(0,Js.__)("Attached to"),help:_,value:c,options:o,onFilterValueChange:(0,Jg.debounce)(h=>m(h),300),onChange:v,hideLabelFromVision:!0})}var u_={id:"attached_to",type:"text",label:(0,rb.__)("Attached to"),Edit:tb,render:Qg,enableSorting:!1,filterBy:!1},Qc=u_;var ib=u(j(),1),ab=u(qt(),1),sb=u(Pn(),1);var ob=u(j(),1),wn=u(z(),1);var rl=u(G(),1),uo=u(P(),1);function nb({item:e}){let t=e?._embedded?.author?.[0],r=t?.name,o=t?.avatar_urls?.[48],[n,i]=(0,wn.useState)("loading");(0,wn.useEffect)(()=>{i("loading")},[o]);let a=(0,wn.useCallback)(l=>{l?.complete&&i("instant")},[]),s=()=>{n==="loading"&&i("loaded")};return(0,uo.jsxs)(rl.__experimentalHStack,{alignment:"left",spacing:0,children:[!!o&&(0,uo.jsx)("div",{className:Y("media-author-field__avatar",{"is-loading":n==="loading","is-loaded":n==="loaded"}),children:(0,uo.jsx)("img",{ref:a,onLoad:s,alt:(0,ob.__)("Author avatar"),src:o})}),!o&&(0,uo.jsx)("div",{className:"media-author-field__icon",children:(0,uo.jsx)(rl.Icon,{icon:Al})}),(0,uo.jsx)("span",{className:"media-author-field__name",children:r})]})}var c_={label:(0,ib.__)("Author"),id:"author",type:"integer",getElements:async()=>(await(0,ab.resolveSelect)(sb.store).getEntityRecords("root","user",{per_page:-1,who:"authors",_fields:"id,name",context:"view"})??[]).map(({id:t,name:r})=>({value:t,label:r})),render:nb,sort:(e,t,r)=>{let o=e._embedded?.author?.[0]?.name||"",n=t._embedded?.author?.[0]?.name||"";return r==="asc"?o.localeCompare(n):n.localeCompare(o)},filterBy:{operators:["isAny","isNone"]},readOnly:!0},Jc=c_;var lb=u(j(),1),ub=u(G(),1);function co(e){return e?typeof e=="string"?e:typeof e=="object"&&"raw"in e&&e.raw||"":""}var cb=u(P(),1),d_={id:"caption",type:"text",label:(0,lb.__)("Caption"),getValue:({item:e})=>co(e?.caption),render:({item:e})=>co(e?.caption)||"-",Edit:({field:e,onChange:t,data:r})=>(0,cb.jsx)(ub.TextareaControl,{label:e.label,value:co(r.caption)||"",onChange:o=>t({caption:o}),rows:2}),enableSorting:!1,filterBy:!1},ed=d_;var db=u(j(),1),fb=u(Or(),1),f_={id:"date",type:"datetime",label:(0,db.__)("Date added"),filterBy:{operators:["before","after"]},format:{datetime:(0,fb.getSettings)().formats.datetimeAbbreviated},readOnly:!0},td=f_;var mb=u(j(),1),pb=u(Or(),1),m_={id:"modified",type:"datetime",label:(0,mb.__)("Date modified"),filterBy:{operators:["before","after"]},format:{datetime:(0,pb.getSettings)().formats.datetimeAbbreviated},readOnly:!0},rd=m_;var vb=u(j(),1),hb=u(G(),1);var od=u(P(),1),p_={id:"description",type:"text",label:(0,vb.__)("Description"),getValue:({item:e})=>co(e?.description),render:({item:e})=>(0,od.jsx)("div",{children:co(e?.description)||"-"}),Edit:({field:e,onChange:t,data:r})=>(0,od.jsx)(hb.TextareaControl,{label:e.label,value:co(r.description)||"",onChange:o=>t({description:o}),rows:5}),enableSorting:!1,filterBy:!1},nd=p_;var _b=u(j(),1),Sb=u(ol(),1);var nl=u(G(),1),xb=u(z(),1),wb=u(ol(),1),yn=u(P(),1),bb=15;function yb({item:e}){let t=(0,xb.useMemo)(()=>e?.source_url?(0,wb.getFilename)(e.source_url):null,[e?.source_url]);return t?t.length>bb?(0,yn.jsx)(nl.Tooltip,{text:t,children:(0,yn.jsx)(nl.__experimentalTruncate,{limit:bb,ellipsizeMode:"tail",children:t})}):(0,yn.jsx)(yn.Fragment,{children:t}):""}var v_={id:"filename",type:"text",label:(0,_b.__)("File name"),getValue:({item:e})=>(0,Sb.getFilename)(e?.source_url||""),render:yb,enableSorting:!1,filterBy:!1,readOnly:!0},id=v_;var ut=u(j(),1),Eb=1024,Tb=1024*Eb,Ob=1024*Tb,Ab=1024*Ob,Ib=1024*Ab,Pb=1024*Ib,Rb=1024*Pb,h_=1024*Rb;function Cb(e,t,r=2){return(0,ut.sprintf)((0,ut._x)("%1$s %2$s","file size"),e.toLocaleString(void 0,{minimumFractionDigits:0,maximumFractionDigits:r}),t)}function g_(e,t=2){if(e===0)return Cb(0,(0,ut._x)("B","unit symbol"),t);let r={[(0,ut._x)("YB","unit symbol")]:h_,[(0,ut._x)("ZB","unit symbol")]:Rb,[(0,ut._x)("EB","unit symbol")]:Pb,[(0,ut._x)("PB","unit symbol")]:Ib,[(0,ut._x)("TB","unit symbol")]:Ab,[(0,ut._x)("GB","unit symbol")]:Ob,[(0,ut._x)("MB","unit symbol")]:Tb,[(0,ut._x)("KB","unit symbol")]:Eb,[(0,ut._x)("B","unit symbol")]:1};for(let[o,n]of Object.entries(r))if(e>=n)return Cb(e/n,o,t);return""}var b_={id:"filesize",type:"text",label:(0,ut.__)("File size"),getValue:({item:e})=>e?.media_details?.filesize?g_(e?.media_details?.filesize):"",isVisible:e=>!!e?.media_details?.filesize,enableSorting:!1,filterBy:!1,readOnly:!0},ad=b_;var _n=u(j(),1),x_={id:"media_dimensions",type:"text",label:(0,_n.__)("Dimensions"),getValue:({item:e})=>e?.media_details?.width&&e?.media_details?.height?(0,_n.sprintf)((0,_n._x)("%1$s \xD7 %2$s","image dimensions"),e?.media_details?.width?.toString(),e?.media_details?.height?.toString()):"",isVisible:e=>!!(e?.media_details?.width&&e?.media_details?.height),enableSorting:!1,filterBy:!1,readOnly:!0},sd=x_;var Fb=u(j(),1);var Vb=u(qt(),1),Nb=u(Pn(),1),Sn=u(G(),1),Db=u(z(),1),kb=u(ol(),1);var xi=u(j(),1);function ld(e){return e.startsWith("image/")?{type:"image",label:(0,xi.__)("Image"),icon:Hl}:e.startsWith("video/")?{type:"video",label:(0,xi.__)("Video"),icon:iu}:e.startsWith("audio/")?{type:"audio",label:(0,xi.__)("Audio"),icon:xl}:{type:"application",label:(0,xi.__)("Application"),icon:Dl}}var pr=u(P(),1);function w_({item:e,filename:t}){return(0,pr.jsx)("div",{className:"dataviews-media-field__media-thumbnail",children:(0,pr.jsxs)(Sn.__experimentalVStack,{justify:"center",alignment:"center",className:"dataviews-media-field__media-thumbnail__stack",spacing:0,children:[(0,pr.jsx)(Sn.Icon,{className:"dataviews-media-field__media-thumbnail--icon",icon:ld(e.mime_type).icon,size:24}),!!t&&(0,pr.jsx)("div",{className:"dataviews-media-field__media-thumbnail__filename",children:(0,pr.jsx)(Sn.__experimentalTruncate,{className:"dataviews-media-field__media-thumbnail__filename__truncate",children:t})})]})})}function Mb({item:e,config:t}){let[r,o]=(0,Db.useState)(!1),n=(0,Vb.useSelect)(s=>{if(e.featured_media)return s(Nb.store).getEntityRecord("postType","attachment",e.featured_media)},[e.featured_media]),i=e.featured_media?n:e;if(!i)return null;let a=(0,kb.getFilename)(i.source_url||"");return r||ld(i.mime_type).type!=="image"?(0,pr.jsx)(w_,{item:i,filename:a||""}):(0,pr.jsx)("div",{className:"dataviews-media-field__media-thumbnail",children:(0,pr.jsx)("img",{className:"dataviews-media-field__media-thumbnail--image",src:i.source_url,srcSet:i?.media_details?.sizes?Object.values(i.media_details.sizes).map(s=>`${s.source_url} ${s.width}w`).join(", "):void 0,sizes:t?.sizes||"100vw",alt:i.alt_text||i.title.raw,onError:()=>o(!0)})})}var y_={id:"media_thumbnail",type:"media",label:(0,Fb.__)("Thumbnail"),render:Mb,enableSorting:!1,filterBy:!1},ud=y_;var Lb=u(j(),1),__={id:"mime_type",type:"text",label:(0,Lb.__)("File type"),getValue:({item:e})=>e?.mime_type||"",render:({item:e})=>e?.mime_type||"-",enableSorting:!1,filterBy:!1,readOnly:!0},cd=__;var al=u(jb(),1),Ub=u(ll(),1);var Hb=u(pu(),1),{lock:zb,unlock:Wb}=(0,Hb.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/media-utils");var fo=u(P(),1),{useEntityRecordsWithPermissions:S_}=Wb(yi.privateApis),Gb="pickerGrid",C_="pickerTable",wi="media-modal",il="media-modal-upload-progress";function Yb({allowedTypes:e,multiple:t=!1,value:r,onSelect:o,onClose:n,onUpload:i,title:a=(0,$e.__)("Select Media"),isOpen:s,isDismissible:l=!0,modalClass:c,search:f=!0,searchLabel:p=(0,$e.__)("Search media")}){let[d,m]=(0,gt.useState)(()=>r?Array.isArray(r)?r.map(String):[String(r)]:[]),{createSuccessNotice:v,createErrorNotice:_,createInfoNotice:h}=(0,_i.useDispatch)(al.store),{invalidateResolution:b}=(0,_i.useDispatch)(yi.store),[y,A]=(0,gt.useState)(()=>({type:Gb,fields:[],showTitle:!1,titleField:"title",mediaField:"media_thumbnail",search:"",page:1,perPage:20,filters:[],layout:{previewSize:170}})),V=(0,gt.useMemo)(()=>{let D={};return y.filters?.forEach(W=>{W.field==="media_type"&&(D.media_type=W.value),W.field==="author"&&(W.operator==="isAny"?D.author=W.value:W.operator==="isNone"&&(D.author_exclude=W.value)),(W.field==="date"||W.field==="modified")&&(W.operator==="before"?D.before=W.value:W.operator==="after"&&(D.after=W.value)),W.field==="mime_type"&&(D.mime_type=W.value)}),D.media_type||(D.media_type=e?.includes("*")?void 0:e),{per_page:y.perPage||20,page:y.page||1,status:"inherit",order:y.sort?.direction,orderby:y.sort?.field,search:y.search,_embed:"author,wp:attached-to",...D}},[y,e]),{records:R,isResolving:M,totalItems:k,totalPages:S}=S_("postType","attachment",V),I=(0,gt.useMemo)(()=>[{...ud,enableHiding:!1},{id:"title",type:"text",label:(0,$e.__)("Title"),getValue:({item:D})=>D.title.raw||D.title.rendered||(0,$e.__)("(no title)")},Zc,ed,nd,td,rd,Jc,id,ad,sd,cd,Qc],[]),N=(0,gt.useMemo)(()=>[{id:"select",label:t?(0,$e.__)("Select"):(0,$e.__)("Select"),isPrimary:!0,supportsBulk:t,async callback(){if(d.length===0)return;let D={include:d,per_page:-1},Q=(await(0,_i.resolveSelect)(yi.store).getEntityRecords("postType","attachment",D)??[]).map(kr).filter(Boolean),ge=t?Q:Q?.[0];o(ge)}}],[t,o,d]),g=(0,gt.useCallback)(()=>{n?.()},[n]),E=i||Vi,T=(0,gt.useCallback)(D=>{if(D.every(Q=>Q.id&&Q.url&&!(0,Ub.isBlobURL)(Q.url))&&D.length>0){v((0,$e.sprintf)((0,$e._n)("Uploaded %s file","Uploaded %s files",D.length),D.length.toLocaleString()),{type:"snackbar",context:wi,id:il});let Q=D.map(ge=>String(ge.id)).filter(Boolean);m(t?ge=>[...ge,...Q]:Q.slice(0,1)),b("getEntityRecords",["postType","attachment",V])}},[v,b,V,t]),w=(0,gt.useCallback)(D=>{_(D.message,{type:"snackbar",context:wi,id:il})},[_]),O=(0,gt.useCallback)(D=>{let W=D.target.files;if(W&&W.length>0){let Q=Array.from(W);h((0,$e.sprintf)((0,$e._n)("Uploading %s file","Uploading %s files",Q.length),Q.length.toLocaleString()),{type:"snackbar",context:wi,id:il,explicitDismiss:!0}),E({allowedTypes:e,filesList:Q,onFileChange:T,onError:w})}},[e,E,h,T,w]),x=(0,gt.useMemo)(()=>({totalItems:k,totalPages:S}),[k,S]),C=(0,gt.useMemo)(()=>({[Gb]:{fields:[],showTitle:!1},[C_]:{fields:["filename","filesize","media_dimensions","author","date"],showTitle:!0}}),[]),F=(0,gt.useMemo)(()=>{if(!e?.includes("*"))return e?.join(",")},[e]);return s?(0,fo.jsxs)(mo.Modal,{title:a,onRequestClose:g,isDismissible:l,className:c,overlayClassName:"media-upload-modal",size:"fill",headerActions:(0,fo.jsx)(mo.FormFileUpload,{accept:F,multiple:!0,onChange:O,__next40pxDefaultSize:!0,render:({openFileDialog:D})=>(0,fo.jsx)(mo.Button,{onClick:D,icon:ou,__next40pxDefaultSize:!0,children:(0,$e.__)("Upload media")})}),children:[(0,fo.jsx)(mo.DropZone,{onFilesDrop:D=>{let W=D;e&&!e.includes("*")&&(W=D.filter(Q=>e.some(ge=>Q.type===ge||Q.type.startsWith(ge.replace("*",""))))),W.length>0&&(h((0,$e.sprintf)((0,$e._n)("Uploading %s file","Uploading %s files",W.length),W.length.toLocaleString()),{type:"snackbar",context:wi,id:il,explicitDismiss:!0}),E({allowedTypes:e,filesList:W,onFileChange:T,onError:w}))},label:(0,$e.__)("Drop files to upload")}),(0,fo.jsx)(Kc,{data:R||[],fields:I,view:y,onChangeView:A,actions:N,selection:d,onChangeSelection:m,isLoading:M,paginationInfo:x,defaultLayouts:C,getItemId:D=>String(D.id),search:f,searchLabel:p,itemListLabel:(0,$e.__)("Media items")}),(0,fo.jsx)(al.SnackbarNotices,{className:"media-upload-modal__snackbar",context:wi})]}):null}var dd={};zb(dd,{sideloadMedia:Od,MediaUploadModal:Yb});return nx(E_);})(); /*! Bundled license information: use-sync-external-store/cjs/use-sync-external-store-shim.production.js: (** * @license React * use-sync-external-store-shim.production.js * * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. *) */ dist/hooks.min.js000064400000011672152375074240007772 0ustar00/*! This file is auto-generated */ "use strict";var wp;(wp||={}).hooks=(()=>{var v=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var w=(e,n)=>{for(var s in n)v(e,s,{get:n[s],enumerable:!0})},D=(e,n,s,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of g(n))!I.call(e,t)&&t!==s&&v(e,t,{get:()=>n[t],enumerable:!(r=S(n,t))||r.enumerable});return e};var T=e=>D(v({},"__esModule",{value:!0}),e);var le={};w(le,{actions:()=>ae,addAction:()=>J,addFilter:()=>K,applyFilters:()=>N,applyFiltersAsync:()=>ee,createHooks:()=>F,currentAction:()=>te,currentFilter:()=>re,defaultHooks:()=>b,didAction:()=>ie,didFilter:()=>se,doAction:()=>X,doActionAsync:()=>Y,doingAction:()=>ne,doingFilter:()=>oe,filters:()=>ce,hasAction:()=>P,hasFilter:()=>Q,removeAction:()=>L,removeAllActions:()=>U,removeAllFilters:()=>W,removeFilter:()=>M});function z(e){return typeof e!="string"||e===""?(console.error("The namespace must be a non-empty string."),!1):/^[a-zA-Z][a-zA-Z0-9_.\-\/]*$/.test(e)?!0:(console.error("The namespace can only contain numbers, letters, dashes, periods, underscores and slashes."),!1)}var m=z;function E(e){return typeof e!="string"||e===""?(console.error("The hook name must be a non-empty string."),!1):/^__/.test(e)?(console.error("The hook name cannot begin with `__`."),!1):/^[a-zA-Z][a-zA-Z0-9_.-]*$/.test(e)?!0:(console.error("The hook name can only contain numbers, letters, dashes, periods and underscores."),!1)}var f=E;function Z(e,n){return function(r,t,a,i=10){let c=e[n];if(!f(r)||!m(t))return;if(typeof a!="function"){console.error("The hook callback must be a function.");return}if(typeof i!="number"){console.error("If specified, the hook priority must be a number.");return}let l={callback:a,priority:i,namespace:t};if(c[r]){let o=c[r].handlers,d;for(d=o.length;d>0&&!(i>=o[d-1].priority);d--);d===o.length?o[d]=l:o.splice(d,0,l),c.__current.forEach(h=>{h.name===r&&h.currentIndex>=d&&h.currentIndex++})}else c[r]={handlers:[l],runs:0};r!=="hookAdded"&&e.doAction("hookAdded",r,t,a,i)}}var H=Z;function C(e,n,s=!1){return function(t,a){let i=e[n];if(!f(t)||!s&&!m(a))return;if(!i[t])return 0;let c=0;if(s)c=i[t].handlers.length,i[t]={runs:i[t].runs,handlers:[]};else{let l=i[t].handlers;for(let o=l.length-1;o>=0;o--)l[o].namespace===a&&(l.splice(o,1),c++,i.__current.forEach(d=>{d.name===t&&d.currentIndex>=o&&d.currentIndex--}))}return t!=="hookRemoved"&&e.doAction("hookRemoved",t,a),c}}var p=C;function O(e,n){return function(r,t){let a=e[n];return typeof t<"u"?r in a&&a[r].handlers.some(i=>i.namespace===t):r in a}}var _=O;function j(e,n,s,r){return function(a,...i){let c=e[n];c[a]||(c[a]={handlers:[],runs:0}),c[a].runs++;let l=c[a].handlers;if(!l||!l.length)return s?i[0]:void 0;let o={name:a,currentIndex:0};async function d(){try{c.__current.add(o);let u=s?i[0]:void 0;for(;o.currentIndex"u"?t.__current.size>0:Array.from(t.__current).some(a=>a.name===r)}}var k=V;function q(e,n){return function(r){let t=e[n];if(f(r))return t[r]&&t[r].runs?t[r].runs:0}}var x=q;var B=class{actions;filters;addAction;addFilter;removeAction;removeFilter;hasAction;hasFilter;removeAllActions;removeAllFilters;doAction;doActionAsync;applyFilters;applyFiltersAsync;currentAction;currentFilter;doingAction;doingFilter;didAction;didFilter;constructor(){this.actions=Object.create(null),this.actions.__current=new Set,this.filters=Object.create(null),this.filters.__current=new Set,this.addAction=H(this,"actions"),this.addFilter=H(this,"filters"),this.removeAction=p(this,"actions"),this.removeFilter=p(this,"filters"),this.hasAction=_(this,"actions"),this.hasFilter=_(this,"filters"),this.removeAllActions=p(this,"actions",!0),this.removeAllFilters=p(this,"filters",!0),this.doAction=A(this,"actions",!1,!1),this.doActionAsync=A(this,"actions",!1,!0),this.applyFilters=A(this,"filters",!0,!1),this.applyFiltersAsync=A(this,"filters",!0,!0),this.currentAction=y(this,"actions"),this.currentFilter=y(this,"filters"),this.doingAction=k(this,"actions"),this.doingFilter=k(this,"filters"),this.didAction=x(this,"actions"),this.didFilter=x(this,"filters")}};function G(){return new B}var F=G;var b=F(),{addAction:J,addFilter:K,removeAction:L,removeFilter:M,hasAction:P,hasFilter:Q,removeAllActions:U,removeAllFilters:W,doAction:X,doActionAsync:Y,applyFilters:N,applyFiltersAsync:ee,currentAction:te,currentFilter:re,doingAction:ne,doingFilter:oe,didAction:ie,didFilter:se,actions:ae,filters:ce}=b;return T(le);})(); dist/editor.js000064400011770546152375074240007371 0ustar00"use strict"; var wp; (wp ||= {}).editor = (() => { var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __require = /* @__PURE__ */ ((x2) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x2, { get: (a3, b3) => (typeof require !== "undefined" ? require : a3)[b3] }) : x2)(function(x2) { if (typeof require !== "undefined") return require.apply(this, arguments); throw Error('Dynamic require of "' + x2 + '" is not supported'); }); var __commonJS = (cb, mod) => function __require4() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all) => { for (var name2 in all) __defProp(target, name2, { get: all[name2], enumerable: true }); }; var __copyProps = (to2, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to2, key) && key !== except) __defProp(to2, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to2; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // package-external:@wordpress/data var require_data = __commonJS({ "package-external:@wordpress/data"(exports, module) { module.exports = window.wp.data; } }); // package-external:@wordpress/core-data var require_core_data = __commonJS({ "package-external:@wordpress/core-data"(exports, module) { module.exports = window.wp.coreData; } }); // package-external:@wordpress/element var require_element = __commonJS({ "package-external:@wordpress/element"(exports, module) { module.exports = window.wp.element; } }); // package-external:@wordpress/compose var require_compose = __commonJS({ "package-external:@wordpress/compose"(exports, module) { module.exports = window.wp.compose; } }); // package-external:@wordpress/hooks var require_hooks = __commonJS({ "package-external:@wordpress/hooks"(exports, module) { module.exports = window.wp.hooks; } }); // package-external:@wordpress/block-editor var require_block_editor = __commonJS({ "package-external:@wordpress/block-editor"(exports, module) { module.exports = window.wp.blockEditor; } }); // package-external:@wordpress/blocks var require_blocks = __commonJS({ "package-external:@wordpress/blocks"(exports, module) { module.exports = window.wp.blocks; } }); // package-external:@wordpress/date var require_date = __commonJS({ "package-external:@wordpress/date"(exports, module) { module.exports = window.wp.date; } }); // package-external:@wordpress/url var require_url = __commonJS({ "package-external:@wordpress/url"(exports, module) { module.exports = window.wp.url; } }); // package-external:@wordpress/deprecated var require_deprecated = __commonJS({ "package-external:@wordpress/deprecated"(exports, module) { module.exports = window.wp.deprecated; } }); // package-external:@wordpress/preferences var require_preferences = __commonJS({ "package-external:@wordpress/preferences"(exports, module) { module.exports = window.wp.preferences; } }); // package-external:@wordpress/primitives var require_primitives = __commonJS({ "package-external:@wordpress/primitives"(exports, module) { module.exports = window.wp.primitives; } }); // vendor-external:react/jsx-runtime var require_jsx_runtime = __commonJS({ "vendor-external:react/jsx-runtime"(exports, module) { module.exports = window.ReactJSXRuntime; } }); // package-external:@wordpress/private-apis var require_private_apis = __commonJS({ "package-external:@wordpress/private-apis"(exports, module) { module.exports = window.wp.privateApis; } }); // package-external:@wordpress/a11y var require_a11y = __commonJS({ "package-external:@wordpress/a11y"(exports, module) { module.exports = window.wp.a11y; } }); // package-external:@wordpress/api-fetch var require_api_fetch = __commonJS({ "package-external:@wordpress/api-fetch"(exports, module) { module.exports = window.wp.apiFetch; } }); // package-external:@wordpress/notices var require_notices = __commonJS({ "package-external:@wordpress/notices"(exports, module) { module.exports = window.wp.notices; } }); // package-external:@wordpress/i18n var require_i18n = __commonJS({ "package-external:@wordpress/i18n"(exports, module) { module.exports = window.wp.i18n; } }); // package-external:@wordpress/html-entities var require_html_entities = __commonJS({ "package-external:@wordpress/html-entities"(exports, module) { module.exports = window.wp.htmlEntities; } }); // node_modules/fast-deep-equal/index.js var require_fast_deep_equal = __commonJS({ "node_modules/fast-deep-equal/index.js"(exports, module) { "use strict"; module.exports = function equal(a3, b3) { if (a3 === b3) return true; if (a3 && b3 && typeof a3 == "object" && typeof b3 == "object") { if (a3.constructor !== b3.constructor) return false; var length, i3, keys; if (Array.isArray(a3)) { length = a3.length; if (length != b3.length) return false; for (i3 = length; i3-- !== 0; ) if (!equal(a3[i3], b3[i3])) return false; return true; } if (a3.constructor === RegExp) return a3.source === b3.source && a3.flags === b3.flags; if (a3.valueOf !== Object.prototype.valueOf) return a3.valueOf() === b3.valueOf(); if (a3.toString !== Object.prototype.toString) return a3.toString() === b3.toString(); keys = Object.keys(a3); length = keys.length; if (length !== Object.keys(b3).length) return false; for (i3 = length; i3-- !== 0; ) if (!Object.prototype.hasOwnProperty.call(b3, keys[i3])) return false; for (i3 = length; i3-- !== 0; ) { var key = keys[i3]; if (!equal(a3[key], b3[key])) return false; } return true; } return a3 !== a3 && b3 !== b3; }; } }); // package-external:@wordpress/media-utils var require_media_utils = __commonJS({ "package-external:@wordpress/media-utils"(exports, module) { module.exports = window.wp.mediaUtils; } }); // package-external:@wordpress/components var require_components = __commonJS({ "package-external:@wordpress/components"(exports, module) { module.exports = window.wp.components; } }); // package-external:@wordpress/patterns var require_patterns = __commonJS({ "package-external:@wordpress/patterns"(exports, module) { module.exports = window.wp.patterns; } }); // package-external:@wordpress/blob var require_blob = __commonJS({ "package-external:@wordpress/blob"(exports, module) { module.exports = window.wp.blob; } }); // vendor-external:react var require_react = __commonJS({ "vendor-external:react"(exports, module) { module.exports = window.React; } }); // vendor-external:react-dom var require_react_dom = __commonJS({ "vendor-external:react-dom"(exports, module) { module.exports = window.ReactDOM; } }); // node_modules/remove-accents/index.js var require_remove_accents = __commonJS({ "node_modules/remove-accents/index.js"(exports, module) { var characterMap = { "\xC0": "A", "\xC1": "A", "\xC2": "A", "\xC3": "A", "\xC4": "A", "\xC5": "A", "\u1EA4": "A", "\u1EAE": "A", "\u1EB2": "A", "\u1EB4": "A", "\u1EB6": "A", "\xC6": "AE", "\u1EA6": "A", "\u1EB0": "A", "\u0202": "A", "\u1EA2": "A", "\u1EA0": "A", "\u1EA8": "A", "\u1EAA": "A", "\u1EAC": "A", "\xC7": "C", "\u1E08": "C", "\xC8": "E", "\xC9": "E", "\xCA": "E", "\xCB": "E", "\u1EBE": "E", "\u1E16": "E", "\u1EC0": "E", "\u1E14": "E", "\u1E1C": "E", "\u0206": "E", "\u1EBA": "E", "\u1EBC": "E", "\u1EB8": "E", "\u1EC2": "E", "\u1EC4": "E", "\u1EC6": "E", "\xCC": "I", "\xCD": "I", "\xCE": "I", "\xCF": "I", "\u1E2E": "I", "\u020A": "I", "\u1EC8": "I", "\u1ECA": "I", "\xD0": "D", "\xD1": "N", "\xD2": "O", "\xD3": "O", "\xD4": "O", "\xD5": "O", "\xD6": "O", "\xD8": "O", "\u1ED0": "O", "\u1E4C": "O", "\u1E52": "O", "\u020E": "O", "\u1ECE": "O", "\u1ECC": "O", "\u1ED4": "O", "\u1ED6": "O", "\u1ED8": "O", "\u1EDC": "O", "\u1EDE": "O", "\u1EE0": "O", "\u1EDA": "O", "\u1EE2": "O", "\xD9": "U", "\xDA": "U", "\xDB": "U", "\xDC": "U", "\u1EE6": "U", "\u1EE4": "U", "\u1EEC": "U", "\u1EEE": "U", "\u1EF0": "U", "\xDD": "Y", "\xE0": "a", "\xE1": "a", "\xE2": "a", "\xE3": "a", "\xE4": "a", "\xE5": "a", "\u1EA5": "a", "\u1EAF": "a", "\u1EB3": "a", "\u1EB5": "a", "\u1EB7": "a", "\xE6": "ae", "\u1EA7": "a", "\u1EB1": "a", "\u0203": "a", "\u1EA3": "a", "\u1EA1": "a", "\u1EA9": "a", "\u1EAB": "a", "\u1EAD": "a", "\xE7": "c", "\u1E09": "c", "\xE8": "e", "\xE9": "e", "\xEA": "e", "\xEB": "e", "\u1EBF": "e", "\u1E17": "e", "\u1EC1": "e", "\u1E15": "e", "\u1E1D": "e", "\u0207": "e", "\u1EBB": "e", "\u1EBD": "e", "\u1EB9": "e", "\u1EC3": "e", "\u1EC5": "e", "\u1EC7": "e", "\xEC": "i", "\xED": "i", "\xEE": "i", "\xEF": "i", "\u1E2F": "i", "\u020B": "i", "\u1EC9": "i", "\u1ECB": "i", "\xF0": "d", "\xF1": "n", "\xF2": "o", "\xF3": "o", "\xF4": "o", "\xF5": "o", "\xF6": "o", "\xF8": "o", "\u1ED1": "o", "\u1E4D": "o", "\u1E53": "o", "\u020F": "o", "\u1ECF": "o", "\u1ECD": "o", "\u1ED5": "o", "\u1ED7": "o", "\u1ED9": "o", "\u1EDD": "o", "\u1EDF": "o", "\u1EE1": "o", "\u1EDB": "o", "\u1EE3": "o", "\xF9": "u", "\xFA": "u", "\xFB": "u", "\xFC": "u", "\u1EE7": "u", "\u1EE5": "u", "\u1EED": "u", "\u1EEF": "u", "\u1EF1": "u", "\xFD": "y", "\xFF": "y", "\u0100": "A", "\u0101": "a", "\u0102": "A", "\u0103": "a", "\u0104": "A", "\u0105": "a", "\u0106": "C", "\u0107": "c", "\u0108": "C", "\u0109": "c", "\u010A": "C", "\u010B": "c", "\u010C": "C", "\u010D": "c", "C\u0306": "C", "c\u0306": "c", "\u010E": "D", "\u010F": "d", "\u0110": "D", "\u0111": "d", "\u0112": "E", "\u0113": "e", "\u0114": "E", "\u0115": "e", "\u0116": "E", "\u0117": "e", "\u0118": "E", "\u0119": "e", "\u011A": "E", "\u011B": "e", "\u011C": "G", "\u01F4": "G", "\u011D": "g", "\u01F5": "g", "\u011E": "G", "\u011F": "g", "\u0120": "G", "\u0121": "g", "\u0122": "G", "\u0123": "g", "\u0124": "H", "\u0125": "h", "\u0126": "H", "\u0127": "h", "\u1E2A": "H", "\u1E2B": "h", "\u0128": "I", "\u0129": "i", "\u012A": "I", "\u012B": "i", "\u012C": "I", "\u012D": "i", "\u012E": "I", "\u012F": "i", "\u0130": "I", "\u0131": "i", "\u0132": "IJ", "\u0133": "ij", "\u0134": "J", "\u0135": "j", "\u0136": "K", "\u0137": "k", "\u1E30": "K", "\u1E31": "k", "K\u0306": "K", "k\u0306": "k", "\u0139": "L", "\u013A": "l", "\u013B": "L", "\u013C": "l", "\u013D": "L", "\u013E": "l", "\u013F": "L", "\u0140": "l", "\u0141": "l", "\u0142": "l", "\u1E3E": "M", "\u1E3F": "m", "M\u0306": "M", "m\u0306": "m", "\u0143": "N", "\u0144": "n", "\u0145": "N", "\u0146": "n", "\u0147": "N", "\u0148": "n", "\u0149": "n", "N\u0306": "N", "n\u0306": "n", "\u014C": "O", "\u014D": "o", "\u014E": "O", "\u014F": "o", "\u0150": "O", "\u0151": "o", "\u0152": "OE", "\u0153": "oe", "P\u0306": "P", "p\u0306": "p", "\u0154": "R", "\u0155": "r", "\u0156": "R", "\u0157": "r", "\u0158": "R", "\u0159": "r", "R\u0306": "R", "r\u0306": "r", "\u0212": "R", "\u0213": "r", "\u015A": "S", "\u015B": "s", "\u015C": "S", "\u015D": "s", "\u015E": "S", "\u0218": "S", "\u0219": "s", "\u015F": "s", "\u0160": "S", "\u0161": "s", "\u0162": "T", "\u0163": "t", "\u021B": "t", "\u021A": "T", "\u0164": "T", "\u0165": "t", "\u0166": "T", "\u0167": "t", "T\u0306": "T", "t\u0306": "t", "\u0168": "U", "\u0169": "u", "\u016A": "U", "\u016B": "u", "\u016C": "U", "\u016D": "u", "\u016E": "U", "\u016F": "u", "\u0170": "U", "\u0171": "u", "\u0172": "U", "\u0173": "u", "\u0216": "U", "\u0217": "u", "V\u0306": "V", "v\u0306": "v", "\u0174": "W", "\u0175": "w", "\u1E82": "W", "\u1E83": "w", "X\u0306": "X", "x\u0306": "x", "\u0176": "Y", "\u0177": "y", "\u0178": "Y", "Y\u0306": "Y", "y\u0306": "y", "\u0179": "Z", "\u017A": "z", "\u017B": "Z", "\u017C": "z", "\u017D": "Z", "\u017E": "z", "\u017F": "s", "\u0192": "f", "\u01A0": "O", "\u01A1": "o", "\u01AF": "U", "\u01B0": "u", "\u01CD": "A", "\u01CE": "a", "\u01CF": "I", "\u01D0": "i", "\u01D1": "O", "\u01D2": "o", "\u01D3": "U", "\u01D4": "u", "\u01D5": "U", "\u01D6": "u", "\u01D7": "U", "\u01D8": "u", "\u01D9": "U", "\u01DA": "u", "\u01DB": "U", "\u01DC": "u", "\u1EE8": "U", "\u1EE9": "u", "\u1E78": "U", "\u1E79": "u", "\u01FA": "A", "\u01FB": "a", "\u01FC": "AE", "\u01FD": "ae", "\u01FE": "O", "\u01FF": "o", "\xDE": "TH", "\xFE": "th", "\u1E54": "P", "\u1E55": "p", "\u1E64": "S", "\u1E65": "s", "X\u0301": "X", "x\u0301": "x", "\u0403": "\u0413", "\u0453": "\u0433", "\u040C": "\u041A", "\u045C": "\u043A", "A\u030B": "A", "a\u030B": "a", "E\u030B": "E", "e\u030B": "e", "I\u030B": "I", "i\u030B": "i", "\u01F8": "N", "\u01F9": "n", "\u1ED2": "O", "\u1ED3": "o", "\u1E50": "O", "\u1E51": "o", "\u1EEA": "U", "\u1EEB": "u", "\u1E80": "W", "\u1E81": "w", "\u1EF2": "Y", "\u1EF3": "y", "\u0200": "A", "\u0201": "a", "\u0204": "E", "\u0205": "e", "\u0208": "I", "\u0209": "i", "\u020C": "O", "\u020D": "o", "\u0210": "R", "\u0211": "r", "\u0214": "U", "\u0215": "u", "B\u030C": "B", "b\u030C": "b", "\u010C\u0323": "C", "\u010D\u0323": "c", "\xCA\u030C": "E", "\xEA\u030C": "e", "F\u030C": "F", "f\u030C": "f", "\u01E6": "G", "\u01E7": "g", "\u021E": "H", "\u021F": "h", "J\u030C": "J", "\u01F0": "j", "\u01E8": "K", "\u01E9": "k", "M\u030C": "M", "m\u030C": "m", "P\u030C": "P", "p\u030C": "p", "Q\u030C": "Q", "q\u030C": "q", "\u0158\u0329": "R", "\u0159\u0329": "r", "\u1E66": "S", "\u1E67": "s", "V\u030C": "V", "v\u030C": "v", "W\u030C": "W", "w\u030C": "w", "X\u030C": "X", "x\u030C": "x", "Y\u030C": "Y", "y\u030C": "y", "A\u0327": "A", "a\u0327": "a", "B\u0327": "B", "b\u0327": "b", "\u1E10": "D", "\u1E11": "d", "\u0228": "E", "\u0229": "e", "\u0190\u0327": "E", "\u025B\u0327": "e", "\u1E28": "H", "\u1E29": "h", "I\u0327": "I", "i\u0327": "i", "\u0197\u0327": "I", "\u0268\u0327": "i", "M\u0327": "M", "m\u0327": "m", "O\u0327": "O", "o\u0327": "o", "Q\u0327": "Q", "q\u0327": "q", "U\u0327": "U", "u\u0327": "u", "X\u0327": "X", "x\u0327": "x", "Z\u0327": "Z", "z\u0327": "z", "\u0439": "\u0438", "\u0419": "\u0418", "\u0451": "\u0435", "\u0401": "\u0415" }; var chars = Object.keys(characterMap).join("|"); var allAccents = new RegExp(chars, "g"); var firstAccent = new RegExp(chars, ""); function matcher(match3) { return characterMap[match3]; } var removeAccents4 = function(string) { return string.replace(allAccents, matcher); }; var hasAccents = function(string) { return !!string.match(firstAccent); }; module.exports = removeAccents4; module.exports.has = hasAccents; module.exports.remove = removeAccents4; } }); // package-external:@wordpress/style-engine var require_style_engine = __commonJS({ "package-external:@wordpress/style-engine"(exports, module) { module.exports = window.wp.styleEngine; } }); // node_modules/fast-deep-equal/es6/index.js var require_es6 = __commonJS({ "node_modules/fast-deep-equal/es6/index.js"(exports, module) { "use strict"; module.exports = function equal(a3, b3) { if (a3 === b3) return true; if (a3 && b3 && typeof a3 == "object" && typeof b3 == "object") { if (a3.constructor !== b3.constructor) return false; var length, i3, keys; if (Array.isArray(a3)) { length = a3.length; if (length != b3.length) return false; for (i3 = length; i3-- !== 0; ) if (!equal(a3[i3], b3[i3])) return false; return true; } if (a3 instanceof Map && b3 instanceof Map) { if (a3.size !== b3.size) return false; for (i3 of a3.entries()) if (!b3.has(i3[0])) return false; for (i3 of a3.entries()) if (!equal(i3[1], b3.get(i3[0]))) return false; return true; } if (a3 instanceof Set && b3 instanceof Set) { if (a3.size !== b3.size) return false; for (i3 of a3.entries()) if (!b3.has(i3[0])) return false; return true; } if (ArrayBuffer.isView(a3) && ArrayBuffer.isView(b3)) { length = a3.length; if (length != b3.length) return false; for (i3 = length; i3-- !== 0; ) if (a3[i3] !== b3[i3]) return false; return true; } if (a3.constructor === RegExp) return a3.source === b3.source && a3.flags === b3.flags; if (a3.valueOf !== Object.prototype.valueOf) return a3.valueOf() === b3.valueOf(); if (a3.toString !== Object.prototype.toString) return a3.toString() === b3.toString(); keys = Object.keys(a3); length = keys.length; if (length !== Object.keys(b3).length) return false; for (i3 = length; i3-- !== 0; ) if (!Object.prototype.hasOwnProperty.call(b3, keys[i3])) return false; for (i3 = length; i3-- !== 0; ) { var key = keys[i3]; if (!equal(a3[key], b3[key])) return false; } return true; } return a3 !== a3 && b3 !== b3; }; } }); // node_modules/deepmerge/dist/cjs.js var require_cjs = __commonJS({ "node_modules/deepmerge/dist/cjs.js"(exports, module) { "use strict"; var isMergeableObject = function isMergeableObject2(value) { return isNonNullObject(value) && !isSpecial(value); }; function isNonNullObject(value) { return !!value && typeof value === "object"; } function isSpecial(value) { var stringValue = Object.prototype.toString.call(value); return stringValue === "[object RegExp]" || stringValue === "[object Date]" || isReactElement(value); } var canUseSymbol = typeof Symbol === "function" && Symbol.for; var REACT_ELEMENT_TYPE = canUseSymbol ? /* @__PURE__ */ Symbol.for("react.element") : 60103; function isReactElement(value) { return value.$$typeof === REACT_ELEMENT_TYPE; } function emptyTarget(val) { return Array.isArray(val) ? [] : {}; } function cloneUnlessOtherwiseSpecified(value, options) { return options.clone !== false && options.isMergeableObject(value) ? deepmerge2(emptyTarget(value), value, options) : value; } function defaultArrayMerge(target, source, options) { return target.concat(source).map(function(element) { return cloneUnlessOtherwiseSpecified(element, options); }); } function getMergeFunction(key, options) { if (!options.customMerge) { return deepmerge2; } var customMerge = options.customMerge(key); return typeof customMerge === "function" ? customMerge : deepmerge2; } function getEnumerableOwnPropertySymbols(target) { return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function(symbol) { return Object.propertyIsEnumerable.call(target, symbol); }) : []; } function getKeys(target) { return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target)); } function propertyIsOnObject(object, property) { try { return property in object; } catch (_) { return false; } } function propertyIsUnsafe(target, key) { return propertyIsOnObject(target, key) && !(Object.hasOwnProperty.call(target, key) && Object.propertyIsEnumerable.call(target, key)); } function mergeObject(target, source, options) { var destination = {}; if (options.isMergeableObject(target)) { getKeys(target).forEach(function(key) { destination[key] = cloneUnlessOtherwiseSpecified(target[key], options); }); } getKeys(source).forEach(function(key) { if (propertyIsUnsafe(target, key)) { return; } if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) { destination[key] = getMergeFunction(key, options)(target[key], source[key], options); } else { destination[key] = cloneUnlessOtherwiseSpecified(source[key], options); } }); return destination; } function deepmerge2(target, source, options) { options = options || {}; options.arrayMerge = options.arrayMerge || defaultArrayMerge; options.isMergeableObject = options.isMergeableObject || isMergeableObject; options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified; var sourceIsArray = Array.isArray(source); var targetIsArray = Array.isArray(target); var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray; if (!sourceAndTargetTypesMatch) { return cloneUnlessOtherwiseSpecified(source, options); } else if (sourceIsArray) { return options.arrayMerge(target, source, options); } else { return mergeObject(target, source, options); } } deepmerge2.all = function deepmergeAll(array, options) { if (!Array.isArray(array)) { throw new Error("first argument should be an array"); } return array.reduce(function(prev, next) { return deepmerge2(prev, next, options); }, {}); }; var deepmerge_1 = deepmerge2; module.exports = deepmerge_1; } }); // node_modules/diff/lib/diff/base.js var require_base = __commonJS({ "node_modules/diff/lib/diff/base.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = Diff; function Diff() { } Diff.prototype = { /*istanbul ignore start*/ /*istanbul ignore end*/ diff: function diff(oldString, newString) { var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; var callback = options.callback; if (typeof options === "function") { callback = options; options = {}; } this.options = options; var self = this; function done(value) { if (callback) { setTimeout(function() { callback(void 0, value); }, 0); return true; } else { return value; } } oldString = this.castInput(oldString); newString = this.castInput(newString); oldString = this.removeEmpty(this.tokenize(oldString)); newString = this.removeEmpty(this.tokenize(newString)); var newLen = newString.length, oldLen = oldString.length; var editLength = 1; var maxEditLength = newLen + oldLen; var bestPath = [{ newPos: -1, components: [] }]; var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { return done([{ value: this.join(newString), count: newString.length }]); } function execEditLength() { for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) { var basePath = ( /*istanbul ignore start*/ void 0 ); var addPath = bestPath[diagonalPath - 1], removePath = bestPath[diagonalPath + 1], _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; if (addPath) { bestPath[diagonalPath - 1] = void 0; } var canAdd = addPath && addPath.newPos + 1 < newLen, canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen; if (!canAdd && !canRemove) { bestPath[diagonalPath] = void 0; continue; } if (!canAdd || canRemove && addPath.newPos < removePath.newPos) { basePath = clonePath(removePath); self.pushComponent(basePath.components, void 0, true); } else { basePath = addPath; basePath.newPos++; self.pushComponent(basePath.components, true, void 0); } _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) { return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken)); } else { bestPath[diagonalPath] = basePath; } } editLength++; } if (callback) { (function exec() { setTimeout(function() { if (editLength > maxEditLength) { return callback(); } if (!execEditLength()) { exec(); } }, 0); })(); } else { while (editLength <= maxEditLength) { var ret = execEditLength(); if (ret) { return ret; } } } }, /*istanbul ignore start*/ /*istanbul ignore end*/ pushComponent: function pushComponent(components, added, removed) { var last = components[components.length - 1]; if (last && last.added === added && last.removed === removed) { components[components.length - 1] = { count: last.count + 1, added, removed }; } else { components.push({ count: 1, added, removed }); } }, /*istanbul ignore start*/ /*istanbul ignore end*/ extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) { var newLen = newString.length, oldLen = oldString.length, newPos = basePath.newPos, oldPos = newPos - diagonalPath, commonCount = 0; while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { newPos++; oldPos++; commonCount++; } if (commonCount) { basePath.components.push({ count: commonCount }); } basePath.newPos = newPos; return oldPos; }, /*istanbul ignore start*/ /*istanbul ignore end*/ equals: function equals(left, right) { if (this.options.comparator) { return this.options.comparator(left, right); } else { return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase(); } }, /*istanbul ignore start*/ /*istanbul ignore end*/ removeEmpty: function removeEmpty(array) { var ret = []; for (var i3 = 0; i3 < array.length; i3++) { if (array[i3]) { ret.push(array[i3]); } } return ret; }, /*istanbul ignore start*/ /*istanbul ignore end*/ castInput: function castInput(value) { return value; }, /*istanbul ignore start*/ /*istanbul ignore end*/ tokenize: function tokenize(value) { return value.split(""); }, /*istanbul ignore start*/ /*istanbul ignore end*/ join: function join(chars) { return chars.join(""); } }; function buildValues(diff, components, newString, oldString, useLongestToken) { var componentPos = 0, componentLen = components.length, newPos = 0, oldPos = 0; for (; componentPos < componentLen; componentPos++) { var component = components[componentPos]; if (!component.removed) { if (!component.added && useLongestToken) { var value = newString.slice(newPos, newPos + component.count); value = value.map(function(value2, i3) { var oldValue = oldString[oldPos + i3]; return oldValue.length > value2.length ? oldValue : value2; }); component.value = diff.join(value); } else { component.value = diff.join(newString.slice(newPos, newPos + component.count)); } newPos += component.count; if (!component.added) { oldPos += component.count; } } else { component.value = diff.join(oldString.slice(oldPos, oldPos + component.count)); oldPos += component.count; if (componentPos && components[componentPos - 1].added) { var tmp = components[componentPos - 1]; components[componentPos - 1] = components[componentPos]; components[componentPos] = tmp; } } } var lastComponent = components[componentLen - 1]; if (componentLen > 1 && typeof lastComponent.value === "string" && (lastComponent.added || lastComponent.removed) && diff.equals("", lastComponent.value)) { components[componentLen - 2].value += lastComponent.value; components.pop(); } return components; } function clonePath(path) { return { newPos: path.newPos, components: path.components.slice(0) }; } } }); // node_modules/diff/lib/diff/array.js var require_array = __commonJS({ "node_modules/diff/lib/diff/array.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.diffArrays = diffArrays3; exports.arrayDiff = void 0; var _base = _interopRequireDefault(require_base()); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var arrayDiff = new /*istanbul ignore start*/ _base.default(); exports.arrayDiff = arrayDiff; arrayDiff.tokenize = function(value) { return value.slice(); }; arrayDiff.join = arrayDiff.removeEmpty = function(value) { return value; }; function diffArrays3(oldArr, newArr, callback) { return arrayDiff.diff(oldArr, newArr, callback); } } }); // node_modules/diff/lib/util/params.js var require_params = __commonJS({ "node_modules/diff/lib/util/params.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateOptions = generateOptions; function generateOptions(options, defaults2) { if (typeof options === "function") { defaults2.callback = options; } else if (options) { for (var name2 in options) { if (options.hasOwnProperty(name2)) { defaults2[name2] = options[name2]; } } } return defaults2; } } }); // node_modules/diff/lib/diff/word.js var require_word = __commonJS({ "node_modules/diff/lib/diff/word.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.diffWords = diffWords3; exports.diffWordsWithSpace = diffWordsWithSpace; exports.wordDiff = void 0; var _base = _interopRequireDefault(require_base()); var _params = require_params(); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/; var reWhitespace = /\S/; var wordDiff = new /*istanbul ignore start*/ _base.default(); exports.wordDiff = wordDiff; wordDiff.equals = function(left, right) { if (this.options.ignoreCase) { left = left.toLowerCase(); right = right.toLowerCase(); } return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right); }; wordDiff.tokenize = function(value) { var tokens = value.split(/(\s+|[()[\]{}'"]|\b)/); for (var i3 = 0; i3 < tokens.length - 1; i3++) { if (!tokens[i3 + 1] && tokens[i3 + 2] && extendedWordChars.test(tokens[i3]) && extendedWordChars.test(tokens[i3 + 2])) { tokens[i3] += tokens[i3 + 2]; tokens.splice(i3 + 1, 2); i3--; } } return tokens; }; function diffWords3(oldStr, newStr, options) { options = /*istanbul ignore start*/ (0, /*istanbul ignore end*/ /*istanbul ignore start*/ _params.generateOptions)(options, { ignoreWhitespace: true }); return wordDiff.diff(oldStr, newStr, options); } function diffWordsWithSpace(oldStr, newStr, options) { return wordDiff.diff(oldStr, newStr, options); } } }); // package-external:@wordpress/block-serialization-default-parser var require_block_serialization_default_parser = __commonJS({ "package-external:@wordpress/block-serialization-default-parser"(exports, module) { module.exports = window.wp.blockSerializationDefaultParser; } }); // package-external:@wordpress/rich-text var require_rich_text = __commonJS({ "package-external:@wordpress/rich-text"(exports, module) { module.exports = window.wp.richText; } }); // package-external:@wordpress/commands var require_commands = __commonJS({ "package-external:@wordpress/commands"(exports, module) { module.exports = window.wp.commands; } }); // package-external:@wordpress/viewport var require_viewport = __commonJS({ "package-external:@wordpress/viewport"(exports, module) { module.exports = window.wp.viewport; } }); // package-external:@wordpress/plugins var require_plugins = __commonJS({ "package-external:@wordpress/plugins"(exports, module) { module.exports = window.wp.plugins; } }); // package-external:@wordpress/upload-media var require_upload_media = __commonJS({ "package-external:@wordpress/upload-media"(exports, module) { module.exports = window.wp.uploadMedia; } }); // package-external:@wordpress/keyboard-shortcuts var require_keyboard_shortcuts = __commonJS({ "package-external:@wordpress/keyboard-shortcuts"(exports, module) { module.exports = window.wp.keyboardShortcuts; } }); // package-external:@wordpress/keycodes var require_keycodes = __commonJS({ "package-external:@wordpress/keycodes"(exports, module) { module.exports = window.wp.keycodes; } }); // package-external:@wordpress/dom var require_dom = __commonJS({ "package-external:@wordpress/dom"(exports, module) { module.exports = window.wp.dom; } }); // package-external:@wordpress/warning var require_warning = __commonJS({ "package-external:@wordpress/warning"(exports, module) { module.exports = window.wp.warning; } }); // node_modules/react-is/cjs/react-is.development.js var require_react_is_development = __commonJS({ "node_modules/react-is/cjs/react-is.development.js"(exports) { "use strict"; if (true) { (function() { "use strict"; var hasSymbol = typeof Symbol === "function" && Symbol.for; var REACT_ELEMENT_TYPE = hasSymbol ? /* @__PURE__ */ Symbol.for("react.element") : 60103; var REACT_PORTAL_TYPE = hasSymbol ? /* @__PURE__ */ Symbol.for("react.portal") : 60106; var REACT_FRAGMENT_TYPE = hasSymbol ? /* @__PURE__ */ Symbol.for("react.fragment") : 60107; var REACT_STRICT_MODE_TYPE = hasSymbol ? /* @__PURE__ */ Symbol.for("react.strict_mode") : 60108; var REACT_PROFILER_TYPE = hasSymbol ? /* @__PURE__ */ Symbol.for("react.profiler") : 60114; var REACT_PROVIDER_TYPE = hasSymbol ? /* @__PURE__ */ Symbol.for("react.provider") : 60109; var REACT_CONTEXT_TYPE = hasSymbol ? /* @__PURE__ */ Symbol.for("react.context") : 60110; var REACT_ASYNC_MODE_TYPE = hasSymbol ? /* @__PURE__ */ Symbol.for("react.async_mode") : 60111; var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? /* @__PURE__ */ Symbol.for("react.concurrent_mode") : 60111; var REACT_FORWARD_REF_TYPE = hasSymbol ? /* @__PURE__ */ Symbol.for("react.forward_ref") : 60112; var REACT_SUSPENSE_TYPE = hasSymbol ? /* @__PURE__ */ Symbol.for("react.suspense") : 60113; var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? /* @__PURE__ */ Symbol.for("react.suspense_list") : 60120; var REACT_MEMO_TYPE = hasSymbol ? /* @__PURE__ */ Symbol.for("react.memo") : 60115; var REACT_LAZY_TYPE = hasSymbol ? /* @__PURE__ */ Symbol.for("react.lazy") : 60116; var REACT_BLOCK_TYPE = hasSymbol ? /* @__PURE__ */ Symbol.for("react.block") : 60121; var REACT_FUNDAMENTAL_TYPE = hasSymbol ? /* @__PURE__ */ Symbol.for("react.fundamental") : 60117; var REACT_RESPONDER_TYPE = hasSymbol ? /* @__PURE__ */ Symbol.for("react.responder") : 60118; var REACT_SCOPE_TYPE = hasSymbol ? /* @__PURE__ */ Symbol.for("react.scope") : 60119; function isValidElementType(type) { return typeof type === "string" || typeof type === "function" || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === "object" && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); } function typeOf(object) { if (typeof object === "object" && object !== null) { var $$typeof = object.$$typeof; switch ($$typeof) { case REACT_ELEMENT_TYPE: var type = object.type; switch (type) { case REACT_ASYNC_MODE_TYPE: case REACT_CONCURRENT_MODE_TYPE: case REACT_FRAGMENT_TYPE: case REACT_PROFILER_TYPE: case REACT_STRICT_MODE_TYPE: case REACT_SUSPENSE_TYPE: return type; default: var $$typeofType = type && type.$$typeof; switch ($$typeofType) { case REACT_CONTEXT_TYPE: case REACT_FORWARD_REF_TYPE: case REACT_LAZY_TYPE: case REACT_MEMO_TYPE: case REACT_PROVIDER_TYPE: return $$typeofType; default: return $$typeof; } } case REACT_PORTAL_TYPE: return $$typeof; } } return void 0; } var AsyncMode = REACT_ASYNC_MODE_TYPE; var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; var ContextConsumer = REACT_CONTEXT_TYPE; var ContextProvider = REACT_PROVIDER_TYPE; var Element2 = REACT_ELEMENT_TYPE; var ForwardRef = REACT_FORWARD_REF_TYPE; var Fragment96 = REACT_FRAGMENT_TYPE; var Lazy = REACT_LAZY_TYPE; var Memo = REACT_MEMO_TYPE; var Portal = REACT_PORTAL_TYPE; var Profiler = REACT_PROFILER_TYPE; var StrictMode = REACT_STRICT_MODE_TYPE; var Suspense = REACT_SUSPENSE_TYPE; var hasWarnedAboutDeprecatedIsAsyncMode = false; function isAsyncMode(object) { { if (!hasWarnedAboutDeprecatedIsAsyncMode) { hasWarnedAboutDeprecatedIsAsyncMode = true; console["warn"]("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API."); } } return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; } function isConcurrentMode(object) { return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; } function isContextConsumer(object) { return typeOf(object) === REACT_CONTEXT_TYPE; } function isContextProvider(object) { return typeOf(object) === REACT_PROVIDER_TYPE; } function isElement2(object) { return typeof object === "object" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; } function isForwardRef(object) { return typeOf(object) === REACT_FORWARD_REF_TYPE; } function isFragment(object) { return typeOf(object) === REACT_FRAGMENT_TYPE; } function isLazy(object) { return typeOf(object) === REACT_LAZY_TYPE; } function isMemo(object) { return typeOf(object) === REACT_MEMO_TYPE; } function isPortal(object) { return typeOf(object) === REACT_PORTAL_TYPE; } function isProfiler(object) { return typeOf(object) === REACT_PROFILER_TYPE; } function isStrictMode(object) { return typeOf(object) === REACT_STRICT_MODE_TYPE; } function isSuspense(object) { return typeOf(object) === REACT_SUSPENSE_TYPE; } exports.AsyncMode = AsyncMode; exports.ConcurrentMode = ConcurrentMode; exports.ContextConsumer = ContextConsumer; exports.ContextProvider = ContextProvider; exports.Element = Element2; exports.ForwardRef = ForwardRef; exports.Fragment = Fragment96; exports.Lazy = Lazy; exports.Memo = Memo; exports.Portal = Portal; exports.Profiler = Profiler; exports.StrictMode = StrictMode; exports.Suspense = Suspense; exports.isAsyncMode = isAsyncMode; exports.isConcurrentMode = isConcurrentMode; exports.isContextConsumer = isContextConsumer; exports.isContextProvider = isContextProvider; exports.isElement = isElement2; exports.isForwardRef = isForwardRef; exports.isFragment = isFragment; exports.isLazy = isLazy; exports.isMemo = isMemo; exports.isPortal = isPortal; exports.isProfiler = isProfiler; exports.isStrictMode = isStrictMode; exports.isSuspense = isSuspense; exports.isValidElementType = isValidElementType; exports.typeOf = typeOf; })(); } } }); // node_modules/react-is/index.js var require_react_is = __commonJS({ "node_modules/react-is/index.js"(exports, module) { "use strict"; if (false) { module.exports = null; } else { module.exports = require_react_is_development(); } } }); // node_modules/object-assign/index.js var require_object_assign = __commonJS({ "node_modules/object-assign/index.js"(exports, module) { "use strict"; var getOwnPropertySymbols = Object.getOwnPropertySymbols; var hasOwnProperty = Object.prototype.hasOwnProperty; var propIsEnumerable = Object.prototype.propertyIsEnumerable; function toObject(val) { if (val === null || val === void 0) { throw new TypeError("Object.assign cannot be called with null or undefined"); } return Object(val); } function shouldUseNative() { try { if (!Object.assign) { return false; } var test1 = new String("abc"); test1[5] = "de"; if (Object.getOwnPropertyNames(test1)[0] === "5") { return false; } var test2 = {}; for (var i3 = 0; i3 < 10; i3++) { test2["_" + String.fromCharCode(i3)] = i3; } var order2 = Object.getOwnPropertyNames(test2).map(function(n3) { return test2[n3]; }); if (order2.join("") !== "0123456789") { return false; } var test3 = {}; "abcdefghijklmnopqrst".split("").forEach(function(letter) { test3[letter] = letter; }); if (Object.keys(Object.assign({}, test3)).join("") !== "abcdefghijklmnopqrst") { return false; } return true; } catch (err) { return false; } } module.exports = shouldUseNative() ? Object.assign : function(target, source) { var from; var to2 = toObject(target); var symbols; for (var s3 = 1; s3 < arguments.length; s3++) { from = Object(arguments[s3]); for (var key in from) { if (hasOwnProperty.call(from, key)) { to2[key] = from[key]; } } if (getOwnPropertySymbols) { symbols = getOwnPropertySymbols(from); for (var i3 = 0; i3 < symbols.length; i3++) { if (propIsEnumerable.call(from, symbols[i3])) { to2[symbols[i3]] = from[symbols[i3]]; } } } } return to2; }; } }); // node_modules/prop-types/lib/ReactPropTypesSecret.js var require_ReactPropTypesSecret = __commonJS({ "node_modules/prop-types/lib/ReactPropTypesSecret.js"(exports, module) { "use strict"; var ReactPropTypesSecret = "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"; module.exports = ReactPropTypesSecret; } }); // node_modules/prop-types/lib/has.js var require_has = __commonJS({ "node_modules/prop-types/lib/has.js"(exports, module) { module.exports = Function.call.bind(Object.prototype.hasOwnProperty); } }); // node_modules/prop-types/checkPropTypes.js var require_checkPropTypes = __commonJS({ "node_modules/prop-types/checkPropTypes.js"(exports, module) { "use strict"; var printWarning = function() { }; if (true) { ReactPropTypesSecret = require_ReactPropTypesSecret(); loggedTypeFailures = {}; has = require_has(); printWarning = function(text) { var message2 = "Warning: " + text; if (typeof console !== "undefined") { console.error(message2); } try { throw new Error(message2); } catch (x2) { } }; } var ReactPropTypesSecret; var loggedTypeFailures; var has; function checkPropTypes(typeSpecs, values, location, componentName, getStack) { if (true) { for (var typeSpecName in typeSpecs) { if (has(typeSpecs, typeSpecName)) { var error; try { if (typeof typeSpecs[typeSpecName] !== "function") { var err = Error( (componentName || "React class") + ": " + location + " type `" + typeSpecName + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof typeSpecs[typeSpecName] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`." ); err.name = "Invariant Violation"; throw err; } error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); } catch (ex) { error = ex; } if (error && !(error instanceof Error)) { printWarning( (componentName || "React class") + ": type specification of " + location + " `" + typeSpecName + "` is invalid; the type checker function must return `null` or an `Error` but returned a " + typeof error + ". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument)." ); } if (error instanceof Error && !(error.message in loggedTypeFailures)) { loggedTypeFailures[error.message] = true; var stack = getStack ? getStack() : ""; printWarning( "Failed " + location + " type: " + error.message + (stack != null ? stack : "") ); } } } } } checkPropTypes.resetWarningCache = function() { if (true) { loggedTypeFailures = {}; } }; module.exports = checkPropTypes; } }); // node_modules/prop-types/factoryWithTypeCheckers.js var require_factoryWithTypeCheckers = __commonJS({ "node_modules/prop-types/factoryWithTypeCheckers.js"(exports, module) { "use strict"; var ReactIs = require_react_is(); var assign2 = require_object_assign(); var ReactPropTypesSecret = require_ReactPropTypesSecret(); var has = require_has(); var checkPropTypes = require_checkPropTypes(); var printWarning = function() { }; if (true) { printWarning = function(text) { var message2 = "Warning: " + text; if (typeof console !== "undefined") { console.error(message2); } try { throw new Error(message2); } catch (x2) { } }; } function emptyFunctionThatReturnsNull() { return null; } module.exports = function(isValidElement2, throwOnDirectAccess) { var ITERATOR_SYMBOL = typeof Symbol === "function" && Symbol.iterator; var FAUX_ITERATOR_SYMBOL = "@@iterator"; function getIteratorFn(maybeIterable) { var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); if (typeof iteratorFn === "function") { return iteratorFn; } } var ANONYMOUS = "<>"; var ReactPropTypes = { array: createPrimitiveTypeChecker("array"), bigint: createPrimitiveTypeChecker("bigint"), bool: createPrimitiveTypeChecker("boolean"), func: createPrimitiveTypeChecker("function"), number: createPrimitiveTypeChecker("number"), object: createPrimitiveTypeChecker("object"), string: createPrimitiveTypeChecker("string"), symbol: createPrimitiveTypeChecker("symbol"), any: createAnyTypeChecker(), arrayOf: createArrayOfTypeChecker, element: createElementTypeChecker(), elementType: createElementTypeTypeChecker(), instanceOf: createInstanceTypeChecker, node: createNodeChecker(), objectOf: createObjectOfTypeChecker, oneOf: createEnumTypeChecker, oneOfType: createUnionTypeChecker, shape: createShapeTypeChecker, exact: createStrictShapeTypeChecker }; function is2(x2, y3) { if (x2 === y3) { return x2 !== 0 || 1 / x2 === 1 / y3; } else { return x2 !== x2 && y3 !== y3; } } function PropTypeError(message2, data) { this.message = message2; this.data = data && typeof data === "object" ? data : {}; this.stack = ""; } PropTypeError.prototype = Error.prototype; function createChainableTypeChecker(validate) { if (true) { var manualPropTypeCallCache = {}; var manualPropTypeWarningCount = 0; } function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { componentName = componentName || ANONYMOUS; propFullName = propFullName || propName; if (secret !== ReactPropTypesSecret) { if (throwOnDirectAccess) { var err = new Error( "Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types" ); err.name = "Invariant Violation"; throw err; } else if (typeof console !== "undefined") { var cacheKey2 = componentName + ":" + propName; if (!manualPropTypeCallCache[cacheKey2] && // Avoid spamming the console because they are often not actionable except for lib authors manualPropTypeWarningCount < 3) { printWarning( "You are manually calling a React.PropTypes validation function for the `" + propFullName + "` prop on `" + componentName + "`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details." ); manualPropTypeCallCache[cacheKey2] = true; manualPropTypeWarningCount++; } } } if (props[propName] == null) { if (isRequired) { if (props[propName] === null) { return new PropTypeError("The " + location + " `" + propFullName + "` is marked as required " + ("in `" + componentName + "`, but its value is `null`.")); } return new PropTypeError("The " + location + " `" + propFullName + "` is marked as required in " + ("`" + componentName + "`, but its value is `undefined`.")); } return null; } else { return validate(props, propName, componentName, location, propFullName); } } var chainedCheckType = checkType.bind(null, false); chainedCheckType.isRequired = checkType.bind(null, true); return chainedCheckType; } function createPrimitiveTypeChecker(expectedType) { function validate(props, propName, componentName, location, propFullName, secret) { var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== expectedType) { var preciseType = getPreciseType(propValue); return new PropTypeError( "Invalid " + location + " `" + propFullName + "` of type " + ("`" + preciseType + "` supplied to `" + componentName + "`, expected ") + ("`" + expectedType + "`."), { expectedType } ); } return null; } return createChainableTypeChecker(validate); } function createAnyTypeChecker() { return createChainableTypeChecker(emptyFunctionThatReturnsNull); } function createArrayOfTypeChecker(typeChecker) { function validate(props, propName, componentName, location, propFullName) { if (typeof typeChecker !== "function") { return new PropTypeError("Property `" + propFullName + "` of component `" + componentName + "` has invalid PropType notation inside arrayOf."); } var propValue = props[propName]; if (!Array.isArray(propValue)) { var propType = getPropType(propValue); return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected an array.")); } for (var i3 = 0; i3 < propValue.length; i3++) { var error = typeChecker(propValue, i3, componentName, location, propFullName + "[" + i3 + "]", ReactPropTypesSecret); if (error instanceof Error) { return error; } } return null; } return createChainableTypeChecker(validate); } function createElementTypeChecker() { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; if (!isValidElement2(propValue)) { var propType = getPropType(propValue); return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected a single ReactElement.")); } return null; } return createChainableTypeChecker(validate); } function createElementTypeTypeChecker() { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; if (!ReactIs.isValidElementType(propValue)) { var propType = getPropType(propValue); return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected a single ReactElement type.")); } return null; } return createChainableTypeChecker(validate); } function createInstanceTypeChecker(expectedClass) { function validate(props, propName, componentName, location, propFullName) { if (!(props[propName] instanceof expectedClass)) { var expectedClassName = expectedClass.name || ANONYMOUS; var actualClassName = getClassName(props[propName]); return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + actualClassName + "` supplied to `" + componentName + "`, expected ") + ("instance of `" + expectedClassName + "`.")); } return null; } return createChainableTypeChecker(validate); } function createEnumTypeChecker(expectedValues) { if (!Array.isArray(expectedValues)) { if (true) { if (arguments.length > 1) { printWarning( "Invalid arguments supplied to oneOf, expected an array, got " + arguments.length + " arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z])." ); } else { printWarning("Invalid argument supplied to oneOf, expected an array."); } } return emptyFunctionThatReturnsNull; } function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; for (var i3 = 0; i3 < expectedValues.length; i3++) { if (is2(propValue, expectedValues[i3])) { return null; } } var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { var type = getPreciseType(value); if (type === "symbol") { return String(value); } return value; }); return new PropTypeError("Invalid " + location + " `" + propFullName + "` of value `" + String(propValue) + "` " + ("supplied to `" + componentName + "`, expected one of " + valuesString + ".")); } return createChainableTypeChecker(validate); } function createObjectOfTypeChecker(typeChecker) { function validate(props, propName, componentName, location, propFullName) { if (typeof typeChecker !== "function") { return new PropTypeError("Property `" + propFullName + "` of component `" + componentName + "` has invalid PropType notation inside objectOf."); } var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== "object") { return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected an object.")); } for (var key in propValue) { if (has(propValue, key)) { var error = typeChecker(propValue, key, componentName, location, propFullName + "." + key, ReactPropTypesSecret); if (error instanceof Error) { return error; } } } return null; } return createChainableTypeChecker(validate); } function createUnionTypeChecker(arrayOfTypeCheckers) { if (!Array.isArray(arrayOfTypeCheckers)) { true ? printWarning("Invalid argument supplied to oneOfType, expected an instance of array.") : void 0; return emptyFunctionThatReturnsNull; } for (var i3 = 0; i3 < arrayOfTypeCheckers.length; i3++) { var checker = arrayOfTypeCheckers[i3]; if (typeof checker !== "function") { printWarning( "Invalid argument supplied to oneOfType. Expected an array of check functions, but received " + getPostfixForTypeWarning(checker) + " at index " + i3 + "." ); return emptyFunctionThatReturnsNull; } } function validate(props, propName, componentName, location, propFullName) { var expectedTypes = []; for (var i4 = 0; i4 < arrayOfTypeCheckers.length; i4++) { var checker2 = arrayOfTypeCheckers[i4]; var checkerResult = checker2(props, propName, componentName, location, propFullName, ReactPropTypesSecret); if (checkerResult == null) { return null; } if (checkerResult.data && has(checkerResult.data, "expectedType")) { expectedTypes.push(checkerResult.data.expectedType); } } var expectedTypesMessage = expectedTypes.length > 0 ? ", expected one of type [" + expectedTypes.join(", ") + "]" : ""; return new PropTypeError("Invalid " + location + " `" + propFullName + "` supplied to " + ("`" + componentName + "`" + expectedTypesMessage + ".")); } return createChainableTypeChecker(validate); } function createNodeChecker() { function validate(props, propName, componentName, location, propFullName) { if (!isNode2(props[propName])) { return new PropTypeError("Invalid " + location + " `" + propFullName + "` supplied to " + ("`" + componentName + "`, expected a ReactNode.")); } return null; } return createChainableTypeChecker(validate); } function invalidValidatorError(componentName, location, propFullName, key, type) { return new PropTypeError( (componentName || "React class") + ": " + location + " type `" + propFullName + "." + key + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + type + "`." ); } function createShapeTypeChecker(shapeTypes) { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== "object") { return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type `" + propType + "` " + ("supplied to `" + componentName + "`, expected `object`.")); } for (var key in shapeTypes) { var checker = shapeTypes[key]; if (typeof checker !== "function") { return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); } var error = checker(propValue, key, componentName, location, propFullName + "." + key, ReactPropTypesSecret); if (error) { return error; } } return null; } return createChainableTypeChecker(validate); } function createStrictShapeTypeChecker(shapeTypes) { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== "object") { return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type `" + propType + "` " + ("supplied to `" + componentName + "`, expected `object`.")); } var allKeys = assign2({}, props[propName], shapeTypes); for (var key in allKeys) { var checker = shapeTypes[key]; if (has(shapeTypes, key) && typeof checker !== "function") { return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); } if (!checker) { return new PropTypeError( "Invalid " + location + " `" + propFullName + "` key `" + key + "` supplied to `" + componentName + "`.\nBad object: " + JSON.stringify(props[propName], null, " ") + "\nValid keys: " + JSON.stringify(Object.keys(shapeTypes), null, " ") ); } var error = checker(propValue, key, componentName, location, propFullName + "." + key, ReactPropTypesSecret); if (error) { return error; } } return null; } return createChainableTypeChecker(validate); } function isNode2(propValue) { switch (typeof propValue) { case "number": case "string": case "undefined": return true; case "boolean": return !propValue; case "object": if (Array.isArray(propValue)) { return propValue.every(isNode2); } if (propValue === null || isValidElement2(propValue)) { return true; } var iteratorFn = getIteratorFn(propValue); if (iteratorFn) { var iterator = iteratorFn.call(propValue); var step; if (iteratorFn !== propValue.entries) { while (!(step = iterator.next()).done) { if (!isNode2(step.value)) { return false; } } } else { while (!(step = iterator.next()).done) { var entry = step.value; if (entry) { if (!isNode2(entry[1])) { return false; } } } } } else { return false; } return true; default: return false; } } function isSymbol(propType, propValue) { if (propType === "symbol") { return true; } if (!propValue) { return false; } if (propValue["@@toStringTag"] === "Symbol") { return true; } if (typeof Symbol === "function" && propValue instanceof Symbol) { return true; } return false; } function getPropType(propValue) { var propType = typeof propValue; if (Array.isArray(propValue)) { return "array"; } if (propValue instanceof RegExp) { return "object"; } if (isSymbol(propType, propValue)) { return "symbol"; } return propType; } function getPreciseType(propValue) { if (typeof propValue === "undefined" || propValue === null) { return "" + propValue; } var propType = getPropType(propValue); if (propType === "object") { if (propValue instanceof Date) { return "date"; } else if (propValue instanceof RegExp) { return "regexp"; } } return propType; } function getPostfixForTypeWarning(value) { var type = getPreciseType(value); switch (type) { case "array": case "object": return "an " + type; case "boolean": case "date": case "regexp": return "a " + type; default: return type; } } function getClassName(propValue) { if (!propValue.constructor || !propValue.constructor.name) { return ANONYMOUS; } return propValue.constructor.name; } ReactPropTypes.checkPropTypes = checkPropTypes; ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache; ReactPropTypes.PropTypes = ReactPropTypes; return ReactPropTypes; }; } }); // node_modules/prop-types/index.js var require_prop_types = __commonJS({ "node_modules/prop-types/index.js"(exports, module) { if (true) { ReactIs = require_react_is(); throwOnDirectAccess = true; module.exports = require_factoryWithTypeCheckers()(ReactIs.isElement, throwOnDirectAccess); } else { module.exports = null(); } var ReactIs; var throwOnDirectAccess; } }); // node_modules/autosize/dist/autosize.js var require_autosize = __commonJS({ "node_modules/autosize/dist/autosize.js"(exports, module) { (function(global, factory) { if (typeof define === "function" && define.amd) { define(["module", "exports"], factory); } else if (typeof exports !== "undefined") { factory(module, exports); } else { var mod = { exports: {} }; factory(mod, mod.exports); global.autosize = mod.exports; } })(exports, function(module2, exports2) { "use strict"; var map = typeof Map === "function" ? /* @__PURE__ */ new Map() : /* @__PURE__ */ (function() { var keys = []; var values = []; return { has: function has(key) { return keys.indexOf(key) > -1; }, get: function get(key) { return values[keys.indexOf(key)]; }, set: function set(key, value) { if (keys.indexOf(key) === -1) { keys.push(key); values.push(value); } }, delete: function _delete(key) { var index2 = keys.indexOf(key); if (index2 > -1) { keys.splice(index2, 1); values.splice(index2, 1); } } }; })(); var createEvent = function createEvent2(name2) { return new Event(name2, { bubbles: true }); }; try { new Event("test"); } catch (e3) { createEvent = function createEvent2(name2) { var evt = document.createEvent("Event"); evt.initEvent(name2, true, false); return evt; }; } function assign2(ta) { if (!ta || !ta.nodeName || ta.nodeName !== "TEXTAREA" || map.has(ta)) return; var heightOffset = null; var clientWidth = null; var cachedHeight = null; function init() { var style = window.getComputedStyle(ta, null); if (style.resize === "vertical") { ta.style.resize = "none"; } else if (style.resize === "both") { ta.style.resize = "horizontal"; } if (style.boxSizing === "content-box") { heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom)); } else { heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth); } if (isNaN(heightOffset)) { heightOffset = 0; } update5(); } function changeOverflow(value) { { var width = ta.style.width; ta.style.width = "0px"; ta.offsetWidth; ta.style.width = width; } ta.style.overflowY = value; } function getParentOverflows(el) { var arr = []; while (el && el.parentNode && el.parentNode instanceof Element) { if (el.parentNode.scrollTop) { arr.push({ node: el.parentNode, scrollTop: el.parentNode.scrollTop }); } el = el.parentNode; } return arr; } function resize() { if (ta.scrollHeight === 0) { return; } var overflows = getParentOverflows(ta); var docTop = document.documentElement && document.documentElement.scrollTop; ta.style.height = ""; ta.style.height = ta.scrollHeight + heightOffset + "px"; clientWidth = ta.clientWidth; overflows.forEach(function(el) { el.node.scrollTop = el.scrollTop; }); if (docTop) { document.documentElement.scrollTop = docTop; } } function update5() { resize(); var styleHeight = Math.round(parseFloat(ta.style.height)); var computed = window.getComputedStyle(ta, null); var actualHeight = computed.boxSizing === "content-box" ? Math.round(parseFloat(computed.height)) : ta.offsetHeight; if (actualHeight < styleHeight) { if (computed.overflowY === "hidden") { changeOverflow("scroll"); resize(); actualHeight = computed.boxSizing === "content-box" ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight; } } else { if (computed.overflowY !== "hidden") { changeOverflow("hidden"); resize(); actualHeight = computed.boxSizing === "content-box" ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight; } } if (cachedHeight !== actualHeight) { cachedHeight = actualHeight; var evt = createEvent("autosize:resized"); try { ta.dispatchEvent(evt); } catch (err) { } } } var pageResize = function pageResize2() { if (ta.clientWidth !== clientWidth) { update5(); } }; var destroy2 = function(style) { window.removeEventListener("resize", pageResize, false); ta.removeEventListener("input", update5, false); ta.removeEventListener("keyup", update5, false); ta.removeEventListener("autosize:destroy", destroy2, false); ta.removeEventListener("autosize:update", update5, false); Object.keys(style).forEach(function(key) { ta.style[key] = style[key]; }); map.delete(ta); }.bind(ta, { height: ta.style.height, resize: ta.style.resize, overflowY: ta.style.overflowY, overflowX: ta.style.overflowX, wordWrap: ta.style.wordWrap }); ta.addEventListener("autosize:destroy", destroy2, false); if ("onpropertychange" in ta && "oninput" in ta) { ta.addEventListener("keyup", update5, false); } window.addEventListener("resize", pageResize, false); ta.addEventListener("input", update5, false); ta.addEventListener("autosize:update", update5, false); ta.style.overflowX = "hidden"; ta.style.wordWrap = "break-word"; map.set(ta, { destroy: destroy2, update: update5 }); init(); } function destroy(ta) { var methods = map.get(ta); if (methods) { methods.destroy(); } } function update4(ta) { var methods = map.get(ta); if (methods) { methods.update(); } } var autosize = null; if (typeof window === "undefined" || typeof window.getComputedStyle !== "function") { autosize = function autosize2(el) { return el; }; autosize.destroy = function(el) { return el; }; autosize.update = function(el) { return el; }; } else { autosize = function autosize2(el, options) { if (el) { Array.prototype.forEach.call(el.length ? el : [el], function(x2) { return assign2(x2, options); }); } return el; }; autosize.destroy = function(el) { if (el) { Array.prototype.forEach.call(el.length ? el : [el], destroy); } return el; }; autosize.update = function(el) { if (el) { Array.prototype.forEach.call(el.length ? el : [el], update4); } return el; }; } exports2.default = autosize; module2.exports = exports2["default"]; }); } }); // node_modules/computed-style/dist/computedStyle.commonjs.js var require_computedStyle_commonjs = __commonJS({ "node_modules/computed-style/dist/computedStyle.commonjs.js"(exports, module) { var computedStyle = function(el, prop, getComputedStyle3) { getComputedStyle3 = window.getComputedStyle; return ( // If we have getComputedStyle (getComputedStyle3 ? ( // Query it // TODO: From CSS-Query notes, we might need (node, null) for FF getComputedStyle3(el) ) : ( // Otherwise, we are in IE and use currentStyle el.currentStyle ))[ // Switch to camelCase for CSSOM // DEV: Grabbed from jQuery // https://github.com/jquery/jquery/blob/1.9-stable/src/css.js#L191-L194 // https://github.com/jquery/jquery/blob/1.9-stable/src/core.js#L593-L597 prop.replace(/-(\w)/gi, function(word, letter) { return letter.toUpperCase(); }) ] ); }; module.exports = computedStyle; } }); // node_modules/line-height/lib/line-height.js var require_line_height = __commonJS({ "node_modules/line-height/lib/line-height.js"(exports, module) { var computedStyle = require_computedStyle_commonjs(); function lineHeight(node) { var lnHeightStr = computedStyle(node, "line-height"); var lnHeight = parseFloat(lnHeightStr, 10); if (lnHeightStr === lnHeight + "") { var _lnHeightStyle = node.style.lineHeight; node.style.lineHeight = lnHeightStr + "em"; lnHeightStr = computedStyle(node, "line-height"); lnHeight = parseFloat(lnHeightStr, 10); if (_lnHeightStyle) { node.style.lineHeight = _lnHeightStyle; } else { delete node.style.lineHeight; } } if (lnHeightStr.indexOf("pt") !== -1) { lnHeight *= 4; lnHeight /= 3; } else if (lnHeightStr.indexOf("mm") !== -1) { lnHeight *= 96; lnHeight /= 25.4; } else if (lnHeightStr.indexOf("cm") !== -1) { lnHeight *= 96; lnHeight /= 2.54; } else if (lnHeightStr.indexOf("in") !== -1) { lnHeight *= 96; } else if (lnHeightStr.indexOf("pc") !== -1) { lnHeight *= 16; } lnHeight = Math.round(lnHeight); if (lnHeightStr === "normal") { var nodeName = node.nodeName; var _node = document.createElement(nodeName); _node.innerHTML = " "; if (nodeName.toUpperCase() === "TEXTAREA") { _node.setAttribute("rows", "1"); } var fontSizeStr = computedStyle(node, "font-size"); _node.style.fontSize = fontSizeStr; _node.style.padding = "0px"; _node.style.border = "0px"; var body = document.body; body.appendChild(_node); var height = _node.offsetHeight; lnHeight = height; body.removeChild(_node); } return lnHeight; } module.exports = lineHeight; } }); // node_modules/react-autosize-textarea/lib/TextareaAutosize.js var require_TextareaAutosize = __commonJS({ "node_modules/react-autosize-textarea/lib/TextareaAutosize.js"(exports) { "use strict"; var __extends = exports && exports.__extends || (function() { var extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) { d3.__proto__ = b3; } || function(d3, b3) { for (var p4 in b3) if (b3.hasOwnProperty(p4)) d3[p4] = b3[p4]; }; return function(d3, b3) { extendStatics(d3, b3); function __268() { this.constructor = d3; } d3.prototype = b3 === null ? Object.create(b3) : (__268.prototype = b3.prototype, new __268()); }; })(); var __assign2 = exports && exports.__assign || Object.assign || function(t4) { for (var s3, i3 = 1, n3 = arguments.length; i3 < n3; i3++) { s3 = arguments[i3]; for (var p4 in s3) if (Object.prototype.hasOwnProperty.call(s3, p4)) t4[p4] = s3[p4]; } return t4; }; var __rest = exports && exports.__rest || function(s3, e3) { var t4 = {}; for (var p4 in s3) if (Object.prototype.hasOwnProperty.call(s3, p4) && e3.indexOf(p4) < 0) t4[p4] = s3[p4]; if (s3 != null && typeof Object.getOwnPropertySymbols === "function") { for (var i3 = 0, p4 = Object.getOwnPropertySymbols(s3); i3 < p4.length; i3++) if (e3.indexOf(p4[i3]) < 0) t4[p4[i3]] = s3[p4[i3]]; } return t4; }; exports.__esModule = true; var React8 = require_react(); var PropTypes = require_prop_types(); var autosize = require_autosize(); var _getLineHeight = require_line_height(); var getLineHeight = _getLineHeight; var RESIZED = "autosize:resized"; var TextareaAutosizeClass = ( /** @class */ (function(_super) { __extends(TextareaAutosizeClass2, _super); function TextareaAutosizeClass2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.state = { lineHeight: null }; _this.textarea = null; _this.onResize = function(e3) { if (_this.props.onResize) { _this.props.onResize(e3); } }; _this.updateLineHeight = function() { if (_this.textarea) { _this.setState({ lineHeight: getLineHeight(_this.textarea) }); } }; _this.onChange = function(e3) { var onChange = _this.props.onChange; _this.currentValue = e3.currentTarget.value; onChange && onChange(e3); }; return _this; } TextareaAutosizeClass2.prototype.componentDidMount = function() { var _this = this; var _a = this.props, maxRows = _a.maxRows, async = _a.async; if (typeof maxRows === "number") { this.updateLineHeight(); } if (typeof maxRows === "number" || async) { setTimeout(function() { return _this.textarea && autosize(_this.textarea); }); } else { this.textarea && autosize(this.textarea); } if (this.textarea) { this.textarea.addEventListener(RESIZED, this.onResize); } }; TextareaAutosizeClass2.prototype.componentWillUnmount = function() { if (this.textarea) { this.textarea.removeEventListener(RESIZED, this.onResize); autosize.destroy(this.textarea); } }; TextareaAutosizeClass2.prototype.render = function() { var _this = this; var _a = this, _b = _a.props, onResize = _b.onResize, maxRows = _b.maxRows, onChange = _b.onChange, style = _b.style, innerRef = _b.innerRef, children = _b.children, props = __rest(_b, ["onResize", "maxRows", "onChange", "style", "innerRef", "children"]), lineHeight = _a.state.lineHeight; var maxHeight = maxRows && lineHeight ? lineHeight * maxRows : null; return React8.createElement("textarea", __assign2({}, props, { onChange: this.onChange, style: maxHeight ? __assign2({}, style, { maxHeight }) : style, ref: function(element) { _this.textarea = element; if (typeof _this.props.innerRef === "function") { _this.props.innerRef(element); } else if (_this.props.innerRef) { _this.props.innerRef.current = element; } } }), children); }; TextareaAutosizeClass2.prototype.componentDidUpdate = function() { this.textarea && autosize.update(this.textarea); }; TextareaAutosizeClass2.defaultProps = { rows: 1, async: false }; TextareaAutosizeClass2.propTypes = { rows: PropTypes.number, maxRows: PropTypes.number, onResize: PropTypes.func, innerRef: PropTypes.any, async: PropTypes.bool }; return TextareaAutosizeClass2; })(React8.Component) ); exports.TextareaAutosize = React8.forwardRef(function(props, ref) { return React8.createElement(TextareaAutosizeClass, __assign2({}, props, { innerRef: ref })); }); } }); // node_modules/react-autosize-textarea/lib/index.js var require_lib = __commonJS({ "node_modules/react-autosize-textarea/lib/index.js"(exports, module) { "use strict"; var TextareaAutosize_1 = require_TextareaAutosize(); module.exports = TextareaAutosize_1.TextareaAutosize; } }); // package-external:@wordpress/wordcount var require_wordcount = __commonJS({ "package-external:@wordpress/wordcount"(exports, module) { module.exports = window.wp.wordcount; } }); // package-external:@wordpress/server-side-render var require_server_side_render = __commonJS({ "package-external:@wordpress/server-side-render"(exports, module) { module.exports = window.wp.serverSideRender; } }); // packages/editor/build-module/index.mjs var index_exports = {}; __export(index_exports, { AlignmentToolbar: () => AlignmentToolbar, Autocomplete: () => Autocomplete, AutosaveMonitor: () => autosave_monitor_default, BlockAlignmentToolbar: () => BlockAlignmentToolbar, BlockControls: () => BlockControls, BlockEdit: () => BlockEdit, BlockEditorKeyboardShortcuts: () => BlockEditorKeyboardShortcuts2, BlockFormatControls: () => BlockFormatControls, BlockIcon: () => BlockIcon3, BlockInspector: () => BlockInspector, BlockList: () => BlockList4, BlockMover: () => BlockMover, BlockNavigationDropdown: () => BlockNavigationDropdown, BlockSelectionClearer: () => BlockSelectionClearer, BlockSettingsMenu: () => BlockSettingsMenu, BlockTitle: () => BlockTitle, BlockToolbar: () => BlockToolbar, CharacterCount: () => CharacterCount, ColorPalette: () => ColorPalette2, ContrastChecker: () => ContrastChecker, CopyHandler: () => CopyHandler, DefaultBlockAppender: () => DefaultBlockAppender, DocumentBar: () => DocumentBar, DocumentOutline: () => DocumentOutline, DocumentOutlineCheck: () => DocumentOutlineCheck, EditorHistoryRedo: () => redo_default2, EditorHistoryUndo: () => undo_default2, EditorKeyboardShortcuts: () => EditorKeyboardShortcuts, EditorKeyboardShortcutsRegister: () => register_shortcuts_default, EditorNotices: () => editor_notices_default, EditorProvider: () => provider_default, EditorSnackbars: () => EditorSnackbars, EntitiesSavedStates: () => EntitiesSavedStates, ErrorBoundary: () => error_boundary_default, FontSizePicker: () => FontSizePicker, InnerBlocks: () => InnerBlocks, Inserter: () => Inserter, InspectorAdvancedControls: () => InspectorAdvancedControls, InspectorControls: () => InspectorControls, LocalAutosaveMonitor: () => local_autosave_monitor_default, MediaPlaceholder: () => MediaPlaceholder, MediaUpload: () => MediaUpload3, MediaUploadCheck: () => MediaUploadCheck2, MultiSelectScrollIntoView: () => MultiSelectScrollIntoView, NavigableToolbar: () => NavigableToolbar, ObserveTyping: () => ObserveTyping, PageAttributesCheck: () => check_default2, PageAttributesOrder: () => PageAttributesOrderWithChecks, PageAttributesPanel: () => PageAttributesPanel, PageAttributesParent: () => parent_default2, PageTemplate: () => classic_theme_default, PanelColorSettings: () => PanelColorSettings, PlainText: () => PlainText, PluginBlockSettingsMenuItem: () => plugin_block_settings_menu_item_default, PluginDocumentSettingPanel: () => plugin_document_setting_panel_default, PluginMoreMenuItem: () => PluginMoreMenuItem, PluginPostPublishPanel: () => plugin_post_publish_panel_default, PluginPostStatusInfo: () => plugin_post_status_info_default, PluginPrePublishPanel: () => plugin_pre_publish_panel_default, PluginPreviewMenuItem: () => PluginPreviewMenuItem, PluginSidebar: () => PluginSidebar, PluginSidebarMoreMenuItem: () => PluginSidebarMoreMenuItem, PostAuthor: () => post_author_default, PostAuthorCheck: () => PostAuthorCheck, PostAuthorPanel: () => panel_default, PostComments: () => post_comments_default, PostDiscussionPanel: () => PostDiscussionPanel, PostExcerpt: () => PostExcerpt, PostExcerptCheck: () => check_default3, PostExcerptPanel: () => PostExcerptPanel, PostFeaturedImage: () => post_featured_image_default, PostFeaturedImageCheck: () => check_default4, PostFeaturedImagePanel: () => PostFeaturedImagePanel, PostFormat: () => PostFormat, PostFormatCheck: () => PostFormatCheck, PostLastRevision: () => post_last_revision_default, PostLastRevisionCheck: () => check_default5, PostLastRevisionPanel: () => panel_default2, PostLockedModal: () => post_locked_modal_default, PostPendingStatus: () => post_pending_status_default, PostPendingStatusCheck: () => check_default6, PostPingbacks: () => post_pingbacks_default, PostPreviewButton: () => PostPreviewButton, PostPublishButton: () => post_publish_button_default, PostPublishButtonLabel: () => PublishButtonLabel, PostPublishPanel: () => post_publish_panel_default, PostSavedState: () => PostSavedState, PostSchedule: () => PostSchedule, PostScheduleCheck: () => PostScheduleCheck, PostScheduleLabel: () => PostScheduleLabel, PostSchedulePanel: () => PostSchedulePanel, PostSticky: () => PostSticky, PostStickyCheck: () => PostStickyCheck, PostSwitchToDraftButton: () => PostSwitchToDraftButton, PostSyncStatus: () => PostSyncStatus, PostTaxonomies: () => post_taxonomies_default, PostTaxonomiesCheck: () => PostTaxonomiesCheck, PostTaxonomiesFlatTermSelector: () => FlatTermSelector, PostTaxonomiesHierarchicalTermSelector: () => HierarchicalTermSelector, PostTaxonomiesPanel: () => PostTaxonomies2, PostTemplatePanel: () => PostTemplatePanel, PostTextEditor: () => PostTextEditor, PostTitle: () => post_title_default, PostTitleRaw: () => post_title_raw_default, PostTrash: () => PostTrash, PostTrashCheck: () => PostTrashCheck, PostTypeSupportCheck: () => post_type_support_check_default, PostURL: () => PostURL, PostURLCheck: () => PostURLCheck, PostURLLabel: () => PostURLLabel, PostURLPanel: () => PostURLPanel, PostVisibility: () => PostVisibility, PostVisibilityCheck: () => PostVisibilityCheck, PostVisibilityLabel: () => PostVisibilityLabel, RichText: () => RichText, RichTextShortcut: () => RichTextShortcut, RichTextToolbarButton: () => RichTextToolbarButton, ServerSideRender: () => import_server_side_render.default, SkipToSelectedBlock: () => SkipToSelectedBlock, TableOfContents: () => table_of_contents_default, TextEditorGlobalKeyboardShortcuts: () => TextEditorGlobalKeyboardShortcuts, ThemeSupportCheck: () => ThemeSupportCheck, TimeToRead: () => TimeToRead, URLInput: () => URLInput, URLInputButton: () => URLInputButton, URLPopover: () => URLPopover, UnsavedChangesWarning: () => UnsavedChangesWarning, VisualEditorGlobalKeyboardShortcuts: () => VisualEditorGlobalKeyboardShortcuts, Warning: () => Warning, WordCount: () => WordCount, WritingFlow: () => WritingFlow, __unstableRichTextInputEvent: () => __unstableRichTextInputEvent, cleanForSlug: () => cleanForSlug2, createCustomColorsHOC: () => createCustomColorsHOC, getColorClassName: () => getColorClassName2, getColorObjectByAttributeValues: () => getColorObjectByAttributeValues, getColorObjectByColorValue: () => getColorObjectByColorValue, getFontSize: () => getFontSize, getFontSizeClass: () => getFontSizeClass, getTemplatePartIcon: () => getTemplatePartIcon, mediaUpload: () => mediaUpload, privateApis: () => privateApis18, registerEntityAction: () => registerEntityAction2, registerEntityField: () => registerEntityField2, store: () => store, storeConfig: () => storeConfig, transformStyles: () => import_block_editor105.transformStyles, unregisterEntityAction: () => unregisterEntityAction2, unregisterEntityField: () => unregisterEntityField2, useEntitiesSavedStatesIsDirty: () => useIsDirty, usePostScheduleLabel: () => usePostScheduleLabel, usePostURLLabel: () => usePostURLLabel, usePostVisibilityLabel: () => usePostVisibilityLabel, userAutocompleter: () => user_default, withColorContext: () => withColorContext, withColors: () => withColors, withFontSizes: () => withFontSizes }); // packages/editor/build-module/hooks/custom-sources-backwards-compatibility.mjs var import_data73 = __toESM(require_data(), 1); var import_core_data54 = __toESM(require_core_data(), 1); var import_element82 = __toESM(require_element(), 1); var import_compose16 = __toESM(require_compose(), 1); var import_hooks39 = __toESM(require_hooks(), 1); // packages/editor/build-module/store/index.mjs var import_data72 = __toESM(require_data(), 1); // packages/editor/build-module/store/reducer.mjs var import_data2 = __toESM(require_data(), 1); // packages/editor/build-module/store/defaults.mjs var import_block_editor = __toESM(require_block_editor(), 1); var EDITOR_SETTINGS_DEFAULTS = { ...import_block_editor.SETTINGS_DEFAULTS, richEditingEnabled: true, codeEditingEnabled: true, fontLibraryEnabled: true, enableCustomFields: void 0, defaultRenderingMode: "post-only" }; // packages/editor/build-module/dataviews/store/reducer.mjs var import_data = __toESM(require_data(), 1); function isReady(state = {}, action) { switch (action.type) { case "SET_IS_READY": return { ...state, [action.kind]: { ...state[action.kind], [action.name]: true } }; } return state; } function actions(state = {}, action) { switch (action.type) { case "REGISTER_ENTITY_ACTION": return { ...state, [action.kind]: { ...state[action.kind], [action.name]: [ ...(state[action.kind]?.[action.name] ?? []).filter( (_action) => _action.id !== action.config.id ), action.config ] } }; case "UNREGISTER_ENTITY_ACTION": { return { ...state, [action.kind]: { ...state[action.kind], [action.name]: (state[action.kind]?.[action.name] ?? []).filter((_action) => _action.id !== action.actionId) } }; } } return state; } function fields(state = {}, action) { switch (action.type) { case "REGISTER_ENTITY_FIELD": return { ...state, [action.kind]: { ...state[action.kind], [action.name]: [ ...(state[action.kind]?.[action.name] ?? []).filter( (_field) => _field.id !== action.config.id ), action.config ] } }; case "UNREGISTER_ENTITY_FIELD": return { ...state, [action.kind]: { ...state[action.kind], [action.name]: (state[action.kind]?.[action.name] ?? []).filter((_field) => _field.id !== action.fieldId) } }; } return state; } var reducer_default = (0, import_data.combineReducers)({ actions, fields, isReady }); // packages/editor/build-module/store/reducer.mjs function getPostRawValue(value) { if (value && "object" === typeof value && "raw" in value) { return value.raw; } return value; } function postId(state = null, action) { switch (action.type) { case "SET_EDITED_POST": return action.postId; } return state; } function templateId(state = null, action) { switch (action.type) { case "SET_CURRENT_TEMPLATE_ID": return action.id; } return state; } function postType(state = null, action) { switch (action.type) { case "SET_EDITED_POST": return action.postType; } return state; } function template(state = { isValid: true }, action) { switch (action.type) { case "SET_TEMPLATE_VALIDITY": return { ...state, isValid: action.isValid }; } return state; } function saving(state = {}, action) { switch (action.type) { case "REQUEST_POST_UPDATE_START": case "REQUEST_POST_UPDATE_FINISH": return { pending: action.type === "REQUEST_POST_UPDATE_START", options: action.options || {} }; } return state; } function deleting(state = {}, action) { switch (action.type) { case "REQUEST_POST_DELETE_START": case "REQUEST_POST_DELETE_FINISH": return { pending: action.type === "REQUEST_POST_DELETE_START" }; } return state; } function postLock(state = { isLocked: false }, action) { switch (action.type) { case "UPDATE_POST_LOCK": return action.lock; } return state; } function postSavingLock(state = {}, action) { switch (action.type) { case "LOCK_POST_SAVING": return { ...state, [action.lockName]: true }; case "UNLOCK_POST_SAVING": { const { [action.lockName]: removedLockName, ...restState } = state; return restState; } } return state; } function postAutosavingLock(state = {}, action) { switch (action.type) { case "LOCK_POST_AUTOSAVING": return { ...state, [action.lockName]: true }; case "UNLOCK_POST_AUTOSAVING": { const { [action.lockName]: removedLockName, ...restState } = state; return restState; } } return state; } function editorSettings(state = EDITOR_SETTINGS_DEFAULTS, action) { switch (action.type) { case "UPDATE_EDITOR_SETTINGS": return { ...state, ...action.settings }; } return state; } function renderingMode(state = "post-only", action) { switch (action.type) { case "SET_RENDERING_MODE": return action.mode; } return state; } function deviceType(state = "Desktop", action) { switch (action.type) { case "SET_DEVICE_TYPE": return action.deviceType; } return state; } function removedPanels(state = [], action) { switch (action.type) { case "REMOVE_PANEL": if (!state.includes(action.panelName)) { return [...state, action.panelName]; } } return state; } function blockInserterPanel(state = false, action) { switch (action.type) { case "SET_IS_LIST_VIEW_OPENED": return action.isOpen ? false : state; case "SET_IS_INSERTER_OPENED": return action.value; } return state; } function listViewPanel(state = false, action) { switch (action.type) { case "SET_IS_INSERTER_OPENED": return action.value ? false : state; case "SET_IS_LIST_VIEW_OPENED": return action.isOpen; } return state; } function listViewToggleRef(state = { current: null }) { return state; } function inserterSidebarToggleRef(state = { current: null }) { return state; } function publishSidebarActive(state = false, action) { switch (action.type) { case "OPEN_PUBLISH_SIDEBAR": return true; case "CLOSE_PUBLISH_SIDEBAR": return false; case "TOGGLE_PUBLISH_SIDEBAR": return !state; } return state; } function stylesPath(state = "/", action) { switch (action.type) { case "SET_STYLES_PATH": return action.path; case "RESET_STYLES_NAVIGATION": return "/"; } return state; } function showStylebook(state = false, action) { switch (action.type) { case "SET_SHOW_STYLEBOOK": return action.show; case "RESET_STYLES_NAVIGATION": return false; } return state; } function canvasMinHeight(state = 0, action) { switch (action.type) { case "SET_CANVAS_MIN_HEIGHT": return action.minHeight; } return state; } function revisionId(state = null, action) { switch (action.type) { case "SET_CURRENT_REVISION_ID": return action.revisionId; } return state; } function revisionPage(state = 1, action) { switch (action.type) { case "SET_REVISION_PAGE": return action.page; case "SET_CURRENT_REVISION_ID": if (!action.revisionId) { return 1; } return state; } return state; } function showRevisionDiff(state = true, action) { switch (action.type) { case "SET_SHOW_REVISION_DIFF": return action.showDiff; case "SET_CURRENT_REVISION_ID": return !action.revisionId ? true : state; } return state; } function selectedNote(state = {}, action) { switch (action.type) { case "SELECT_NOTE": return { noteId: action.noteId, options: action.options }; } return state; } var reducer_default2 = (0, import_data2.combineReducers)({ postId, postType, templateId, saving, deleting, postLock, template, postSavingLock, editorSettings, postAutosavingLock, renderingMode, deviceType, removedPanels, blockInserterPanel, inserterSidebarToggleRef, listViewPanel, listViewToggleRef, publishSidebarActive, stylesPath, showStylebook, canvasMinHeight, revisionId, revisionPage, showRevisionDiff, selectedNote, dataviews: reducer_default }); // packages/editor/build-module/store/selectors.mjs var selectors_exports = {}; __export(selectors_exports, { __experimentalGetDefaultTemplatePartAreas: () => __experimentalGetDefaultTemplatePartAreas, __experimentalGetDefaultTemplateType: () => __experimentalGetDefaultTemplateType, __experimentalGetDefaultTemplateTypes: () => __experimentalGetDefaultTemplateTypes, __experimentalGetTemplateInfo: () => __experimentalGetTemplateInfo, __unstableIsEditorReady: () => __unstableIsEditorReady, canInsertBlockType: () => canInsertBlockType, canUserUseUnfilteredHTML: () => canUserUseUnfilteredHTML, didPostSaveRequestFail: () => didPostSaveRequestFail, didPostSaveRequestSucceed: () => didPostSaveRequestSucceed, getActivePostLock: () => getActivePostLock, getAdjacentBlockClientId: () => getAdjacentBlockClientId, getAutosaveAttribute: () => getAutosaveAttribute, getBlock: () => getBlock, getBlockAttributes: () => getBlockAttributes, getBlockCount: () => getBlockCount, getBlockHierarchyRootClientId: () => getBlockHierarchyRootClientId, getBlockIndex: () => getBlockIndex, getBlockInsertionPoint: () => getBlockInsertionPoint, getBlockListSettings: () => getBlockListSettings, getBlockMode: () => getBlockMode, getBlockName: () => getBlockName, getBlockOrder: () => getBlockOrder, getBlockRootClientId: () => getBlockRootClientId, getBlockSelectionEnd: () => getBlockSelectionEnd, getBlockSelectionStart: () => getBlockSelectionStart, getBlocks: () => getBlocks, getBlocksByClientId: () => getBlocksByClientId, getClientIdsOfDescendants: () => getClientIdsOfDescendants, getClientIdsWithDescendants: () => getClientIdsWithDescendants, getCurrentPost: () => getCurrentPost, getCurrentPostAttribute: () => getCurrentPostAttribute, getCurrentPostId: () => getCurrentPostId, getCurrentPostLastRevisionId: () => getCurrentPostLastRevisionId, getCurrentPostRevisionsCount: () => getCurrentPostRevisionsCount, getCurrentPostType: () => getCurrentPostType, getCurrentTemplateId: () => getCurrentTemplateId, getDeviceType: () => getDeviceType, getEditedPostAttribute: () => getEditedPostAttribute, getEditedPostContent: () => getEditedPostContent, getEditedPostPreviewLink: () => getEditedPostPreviewLink, getEditedPostSlug: () => getEditedPostSlug, getEditedPostVisibility: () => getEditedPostVisibility, getEditorBlocks: () => getEditorBlocks, getEditorMode: () => getEditorMode, getEditorSelection: () => getEditorSelection, getEditorSelectionEnd: () => getEditorSelectionEnd, getEditorSelectionStart: () => getEditorSelectionStart, getEditorSettings: () => getEditorSettings, getFirstMultiSelectedBlockClientId: () => getFirstMultiSelectedBlockClientId, getGlobalBlockCount: () => getGlobalBlockCount, getInserterItems: () => getInserterItems, getLastMultiSelectedBlockClientId: () => getLastMultiSelectedBlockClientId, getMultiSelectedBlockClientIds: () => getMultiSelectedBlockClientIds, getMultiSelectedBlocks: () => getMultiSelectedBlocks, getMultiSelectedBlocksEndClientId: () => getMultiSelectedBlocksEndClientId, getMultiSelectedBlocksStartClientId: () => getMultiSelectedBlocksStartClientId, getNextBlockClientId: () => getNextBlockClientId, getPermalink: () => getPermalink, getPermalinkParts: () => getPermalinkParts, getPostEdits: () => getPostEdits, getPostLockUser: () => getPostLockUser, getPostTypeLabel: () => getPostTypeLabel, getPreviousBlockClientId: () => getPreviousBlockClientId, getRenderingMode: () => getRenderingMode, getSelectedBlock: () => getSelectedBlock, getSelectedBlockClientId: () => getSelectedBlockClientId, getSelectedBlockCount: () => getSelectedBlockCount, getSelectedBlocksInitialCaretPosition: () => getSelectedBlocksInitialCaretPosition, getStateBeforeOptimisticTransaction: () => getStateBeforeOptimisticTransaction, getSuggestedPostFormat: () => getSuggestedPostFormat, getTemplate: () => getTemplate, getTemplateLock: () => getTemplateLock, hasChangedContent: () => hasChangedContent, hasEditorRedo: () => hasEditorRedo, hasEditorUndo: () => hasEditorUndo, hasInserterItems: () => hasInserterItems, hasMultiSelection: () => hasMultiSelection, hasNonPostEntityChanges: () => hasNonPostEntityChanges, hasSelectedBlock: () => hasSelectedBlock, hasSelectedInnerBlock: () => hasSelectedInnerBlock, inSomeHistory: () => inSomeHistory, isAncestorMultiSelected: () => isAncestorMultiSelected, isAutosavingPost: () => isAutosavingPost, isBlockInsertionPointVisible: () => isBlockInsertionPointVisible, isBlockMultiSelected: () => isBlockMultiSelected, isBlockSelected: () => isBlockSelected, isBlockValid: () => isBlockValid, isBlockWithinSelection: () => isBlockWithinSelection, isCaretWithinFormattedText: () => isCaretWithinFormattedText, isCleanNewPost: () => isCleanNewPost, isCurrentPostPending: () => isCurrentPostPending, isCurrentPostPublished: () => isCurrentPostPublished, isCurrentPostScheduled: () => isCurrentPostScheduled, isDeletingPost: () => isDeletingPost, isEditedPostAutosaveable: () => isEditedPostAutosaveable, isEditedPostBeingScheduled: () => isEditedPostBeingScheduled, isEditedPostDateFloating: () => isEditedPostDateFloating, isEditedPostDirty: () => isEditedPostDirty, isEditedPostEmpty: () => isEditedPostEmpty, isEditedPostNew: () => isEditedPostNew, isEditedPostPublishable: () => isEditedPostPublishable, isEditedPostSaveable: () => isEditedPostSaveable, isEditorPanelEnabled: () => isEditorPanelEnabled, isEditorPanelOpened: () => isEditorPanelOpened, isEditorPanelRemoved: () => isEditorPanelRemoved, isFirstMultiSelectedBlock: () => isFirstMultiSelectedBlock, isInserterOpened: () => isInserterOpened, isListViewOpened: () => isListViewOpened, isMultiSelecting: () => isMultiSelecting, isPermalinkEditable: () => isPermalinkEditable, isPostAutosavingLocked: () => isPostAutosavingLocked, isPostLockTakeover: () => isPostLockTakeover, isPostLocked: () => isPostLocked, isPostSavingLocked: () => isPostSavingLocked, isPreviewingPost: () => isPreviewingPost, isPublishSidebarEnabled: () => isPublishSidebarEnabled, isPublishSidebarOpened: () => isPublishSidebarOpened, isPublishingPost: () => isPublishingPost, isSavingNonPostEntityChanges: () => isSavingNonPostEntityChanges, isSavingPost: () => isSavingPost, isSelectionEnabled: () => isSelectionEnabled, isTyping: () => isTyping, isValidTemplate: () => isValidTemplate }); var import_blocks = __toESM(require_blocks(), 1); var import_date = __toESM(require_date(), 1); var import_url = __toESM(require_url(), 1); var import_data3 = __toESM(require_data(), 1); var import_deprecated = __toESM(require_deprecated(), 1); var import_element2 = __toESM(require_element(), 1); var import_block_editor2 = __toESM(require_block_editor(), 1); var import_core_data = __toESM(require_core_data(), 1); var import_preferences = __toESM(require_preferences(), 1); // packages/editor/build-module/store/constants.mjs var EDIT_MERGE_PROPERTIES = /* @__PURE__ */ new Set(["meta"]); var STORE_NAME = "core/editor"; var PERMALINK_POSTNAME_REGEX = /%(?:postname|pagename)%/; var ONE_MINUTE_IN_MS = 60 * 1e3; var AUTOSAVE_PROPERTIES = ["title", "excerpt", "content"]; var TEMPLATE_POST_TYPE = "wp_template"; var TEMPLATE_PART_POST_TYPE = "wp_template_part"; var PATTERN_POST_TYPE = "wp_block"; var NAVIGATION_POST_TYPE = "wp_navigation"; var ATTACHMENT_POST_TYPE = "attachment"; var TEMPLATE_ORIGINS = { custom: "custom", theme: "theme", plugin: "plugin" }; var TEMPLATE_POST_TYPES = ["wp_template", "wp_template_part"]; var GLOBAL_POST_TYPES = [ ...TEMPLATE_POST_TYPES, "wp_block", "wp_navigation" ]; var DESIGN_POST_TYPES = [ TEMPLATE_POST_TYPE, TEMPLATE_PART_POST_TYPE, PATTERN_POST_TYPE, NAVIGATION_POST_TYPE ]; // packages/icons/build-module/icon/index.mjs var import_element = __toESM(require_element(), 1); var icon_default = (0, import_element.forwardRef)( ({ icon, size: size3 = 24, ...props }, ref) => { return (0, import_element.cloneElement)(icon, { width: size3, height: size3, ...props, ref }); } ); // packages/icons/build-module/library/add-template.mjs var import_primitives = __toESM(require_primitives(), 1); var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); var add_template_default = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_primitives.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_primitives.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M18.5 5.5V8H20V5.5H22.5V4H20V1.5H18.5V4H16V5.5H18.5ZM13.9624 4H6C4.89543 4 4 4.89543 4 6V18C4 19.1046 4.89543 20 6 20H18C19.1046 20 20 19.1046 20 18V10.0391H18.5V18C18.5 18.2761 18.2761 18.5 18 18.5H10L10 10.4917L16.4589 10.5139L16.4641 9.01389L5.5 8.97618V6C5.5 5.72386 5.72386 5.5 6 5.5H13.9624V4ZM5.5 10.4762V18C5.5 18.2761 5.72386 18.5 6 18.5H8.5L8.5 10.4865L5.5 10.4762Z" }) }); // packages/icons/build-module/library/archive.mjs var import_primitives2 = __toESM(require_primitives(), 1); var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); var archive_default = /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives2.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives2.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M11.934 7.406a1 1 0 0 0 .914.594H19a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5h5.764a.5.5 0 0 1 .447.276l.723 1.63Zm1.064-1.216a.5.5 0 0 0 .462.31H19a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h5.764a2 2 0 0 1 1.789 1.106l.445 1.084ZM8.5 10.5h7V12h-7v-1.5Zm7 3.5h-7v1.5h7V14Z" }) }); // packages/icons/build-module/library/audio.mjs var import_primitives3 = __toESM(require_primitives(), 1); var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1); var audio_default = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives3.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives3.Path, { d: "M17.7 4.3c-1.2 0-2.8 0-3.8 1-.6.6-.9 1.5-.9 2.6V14c-.6-.6-1.5-1-2.5-1C8.6 13 7 14.6 7 16.5S8.6 20 10.5 20c1.5 0 2.8-1 3.3-2.3.5-.8.7-1.8.7-2.5V7.9c0-.7.2-1.2.5-1.6.6-.6 1.8-.6 2.8-.6h.3V4.3h-.4z" }) }); // packages/icons/build-module/library/background.mjs var import_primitives4 = __toESM(require_primitives(), 1); var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1); var background_default = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives4.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives4.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M11.53 4.47a.75.75 0 1 0-1.06 1.06l8 8a.75.75 0 1 0 1.06-1.06l-8-8Zm5 1a.75.75 0 1 0-1.06 1.06l2 2a.75.75 0 1 0 1.06-1.06l-2-2Zm-11.06 10a.75.75 0 0 1 1.06 0l2 2a.75.75 0 1 1-1.06 1.06l-2-2a.75.75 0 0 1 0-1.06Zm.06-5a.75.75 0 0 0-1.06 1.06l8 8a.75.75 0 1 0 1.06-1.06l-8-8Zm-.06-3a.75.75 0 0 1 1.06 0l10 10a.75.75 0 1 1-1.06 1.06l-10-10a.75.75 0 0 1 0-1.06Zm3.06-2a.75.75 0 0 0-1.06 1.06l10 10a.75.75 0 1 0 1.06-1.06l-10-10Z" }) }); // packages/icons/build-module/library/backup.mjs var import_primitives5 = __toESM(require_primitives(), 1); var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); var backup_default = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives5.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives5.Path, { d: "M5.5 12h1.75l-2.5 3-2.5-3H4a8 8 0 113.134 6.35l.907-1.194A6.5 6.5 0 105.5 12zm9.53 1.97l-2.28-2.28V8.5a.75.75 0 00-1.5 0V12a.747.747 0 00.218.529l1.282-.84-1.28.842 2.5 2.5a.75.75 0 101.06-1.061z" }) }); // packages/icons/build-module/library/block-default.mjs var import_primitives6 = __toESM(require_primitives(), 1); var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); var block_default_default = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives6.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives6.Path, { d: "M19 8h-1V6h-5v2h-2V6H6v2H5c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-8c0-1.1-.9-2-2-2zm.5 10c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5v-8c0-.3.2-.5.5-.5h14c.3 0 .5.2.5.5v8z" }) }); // packages/icons/build-module/library/check.mjs var import_primitives7 = __toESM(require_primitives(), 1); var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1); var check_default = /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives7.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_primitives7.Path, { d: "M16.5 7.5 10 13.9l-2.5-2.4-1 1 3.5 3.6 7.5-7.6z" }) }); // packages/icons/build-module/library/chevron-down.mjs var import_primitives8 = __toESM(require_primitives(), 1); var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1); var chevron_down_default = /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives8.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_primitives8.Path, { d: "M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z" }) }); // packages/icons/build-module/library/chevron-left-small.mjs var import_primitives9 = __toESM(require_primitives(), 1); var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1); var chevron_left_small_default = /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives9.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_primitives9.Path, { d: "m13.1 16-3.4-4 3.4-4 1.1 1-2.6 3 2.6 3-1.1 1z" }) }); // packages/icons/build-module/library/chevron-left.mjs var import_primitives10 = __toESM(require_primitives(), 1); var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1); var chevron_left_default = /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives10.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_primitives10.Path, { d: "M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z" }) }); // packages/icons/build-module/library/chevron-right-small.mjs var import_primitives11 = __toESM(require_primitives(), 1); var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1); var chevron_right_small_default = /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives11.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_primitives11.Path, { d: "M10.8622 8.04053L14.2805 12.0286L10.8622 16.0167L9.72327 15.0405L12.3049 12.0286L9.72327 9.01672L10.8622 8.04053Z" }) }); // packages/icons/build-module/library/chevron-right.mjs var import_primitives12 = __toESM(require_primitives(), 1); var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1); var chevron_right_default = /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_primitives12.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_primitives12.Path, { d: "M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z" }) }); // packages/icons/build-module/library/chevron-up.mjs var import_primitives13 = __toESM(require_primitives(), 1); var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1); var chevron_up_default = /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives13.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_primitives13.Path, { d: "M6.5 12.4L12 8l5.5 4.4-.9 1.2L12 10l-4.5 3.6-1-1.2z" }) }); // packages/icons/build-module/library/close-small.mjs var import_primitives14 = __toESM(require_primitives(), 1); var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1); var close_small_default = /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_primitives14.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_primitives14.Path, { d: "M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z" }) }); // packages/icons/build-module/library/close.mjs var import_primitives15 = __toESM(require_primitives(), 1); var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1); var close_default = /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_primitives15.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_primitives15.Path, { d: "m13.06 12 6.47-6.47-1.06-1.06L12 10.94 5.53 4.47 4.47 5.53 10.94 12l-6.47 6.47 1.06 1.06L12 13.06l6.47 6.47 1.06-1.06L13.06 12Z" }) }); // packages/icons/build-module/library/cloud-upload.mjs var import_primitives16 = __toESM(require_primitives(), 1); var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1); var cloud_upload_default = /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_primitives16.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_primitives16.Path, { d: "M17.3 10.1C17.3 7.60001 15.2 5.70001 12.5 5.70001C10.3 5.70001 8.4 7.10001 7.9 9.00001H7.7C5.7 9.00001 4 10.7 4 12.8C4 14.9 5.7 16.6 7.7 16.6H9.5V15.2H7.7C6.5 15.2 5.5 14.1 5.5 12.9C5.5 11.7 6.5 10.5 7.7 10.5H9L9.3 9.40001C9.7 8.10001 11 7.20001 12.5 7.20001C14.3 7.20001 15.8 8.50001 15.8 10.1V11.4L17.1 11.6C17.9 11.7 18.5 12.5 18.5 13.4C18.5 14.4 17.7 15.2 16.8 15.2H14.5V16.6H16.7C18.5 16.6 19.9 15.1 19.9 13.3C20 11.7 18.8 10.4 17.3 10.1Z M14.1245 14.2426L15.1852 13.182L12.0032 10L8.82007 13.1831L9.88072 14.2438L11.25 12.8745V18H12.75V12.8681L14.1245 14.2426Z" }) }); // packages/icons/build-module/library/cloud.mjs var import_primitives17 = __toESM(require_primitives(), 1); var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1); var cloud_default = /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_primitives17.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_primitives17.Path, { d: "M17.3 10.1c0-2.5-2.1-4.4-4.8-4.4-2.2 0-4.1 1.4-4.6 3.3h-.2C5.7 9 4 10.7 4 12.8c0 2.1 1.7 3.8 3.7 3.8h9c1.8 0 3.2-1.5 3.2-3.3.1-1.6-1.1-2.9-2.6-3.2zm-.5 5.1h-9c-1.2 0-2.2-1.1-2.2-2.3s1-2.4 2.2-2.4h1.3l.3-1.1c.4-1.3 1.7-2.2 3.2-2.2 1.8 0 3.3 1.3 3.3 2.9v1.3l1.3.2c.8.1 1.4.9 1.4 1.8-.1 1-.9 1.8-1.8 1.8z" }) }); // packages/icons/build-module/library/code.mjs var import_primitives18 = __toESM(require_primitives(), 1); var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1); var code_default = /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_primitives18.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_primitives18.Path, { d: "M20.8 10.7l-4.3-4.3-1.1 1.1 4.3 4.3c.1.1.1.3 0 .4l-4.3 4.3 1.1 1.1 4.3-4.3c.7-.8.7-1.9 0-2.6zM4.2 11.8l4.3-4.3-1-1-4.3 4.3c-.7.7-.7 1.8 0 2.5l4.3 4.3 1.1-1.1-4.3-4.3c-.2-.1-.2-.3-.1-.4z" }) }); // packages/icons/build-module/library/color.mjs var import_primitives19 = __toESM(require_primitives(), 1); var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1); var color_default = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_primitives19.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_primitives19.Path, { d: "M17.2 10.9c-.5-1-1.2-2.1-2.1-3.2-.6-.9-1.3-1.7-2.1-2.6L12 4l-1 1.1c-.6.9-1.3 1.7-2 2.6-.8 1.2-1.5 2.3-2 3.2-.6 1.2-1 2.2-1 3 0 3.4 2.7 6.1 6.1 6.1s6.1-2.7 6.1-6.1c0-.8-.3-1.8-1-3zm-5.1 7.6c-2.5 0-4.6-2.1-4.6-4.6 0-.3.1-1 .8-2.3.5-.9 1.1-1.9 2-3.1.7-.9 1.3-1.7 1.8-2.3.7.8 1.3 1.6 1.8 2.3.8 1.1 1.5 2.2 2 3.1.7 1.3.8 2 .8 2.3 0 2.5-2.1 4.6-4.6 4.6z" }) }); // packages/icons/build-module/library/comment-author-avatar.mjs var import_primitives20 = __toESM(require_primitives(), 1); var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1); var comment_author_avatar_default = /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_primitives20.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_primitives20.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M7.25 16.437a6.5 6.5 0 1 1 9.5 0V16A2.75 2.75 0 0 0 14 13.25h-4A2.75 2.75 0 0 0 7.25 16v.437Zm1.5 1.193a6.47 6.47 0 0 0 3.25.87 6.47 6.47 0 0 0 3.25-.87V16c0-.69-.56-1.25-1.25-1.25h-4c-.69 0-1.25.56-1.25 1.25v1.63ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm10-2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z" }) }); // packages/icons/build-module/library/comment.mjs var import_primitives21 = __toESM(require_primitives(), 1); var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1); var comment_default = /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_primitives21.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_primitives21.Path, { d: "M18 4H6c-1.1 0-2 .9-2 2v12.9c0 .6.5 1.1 1.1 1.1.3 0 .5-.1.8-.3L8.5 17H18c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 11c0 .3-.2.5-.5.5H7.9l-2.4 2.4V6c0-.3.2-.5.5-.5h12c.3 0 .5.2.5.5v9z" }) }); // packages/icons/build-module/library/copy-small.mjs var import_primitives22 = __toESM(require_primitives(), 1); var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1); var copy_small_default = /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_primitives22.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_primitives22.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M5.625 5.5h9.75c.069 0 .125.056.125.125v9.75a.125.125 0 0 1-.125.125h-9.75a.125.125 0 0 1-.125-.125v-9.75c0-.069.056-.125.125-.125ZM4 5.625C4 4.728 4.728 4 5.625 4h9.75C16.273 4 17 4.728 17 5.625v9.75c0 .898-.727 1.625-1.625 1.625h-9.75A1.625 1.625 0 0 1 4 15.375v-9.75Zm14.5 11.656v-9H20v9C20 18.8 18.77 20 17.251 20H6.25v-1.5h11.001c.69 0 1.249-.528 1.249-1.219Z" }) }); // packages/icons/build-module/library/desktop.mjs var import_primitives23 = __toESM(require_primitives(), 1); var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1); var desktop_default = /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives23.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_primitives23.Path, { d: "M20.5 16h-.7V8c0-1.1-.9-2-2-2H6.2c-1.1 0-2 .9-2 2v8h-.7c-.8 0-1.5.7-1.5 1.5h20c0-.8-.7-1.5-1.5-1.5zM5.7 8c0-.3.2-.5.5-.5h11.6c.3 0 .5.2.5.5v7.6H5.7V8z" }) }); // packages/icons/build-module/library/download.mjs var import_primitives24 = __toESM(require_primitives(), 1); var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1); var download_default = /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_primitives24.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_primitives24.Path, { d: "M18 11.3l-1-1.1-4 4V3h-1.5v11.3L7 10.2l-1 1.1 6.2 5.8 5.8-5.8zm.5 3.7v3.5h-13V15H4v5h16v-5h-1.5z" }) }); // packages/icons/build-module/library/drafts.mjs var import_primitives25 = __toESM(require_primitives(), 1); var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1); var drafts_default = /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_primitives25.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_primitives25.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm8 4a4 4 0 0 0 4-4H8a4 4 0 0 0 4 4Z" }) }); // packages/icons/build-module/library/drawer-left.mjs var import_primitives26 = __toESM(require_primitives(), 1); var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1); var drawer_left_default = /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_primitives26.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_primitives26.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M18 4H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zM8.5 18.5H6c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h2.5v13zm10-.5c0 .3-.2.5-.5.5h-8v-13h8c.3 0 .5.2.5.5v12z" }) }); // packages/icons/build-module/library/drawer-right.mjs var import_primitives27 = __toESM(require_primitives(), 1); var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1); var drawer_right_default = /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_primitives27.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_primitives27.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M18 4H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-4 14.5H6c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h8v13zm4.5-.5c0 .3-.2.5-.5.5h-2.5v-13H18c.3 0 .5.2.5.5v12z" }) }); // packages/icons/build-module/library/envelope.mjs var import_primitives28 = __toESM(require_primitives(), 1); var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1); var envelope_default = /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_primitives28.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_primitives28.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M3 7c0-1.1.9-2 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Zm2-.5h14c.3 0 .5.2.5.5v1L12 13.5 4.5 7.9V7c0-.3.2-.5.5-.5Zm-.5 3.3V17c0 .3.2.5.5.5h14c.3 0 .5-.2.5-.5V9.8L12 15.4 4.5 9.8Z" }) }); // packages/icons/build-module/library/error.mjs var import_primitives29 = __toESM(require_primitives(), 1); var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1); var error_default = /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_primitives29.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_primitives29.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12.218 5.377a.25.25 0 0 0-.436 0l-7.29 12.96a.25.25 0 0 0 .218.373h14.58a.25.25 0 0 0 .218-.372l-7.29-12.96Zm-1.743-.735c.669-1.19 2.381-1.19 3.05 0l7.29 12.96a1.75 1.75 0 0 1-1.525 2.608H4.71a1.75 1.75 0 0 1-1.525-2.608l7.29-12.96ZM12.75 17.46h-1.5v-1.5h1.5v1.5Zm-1.5-3h1.5v-5h-1.5v5Z" }) }); // packages/icons/build-module/library/external.mjs var import_primitives30 = __toESM(require_primitives(), 1); var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1); var external_default = /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_primitives30.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(import_primitives30.Path, { d: "M19.5 4.5h-7V6h4.44l-5.97 5.97 1.06 1.06L18 7.06v4.44h1.5v-7Zm-13 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-3H17v3a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h3V5.5h-3Z" }) }); // packages/icons/build-module/library/file.mjs var import_primitives31 = __toESM(require_primitives(), 1); var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1); var file_default = /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_primitives31.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_primitives31.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12.848 8a1 1 0 0 1-.914-.594l-.723-1.63a.5.5 0 0 0-.447-.276H5a.5.5 0 0 0-.5.5v11.5a.5.5 0 0 0 .5.5h14a.5.5 0 0 0 .5-.5v-9A.5.5 0 0 0 19 8h-6.152Zm.612-1.5a.5.5 0 0 1-.462-.31l-.445-1.084A2 2 0 0 0 10.763 4H5a2 2 0 0 0-2 2v11.5a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2h-5.54Z" }) }); // packages/icons/build-module/library/footer.mjs var import_primitives32 = __toESM(require_primitives(), 1); var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1); var footer_default = /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_primitives32.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_primitives32.Path, { fillRule: "evenodd", d: "M18 5.5h-8v8h8.5V6a.5.5 0 00-.5-.5zm-9.5 8h-3V6a.5.5 0 01.5-.5h2.5v8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z" }) }); // packages/icons/build-module/library/format-list-bullets.mjs var import_primitives33 = __toESM(require_primitives(), 1); var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1); var format_list_bullets_default = /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_primitives33.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_primitives33.Path, { d: "M11.1 15.8H20v-1.5h-8.9v1.5zm0-8.6v1.5H20V7.2h-8.9zM6 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-7c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z" }) }); // packages/icons/build-module/library/header.mjs var import_primitives34 = __toESM(require_primitives(), 1); var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1); var header_default = /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_primitives34.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_primitives34.Path, { d: "M18.5 10.5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z" }) }); // packages/icons/build-module/library/info.mjs var import_primitives35 = __toESM(require_primitives(), 1); var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1); var info_default = /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_primitives35.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_primitives35.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm.75 4v1.5h-1.5V8h1.5Zm0 8v-5h-1.5v5h1.5Z" }) }); // packages/icons/build-module/library/keyboard.mjs var import_primitives36 = __toESM(require_primitives(), 1); var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1); var keyboard_default = /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_primitives36.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: [ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_primitives36.Path, { d: "m16 15.5h-8v-1.5h8zm-7.5-2.5h-2v-2h2zm3 0h-2v-2h2zm3 0h-2v-2h2zm3 0h-2v-2h2zm-9-3h-2v-2h2zm3 0h-2v-2h2zm3 0h-2v-2h2zm3 0h-2v-2h2z" }), /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_primitives36.Path, { d: "m18.5 6.5h-13a.5.5 0 0 0 -.5.5v9.5a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-9.5a.5.5 0 0 0 -.5-.5zm-13-1.5h13a2 2 0 0 1 2 2v9.5a2 2 0 0 1 -2 2h-13a2 2 0 0 1 -2-2v-9.5a2 2 0 0 1 2-2z" }) ] }); // packages/icons/build-module/library/layout.mjs var import_primitives37 = __toESM(require_primitives(), 1); var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1); var layout_default = /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_primitives37.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_primitives37.Path, { d: "M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z" }) }); // packages/icons/build-module/library/link.mjs var import_primitives38 = __toESM(require_primitives(), 1); var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1); var link_default = /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_primitives38.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_primitives38.Path, { d: "M10 17.389H8.444A5.194 5.194 0 1 1 8.444 7H10v1.5H8.444a3.694 3.694 0 0 0 0 7.389H10v1.5ZM14 7h1.556a5.194 5.194 0 0 1 0 10.39H14v-1.5h1.556a3.694 3.694 0 0 0 0-7.39H14V7Zm-4.5 6h5v-1.5h-5V13Z" }) }); // packages/icons/build-module/library/list-view.mjs var import_primitives39 = __toESM(require_primitives(), 1); var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1); var list_view_default = /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_primitives39.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_primitives39.Path, { d: "M3 6h11v1.5H3V6Zm3.5 5.5h11V13h-11v-1.5ZM21 17H10v1.5h11V17Z" }) }); // packages/icons/build-module/library/lock-small.mjs var import_primitives40 = __toESM(require_primitives(), 1); var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1); var lock_small_default = /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_primitives40.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_primitives40.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M15 11h-.2V9c0-1.5-1.2-2.8-2.8-2.8S9.2 7.5 9.2 9v2H9c-.6 0-1 .4-1 1v4c0 .6.4 1 1 1h6c.6 0 1-.4 1-1v-4c0-.6-.4-1-1-1zm-1.8 0h-2.5V9c0-.7.6-1.2 1.2-1.2s1.2.6 1.2 1.2v2z" }) }); // packages/icons/build-module/library/mobile.mjs var import_primitives41 = __toESM(require_primitives(), 1); var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1); var mobile_default = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_primitives41.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_primitives41.Path, { d: "M15 4H9c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h6c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 14c0 .3-.2.5-.5.5H9c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h6c.3 0 .5.2.5.5v12zm-4.5-.5h2V16h-2v1.5z" }) }); // packages/icons/build-module/library/more-vertical.mjs var import_primitives42 = __toESM(require_primitives(), 1); var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1); var more_vertical_default = /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_primitives42.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_primitives42.Path, { d: "M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z" }) }); // packages/icons/build-module/library/navigation-overlay.mjs var import_primitives43 = __toESM(require_primitives(), 1); var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1); var navigation_overlay_default = /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_primitives43.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_primitives43.Path, { d: "M18.5 10a1.5 1.5 0 0 1 1.5 1.5v7a1.5 1.5 0 0 1-1.5 1.5h-7a1.5 1.5 0 0 1-1.5-1.5v-7a1.5 1.5 0 0 1 1.5-1.5zM16 4a2 2 0 0 1 2 2v2h-1.5V6a.5.5 0 0 0-.5-.5H6a.5.5 0 0 0-.5.5v3H8v1.5H5.5V16a.5.5 0 0 0 .5.5h2V18H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z" }) }); // packages/icons/build-module/library/navigation.mjs var import_primitives44 = __toESM(require_primitives(), 1); var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1); var navigation_default = /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_primitives44.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_primitives44.Path, { d: "M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 14.5c-3.6 0-6.5-2.9-6.5-6.5S8.4 5.5 12 5.5s6.5 2.9 6.5 6.5-2.9 6.5-6.5 6.5zM9 16l4.5-3L15 8.4l-4.5 3L9 16z" }) }); // packages/icons/build-module/library/next.mjs var import_primitives45 = __toESM(require_primitives(), 1); var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1); var next_default = /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_primitives45.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_primitives45.Path, { d: "M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z" }) }); // packages/icons/build-module/library/not-allowed.mjs var import_primitives46 = __toESM(require_primitives(), 1); var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1); var not_allowed_default = /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_primitives46.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_primitives46.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12 18.5A6.5 6.5 0 0 1 6.93 7.931l9.139 9.138A6.473 6.473 0 0 1 12 18.5Zm5.123-2.498a6.5 6.5 0 0 0-9.124-9.124l9.124 9.124ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Z" }) }); // packages/icons/build-module/library/page.mjs var import_primitives47 = __toESM(require_primitives(), 1); var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1); var page_default = /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(import_primitives47.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: [ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_primitives47.Path, { d: "M15.5 7.5h-7V9h7V7.5Zm-7 3.5h7v1.5h-7V11Zm7 3.5h-7V16h7v-1.5Z" }), /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_primitives47.Path, { d: "M17 4H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2ZM7 5.5h10a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5H7a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5Z" }) ] }); // packages/icons/build-module/library/pencil.mjs var import_primitives48 = __toESM(require_primitives(), 1); var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1); var pencil_default = /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_primitives48.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_primitives48.Path, { d: "m19 7-3-3-8.5 8.5-1 4 4-1L19 7Zm-7 11.5H5V20h7v-1.5Z" }) }); // packages/icons/build-module/library/pending.mjs var import_primitives49 = __toESM(require_primitives(), 1); var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1); var pending_default = /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_primitives49.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_primitives49.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm8 4a4 4 0 0 1-4-4h4V8a4 4 0 0 1 0 8Z" }) }); // packages/icons/build-module/library/plus.mjs var import_primitives50 = __toESM(require_primitives(), 1); var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1); var plus_default = /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_primitives50.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_primitives50.Path, { d: "M11 12.5V17.5H12.5V12.5H17.5V11H12.5V6H11V11H6V12.5H11Z" }) }); // packages/icons/build-module/library/previous.mjs var import_primitives51 = __toESM(require_primitives(), 1); var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1); var previous_default = /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_primitives51.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_primitives51.Path, { d: "M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z" }) }); // packages/icons/build-module/library/published.mjs var import_primitives52 = __toESM(require_primitives(), 1); var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1); var published_default = /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_primitives52.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_primitives52.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm11.53-1.47-1.06-1.06L11 12.94l-1.47-1.47-1.06 1.06L11 15.06l4.53-4.53Z" }) }); // packages/icons/build-module/library/redo.mjs var import_primitives53 = __toESM(require_primitives(), 1); var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1); var redo_default = /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_primitives53.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_primitives53.Path, { d: "M15.6 6.5l-1.1 1 2.9 3.3H8c-.9 0-1.7.3-2.3.9-1.4 1.5-1.4 4.2-1.4 5.6v.2h1.5v-.3c0-1.1 0-3.5 1-4.5.3-.3.7-.5 1.3-.5h9.2L14.5 15l1.1 1.1 4.6-4.6-4.6-5z" }) }); // packages/icons/build-module/library/reset.mjs var import_primitives54 = __toESM(require_primitives(), 1); var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1); var reset_default = /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_primitives54.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_primitives54.Path, { d: "M7 11.5h10V13H7z" }) }); // packages/icons/build-module/library/rotate-left.mjs var import_primitives55 = __toESM(require_primitives(), 1); var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1); var rotate_left_default = /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_primitives55.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_primitives55.Path, { d: "M12 4V2.2L9 4.8l3 2.5V5.5c3.6 0 6.5 2.9 6.5 6.5 0 2.9-1.9 5.3-4.5 6.2v.2l-.1-.2c-.4.1-.7.2-1.1.2l.2 1.5c.3 0 .6-.1 1-.2 3.5-.9 6-4 6-7.7 0-4.4-3.6-8-8-8zm-7.9 7l1.5.2c.1-1.2.5-2.3 1.2-3.2l-1.1-.9C4.8 8.2 4.3 9.6 4.1 11zm1.5 1.8l-1.5.2c.1.7.3 1.4.5 2 .3.7.6 1.3 1 1.8l1.2-.8c-.3-.5-.6-1-.8-1.5s-.4-1.1-.4-1.7zm1.5 5.5c1.1.9 2.4 1.4 3.8 1.6l.2-1.5c-1.1-.1-2.2-.5-3.1-1.2l-.9 1.1z" }) }); // packages/icons/build-module/library/rotate-right.mjs var import_primitives56 = __toESM(require_primitives(), 1); var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1); var rotate_right_default = /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_primitives56.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_primitives56.Path, { d: "M15.1 4.8l-3-2.5V4c-4.4 0-8 3.6-8 8 0 3.7 2.5 6.9 6 7.7.3.1.6.1 1 .2l.2-1.5c-.4 0-.7-.1-1.1-.2l-.1.2v-.2c-2.6-.8-4.5-3.3-4.5-6.2 0-3.6 2.9-6.5 6.5-6.5v1.8l3-2.5zM20 11c-.2-1.4-.7-2.7-1.6-3.8l-1.2.8c.7.9 1.1 2 1.3 3.1L20 11zm-1.5 1.8c-.1.5-.2 1.1-.4 1.6s-.5 1-.8 1.5l1.2.9c.4-.5.8-1.1 1-1.8s.5-1.3.5-2l-1.5-.2zm-5.6 5.6l.2 1.5c1.4-.2 2.7-.7 3.8-1.6l-.9-1.1c-.9.7-2 1.1-3.1 1.2z" }) }); // packages/icons/build-module/library/scheduled.mjs var import_primitives57 = __toESM(require_primitives(), 1); var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1); var scheduled_default = /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_primitives57.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_primitives57.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm9 1V8h-1.5v3.5h-2V13H13Z" }) }); // packages/icons/build-module/library/seen.mjs var import_primitives58 = __toESM(require_primitives(), 1); var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1); var seen_default = /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_primitives58.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_primitives58.Path, { d: "M3.99961 13C4.67043 13.3354 4.6703 13.3357 4.67017 13.3359L4.67298 13.3305C4.67621 13.3242 4.68184 13.3135 4.68988 13.2985C4.70595 13.2686 4.7316 13.2218 4.76695 13.1608C4.8377 13.0385 4.94692 12.8592 5.09541 12.6419C5.39312 12.2062 5.84436 11.624 6.45435 11.0431C7.67308 9.88241 9.49719 8.75 11.9996 8.75C14.502 8.75 16.3261 9.88241 17.5449 11.0431C18.1549 11.624 18.6061 12.2062 18.9038 12.6419C19.0523 12.8592 19.1615 13.0385 19.2323 13.1608C19.2676 13.2218 19.2933 13.2686 19.3093 13.2985C19.3174 13.3135 19.323 13.3242 19.3262 13.3305L19.3291 13.3359C19.3289 13.3357 19.3288 13.3354 19.9996 13C20.6704 12.6646 20.6703 12.6643 20.6701 12.664L20.6697 12.6632L20.6688 12.6614L20.6662 12.6563L20.6583 12.6408C20.6517 12.6282 20.6427 12.6108 20.631 12.5892C20.6078 12.5459 20.5744 12.4852 20.5306 12.4096C20.4432 12.2584 20.3141 12.0471 20.1423 11.7956C19.7994 11.2938 19.2819 10.626 18.5794 9.9569C17.1731 8.61759 14.9972 7.25 11.9996 7.25C9.00203 7.25 6.82614 8.61759 5.41987 9.9569C4.71736 10.626 4.19984 11.2938 3.85694 11.7956C3.68511 12.0471 3.55605 12.2584 3.4686 12.4096C3.42484 12.4852 3.39142 12.5459 3.36818 12.5892C3.35656 12.6108 3.34748 12.6282 3.34092 12.6408L3.33297 12.6563L3.33041 12.6614L3.32948 12.6632L3.32911 12.664C3.32894 12.6643 3.32879 12.6646 3.99961 13ZM11.9996 16C13.9326 16 15.4996 14.433 15.4996 12.5C15.4996 10.567 13.9326 9 11.9996 9C10.0666 9 8.49961 10.567 8.49961 12.5C8.49961 14.433 10.0666 16 11.9996 16Z" }) }); // packages/icons/build-module/library/settings.mjs var import_primitives59 = __toESM(require_primitives(), 1); var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1); var settings_default = /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(import_primitives59.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: [ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_primitives59.Path, { d: "m19 7.5h-7.628c-.3089-.87389-1.1423-1.5-2.122-1.5-.97966 0-1.81309.62611-2.12197 1.5h-2.12803v1.5h2.12803c.30888.87389 1.14231 1.5 2.12197 1.5.9797 0 1.8131-.62611 2.122-1.5h7.628z" }), /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_primitives59.Path, { d: "m19 15h-2.128c-.3089-.8739-1.1423-1.5-2.122-1.5s-1.8131.6261-2.122 1.5h-7.628v1.5h7.628c.3089.8739 1.1423 1.5 2.122 1.5s1.8131-.6261 2.122-1.5h2.128z" }) ] }); // packages/icons/build-module/library/shadow.mjs var import_primitives60 = __toESM(require_primitives(), 1); var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1); var shadow_default = /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_primitives60.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_primitives60.Path, { d: "M12 8c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4zm0 6.5c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5-1.1 2.5-2.5 2.5zM12.8 3h-1.5v3h1.5V3zm-1.6 18h1.5v-3h-1.5v3zm6.8-9.8v1.5h3v-1.5h-3zm-12 0H3v1.5h3v-1.5zm9.7 5.6 2.1 2.1 1.1-1.1-2.1-2.1-1.1 1.1zM8.3 7.2 6.2 5.1 5.1 6.2l2.1 2.1 1.1-1.1zM5.1 17.8l1.1 1.1 2.1-2.1-1.1-1.1-2.1 2.1zM18.9 6.2l-1.1-1.1-2.1 2.1 1.1 1.1 2.1-2.1z" }) }); // packages/icons/build-module/library/shuffle.mjs var import_primitives61 = __toESM(require_primitives(), 1); var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1); var shuffle_default = /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_primitives61.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_primitives61.Path, { d: "M17.192 6.75L15.47 5.03l1.06-1.06 3.537 3.53-3.537 3.53-1.06-1.06 1.723-1.72h-3.19c-.602 0-.993.202-1.28.498-.309.319-.538.792-.695 1.383-.13.488-.222 1.023-.296 1.508-.034.664-.116 1.413-.303 2.117-.193.721-.513 1.467-1.068 2.04-.575.594-1.359.954-2.357.954H4v-1.5h4.003c.601 0 .993-.202 1.28-.498.308-.319.538-.792.695-1.383.149-.557.216-1.093.288-1.662l.039-.31a9.653 9.653 0 0 1 .272-1.653c.193-.722.513-1.467 1.067-2.04.576-.594 1.36-.954 2.358-.954h3.19zM8.004 6.75c.8 0 1.46.23 1.988.628a6.24 6.24 0 0 0-.684 1.396 1.725 1.725 0 0 0-.024-.026c-.287-.296-.679-.498-1.28-.498H4v-1.5h4.003zM12.699 14.726c-.161.459-.38.94-.684 1.396.527.397 1.188.628 1.988.628h3.19l-1.722 1.72 1.06 1.06L20.067 16l-3.537-3.53-1.06 1.06 1.723 1.72h-3.19c-.602 0-.993-.202-1.28-.498a1.96 1.96 0 0 1-.024-.026z" }) }); // packages/icons/build-module/library/sidebar.mjs var import_primitives62 = __toESM(require_primitives(), 1); var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1); var sidebar_default = /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_primitives62.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_primitives62.Path, { d: "M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z" }) }); // packages/icons/build-module/library/square.mjs var import_primitives63 = __toESM(require_primitives(), 1); var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1); var square_default = /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_primitives63.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_primitives63.Path, { fill: "none", d: "M5.75 12.75V18.25H11.25M12.75 5.75H18.25V11.25", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "square" }) }); // packages/icons/build-module/library/star-empty.mjs var import_primitives64 = __toESM(require_primitives(), 1); var import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1); var star_empty_default = /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_primitives64.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_primitives64.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M9.706 8.646a.25.25 0 01-.188.137l-4.626.672a.25.25 0 00-.139.427l3.348 3.262a.25.25 0 01.072.222l-.79 4.607a.25.25 0 00.362.264l4.138-2.176a.25.25 0 01.233 0l4.137 2.175a.25.25 0 00.363-.263l-.79-4.607a.25.25 0 01.072-.222l3.347-3.262a.25.25 0 00-.139-.427l-4.626-.672a.25.25 0 01-.188-.137l-2.069-4.192a.25.25 0 00-.448 0L9.706 8.646zM12 7.39l-.948 1.921a1.75 1.75 0 01-1.317.957l-2.12.308 1.534 1.495c.412.402.6.982.503 1.55l-.362 2.11 1.896-.997a1.75 1.75 0 011.629 0l1.895.997-.362-2.11a1.75 1.75 0 01.504-1.55l1.533-1.495-2.12-.308a1.75 1.75 0 01-1.317-.957L12 7.39z" }) }); // packages/icons/build-module/library/star-filled.mjs var import_primitives65 = __toESM(require_primitives(), 1); var import_jsx_runtime65 = __toESM(require_jsx_runtime(), 1); var star_filled_default = /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_primitives65.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_primitives65.Path, { d: "M11.776 4.454a.25.25 0 01.448 0l2.069 4.192a.25.25 0 00.188.137l4.626.672a.25.25 0 01.139.426l-3.348 3.263a.25.25 0 00-.072.222l.79 4.607a.25.25 0 01-.362.263l-4.138-2.175a.25.25 0 00-.232 0l-4.138 2.175a.25.25 0 01-.363-.263l.79-4.607a.25.25 0 00-.071-.222L4.754 9.881a.25.25 0 01.139-.426l4.626-.672a.25.25 0 00.188-.137l2.069-4.192z" }) }); // packages/icons/build-module/library/styles.mjs var import_primitives66 = __toESM(require_primitives(), 1); var import_jsx_runtime66 = __toESM(require_jsx_runtime(), 1); var styles_default = /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_primitives66.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_primitives66.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M20 12a8 8 0 1 1-16 0 8 8 0 0 1 16 0Zm-1.5 0a6.5 6.5 0 0 1-6.5 6.5v-13a6.5 6.5 0 0 1 6.5 6.5Z" }) }); // packages/icons/build-module/library/symbol-filled.mjs var import_primitives67 = __toESM(require_primitives(), 1); var import_jsx_runtime67 = __toESM(require_jsx_runtime(), 1); var symbol_filled_default = /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_primitives67.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_primitives67.Path, { d: "M21.3 10.8l-5.6-5.6c-.7-.7-1.8-.7-2.5 0l-5.6 5.6c-.7.7-.7 1.8 0 2.5l5.6 5.6c.3.3.8.5 1.2.5s.9-.2 1.2-.5l5.6-5.6c.8-.7.8-1.9.1-2.5zm-17.6 1L10 5.5l-1-1-6.3 6.3c-.7.7-.7 1.8 0 2.5L9 19.5l1.1-1.1-6.3-6.3c-.2 0-.2-.2-.1-.3z" }) }); // packages/icons/build-module/library/symbol.mjs var import_primitives68 = __toESM(require_primitives(), 1); var import_jsx_runtime68 = __toESM(require_jsx_runtime(), 1); var symbol_default = /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_primitives68.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_primitives68.Path, { d: "M21.3 10.8l-5.6-5.6c-.7-.7-1.8-.7-2.5 0l-5.6 5.6c-.7.7-.7 1.8 0 2.5l5.6 5.6c.3.3.8.5 1.2.5s.9-.2 1.2-.5l5.6-5.6c.8-.7.8-1.9.1-2.5zm-1 1.4l-5.6 5.6c-.1.1-.3.1-.4 0l-5.6-5.6c-.1-.1-.1-.3 0-.4l5.6-5.6s.1-.1.2-.1.1 0 .2.1l5.6 5.6c.1.1.1.3 0 .4zm-16.6-.4L10 5.5l-1-1-6.3 6.3c-.7.7-.7 1.8 0 2.5L9 19.5l1.1-1.1-6.3-6.3c-.2 0-.2-.2-.1-.3z" }) }); // packages/icons/build-module/library/tablet.mjs var import_primitives69 = __toESM(require_primitives(), 1); var import_jsx_runtime69 = __toESM(require_jsx_runtime(), 1); var tablet_default = /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_primitives69.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_primitives69.Path, { d: "M17 4H7c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 14c0 .3-.2.5-.5.5H7c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h10c.3 0 .5.2.5.5v12zm-7.5-.5h4V16h-4v1.5z" }) }); // packages/icons/build-module/library/trash.mjs var import_primitives70 = __toESM(require_primitives(), 1); var import_jsx_runtime70 = __toESM(require_jsx_runtime(), 1); var trash_default = /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_primitives70.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_primitives70.Path, { fillRule: "evenodd", clipRule: "evenodd", d: "M12 5.5A2.25 2.25 0 0 0 9.878 7h4.244A2.251 2.251 0 0 0 12 5.5ZM12 4a3.751 3.751 0 0 0-3.675 3H5v1.5h1.27l.818 8.997a2.75 2.75 0 0 0 2.739 2.501h4.347a2.75 2.75 0 0 0 2.738-2.5L17.73 8.5H19V7h-3.325A3.751 3.751 0 0 0 12 4Zm4.224 4.5H7.776l.806 8.861a1.25 1.25 0 0 0 1.245 1.137h4.347a1.25 1.25 0 0 0 1.245-1.137l.805-8.861Z" }) }); // packages/icons/build-module/library/typography.mjs var import_primitives71 = __toESM(require_primitives(), 1); var import_jsx_runtime71 = __toESM(require_jsx_runtime(), 1); var typography_default = /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_primitives71.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_primitives71.Path, { d: "m8.6 7 3.9 10.8h-1.7l-1-2.8H5.7l-1 2.8H3L6.9 7h1.7Zm-2.4 6.6h3L7.7 9.3l-1.5 4.3ZM17.691 8.879c.473 0 .88.055 1.221.165.352.1.643.264.875.495.274.253.456.572.544.957.088.374.132.83.132 1.37v4.554c0 .274.033.472.099.593.077.11.198.166.363.166.11 0 .215-.028.313-.083.11-.055.237-.137.38-.247l.165.28a3.304 3.304 0 0 1-.71.446c-.23.11-.527.165-.89.165-.352 0-.639-.055-.858-.165-.22-.11-.386-.27-.495-.479-.1-.209-.149-.468-.149-.775-.286.462-.627.814-1.023 1.056-.396.242-.858.363-1.386.363-.462 0-.858-.088-1.188-.264a1.752 1.752 0 0 1-.742-.726 2.201 2.201 0 0 1-.248-1.056c0-.484.11-.875.33-1.172.22-.308.5-.556.841-.742.352-.187.721-.341 1.106-.462.396-.132.765-.253 1.106-.363.351-.121.637-.259.857-.413.232-.154.347-.357.347-.61V10.81c0-.396-.066-.71-.198-.941a1.05 1.05 0 0 0-.511-.511 1.763 1.763 0 0 0-.76-.149c-.253 0-.522.039-.808.116a1.165 1.165 0 0 0-.677.412 1.1 1.1 0 0 1 .595.396c.165.187.247.424.247.71 0 .307-.104.55-.313.726-.198.176-.451.263-.76.263-.34 0-.594-.104-.758-.313a1.231 1.231 0 0 1-.248-.759c0-.297.072-.539.214-.726.154-.187.352-.363.595-.528.264-.176.6-.324 1.006-.445.418-.121.88-.182 1.386-.182Zm.99 3.729a1.57 1.57 0 0 1-.528.462c-.231.121-.479.248-.742.38a5.377 5.377 0 0 0-.76.462c-.23.165-.423.38-.577.643-.154.264-.231.6-.231 1.007 0 .429.11.77.33 1.023.22.242.517.363.891.363.308 0 .594-.088.858-.264.275-.176.528-.44.759-.792v-3.284Z" }) }); // packages/icons/build-module/library/undo.mjs var import_primitives72 = __toESM(require_primitives(), 1); var import_jsx_runtime72 = __toESM(require_jsx_runtime(), 1); var undo_default = /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(import_primitives72.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(import_primitives72.Path, { d: "M18.3 11.7c-.6-.6-1.4-.9-2.3-.9H6.7l2.9-3.3-1.1-1-4.5 5L8.5 16l1-1-2.7-2.7H16c.5 0 .9.2 1.3.5 1 1 1 3.4 1 4.5v.3h1.5v-.2c0-1.5 0-4.3-1.5-5.7z" }) }); // packages/icons/build-module/library/unseen.mjs var import_primitives73 = __toESM(require_primitives(), 1); var import_jsx_runtime73 = __toESM(require_jsx_runtime(), 1); var unseen_default = /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(import_primitives73.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(import_primitives73.Path, { d: "M20.7 12.7s0-.1-.1-.2c0-.2-.2-.4-.4-.6-.3-.5-.9-1.2-1.6-1.8-.7-.6-1.5-1.3-2.6-1.8l-.6 1.4c.9.4 1.6 1 2.1 1.5.6.6 1.1 1.2 1.4 1.6.1.2.3.4.3.5v.1l.7-.3.7-.3Zm-5.2-9.3-1.8 4c-.5-.1-1.1-.2-1.7-.2-3 0-5.2 1.4-6.6 2.7-.7.7-1.2 1.3-1.6 1.8-.2.3-.3.5-.4.6 0 0 0 .1-.1.2s0 0 .7.3l.7.3V13c0-.1.2-.3.3-.5.3-.4.7-1 1.4-1.6 1.2-1.2 3-2.3 5.5-2.3H13v.3c-.4 0-.8-.1-1.1-.1-1.9 0-3.5 1.6-3.5 3.5s.6 2.3 1.6 2.9l-2 4.4.9.4 7.6-16.2-.9-.4Zm-3 12.6c1.7-.2 3-1.7 3-3.5s-.2-1.4-.6-1.9L12.4 16Z" }) }); // packages/icons/build-module/library/verse.mjs var import_primitives74 = __toESM(require_primitives(), 1); var import_jsx_runtime74 = __toESM(require_jsx_runtime(), 1); var verse_default = /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(import_primitives74.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(import_primitives74.Path, { d: "M17.8 2l-.9.3c-.1 0-3.6 1-5.2 2.1C10 5.5 9.3 6.5 8.9 7.1c-.6.9-1.7 4.7-1.7 6.3l-.9 2.3c-.2.4 0 .8.4 1 .1 0 .2.1.3.1.3 0 .6-.2.7-.5l.6-1.5c.3 0 .7-.1 1.2-.2.7-.1 1.4-.3 2.2-.5.8-.2 1.6-.5 2.4-.8.7-.3 1.4-.7 1.9-1.2s.8-1.2 1-1.9c.2-.7.3-1.6.4-2.4.1-.8.1-1.7.2-2.5 0-.8.1-1.5.2-2.1V2zm-1.9 5.6c-.1.8-.2 1.5-.3 2.1-.2.6-.4 1-.6 1.3-.3.3-.8.6-1.4.9-.7.3-1.4.5-2.2.8-.6.2-1.3.3-1.8.4L15 7.5c.3-.3.6-.7 1-1.1 0 .4 0 .8-.1 1.2zM6 20h8v-1.5H6V20z" }) }); // packages/icons/build-module/library/video.mjs var import_primitives75 = __toESM(require_primitives(), 1); var import_jsx_runtime75 = __toESM(require_jsx_runtime(), 1); var video_default = /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(import_primitives75.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(import_primitives75.Path, { d: "M18.7 3H5.3C4 3 3 4 3 5.3v13.4C3 20 4 21 5.3 21h13.4c1.3 0 2.3-1 2.3-2.3V5.3C21 4 20 3 18.7 3zm.8 15.7c0 .4-.4.8-.8.8H5.3c-.4 0-.8-.4-.8-.8V5.3c0-.4.4-.8.8-.8h13.4c.4 0 .8.4.8.8v13.4zM10 15l5-3-5-3v6z" }) }); // packages/icons/build-module/library/wordpress.mjs var import_primitives76 = __toESM(require_primitives(), 1); var import_jsx_runtime76 = __toESM(require_jsx_runtime(), 1); var wordpress_default = /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_primitives76.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "-2 -2 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime76.jsx)(import_primitives76.Path, { d: "M20 10c0-5.51-4.49-10-10-10C4.48 0 0 4.49 0 10c0 5.52 4.48 10 10 10 5.51 0 10-4.48 10-10zM7.78 15.37L4.37 6.22c.55-.02 1.17-.08 1.17-.08.5-.06.44-1.13-.06-1.11 0 0-1.45.11-2.37.11-.18 0-.37 0-.58-.01C4.12 2.69 6.87 1.11 10 1.11c2.33 0 4.45.87 6.05 2.34-.68-.11-1.65.39-1.65 1.58 0 .74.45 1.36.9 2.1.35.61.55 1.36.55 2.46 0 1.49-1.4 5-1.4 5l-3.03-8.37c.54-.02.82-.17.82-.17.5-.05.44-1.25-.06-1.22 0 0-1.44.12-2.38.12-.87 0-2.33-.12-2.33-.12-.5-.03-.56 1.2-.06 1.22l.92.08 1.26 3.41zM17.41 10c.24-.64.74-1.87.43-4.25.7 1.29 1.05 2.71 1.05 4.25 0 3.29-1.73 6.24-4.4 7.78.97-2.59 1.94-5.2 2.92-7.78zM6.1 18.09C3.12 16.65 1.11 13.53 1.11 10c0-1.3.23-2.48.72-3.59C3.25 10.3 4.67 14.2 6.1 18.09zm4.03-6.63l2.58 6.98c-.86.29-1.76.45-2.71.45-.79 0-1.57-.11-2.29-.33.81-2.38 1.62-4.74 2.42-7.1z" }) }); // packages/editor/build-module/utils/get-template-part-icon.mjs function getTemplatePartIcon(areaOrIconName) { if ("header" === areaOrIconName) { return header_default; } else if ("footer" === areaOrIconName) { return footer_default; } else if ("sidebar" === areaOrIconName) { return sidebar_default; } else if ("navigation-overlay" === areaOrIconName) { return navigation_overlay_default; } return symbol_filled_default; } // packages/editor/build-module/lock-unlock.mjs var import_private_apis = __toESM(require_private_apis(), 1); var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", "@wordpress/editor" ); // packages/editor/build-module/utils/get-template-info.mjs var EMPTY_OBJECT = {}; var getTemplateInfo = (params) => { if (!params) { return EMPTY_OBJECT; } const { templateTypes, templateAreas, template: template2 } = params; const { description, slug, title, area } = template2; const { title: defaultTitle, description: defaultDescription } = Object.values(templateTypes).find((type) => type.slug === slug) ?? EMPTY_OBJECT; const templateTitle = typeof title === "string" ? title : title?.rendered; const templateDescription = typeof description === "string" ? description : description?.raw; const templateAreasWithIcon = templateAreas?.map((item) => ({ ...item, icon: getTemplatePartIcon(item.icon) })); const templateIcon = templateAreasWithIcon?.find((item) => area === item.area)?.icon || layout_default; return { title: templateTitle && templateTitle !== slug ? templateTitle : defaultTitle || slug, description: templateDescription || defaultDescription, icon: templateIcon }; }; // packages/editor/build-module/store/selectors.mjs var EMPTY_OBJECT2 = {}; var hasEditorUndo = (0, import_data3.createRegistrySelector)((select6) => () => { return select6(import_core_data.store).hasUndo(); }); var hasEditorRedo = (0, import_data3.createRegistrySelector)((select6) => () => { return select6(import_core_data.store).hasRedo(); }); function isEditedPostNew(state) { return getCurrentPost(state).status === "auto-draft"; } function hasChangedContent(state) { const edits = getPostEdits(state); return "content" in edits; } var isEditedPostDirty = (0, import_data3.createRegistrySelector)( (select6) => (state) => { const postType2 = getCurrentPostType(state); const postId2 = getCurrentPostId(state); return select6(import_core_data.store).hasEditsForEntityRecord( "postType", postType2, postId2 ); } ); var hasNonPostEntityChanges = (0, import_data3.createRegistrySelector)( (select6) => (state) => { const dirtyEntityRecords = select6(import_core_data.store).__experimentalGetDirtyEntityRecords(); const { type, id } = getCurrentPost(state); return dirtyEntityRecords.some( (entityRecord) => entityRecord.kind !== "postType" || entityRecord.name !== type || entityRecord.key !== id ); } ); function isCleanNewPost(state) { return !isEditedPostDirty(state) && isEditedPostNew(state); } var getCurrentPost = (0, import_data3.createRegistrySelector)( (select6) => (state) => { const postId2 = getCurrentPostId(state); const postType2 = getCurrentPostType(state); const post2 = select6(import_core_data.store).getRawEntityRecord( "postType", postType2, postId2 ); if (post2) { return post2; } return EMPTY_OBJECT2; } ); function getCurrentPostType(state) { return state.postType; } function getCurrentPostId(state) { return state.postId; } function getCurrentTemplateId(state) { return state.templateId; } function getCurrentPostRevisionsCount(state) { return getCurrentPost(state)._links?.["version-history"]?.[0]?.count ?? 0; } function getCurrentPostLastRevisionId(state) { return getCurrentPost(state)._links?.["predecessor-version"]?.[0]?.id ?? null; } var getPostEdits = (0, import_data3.createRegistrySelector)((select6) => (state) => { const postType2 = getCurrentPostType(state); const postId2 = getCurrentPostId(state); return select6(import_core_data.store).getEntityRecordEdits( "postType", postType2, postId2 ) || EMPTY_OBJECT2; }); function getCurrentPostAttribute(state, attributeName) { switch (attributeName) { case "type": return getCurrentPostType(state); case "id": return getCurrentPostId(state); default: const post2 = getCurrentPost(state); if (!post2.hasOwnProperty(attributeName)) { break; } return getPostRawValue(post2[attributeName]); } } var getNestedEditedPostProperty = (0, import_data3.createSelector)( (state, attributeName) => { const edits = getPostEdits(state); if (!edits.hasOwnProperty(attributeName)) { return getCurrentPostAttribute(state, attributeName); } return { ...getCurrentPostAttribute(state, attributeName), ...edits[attributeName] }; }, (state, attributeName) => [ getCurrentPostAttribute(state, attributeName), getPostEdits(state)[attributeName] ] ); function getEditedPostAttribute(state, attributeName) { switch (attributeName) { case "content": return getEditedPostContent(state); } const edits = getPostEdits(state); if (!edits.hasOwnProperty(attributeName)) { return getCurrentPostAttribute(state, attributeName); } if (EDIT_MERGE_PROPERTIES.has(attributeName)) { return getNestedEditedPostProperty(state, attributeName); } return edits[attributeName]; } var getAutosaveAttribute = (0, import_data3.createRegistrySelector)( (select6) => (state, attributeName) => { if (!AUTOSAVE_PROPERTIES.includes(attributeName) && attributeName !== "preview_link") { return; } const postType2 = getCurrentPostType(state); const postId2 = getCurrentPostId(state); const currentUserId = select6(import_core_data.store).getCurrentUser()?.id; const autosave2 = select6(import_core_data.store).getAutosave( postType2, postId2, currentUserId ); if (autosave2) { return getPostRawValue(autosave2[attributeName]); } } ); function getEditedPostVisibility(state) { const status = getEditedPostAttribute(state, "status"); if (status === "private") { return "private"; } const password = getEditedPostAttribute(state, "password"); if (password) { return "password"; } return "public"; } function isCurrentPostPending(state) { return getCurrentPost(state).status === "pending"; } function isCurrentPostPublished(state, currentPost) { const post2 = currentPost || getCurrentPost(state); return ["publish", "private"].indexOf(post2.status) !== -1 || post2.status === "future" && !(0, import_date.isInTheFuture)( new Date(Number((0, import_date.getDate)(post2.date)) - ONE_MINUTE_IN_MS) ); } function isCurrentPostScheduled(state) { return getCurrentPost(state).status === "future" && !isCurrentPostPublished(state); } function isEditedPostPublishable(state) { const post2 = getCurrentPost(state); if (post2.type === ATTACHMENT_POST_TYPE) { return isEditedPostDirty(state); } return isEditedPostDirty(state) || ["publish", "private", "future"].indexOf(post2.status) === -1; } function isEditedPostSaveable(state) { if (isSavingPost(state)) { return false; } return !!getEditedPostAttribute(state, "title") || !!getEditedPostAttribute(state, "excerpt") || !isEditedPostEmpty(state) || import_element2.Platform.OS === "native"; } var isEditedPostEmpty = (0, import_data3.createRegistrySelector)( (select6) => (state) => { const postId2 = getCurrentPostId(state); const postType2 = getCurrentPostType(state); const record = select6(import_core_data.store).getEditedEntityRecord( "postType", postType2, postId2 ); if (typeof record.content !== "function") { return !record.content; } const blocks = getEditedPostAttribute(state, "blocks"); if (blocks.length === 0) { return true; } if (blocks.length > 1) { return false; } const blockName = blocks[0].name; if (blockName !== (0, import_blocks.getDefaultBlockName)() && blockName !== (0, import_blocks.getFreeformContentHandlerName)()) { return false; } return !getEditedPostContent(state); } ); var isEditedPostAutosaveable = (0, import_data3.createRegistrySelector)( (select6) => (state) => { if (!isEditedPostSaveable(state)) { return false; } if (isPostAutosavingLocked(state)) { return false; } const postType2 = getCurrentPostType(state); const postTypeObject = select6(import_core_data.store).getPostType(postType2); if (!postTypeObject?.supports?.autosave) { return false; } const postId2 = getCurrentPostId(state); const hasFetchedAutosave = select6(import_core_data.store).hasFetchedAutosaves( postType2, postId2 ); const currentUserId = select6(import_core_data.store).getCurrentUser()?.id; const autosave2 = select6(import_core_data.store).getAutosave( postType2, postId2, currentUserId ); if (!hasFetchedAutosave) { return false; } if (!autosave2) { return true; } if (hasChangedContent(state)) { return true; } return ["title", "excerpt", "meta"].some( (field) => getPostRawValue(autosave2[field]) !== getEditedPostAttribute(state, field) ); } ); function isEditedPostBeingScheduled(state) { const date = getEditedPostAttribute(state, "date"); const checkedDate = new Date( Number((0, import_date.getDate)(date)) - ONE_MINUTE_IN_MS ); return (0, import_date.isInTheFuture)(checkedDate); } function isEditedPostDateFloating(state) { const date = getEditedPostAttribute(state, "date"); const modified = getEditedPostAttribute(state, "modified"); const status = getCurrentPost(state).status; if (status === "draft" || status === "auto-draft" || status === "pending") { return date === modified || date === null; } return false; } function isDeletingPost(state) { return !!state.deleting.pending; } function isSavingPost(state) { return !!state.saving.pending; } var isSavingNonPostEntityChanges = (0, import_data3.createRegistrySelector)( (select6) => (state) => { const entitiesBeingSaved = select6(import_core_data.store).__experimentalGetEntitiesBeingSaved(); const { type, id } = getCurrentPost(state); return entitiesBeingSaved.some( (entityRecord) => entityRecord.kind !== "postType" || entityRecord.name !== type || entityRecord.key !== id ); } ); var didPostSaveRequestSucceed = (0, import_data3.createRegistrySelector)( (select6) => (state) => { const postType2 = getCurrentPostType(state); const postId2 = getCurrentPostId(state); return !select6(import_core_data.store).getLastEntitySaveError( "postType", postType2, postId2 ); } ); var didPostSaveRequestFail = (0, import_data3.createRegistrySelector)( (select6) => (state) => { const postType2 = getCurrentPostType(state); const postId2 = getCurrentPostId(state); return !!select6(import_core_data.store).getLastEntitySaveError( "postType", postType2, postId2 ); } ); function isAutosavingPost(state) { return isSavingPost(state) && Boolean(state.saving.options?.isAutosave); } function isPreviewingPost(state) { return isSavingPost(state) && Boolean(state.saving.options?.isPreview); } function getEditedPostPreviewLink(state) { if (state.saving.pending || isSavingPost(state)) { return; } let previewLink = getAutosaveAttribute(state, "preview_link"); if (!previewLink || "draft" === getCurrentPost(state).status) { previewLink = getEditedPostAttribute(state, "link"); if (previewLink) { previewLink = (0, import_url.addQueryArgs)(previewLink, { preview: true }); } } const featuredImageId = getEditedPostAttribute(state, "featured_media"); if (previewLink && featuredImageId) { return (0, import_url.addQueryArgs)(previewLink, { _thumbnail_id: featuredImageId }); } return previewLink; } var getSuggestedPostFormat = (0, import_data3.createRegistrySelector)( (select6) => () => { const blocks = select6(import_block_editor2.store).getBlocks(); if (blocks.length > 2) { return null; } let name2; if (blocks.length === 1) { name2 = blocks[0].name; if (name2 === "core/embed") { const provider = blocks[0].attributes?.providerNameSlug; if (["youtube", "vimeo"].includes(provider)) { name2 = "core/video"; } else if (["spotify", "soundcloud"].includes(provider)) { name2 = "core/audio"; } } } if (blocks.length === 2 && blocks[1].name === "core/paragraph") { name2 = blocks[0].name; } switch (name2) { case "core/image": return "image"; case "core/quote": case "core/pullquote": return "quote"; case "core/gallery": return "gallery"; case "core/video": return "video"; case "core/audio": return "audio"; default: return null; } } ); var getEditedPostContent = (0, import_data3.createRegistrySelector)( (select6) => (state) => { const postId2 = getCurrentPostId(state); const postType2 = getCurrentPostType(state); const record = select6(import_core_data.store).getEditedEntityRecord( "postType", postType2, postId2 ); if (record) { if (typeof record.content === "function") { return record.content(record); } else if (record.blocks) { return (0, import_blocks.__unstableSerializeAndClean)(record.blocks); } else if (record.content) { return record.content; } } return ""; } ); function isPublishingPost(state) { return isSavingPost(state) && !isCurrentPostPublished(state) && getEditedPostAttribute(state, "status") === "publish"; } function isPermalinkEditable(state) { const permalinkTemplate = getEditedPostAttribute( state, "permalink_template" ); return PERMALINK_POSTNAME_REGEX.test(permalinkTemplate); } function getPermalink(state) { const permalinkParts = getPermalinkParts(state); if (!permalinkParts) { return null; } const { prefix: prefix2, postName, suffix } = permalinkParts; if (isPermalinkEditable(state)) { return prefix2 + postName + suffix; } return prefix2; } function getEditedPostSlug(state) { return getEditedPostAttribute(state, "slug") || (0, import_url.cleanForSlug)(getEditedPostAttribute(state, "title")) || getCurrentPostId(state); } function getPermalinkParts(state) { const permalinkTemplate = getEditedPostAttribute( state, "permalink_template" ); if (!permalinkTemplate) { return null; } const postName = getEditedPostAttribute(state, "slug") || getEditedPostAttribute(state, "generated_slug"); const [prefix2, suffix] = permalinkTemplate.split( PERMALINK_POSTNAME_REGEX ); return { prefix: prefix2, postName, suffix }; } function isPostLocked(state) { return state.postLock.isLocked; } function isPostSavingLocked(state) { return Object.keys(state.postSavingLock).length > 0; } function isPostAutosavingLocked(state) { return Object.keys(state.postAutosavingLock).length > 0; } function isPostLockTakeover(state) { return state.postLock.isTakeover; } function getPostLockUser(state) { return state.postLock.user; } function getActivePostLock(state) { return state.postLock.activePostLock; } function canUserUseUnfilteredHTML(state) { return Boolean( getCurrentPost(state)._links?.hasOwnProperty( "wp:action-unfiltered-html" ) ); } var isPublishSidebarEnabled = (0, import_data3.createRegistrySelector)( (select6) => () => !!select6(import_preferences.store).get("core", "isPublishSidebarEnabled") ); var getEditorBlocks = (0, import_data3.createSelector)( (state) => { return getEditedPostAttribute(state, "blocks") || (0, import_blocks.parse)(getEditedPostContent(state)); }, (state) => [ getEditedPostAttribute(state, "blocks"), getEditedPostContent(state) ] ); function isEditorPanelRemoved(state, panelName) { return state.removedPanels.includes(panelName); } var isEditorPanelEnabled = (0, import_data3.createRegistrySelector)( (select6) => (state, panelName) => { const inactivePanels = select6(import_preferences.store).get( "core", "inactivePanels" ); return !isEditorPanelRemoved(state, panelName) && !inactivePanels?.includes(panelName); } ); var isEditorPanelOpened = (0, import_data3.createRegistrySelector)( (select6) => (state, panelName) => { const openPanels = select6(import_preferences.store).get( "core", "openPanels" ); return !!openPanels?.includes(panelName); } ); function getEditorSelectionStart(state) { (0, import_deprecated.default)("select('core/editor').getEditorSelectionStart", { since: "5.8", alternative: "select('core/editor').getEditorSelection" }); return getEditedPostAttribute(state, "selection")?.selectionStart; } function getEditorSelectionEnd(state) { (0, import_deprecated.default)("select('core/editor').getEditorSelectionStart", { since: "5.8", alternative: "select('core/editor').getEditorSelection" }); return getEditedPostAttribute(state, "selection")?.selectionEnd; } function getEditorSelection(state) { return getEditedPostAttribute(state, "selection"); } function __unstableIsEditorReady(state) { return !!state.postId; } function getEditorSettings(state) { return state.editorSettings; } function getRenderingMode(state) { return state.renderingMode; } var getDeviceType = (0, import_data3.createRegistrySelector)( (select6) => (state) => { const isZoomOut = unlock(select6(import_block_editor2.store)).isZoomOut(); if (isZoomOut) { return "Desktop"; } return state.deviceType; } ); function isListViewOpened(state) { return state.listViewPanel; } function isInserterOpened(state) { return !!state.blockInserterPanel; } var getEditorMode = (0, import_data3.createRegistrySelector)( (select6) => () => select6(import_preferences.store).get("core", "editorMode") ?? "visual" ); function getStateBeforeOptimisticTransaction() { (0, import_deprecated.default)("select('core/editor').getStateBeforeOptimisticTransaction", { since: "5.7", hint: "No state history is kept on this store anymore" }); return null; } function inSomeHistory() { (0, import_deprecated.default)("select('core/editor').inSomeHistory", { since: "5.7", hint: "No state history is kept on this store anymore" }); return false; } function getBlockEditorSelector(name2) { return (0, import_data3.createRegistrySelector)((select6) => (state, ...args) => { (0, import_deprecated.default)("`wp.data.select( 'core/editor' )." + name2 + "`", { since: "5.3", alternative: "`wp.data.select( 'core/block-editor' )." + name2 + "`", version: "6.2" }); return select6(import_block_editor2.store)[name2](...args); }); } var getBlockName = getBlockEditorSelector("getBlockName"); var isBlockValid = getBlockEditorSelector("isBlockValid"); var getBlockAttributes = getBlockEditorSelector("getBlockAttributes"); var getBlock = getBlockEditorSelector("getBlock"); var getBlocks = getBlockEditorSelector("getBlocks"); var getClientIdsOfDescendants = getBlockEditorSelector( "getClientIdsOfDescendants" ); var getClientIdsWithDescendants = getBlockEditorSelector( "getClientIdsWithDescendants" ); var getGlobalBlockCount = getBlockEditorSelector( "getGlobalBlockCount" ); var getBlocksByClientId = getBlockEditorSelector( "getBlocksByClientId" ); var getBlockCount = getBlockEditorSelector("getBlockCount"); var getBlockSelectionStart = getBlockEditorSelector( "getBlockSelectionStart" ); var getBlockSelectionEnd = getBlockEditorSelector( "getBlockSelectionEnd" ); var getSelectedBlockCount = getBlockEditorSelector( "getSelectedBlockCount" ); var hasSelectedBlock = getBlockEditorSelector("hasSelectedBlock"); var getSelectedBlockClientId = getBlockEditorSelector( "getSelectedBlockClientId" ); var getSelectedBlock = getBlockEditorSelector("getSelectedBlock"); var getBlockRootClientId = getBlockEditorSelector( "getBlockRootClientId" ); var getBlockHierarchyRootClientId = getBlockEditorSelector( "getBlockHierarchyRootClientId" ); var getAdjacentBlockClientId = getBlockEditorSelector( "getAdjacentBlockClientId" ); var getPreviousBlockClientId = getBlockEditorSelector( "getPreviousBlockClientId" ); var getNextBlockClientId = getBlockEditorSelector( "getNextBlockClientId" ); var getSelectedBlocksInitialCaretPosition = getBlockEditorSelector( "getSelectedBlocksInitialCaretPosition" ); var getMultiSelectedBlockClientIds = getBlockEditorSelector( "getMultiSelectedBlockClientIds" ); var getMultiSelectedBlocks = getBlockEditorSelector( "getMultiSelectedBlocks" ); var getFirstMultiSelectedBlockClientId = getBlockEditorSelector( "getFirstMultiSelectedBlockClientId" ); var getLastMultiSelectedBlockClientId = getBlockEditorSelector( "getLastMultiSelectedBlockClientId" ); var isFirstMultiSelectedBlock = getBlockEditorSelector( "isFirstMultiSelectedBlock" ); var isBlockMultiSelected = getBlockEditorSelector( "isBlockMultiSelected" ); var isAncestorMultiSelected = getBlockEditorSelector( "isAncestorMultiSelected" ); var getMultiSelectedBlocksStartClientId = getBlockEditorSelector( "getMultiSelectedBlocksStartClientId" ); var getMultiSelectedBlocksEndClientId = getBlockEditorSelector( "getMultiSelectedBlocksEndClientId" ); var getBlockOrder = getBlockEditorSelector("getBlockOrder"); var getBlockIndex = getBlockEditorSelector("getBlockIndex"); var isBlockSelected = getBlockEditorSelector("isBlockSelected"); var hasSelectedInnerBlock = getBlockEditorSelector( "hasSelectedInnerBlock" ); var isBlockWithinSelection = getBlockEditorSelector( "isBlockWithinSelection" ); var hasMultiSelection = getBlockEditorSelector("hasMultiSelection"); var isMultiSelecting = getBlockEditorSelector("isMultiSelecting"); var isSelectionEnabled = getBlockEditorSelector("isSelectionEnabled"); var getBlockMode = getBlockEditorSelector("getBlockMode"); var isTyping = getBlockEditorSelector("isTyping"); var isCaretWithinFormattedText = getBlockEditorSelector( "isCaretWithinFormattedText" ); var getBlockInsertionPoint = getBlockEditorSelector( "getBlockInsertionPoint" ); var isBlockInsertionPointVisible = getBlockEditorSelector( "isBlockInsertionPointVisible" ); var isValidTemplate = getBlockEditorSelector("isValidTemplate"); var getTemplate = getBlockEditorSelector("getTemplate"); var getTemplateLock = getBlockEditorSelector("getTemplateLock"); var canInsertBlockType = getBlockEditorSelector("canInsertBlockType"); var getInserterItems = getBlockEditorSelector("getInserterItems"); var hasInserterItems = getBlockEditorSelector("hasInserterItems"); var getBlockListSettings = getBlockEditorSelector( "getBlockListSettings" ); var __experimentalGetDefaultTemplateTypes = (0, import_data3.createRegistrySelector)( (select6) => () => { (0, import_deprecated.default)( "select('core/editor').__experimentalGetDefaultTemplateTypes", { since: "6.8", alternative: "select('core/core-data').getCurrentTheme()?.default_template_types" } ); return select6(import_core_data.store).getCurrentTheme()?.default_template_types; } ); var __experimentalGetDefaultTemplatePartAreas = (0, import_data3.createRegistrySelector)( (select6) => (0, import_data3.createSelector)(() => { (0, import_deprecated.default)( "select('core/editor').__experimentalGetDefaultTemplatePartAreas", { since: "6.8", alternative: "select('core/core-data').getCurrentTheme()?.default_template_part_areas" } ); const areas = select6(import_core_data.store).getCurrentTheme()?.default_template_part_areas || []; return areas.map((item) => { return { ...item, icon: getTemplatePartIcon(item.icon) }; }); }) ); var __experimentalGetDefaultTemplateType = (0, import_data3.createRegistrySelector)( (select6) => (0, import_data3.createSelector)((state, slug) => { (0, import_deprecated.default)( "select('core/editor').__experimentalGetDefaultTemplateType", { since: "6.8" } ); const templateTypes = select6(import_core_data.store).getCurrentTheme()?.default_template_types; if (!templateTypes) { return EMPTY_OBJECT2; } return Object.values(templateTypes).find( (type) => type.slug === slug ) ?? EMPTY_OBJECT2; }) ); var __experimentalGetTemplateInfo = (0, import_data3.createRegistrySelector)( (select6) => (0, import_data3.createSelector)((state, template2) => { (0, import_deprecated.default)("select('core/editor').__experimentalGetTemplateInfo", { since: "6.8" }); if (!template2) { return EMPTY_OBJECT2; } const currentTheme = select6(import_core_data.store).getCurrentTheme(); const templateTypes = currentTheme?.default_template_types || []; const templateAreas = currentTheme?.default_template_part_areas || []; return getTemplateInfo({ template: template2, templateAreas, templateTypes }); }) ); var getPostTypeLabel = (0, import_data3.createRegistrySelector)( (select6) => (state) => { const currentPostType = getCurrentPostType(state); const postType2 = select6(import_core_data.store).getPostType(currentPostType); return postType2?.labels?.singular_name; } ); function isPublishSidebarOpened(state) { return state.publishSidebarActive; } // packages/editor/build-module/store/actions.mjs var actions_exports = {}; __export(actions_exports, { __experimentalTearDownEditor: () => __experimentalTearDownEditor, __unstableSaveForPreview: () => __unstableSaveForPreview, autosave: () => autosave, clearSelectedBlock: () => clearSelectedBlock, closePublishSidebar: () => closePublishSidebar, createUndoLevel: () => createUndoLevel, disablePublishSidebar: () => disablePublishSidebar, editPost: () => editPost, enablePublishSidebar: () => enablePublishSidebar, enterFormattedText: () => enterFormattedText, exitFormattedText: () => exitFormattedText, hideInsertionPoint: () => hideInsertionPoint, insertBlock: () => insertBlock, insertBlocks: () => insertBlocks, insertDefaultBlock: () => insertDefaultBlock, lockPostAutosaving: () => lockPostAutosaving, lockPostSaving: () => lockPostSaving, mergeBlocks: () => mergeBlocks, moveBlockToPosition: () => moveBlockToPosition, moveBlocksDown: () => moveBlocksDown, moveBlocksUp: () => moveBlocksUp, multiSelect: () => multiSelect, openPublishSidebar: () => openPublishSidebar, receiveBlocks: () => receiveBlocks, redo: () => redo, refreshPost: () => refreshPost, removeBlock: () => removeBlock, removeBlocks: () => removeBlocks, removeEditorPanel: () => removeEditorPanel, replaceBlock: () => replaceBlock, replaceBlocks: () => replaceBlocks, resetBlocks: () => resetBlocks, resetEditorBlocks: () => resetEditorBlocks, resetPost: () => resetPost, savePost: () => savePost, selectBlock: () => selectBlock, setDeviceType: () => setDeviceType, setEditedPost: () => setEditedPost, setIsInserterOpened: () => setIsInserterOpened, setIsListViewOpened: () => setIsListViewOpened, setRenderingMode: () => setRenderingMode, setTemplateValidity: () => setTemplateValidity, setupEditor: () => setupEditor, setupEditorState: () => setupEditorState, showInsertionPoint: () => showInsertionPoint, startMultiSelect: () => startMultiSelect, startTyping: () => startTyping, stopMultiSelect: () => stopMultiSelect, stopTyping: () => stopTyping, switchEditorMode: () => switchEditorMode, synchronizeTemplate: () => synchronizeTemplate, toggleBlockMode: () => toggleBlockMode, toggleDistractionFree: () => toggleDistractionFree, toggleEditorPanelEnabled: () => toggleEditorPanelEnabled, toggleEditorPanelOpened: () => toggleEditorPanelOpened, togglePublishSidebar: () => togglePublishSidebar, toggleSelection: () => toggleSelection, toggleSpotlightMode: () => toggleSpotlightMode, toggleTopToolbar: () => toggleTopToolbar, trashPost: () => trashPost, undo: () => undo, unlockPostAutosaving: () => unlockPostAutosaving, unlockPostSaving: () => unlockPostSaving, updateBlock: () => updateBlock, updateBlockAttributes: () => updateBlockAttributes, updateBlockListSettings: () => updateBlockListSettings, updateEditorSettings: () => updateEditorSettings, updatePost: () => updatePost, updatePostLock: () => updatePostLock }); var import_a11y = __toESM(require_a11y(), 1); var import_api_fetch = __toESM(require_api_fetch(), 1); var import_deprecated2 = __toESM(require_deprecated(), 1); var import_blocks2 = __toESM(require_blocks(), 1); var import_notices = __toESM(require_notices(), 1); var import_core_data2 = __toESM(require_core_data(), 1); var import_block_editor3 = __toESM(require_block_editor(), 1); var import_hooks = __toESM(require_hooks(), 1); var import_preferences2 = __toESM(require_preferences(), 1); var import_i18n2 = __toESM(require_i18n(), 1); // packages/editor/build-module/store/local-autosave.mjs function postKey(postId2, isPostNew) { return `wp-autosave-block-editor-post-${isPostNew ? "auto-draft" : postId2}`; } function localAutosaveGet(postId2, isPostNew) { return window.sessionStorage.getItem(postKey(postId2, isPostNew)); } function localAutosaveSet(postId2, isPostNew, title, content, excerpt) { window.sessionStorage.setItem( postKey(postId2, isPostNew), JSON.stringify({ post_title: title, content, excerpt }) ); } function localAutosaveClear(postId2, isPostNew) { window.sessionStorage.removeItem(postKey(postId2, isPostNew)); } // packages/editor/build-module/store/utils/notice-builder.mjs var import_i18n = __toESM(require_i18n(), 1); function getNotificationArgumentsForSaveSuccess(data) { const { previousPost, post: post2, postType: postType2 } = data; if (data.options?.isAutosave) { return []; } const publishStatus = ["publish", "private", "future"]; const isPublished = publishStatus.includes(previousPost.status); const willPublish = publishStatus.includes(post2.status); const willTrash = post2.status === "trash" && previousPost.status !== "trash"; let noticeMessage; let shouldShowLink = postType2?.viewable ?? false; let isDraft; if (willTrash) { noticeMessage = postType2.labels.item_trashed; shouldShowLink = false; } else if (post2.type === ATTACHMENT_POST_TYPE) { noticeMessage = (0, import_i18n.__)("Media updated."); shouldShowLink = false; } else if (!isPublished && !willPublish) { noticeMessage = (0, import_i18n.__)("Draft saved."); isDraft = true; } else if (isPublished && !willPublish) { noticeMessage = postType2.labels.item_reverted_to_draft; shouldShowLink = false; } else if (!isPublished && willPublish) { noticeMessage = { publish: postType2.labels.item_published, private: postType2.labels.item_published_privately, future: postType2.labels.item_scheduled }[post2.status]; } else { noticeMessage = postType2.labels.item_updated; } const actions2 = []; if (shouldShowLink) { actions2.push({ label: isDraft ? (0, import_i18n.__)("View Preview") : postType2.labels.view_item, url: post2.link, openInNewTab: true }); } return [ noticeMessage, { id: "editor-save", type: "snackbar", actions: actions2 } ]; } function getNotificationArgumentsForSaveFail(data) { const { post: post2, edits, error } = data; if (error && "rest_autosave_no_changes" === error.code) { return []; } const publishStatus = ["publish", "private", "future"]; const isPublished = publishStatus.indexOf(post2.status) !== -1; if (error.code === "offline_error") { const messages2 = { publish: (0, import_i18n.__)( "Publishing failed because you were offline. Please verify your connection and try again." ), private: (0, import_i18n.__)( "Publishing failed because you were offline. Please verify your connection and try again." ), future: (0, import_i18n.__)( "Scheduling failed because you were offline. Please verify your connection and try again." ), default: (0, import_i18n.__)( "Updating failed because you were offline. Please verify your connection and try again." ) }; const noticeMessage2 = !isPublished && edits.status in messages2 ? messages2[edits.status] : messages2.default; return [noticeMessage2, { id: "editor-save" }]; } const messages = { publish: (0, import_i18n.__)("Publishing failed."), private: (0, import_i18n.__)("Publishing failed."), future: (0, import_i18n.__)("Scheduling failed."), default: (0, import_i18n.__)("Updating failed.") }; let noticeMessage = !isPublished && edits.status in messages ? messages[edits.status] : messages.default; if (error.message && !/<\/?[^>]*>/.test(error.message)) { noticeMessage = [noticeMessage, error.message].join(" "); } return [ noticeMessage, { id: "editor-save" } ]; } function getNotificationArgumentsForTrashFail(data) { return [ data.error.message && data.error.code !== "unknown_error" ? data.error.message : (0, import_i18n.__)("Trashing failed"), { id: "editor-trash-fail" } ]; } // packages/editor/build-module/store/actions.mjs var setupEditor = (post2, edits, template2) => ({ dispatch: dispatch7 }) => { dispatch7.setEditedPost(post2.type, post2.id); const isNewPost = post2.status === "auto-draft"; if (isNewPost && template2) { let content; if ("content" in edits) { content = edits.content; } else { content = post2.content.raw; } let blocks = (0, import_blocks2.parse)(content); blocks = (0, import_blocks2.synchronizeBlocksWithTemplate)(blocks, template2); dispatch7.resetEditorBlocks(blocks, { __unstableShouldCreateUndoLevel: false }); } if (edits && Object.entries(edits).some( ([key, edit]) => edit !== (post2[key]?.raw ?? post2[key]) )) { dispatch7.editPost(edits); } }; function __experimentalTearDownEditor() { (0, import_deprecated2.default)( "wp.data.dispatch( 'core/editor' ).__experimentalTearDownEditor", { since: "6.5" } ); return { type: "DO_NOTHING" }; } function resetPost() { (0, import_deprecated2.default)("wp.data.dispatch( 'core/editor' ).resetPost", { since: "6.0", version: "6.3", alternative: "Initialize the editor with the setupEditorState action" }); return { type: "DO_NOTHING" }; } function updatePost() { (0, import_deprecated2.default)("wp.data.dispatch( 'core/editor' ).updatePost", { since: "5.7", alternative: "Use the core entities store instead" }); return { type: "DO_NOTHING" }; } function setupEditorState(post2) { (0, import_deprecated2.default)("wp.data.dispatch( 'core/editor' ).setupEditorState", { since: "6.5", alternative: "wp.data.dispatch( 'core/editor' ).setEditedPost" }); return setEditedPost(post2.type, post2.id); } function setEditedPost(postType2, postId2) { return { type: "SET_EDITED_POST", postType: postType2, postId: postId2 }; } var editPost = (edits, options) => ({ select: select6, registry }) => { const { id, type } = select6.getCurrentPost(); registry.dispatch(import_core_data2.store).editEntityRecord("postType", type, id, edits, options); }; var savePost = (options = {}) => async ({ select: select6, dispatch: dispatch7, registry }) => { if (!select6.isEditedPostSaveable()) { return; } const content = select6.getEditedPostContent(); if (!options.isAutosave) { dispatch7.editPost({ content }, { undoIgnore: true }); } const previousRecord = select6.getCurrentPost(); let edits = { id: previousRecord.id, ...registry.select(import_core_data2.store).getEntityRecordNonTransientEdits( "postType", previousRecord.type, previousRecord.id ), content }; dispatch7({ type: "REQUEST_POST_UPDATE_START", options }); let error = false; try { edits = await (0, import_hooks.applyFiltersAsync)( "editor.preSavePost", edits, options ); } catch (err) { error = err; } if (!error) { try { await registry.dispatch(import_core_data2.store).saveEntityRecord( "postType", previousRecord.type, edits, options ); } catch (err) { error = err.message && err.code !== "unknown_error" ? err.message : (0, import_i18n2.__)("An error occurred while updating."); } } if (!error) { error = registry.select(import_core_data2.store).getLastEntitySaveError( "postType", previousRecord.type, previousRecord.id ); } if (!error) { try { await (0, import_hooks.applyFilters)( "editor.__unstableSavePost", Promise.resolve(), options ); } catch (err) { error = err; } } if (!error) { try { await (0, import_hooks.doActionAsync)( "editor.savePost", { id: previousRecord.id, type: previousRecord.type }, options ); } catch (err) { error = err; } } dispatch7({ type: "REQUEST_POST_UPDATE_FINISH", options }); if (typeof window !== "undefined" && window.__experimentalTemplateActivate && !options.isAutosave && previousRecord.type === "wp_template" && (typeof previousRecord.id === "number" || /^\d+$/.test(previousRecord.id))) { templateActivationNotice({ select: select6, dispatch: dispatch7, registry }); } if (error) { const args = getNotificationArgumentsForSaveFail({ post: previousRecord, edits, error }); if (args.length) { registry.dispatch(import_notices.store).createErrorNotice(...args); } } else { const updatedRecord = select6.getCurrentPost(); const args = getNotificationArgumentsForSaveSuccess({ previousPost: previousRecord, post: updatedRecord, postType: await registry.resolveSelect(import_core_data2.store).getPostType(updatedRecord.type), options }); if (args.length) { registry.dispatch(import_notices.store).createSuccessNotice(...args); } if (!options.isAutosave) { registry.dispatch(import_block_editor3.store).__unstableMarkLastChangeAsPersistent(); } } }; async function templateActivationNotice({ select: select6, registry }) { const editorSettings2 = select6.getEditorSettings(); if (editorSettings2.onNavigateToPreviousEntityRecord) { return; } const { id, slug } = select6.getCurrentPost(); const site = await registry.select(import_core_data2.store).getEntityRecord("root", "site"); if (site.active_templates[slug] === id) { return; } const currentTheme = await registry.resolveSelect(import_core_data2.store).getCurrentTheme(); const templateType = currentTheme?.default_template_types.find( (type) => type.slug === slug ); await registry.dispatch(import_notices.store).createNotice( "info", (0, import_i18n2.sprintf)( // translators: %s: The name (or slug) of the type of template. (0, import_i18n2.__)('Do you want to activate this "%s" template?'), templateType?.title ?? slug ), { id: "template-activate-notice", actions: [ { label: (0, import_i18n2.__)("Activate"), onClick: async () => { await registry.dispatch(import_notices.store).createNotice( "info", (0, import_i18n2.__)("Activating template\u2026"), { id: "template-activate-notice" } ); try { const currentSite = await registry.select(import_core_data2.store).getEntityRecord("root", "site"); await registry.dispatch(import_core_data2.store).saveEntityRecord( "root", "site", { active_templates: { ...currentSite.active_templates, [slug]: id } }, { throwOnError: true } ); await registry.dispatch(import_notices.store).createSuccessNotice( (0, import_i18n2.__)("Template activated."), { id: "template-activate-notice" } ); } catch (error) { await registry.dispatch(import_notices.store).createErrorNotice( (0, import_i18n2.__)("Template activation failed."), { id: "template-activate-notice" } ); throw error; } } } ] } ); } function refreshPost() { (0, import_deprecated2.default)("wp.data.dispatch( 'core/editor' ).refreshPost", { since: "6.0", version: "6.3", alternative: "Use the core entities store instead" }); return { type: "DO_NOTHING" }; } var trashPost = () => async ({ select: select6, dispatch: dispatch7, registry }) => { const postTypeSlug = select6.getCurrentPostType(); const postType2 = await registry.resolveSelect(import_core_data2.store).getPostType(postTypeSlug); const { rest_base: restBase, rest_namespace: restNamespace = "wp/v2" } = postType2; dispatch7({ type: "REQUEST_POST_DELETE_START" }); try { const post2 = select6.getCurrentPost(); await (0, import_api_fetch.default)({ path: `/${restNamespace}/${restBase}/${post2.id}`, method: "DELETE" }); await dispatch7.savePost(); } catch (error) { registry.dispatch(import_notices.store).createErrorNotice( ...getNotificationArgumentsForTrashFail({ error }) ); } dispatch7({ type: "REQUEST_POST_DELETE_FINISH" }); }; var autosave = ({ local = false, ...options } = {}) => async ({ select: select6, dispatch: dispatch7 }) => { const post2 = select6.getCurrentPost(); if (local) { const isPostNew = select6.isEditedPostNew(); const title = select6.getEditedPostAttribute("title"); const content = select6.getEditedPostAttribute("content"); const excerpt = select6.getEditedPostAttribute("excerpt"); localAutosaveSet(post2.id, isPostNew, title, content, excerpt); } else { await dispatch7.savePost({ isAutosave: true, ...options }); } }; var __unstableSaveForPreview = ({ forceIsAutosaveable } = {}) => async ({ select: select6, dispatch: dispatch7 }) => { if ((forceIsAutosaveable || select6.isEditedPostAutosaveable()) && !select6.isPostLocked()) { const isDraft = ["draft", "auto-draft"].includes( select6.getEditedPostAttribute("status") ); if (isDraft) { await dispatch7.savePost({ isPreview: true }); } else { await dispatch7.autosave({ isPreview: true }); } } return select6.getEditedPostPreviewLink(); }; var redo = () => ({ registry }) => { registry.dispatch(import_core_data2.store).redo(); }; var undo = () => ({ registry }) => { registry.dispatch(import_core_data2.store).undo(); }; function createUndoLevel() { (0, import_deprecated2.default)("wp.data.dispatch( 'core/editor' ).createUndoLevel", { since: "6.0", version: "6.3", alternative: "Use the core entities store instead" }); return { type: "DO_NOTHING" }; } function updatePostLock(lock5) { return { type: "UPDATE_POST_LOCK", lock: lock5 }; } var enablePublishSidebar = () => ({ registry }) => { registry.dispatch(import_preferences2.store).set("core", "isPublishSidebarEnabled", true); }; var disablePublishSidebar = () => ({ registry }) => { registry.dispatch(import_preferences2.store).set("core", "isPublishSidebarEnabled", false); }; function lockPostSaving(lockName) { return { type: "LOCK_POST_SAVING", lockName }; } function unlockPostSaving(lockName) { return { type: "UNLOCK_POST_SAVING", lockName }; } function lockPostAutosaving(lockName) { return { type: "LOCK_POST_AUTOSAVING", lockName }; } function unlockPostAutosaving(lockName) { return { type: "UNLOCK_POST_AUTOSAVING", lockName }; } var resetEditorBlocks = (blocks, options = {}) => ({ select: select6, dispatch: dispatch7, registry }) => { const { __unstableShouldCreateUndoLevel, selection } = options; const edits = { blocks, selection }; if (__unstableShouldCreateUndoLevel !== false) { const { id, type } = select6.getCurrentPost(); const noChange = registry.select(import_core_data2.store).getEditedEntityRecord("postType", type, id).blocks === edits.blocks; if (noChange) { registry.dispatch(import_core_data2.store).__unstableCreateUndoLevel("postType", type, id); return; } edits.content = ({ blocks: blocksForSerialization = [] }) => (0, import_blocks2.__unstableSerializeAndClean)(blocksForSerialization); } dispatch7.editPost(edits); }; function updateEditorSettings(settings) { return { type: "UPDATE_EDITOR_SETTINGS", settings }; } var setRenderingMode = (mode) => ({ dispatch: dispatch7, registry, select: select6 }) => { if (select6.__unstableIsEditorReady() && !select6.getEditorSettings().isPreviewMode) { registry.dispatch(import_block_editor3.store).clearSelectedBlock(); } dispatch7({ type: "SET_RENDERING_MODE", mode }); }; function setDeviceType(deviceType2) { return { type: "SET_DEVICE_TYPE", deviceType: deviceType2 }; } var toggleEditorPanelEnabled = (panelName) => ({ registry }) => { const inactivePanels = registry.select(import_preferences2.store).get("core", "inactivePanels") ?? []; const isPanelInactive = !!inactivePanels?.includes(panelName); let updatedInactivePanels; if (isPanelInactive) { updatedInactivePanels = inactivePanels.filter( (invactivePanelName) => invactivePanelName !== panelName ); } else { updatedInactivePanels = [...inactivePanels, panelName]; } registry.dispatch(import_preferences2.store).set("core", "inactivePanels", updatedInactivePanels); }; var toggleEditorPanelOpened = (panelName) => ({ registry }) => { const openPanels = registry.select(import_preferences2.store).get("core", "openPanels") ?? []; const isPanelOpen = !!openPanels?.includes(panelName); let updatedOpenPanels; if (isPanelOpen) { updatedOpenPanels = openPanels.filter( (openPanelName) => openPanelName !== panelName ); } else { updatedOpenPanels = [...openPanels, panelName]; } registry.dispatch(import_preferences2.store).set("core", "openPanels", updatedOpenPanels); }; function removeEditorPanel(panelName) { return { type: "REMOVE_PANEL", panelName }; } var setIsInserterOpened = (value) => ({ dispatch: dispatch7, registry }) => { if (typeof value === "object" && value.hasOwnProperty("rootClientId") && value.hasOwnProperty("insertionIndex")) { unlock(registry.dispatch(import_block_editor3.store)).setInsertionPoint({ rootClientId: value.rootClientId, index: value.insertionIndex }); } dispatch7({ type: "SET_IS_INSERTER_OPENED", value }); }; function setIsListViewOpened(isOpen) { return { type: "SET_IS_LIST_VIEW_OPENED", isOpen }; } var toggleDistractionFree = ({ createNotice = true } = {}) => ({ dispatch: dispatch7, registry }) => { const isDistractionFree = registry.select(import_preferences2.store).get("core", "distractionFree"); if (isDistractionFree) { registry.dispatch(import_preferences2.store).set("core", "fixedToolbar", false); } if (!isDistractionFree) { registry.batch(() => { registry.dispatch(import_preferences2.store).set("core", "fixedToolbar", true); dispatch7.setIsInserterOpened(false); dispatch7.setIsListViewOpened(false); unlock( registry.dispatch(import_block_editor3.store) ).resetZoomLevel(); }); } registry.batch(() => { registry.dispatch(import_preferences2.store).set("core", "distractionFree", !isDistractionFree); if (createNotice) { registry.dispatch(import_notices.store).createInfoNotice( isDistractionFree ? (0, import_i18n2.__)("Distraction free mode deactivated.") : (0, import_i18n2.__)("Distraction free mode activated."), { id: "core/editor/distraction-free-mode/notice", type: "snackbar", actions: [ { label: (0, import_i18n2.__)("Undo"), onClick: () => { registry.batch(() => { registry.dispatch(import_preferences2.store).set( "core", "fixedToolbar", isDistractionFree ); registry.dispatch(import_preferences2.store).toggle( "core", "distractionFree" ); }); } } ] } ); } }); }; var toggleSpotlightMode = () => ({ registry }) => { registry.dispatch(import_preferences2.store).toggle("core", "focusMode"); const isFocusMode = registry.select(import_preferences2.store).get("core", "focusMode"); registry.dispatch(import_notices.store).createInfoNotice( isFocusMode ? (0, import_i18n2.__)("Spotlight mode activated.") : (0, import_i18n2.__)("Spotlight mode deactivated."), { id: "core/editor/toggle-spotlight-mode/notice", type: "snackbar", actions: [ { label: (0, import_i18n2.__)("Undo"), onClick: () => { registry.dispatch(import_preferences2.store).toggle("core", "focusMode"); } } ] } ); }; var toggleTopToolbar = () => ({ registry }) => { registry.dispatch(import_preferences2.store).toggle("core", "fixedToolbar"); const isTopToolbar = registry.select(import_preferences2.store).get("core", "fixedToolbar"); registry.dispatch(import_notices.store).createInfoNotice( isTopToolbar ? (0, import_i18n2.__)("Top toolbar activated.") : (0, import_i18n2.__)("Top toolbar deactivated."), { id: "core/editor/toggle-top-toolbar/notice", type: "snackbar", actions: [ { label: (0, import_i18n2.__)("Undo"), onClick: () => { registry.dispatch(import_preferences2.store).toggle("core", "fixedToolbar"); } } ] } ); }; var switchEditorMode = (mode) => ({ dispatch: dispatch7, registry }) => { registry.dispatch(import_preferences2.store).set("core", "editorMode", mode); if (mode !== "visual") { registry.dispatch(import_block_editor3.store).clearSelectedBlock(); unlock(registry.dispatch(import_block_editor3.store)).resetZoomLevel(); } if (mode === "visual") { (0, import_a11y.speak)((0, import_i18n2.__)("Visual editor selected"), "assertive"); } else if (mode === "text") { const isDistractionFree = registry.select(import_preferences2.store).get("core", "distractionFree"); if (isDistractionFree) { dispatch7.toggleDistractionFree(); } (0, import_a11y.speak)((0, import_i18n2.__)("Code editor selected"), "assertive"); } }; function openPublishSidebar() { return { type: "OPEN_PUBLISH_SIDEBAR" }; } function closePublishSidebar() { return { type: "CLOSE_PUBLISH_SIDEBAR" }; } function togglePublishSidebar() { return { type: "TOGGLE_PUBLISH_SIDEBAR" }; } var getBlockEditorAction = (name2) => (...args) => ({ registry }) => { (0, import_deprecated2.default)("`wp.data.dispatch( 'core/editor' )." + name2 + "`", { since: "5.3", alternative: "`wp.data.dispatch( 'core/block-editor' )." + name2 + "`", version: "6.2" }); registry.dispatch(import_block_editor3.store)[name2](...args); }; var resetBlocks = getBlockEditorAction("resetBlocks"); var receiveBlocks = getBlockEditorAction("receiveBlocks"); var updateBlock = getBlockEditorAction("updateBlock"); var updateBlockAttributes = getBlockEditorAction( "updateBlockAttributes" ); var selectBlock = getBlockEditorAction("selectBlock"); var startMultiSelect = getBlockEditorAction("startMultiSelect"); var stopMultiSelect = getBlockEditorAction("stopMultiSelect"); var multiSelect = getBlockEditorAction("multiSelect"); var clearSelectedBlock = getBlockEditorAction("clearSelectedBlock"); var toggleSelection = getBlockEditorAction("toggleSelection"); var replaceBlocks = getBlockEditorAction("replaceBlocks"); var replaceBlock = getBlockEditorAction("replaceBlock"); var moveBlocksDown = getBlockEditorAction("moveBlocksDown"); var moveBlocksUp = getBlockEditorAction("moveBlocksUp"); var moveBlockToPosition = getBlockEditorAction( "moveBlockToPosition" ); var insertBlock = getBlockEditorAction("insertBlock"); var insertBlocks = getBlockEditorAction("insertBlocks"); var showInsertionPoint = getBlockEditorAction("showInsertionPoint"); var hideInsertionPoint = getBlockEditorAction("hideInsertionPoint"); var setTemplateValidity = getBlockEditorAction( "setTemplateValidity" ); var synchronizeTemplate = getBlockEditorAction( "synchronizeTemplate" ); var mergeBlocks = getBlockEditorAction("mergeBlocks"); var removeBlocks = getBlockEditorAction("removeBlocks"); var removeBlock = getBlockEditorAction("removeBlock"); var toggleBlockMode = getBlockEditorAction("toggleBlockMode"); var startTyping = getBlockEditorAction("startTyping"); var stopTyping = getBlockEditorAction("stopTyping"); var enterFormattedText = getBlockEditorAction("enterFormattedText"); var exitFormattedText = getBlockEditorAction("exitFormattedText"); var insertDefaultBlock = getBlockEditorAction("insertDefaultBlock"); var updateBlockListSettings = getBlockEditorAction( "updateBlockListSettings" ); // packages/editor/build-module/store/private-actions.mjs var private_actions_exports = {}; __export(private_actions_exports, { createTemplate: () => createTemplate, hideBlockTypes: () => hideBlockTypes, registerEntityAction: () => registerEntityAction, registerEntityField: () => registerEntityField, registerPostTypeSchema: () => registerPostTypeSchema, removeTemplates: () => removeTemplates, resetStylesNavigation: () => resetStylesNavigation, restoreRevision: () => restoreRevision, revertTemplate: () => revertTemplate2, saveDirtyEntities: () => saveDirtyEntities, selectNote: () => selectNote, setCanvasMinHeight: () => setCanvasMinHeight, setCurrentRevisionId: () => setCurrentRevisionId, setCurrentTemplateId: () => setCurrentTemplateId, setDefaultRenderingMode: () => setDefaultRenderingMode, setIsReady: () => setIsReady, setRevisionPage: () => setRevisionPage, setShowRevisionDiff: () => setShowRevisionDiff, setShowStylebook: () => setShowStylebook, setStylesPath: () => setStylesPath, showBlockTypes: () => showBlockTypes, unregisterEntityAction: () => unregisterEntityAction, unregisterEntityField: () => unregisterEntityField }); var import_core_data53 = __toESM(require_core_data(), 1); var import_i18n122 = __toESM(require_i18n(), 1); var import_notices17 = __toESM(require_notices(), 1); var import_block_editor35 = __toESM(require_block_editor(), 1); var import_preferences10 = __toESM(require_preferences(), 1); var import_url11 = __toESM(require_url(), 1); var import_api_fetch5 = __toESM(require_api_fetch(), 1); var import_blocks20 = __toESM(require_blocks(), 1); var import_html_entities9 = __toESM(require_html_entities(), 1); var import_date6 = __toESM(require_date(), 1); // packages/editor/build-module/store/utils/is-template-revertable.mjs function isTemplateRevertable(templateOrTemplatePart) { if (!templateOrTemplatePart) { return false; } return templateOrTemplatePart.source === TEMPLATE_ORIGINS.custom && (Boolean(templateOrTemplatePart?.plugin) || templateOrTemplatePart?.has_theme_file); } // packages/editor/build-module/store/private-selectors.mjs var private_selectors_exports = {}; __export(private_selectors_exports, { buildRevisionsPageQuery: () => buildRevisionsPageQuery, getCanvasMinHeight: () => getCanvasMinHeight, getCurrentRevision: () => getCurrentRevision, getCurrentRevisionId: () => getCurrentRevisionId, getDefaultRenderingMode: () => getDefaultRenderingMode, getEntityActions: () => getEntityActions2, getEntityFields: () => getEntityFields2, getInserter: () => getInserter, getInserterSidebarToggleRef: () => getInserterSidebarToggleRef, getListViewToggleRef: () => getListViewToggleRef, getPageRevisions: () => getPageRevisions, getPostBlocksByName: () => getPostBlocksByName, getPostIcon: () => getPostIcon, getPreviousRevision: () => getPreviousRevision, getRevisionPage: () => getRevisionPage, getRevisionsPerPage: () => getRevisionsPerPage, getSelectedNote: () => getSelectedNote, getShowStylebook: () => getShowStylebook, getStylesPath: () => getStylesPath, hasPostMetaChanges: () => hasPostMetaChanges, isCollaborationEnabledForCurrentPost: () => isCollaborationEnabledForCurrentPost, isEntityReady: () => isEntityReady2, isNoteFocused: () => isNoteFocused, isRevisionsMode: () => isRevisionsMode, isShowingRevisionDiff: () => isShowingRevisionDiff }); var import_fast_deep_equal = __toESM(require_fast_deep_equal(), 1); var import_block_editor4 = __toESM(require_block_editor(), 1); var import_data5 = __toESM(require_data(), 1); var import_core_data4 = __toESM(require_core_data(), 1); var import_preferences3 = __toESM(require_preferences(), 1); // packages/editor/build-module/dataviews/store/private-selectors.mjs var EMPTY_ARRAY = []; function getEntityActions(state, kind, name2) { return state.actions[kind]?.[name2] ?? EMPTY_ARRAY; } function getEntityFields(state, kind, name2) { return state.fields[kind]?.[name2] ?? EMPTY_ARRAY; } function isEntityReady(state, kind, name2) { return state.isReady[kind]?.[name2]; } // node_modules/uuid/dist/esm-browser/rng.js var getRandomValues; var rnds8 = new Uint8Array(16); function rng() { if (!getRandomValues) { getRandomValues = typeof crypto !== "undefined" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto); if (!getRandomValues) { throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported"); } } return getRandomValues(rnds8); } // node_modules/uuid/dist/esm-browser/stringify.js var byteToHex = []; for (let i3 = 0; i3 < 256; ++i3) { byteToHex.push((i3 + 256).toString(16).slice(1)); } function unsafeStringify(arr, offset3 = 0) { return byteToHex[arr[offset3 + 0]] + byteToHex[arr[offset3 + 1]] + byteToHex[arr[offset3 + 2]] + byteToHex[arr[offset3 + 3]] + "-" + byteToHex[arr[offset3 + 4]] + byteToHex[arr[offset3 + 5]] + "-" + byteToHex[arr[offset3 + 6]] + byteToHex[arr[offset3 + 7]] + "-" + byteToHex[arr[offset3 + 8]] + byteToHex[arr[offset3 + 9]] + "-" + byteToHex[arr[offset3 + 10]] + byteToHex[arr[offset3 + 11]] + byteToHex[arr[offset3 + 12]] + byteToHex[arr[offset3 + 13]] + byteToHex[arr[offset3 + 14]] + byteToHex[arr[offset3 + 15]]; } // node_modules/uuid/dist/esm-browser/native.js var randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto); var native_default = { randomUUID }; // node_modules/uuid/dist/esm-browser/v4.js function v4(options, buf, offset3) { if (native_default.randomUUID && !buf && !options) { return native_default.randomUUID(); } options = options || {}; const rnds = options.random || (options.rng || rng)(); rnds[6] = rnds[6] & 15 | 64; rnds[8] = rnds[8] & 63 | 128; if (buf) { offset3 = offset3 || 0; for (let i3 = 0; i3 < 16; ++i3) { buf[offset3 + i3] = rnds[i3]; } return buf; } return unsafeStringify(rnds); } var v4_default = v4; // packages/editor/build-module/utils/media-upload/index.mjs var import_data4 = __toESM(require_data(), 1); var import_core_data3 = __toESM(require_core_data(), 1); var import_media_utils = __toESM(require_media_utils(), 1); var noop = () => { }; function mediaUpload({ additionalData = {}, allowedTypes, filesList, maxUploadFileSize, onError = noop, onFileChange, onSuccess, multiple = true }) { const { receiveEntityRecords } = (0, import_data4.dispatch)(import_core_data3.store); const { getCurrentPost: getCurrentPost2, getEditorSettings: getEditorSettings2 } = (0, import_data4.select)(store); const { lockPostAutosaving: lockPostAutosaving2, unlockPostAutosaving: unlockPostAutosaving2, lockPostSaving: lockPostSaving2, unlockPostSaving: unlockPostSaving2 } = (0, import_data4.dispatch)(store); const wpAllowedMimeTypes = getEditorSettings2().allowedMimeTypes; const lockKey = `image-upload-${v4_default()}`; let imageIsUploading = false; maxUploadFileSize = maxUploadFileSize || getEditorSettings2().maxUploadFileSize; const currentPost = getCurrentPost2(); const currentPostId = typeof currentPost?.id === "number" ? currentPost.id : currentPost?.wp_id; const setSaveLock = () => { if (window.__clientSideMediaProcessing) { return; } lockPostSaving2(lockKey); lockPostAutosaving2(lockKey); imageIsUploading = true; }; const postData = currentPostId ? { post: currentPostId } : {}; const clearSaveLock = () => { if (window.__clientSideMediaProcessing) { return; } unlockPostSaving2(lockKey); unlockPostAutosaving2(lockKey); imageIsUploading = false; }; (0, import_media_utils.uploadMedia)({ allowedTypes, filesList, onFileChange: (file) => { if (!window.__clientSideMediaProcessing) { if (!imageIsUploading) { setSaveLock(); } else { clearSaveLock(); } } onFileChange?.(file); const entityFiles = file.filter((_file) => _file?.id); if (entityFiles?.length) { const invalidateCache = true; receiveEntityRecords( "postType", "attachment", entityFiles, void 0, invalidateCache ); } }, onSuccess, additionalData: { ...postData, ...additionalData }, maxUploadFileSize, onError: ({ message: message2 }) => { if (!window.__clientSideMediaProcessing) { clearSaveLock(); } onError(message2); }, wpAllowedMimeTypes, multiple }); } // packages/editor/build-module/utils/url.mjs var import_url2 = __toESM(require_url(), 1); var import_deprecated3 = __toESM(require_deprecated(), 1); function cleanForSlug2(string) { (0, import_deprecated3.default)("wp.editor.cleanForSlug", { since: "12.7", plugin: "Gutenberg", alternative: "wp.url.cleanForSlug" }); return (0, import_url2.cleanForSlug)(string); } // packages/editor/build-module/store/private-selectors.mjs var EMPTY_INSERTION_POINT = { rootClientId: void 0, insertionIndex: void 0, filterValue: void 0 }; var RENDERING_MODES = ["post-only", "template-locked"]; var getInserter = (0, import_data5.createRegistrySelector)( (select6) => (0, import_data5.createSelector)( (state) => { if (typeof state.blockInserterPanel === "object") { return state.blockInserterPanel; } if (getRenderingMode(state) === "template-locked") { const { getBlocksByName, getSelectedBlockClientId: getSelectedBlockClientId2, getBlockParents, getBlockOrder: getBlockOrder2 } = select6(import_block_editor4.store); const [postContentClientId] = getBlocksByName("core/post-content"); if (postContentClientId) { const selectedBlockClientId = getSelectedBlockClientId2(); if (selectedBlockClientId && selectedBlockClientId !== postContentClientId && getBlockParents(selectedBlockClientId).includes( postContentClientId )) { return EMPTY_INSERTION_POINT; } return { rootClientId: postContentClientId, insertionIndex: getBlockOrder2(postContentClientId).length, filterValue: void 0 }; } } return EMPTY_INSERTION_POINT; }, (state) => { const { getBlocksByName, getSelectedBlockClientId: getSelectedBlockClientId2, getBlockParents, getBlockOrder: getBlockOrder2 } = select6(import_block_editor4.store); const [postContentClientId] = getBlocksByName("core/post-content"); const selectedBlockClientId = getSelectedBlockClientId2(); return [ state.blockInserterPanel, getRenderingMode(state), postContentClientId, selectedBlockClientId, selectedBlockClientId ? getBlockParents(selectedBlockClientId) : void 0, postContentClientId ? getBlockOrder2(postContentClientId).length : void 0 ]; } ) ); function getListViewToggleRef(state) { return state.listViewToggleRef; } function getInserterSidebarToggleRef(state) { return state.inserterSidebarToggleRef; } var CARD_ICONS = { wp_block: symbol_default, wp_navigation: navigation_default, page: page_default, post: verse_default }; var getPostIcon = (0, import_data5.createRegistrySelector)( (select6) => (state, postType2, options) => { { if (postType2 === "wp_template_part" || postType2 === "wp_template") { const templateAreas = select6(import_core_data4.store).getCurrentTheme()?.default_template_part_areas || []; const areaData = templateAreas.find( (item) => options.area === item.area ); if (areaData?.icon) { return getTemplatePartIcon(areaData.icon); } return layout_default; } if (CARD_ICONS[postType2]) { return CARD_ICONS[postType2]; } const postTypeEntity = select6(import_core_data4.store).getPostType(postType2); if (typeof postTypeEntity?.icon === "string" && postTypeEntity.icon.startsWith("dashicons-")) { return postTypeEntity.icon.slice(10); } return page_default; } } ); var hasPostMetaChanges = (0, import_data5.createRegistrySelector)( (select6) => (state, postType2, postId2) => { const { type: currentPostType, id: currentPostId } = getCurrentPost(state); const edits = select6(import_core_data4.store).getEntityRecordNonTransientEdits( "postType", postType2 || currentPostType, postId2 || currentPostId ); if (!edits?.meta) { return false; } const originalPostMeta = select6(import_core_data4.store).getEntityRecord( "postType", postType2 || currentPostType, postId2 || currentPostId )?.meta; return !(0, import_fast_deep_equal.default)( { ...originalPostMeta, footnotes: void 0 }, { ...edits.meta, footnotes: void 0 } ); } ); function getEntityActions2(state, ...args) { return getEntityActions(state.dataviews, ...args); } function isEntityReady2(state, ...args) { return isEntityReady(state.dataviews, ...args); } function getEntityFields2(state, ...args) { return getEntityFields(state.dataviews, ...args); } var getPostBlocksByName = (0, import_data5.createRegistrySelector)( (select6) => (0, import_data5.createSelector)( (state, blockNames) => { blockNames = Array.isArray(blockNames) ? blockNames : [blockNames]; const { getBlocksByName, getBlockParents, getBlockName: getBlockName2 } = select6(import_block_editor4.store); return getBlocksByName(blockNames).filter( (clientId) => getBlockParents(clientId).every((parentClientId) => { const parentBlockName = getBlockName2(parentClientId); return ( // Ignore descendents of the query block. parentBlockName !== "core/query" && // Enable only the top-most block. !blockNames.includes(parentBlockName) ); }) ); }, (state, blockNames) => { blockNames = Array.isArray(blockNames) ? blockNames : [blockNames]; const { getBlocksByName, getBlockParents } = select6(import_block_editor4.store); const clientIds = getBlocksByName(blockNames); const parentsOfClientIds = clientIds.map( (id) => getBlockParents(id) ); return [clientIds, ...parentsOfClientIds]; } ) ); var getDefaultRenderingMode = (0, import_data5.createRegistrySelector)( (select6) => (state, postType2) => { const { getPostType, getCurrentTheme, hasFinishedResolution } = select6(import_core_data4.store); const currentTheme = getCurrentTheme(); const postTypeEntity = getPostType(postType2); if (!hasFinishedResolution("getPostType", [postType2]) || !hasFinishedResolution("getCurrentTheme")) { return void 0; } const theme = currentTheme?.stylesheet; const defaultModePreference = select6(import_preferences3.store).get( "core", "renderingModes" )?.[theme]?.[postType2]; const postTypeDefaultMode = Array.isArray( postTypeEntity?.supports?.editor ) ? postTypeEntity.supports.editor.find( (features) => "default-mode" in features )?.["default-mode"] : void 0; const defaultMode = defaultModePreference || postTypeDefaultMode; if (!RENDERING_MODES.includes(defaultMode)) { return "post-only"; } return defaultMode; } ); function getStylesPath(state) { return state.stylesPath ?? "/"; } function getShowStylebook(state) { return state.showStylebook ?? false; } function getCanvasMinHeight(state) { return state.canvasMinHeight; } function getRevisionPage(state) { return state.revisionPage; } function buildRevisionsPageQuery(revisionKey, page) { return { per_page: REVISIONS_PER_PAGE, page, context: "edit", orderby: "date", order: "desc", _fields: [ .../* @__PURE__ */ new Set([ "id", "date", "modified", "author", "meta", "title.raw", "excerpt.raw", "content.raw", revisionKey ]) ].join() }; } var REVISIONS_PER_PAGE = 100; function getRevisionsPerPage() { return REVISIONS_PER_PAGE; } var getPageRevisions = (0, import_data5.createRegistrySelector)( (select6) => (state, page) => { if (!page) { return null; } const { type: postType2, id: postId2 } = getCurrentPost(state); if (!postType2 || !postId2) { return null; } const entityConfig = select6(import_core_data4.store).getEntityConfig( "postType", postType2 ); const revisionKey = entityConfig?.revisionKey || "id"; return select6(import_core_data4.store).getRevisions( "postType", postType2, postId2, buildRevisionsPageQuery(revisionKey, page) ); } ); function isRevisionsMode(state) { return state.revisionId !== null; } function isShowingRevisionDiff(state) { return state.showRevisionDiff; } function getCurrentRevisionId(state) { return state.revisionId; } var getCurrentRevision = (0, import_data5.createRegistrySelector)( (select6) => (state) => { const revisionId2 = getCurrentRevisionId(state); if (!revisionId2) { return void 0; } const page = getRevisionPage(state); if (!page) { return null; } const { type: postType2, id: postId2 } = getCurrentPost(state); const entityConfig = select6(import_core_data4.store).getEntityConfig( "postType", postType2 ); const revisionKey = entityConfig?.revisionKey || "id"; const revisions = select6(import_core_data4.store).getRevisions( "postType", postType2, postId2, buildRevisionsPageQuery(revisionKey, page) ); if (!revisions) { return null; } return revisions.find((r4) => r4[revisionKey] === revisionId2) ?? null; } ); function getSelectedNote(state) { return state.selectedNote?.noteId; } function isNoteFocused(state) { return !!state.selectedNote?.options?.focus; } var getPreviousRevision = (0, import_data5.createRegistrySelector)( (select6) => (state) => { const currentRevisionId = getCurrentRevisionId(state); if (!currentRevisionId) { return void 0; } const page = getRevisionPage(state); if (!page) { return null; } const { type: postType2, id: postId2 } = getCurrentPost(state); const entityConfig = select6(import_core_data4.store).getEntityConfig( "postType", postType2 ); const revisionKey = entityConfig?.revisionKey || "id"; const query = buildRevisionsPageQuery(revisionKey, page); const revisions = select6(import_core_data4.store).getRevisions( "postType", postType2, postId2, query ); if (!revisions) { return null; } const currentIndex = revisions.findIndex( (r4) => r4[revisionKey] === currentRevisionId ); if (currentIndex >= 0 && currentIndex < revisions.length - 1) { return revisions[currentIndex + 1]; } const totalRevisions = getCurrentPostRevisionsCount(state); const totalPages = Math.ceil(totalRevisions / query.per_page) || 1; if (currentIndex === revisions.length - 1 && page < totalPages) { const nextPageRevisions = select6(import_core_data4.store).getRevisions( "postType", postType2, postId2, buildRevisionsPageQuery(revisionKey, page + 1) ); return nextPageRevisions?.[0] ?? null; } return null; } ); var isCollaborationEnabledForCurrentPost = (0, import_data5.createRegistrySelector)( (select6) => (state) => { if (!unlock(select6(import_core_data4.store)).isCollaborationSupported()) { return false; } const currentPostType = getCurrentPostType(state); const entityConfig = select6(import_core_data4.store).getEntityConfig( "postType", currentPostType ); return Boolean( entityConfig?.syncConfig && window._wpCollaborationEnabled ); } ); // packages/editor/build-module/dataviews/store/private-actions.mjs var import_core_data52 = __toESM(require_core_data(), 1); var import_hooks38 = __toESM(require_hooks(), 1); // packages/fields/build-module/fields/slug/index.mjs var import_i18n5 = __toESM(require_i18n(), 1); // packages/fields/build-module/fields/slug/slug-edit.mjs var import_components = __toESM(require_components(), 1); var import_compose = __toESM(require_compose(), 1); var import_data6 = __toESM(require_data(), 1); var import_element3 = __toESM(require_element(), 1); var import_notices2 = __toESM(require_notices(), 1); var import_url5 = __toESM(require_url(), 1); var import_i18n4 = __toESM(require_i18n(), 1); // packages/fields/build-module/fields/slug/utils.mjs var import_url4 = __toESM(require_url(), 1); // packages/fields/build-module/actions/utils.mjs var import_html_entities = __toESM(require_html_entities(), 1); var import_i18n3 = __toESM(require_i18n(), 1); function isTemplate(post2) { return post2.type === "wp_template"; } function isTemplatePart(post2) { return post2.type === "wp_template_part"; } function isTemplateOrTemplatePart(p4) { return p4.type === "wp_template" || p4.type === "wp_template_part"; } function getItemTitle(item, fallback = (0, import_i18n3.__)("(no title)")) { let title = ""; if (typeof item.title === "string") { title = (0, import_html_entities.decodeEntities)(item.title); } else if (item.title && "rendered" in item.title) { title = (0, import_html_entities.decodeEntities)(item.title.rendered); } else if (item.title && "raw" in item.title) { title = (0, import_html_entities.decodeEntities)(item.title.raw); } return title || fallback; } function isTemplateRemovable(template2) { if (!template2) { return false; } return [template2.source, template2.source].includes("custom") && !Boolean(template2.type === "wp_template" && template2?.plugin) && !template2.has_theme_file; } // packages/fields/build-module/fields/slug/utils.mjs var getSlug = (item) => { if (typeof item !== "object") { return ""; } return item.slug || (0, import_url4.cleanForSlug)(getItemTitle(item)) || item.id.toString(); }; // packages/fields/build-module/fields/slug/slug-edit.mjs var import_jsx_runtime77 = __toESM(require_jsx_runtime(), 1); var SlugEdit = ({ field, onChange, data }) => { const { id } = field; const slug = field.getValue({ item: data }) || getSlug(data); const permalinkTemplate = data.permalink_template || ""; const PERMALINK_POSTNAME_REGEX2 = /%(?:postname|pagename)%/; const [prefix2, suffix] = permalinkTemplate.split( PERMALINK_POSTNAME_REGEX2 ); const permalinkPrefix = prefix2; const permalinkSuffix = suffix; const isEditable = PERMALINK_POSTNAME_REGEX2.test(permalinkTemplate); const originalSlugRef = (0, import_element3.useRef)(slug); const slugToDisplay = slug || originalSlugRef.current; const permalink = isEditable ? `${permalinkPrefix}${slugToDisplay}${permalinkSuffix}` : (0, import_url5.safeDecodeURIComponent)(data.link || ""); (0, import_element3.useEffect)(() => { if (slug && originalSlugRef.current === void 0) { originalSlugRef.current = slug; } }, [slug]); const onChangeControl = (0, import_element3.useCallback)( (newValue) => onChange({ [id]: newValue }), [id, onChange] ); const { createNotice } = (0, import_data6.useDispatch)(import_notices2.store); const copyButtonRef = (0, import_compose.useCopyToClipboard)(permalink, () => { createNotice("info", (0, import_i18n4.__)("Copied Permalink to clipboard."), { isDismissible: true, type: "snackbar" }); }); const postUrlSlugDescriptionId = "editor-post-url__slug-description-" + (0, import_compose.useInstanceId)(SlugEdit); return /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("fieldset", { className: "fields-controls__slug", children: [ isEditable && /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(import_components.__experimentalVStack, { children: [ /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)(import_components.__experimentalVStack, { spacing: "0px", children: [ /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("span", { children: (0, import_i18n4.__)( "Customize the last part of the Permalink." ) }), /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_components.ExternalLink, { href: "https://wordpress.org/documentation/article/page-post-settings-sidebar/#permalink", children: (0, import_i18n4.__)("Learn more") }) ] }), /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( import_components.__experimentalInputControl, { __next40pxDefaultSize: true, prefix: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_components.__experimentalInputControlPrefixWrapper, { children: "/" }), suffix: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(import_components.__experimentalInputControlSuffixWrapper, { variant: "control", children: /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( import_components.Button, { size: "small", icon: copy_small_default, ref: copyButtonRef, label: (0, import_i18n4.__)("Copy") } ) }), label: (0, import_i18n4.__)("Link"), hideLabelFromVision: true, value: slug, autoComplete: "off", spellCheck: "false", type: "text", className: "fields-controls__slug-input", onChange: (newValue) => { onChangeControl(newValue); }, onBlur: () => { if (slug === "") { onChangeControl(originalSlugRef.current); } }, "aria-describedby": postUrlSlugDescriptionId } ), /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("div", { className: "fields-controls__slug-help", children: [ /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("span", { className: "fields-controls__slug-help-visual-label", children: (0, import_i18n4.__)("Permalink:") }), /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)( import_components.ExternalLink, { className: "fields-controls__slug-help-link", href: permalink, children: [ /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("span", { className: "fields-controls__slug-help-prefix", children: permalinkPrefix }), /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("span", { className: "fields-controls__slug-help-slug", children: slugToDisplay }), /* @__PURE__ */ (0, import_jsx_runtime77.jsx)("span", { className: "fields-controls__slug-help-suffix", children: permalinkSuffix }) ] } ) ] }) ] }), !isEditable && /* @__PURE__ */ (0, import_jsx_runtime77.jsx)( import_components.ExternalLink, { className: "fields-controls__slug-help", href: permalink, children: permalink } ) ] }); }; var slug_edit_default = SlugEdit; // packages/fields/build-module/fields/slug/slug-view.mjs var import_element4 = __toESM(require_element(), 1); var SlugView = ({ item }) => { const slug = getSlug(item); const originalSlugRef = (0, import_element4.useRef)(slug); (0, import_element4.useEffect)(() => { if (slug && originalSlugRef.current === void 0) { originalSlugRef.current = slug; } }, [slug]); const slugToDisplay = slug || originalSlugRef.current; return `${slugToDisplay}`; }; var slug_view_default = SlugView; // packages/fields/build-module/fields/slug/index.mjs var slugField = { id: "slug", type: "text", label: (0, import_i18n5.__)("Slug"), Edit: slug_edit_default, render: slug_view_default, filterBy: false }; var slug_default = slugField; // packages/fields/build-module/fields/title/index.mjs var import_i18n7 = __toESM(require_i18n(), 1); // node_modules/clsx/dist/clsx.mjs function r(e3) { var t4, f3, n3 = ""; if ("string" == typeof e3 || "number" == typeof e3) n3 += e3; else if ("object" == typeof e3) if (Array.isArray(e3)) { var o4 = e3.length; for (t4 = 0; t4 < o4; t4++) e3[t4] && (f3 = r(e3[t4])) && (n3 && (n3 += " "), n3 += f3); } else for (f3 in e3) e3[f3] && (n3 && (n3 += " "), n3 += f3); return n3; } function clsx() { for (var e3, t4, f3 = 0, n3 = "", o4 = arguments.length; f3 < o4; f3++) (e3 = arguments[f3]) && (t4 = r(e3)) && (n3 && (n3 += " "), n3 += t4); return n3; } var clsx_default = clsx; // packages/fields/build-module/fields/title/view.mjs var import_components2 = __toESM(require_components(), 1); var import_i18n6 = __toESM(require_i18n(), 1); var import_jsx_runtime78 = __toESM(require_jsx_runtime(), 1); function BaseTitleView({ item, className, children }) { const renderedTitle = getItemTitle(item); return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)( import_components2.__experimentalHStack, { className: clsx_default("fields-field__title", className), alignment: "center", justify: "flex-start", children: [ /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { children: renderedTitle || (0, import_i18n6.__)("(no title)") }), children ] } ); } function TitleView({ item }) { return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(BaseTitleView, { item }); } // packages/fields/build-module/fields/title/index.mjs var titleField = { type: "text", id: "title", label: (0, import_i18n7.__)("Title"), placeholder: (0, import_i18n7.__)("No title"), getValue: ({ item }) => getItemTitle(item), render: TitleView, enableHiding: true, enableGlobalSearch: true, filterBy: false }; var title_default = titleField; // packages/fields/build-module/fields/page-title/index.mjs var import_i18n9 = __toESM(require_i18n(), 1); // packages/fields/build-module/fields/page-title/view.mjs var import_i18n8 = __toESM(require_i18n(), 1); var import_data7 = __toESM(require_data(), 1); var import_core_data5 = __toESM(require_core_data(), 1); var import_components3 = __toESM(require_components(), 1); // packages/fields/build-module/lock-unlock.mjs var import_private_apis2 = __toESM(require_private_apis(), 1); var { lock: lock2, unlock: unlock2 } = (0, import_private_apis2.__dangerousOptInToUnstableAPIsOnlyForCoreModules)( "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.", "@wordpress/fields" ); // packages/fields/build-module/fields/page-title/view.mjs var import_jsx_runtime79 = __toESM(require_jsx_runtime(), 1); var { Badge } = unlock2(import_components3.privateApis); function PageTitleView({ item }) { const { frontPageId, postsPageId } = (0, import_data7.useSelect)((select6) => { const { getEntityRecord } = select6(import_core_data5.store); const siteSettings = getEntityRecord( "root", "site" ); return { frontPageId: siteSettings?.page_on_front, postsPageId: siteSettings?.page_for_posts }; }, []); return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(BaseTitleView, { item, className: "fields-field__page-title", children: [frontPageId, postsPageId].includes(item.id) && /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(Badge, { children: item.id === frontPageId ? (0, import_i18n8.__)("Homepage") : (0, import_i18n8.__)("Posts Page") }) }); } // packages/fields/build-module/fields/page-title/index.mjs var pageTitleField = { type: "text", id: "title", label: (0, import_i18n9.__)("Title"), placeholder: (0, import_i18n9.__)("No title"), getValue: ({ item }) => getItemTitle(item), render: PageTitleView, enableHiding: false, enableGlobalSearch: true, filterBy: false }; var page_title_default = pageTitleField; // packages/fields/build-module/fields/template-title/index.mjs var import_i18n10 = __toESM(require_i18n(), 1); var templateTitleField = { type: "text", label: (0, import_i18n10.__)("Template"), placeholder: (0, import_i18n10.__)("No title"), id: "title", getValue: ({ item }) => getItemTitle(item), render: TitleView, enableHiding: false, enableGlobalSearch: true, filterBy: false }; var template_title_default = templateTitleField; // packages/fields/build-module/fields/pattern-title/index.mjs var import_i18n12 = __toESM(require_i18n(), 1); // packages/fields/build-module/fields/pattern-title/view.mjs var import_i18n11 = __toESM(require_i18n(), 1); var import_components4 = __toESM(require_components(), 1); var import_patterns = __toESM(require_patterns(), 1); var import_jsx_runtime80 = __toESM(require_jsx_runtime(), 1); var { PATTERN_TYPES } = unlock2(import_patterns.privateApis); function PatternTitleView({ item }) { return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(BaseTitleView, { item, className: "fields-field__pattern-title", children: item.type === PATTERN_TYPES.theme && /* @__PURE__ */ (0, import_jsx_runtime80.jsx)( import_components4.Tooltip, { placement: "top", text: (0, import_i18n11.__)("This pattern cannot be edited."), children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(icon_default, { icon: lock_small_default, size: 24 }) } ) }); } // packages/fields/build-module/fields/pattern-title/index.mjs var patternTitleField = { type: "text", id: "title", label: (0, import_i18n12.__)("Title"), placeholder: (0, import_i18n12.__)("No title"), getValue: ({ item }) => getItemTitle(item), render: PatternTitleView, enableHiding: false, enableGlobalSearch: true, filterBy: false }; var pattern_title_default = patternTitleField; // packages/fields/build-module/fields/featured-image/index.mjs var import_i18n14 = __toESM(require_i18n(), 1); // packages/fields/build-module/components/media-edit/index.mjs var import_components5 = __toESM(require_components(), 1); var import_blob = __toESM(require_blob(), 1); var import_core_data6 = __toESM(require_core_data(), 1); var import_data8 = __toESM(require_data(), 1); var import_element6 = __toESM(require_element(), 1); var import_i18n13 = __toESM(require_i18n(), 1); var import_media_utils2 = __toESM(require_media_utils(), 1); var import_notices3 = __toESM(require_notices(), 1); // node_modules/@react-spring/rafz/dist/react-spring-rafz.esm.js var updateQueue = makeQueue(); var raf = (fn) => schedule(fn, updateQueue); var writeQueue = makeQueue(); raf.write = (fn) => schedule(fn, writeQueue); var onStartQueue = makeQueue(); raf.onStart = (fn) => schedule(fn, onStartQueue); var onFrameQueue = makeQueue(); raf.onFrame = (fn) => schedule(fn, onFrameQueue); var onFinishQueue = makeQueue(); raf.onFinish = (fn) => schedule(fn, onFinishQueue); var timeouts = []; raf.setTimeout = (handler, ms) => { let time = raf.now() + ms; let cancel = () => { let i3 = timeouts.findIndex((t4) => t4.cancel == cancel); if (~i3) timeouts.splice(i3, 1); pendingCount -= ~i3 ? 1 : 0; }; let timeout = { time, handler, cancel }; timeouts.splice(findTimeout(time), 0, timeout); pendingCount += 1; start(); return timeout; }; var findTimeout = (time) => ~(~timeouts.findIndex((t4) => t4.time > time) || ~timeouts.length); raf.cancel = (fn) => { onStartQueue.delete(fn); onFrameQueue.delete(fn); onFinishQueue.delete(fn); updateQueue.delete(fn); writeQueue.delete(fn); }; raf.sync = (fn) => { sync = true; raf.batchedUpdates(fn); sync = false; }; raf.throttle = (fn) => { let lastArgs; function queuedFn() { try { fn(...lastArgs); } finally { lastArgs = null; } } function throttled(...args) { lastArgs = args; raf.onStart(queuedFn); } throttled.handler = fn; throttled.cancel = () => { onStartQueue.delete(queuedFn); lastArgs = null; }; return throttled; }; var nativeRaf = typeof window != "undefined" ? window.requestAnimationFrame : () => { }; raf.use = (impl) => nativeRaf = impl; raf.now = typeof performance != "undefined" ? () => performance.now() : Date.now; raf.batchedUpdates = (fn) => fn(); raf.catch = console.error; raf.frameLoop = "always"; raf.advance = () => { if (raf.frameLoop !== "demand") { console.warn("Cannot call the manual advancement of rafz whilst frameLoop is not set as demand"); } else { update(); } }; var ts = -1; var pendingCount = 0; var sync = false; function schedule(fn, queue) { if (sync) { queue.delete(fn); fn(0); } else { queue.add(fn); start(); } } function start() { if (ts < 0) { ts = 0; if (raf.frameLoop !== "demand") { nativeRaf(loop); } } } function stop() { ts = -1; } function loop() { if (~ts) { nativeRaf(loop); raf.batchedUpdates(update); } } function update() { let prevTs = ts; ts = raf.now(); let count = findTimeout(ts); if (count) { eachSafely(timeouts.splice(0, count), (t4) => t4.handler()); pendingCount -= count; } if (!pendingCount) { stop(); return; } onStartQueue.flush(); updateQueue.flush(prevTs ? Math.min(64, ts - prevTs) : 16.667); onFrameQueue.flush(); writeQueue.flush(); onFinishQueue.flush(); } function makeQueue() { let next = /* @__PURE__ */ new Set(); let current = next; return { add(fn) { pendingCount += current == next && !next.has(fn) ? 1 : 0; next.add(fn); }, delete(fn) { pendingCount -= current == next && next.has(fn) ? 1 : 0; return next.delete(fn); }, flush(arg) { if (current.size) { next = /* @__PURE__ */ new Set(); pendingCount -= current.size; eachSafely(current, (fn) => fn(arg) && next.add(fn)); pendingCount += next.size; current = next; } } }; } function eachSafely(values, each2) { values.forEach((value) => { try { each2(value); } catch (e3) { raf.catch(e3); } }); } // node_modules/@react-spring/shared/dist/react-spring-shared.esm.js var import_react = __toESM(require_react()); function noop2() { } var defineHidden = (obj, key, value) => Object.defineProperty(obj, key, { value, writable: true, configurable: true }); var is = { arr: Array.isArray, obj: (a3) => !!a3 && a3.constructor.name === "Object", fun: (a3) => typeof a3 === "function", str: (a3) => typeof a3 === "string", num: (a3) => typeof a3 === "number", und: (a3) => a3 === void 0 }; function isEqual(a3, b3) { if (is.arr(a3)) { if (!is.arr(b3) || a3.length !== b3.length) return false; for (let i3 = 0; i3 < a3.length; i3++) { if (a3[i3] !== b3[i3]) return false; } return true; } return a3 === b3; } var each = (obj, fn) => obj.forEach(fn); function eachProp(obj, fn, ctx2) { if (is.arr(obj)) { for (let i3 = 0; i3 < obj.length; i3++) { fn.call(ctx2, obj[i3], `${i3}`); } return; } for (const key in obj) { if (obj.hasOwnProperty(key)) { fn.call(ctx2, obj[key], key); } } } var toArray = (a3) => is.und(a3) ? [] : is.arr(a3) ? a3 : [a3]; function flush(queue, iterator) { if (queue.size) { const items = Array.from(queue); queue.clear(); each(items, iterator); } } var flushCalls = (queue, ...args) => flush(queue, (fn) => fn(...args)); var isSSR = () => typeof window === "undefined" || !window.navigator || /ServerSideRendering|^Deno\//.test(window.navigator.userAgent); var createStringInterpolator$1; var to; var colors$1 = null; var skipAnimation = false; var willAdvance = noop2; var assign = (globals2) => { if (globals2.to) to = globals2.to; if (globals2.now) raf.now = globals2.now; if (globals2.colors !== void 0) colors$1 = globals2.colors; if (globals2.skipAnimation != null) skipAnimation = globals2.skipAnimation; if (globals2.createStringInterpolator) createStringInterpolator$1 = globals2.createStringInterpolator; if (globals2.requestAnimationFrame) raf.use(globals2.requestAnimationFrame); if (globals2.batchedUpdates) raf.batchedUpdates = globals2.batchedUpdates; if (globals2.willAdvance) willAdvance = globals2.willAdvance; if (globals2.frameLoop) raf.frameLoop = globals2.frameLoop; }; var globals = /* @__PURE__ */ Object.freeze({ __proto__: null, get createStringInterpolator() { return createStringInterpolator$1; }, get to() { return to; }, get colors() { return colors$1; }, get skipAnimation() { return skipAnimation; }, get willAdvance() { return willAdvance; }, assign }); var startQueue = /* @__PURE__ */ new Set(); var currentFrame = []; var prevFrame = []; var priority = 0; var frameLoop = { get idle() { return !startQueue.size && !currentFrame.length; }, start(animation) { if (priority > animation.priority) { startQueue.add(animation); raf.onStart(flushStartQueue); } else { startSafely(animation); raf(advance); } }, advance, sort(animation) { if (priority) { raf.onFrame(() => frameLoop.sort(animation)); } else { const prevIndex = currentFrame.indexOf(animation); if (~prevIndex) { currentFrame.splice(prevIndex, 1); startUnsafely(animation); } } }, clear() { currentFrame = []; startQueue.clear(); } }; function flushStartQueue() { startQueue.forEach(startSafely); startQueue.clear(); raf(advance); } function startSafely(animation) { if (!currentFrame.includes(animation)) startUnsafely(animation); } function startUnsafely(animation) { currentFrame.splice(findIndex(currentFrame, (other) => other.priority > animation.priority), 0, animation); } function advance(dt) { const nextFrame = prevFrame; for (let i3 = 0; i3 < currentFrame.length; i3++) { const animation = currentFrame[i3]; priority = animation.priority; if (!animation.idle) { willAdvance(animation); animation.advance(dt); if (!animation.idle) { nextFrame.push(animation); } } } priority = 0; prevFrame = currentFrame; prevFrame.length = 0; currentFrame = nextFrame; return currentFrame.length > 0; } function findIndex(arr, test) { const index2 = arr.findIndex(test); return index2 < 0 ? arr.length : index2; } var colors = { transparent: 0, aliceblue: 4042850303, antiquewhite: 4209760255, aqua: 16777215, aquamarine: 2147472639, azure: 4043309055, beige: 4126530815, bisque: 4293182719, black: 255, blanchedalmond: 4293643775, blue: 65535, blueviolet: 2318131967, brown: 2771004159, burlywood: 3736635391, burntsienna: 3934150143, cadetblue: 1604231423, chartreuse: 2147418367, chocolate: 3530104575, coral: 4286533887, cornflowerblue: 1687547391, cornsilk: 4294499583, crimson: 3692313855, cyan: 16777215, darkblue: 35839, darkcyan: 9145343, darkgoldenrod: 3095792639, darkgray: 2846468607, darkgreen: 6553855, darkgrey: 2846468607, darkkhaki: 3182914559, darkmagenta: 2332068863, darkolivegreen: 1433087999, darkorange: 4287365375, darkorchid: 2570243327, darkred: 2332033279, darksalmon: 3918953215, darkseagreen: 2411499519, darkslateblue: 1211993087, darkslategray: 793726975, darkslategrey: 793726975, darkturquoise: 13554175, darkviolet: 2483082239, deeppink: 4279538687, deepskyblue: 12582911, dimgray: 1768516095, dimgrey: 1768516095, dodgerblue: 512819199, firebrick: 2988581631, floralwhite: 4294635775, forestgreen: 579543807, fuchsia: 4278255615, gainsboro: 3705462015, ghostwhite: 4177068031, gold: 4292280575, goldenrod: 3668254975, gray: 2155905279, green: 8388863, greenyellow: 2919182335, grey: 2155905279, honeydew: 4043305215, hotpink: 4285117695, indianred: 3445382399, indigo: 1258324735, ivory: 4294963455, khaki: 4041641215, lavender: 3873897215, lavenderblush: 4293981695, lawngreen: 2096890111, lemonchiffon: 4294626815, lightblue: 2916673279, lightcoral: 4034953471, lightcyan: 3774873599, lightgoldenrodyellow: 4210742015, lightgray: 3553874943, lightgreen: 2431553791, lightgrey: 3553874943, lightpink: 4290167295, lightsalmon: 4288707327, lightseagreen: 548580095, lightskyblue: 2278488831, lightslategray: 2005441023, lightslategrey: 2005441023, lightsteelblue: 2965692159, lightyellow: 4294959359, lime: 16711935, limegreen: 852308735, linen: 4210091775, magenta: 4278255615, maroon: 2147483903, mediumaquamarine: 1724754687, mediumblue: 52735, mediumorchid: 3126187007, mediumpurple: 2473647103, mediumseagreen: 1018393087, mediumslateblue: 2070474495, mediumspringgreen: 16423679, mediumturquoise: 1221709055, mediumvioletred: 3340076543, midnightblue: 421097727, mintcream: 4127193855, mistyrose: 4293190143, moccasin: 4293178879, navajowhite: 4292783615, navy: 33023, oldlace: 4260751103, olive: 2155872511, olivedrab: 1804477439, orange: 4289003775, orangered: 4282712319, orchid: 3664828159, palegoldenrod: 4008225535, palegreen: 2566625535, paleturquoise: 2951671551, palevioletred: 3681588223, papayawhip: 4293907967, peachpuff: 4292524543, peru: 3448061951, pink: 4290825215, plum: 3718307327, powderblue: 2967529215, purple: 2147516671, rebeccapurple: 1714657791, red: 4278190335, rosybrown: 3163525119, royalblue: 1097458175, saddlebrown: 2336560127, salmon: 4202722047, sandybrown: 4104413439, seagreen: 780883967, seashell: 4294307583, sienna: 2689740287, silver: 3233857791, skyblue: 2278484991, slateblue: 1784335871, slategray: 1887473919, slategrey: 1887473919, snow: 4294638335, springgreen: 16744447, steelblue: 1182971135, tan: 3535047935, teal: 8421631, thistle: 3636451583, tomato: 4284696575, turquoise: 1088475391, violet: 4001558271, wheat: 4125012991, white: 4294967295, whitesmoke: 4126537215, yellow: 4294902015, yellowgreen: 2597139199 }; var NUMBER = "[-+]?\\d*\\.?\\d+"; var PERCENTAGE = NUMBER + "%"; function call(...parts) { return "\\(\\s*(" + parts.join(")\\s*,\\s*(") + ")\\s*\\)"; } var rgb = new RegExp("rgb" + call(NUMBER, NUMBER, NUMBER)); var rgba = new RegExp("rgba" + call(NUMBER, NUMBER, NUMBER, NUMBER)); var hsl = new RegExp("hsl" + call(NUMBER, PERCENTAGE, PERCENTAGE)); var hsla = new RegExp("hsla" + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER)); var hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/; var hex4 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/; var hex6 = /^#([0-9a-fA-F]{6})$/; var hex8 = /^#([0-9a-fA-F]{8})$/; function normalizeColor(color) { let match3; if (typeof color === "number") { return color >>> 0 === color && color >= 0 && color <= 4294967295 ? color : null; } if (match3 = hex6.exec(color)) return parseInt(match3[1] + "ff", 16) >>> 0; if (colors$1 && colors$1[color] !== void 0) { return colors$1[color]; } if (match3 = rgb.exec(color)) { return (parse255(match3[1]) << 24 | parse255(match3[2]) << 16 | parse255(match3[3]) << 8 | 255) >>> 0; } if (match3 = rgba.exec(color)) { return (parse255(match3[1]) << 24 | parse255(match3[2]) << 16 | parse255(match3[3]) << 8 | parse1(match3[4])) >>> 0; } if (match3 = hex3.exec(color)) { return parseInt(match3[1] + match3[1] + match3[2] + match3[2] + match3[3] + match3[3] + "ff", 16) >>> 0; } if (match3 = hex8.exec(color)) return parseInt(match3[1], 16) >>> 0; if (match3 = hex4.exec(color)) { return parseInt(match3[1] + match3[1] + match3[2] + match3[2] + match3[3] + match3[3] + match3[4] + match3[4], 16) >>> 0; } if (match3 = hsl.exec(color)) { return (hslToRgb(parse360(match3[1]), parsePercentage(match3[2]), parsePercentage(match3[3])) | 255) >>> 0; } if (match3 = hsla.exec(color)) { return (hslToRgb(parse360(match3[1]), parsePercentage(match3[2]), parsePercentage(match3[3])) | parse1(match3[4])) >>> 0; } return null; } function hue2rgb(p4, q, t4) { if (t4 < 0) t4 += 1; if (t4 > 1) t4 -= 1; if (t4 < 1 / 6) return p4 + (q - p4) * 6 * t4; if (t4 < 1 / 2) return q; if (t4 < 2 / 3) return p4 + (q - p4) * (2 / 3 - t4) * 6; return p4; } function hslToRgb(h3, s3, l3) { const q = l3 < 0.5 ? l3 * (1 + s3) : l3 + s3 - l3 * s3; const p4 = 2 * l3 - q; const r4 = hue2rgb(p4, q, h3 + 1 / 3); const g3 = hue2rgb(p4, q, h3); const b3 = hue2rgb(p4, q, h3 - 1 / 3); return Math.round(r4 * 255) << 24 | Math.round(g3 * 255) << 16 | Math.round(b3 * 255) << 8; } function parse255(str) { const int = parseInt(str, 10); if (int < 0) return 0; if (int > 255) return 255; return int; } function parse360(str) { const int = parseFloat(str); return (int % 360 + 360) % 360 / 360; } function parse1(str) { const num = parseFloat(str); if (num < 0) return 0; if (num > 1) return 255; return Math.round(num * 255); } function parsePercentage(str) { const int = parseFloat(str); if (int < 0) return 0; if (int > 100) return 1; return int / 100; } function colorToRgba(input) { let int32Color = normalizeColor(input); if (int32Color === null) return input; int32Color = int32Color || 0; let r4 = (int32Color & 4278190080) >>> 24; let g3 = (int32Color & 16711680) >>> 16; let b3 = (int32Color & 65280) >>> 8; let a3 = (int32Color & 255) / 255; return `rgba(${r4}, ${g3}, ${b3}, ${a3})`; } var createInterpolator = (range, output, extrapolate) => { if (is.fun(range)) { return range; } if (is.arr(range)) { return createInterpolator({ range, output, extrapolate }); } if (is.str(range.output[0])) { return createStringInterpolator$1(range); } const config2 = range; const outputRange = config2.output; const inputRange = config2.range || [0, 1]; const extrapolateLeft = config2.extrapolateLeft || config2.extrapolate || "extend"; const extrapolateRight = config2.extrapolateRight || config2.extrapolate || "extend"; const easing = config2.easing || ((t4) => t4); return (input) => { const range2 = findRange(input, inputRange); return interpolate(input, inputRange[range2], inputRange[range2 + 1], outputRange[range2], outputRange[range2 + 1], easing, extrapolateLeft, extrapolateRight, config2.map); }; }; function interpolate(input, inputMin, inputMax, outputMin, outputMax, easing, extrapolateLeft, extrapolateRight, map) { let result = map ? map(input) : input; if (result < inputMin) { if (extrapolateLeft === "identity") return result; else if (extrapolateLeft === "clamp") result = inputMin; } if (result > inputMax) { if (extrapolateRight === "identity") return result; else if (extrapolateRight === "clamp") result = inputMax; } if (outputMin === outputMax) return outputMin; if (inputMin === inputMax) return input <= inputMin ? outputMin : outputMax; if (inputMin === -Infinity) result = -result; else if (inputMax === Infinity) result = result - inputMin; else result = (result - inputMin) / (inputMax - inputMin); result = easing(result); if (outputMin === -Infinity) result = -result; else if (outputMax === Infinity) result = result + outputMin; else result = result * (outputMax - outputMin) + outputMin; return result; } function findRange(input, inputRange) { for (var i3 = 1; i3 < inputRange.length - 1; ++i3) if (inputRange[i3] >= input) break; return i3 - 1; } function _extends() { _extends = Object.assign ? Object.assign.bind() : function(target) { for (var i3 = 1; i3 < arguments.length; i3++) { var source = arguments[i3]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } var $get = /* @__PURE__ */ Symbol.for("FluidValue.get"); var $observers = /* @__PURE__ */ Symbol.for("FluidValue.observers"); var hasFluidValue = (arg) => Boolean(arg && arg[$get]); var getFluidValue = (arg) => arg && arg[$get] ? arg[$get]() : arg; var getFluidObservers = (target) => target[$observers] || null; function callFluidObserver(observer, event) { if (observer.eventObserved) { observer.eventObserved(event); } else { observer(event); } } function callFluidObservers(target, event) { let observers = target[$observers]; if (observers) { observers.forEach((observer) => { callFluidObserver(observer, event); }); } } var FluidValue = class { constructor(get) { this[$get] = void 0; this[$observers] = void 0; if (!get && !(get = this.get)) { throw Error("Unknown getter"); } setFluidGetter(this, get); } }; var setFluidGetter = (target, get) => setHidden(target, $get, get); function addFluidObserver(target, observer) { if (target[$get]) { let observers = target[$observers]; if (!observers) { setHidden(target, $observers, observers = /* @__PURE__ */ new Set()); } if (!observers.has(observer)) { observers.add(observer); if (target.observerAdded) { target.observerAdded(observers.size, observer); } } } return observer; } function removeFluidObserver(target, observer) { let observers = target[$observers]; if (observers && observers.has(observer)) { const count = observers.size - 1; if (count) { observers.delete(observer); } else { target[$observers] = null; } if (target.observerRemoved) { target.observerRemoved(count, observer); } } } var setHidden = (target, key, value) => Object.defineProperty(target, key, { value, writable: true, configurable: true }); var numberRegex = /[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?/g; var colorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d\.]+%?\))/gi; var unitRegex = new RegExp(`(${numberRegex.source})(%|[a-z]+)`, "i"); var rgbaRegex = /rgba\(([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+)\)/gi; var cssVariableRegex = /var\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\)/; var variableToRgba = (input) => { const [token, fallback] = parseCSSVariable(input); if (!token || isSSR()) { return input; } const value = window.getComputedStyle(document.documentElement).getPropertyValue(token); if (value) { return value.trim(); } else if (fallback && fallback.startsWith("--")) { const _value = window.getComputedStyle(document.documentElement).getPropertyValue(fallback); if (_value) { return _value; } else { return input; } } else if (fallback && cssVariableRegex.test(fallback)) { return variableToRgba(fallback); } else if (fallback) { return fallback; } return input; }; var parseCSSVariable = (current) => { const match3 = cssVariableRegex.exec(current); if (!match3) return [,]; const [, token, fallback] = match3; return [token, fallback]; }; var namedColorRegex; var rgbaRound = (_, p1, p22, p32, p4) => `rgba(${Math.round(p1)}, ${Math.round(p22)}, ${Math.round(p32)}, ${p4})`; var createStringInterpolator = (config2) => { if (!namedColorRegex) namedColorRegex = colors$1 ? new RegExp(`(${Object.keys(colors$1).join("|")})(?!\\w)`, "g") : /^\b$/; const output = config2.output.map((value) => { return getFluidValue(value).replace(cssVariableRegex, variableToRgba).replace(colorRegex, colorToRgba).replace(namedColorRegex, colorToRgba); }); const keyframes = output.map((value) => value.match(numberRegex).map(Number)); const outputRanges = keyframes[0].map((_, i3) => keyframes.map((values) => { if (!(i3 in values)) { throw Error('The arity of each "output" value must be equal'); } return values[i3]; })); const interpolators = outputRanges.map((output2) => createInterpolator(_extends({}, config2, { output: output2 }))); return (input) => { var _output$find; const missingUnit = !unitRegex.test(output[0]) && ((_output$find = output.find((value) => unitRegex.test(value))) == null ? void 0 : _output$find.replace(numberRegex, "")); let i3 = 0; return output[0].replace(numberRegex, () => `${interpolators[i3++](input)}${missingUnit || ""}`).replace(rgbaRegex, rgbaRound); }; }; var prefix = "react-spring: "; var once = (fn) => { const func = fn; let called = false; if (typeof func != "function") { throw new TypeError(`${prefix}once requires a function parameter`); } return (...args) => { if (!called) { func(...args); called = true; } }; }; var warnInterpolate = once(console.warn); function deprecateInterpolate() { warnInterpolate(`${prefix}The "interpolate" function is deprecated in v9 (use "to" instead)`); } var warnDirectCall = once(console.warn); function isAnimatedString(value) { return is.str(value) && (value[0] == "#" || /\d/.test(value) || !isSSR() && cssVariableRegex.test(value) || value in (colors$1 || {})); } var useIsomorphicLayoutEffect = isSSR() ? import_react.useEffect : import_react.useLayoutEffect; var useIsMounted = () => { const isMounted = (0, import_react.useRef)(false); useIsomorphicLayoutEffect(() => { isMounted.current = true; return () => { isMounted.current = false; }; }, []); return isMounted; }; function useForceUpdate() { const update4 = (0, import_react.useState)()[1]; const isMounted = useIsMounted(); return () => { if (isMounted.current) { update4(Math.random()); } }; } function useMemoOne(getResult, inputs) { const [initial] = (0, import_react.useState)(() => ({ inputs, result: getResult() })); const committed = (0, import_react.useRef)(); const prevCache = committed.current; let cache = prevCache; if (cache) { const useCache = Boolean(inputs && cache.inputs && areInputsEqual(inputs, cache.inputs)); if (!useCache) { cache = { inputs, result: getResult() }; } } else { cache = initial; } (0, import_react.useEffect)(() => { committed.current = cache; if (prevCache == initial) { initial.inputs = initial.result = void 0; } }, [cache]); return cache.result; } function areInputsEqual(next, prev) { if (next.length !== prev.length) { return false; } for (let i3 = 0; i3 < next.length; i3++) { if (next[i3] !== prev[i3]) { return false; } } return true; } var useOnce = (effect) => (0, import_react.useEffect)(effect, emptyDeps); var emptyDeps = []; // node_modules/@react-spring/core/dist/react-spring-core.esm.js var React2 = __toESM(require_react()); var import_react3 = __toESM(require_react()); // node_modules/@react-spring/animated/dist/react-spring-animated.esm.js var React = __toESM(require_react()); var import_react2 = __toESM(require_react()); var $node = /* @__PURE__ */ Symbol.for("Animated:node"); var isAnimated = (value) => !!value && value[$node] === value; var getAnimated = (owner) => owner && owner[$node]; var setAnimated = (owner, node) => defineHidden(owner, $node, node); var getPayload = (owner) => owner && owner[$node] && owner[$node].getPayload(); var Animated = class { constructor() { this.payload = void 0; setAnimated(this, this); } getPayload() { return this.payload || []; } }; var AnimatedValue = class _AnimatedValue extends Animated { constructor(_value) { super(); this.done = true; this.elapsedTime = void 0; this.lastPosition = void 0; this.lastVelocity = void 0; this.v0 = void 0; this.durationProgress = 0; this._value = _value; if (is.num(this._value)) { this.lastPosition = this._value; } } static create(value) { return new _AnimatedValue(value); } getPayload() { return [this]; } getValue() { return this._value; } setValue(value, step) { if (is.num(value)) { this.lastPosition = value; if (step) { value = Math.round(value / step) * step; if (this.done) { this.lastPosition = value; } } } if (this._value === value) { return false; } this._value = value; return true; } reset() { const { done } = this; this.done = false; if (is.num(this._value)) { this.elapsedTime = 0; this.durationProgress = 0; this.lastPosition = this._value; if (done) this.lastVelocity = null; this.v0 = null; } } }; var AnimatedString = class _AnimatedString extends AnimatedValue { constructor(value) { super(0); this._string = null; this._toString = void 0; this._toString = createInterpolator({ output: [value, value] }); } static create(value) { return new _AnimatedString(value); } getValue() { let value = this._string; return value == null ? this._string = this._toString(this._value) : value; } setValue(value) { if (is.str(value)) { if (value == this._string) { return false; } this._string = value; this._value = 1; } else if (super.setValue(value)) { this._string = null; } else { return false; } return true; } reset(goal) { if (goal) { this._toString = createInterpolator({ output: [this.getValue(), goal] }); } this._value = 0; super.reset(); } }; var TreeContext = { dependencies: null }; var AnimatedObject = class extends Animated { constructor(source) { super(); this.source = source; this.setValue(source); } getValue(animated2) { const values = {}; eachProp(this.source, (source, key) => { if (isAnimated(source)) { values[key] = source.getValue(animated2); } else if (hasFluidValue(source)) { values[key] = getFluidValue(source); } else if (!animated2) { values[key] = source; } }); return values; } setValue(source) { this.source = source; this.payload = this._makePayload(source); } reset() { if (this.payload) { each(this.payload, (node) => node.reset()); } } _makePayload(source) { if (source) { const payload = /* @__PURE__ */ new Set(); eachProp(source, this._addToPayload, payload); return Array.from(payload); } } _addToPayload(source) { if (TreeContext.dependencies && hasFluidValue(source)) { TreeContext.dependencies.add(source); } const payload = getPayload(source); if (payload) { each(payload, (node) => this.add(node)); } } }; var AnimatedArray = class _AnimatedArray extends AnimatedObject { constructor(source) { super(source); } static create(source) { return new _AnimatedArray(source); } getValue() { return this.source.map((node) => node.getValue()); } setValue(source) { const payload = this.getPayload(); if (source.length == payload.length) { return payload.map((node, i3) => node.setValue(source[i3])).some(Boolean); } super.setValue(source.map(makeAnimated)); return true; } }; function makeAnimated(value) { const nodeType = isAnimatedString(value) ? AnimatedString : AnimatedValue; return nodeType.create(value); } function getAnimatedType(value) { const parentNode = getAnimated(value); return parentNode ? parentNode.constructor : is.arr(value) ? AnimatedArray : isAnimatedString(value) ? AnimatedString : AnimatedValue; } function _extends2() { _extends2 = Object.assign ? Object.assign.bind() : function(target) { for (var i3 = 1; i3 < arguments.length; i3++) { var source = arguments[i3]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends2.apply(this, arguments); } var withAnimated = (Component6, host2) => { const hasInstance = !is.fun(Component6) || Component6.prototype && Component6.prototype.isReactComponent; return (0, import_react2.forwardRef)((givenProps, givenRef) => { const instanceRef = (0, import_react2.useRef)(null); const ref = hasInstance && (0, import_react2.useCallback)((value) => { instanceRef.current = updateRef(givenRef, value); }, [givenRef]); const [props, deps] = getAnimatedState(givenProps, host2); const forceUpdate = useForceUpdate(); const callback = () => { const instance = instanceRef.current; if (hasInstance && !instance) { return; } const didUpdate = instance ? host2.applyAnimatedValues(instance, props.getValue(true)) : false; if (didUpdate === false) { forceUpdate(); } }; const observer = new PropsObserver(callback, deps); const observerRef = (0, import_react2.useRef)(); useIsomorphicLayoutEffect(() => { observerRef.current = observer; each(deps, (dep) => addFluidObserver(dep, observer)); return () => { if (observerRef.current) { each(observerRef.current.deps, (dep) => removeFluidObserver(dep, observerRef.current)); raf.cancel(observerRef.current.update); } }; }); (0, import_react2.useEffect)(callback, []); useOnce(() => () => { const observer2 = observerRef.current; each(observer2.deps, (dep) => removeFluidObserver(dep, observer2)); }); const usedProps = host2.getComponentProps(props.getValue()); return React.createElement(Component6, _extends2({}, usedProps, { ref })); }); }; var PropsObserver = class { constructor(update4, deps) { this.update = update4; this.deps = deps; } eventObserved(event) { if (event.type == "change") { raf.write(this.update); } } }; function getAnimatedState(props, host2) { const dependencies = /* @__PURE__ */ new Set(); TreeContext.dependencies = dependencies; if (props.style) props = _extends2({}, props, { style: host2.createAnimatedStyle(props.style) }); props = new AnimatedObject(props); TreeContext.dependencies = null; return [props, dependencies]; } function updateRef(ref, value) { if (ref) { if (is.fun(ref)) ref(value); else ref.current = value; } return value; } var cacheKey = /* @__PURE__ */ Symbol.for("AnimatedComponent"); var createHost = (components, { applyAnimatedValues: _applyAnimatedValues = () => false, createAnimatedStyle: _createAnimatedStyle = (style) => new AnimatedObject(style), getComponentProps: _getComponentProps = (props) => props } = {}) => { const hostConfig = { applyAnimatedValues: _applyAnimatedValues, createAnimatedStyle: _createAnimatedStyle, getComponentProps: _getComponentProps }; const animated2 = (Component6) => { const displayName = getDisplayName(Component6) || "Anonymous"; if (is.str(Component6)) { Component6 = animated2[Component6] || (animated2[Component6] = withAnimated(Component6, hostConfig)); } else { Component6 = Component6[cacheKey] || (Component6[cacheKey] = withAnimated(Component6, hostConfig)); } Component6.displayName = `Animated(${displayName})`; return Component6; }; eachProp(components, (Component6, key) => { if (is.arr(components)) { key = getDisplayName(Component6); } animated2[key] = animated2(Component6); }); return { animated: animated2 }; }; var getDisplayName = (arg) => is.str(arg) ? arg : arg && is.str(arg.displayName) ? arg.displayName : is.fun(arg) && arg.name || null; // node_modules/@react-spring/core/dist/react-spring-core.esm.js function _extends3() { _extends3 = Object.assign ? Object.assign.bind() : function(target) { for (var i3 = 1; i3 < arguments.length; i3++) { var source = arguments[i3]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends3.apply(this, arguments); } function callProp(value, ...args) { return is.fun(value) ? value(...args) : value; } var matchProp = (value, key) => value === true || !!(key && value && (is.fun(value) ? value(key) : toArray(value).includes(key))); var resolveProp = (prop, key) => is.obj(prop) ? key && prop[key] : prop; var getDefaultProp = (props, key) => props.default === true ? props[key] : props.default ? props.default[key] : void 0; var noopTransform = (value) => value; var getDefaultProps = (props, transform = noopTransform) => { let keys = DEFAULT_PROPS; if (props.default && props.default !== true) { props = props.default; keys = Object.keys(props); } const defaults2 = {}; for (const key of keys) { const value = transform(props[key], key); if (!is.und(value)) { defaults2[key] = value; } } return defaults2; }; var DEFAULT_PROPS = ["config", "onProps", "onStart", "onChange", "onPause", "onResume", "onRest"]; var RESERVED_PROPS = { config: 1, from: 1, to: 1, ref: 1, loop: 1, reset: 1, pause: 1, cancel: 1, reverse: 1, immediate: 1, default: 1, delay: 1, onProps: 1, onStart: 1, onChange: 1, onPause: 1, onResume: 1, onRest: 1, onResolve: 1, items: 1, trail: 1, sort: 1, expires: 1, initial: 1, enter: 1, update: 1, leave: 1, children: 1, onDestroyed: 1, keys: 1, callId: 1, parentId: 1 }; function getForwardProps(props) { const forward = {}; let count = 0; eachProp(props, (value, prop) => { if (!RESERVED_PROPS[prop]) { forward[prop] = value; count++; } }); if (count) { return forward; } } function inferTo(props) { const to2 = getForwardProps(props); if (to2) { const out = { to: to2 }; eachProp(props, (val, key) => key in to2 || (out[key] = val)); return out; } return _extends3({}, props); } function computeGoal(value) { value = getFluidValue(value); return is.arr(value) ? value.map(computeGoal) : isAnimatedString(value) ? globals.createStringInterpolator({ range: [0, 1], output: [value, value] })(1) : value; } function isAsyncTo(to2) { return is.fun(to2) || is.arr(to2) && is.obj(to2[0]); } var config = { default: { tension: 170, friction: 26 }, gentle: { tension: 120, friction: 14 }, wobbly: { tension: 180, friction: 12 }, stiff: { tension: 210, friction: 20 }, slow: { tension: 280, friction: 60 }, molasses: { tension: 280, friction: 120 } }; var c1 = 1.70158; var c2 = c1 * 1.525; var c3 = c1 + 1; var c4 = 2 * Math.PI / 3; var c5 = 2 * Math.PI / 4.5; var bounceOut = (x2) => { const n1 = 7.5625; const d1 = 2.75; if (x2 < 1 / d1) { return n1 * x2 * x2; } else if (x2 < 2 / d1) { return n1 * (x2 -= 1.5 / d1) * x2 + 0.75; } else if (x2 < 2.5 / d1) { return n1 * (x2 -= 2.25 / d1) * x2 + 0.9375; } else { return n1 * (x2 -= 2.625 / d1) * x2 + 0.984375; } }; var easings = { linear: (x2) => x2, easeInQuad: (x2) => x2 * x2, easeOutQuad: (x2) => 1 - (1 - x2) * (1 - x2), easeInOutQuad: (x2) => x2 < 0.5 ? 2 * x2 * x2 : 1 - Math.pow(-2 * x2 + 2, 2) / 2, easeInCubic: (x2) => x2 * x2 * x2, easeOutCubic: (x2) => 1 - Math.pow(1 - x2, 3), easeInOutCubic: (x2) => x2 < 0.5 ? 4 * x2 * x2 * x2 : 1 - Math.pow(-2 * x2 + 2, 3) / 2, easeInQuart: (x2) => x2 * x2 * x2 * x2, easeOutQuart: (x2) => 1 - Math.pow(1 - x2, 4), easeInOutQuart: (x2) => x2 < 0.5 ? 8 * x2 * x2 * x2 * x2 : 1 - Math.pow(-2 * x2 + 2, 4) / 2, easeInQuint: (x2) => x2 * x2 * x2 * x2 * x2, easeOutQuint: (x2) => 1 - Math.pow(1 - x2, 5), easeInOutQuint: (x2) => x2 < 0.5 ? 16 * x2 * x2 * x2 * x2 * x2 : 1 - Math.pow(-2 * x2 + 2, 5) / 2, easeInSine: (x2) => 1 - Math.cos(x2 * Math.PI / 2), easeOutSine: (x2) => Math.sin(x2 * Math.PI / 2), easeInOutSine: (x2) => -(Math.cos(Math.PI * x2) - 1) / 2, easeInExpo: (x2) => x2 === 0 ? 0 : Math.pow(2, 10 * x2 - 10), easeOutExpo: (x2) => x2 === 1 ? 1 : 1 - Math.pow(2, -10 * x2), easeInOutExpo: (x2) => x2 === 0 ? 0 : x2 === 1 ? 1 : x2 < 0.5 ? Math.pow(2, 20 * x2 - 10) / 2 : (2 - Math.pow(2, -20 * x2 + 10)) / 2, easeInCirc: (x2) => 1 - Math.sqrt(1 - Math.pow(x2, 2)), easeOutCirc: (x2) => Math.sqrt(1 - Math.pow(x2 - 1, 2)), easeInOutCirc: (x2) => x2 < 0.5 ? (1 - Math.sqrt(1 - Math.pow(2 * x2, 2))) / 2 : (Math.sqrt(1 - Math.pow(-2 * x2 + 2, 2)) + 1) / 2, easeInBack: (x2) => c3 * x2 * x2 * x2 - c1 * x2 * x2, easeOutBack: (x2) => 1 + c3 * Math.pow(x2 - 1, 3) + c1 * Math.pow(x2 - 1, 2), easeInOutBack: (x2) => x2 < 0.5 ? Math.pow(2 * x2, 2) * ((c2 + 1) * 2 * x2 - c2) / 2 : (Math.pow(2 * x2 - 2, 2) * ((c2 + 1) * (x2 * 2 - 2) + c2) + 2) / 2, easeInElastic: (x2) => x2 === 0 ? 0 : x2 === 1 ? 1 : -Math.pow(2, 10 * x2 - 10) * Math.sin((x2 * 10 - 10.75) * c4), easeOutElastic: (x2) => x2 === 0 ? 0 : x2 === 1 ? 1 : Math.pow(2, -10 * x2) * Math.sin((x2 * 10 - 0.75) * c4) + 1, easeInOutElastic: (x2) => x2 === 0 ? 0 : x2 === 1 ? 1 : x2 < 0.5 ? -(Math.pow(2, 20 * x2 - 10) * Math.sin((20 * x2 - 11.125) * c5)) / 2 : Math.pow(2, -20 * x2 + 10) * Math.sin((20 * x2 - 11.125) * c5) / 2 + 1, easeInBounce: (x2) => 1 - bounceOut(1 - x2), easeOutBounce: bounceOut, easeInOutBounce: (x2) => x2 < 0.5 ? (1 - bounceOut(1 - 2 * x2)) / 2 : (1 + bounceOut(2 * x2 - 1)) / 2 }; var defaults = _extends3({}, config.default, { mass: 1, damping: 1, easing: easings.linear, clamp: false }); var AnimationConfig = class { constructor() { this.tension = void 0; this.friction = void 0; this.frequency = void 0; this.damping = void 0; this.mass = void 0; this.velocity = 0; this.restVelocity = void 0; this.precision = void 0; this.progress = void 0; this.duration = void 0; this.easing = void 0; this.clamp = void 0; this.bounce = void 0; this.decay = void 0; this.round = void 0; Object.assign(this, defaults); } }; function mergeConfig(config2, newConfig, defaultConfig) { if (defaultConfig) { defaultConfig = _extends3({}, defaultConfig); sanitizeConfig(defaultConfig, newConfig); newConfig = _extends3({}, defaultConfig, newConfig); } sanitizeConfig(config2, newConfig); Object.assign(config2, newConfig); for (const key in defaults) { if (config2[key] == null) { config2[key] = defaults[key]; } } let { mass, frequency, damping } = config2; if (!is.und(frequency)) { if (frequency < 0.01) frequency = 0.01; if (damping < 0) damping = 0; config2.tension = Math.pow(2 * Math.PI / frequency, 2) * mass; config2.friction = 4 * Math.PI * damping * mass / frequency; } return config2; } function sanitizeConfig(config2, props) { if (!is.und(props.decay)) { config2.duration = void 0; } else { const isTensionConfig = !is.und(props.tension) || !is.und(props.friction); if (isTensionConfig || !is.und(props.frequency) || !is.und(props.damping) || !is.und(props.mass)) { config2.duration = void 0; config2.decay = void 0; } if (isTensionConfig) { config2.frequency = void 0; } } } var emptyArray = []; var Animation = class { constructor() { this.changed = false; this.values = emptyArray; this.toValues = null; this.fromValues = emptyArray; this.to = void 0; this.from = void 0; this.config = new AnimationConfig(); this.immediate = false; } }; function scheduleProps(callId, { key, props, defaultProps, state, actions: actions2 }) { return new Promise((resolve, reject) => { var _props$cancel; let delay; let timeout; let cancel = matchProp((_props$cancel = props.cancel) != null ? _props$cancel : defaultProps == null ? void 0 : defaultProps.cancel, key); if (cancel) { onStart(); } else { if (!is.und(props.pause)) { state.paused = matchProp(props.pause, key); } let pause = defaultProps == null ? void 0 : defaultProps.pause; if (pause !== true) { pause = state.paused || matchProp(pause, key); } delay = callProp(props.delay || 0, key); if (pause) { state.resumeQueue.add(onResume); actions2.pause(); } else { actions2.resume(); onResume(); } } function onPause() { state.resumeQueue.add(onResume); state.timeouts.delete(timeout); timeout.cancel(); delay = timeout.time - raf.now(); } function onResume() { if (delay > 0 && !globals.skipAnimation) { state.delayed = true; timeout = raf.setTimeout(onStart, delay); state.pauseQueue.add(onPause); state.timeouts.add(timeout); } else { onStart(); } } function onStart() { if (state.delayed) { state.delayed = false; } state.pauseQueue.delete(onPause); state.timeouts.delete(timeout); if (callId <= (state.cancelId || 0)) { cancel = true; } try { actions2.start(_extends3({}, props, { callId, cancel }), resolve); } catch (err) { reject(err); } } }); } var getCombinedResult = (target, results) => results.length == 1 ? results[0] : results.some((result) => result.cancelled) ? getCancelledResult(target.get()) : results.every((result) => result.noop) ? getNoopResult(target.get()) : getFinishedResult(target.get(), results.every((result) => result.finished)); var getNoopResult = (value) => ({ value, noop: true, finished: true, cancelled: false }); var getFinishedResult = (value, finished, cancelled = false) => ({ value, finished, cancelled }); var getCancelledResult = (value) => ({ value, cancelled: true, finished: false }); function runAsync(to2, props, state, target) { const { callId, parentId, onRest } = props; const { asyncTo: prevTo, promise: prevPromise } = state; if (!parentId && to2 === prevTo && !props.reset) { return prevPromise; } return state.promise = (async () => { state.asyncId = callId; state.asyncTo = to2; const defaultProps = getDefaultProps(props, (value, key) => key === "onRest" ? void 0 : value); let preventBail; let bail; const bailPromise = new Promise((resolve, reject) => (preventBail = resolve, bail = reject)); const bailIfEnded = (bailSignal) => { const bailResult = callId <= (state.cancelId || 0) && getCancelledResult(target) || callId !== state.asyncId && getFinishedResult(target, false); if (bailResult) { bailSignal.result = bailResult; bail(bailSignal); throw bailSignal; } }; const animate = (arg1, arg2) => { const bailSignal = new BailSignal(); const skipAnimationSignal = new SkipAniamtionSignal(); return (async () => { if (globals.skipAnimation) { stopAsync(state); skipAnimationSignal.result = getFinishedResult(target, false); bail(skipAnimationSignal); throw skipAnimationSignal; } bailIfEnded(bailSignal); const props2 = is.obj(arg1) ? _extends3({}, arg1) : _extends3({}, arg2, { to: arg1 }); props2.parentId = callId; eachProp(defaultProps, (value, key) => { if (is.und(props2[key])) { props2[key] = value; } }); const result2 = await target.start(props2); bailIfEnded(bailSignal); if (state.paused) { await new Promise((resume) => { state.resumeQueue.add(resume); }); } return result2; })(); }; let result; if (globals.skipAnimation) { stopAsync(state); return getFinishedResult(target, false); } try { let animating; if (is.arr(to2)) { animating = (async (queue) => { for (const props2 of queue) { await animate(props2); } })(to2); } else { animating = Promise.resolve(to2(animate, target.stop.bind(target))); } await Promise.all([animating.then(preventBail), bailPromise]); result = getFinishedResult(target.get(), true, false); } catch (err) { if (err instanceof BailSignal) { result = err.result; } else if (err instanceof SkipAniamtionSignal) { result = err.result; } else { throw err; } } finally { if (callId == state.asyncId) { state.asyncId = parentId; state.asyncTo = parentId ? prevTo : void 0; state.promise = parentId ? prevPromise : void 0; } } if (is.fun(onRest)) { raf.batchedUpdates(() => { onRest(result, target, target.item); }); } return result; })(); } function stopAsync(state, cancelId) { flush(state.timeouts, (t4) => t4.cancel()); state.pauseQueue.clear(); state.resumeQueue.clear(); state.asyncId = state.asyncTo = state.promise = void 0; if (cancelId) state.cancelId = cancelId; } var BailSignal = class extends Error { constructor() { super("An async animation has been interrupted. You see this error because you forgot to use `await` or `.catch(...)` on its returned promise."); this.result = void 0; } }; var SkipAniamtionSignal = class extends Error { constructor() { super("SkipAnimationSignal"); this.result = void 0; } }; var isFrameValue = (value) => value instanceof FrameValue; var nextId$1 = 1; var FrameValue = class extends FluidValue { constructor(...args) { super(...args); this.id = nextId$1++; this.key = void 0; this._priority = 0; } get priority() { return this._priority; } set priority(priority2) { if (this._priority != priority2) { this._priority = priority2; this._onPriorityChange(priority2); } } get() { const node = getAnimated(this); return node && node.getValue(); } to(...args) { return globals.to(this, args); } interpolate(...args) { deprecateInterpolate(); return globals.to(this, args); } toJSON() { return this.get(); } observerAdded(count) { if (count == 1) this._attach(); } observerRemoved(count) { if (count == 0) this._detach(); } _attach() { } _detach() { } _onChange(value, idle = false) { callFluidObservers(this, { type: "change", parent: this, value, idle }); } _onPriorityChange(priority2) { if (!this.idle) { frameLoop.sort(this); } callFluidObservers(this, { type: "priority", parent: this, priority: priority2 }); } }; var $P = /* @__PURE__ */ Symbol.for("SpringPhase"); var HAS_ANIMATED = 1; var IS_ANIMATING = 2; var IS_PAUSED = 4; var hasAnimated = (target) => (target[$P] & HAS_ANIMATED) > 0; var isAnimating = (target) => (target[$P] & IS_ANIMATING) > 0; var isPaused = (target) => (target[$P] & IS_PAUSED) > 0; var setActiveBit = (target, active) => active ? target[$P] |= IS_ANIMATING | HAS_ANIMATED : target[$P] &= ~IS_ANIMATING; var setPausedBit = (target, paused) => paused ? target[$P] |= IS_PAUSED : target[$P] &= ~IS_PAUSED; var SpringValue = class extends FrameValue { constructor(arg1, arg2) { super(); this.key = void 0; this.animation = new Animation(); this.queue = void 0; this.defaultProps = {}; this._state = { paused: false, delayed: false, pauseQueue: /* @__PURE__ */ new Set(), resumeQueue: /* @__PURE__ */ new Set(), timeouts: /* @__PURE__ */ new Set() }; this._pendingCalls = /* @__PURE__ */ new Set(); this._lastCallId = 0; this._lastToId = 0; this._memoizedDuration = 0; if (!is.und(arg1) || !is.und(arg2)) { const props = is.obj(arg1) ? _extends3({}, arg1) : _extends3({}, arg2, { from: arg1 }); if (is.und(props.default)) { props.default = true; } this.start(props); } } get idle() { return !(isAnimating(this) || this._state.asyncTo) || isPaused(this); } get goal() { return getFluidValue(this.animation.to); } get velocity() { const node = getAnimated(this); return node instanceof AnimatedValue ? node.lastVelocity || 0 : node.getPayload().map((node2) => node2.lastVelocity || 0); } get hasAnimated() { return hasAnimated(this); } get isAnimating() { return isAnimating(this); } get isPaused() { return isPaused(this); } get isDelayed() { return this._state.delayed; } advance(dt) { let idle = true; let changed = false; const anim = this.animation; let { config: config2, toValues } = anim; const payload = getPayload(anim.to); if (!payload && hasFluidValue(anim.to)) { toValues = toArray(getFluidValue(anim.to)); } anim.values.forEach((node2, i3) => { if (node2.done) return; const to2 = node2.constructor == AnimatedString ? 1 : payload ? payload[i3].lastPosition : toValues[i3]; let finished = anim.immediate; let position = to2; if (!finished) { position = node2.lastPosition; if (config2.tension <= 0) { node2.done = true; return; } let elapsed = node2.elapsedTime += dt; const from = anim.fromValues[i3]; const v0 = node2.v0 != null ? node2.v0 : node2.v0 = is.arr(config2.velocity) ? config2.velocity[i3] : config2.velocity; let velocity; const precision = config2.precision || (from == to2 ? 5e-3 : Math.min(1, Math.abs(to2 - from) * 1e-3)); if (!is.und(config2.duration)) { let p4 = 1; if (config2.duration > 0) { if (this._memoizedDuration !== config2.duration) { this._memoizedDuration = config2.duration; if (node2.durationProgress > 0) { node2.elapsedTime = config2.duration * node2.durationProgress; elapsed = node2.elapsedTime += dt; } } p4 = (config2.progress || 0) + elapsed / this._memoizedDuration; p4 = p4 > 1 ? 1 : p4 < 0 ? 0 : p4; node2.durationProgress = p4; } position = from + config2.easing(p4) * (to2 - from); velocity = (position - node2.lastPosition) / dt; finished = p4 == 1; } else if (config2.decay) { const decay = config2.decay === true ? 0.998 : config2.decay; const e3 = Math.exp(-(1 - decay) * elapsed); position = from + v0 / (1 - decay) * (1 - e3); finished = Math.abs(node2.lastPosition - position) <= precision; velocity = v0 * e3; } else { velocity = node2.lastVelocity == null ? v0 : node2.lastVelocity; const restVelocity = config2.restVelocity || precision / 10; const bounceFactor = config2.clamp ? 0 : config2.bounce; const canBounce = !is.und(bounceFactor); const isGrowing = from == to2 ? node2.v0 > 0 : from < to2; let isMoving; let isBouncing = false; const step = 1; const numSteps = Math.ceil(dt / step); for (let n3 = 0; n3 < numSteps; ++n3) { isMoving = Math.abs(velocity) > restVelocity; if (!isMoving) { finished = Math.abs(to2 - position) <= precision; if (finished) { break; } } if (canBounce) { isBouncing = position == to2 || position > to2 == isGrowing; if (isBouncing) { velocity = -velocity * bounceFactor; position = to2; } } const springForce = -config2.tension * 1e-6 * (position - to2); const dampingForce = -config2.friction * 1e-3 * velocity; const acceleration = (springForce + dampingForce) / config2.mass; velocity = velocity + acceleration * step; position = position + velocity * step; } } node2.lastVelocity = velocity; if (Number.isNaN(position)) { console.warn(`Got NaN while animating:`, this); finished = true; } } if (payload && !payload[i3].done) { finished = false; } if (finished) { node2.done = true; } else { idle = false; } if (node2.setValue(position, config2.round)) { changed = true; } }); const node = getAnimated(this); const currVal = node.getValue(); if (idle) { const finalVal = getFluidValue(anim.to); if ((currVal !== finalVal || changed) && !config2.decay) { node.setValue(finalVal); this._onChange(finalVal); } else if (changed && config2.decay) { this._onChange(currVal); } this._stop(); } else if (changed) { this._onChange(currVal); } } set(value) { raf.batchedUpdates(() => { this._stop(); this._focus(value); this._set(value); }); return this; } pause() { this._update({ pause: true }); } resume() { this._update({ pause: false }); } finish() { if (isAnimating(this)) { const { to: to2, config: config2 } = this.animation; raf.batchedUpdates(() => { this._onStart(); if (!config2.decay) { this._set(to2, false); } this._stop(); }); } return this; } update(props) { const queue = this.queue || (this.queue = []); queue.push(props); return this; } start(to2, arg2) { let queue; if (!is.und(to2)) { queue = [is.obj(to2) ? to2 : _extends3({}, arg2, { to: to2 })]; } else { queue = this.queue || []; this.queue = []; } return Promise.all(queue.map((props) => { const up = this._update(props); return up; })).then((results) => getCombinedResult(this, results)); } stop(cancel) { const { to: to2 } = this.animation; this._focus(this.get()); stopAsync(this._state, cancel && this._lastCallId); raf.batchedUpdates(() => this._stop(to2, cancel)); return this; } reset() { this._update({ reset: true }); } eventObserved(event) { if (event.type == "change") { this._start(); } else if (event.type == "priority") { this.priority = event.priority + 1; } } _prepareNode(props) { const key = this.key || ""; let { to: to2, from } = props; to2 = is.obj(to2) ? to2[key] : to2; if (to2 == null || isAsyncTo(to2)) { to2 = void 0; } from = is.obj(from) ? from[key] : from; if (from == null) { from = void 0; } const range = { to: to2, from }; if (!hasAnimated(this)) { if (props.reverse) [to2, from] = [from, to2]; from = getFluidValue(from); if (!is.und(from)) { this._set(from); } else if (!getAnimated(this)) { this._set(to2); } } return range; } _update(_ref, isLoop) { let props = _extends3({}, _ref); const { key, defaultProps } = this; if (props.default) Object.assign(defaultProps, getDefaultProps(props, (value, prop) => /^on/.test(prop) ? resolveProp(value, key) : value)); mergeActiveFn(this, props, "onProps"); sendEvent(this, "onProps", props, this); const range = this._prepareNode(props); if (Object.isFrozen(this)) { throw Error("Cannot animate a `SpringValue` object that is frozen. Did you forget to pass your component to `animated(...)` before animating its props?"); } const state = this._state; return scheduleProps(++this._lastCallId, { key, props, defaultProps, state, actions: { pause: () => { if (!isPaused(this)) { setPausedBit(this, true); flushCalls(state.pauseQueue); sendEvent(this, "onPause", getFinishedResult(this, checkFinished(this, this.animation.to)), this); } }, resume: () => { if (isPaused(this)) { setPausedBit(this, false); if (isAnimating(this)) { this._resume(); } flushCalls(state.resumeQueue); sendEvent(this, "onResume", getFinishedResult(this, checkFinished(this, this.animation.to)), this); } }, start: this._merge.bind(this, range) } }).then((result) => { if (props.loop && result.finished && !(isLoop && result.noop)) { const nextProps = createLoopUpdate(props); if (nextProps) { return this._update(nextProps, true); } } return result; }); } _merge(range, props, resolve) { if (props.cancel) { this.stop(true); return resolve(getCancelledResult(this)); } const hasToProp = !is.und(range.to); const hasFromProp = !is.und(range.from); if (hasToProp || hasFromProp) { if (props.callId > this._lastToId) { this._lastToId = props.callId; } else { return resolve(getCancelledResult(this)); } } const { key, defaultProps, animation: anim } = this; const { to: prevTo, from: prevFrom } = anim; let { to: to2 = prevTo, from = prevFrom } = range; if (hasFromProp && !hasToProp && (!props.default || is.und(to2))) { to2 = from; } if (props.reverse) [to2, from] = [from, to2]; const hasFromChanged = !isEqual(from, prevFrom); if (hasFromChanged) { anim.from = from; } from = getFluidValue(from); const hasToChanged = !isEqual(to2, prevTo); if (hasToChanged) { this._focus(to2); } const hasAsyncTo = isAsyncTo(props.to); const { config: config2 } = anim; const { decay, velocity } = config2; if (hasToProp || hasFromProp) { config2.velocity = 0; } if (props.config && !hasAsyncTo) { mergeConfig(config2, callProp(props.config, key), props.config !== defaultProps.config ? callProp(defaultProps.config, key) : void 0); } let node = getAnimated(this); if (!node || is.und(to2)) { return resolve(getFinishedResult(this, true)); } const reset = is.und(props.reset) ? hasFromProp && !props.default : !is.und(from) && matchProp(props.reset, key); const value = reset ? from : this.get(); const goal = computeGoal(to2); const isAnimatable = is.num(goal) || is.arr(goal) || isAnimatedString(goal); const immediate = !hasAsyncTo && (!isAnimatable || matchProp(defaultProps.immediate || props.immediate, key)); if (hasToChanged) { const nodeType = getAnimatedType(to2); if (nodeType !== node.constructor) { if (immediate) { node = this._set(goal); } else throw Error(`Cannot animate between ${node.constructor.name} and ${nodeType.name}, as the "to" prop suggests`); } } const goalType = node.constructor; let started = hasFluidValue(to2); let finished = false; if (!started) { const hasValueChanged = reset || !hasAnimated(this) && hasFromChanged; if (hasToChanged || hasValueChanged) { finished = isEqual(computeGoal(value), goal); started = !finished; } if (!isEqual(anim.immediate, immediate) && !immediate || !isEqual(config2.decay, decay) || !isEqual(config2.velocity, velocity)) { started = true; } } if (finished && isAnimating(this)) { if (anim.changed && !reset) { started = true; } else if (!started) { this._stop(prevTo); } } if (!hasAsyncTo) { if (started || hasFluidValue(prevTo)) { anim.values = node.getPayload(); anim.toValues = hasFluidValue(to2) ? null : goalType == AnimatedString ? [1] : toArray(goal); } if (anim.immediate != immediate) { anim.immediate = immediate; if (!immediate && !reset) { this._set(prevTo); } } if (started) { const { onRest } = anim; each(ACTIVE_EVENTS, (type) => mergeActiveFn(this, props, type)); const result = getFinishedResult(this, checkFinished(this, prevTo)); flushCalls(this._pendingCalls, result); this._pendingCalls.add(resolve); if (anim.changed) raf.batchedUpdates(() => { anim.changed = !reset; onRest == null ? void 0 : onRest(result, this); if (reset) { callProp(defaultProps.onRest, result); } else { anim.onStart == null ? void 0 : anim.onStart(result, this); } }); } } if (reset) { this._set(value); } if (hasAsyncTo) { resolve(runAsync(props.to, props, this._state, this)); } else if (started) { this._start(); } else if (isAnimating(this) && !hasToChanged) { this._pendingCalls.add(resolve); } else { resolve(getNoopResult(value)); } } _focus(value) { const anim = this.animation; if (value !== anim.to) { if (getFluidObservers(this)) { this._detach(); } anim.to = value; if (getFluidObservers(this)) { this._attach(); } } } _attach() { let priority2 = 0; const { to: to2 } = this.animation; if (hasFluidValue(to2)) { addFluidObserver(to2, this); if (isFrameValue(to2)) { priority2 = to2.priority + 1; } } this.priority = priority2; } _detach() { const { to: to2 } = this.animation; if (hasFluidValue(to2)) { removeFluidObserver(to2, this); } } _set(arg, idle = true) { const value = getFluidValue(arg); if (!is.und(value)) { const oldNode = getAnimated(this); if (!oldNode || !isEqual(value, oldNode.getValue())) { const nodeType = getAnimatedType(value); if (!oldNode || oldNode.constructor != nodeType) { setAnimated(this, nodeType.create(value)); } else { oldNode.setValue(value); } if (oldNode) { raf.batchedUpdates(() => { this._onChange(value, idle); }); } } } return getAnimated(this); } _onStart() { const anim = this.animation; if (!anim.changed) { anim.changed = true; sendEvent(this, "onStart", getFinishedResult(this, checkFinished(this, anim.to)), this); } } _onChange(value, idle) { if (!idle) { this._onStart(); callProp(this.animation.onChange, value, this); } callProp(this.defaultProps.onChange, value, this); super._onChange(value, idle); } _start() { const anim = this.animation; getAnimated(this).reset(getFluidValue(anim.to)); if (!anim.immediate) { anim.fromValues = anim.values.map((node) => node.lastPosition); } if (!isAnimating(this)) { setActiveBit(this, true); if (!isPaused(this)) { this._resume(); } } } _resume() { if (globals.skipAnimation) { this.finish(); } else { frameLoop.start(this); } } _stop(goal, cancel) { if (isAnimating(this)) { setActiveBit(this, false); const anim = this.animation; each(anim.values, (node) => { node.done = true; }); if (anim.toValues) { anim.onChange = anim.onPause = anim.onResume = void 0; } callFluidObservers(this, { type: "idle", parent: this }); const result = cancel ? getCancelledResult(this.get()) : getFinishedResult(this.get(), checkFinished(this, goal != null ? goal : anim.to)); flushCalls(this._pendingCalls, result); if (anim.changed) { anim.changed = false; sendEvent(this, "onRest", result, this); } } } }; function checkFinished(target, to2) { const goal = computeGoal(to2); const value = computeGoal(target.get()); return isEqual(value, goal); } function createLoopUpdate(props, loop2 = props.loop, to2 = props.to) { let loopRet = callProp(loop2); if (loopRet) { const overrides = loopRet !== true && inferTo(loopRet); const reverse = (overrides || props).reverse; const reset = !overrides || overrides.reset; return createUpdate(_extends3({}, props, { loop: loop2, default: false, pause: void 0, to: !reverse || isAsyncTo(to2) ? to2 : void 0, from: reset ? props.from : void 0, reset }, overrides)); } } function createUpdate(props) { const { to: to2, from } = props = inferTo(props); const keys = /* @__PURE__ */ new Set(); if (is.obj(to2)) findDefined(to2, keys); if (is.obj(from)) findDefined(from, keys); props.keys = keys.size ? Array.from(keys) : null; return props; } function findDefined(values, keys) { eachProp(values, (value, key) => value != null && keys.add(key)); } var ACTIVE_EVENTS = ["onStart", "onRest", "onChange", "onPause", "onResume"]; function mergeActiveFn(target, props, type) { target.animation[type] = props[type] !== getDefaultProp(props, type) ? resolveProp(props[type], target.key) : void 0; } function sendEvent(target, type, ...args) { var _target$animation$typ, _target$animation, _target$defaultProps$, _target$defaultProps; (_target$animation$typ = (_target$animation = target.animation)[type]) == null ? void 0 : _target$animation$typ.call(_target$animation, ...args); (_target$defaultProps$ = (_target$defaultProps = target.defaultProps)[type]) == null ? void 0 : _target$defaultProps$.call(_target$defaultProps, ...args); } var BATCHED_EVENTS = ["onStart", "onChange", "onRest"]; var nextId = 1; var Controller = class { constructor(props, flush2) { this.id = nextId++; this.springs = {}; this.queue = []; this.ref = void 0; this._flush = void 0; this._initialProps = void 0; this._lastAsyncId = 0; this._active = /* @__PURE__ */ new Set(); this._changed = /* @__PURE__ */ new Set(); this._started = false; this._item = void 0; this._state = { paused: false, pauseQueue: /* @__PURE__ */ new Set(), resumeQueue: /* @__PURE__ */ new Set(), timeouts: /* @__PURE__ */ new Set() }; this._events = { onStart: /* @__PURE__ */ new Map(), onChange: /* @__PURE__ */ new Map(), onRest: /* @__PURE__ */ new Map() }; this._onFrame = this._onFrame.bind(this); if (flush2) { this._flush = flush2; } if (props) { this.start(_extends3({ default: true }, props)); } } get idle() { return !this._state.asyncTo && Object.values(this.springs).every((spring) => { return spring.idle && !spring.isDelayed && !spring.isPaused; }); } get item() { return this._item; } set item(item) { this._item = item; } get() { const values = {}; this.each((spring, key) => values[key] = spring.get()); return values; } set(values) { for (const key in values) { const value = values[key]; if (!is.und(value)) { this.springs[key].set(value); } } } update(props) { if (props) { this.queue.push(createUpdate(props)); } return this; } start(props) { let { queue } = this; if (props) { queue = toArray(props).map(createUpdate); } else { this.queue = []; } if (this._flush) { return this._flush(this, queue); } prepareKeys(this, queue); return flushUpdateQueue(this, queue); } stop(arg, keys) { if (arg !== !!arg) { keys = arg; } if (keys) { const springs = this.springs; each(toArray(keys), (key) => springs[key].stop(!!arg)); } else { stopAsync(this._state, this._lastAsyncId); this.each((spring) => spring.stop(!!arg)); } return this; } pause(keys) { if (is.und(keys)) { this.start({ pause: true }); } else { const springs = this.springs; each(toArray(keys), (key) => springs[key].pause()); } return this; } resume(keys) { if (is.und(keys)) { this.start({ pause: false }); } else { const springs = this.springs; each(toArray(keys), (key) => springs[key].resume()); } return this; } each(iterator) { eachProp(this.springs, iterator); } _onFrame() { const { onStart, onChange, onRest } = this._events; const active = this._active.size > 0; const changed = this._changed.size > 0; if (active && !this._started || changed && !this._started) { this._started = true; flush(onStart, ([onStart2, result]) => { result.value = this.get(); onStart2(result, this, this._item); }); } const idle = !active && this._started; const values = changed || idle && onRest.size ? this.get() : null; if (changed && onChange.size) { flush(onChange, ([onChange2, result]) => { result.value = values; onChange2(result, this, this._item); }); } if (idle) { this._started = false; flush(onRest, ([onRest2, result]) => { result.value = values; onRest2(result, this, this._item); }); } } eventObserved(event) { if (event.type == "change") { this._changed.add(event.parent); if (!event.idle) { this._active.add(event.parent); } } else if (event.type == "idle") { this._active.delete(event.parent); } else return; raf.onFrame(this._onFrame); } }; function flushUpdateQueue(ctrl, queue) { return Promise.all(queue.map((props) => flushUpdate(ctrl, props))).then((results) => getCombinedResult(ctrl, results)); } async function flushUpdate(ctrl, props, isLoop) { const { keys, to: to2, from, loop: loop2, onRest, onResolve } = props; const defaults2 = is.obj(props.default) && props.default; if (loop2) { props.loop = false; } if (to2 === false) props.to = null; if (from === false) props.from = null; const asyncTo = is.arr(to2) || is.fun(to2) ? to2 : void 0; if (asyncTo) { props.to = void 0; props.onRest = void 0; if (defaults2) { defaults2.onRest = void 0; } } else { each(BATCHED_EVENTS, (key) => { const handler = props[key]; if (is.fun(handler)) { const queue = ctrl["_events"][key]; props[key] = ({ finished, cancelled }) => { const result2 = queue.get(handler); if (result2) { if (!finished) result2.finished = false; if (cancelled) result2.cancelled = true; } else { queue.set(handler, { value: null, finished: finished || false, cancelled: cancelled || false }); } }; if (defaults2) { defaults2[key] = props[key]; } } }); } const state = ctrl["_state"]; if (props.pause === !state.paused) { state.paused = props.pause; flushCalls(props.pause ? state.pauseQueue : state.resumeQueue); } else if (state.paused) { props.pause = true; } const promises = (keys || Object.keys(ctrl.springs)).map((key) => ctrl.springs[key].start(props)); const cancel = props.cancel === true || getDefaultProp(props, "cancel") === true; if (asyncTo || cancel && state.asyncId) { promises.push(scheduleProps(++ctrl["_lastAsyncId"], { props, state, actions: { pause: noop2, resume: noop2, start(props2, resolve) { if (cancel) { stopAsync(state, ctrl["_lastAsyncId"]); resolve(getCancelledResult(ctrl)); } else { props2.onRest = onRest; resolve(runAsync(asyncTo, props2, state, ctrl)); } } } })); } if (state.paused) { await new Promise((resume) => { state.resumeQueue.add(resume); }); } const result = getCombinedResult(ctrl, await Promise.all(promises)); if (loop2 && result.finished && !(isLoop && result.noop)) { const nextProps = createLoopUpdate(props, loop2, to2); if (nextProps) { prepareKeys(ctrl, [nextProps]); return flushUpdate(ctrl, nextProps, true); } } if (onResolve) { raf.batchedUpdates(() => onResolve(result, ctrl, ctrl.item)); } return result; } function createSpring(key, observer) { const spring = new SpringValue(); spring.key = key; if (observer) { addFluidObserver(spring, observer); } return spring; } function prepareSprings(springs, props, create4) { if (props.keys) { each(props.keys, (key) => { const spring = springs[key] || (springs[key] = create4(key)); spring["_prepareNode"](props); }); } } function prepareKeys(ctrl, queue) { each(queue, (props) => { prepareSprings(ctrl.springs, props, (key) => { return createSpring(key, ctrl); }); }); } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i3; for (i3 = 0; i3 < sourceKeys.length; i3++) { key = sourceKeys[i3]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } var _excluded$3 = ["children"]; var SpringContext = (_ref) => { let { children } = _ref, props = _objectWithoutPropertiesLoose(_ref, _excluded$3); const inherited = (0, import_react3.useContext)(ctx); const pause = props.pause || !!inherited.pause, immediate = props.immediate || !!inherited.immediate; props = useMemoOne(() => ({ pause, immediate }), [pause, immediate]); const { Provider } = ctx; return React2.createElement(Provider, { value: props }, children); }; var ctx = makeContext(SpringContext, {}); SpringContext.Provider = ctx.Provider; SpringContext.Consumer = ctx.Consumer; function makeContext(target, init) { Object.assign(target, React2.createContext(init)); target.Provider._context = target; target.Consumer._context = target; return target; } var TransitionPhase; (function(TransitionPhase2) { TransitionPhase2["MOUNT"] = "mount"; TransitionPhase2["ENTER"] = "enter"; TransitionPhase2["UPDATE"] = "update"; TransitionPhase2["LEAVE"] = "leave"; })(TransitionPhase || (TransitionPhase = {})); var Interpolation = class extends FrameValue { constructor(source, args) { super(); this.key = void 0; this.idle = true; this.calc = void 0; this._active = /* @__PURE__ */ new Set(); this.source = source; this.calc = createInterpolator(...args); const value = this._get(); const nodeType = getAnimatedType(value); setAnimated(this, nodeType.create(value)); } advance(_dt) { const value = this._get(); const oldValue = this.get(); if (!isEqual(value, oldValue)) { getAnimated(this).setValue(value); this._onChange(value, this.idle); } if (!this.idle && checkIdle(this._active)) { becomeIdle(this); } } _get() { const inputs = is.arr(this.source) ? this.source.map(getFluidValue) : toArray(getFluidValue(this.source)); return this.calc(...inputs); } _start() { if (this.idle && !checkIdle(this._active)) { this.idle = false; each(getPayload(this), (node) => { node.done = false; }); if (globals.skipAnimation) { raf.batchedUpdates(() => this.advance()); becomeIdle(this); } else { frameLoop.start(this); } } } _attach() { let priority2 = 1; each(toArray(this.source), (source) => { if (hasFluidValue(source)) { addFluidObserver(source, this); } if (isFrameValue(source)) { if (!source.idle) { this._active.add(source); } priority2 = Math.max(priority2, source.priority + 1); } }); this.priority = priority2; this._start(); } _detach() { each(toArray(this.source), (source) => { if (hasFluidValue(source)) { removeFluidObserver(source, this); } }); this._active.clear(); becomeIdle(this); } eventObserved(event) { if (event.type == "change") { if (event.idle) { this.advance(); } else { this._active.add(event.parent); this._start(); } } else if (event.type == "idle") { this._active.delete(event.parent); } else if (event.type == "priority") { this.priority = toArray(this.source).reduce((highest, parent) => Math.max(highest, (isFrameValue(parent) ? parent.priority : 0) + 1), 0); } } }; function isIdle(source) { return source.idle !== false; } function checkIdle(active) { return !active.size || Array.from(active).every(isIdle); } function becomeIdle(self) { if (!self.idle) { self.idle = true; each(getPayload(self), (node) => { node.done = true; }); callFluidObservers(self, { type: "idle", parent: self }); } } globals.assign({ createStringInterpolator, to: (source, args) => new Interpolation(source, args) }); var update2 = frameLoop.advance; // node_modules/@react-spring/web/dist/react-spring-web.esm.js var import_react_dom = __toESM(require_react_dom()); function _objectWithoutPropertiesLoose2(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i3; for (i3 = 0; i3 < sourceKeys.length; i3++) { key = sourceKeys[i3]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } var _excluded$2 = ["style", "children", "scrollTop", "scrollLeft"]; var isCustomPropRE = /^--/; function dangerousStyleValue(name2, value) { if (value == null || typeof value === "boolean" || value === "") return ""; if (typeof value === "number" && value !== 0 && !isCustomPropRE.test(name2) && !(isUnitlessNumber.hasOwnProperty(name2) && isUnitlessNumber[name2])) return value + "px"; return ("" + value).trim(); } var attributeCache = {}; function applyAnimatedValues(instance, props) { if (!instance.nodeType || !instance.setAttribute) { return false; } const isFilterElement = instance.nodeName === "filter" || instance.parentNode && instance.parentNode.nodeName === "filter"; const _ref = props, { style, children, scrollTop, scrollLeft } = _ref, attributes = _objectWithoutPropertiesLoose2(_ref, _excluded$2); const values = Object.values(attributes); const names = Object.keys(attributes).map((name2) => isFilterElement || instance.hasAttribute(name2) ? name2 : attributeCache[name2] || (attributeCache[name2] = name2.replace(/([A-Z])/g, (n3) => "-" + n3.toLowerCase()))); if (children !== void 0) { instance.textContent = children; } for (let name2 in style) { if (style.hasOwnProperty(name2)) { const value = dangerousStyleValue(name2, style[name2]); if (isCustomPropRE.test(name2)) { instance.style.setProperty(name2, value); } else { instance.style[name2] = value; } } } names.forEach((name2, i3) => { instance.setAttribute(name2, values[i3]); }); if (scrollTop !== void 0) { instance.scrollTop = scrollTop; } if (scrollLeft !== void 0) { instance.scrollLeft = scrollLeft; } } var isUnitlessNumber = { animationIterationCount: true, borderImageOutset: true, borderImageSlice: true, borderImageWidth: true, boxFlex: true, boxFlexGroup: true, boxOrdinalGroup: true, columnCount: true, columns: true, flex: true, flexGrow: true, flexPositive: true, flexShrink: true, flexNegative: true, flexOrder: true, gridRow: true, gridRowEnd: true, gridRowSpan: true, gridRowStart: true, gridColumn: true, gridColumnEnd: true, gridColumnSpan: true, gridColumnStart: true, fontWeight: true, lineClamp: true, lineHeight: true, opacity: true, order: true, orphans: true, tabSize: true, widows: true, zIndex: true, zoom: true, fillOpacity: true, floodOpacity: true, stopOpacity: true, strokeDasharray: true, strokeDashoffset: true, strokeMiterlimit: true, strokeOpacity: true, strokeWidth: true }; var prefixKey = (prefix2, key) => prefix2 + key.charAt(0).toUpperCase() + key.substring(1); var prefixes = ["Webkit", "Ms", "Moz", "O"]; isUnitlessNumber = Object.keys(isUnitlessNumber).reduce((acc, prop) => { prefixes.forEach((prefix2) => acc[prefixKey(prefix2, prop)] = acc[prop]); return acc; }, isUnitlessNumber); var _excluded$1 = ["x", "y", "z"]; var domTransforms = /^(matrix|translate|scale|rotate|skew)/; var pxTransforms = /^(translate)/; var degTransforms = /^(rotate|skew)/; var addUnit = (value, unit) => is.num(value) && value !== 0 ? value + unit : value; var isValueIdentity = (value, id) => is.arr(value) ? value.every((v3) => isValueIdentity(v3, id)) : is.num(value) ? value === id : parseFloat(value) === id; var AnimatedStyle = class extends AnimatedObject { constructor(_ref) { let { x: x2, y: y3, z } = _ref, style = _objectWithoutPropertiesLoose2(_ref, _excluded$1); const inputs = []; const transforms = []; if (x2 || y3 || z) { inputs.push([x2 || 0, y3 || 0, z || 0]); transforms.push((xyz) => [`translate3d(${xyz.map((v3) => addUnit(v3, "px")).join(",")})`, isValueIdentity(xyz, 0)]); } eachProp(style, (value, key) => { if (key === "transform") { inputs.push([value || ""]); transforms.push((transform) => [transform, transform === ""]); } else if (domTransforms.test(key)) { delete style[key]; if (is.und(value)) return; const unit = pxTransforms.test(key) ? "px" : degTransforms.test(key) ? "deg" : ""; inputs.push(toArray(value)); transforms.push(key === "rotate3d" ? ([x3, y4, z2, deg]) => [`rotate3d(${x3},${y4},${z2},${addUnit(deg, unit)})`, isValueIdentity(deg, 0)] : (input) => [`${key}(${input.map((v3) => addUnit(v3, unit)).join(",")})`, isValueIdentity(input, key.startsWith("scale") ? 1 : 0)]); } }); if (inputs.length) { style.transform = new FluidTransform(inputs, transforms); } super(style); } }; var FluidTransform = class extends FluidValue { constructor(inputs, transforms) { super(); this._value = null; this.inputs = inputs; this.transforms = transforms; } get() { return this._value || (this._value = this._get()); } _get() { let transform = ""; let identity3 = true; each(this.inputs, (input, i3) => { const arg1 = getFluidValue(input[0]); const [t4, id] = this.transforms[i3](is.arr(arg1) ? arg1 : input.map(getFluidValue)); transform += " " + t4; identity3 = identity3 && id; }); return identity3 ? "none" : transform; } observerAdded(count) { if (count == 1) each(this.inputs, (input) => each(input, (value) => hasFluidValue(value) && addFluidObserver(value, this))); } observerRemoved(count) { if (count == 0) each(this.inputs, (input) => each(input, (value) => hasFluidValue(value) && removeFluidObserver(value, this))); } eventObserved(event) { if (event.type == "change") { this._value = null; } callFluidObservers(this, event); } }; var primitives = ["a", "abbr", "address", "area", "article", "aside", "audio", "b", "base", "bdi", "bdo", "big", "blockquote", "body", "br", "button", "canvas", "caption", "cite", "code", "col", "colgroup", "data", "datalist", "dd", "del", "details", "dfn", "dialog", "div", "dl", "dt", "em", "embed", "fieldset", "figcaption", "figure", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "i", "iframe", "img", "input", "ins", "kbd", "keygen", "label", "legend", "li", "link", "main", "map", "mark", "menu", "menuitem", "meta", "meter", "nav", "noscript", "object", "ol", "optgroup", "option", "output", "p", "param", "picture", "pre", "progress", "q", "rp", "rt", "ruby", "s", "samp", "script", "section", "select", "small", "source", "span", "strong", "style", "sub", "summary", "sup", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "time", "title", "tr", "track", "u", "ul", "var", "video", "wbr", "circle", "clipPath", "defs", "ellipse", "foreignObject", "g", "image", "line", "linearGradient", "mask", "path", "pattern", "polygon", "polyline", "radialGradient", "rect", "stop", "svg", "text", "tspan"]; var _excluded = ["scrollTop", "scrollLeft"]; globals.assign({ batchedUpdates: import_react_dom.unstable_batchedUpdates, createStringInterpolator, colors }); var host = createHost(primitives, { applyAnimatedValues, createAnimatedStyle: (style) => new AnimatedStyle(style), getComponentProps: (_ref) => { let props = _objectWithoutPropertiesLoose2(_ref, _excluded); return props; } }); var animated = host.animated; // packages/fields/build-module/components/media-edit/use-moving-animation.mjs var import_element5 = __toESM(require_element(), 1); function getAbsolutePosition(element) { return { top: element.offsetTop, left: element.offsetLeft }; } function useMovingAnimation(triggerAnimationOnChange) { const ref = (0, import_element5.useRef)(null); const previousRef = (0, import_element5.useRef)(void 0); if (ref.current) { previousRef.current = getAbsolutePosition(ref.current); } (0, import_element5.useLayoutEffect)(() => { const previous = previousRef.current; if (!previous || !ref.current) { return; } if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) { return; } const controller = new Controller({ x: 0, y: 0, config: { mass: 5, tension: 2e3, friction: 200 }, onChange({ value }) { if (!ref.current) { return; } let { x: x22, y: y22 } = value; x22 = Math.round(x22); y22 = Math.round(y22); const finishedMoving = x22 === 0 && y22 === 0; ref.current.style.transform = finishedMoving ? "" : `translate3d(${x22}px,${y22}px,0)`; } }); ref.current.style.transform = ""; const destination = getAbsolutePosition(ref.current); const x2 = Math.round(previous.left - destination.left); const y3 = Math.round(previous.top - destination.top); controller.start({ x: 0, y: 0, from: { x: x2, y: y3 } }); return () => { controller.stop(); controller.set({ x: 0, y: 0 }); }; }, [triggerAnimationOnChange]); return ref; } // packages/fields/build-module/components/media-edit/index.mjs var import_jsx_runtime81 = __toESM(require_jsx_runtime(), 1); var { MediaUploadModal } = unlock2(import_media_utils2.privateApis); function AnimatedMediaItem({ children, index: index2, className }) { const ref = useMovingAnimation(index2); return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("div", { ref, className, children }); } function normalizeValue(value) { if (Array.isArray(value)) { return value; } return value ? [value] : []; } function ConditionalMediaUpload({ render: render4, multiple, ...props }) { const [isModalOpen, setIsModalOpen] = (0, import_element6.useState)(false); if (window.__experimentalDataViewsMediaModal) { return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(import_jsx_runtime81.Fragment, { children: [ render4 && render4({ open: () => setIsModalOpen(true) }), isModalOpen && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( MediaUploadModal, { ...props, multiple, isOpen: isModalOpen, onClose: () => { setIsModalOpen(false); props.onClose?.(); }, onSelect: (media) => { setIsModalOpen(false); props.onSelect?.(media); } } ) ] }); } return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( import_media_utils2.MediaUpload, { ...props, render: render4, multiple: multiple ? "add" : void 0 } ); } function MediaPickerButton({ open, children, label, showTooltip = false, onFilesDrop, attachment, isUploading = false }) { const isBlob = attachment && (0, import_blob.isBlobURL)(attachment.source_url); const mediaPickerButton = /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)( "div", { className: clsx_default("fields__media-edit-picker-button", { "has-attachment": attachment }), role: "button", tabIndex: 0, onClick: () => { if (!isUploading) { open(); } }, onKeyDown: (event) => { if (isUploading) { return; } if (event.key === "Enter" || event.key === " ") { event.preventDefault(); open(); } }, "aria-label": label, "aria-disabled": isUploading, children: [ children, isBlob && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("span", { className: "fields__media-edit-picker-button-spinner", children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_components5.Spinner, {}) }), !isUploading && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( import_components5.DropZone, { onFilesDrop: (files) => onFilesDrop(files, attachment?.id) } ) ] } ); if (!showTooltip) { return mediaPickerButton; } return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_components5.Tooltip, { text: label, placement: "top", children: mediaPickerButton }); } var archiveMimeTypes = [ "application/zip", "application/x-zip-compressed", "application/x-rar-compressed", "application/x-7z-compressed", "application/x-tar", "application/x-gzip" ]; function MediaTitle({ attachment }) { return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_components5.__experimentalTruncate, { className: "fields__media-edit-filename", children: attachment.title.rendered }); } function MediaEditPlaceholder(props) { return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(MediaPickerButton, { ...props, children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("span", { className: "fields__media-edit-placeholder", children: props.label }) }); } function MoveButtons({ itemId, index: index2, totalItems, isUploading, moveItem, orientation = "vertical" }) { const isHorizontal = orientation === "horizontal"; return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(import_jsx_runtime81.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( import_components5.Button, { __next40pxDefaultSize: true, icon: isHorizontal ? chevron_left_default : chevron_up_default, label: isHorizontal ? (0, import_i18n13.__)("Move left") : (0, import_i18n13.__)("Move up"), size: "small", disabled: isUploading || index2 === 0, accessibleWhenDisabled: true, tooltipPosition: "top", onClick: (event) => { event.stopPropagation(); moveItem(itemId, "up"); } } ), /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( import_components5.Button, { __next40pxDefaultSize: true, icon: isHorizontal ? chevron_right_default : chevron_down_default, label: isHorizontal ? (0, import_i18n13.__)("Move right") : (0, import_i18n13.__)("Move down"), size: "small", disabled: isUploading || index2 === totalItems - 1, accessibleWhenDisabled: true, tooltipPosition: "top", onClick: (event) => { event.stopPropagation(); moveItem(itemId, "down"); } } ) ] }); } function MediaPreview({ attachment }) { const url = attachment.source_url; const mimeType = attachment.mime_type || ""; if (mimeType.startsWith("image")) { return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( "img", { className: "fields__media-edit-thumbnail", alt: attachment.alt_text || "", src: url } ); } else if (mimeType.startsWith("audio")) { return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_components5.Icon, { icon: audio_default }); } else if (mimeType.startsWith("video")) { return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_components5.Icon, { icon: video_default }); } else if (archiveMimeTypes.includes(mimeType)) { return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_components5.Icon, { icon: archive_default }); } return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_components5.Icon, { icon: file_default }); } function ExpandedMediaEditAttachments({ allItems, addButtonLabel, multiple, removeItem, moveItem, open, onFilesDrop, isUploading, setTargetItemId }) { return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)( "div", { className: clsx_default("fields__media-edit-expanded", { "is-multiple": multiple, "is-single": !multiple, "is-empty": !allItems?.length }), children: [ allItems?.map((attachment, index2) => { const hasPreviewImage = attachment.mime_type?.startsWith("image"); const isBlob = (0, import_blob.isBlobURL)(attachment.source_url); const attachmentNumericId = attachment.id; return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)( AnimatedMediaItem, { index: index2, className: clsx_default("fields__media-edit-expanded-item", { "has-preview-image": hasPreviewImage }), children: [ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( MediaPickerButton, { open: () => { setTargetItemId(attachmentNumericId); open(); }, label: !isBlob ? (0, import_i18n13.sprintf)( /* translators: %s: The title of the media item. */ (0, import_i18n13.__)("Replace %s"), attachment.title.rendered ) : (0, import_i18n13.__)("Replace"), showTooltip: true, onFilesDrop, attachment, isUploading, children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("div", { className: "fields__media-edit-expanded-preview", children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( import_components5.__experimentalVStack, { spacing: 0, alignment: "center", justify: "center", className: "fields__media-edit-expanded-preview-stack", children: (!isBlob || hasPreviewImage) && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( MediaPreview, { attachment } ) } ) }) } ), !isBlob && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("div", { className: "fields__media-edit-expanded-overlay", children: /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)( import_components5.__experimentalHStack, { className: "fields__media-edit-expanded-actions", spacing: 0, alignment: "flex-end", expanded: false, children: [ multiple && allItems.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( MoveButtons, { itemId: attachmentNumericId, index: index2, totalItems: allItems.length, isUploading, moveItem, orientation: "horizontal" } ), /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( import_components5.Button, { __next40pxDefaultSize: true, icon: close_small_default, label: (0, import_i18n13.__)("Remove"), size: "small", disabled: isUploading, accessibleWhenDisabled: true, tooltipPosition: "top", onClick: (event) => { event.stopPropagation(); removeItem(attachmentNumericId); } } ) ] } ) }) ] }, attachment.id ); }), (multiple || !allItems?.length) && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( MediaEditPlaceholder, { open: () => { setTargetItemId(void 0); open(); }, label: addButtonLabel, onFilesDrop, isUploading } ) ] } ); } function CompactMediaEditAttachments({ allItems, addButtonLabel, multiple, removeItem, moveItem, open, onFilesDrop, isUploading, setTargetItemId }) { return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(import_jsx_runtime81.Fragment, { children: [ !!allItems?.length && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( "div", { className: clsx_default("fields__media-edit-compact-group", { "is-single": allItems.length === 1 }), children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_components5.__experimentalVStack, { spacing: 0, children: allItems.map((attachment, index2) => { const isBlob = (0, import_blob.isBlobURL)(attachment.source_url); const showMoveButtons = multiple && allItems.length > 1; const attachmentNumericId = attachment.id; return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)( AnimatedMediaItem, { index: index2, className: "fields__media-edit-compact", children: [ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( MediaPickerButton, { open: () => { setTargetItemId( attachmentNumericId ); open(); }, label: (0, import_i18n13.__)("Replace"), showTooltip: true, onFilesDrop, attachment, isUploading, children: /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(import_jsx_runtime81.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( MediaPreview, { attachment } ), !isBlob && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( MediaTitle, { attachment } ) ] }) } ), !isBlob && /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)( import_components5.__experimentalHStack, { className: "fields__media-edit-compact-movers", spacing: 0, alignment: "flex-end", expanded: false, children: [ showMoveButtons && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( MoveButtons, { itemId: attachmentNumericId, index: index2, totalItems: allItems.length, isUploading, moveItem, orientation: "vertical" } ), /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( import_components5.Button, { __next40pxDefaultSize: true, icon: close_small_default, label: (0, import_i18n13.__)("Remove"), size: "small", disabled: isUploading, accessibleWhenDisabled: true, tooltipPosition: "top", onClick: (event) => { event.stopPropagation(); removeItem( attachmentNumericId ); } } ) ] } ) ] }, attachment.id ); }) }) } ), (multiple || !allItems?.length) && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( MediaEditPlaceholder, { open: () => { setTargetItemId(void 0); open(); }, label: addButtonLabel, onFilesDrop, isUploading } ) ] }); } function MediaEdit({ data, field, onChange, hideLabelFromVision, allowedTypes = ["image"], multiple, isExpanded, validity }) { const value = field.getValue({ item: data }); const [isTouched, setIsTouched] = (0, import_element6.useState)(false); const validityTargetRef = (0, import_element6.useRef)(null); const [customValidity, setCustomValidity] = (0, import_element6.useState)(void 0); (0, import_element6.useEffect)(() => { const validityTarget = validityTargetRef.current; const handler = () => { setIsTouched(true); }; validityTarget?.addEventListener("invalid", handler); return () => validityTarget?.removeEventListener("invalid", handler); }, []); const attachments = (0, import_data8.useSelect)( (select6) => { if (!value) { return null; } const normalizedValue = normalizeValue(value); const sortedIds = [...normalizedValue].sort((a3, b3) => a3 - b3); const { getEntityRecords } = select6(import_core_data6.store); return getEntityRecords("postType", "attachment", { include: sortedIds }); }, [value] ); const stableAttachmentsRef = (0, import_element6.useRef)( null ); if (attachments !== null) { stableAttachmentsRef.current = attachments; } let stableAttachments = attachments; if (attachments === null && stableAttachmentsRef.current && value) { const stableIds = new Set( stableAttachmentsRef.current.map((a3) => a3.id) ); if (normalizeValue(value).every((id) => stableIds.has(id))) { stableAttachments = stableAttachmentsRef.current; } } const orderedAttachments = (0, import_element6.useMemo)(() => { if (!stableAttachments) { return null; } const normalizedValue = normalizeValue(value); const attachmentMap = new Map( stableAttachments.map((a3) => [a3.id, a3]) ); return normalizedValue.map((id) => attachmentMap.get(id)).filter((a3) => a3 !== void 0); }, [stableAttachments, value]); const { createErrorNotice } = (0, import_data8.useDispatch)(import_notices3.store); const { receiveEntityRecords } = (0, import_data8.useDispatch)(import_core_data6.store); const [targetItemId, setTargetItemId] = (0, import_element6.useState)(); const openModalRef = (0, import_element6.useRef)(void 0); const [pendingOpen, setPendingOpen] = (0, import_element6.useState)(false); const [blobs, setBlobs] = (0, import_element6.useState)([]); (0, import_element6.useEffect)(() => { if (pendingOpen) { setPendingOpen(false); openModalRef.current?.(); } }, [pendingOpen]); const onChangeControl = (0, import_element6.useCallback)( (newValue) => onChange(field.setValue({ item: data, value: newValue })), [data, field, onChange] ); const removeItem = (0, import_element6.useCallback)( (itemId) => { const currentIds = normalizeValue(value); const newIds = currentIds.filter((id) => id !== itemId); setIsTouched(true); onChangeControl(newIds.length ? newIds : void 0); }, [value, onChangeControl] ); const moveItem = (0, import_element6.useCallback)( (itemId, direction) => { if (!orderedAttachments) { return; } const currentIds = orderedAttachments.map((a3) => a3.id); const index2 = currentIds.indexOf(itemId); const newIndex = direction === "up" ? index2 - 1 : index2 + 1; [currentIds[index2], currentIds[newIndex]] = [ currentIds[newIndex], currentIds[index2] ]; onChangeControl(currentIds); }, [orderedAttachments, onChangeControl] ); const onFilesDrop = (0, import_element6.useCallback)( (files, _targetItemId) => { setTargetItemId(_targetItemId); (0, import_media_utils2.uploadMedia)({ allowedTypes: allowedTypes?.length ? allowedTypes : void 0, filesList: files, onFileChange(uploadedMedia) { const blobUrls = uploadedMedia.filter((item) => (0, import_blob.isBlobURL)(item.url)).map((item) => item.url); setBlobs(blobUrls); if (!!blobUrls.length) { return; } receiveEntityRecords( "postType", "attachment", [], void 0, true ); const uploadedIds = uploadedMedia.map( (item) => item.id ); if (!multiple) { onChangeControl(uploadedIds[0]); setTargetItemId(void 0); return; } const currentValue = normalizeValue(value); if (_targetItemId === void 0) { onChangeControl([...currentValue, ...uploadedIds]); } else { const newValue = [...currentValue]; newValue.splice( currentValue.indexOf(_targetItemId), 1, ...uploadedIds ); onChangeControl(newValue); } setTargetItemId(void 0); }, onError(error) { setTargetItemId(void 0); setBlobs([]); createErrorNotice(error.message, { type: "snackbar" }); }, multiple: !!multiple }); }, [ allowedTypes, value, multiple, createErrorNotice, onChangeControl, receiveEntityRecords ] ); const addButtonLabel = field.placeholder || (multiple ? (0, import_i18n13.__)("Choose files") : (0, import_i18n13.__)("Choose file")); const allItems = (0, import_element6.useMemo)(() => { if (!blobs.length) { return orderedAttachments; } const items = [ ...orderedAttachments || [] ]; const blobItems = blobs.map((url) => ({ id: url, source_url: url, mime_type: (0, import_blob.getBlobTypeByURL)(url) })); if (targetItemId !== void 0) { const targetIndex = items.findIndex( (a3) => a3.id === targetItemId ); items.splice(targetIndex, 1, ...blobItems); } else { items.push(...blobItems); } return items; }, [orderedAttachments, targetItemId, blobs]); (0, import_element6.useEffect)(() => { if (!isTouched) { return; } const input = validityTargetRef.current; if (!input) { return; } if (validity) { const customValidityResult = validity?.custom; setCustomValidity(customValidityResult); if (customValidityResult?.type === "invalid") { input.setCustomValidity( customValidityResult.message || (0, import_i18n13.__)("Invalid") ); } else { input.setCustomValidity(""); } } else { input.setCustomValidity(""); setCustomValidity(void 0); } }, [isTouched, field.isValid, validity]); const onBlur = (0, import_element6.useCallback)( (event) => { if (isTouched) { return; } if (!event.relatedTarget || !event.currentTarget.contains(event.relatedTarget)) { setIsTouched(true); } }, [isTouched] ); return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { onBlur, children: [ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("fieldset", { className: "fields__media-edit", "data-field-id": field.id, children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( ConditionalMediaUpload, { onSelect: (selectedMedia) => { if (!multiple) { onChangeControl(selectedMedia.id); setTargetItemId(void 0); return; } const newIds = Array.isArray(selectedMedia) ? selectedMedia.map((m2) => m2.id) : [selectedMedia.id]; const currentValue = normalizeValue(value); if (!currentValue.length) { onChangeControl(newIds); } else if (targetItemId === void 0) { const existingItems = currentValue.filter( (id) => newIds.includes(id) ); const newItems = newIds.filter( (id) => !currentValue.includes(id) ); onChangeControl([ ...existingItems, ...newItems ]); } else if (selectedMedia.id !== targetItemId) { const filtered = currentValue.filter( (id) => id !== selectedMedia.id ); onChangeControl( filtered.map( (id) => id === targetItemId ? selectedMedia.id : id ) ); } setTargetItemId(void 0); }, onClose: () => setTargetItemId(void 0), allowedTypes, value: targetItemId !== void 0 ? targetItemId : value, multiple: multiple && targetItemId === void 0, title: field.label, render: ({ open }) => { openModalRef.current = open; const AttachmentsComponent = isExpanded ? ExpandedMediaEditAttachments : CompactMediaEditAttachments; return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(import_components5.__experimentalVStack, { spacing: 2, children: [ field.label && (hideLabelFromVision ? /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_components5.VisuallyHidden, { as: "legend", children: field.label }) : /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( import_components5.BaseControl.VisualLabel, { as: "legend", style: { marginBottom: 0 }, children: field.label } )), /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( AttachmentsComponent, { allItems, addButtonLabel, multiple, removeItem, moveItem, open: () => setPendingOpen(true), onFilesDrop, isUploading: !!blobs.length, setTargetItemId } ), field.description && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_components5.__experimentalText, { variant: "muted", children: field.description }) ] }); } } ) }), /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_components5.VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( "input", { type: "text", ref: validityTargetRef, value: value ?? "", tabIndex: -1, "aria-hidden": "true", onChange: () => { } } ) }), customValidity && /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("div", { "aria-live": "polite", children: /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)( "p", { className: clsx_default( "components-validated-control__indicator", { "is-invalid": customValidity.type === "invalid", "is-valid": customValidity.type === "valid" } ), children: [ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)( import_components5.Icon, { className: "components-validated-control__indicator-icon", icon: error_default, size: 16, fill: "currentColor" } ), customValidity.message ] } ) }) ] }); } // packages/fields/build-module/fields/featured-image/featured-image-view.mjs var import_jsx_runtime82 = __toESM(require_jsx_runtime(), 1); var FeaturedImageView = ({ item, config: config2 }) => { const media = item?._embedded?.["wp:featuredmedia"]?.[0]; const url = media?.source_url; if (url) { return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)( "img", { className: "fields-controls__featured-image-image", src: url, alt: "", srcSet: media?.media_details?.sizes ? Object.values(media.media_details.sizes).map( (size3) => `${size3.source_url} ${size3.width}w` ).join(", ") : void 0, sizes: config2?.sizes || "100vw" } ); } return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { className: "fields-controls__featured-image-placeholder" }); }; // packages/fields/build-module/fields/featured-image/index.mjs var import_jsx_runtime83 = __toESM(require_jsx_runtime(), 1); var featuredImageField = { id: "featured_media", type: "media", label: (0, import_i18n14.__)("Featured Image"), Edit: (props) => /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(MediaEdit, { ...props, isExpanded: true }), render: FeaturedImageView, setValue: ({ value }) => ({ featured_media: value ?? 0 }), enableSorting: false, filterBy: false }; var featured_image_default = featuredImageField; // packages/fields/build-module/fields/template/index.mjs var import_i18n16 = __toESM(require_i18n(), 1); // packages/fields/build-module/fields/template/template-edit.mjs var import_element7 = __toESM(require_element(), 1); var import_core_data8 = __toESM(require_core_data(), 1); var import_components6 = __toESM(require_components(), 1); var import_data10 = __toESM(require_data(), 1); var import_i18n15 = __toESM(require_i18n(), 1); // packages/fields/build-module/fields/template/hooks.mjs var import_data9 = __toESM(require_data(), 1); var import_core_data7 = __toESM(require_core_data(), 1); function getTemplateSlugToCheck(postType2, slug) { if (slug) { return postType2 === "page" ? `${postType2}-${slug}` : `single-${postType2}-${slug}`; } return postType2 === "page" ? "page" : `single-${postType2}`; } var NAME_NOT_FOUND = ""; function useDefaultTemplateLabel(postType2, postId2, slug) { return (0, import_data9.useSelect)( (select6) => { if (!postType2 || !postId2) { return NAME_NOT_FOUND; } const postIdStr = String(postId2); const homePage = unlock2(select6(import_core_data7.store)).getHomePage(); if (postType2 === "page" && homePage?.postType === "page" && homePage?.postId === postIdStr) { const templates = select6( import_core_data7.store ).getEntityRecords("postType", "wp_template", { per_page: -1 }); const frontPage = templates?.find( (t4) => t4.slug === "front-page" ); if (frontPage) { return getItemTitle(frontPage); } } const postsPageId = unlock2(select6(import_core_data7.store)).getPostsPageId(); if (postType2 === "page" && postsPageId === postIdStr) { const templateId22 = select6(import_core_data7.store).getDefaultTemplateId({ slug: "home" }); if (!templateId22) { return NAME_NOT_FOUND; } const template22 = select6( import_core_data7.store ).getEntityRecord( "postType", "wp_template", templateId22 ); return template22 ? getItemTitle(template22) : NAME_NOT_FOUND; } const slugToCheck = getTemplateSlugToCheck(postType2, slug); const templateId2 = select6(import_core_data7.store).getDefaultTemplateId({ slug: slugToCheck }); if (!templateId2) { return NAME_NOT_FOUND; } const template2 = select6(import_core_data7.store).getEntityRecord( "postType", "wp_template", templateId2 ); return template2 ? getItemTitle(template2) : NAME_NOT_FOUND; }, [postType2, postId2, slug] ); } // packages/fields/build-module/fields/template/template-edit.mjs var import_jsx_runtime84 = __toESM(require_jsx_runtime(), 1); var EMPTY_ARRAY2 = []; var TemplateEdit = ({ data, field, onChange }) => { const { id } = field; const postType2 = data.type; const postId2 = typeof data.id === "number" ? data.id : parseInt(data.id, 10); const slug = data.slug; const { templates, canSwitchTemplate } = (0, import_data10.useSelect)( (select6) => { const allTemplates = select6(import_core_data8.store).getEntityRecords( "postType", "wp_template", { per_page: -1, post_type: postType2 } ) ?? EMPTY_ARRAY2; const { getHomePage, getPostsPageId } = unlock2( select6(import_core_data8.store) ); const singlePostId = String(postId2); const isPostsPage = singlePostId !== void 0 && getPostsPageId() === singlePostId; const isFrontPage = singlePostId !== void 0 && postType2 === "page" && getHomePage()?.postId === singlePostId; return { templates: allTemplates, canSwitchTemplate: !isPostsPage && !isFrontPage }; }, [postId2, postType2] ); const defaultTemplateLabel = useDefaultTemplateLabel( postType2, postId2, slug ); const value = field.getValue({ item: data }); const onChangeControl = (0, import_element7.useCallback)( (newValue) => onChange({ [id]: newValue }), [id, onChange] ); const options = (0, import_element7.useMemo)(() => { const templateOptions = templates.map((template2) => ({ label: getItemTitle(template2), value: template2.slug })); return [ { label: defaultTemplateLabel, value: "" }, ...templateOptions ]; }, [templates, defaultTemplateLabel]); return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)( import_components6.SelectControl, { __next40pxDefaultSize: true, label: (0, import_i18n15.__)("Template"), hideLabelFromVision: true, value, options, onChange: onChangeControl, disabled: !canSwitchTemplate } ); }; // packages/fields/build-module/fields/template/template-view.mjs var import_data11 = __toESM(require_data(), 1); var import_core_data9 = __toESM(require_core_data(), 1); var import_jsx_runtime85 = __toESM(require_jsx_runtime(), 1); var TemplateView = ({ item, field }) => { const postType2 = item.type; const slug = item.slug; const postId2 = item.id; const templateSlug = field.getValue({ item }); const defaultTemplateLabel = useDefaultTemplateLabel( postType2, postId2, slug ); const templateLabel = (0, import_data11.useSelect)( (select6) => { if (!templateSlug) { return; } const allTemplates = select6( import_core_data9.store ).getEntityRecords("postType", "wp_template", { per_page: -1, post_type: postType2 }); const match3 = allTemplates?.find( (t4) => t4.slug === templateSlug ); return match3 ? getItemTitle(match3) : void 0; }, [postType2, templateSlug] ); return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_jsx_runtime85.Fragment, { children: templateLabel ?? defaultTemplateLabel }); }; // packages/fields/build-module/fields/template/index.mjs var templateField = { id: "template", type: "text", label: (0, import_i18n16.__)("Template"), Edit: TemplateEdit, render: TemplateView, enableSorting: false, filterBy: false }; var template_default = templateField; // packages/fields/build-module/fields/parent/index.mjs var import_i18n20 = __toESM(require_i18n(), 1); // packages/fields/build-module/fields/parent/parent-edit.mjs var import_remove_accents = __toESM(require_remove_accents(), 1); var import_components7 = __toESM(require_components(), 1); var import_data12 = __toESM(require_data(), 1); var import_element8 = __toESM(require_element(), 1); var import_core_data10 = __toESM(require_core_data(), 1); var import_compose2 = __toESM(require_compose(), 1); var import_html_entities3 = __toESM(require_html_entities(), 1); var import_i18n18 = __toESM(require_i18n(), 1); var import_url6 = __toESM(require_url(), 1); // packages/fields/build-module/fields/parent/utils.mjs var import_html_entities2 = __toESM(require_html_entities(), 1); var import_i18n17 = __toESM(require_i18n(), 1); function getTitleWithFallbackName(post2) { return typeof post2.title === "object" && "rendered" in post2.title && post2.title.rendered ? (0, import_html_entities2.decodeEntities)(post2.title.rendered) : `#${post2?.id} (${(0, import_i18n17.__)("no title")})`; } // packages/fields/build-module/fields/parent/parent-edit.mjs var import_jsx_runtime86 = __toESM(require_jsx_runtime(), 1); function buildTermsTree(flatTerms) { const flatTermsWithParentAndChildren = flatTerms.map((term) => { return { children: [], ...term }; }); if (flatTermsWithParentAndChildren.some( ({ parent }) => parent === null || parent === void 0 )) { return flatTermsWithParentAndChildren; } const termsByParent = flatTermsWithParentAndChildren.reduce( (acc, term) => { const { parent } = term; if (!acc[parent]) { acc[parent] = []; } acc[parent].push(term); return acc; }, {} ); const fillWithChildren = (terms) => { return terms.map((term) => { const children = termsByParent[term.id]; return { ...term, children: children && children.length ? fillWithChildren(children) : [] }; }); }; return fillWithChildren(termsByParent["0"] || []); } var getItemPriority = (name2, searchValue) => { const normalizedName = (0, import_remove_accents.default)(name2 || "").toLowerCase(); const normalizedSearch = (0, import_remove_accents.default)(searchValue || "").toLowerCase(); if (normalizedName === normalizedSearch) { return 0; } if (normalizedName.startsWith(normalizedSearch)) { return normalizedName.length; } return Infinity; }; function PageAttributesParent({ data, onChangeControl }) { const [fieldValue, setFieldValue] = (0, import_element8.useState)(null); const pageId = data.parent; const postId2 = data.id; const postTypeSlug = data.type; const { parentPostTitle, pageItems, isHierarchical } = (0, import_data12.useSelect)( (select6) => { const { getEntityRecord, getEntityRecords, getPostType } = select6(import_core_data10.store); const postTypeInfo = getPostType(postTypeSlug); const postIsHierarchical = postTypeInfo?.hierarchical && postTypeInfo.viewable; const parentPost = pageId ? getEntityRecord( "postType", postTypeSlug, pageId ) : null; const query = { per_page: 100, exclude: postId2, parent_exclude: postId2, orderby: "menu_order", order: "asc", _fields: "id,title,parent", ...fieldValue !== null && { // Perform a search by relevance when the field is changed. search: fieldValue, orderby: "relevance" } }; return { isHierarchical: postIsHierarchical, parentPostTitle: parentPost ? getTitleWithFallbackName(parentPost) : "", pageItems: postIsHierarchical ? getEntityRecords( "postType", postTypeSlug, query ) : null }; }, [fieldValue, pageId, postId2, postTypeSlug] ); const parentOptions = (0, import_element8.useMemo)(() => { const getOptionsFromTree = (tree2, level = 0) => { const mappedNodes = tree2.map((treeNode) => [ { value: treeNode.id, label: "\u2014 ".repeat(level) + (0, import_html_entities3.decodeEntities)(treeNode.name), rawName: treeNode.name }, ...getOptionsFromTree(treeNode.children || [], level + 1) ]); const sortedNodes = mappedNodes.sort(([a3], [b3]) => { const priorityA = getItemPriority( a3.rawName, fieldValue ?? "" ); const priorityB = getItemPriority( b3.rawName, fieldValue ?? "" ); return priorityA >= priorityB ? 1 : -1; }); return sortedNodes.flat(); }; if (!pageItems) { return []; } let tree = pageItems.map((item) => ({ id: item.id, parent: item.parent ?? null, name: getTitleWithFallbackName(item) })); if (!fieldValue) { tree = buildTermsTree(tree); } const opts = getOptionsFromTree(tree); const optsHasParent = opts.find((item) => item.value === pageId); if (pageId && parentPostTitle && !optsHasParent) { opts.unshift({ value: pageId, label: parentPostTitle, rawName: "" }); } return opts.map((option) => ({ ...option, value: option.value.toString() })); }, [pageItems, fieldValue, parentPostTitle, pageId]); if (!isHierarchical) { return null; } const handleKeydown = (inputValue) => { setFieldValue(inputValue); }; const handleChange = (selectedPostId) => { if (selectedPostId) { return onChangeControl(parseInt(selectedPostId, 10) ?? 0); } onChangeControl(0); }; return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( import_components7.ComboboxControl, { __next40pxDefaultSize: true, label: (0, import_i18n18.__)("Parent"), help: (0, import_i18n18.__)("Choose a parent page."), value: pageId?.toString(), options: parentOptions, onFilterValueChange: (0, import_compose2.debounce)( (value) => handleKeydown(value), 300 ), onChange: handleChange, hideLabelFromVision: true } ); } var ParentEdit = ({ data, field, onChange }) => { const { id } = field; const homeUrl = (0, import_data12.useSelect)((select6) => { return select6(import_core_data10.store).getEntityRecord("root", "__unstableBase")?.home; }, []); const onChangeControl = (0, import_element8.useCallback)( (newValue) => onChange({ [id]: newValue }), [id, onChange] ); return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("fieldset", { className: "fields-controls__parent", children: /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("div", { children: [ (0, import_element8.createInterpolateElement)( (0, import_i18n18.sprintf)( /* translators: %1$s The home URL of the WordPress installation without the scheme. */ (0, import_i18n18.__)( 'Child pages inherit characteristics from their parent, such as URL structure. For instance, if "Pricing" is a child of "Services", its URL would be %1$s/services/pricing.' ), (0, import_url6.filterURLForDisplay)(homeUrl).replace( /([/.])/g, "$1" ) ), { wbr: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("wbr", {}) } ), /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("p", { children: (0, import_element8.createInterpolateElement)( (0, import_i18n18.__)( "They also show up as sub-items in the default navigation menu. Learn more." ), { a: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( import_components7.ExternalLink, { href: (0, import_i18n18.__)( "https://wordpress.org/documentation/article/page-post-settings-sidebar/#page-attributes" ), children: void 0 } ) } ) }), /* @__PURE__ */ (0, import_jsx_runtime86.jsx)( PageAttributesParent, { data, onChangeControl } ) ] }) }); }; // packages/fields/build-module/fields/parent/parent-view.mjs var import_data13 = __toESM(require_data(), 1); var import_core_data11 = __toESM(require_core_data(), 1); var import_i18n19 = __toESM(require_i18n(), 1); var import_jsx_runtime87 = __toESM(require_jsx_runtime(), 1); var ParentView = ({ item }) => { const parent = (0, import_data13.useSelect)( (select6) => { const { getEntityRecord } = select6(import_core_data11.store); return item?.parent ? getEntityRecord("postType", item.type, item.parent) : null; }, [item.parent, item.type] ); if (parent) { return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(import_jsx_runtime87.Fragment, { children: getTitleWithFallbackName(parent) }); } return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(import_jsx_runtime87.Fragment, { children: (0, import_i18n19.__)("None") }); }; // packages/fields/build-module/fields/parent/index.mjs var parentField = { id: "parent", type: "text", label: (0, import_i18n20.__)("Parent"), Edit: ParentEdit, render: ParentView, enableSorting: true, filterBy: false }; var parent_default = parentField; // packages/fields/build-module/fields/password/index.mjs var import_i18n22 = __toESM(require_i18n(), 1); // packages/fields/build-module/fields/password/edit.mjs var import_components8 = __toESM(require_components(), 1); var import_element9 = __toESM(require_element(), 1); var import_i18n21 = __toESM(require_i18n(), 1); var import_jsx_runtime88 = __toESM(require_jsx_runtime(), 1); function PasswordEdit({ data, onChange, field }) { const [showPassword, setShowPassword] = (0, import_element9.useState)( !!field.getValue({ item: data }) ); const handleTogglePassword = (value) => { setShowPassword(value); if (!value) { onChange({ password: "" }); } }; return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)( import_components8.__experimentalVStack, { as: "fieldset", spacing: 4, className: "fields-controls__password", children: [ /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( import_components8.CheckboxControl, { label: (0, import_i18n21.__)("Password protected"), help: (0, import_i18n21.__)("Only visible to those who know the password"), checked: showPassword, onChange: handleTogglePassword } ), showPassword && /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { className: "fields-controls__password-input", children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)( import_components8.TextControl, { label: (0, import_i18n21.__)("Password"), onChange: (value) => onChange({ password: value }), value: field.getValue({ item: data }) || "", placeholder: (0, import_i18n21.__)("Use a secure password"), type: "text", __next40pxDefaultSize: true, maxLength: 255 } ) }) ] } ); } var edit_default = PasswordEdit; // packages/fields/build-module/fields/password/index.mjs var passwordField = { id: "password", type: "text", label: (0, import_i18n22.__)("Password"), Edit: edit_default, enableSorting: false, enableHiding: false, isVisible: (item) => item.status !== "private", filterBy: false }; var password_default = passwordField; // packages/fields/build-module/fields/status/index.mjs var import_i18n24 = __toESM(require_i18n(), 1); // packages/fields/build-module/fields/status/status-view.mjs var import_components9 = __toESM(require_components(), 1); // packages/fields/build-module/fields/status/status-elements.mjs var import_i18n23 = __toESM(require_i18n(), 1); var STATUSES = [ { value: "draft", label: (0, import_i18n23.__)("Draft"), icon: drafts_default, description: (0, import_i18n23.__)("Not ready to publish.") }, { value: "future", label: (0, import_i18n23.__)("Scheduled"), icon: scheduled_default, description: (0, import_i18n23.__)("Publish automatically on a chosen date.") }, { value: "pending", label: (0, import_i18n23.__)("Pending Review"), icon: pending_default, description: (0, import_i18n23.__)("Waiting for review before publishing.") }, { value: "private", label: (0, import_i18n23.__)("Private"), icon: not_allowed_default, description: (0, import_i18n23.__)("Only visible to site admins and editors.") }, { value: "publish", label: (0, import_i18n23.__)("Published"), icon: published_default, description: (0, import_i18n23.__)("Visible to everyone.") }, { value: "trash", label: (0, import_i18n23.__)("Trash"), icon: trash_default } ]; var status_elements_default = STATUSES; // packages/fields/build-module/fields/status/status-view.mjs var import_jsx_runtime89 = __toESM(require_jsx_runtime(), 1); function StatusView({ item }) { const status = status_elements_default.find(({ value }) => value === item.status); const label = status?.label || item.status; const icon = status?.icon; return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(import_components9.__experimentalHStack, { alignment: "left", spacing: 0, children: [ icon && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "edit-site-post-list__status-icon", children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_components9.Icon, { icon }) }), /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { children: label }) ] }); } var status_view_default = StatusView; // packages/fields/build-module/fields/status/index.mjs var OPERATOR_IS_ANY = "isAny"; var statusField = { label: (0, import_i18n24.__)("Status"), id: "status", type: "text", elements: status_elements_default, render: status_view_default, Edit: "radio", enableSorting: false, filterBy: { operators: [OPERATOR_IS_ANY] } }; var status_default = statusField; // packages/fields/build-module/fields/comment-status/index.mjs var import_i18n25 = __toESM(require_i18n(), 1); var commentStatusField = { id: "comment_status", label: (0, import_i18n25.__)("Comments"), type: "text", Edit: "radio", enableSorting: false, enableHiding: false, filterBy: false, elements: [ { value: "open", label: (0, import_i18n25.__)("Open"), description: (0, import_i18n25.__)("Visitors can add new comments and replies.") }, { value: "closed", label: (0, import_i18n25.__)("Closed"), description: (0, import_i18n25.__)( "Visitors cannot add new comments or replies. Existing comments remain visible." ) } ] }; var comment_status_default = commentStatusField; // packages/fields/build-module/fields/ping-status/index.mjs var import_i18n26 = __toESM(require_i18n(), 1); var import_components10 = __toESM(require_components(), 1); var import_jsx_runtime90 = __toESM(require_jsx_runtime(), 1); function PingStatusEdit({ data, onChange }) { const pingStatus = data?.ping_status ?? "open"; const onTogglePingback = (checked) => { onChange({ ...data, ping_status: checked ? "open" : "closed" }); }; return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)( import_components10.CheckboxControl, { label: (0, import_i18n26.__)("Enable pingbacks & trackbacks"), checked: pingStatus === "open", onChange: onTogglePingback, help: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)( import_components10.ExternalLink, { href: (0, import_i18n26.__)( "https://wordpress.org/documentation/article/trackbacks-and-pingbacks/" ), children: (0, import_i18n26.__)("Learn more about pingbacks & trackbacks") } ) } ); } var pingStatusField = { id: "ping_status", label: (0, import_i18n26.__)("Trackbacks & Pingbacks"), type: "text", Edit: PingStatusEdit, enableSorting: false, enableHiding: false, filterBy: false, elements: [ { value: "open", label: (0, import_i18n26.__)("Allow"), description: (0, import_i18n26.__)( "Allow link notifications from other blogs (pingbacks and trackbacks) on new articles." ) }, { value: "closed", label: (0, import_i18n26.__)("Don't allow"), description: (0, import_i18n26.__)( "Don't allow link notifications from other blogs (pingbacks and trackbacks) on new articles." ) } ] }; var ping_status_default = pingStatusField; // packages/fields/build-module/fields/discussion/index.mjs var import_i18n27 = __toESM(require_i18n(), 1); var discussionField = { id: "discussion", label: (0, import_i18n27.__)("Discussion"), type: "text", render: ({ item }) => { const commentsOpen = item.comment_status === "open"; const pingsOpen = item.ping_status === "open"; if (commentsOpen && pingsOpen) { return (0, import_i18n27.__)("Open"); } if (commentsOpen && !pingsOpen) { return (0, import_i18n27.__)("Comments only"); } if (!commentsOpen && pingsOpen) { return (0, import_i18n27.__)("Pings only"); } return (0, import_i18n27.__)("Closed"); }, filterBy: false }; var discussion_default = discussionField; // packages/fields/build-module/fields/date/index.mjs var import_i18n29 = __toESM(require_i18n(), 1); // packages/fields/build-module/fields/date/date-view.mjs var import_i18n28 = __toESM(require_i18n(), 1); var import_element10 = __toESM(require_element(), 1); var import_date2 = __toESM(require_date(), 1); var import_jsx_runtime91 = __toESM(require_jsx_runtime(), 1); var getFormattedDate = (dateToDisplay) => (0, import_date2.dateI18n)( (0, import_date2.getSettings)().formats.datetimeAbbreviated, (0, import_date2.getDate)(dateToDisplay) ); var DateView = ({ item }) => { const isDraftOrPrivate = ["draft", "private"].includes( item.status ?? "" ); if (isDraftOrPrivate) { return (0, import_element10.createInterpolateElement)( (0, import_i18n28.sprintf)( /* translators: %s: page creation or modification date. */ (0, import_i18n28.__)("Modified: "), getFormattedDate(item.date ?? null) ), { span: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("span", {}), time: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("time", {}) } ); } const isScheduled = item.status === "future"; if (isScheduled) { return (0, import_element10.createInterpolateElement)( (0, import_i18n28.sprintf)( /* translators: %s: page creation date */ (0, import_i18n28.__)("Scheduled: "), getFormattedDate(item.date ?? null) ), { span: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("span", {}), time: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("time", {}) } ); } const isPublished = item.status === "publish"; if (isPublished) { return (0, import_element10.createInterpolateElement)( (0, import_i18n28.sprintf)( /* translators: %s: page creation time */ (0, import_i18n28.__)("Published: "), getFormattedDate(item.date ?? null) ), { span: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("span", {}), time: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("time", {}) } ); } const dateToDisplay = (0, import_date2.getDate)(item.modified ?? null) > (0, import_date2.getDate)(item.date ?? null) ? item.modified : item.date; const isPending = item.status === "pending"; if (isPending) { return (0, import_element10.createInterpolateElement)( (0, import_i18n28.sprintf)( /* translators: %s: page creation or modification date. */ (0, import_i18n28.__)("Modified: "), getFormattedDate(dateToDisplay ?? null) ), { span: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("span", {}), time: /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("time", {}) } ); } return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("time", { children: getFormattedDate(item.date ?? null) }); }; var date_view_default = DateView; // packages/fields/build-module/fields/date/index.mjs var dateField = { id: "date", type: "datetime", label: (0, import_i18n29.__)("Date"), render: date_view_default, filterBy: { operators: ["before", "after"] } }; var date_default = dateField; // packages/fields/build-module/fields/author/index.mjs var import_i18n31 = __toESM(require_i18n(), 1); var import_data15 = __toESM(require_data(), 1); var import_core_data13 = __toESM(require_core_data(), 1); // packages/fields/build-module/fields/author/author-view.mjs var import_i18n30 = __toESM(require_i18n(), 1); var import_element11 = __toESM(require_element(), 1); var import_components11 = __toESM(require_components(), 1); var import_data14 = __toESM(require_data(), 1); var import_core_data12 = __toESM(require_core_data(), 1); var import_jsx_runtime92 = __toESM(require_jsx_runtime(), 1); function AuthorView({ item }) { const authorId = item?.author; const embeddedAuthorId = item?._embedded?.author?.[0]?.id; const shouldFetch = Boolean( authorId && embeddedAuthorId && authorId !== embeddedAuthorId ); const author = (0, import_data14.useSelect)( (select6) => { if (!shouldFetch) { return null; } const { getEntityRecord } = select6(import_core_data12.store); return authorId ? getEntityRecord("root", "user", authorId) : null; }, [authorId, shouldFetch] ); const text = author?.name || item?._embedded?.author?.[0]?.name; const imageUrl = author?.avatar_urls?.[48] || item?._embedded?.author?.[0]?.avatar_urls?.[48]; const [isImageLoaded, setIsImageLoaded] = (0, import_element11.useState)(false); return /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)(import_components11.__experimentalHStack, { alignment: "left", spacing: 0, children: [ !!imageUrl && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( "div", { className: clsx_default("page-templates-author-field__avatar", { "is-loaded": isImageLoaded }), children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)( "img", { onLoad: () => setIsImageLoaded(true), alt: (0, import_i18n30.__)("Author avatar"), src: imageUrl } ) } ), !imageUrl && /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("div", { className: "page-templates-author-field__icon", children: /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(import_components11.Icon, { icon: comment_author_avatar_default }) }), /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("span", { className: "page-templates-author-field__name", children: text }) ] }); } var author_view_default = AuthorView; // packages/fields/build-module/fields/author/index.mjs var authorField = { label: (0, import_i18n31.__)("Author"), id: "author", type: "integer", getElements: async () => { const authors = await (0, import_data15.resolveSelect)(import_core_data13.store).getEntityRecords( "root", "user", { per_page: -1, who: "authors", _fields: "id,name", context: "view" } ) ?? []; return authors.map(({ id, name: name2 }) => ({ value: id, label: name2 })); }, setValue: ({ value }) => ({ author: Number(value) }), render: author_view_default, sort: (a3, b3, direction) => { const nameA = a3._embedded?.author?.[0]?.name || ""; const nameB = b3._embedded?.author?.[0]?.name || ""; return direction === "asc" ? nameA.localeCompare(nameB) : nameB.localeCompare(nameA); }, filterBy: { operators: ["isAny", "isNone"] } }; var author_default = authorField; // packages/fields/build-module/fields/notes/index.mjs var import_i18n32 = __toESM(require_i18n(), 1); var notesField = { id: "notesCount", label: (0, import_i18n32.__)("Notes"), type: "integer", enableSorting: false, filterBy: false }; var notes_default = notesField; // packages/fields/build-module/actions/view-post.mjs var import_i18n33 = __toESM(require_i18n(), 1); var viewPost = { id: "view-post", label: (0, import_i18n33._x)("View", "verb"), isPrimary: true, icon: external_default, isEligible(post2) { return post2.status !== "trash"; }, callback(posts, { onActionPerformed }) { const post2 = posts[0]; window.open(post2?.link, "_blank"); if (onActionPerformed) { onActionPerformed(posts); } } }; var view_post_default = viewPost; // packages/fields/build-module/actions/reorder-page.mjs var import_data16 = __toESM(require_data(), 1); var import_core_data14 = __toESM(require_core_data(), 1); var import_i18n34 = __toESM(require_i18n(), 1); var import_notices4 = __toESM(require_notices(), 1); var import_element12 = __toESM(require_element(), 1); var import_components12 = __toESM(require_components(), 1); var import_jsx_runtime93 = __toESM(require_jsx_runtime(), 1); function isItemValid(item) { return typeof item.menu_order === "number" && Number.isInteger(item.menu_order); } function ReorderModal({ items, closeModal: closeModal2, onActionPerformed }) { const [item, setItem] = (0, import_element12.useState)(items[0]); const { editEntityRecord, saveEditedEntityRecord } = (0, import_data16.useDispatch)(import_core_data14.store); const { createSuccessNotice, createErrorNotice } = (0, import_data16.useDispatch)(import_notices4.store); const isValid2 = isItemValid(item); async function onOrder(event) { event.preventDefault(); if (!isValid2) { return; } try { await editEntityRecord("postType", item.type, item.id, { menu_order: item.menu_order }); closeModal2?.(); await saveEditedEntityRecord("postType", item.type, item.id, { throwOnError: true }); createSuccessNotice((0, import_i18n34.__)("Order updated."), { type: "snackbar" }); onActionPerformed?.(items); } catch (error) { const typedError = error; const errorMessage = typedError.message && typedError.code !== "unknown_error" ? typedError.message : (0, import_i18n34.__)("An error occurred while updating the order"); createErrorNotice(errorMessage, { type: "snackbar" }); } } return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("form", { onSubmit: onOrder, children: /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_components12.__experimentalVStack, { spacing: "5", children: [ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("div", { children: (0, import_i18n34.__)( "Determines the order of pages. Pages with the same order value are sorted alphabetically. Negative order values are supported." ) }), /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( import_components12.__experimentalInputControl, { __next40pxDefaultSize: true, label: (0, import_i18n34.__)("Order"), type: "number", value: typeof item.menu_order === "number" && Number.isInteger(item.menu_order) ? String(item.menu_order) : "", onChange: (value) => { const parsed = parseInt(value, 10); setItem({ ...item, menu_order: isNaN(parsed) ? void 0 : parsed }); } } ), /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)(import_components12.__experimentalHStack, { justify: "right", children: [ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( import_components12.Button, { __next40pxDefaultSize: true, variant: "tertiary", onClick: () => { closeModal2?.(); }, children: (0, import_i18n34.__)("Cancel") } ), /* @__PURE__ */ (0, import_jsx_runtime93.jsx)( import_components12.Button, { __next40pxDefaultSize: true, variant: "primary", type: "submit", accessibleWhenDisabled: true, disabled: !isValid2, children: (0, import_i18n34.__)("Save") } ) ] }) ] }) }); } var reorderPage = { id: "order-pages", label: (0, import_i18n34.__)("Order"), isEligible({ status }) { return status !== "trash"; }, modalFocusOnMount: "firstContentElement", RenderModal: ReorderModal }; var reorder_page_default = reorderPage; // packages/fields/build-module/actions/duplicate-post.mjs var import_data17 = __toESM(require_data(), 1); var import_core_data15 = __toESM(require_core_data(), 1); var import_i18n35 = __toESM(require_i18n(), 1); var import_notices5 = __toESM(require_notices(), 1); var import_element13 = __toESM(require_element(), 1); var import_components13 = __toESM(require_components(), 1); var import_jsx_runtime94 = __toESM(require_jsx_runtime(), 1); var duplicatePost = { id: "duplicate-post", label: (0, import_i18n35._x)("Duplicate", "action label"), isEligible({ status }) { return status !== "trash"; }, modalFocusOnMount: "firstContentElement", RenderModal: ({ items, closeModal: closeModal2, onActionPerformed }) => { const [item, setItem] = (0, import_element13.useState)({ ...items[0], title: (0, import_i18n35.sprintf)( /* translators: %s: Existing post title */ (0, import_i18n35._x)("%s (Copy)", "post"), getItemTitle(items[0]) ) }); const [isCreatingPage, setIsCreatingPage] = (0, import_element13.useState)(false); const { saveEntityRecord } = (0, import_data17.useDispatch)(import_core_data15.store); const { createSuccessNotice, createErrorNotice } = (0, import_data17.useDispatch)(import_notices5.store); async function createPage(event) { event.preventDefault(); if (isCreatingPage) { return; } const isTemplate2 = item.type === "wp_template"; const newItemObject = { status: isTemplate2 ? "publish" : "draft", title: item.title, slug: isTemplate2 ? item.slug : item.title || (0, import_i18n35.__)("No title"), comment_status: item.comment_status, content: typeof item.content === "string" ? item.content : item.content.raw, excerpt: typeof item.excerpt === "string" ? item.excerpt : item.excerpt?.raw, meta: item.meta, parent: item.parent, password: item.password, template: item.template, format: item.format, featured_media: item.featured_media, menu_order: item.menu_order, ping_status: item.ping_status }; const assignablePropertiesPrefix = "wp:action-assign-"; const assignableProperties = Object.keys(item?._links || {}).filter( (property) => property.startsWith(assignablePropertiesPrefix) ).map( (property) => property.slice(assignablePropertiesPrefix.length) ); assignableProperties.forEach((property) => { if (item.hasOwnProperty(property)) { newItemObject[property] = item[property]; } }); setIsCreatingPage(true); try { const newItem = await saveEntityRecord( "postType", item.type, newItemObject, { throwOnError: true } ); createSuccessNotice( (0, import_i18n35.sprintf)( // translators: %s: Title of the created post, e.g: "Hello world". (0, import_i18n35.__)('"%s" successfully created.'), getItemTitle(newItem) ), { id: "duplicate-post-action", type: "snackbar" } ); if (onActionPerformed) { onActionPerformed([newItem]); } } catch (error) { const typedError = error; const errorMessage = typedError.message && typedError.code !== "unknown_error" ? typedError.message : (0, import_i18n35.__)("An error occurred while duplicating the page."); createErrorNotice(errorMessage, { type: "snackbar" }); } finally { setIsCreatingPage(false); closeModal2?.(); } } return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("form", { onSubmit: createPage, children: /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_components13.__experimentalVStack, { spacing: 3, children: [ typeof item.id === "string" && /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("div", { children: (0, import_i18n35.__)( "You are about to duplicate a bundled template. Changes will not be live until you activate the new template." ) }), /* @__PURE__ */ (0, import_jsx_runtime94.jsx)( import_components13.__experimentalInputControl, { __next40pxDefaultSize: true, label: (0, import_i18n35.__)("Title"), placeholder: (0, import_i18n35.__)("No title"), value: getItemTitle(item), onChange: (value) => setItem((prev) => ({ ...prev, title: value || (0, import_i18n35.__)("No title") })) } ), /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_components13.__experimentalHStack, { spacing: 2, justify: "end", children: [ /* @__PURE__ */ (0, import_jsx_runtime94.jsx)( import_components13.Button, { variant: "tertiary", onClick: closeModal2, __next40pxDefaultSize: true, children: (0, import_i18n35.__)("Cancel") } ), /* @__PURE__ */ (0, import_jsx_runtime94.jsx)( import_components13.Button, { variant: "primary", type: "submit", isBusy: isCreatingPage, "aria-disabled": isCreatingPage, __next40pxDefaultSize: true, children: (0, import_i18n35._x)("Duplicate", "action label") } ) ] }) ] }) }); } }; var duplicate_post_default = duplicatePost; // packages/fields/build-module/actions/rename-post.mjs var import_data18 = __toESM(require_data(), 1); var import_core_data16 = __toESM(require_core_data(), 1); var import_i18n36 = __toESM(require_i18n(), 1); var import_element14 = __toESM(require_element(), 1); var import_patterns2 = __toESM(require_patterns(), 1); var import_components14 = __toESM(require_components(), 1); var import_notices6 = __toESM(require_notices(), 1); var import_jsx_runtime95 = __toESM(require_jsx_runtime(), 1); var { PATTERN_TYPES: PATTERN_TYPES2 } = unlock2(import_patterns2.privateApis); var renamePost = { id: "rename-post", label: (0, import_i18n36.__)("Rename"), modalFocusOnMount: "firstContentElement", isEligible(post2) { if (post2.status === "trash") { return false; } if (post2.type === "wp_template" && typeof post2.id === "string" && window?.__experimentalTemplateActivate) { return false; } const specialChecks = ["wp_template", "wp_template_part"]; if (!window?.__experimentalTemplateActivate) { specialChecks.push("wp_template"); } if (!specialChecks.includes(post2.type)) { return post2.permissions?.update; } if (isTemplate(post2) && !window?.__experimentalTemplateActivate) { return isTemplateRemovable(post2) && post2.is_custom && post2.permissions?.update; } if (isTemplatePart(post2)) { return post2.source === "custom" && !post2?.has_theme_file && post2.permissions?.update; } return post2.type === PATTERN_TYPES2.user && post2.permissions?.update; }, RenderModal: ({ items, closeModal: closeModal2, onActionPerformed }) => { const [item] = items; const [title, setTitle] = (0, import_element14.useState)(() => getItemTitle(item, "")); const { editEntityRecord, saveEditedEntityRecord } = (0, import_data18.useDispatch)(import_core_data16.store); const { createSuccessNotice, createErrorNotice } = (0, import_data18.useDispatch)(import_notices6.store); async function onRename(event) { event.preventDefault(); try { await editEntityRecord("postType", item.type, item.id, { title }); setTitle(""); closeModal2?.(); await saveEditedEntityRecord("postType", item.type, item.id, { throwOnError: true }); createSuccessNotice((0, import_i18n36.__)("Name updated"), { type: "snackbar" }); onActionPerformed?.(items); } catch (error) { const typedError = error; const errorMessage = typedError.message && typedError.code !== "unknown_error" ? typedError.message : (0, import_i18n36.__)("An error occurred while updating the name"); createErrorNotice(errorMessage, { type: "snackbar" }); } } return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("form", { onSubmit: onRename, children: /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(import_components14.__experimentalVStack, { spacing: "5", children: [ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)( import_components14.TextControl, { __next40pxDefaultSize: true, label: (0, import_i18n36.__)("Name"), value: title, onChange: setTitle, required: true } ), /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(import_components14.__experimentalHStack, { justify: "right", children: [ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)( import_components14.Button, { __next40pxDefaultSize: true, variant: "tertiary", onClick: () => { closeModal2?.(); }, children: (0, import_i18n36.__)("Cancel") } ), /* @__PURE__ */ (0, import_jsx_runtime95.jsx)( import_components14.Button, { __next40pxDefaultSize: true, variant: "primary", type: "submit", children: (0, import_i18n36.__)("Save") } ) ] }) ] }) }); } }; var rename_post_default = renamePost; // packages/fields/build-module/actions/reset-post.mjs var import_data19 = __toESM(require_data(), 1); var import_core_data17 = __toESM(require_core_data(), 1); var import_i18n37 = __toESM(require_i18n(), 1); var import_notices7 = __toESM(require_notices(), 1); var import_element15 = __toESM(require_element(), 1); var import_blocks3 = __toESM(require_blocks(), 1); var import_components15 = __toESM(require_components(), 1); var import_url7 = __toESM(require_url(), 1); var import_api_fetch2 = __toESM(require_api_fetch(), 1); var import_jsx_runtime96 = __toESM(require_jsx_runtime(), 1); var isTemplateRevertable2 = (templateOrTemplatePart) => { if (!templateOrTemplatePart) { return false; } return templateOrTemplatePart.source === "custom" && (Boolean(templateOrTemplatePart?.plugin) || templateOrTemplatePart?.has_theme_file); }; var revertTemplate = async (template2, { allowUndo = true } = {}) => { const noticeId = "edit-site-template-reverted"; (0, import_data19.dispatch)(import_notices7.store).removeNotice(noticeId); if (!isTemplateRevertable2(template2)) { (0, import_data19.dispatch)(import_notices7.store).createErrorNotice( (0, import_i18n37.__)("This template is not revertable."), { type: "snackbar" } ); return; } try { const templateEntityConfig = (0, import_data19.select)(import_core_data17.store).getEntityConfig( "postType", template2.type ); if (!templateEntityConfig) { (0, import_data19.dispatch)(import_notices7.store).createErrorNotice( (0, import_i18n37.__)( "The editor has encountered an unexpected error. Please reload." ), { type: "snackbar" } ); return; } const fileTemplatePath = (0, import_url7.addQueryArgs)( `${templateEntityConfig.baseURL}/${template2.id}`, { context: "edit", source: template2.origin } ); const fileTemplate = await (0, import_api_fetch2.default)({ path: fileTemplatePath }); if (!fileTemplate) { (0, import_data19.dispatch)(import_notices7.store).createErrorNotice( (0, import_i18n37.__)( "The editor has encountered an unexpected error. Please reload." ), { type: "snackbar" } ); return; } const serializeBlocks = ({ blocks: blocksForSerialization = [] }) => (0, import_blocks3.__unstableSerializeAndClean)(blocksForSerialization); const edited = (0, import_data19.select)(import_core_data17.store).getEditedEntityRecord( "postType", template2.type, template2.id ); (0, import_data19.dispatch)(import_core_data17.store).editEntityRecord( "postType", template2.type, template2.id, { content: serializeBlocks, // Required to make the `undo` behave correctly. blocks: edited.blocks, // Required to revert the blocks in the editor. source: "custom" // required to avoid turning the editor into a dirty state }, { undoIgnore: true // Required to merge this edit with the last undo level. } ); const blocks = (0, import_blocks3.parse)(fileTemplate?.content?.raw); (0, import_data19.dispatch)(import_core_data17.store).editEntityRecord( "postType", template2.type, fileTemplate.id, { content: serializeBlocks, blocks, source: "theme" } ); if (allowUndo) { const undoRevert = () => { (0, import_data19.dispatch)(import_core_data17.store).editEntityRecord( "postType", template2.type, edited.id, { content: serializeBlocks, blocks: edited.blocks, source: "custom" } ); }; (0, import_data19.dispatch)(import_notices7.store).createSuccessNotice( (0, import_i18n37.__)("Template reset."), { type: "snackbar", id: noticeId, actions: [ { label: (0, import_i18n37.__)("Undo"), onClick: undoRevert } ] } ); } } catch (error) { const errorMessage = error.message && error.code !== "unknown_error" ? error.message : (0, import_i18n37.__)("Template revert failed. Please reload."); (0, import_data19.dispatch)(import_notices7.store).createErrorNotice(errorMessage, { type: "snackbar" }); } }; var resetPostAction = { id: "reset-post", label: (0, import_i18n37.__)("Reset"), isEligible: (item) => { if (window?.__experimentalTemplateActivate) { return item.type === "wp_template_part" && item?.source === "custom" && item?.has_theme_file; } return isTemplateOrTemplatePart(item) && item?.source === "custom" && (Boolean(item.type === "wp_template" && item?.plugin) || item?.has_theme_file); }, icon: backup_default, supportsBulk: true, hideModalHeader: true, modalFocusOnMount: "firstContentElement", RenderModal: ({ items, closeModal: closeModal2, onActionPerformed }) => { const [isBusy, setIsBusy] = (0, import_element15.useState)(false); const { saveEditedEntityRecord } = (0, import_data19.useDispatch)(import_core_data17.store); const { createSuccessNotice, createErrorNotice } = (0, import_data19.useDispatch)(import_notices7.store); const onConfirm = async () => { try { for (const template2 of items) { await revertTemplate(template2, { allowUndo: false }); await saveEditedEntityRecord( "postType", template2.type, template2.id ); } createSuccessNotice( items.length > 1 ? (0, import_i18n37.sprintf)( /* translators: %d: The number of items. */ (0, import_i18n37.__)("%d items reset."), items.length ) : (0, import_i18n37.sprintf)( /* translators: %s: The template/part's name. */ (0, import_i18n37.__)('"%s" reset.'), getItemTitle(items[0]) ), { type: "snackbar", id: "revert-template-action" } ); } catch (error) { let fallbackErrorMessage; if (items[0].type === "wp_template") { fallbackErrorMessage = items.length === 1 ? (0, import_i18n37.__)( "An error occurred while reverting the template." ) : (0, import_i18n37.__)( "An error occurred while reverting the templates." ); } else { fallbackErrorMessage = items.length === 1 ? (0, import_i18n37.__)( "An error occurred while reverting the template part." ) : (0, import_i18n37.__)( "An error occurred while reverting the template parts." ); } const typedError = error; const errorMessage = typedError.message && typedError.code !== "unknown_error" ? typedError.message : fallbackErrorMessage; createErrorNotice(errorMessage, { type: "snackbar" }); } }; return /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(import_components15.__experimentalVStack, { spacing: "5", children: [ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(import_components15.__experimentalText, { children: (0, import_i18n37.__)("Reset to default and clear all customizations?") }), /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)(import_components15.__experimentalHStack, { justify: "right", children: [ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)( import_components15.Button, { __next40pxDefaultSize: true, variant: "tertiary", onClick: closeModal2, disabled: isBusy, accessibleWhenDisabled: true, children: (0, import_i18n37.__)("Cancel") } ), /* @__PURE__ */ (0, import_jsx_runtime96.jsx)( import_components15.Button, { __next40pxDefaultSize: true, variant: "primary", onClick: async () => { setIsBusy(true); await onConfirm(); onActionPerformed?.(items); setIsBusy(false); closeModal2?.(); }, isBusy, disabled: isBusy, accessibleWhenDisabled: true, children: (0, import_i18n37.__)("Reset") } ) ] }) ] }); } }; var reset_post_default = resetPostAction; // packages/fields/build-module/actions/duplicate-pattern.mjs var import_i18n38 = __toESM(require_i18n(), 1); var import_patterns3 = __toESM(require_patterns(), 1); var import_jsx_runtime97 = __toESM(require_jsx_runtime(), 1); var { CreatePatternModalContents, useDuplicatePatternProps } = unlock2(import_patterns3.privateApis); var duplicatePattern = { id: "duplicate-pattern", label: (0, import_i18n38._x)("Duplicate", "action label"), isEligible: (item) => item.type !== "wp_template_part", modalHeader: (0, import_i18n38._x)("Duplicate pattern", "action label"), modalFocusOnMount: "firstContentElement", RenderModal: ({ items, closeModal: closeModal2 }) => { const [item] = items; const duplicatedProps = useDuplicatePatternProps({ pattern: item, onSuccess: () => closeModal2?.() }); return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)( CreatePatternModalContents, { onClose: closeModal2, confirmLabel: (0, import_i18n38._x)("Duplicate", "action label"), ...duplicatedProps } ); } }; var duplicate_pattern_default = duplicatePattern; // node_modules/tslib/tslib.es6.mjs var __assign = function() { __assign = Object.assign || function __assign2(t4) { for (var s3, i3 = 1, n3 = arguments.length; i3 < n3; i3++) { s3 = arguments[i3]; for (var p4 in s3) if (Object.prototype.hasOwnProperty.call(s3, p4)) t4[p4] = s3[p4]; } return t4; }; return __assign.apply(this, arguments); }; // node_modules/lower-case/dist.es2015/index.js function lowerCase(str) { return str.toLowerCase(); } // node_modules/no-case/dist.es2015/index.js var DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g]; var DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi; function noCase(input, options) { if (options === void 0) { options = {}; } var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? " " : _d; var result = replace(replace(input, splitRegexp, "$1\0$2"), stripRegexp, "\0"); var start2 = 0; var end = result.length; while (result.charAt(start2) === "\0") start2++; while (result.charAt(end - 1) === "\0") end--; return result.slice(start2, end).split("\0").map(transform).join(delimiter); } function replace(input, re, value) { if (re instanceof RegExp) return input.replace(re, value); return re.reduce(function(input2, re2) { return input2.replace(re2, value); }, input); } // node_modules/dot-case/dist.es2015/index.js function dotCase(input, options) { if (options === void 0) { options = {}; } return noCase(input, __assign({ delimiter: "." }, options)); } // node_modules/param-case/dist.es2015/index.js function paramCase(input, options) { if (options === void 0) { options = {}; } return dotCase(input, __assign({ delimiter: "-" }, options)); } // node_modules/client-zip/index.js "stream" in Blob.prototype || Object.defineProperty(Blob.prototype, "stream", { value() { return new Response(this).body; } }), "setBigUint64" in DataView.prototype || Object.defineProperty(DataView.prototype, "setBigUint64", { value(e3, n3, t4) { const i3 = Number(0xffffffffn & n3), r4 = Number(n3 >> 32n); this.setUint32(e3 + (t4 ? 0 : 4), i3, t4), this.setUint32(e3 + (t4 ? 4 : 0), r4, t4); } }); var e = (e3) => new DataView(new ArrayBuffer(e3)); var n = (e3) => new Uint8Array(e3.buffer || e3); var t = (e3) => new TextEncoder().encode(String(e3)); var i = (e3) => Math.min(4294967295, Number(e3)); var r2 = (e3) => Math.min(65535, Number(e3)); function f(e3, i3) { if (void 0 === i3 || i3 instanceof Date || (i3 = new Date(i3)), e3 instanceof File) return { isFile: 1, t: i3 || new Date(e3.lastModified), i: e3.stream() }; if (e3 instanceof Response) return { isFile: 1, t: i3 || new Date(e3.headers.get("Last-Modified") || Date.now()), i: e3.body }; if (void 0 === i3) i3 = /* @__PURE__ */ new Date(); else if (isNaN(i3)) throw new Error("Invalid modification date."); if (void 0 === e3) return { isFile: 0, t: i3 }; if ("string" == typeof e3) return { isFile: 1, t: i3, i: t(e3) }; if (e3 instanceof Blob) return { isFile: 1, t: i3, i: e3.stream() }; if (e3 instanceof Uint8Array || e3 instanceof ReadableStream) return { isFile: 1, t: i3, i: e3 }; if (e3 instanceof ArrayBuffer || ArrayBuffer.isView(e3)) return { isFile: 1, t: i3, i: n(e3) }; if (Symbol.asyncIterator in e3) return { isFile: 1, t: i3, i: o(e3[Symbol.asyncIterator]()) }; throw new TypeError("Unsupported input format."); } function o(e3, n3 = e3) { return new ReadableStream({ async pull(n4) { let t4 = 0; for (; n4.desiredSize > t4; ) { const i3 = await e3.next(); if (!i3.value) { n4.close(); break; } { const e4 = a(i3.value); n4.enqueue(e4), t4 += e4.byteLength; } } }, cancel(e4) { n3.throw?.(e4); } }); } function a(e3) { return "string" == typeof e3 ? t(e3) : e3 instanceof Uint8Array ? e3 : n(e3); } function s(e3, i3, r4) { let [f3, o4] = (function(e4) { return e4 ? e4 instanceof Uint8Array ? [e4, 1] : ArrayBuffer.isView(e4) || e4 instanceof ArrayBuffer ? [n(e4), 1] : [t(e4), 0] : [void 0, 0]; })(i3); if (e3 instanceof File) return { o: d(f3 || t(e3.name)), u: BigInt(e3.size), l: o4 }; if (e3 instanceof Response) { const n3 = e3.headers.get("content-disposition"), i4 = n3 && n3.match(/;\s*filename\*?=["']?(.*?)["']?$/i), a3 = i4 && i4[1] || e3.url && new URL(e3.url).pathname.split("/").findLast(Boolean), s3 = a3 && decodeURIComponent(a3), u3 = r4 || +e3.headers.get("content-length"); return { o: d(f3 || t(s3)), u: BigInt(u3), l: o4 }; } return f3 = d(f3, void 0 !== e3 || void 0 !== r4), "string" == typeof e3 ? { o: f3, u: BigInt(t(e3).length), l: o4 } : e3 instanceof Blob ? { o: f3, u: BigInt(e3.size), l: o4 } : e3 instanceof ArrayBuffer || ArrayBuffer.isView(e3) ? { o: f3, u: BigInt(e3.byteLength), l: o4 } : { o: f3, u: u(e3, r4), l: o4 }; } function u(e3, n3) { return n3 > -1 ? BigInt(n3) : e3 ? void 0 : 0n; } function d(e3, n3 = 1) { if (!e3 || e3.every(((c6) => 47 === c6))) throw new Error("The file must have a name."); if (n3) for (; 47 === e3[e3.length - 1]; ) e3 = e3.subarray(0, -1); else 47 !== e3[e3.length - 1] && (e3 = new Uint8Array([...e3, 47])); return e3; } var l = new Uint32Array(256); for (let e3 = 0; e3 < 256; ++e3) { let n3 = e3; for (let e4 = 0; e4 < 8; ++e4) n3 = n3 >>> 1 ^ (1 & n3 && 3988292384); l[e3] = n3; } function y(e3, n3 = 0) { n3 ^= -1; for (var t4 = 0, i3 = e3.length; t4 < i3; t4++) n3 = n3 >>> 8 ^ l[255 & n3 ^ e3[t4]]; return (-1 ^ n3) >>> 0; } function w(e3, n3, t4 = 0) { const i3 = e3.getSeconds() >> 1 | e3.getMinutes() << 5 | e3.getHours() << 11, r4 = e3.getDate() | e3.getMonth() + 1 << 5 | e3.getFullYear() - 1980 << 9; n3.setUint16(t4, i3, 1), n3.setUint16(t4 + 2, r4, 1); } function B({ o: e3, l: n3 }, t4) { return 8 * (!n3 || (t4 ?? (function(e4) { try { b.decode(e4); } catch { return 0; } return 1; })(e3))); } var b = new TextDecoder("utf8", { fatal: 1 }); function p2(t4, i3 = 0) { const r4 = e(30); return r4.setUint32(0, 1347093252), r4.setUint32(4, 754976768 | i3), w(t4.t, r4, 10), r4.setUint16(26, t4.o.length, 1), n(r4); } async function* g(e3) { let { i: n3 } = e3; if ("then" in n3 && (n3 = await n3), n3 instanceof Uint8Array) yield n3, e3.m = y(n3, 0), e3.u = BigInt(n3.length); else { e3.u = 0n; const t4 = n3.getReader(); for (; ; ) { const { value: n4, done: i3 } = await t4.read(); if (i3) break; e3.m = y(n4, e3.m), e3.u += BigInt(n4.length), yield n4; } } } function I(t4, r4) { const f3 = e(16 + (r4 ? 8 : 0)); return f3.setUint32(0, 1347094280), f3.setUint32(4, t4.isFile ? t4.m : 0, 1), r4 ? (f3.setBigUint64(8, t4.u, 1), f3.setBigUint64(16, t4.u, 1)) : (f3.setUint32(8, i(t4.u), 1), f3.setUint32(12, i(t4.u), 1)), n(f3); } function v(t4, r4, f3 = 0, o4 = 0) { const a3 = e(46); return a3.setUint32(0, 1347092738), a3.setUint32(4, 755182848), a3.setUint16(8, 2048 | f3), w(t4.t, a3, 12), a3.setUint32(16, t4.isFile ? t4.m : 0, 1), a3.setUint32(20, i(t4.u), 1), a3.setUint32(24, i(t4.u), 1), a3.setUint16(28, t4.o.length, 1), a3.setUint16(30, o4, 1), a3.setUint16(40, t4.isFile ? 33204 : 16893, 1), a3.setUint32(42, i(r4), 1), n(a3); } function h(t4, i3, r4) { const f3 = e(r4); return f3.setUint16(0, 1, 1), f3.setUint16(2, r4 - 4, 1), 16 & r4 && (f3.setBigUint64(4, t4.u, 1), f3.setBigUint64(12, t4.u, 1)), f3.setBigUint64(r4 - 8, i3, 1), n(f3); } function D(e3) { return e3 instanceof File || e3 instanceof Response ? [[e3], [e3]] : [[e3.input, e3.name, e3.size], [e3.input, e3.lastModified]]; } var S = (e3) => (function(e4) { let n3 = BigInt(22), t4 = 0n, i3 = 0; for (const r4 of e4) { if (!r4.o) throw new Error("Every file must have a non-empty name."); if (void 0 === r4.u) throw new Error(`Missing size for file "${new TextDecoder().decode(r4.o)}".`); const e5 = r4.u >= 0xffffffffn, f3 = t4 >= 0xffffffffn; t4 += BigInt(46 + r4.o.length + (e5 && 8)) + r4.u, n3 += BigInt(r4.o.length + 46 + (12 * f3 | 28 * e5)), i3 || (i3 = e5); } return (i3 || t4 >= 0xffffffffn) && (n3 += BigInt(76)), n3 + t4; })((function* (e4) { for (const n3 of e4) yield s(...D(n3)[0]); })(e3)); function A(e3, n3 = {}) { const t4 = { "Content-Type": "application/zip", "Content-Disposition": "attachment" }; return ("bigint" == typeof n3.length || Number.isInteger(n3.length)) && n3.length > 0 && (t4["Content-Length"] = String(n3.length)), n3.metadata && (t4["Content-Length"] = String(S(n3.metadata))), new Response(N(e3, n3), { headers: t4 }); } function N(t4, a3 = {}) { const u3 = (function(e3) { const n3 = e3[Symbol.iterator in e3 ? Symbol.iterator : Symbol.asyncIterator](); return { async next() { const e4 = await n3.next(); if (e4.done) return e4; const [t5, i3] = D(e4.value); return { done: 0, value: Object.assign(f(...i3), s(...t5)) }; }, throw: n3.throw?.bind(n3), [Symbol.asyncIterator]() { return this; } }; })(t4); return o((async function* (t5, f3) { const o4 = []; let a4 = 0n, s3 = 0n, u4 = 0; for await (const e3 of t5) { const n3 = B(e3, f3.buffersAreUTF8); yield p2(e3, n3), yield new Uint8Array(e3.o), e3.isFile && (yield* g(e3)); const t6 = e3.u >= 0xffffffffn, i3 = 12 * (a4 >= 0xffffffffn) | 28 * t6; yield I(e3, t6), o4.push(v(e3, a4, n3, i3)), o4.push(e3.o), i3 && o4.push(h(e3, a4, i3)), t6 && (a4 += 8n), s3++, a4 += BigInt(46 + e3.o.length) + e3.u, u4 || (u4 = t6); } let d3 = 0n; for (const e3 of o4) yield e3, d3 += BigInt(e3.length); if (u4 || a4 >= 0xffffffffn) { const t6 = e(76); t6.setUint32(0, 1347094022), t6.setBigUint64(4, BigInt(44), 1), t6.setUint32(12, 755182848), t6.setBigUint64(24, s3, 1), t6.setBigUint64(32, s3, 1), t6.setBigUint64(40, d3, 1), t6.setBigUint64(48, a4, 1), t6.setUint32(56, 1347094023), t6.setBigUint64(64, a4 + d3, 1), t6.setUint32(72, 1, 1), yield n(t6); } const l3 = e(22); l3.setUint32(0, 1347093766), l3.setUint16(8, r2(s3), 1), l3.setUint16(10, r2(s3), 1), l3.setUint32(12, i(d3), 1), l3.setUint32(16, i(a4), 1), yield n(l3); })(u3, a3), u3); } // packages/fields/build-module/actions/export-pattern.mjs var import_blob2 = __toESM(require_blob(), 1); var import_i18n39 = __toESM(require_i18n(), 1); function getJsonFromItem(item) { return JSON.stringify( { __file: item.type, title: getItemTitle(item), content: typeof item.content === "string" ? item.content : item.content?.raw, syncStatus: item.wp_pattern_sync_status }, null, 2 ); } var exportPattern = { id: "export-pattern", label: (0, import_i18n39.__)("Export as JSON"), icon: download_default, supportsBulk: true, isEligible: (item) => item.type === "wp_block", callback: async (items) => { if (items.length === 1) { return (0, import_blob2.downloadBlob)( `${paramCase( getItemTitle(items[0]) || items[0].slug )}.json`, getJsonFromItem(items[0]), "application/json" ); } const nameCount = {}; const filesToZip = items.map((item) => { const name2 = paramCase(getItemTitle(item) || item.slug); nameCount[name2] = (nameCount[name2] || 0) + 1; return { name: `${name2 + (nameCount[name2] > 1 ? "-" + (nameCount[name2] - 1) : "")}.json`, lastModified: /* @__PURE__ */ new Date(), input: getJsonFromItem(item) }; }); return (0, import_blob2.downloadBlob)( (0, import_i18n39.__)("patterns-export") + ".zip", await A(filesToZip).blob(), "application/zip" ); } }; var export_pattern_default = exportPattern; // packages/fields/build-module/actions/view-post-revisions.mjs var import_url8 = __toESM(require_url(), 1); var import_i18n40 = __toESM(require_i18n(), 1); var viewPostRevisions = { id: "view-post-revisions", context: "list", label(items) { const revisionsCount = items[0]._links?.["version-history"]?.[0]?.count ?? 0; return (0, import_i18n40.sprintf)( /* translators: %d: number of revisions. */ (0, import_i18n40.__)("View revisions (%d)"), revisionsCount ); }, isEligible(post2) { if (post2.status === "trash") { return false; } const lastRevisionId = post2?._links?.["predecessor-version"]?.[0]?.id ?? null; const revisionsCount = post2?._links?.["version-history"]?.[0]?.count ?? 0; return !!lastRevisionId && revisionsCount > 1; }, callback(posts, { onActionPerformed }) { const post2 = posts[0]; const href = (0, import_url8.addQueryArgs)("revision.php", { revision: post2?._links?.["predecessor-version"]?.[0]?.id }); document.location.href = href; if (onActionPerformed) { onActionPerformed(posts); } } }; var view_post_revisions_default = viewPostRevisions; // packages/fields/build-module/actions/permanently-delete-post.mjs var import_core_data18 = __toESM(require_core_data(), 1); var import_i18n41 = __toESM(require_i18n(), 1); var import_notices8 = __toESM(require_notices(), 1); var import_element16 = __toESM(require_element(), 1); var import_data20 = __toESM(require_data(), 1); var import_components16 = __toESM(require_components(), 1); var import_html_entities4 = __toESM(require_html_entities(), 1); var import_jsx_runtime98 = __toESM(require_jsx_runtime(), 1); var permanentlyDeletePost = { id: "permanently-delete", label: (0, import_i18n41.__)("Permanently delete"), supportsBulk: true, icon: trash_default, isEligible(item) { if (isTemplateOrTemplatePart(item) || item.type === "wp_block") { return false; } const { status, permissions } = item; return status === "trash" && permissions?.delete; }, hideModalHeader: true, modalFocusOnMount: "firstContentElement", RenderModal: ({ items, closeModal: closeModal2, onActionPerformed }) => { const [isBusy, setIsBusy] = (0, import_element16.useState)(false); const { createSuccessNotice, createErrorNotice } = (0, import_data20.useDispatch)(import_notices8.store); const { deleteEntityRecord } = (0, import_data20.useDispatch)(import_core_data18.store); return /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(import_components16.__experimentalVStack, { spacing: "5", children: [ /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(import_components16.__experimentalText, { children: items.length > 1 ? (0, import_i18n41.sprintf)( // translators: %d: number of items to delete. (0, import_i18n41._n)( "Are you sure you want to permanently delete %d item?", "Are you sure you want to permanently delete %d items?", items.length ), items.length ) : (0, import_i18n41.sprintf)( // translators: %s: The post's title (0, import_i18n41.__)( 'Are you sure you want to permanently delete "%s"?' ), (0, import_html_entities4.decodeEntities)(getItemTitle(items[0])) ) }), /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(import_components16.__experimentalHStack, { justify: "right", children: [ /* @__PURE__ */ (0, import_jsx_runtime98.jsx)( import_components16.Button, { variant: "tertiary", onClick: closeModal2, disabled: isBusy, accessibleWhenDisabled: true, __next40pxDefaultSize: true, children: (0, import_i18n41.__)("Cancel") } ), /* @__PURE__ */ (0, import_jsx_runtime98.jsx)( import_components16.Button, { variant: "primary", onClick: async () => { setIsBusy(true); const promiseResult = await Promise.allSettled( items.map( (post2) => deleteEntityRecord( "postType", post2.type, post2.id, { force: true }, { throwOnError: true } ) ) ); if (promiseResult.every( ({ status }) => status === "fulfilled" )) { let successMessage; if (promiseResult.length === 1) { successMessage = (0, import_i18n41.sprintf)( /* translators: %s: The posts's title. */ (0, import_i18n41.__)('"%s" permanently deleted.'), getItemTitle(items[0]) ); } else { successMessage = (0, import_i18n41.__)( "The items were permanently deleted." ); } createSuccessNotice(successMessage, { type: "snackbar", id: "permanently-delete-post-action" }); onActionPerformed?.(items); } else { let errorMessage; if (promiseResult.length === 1) { const typedError = promiseResult[0]; if (typedError.reason?.message) { errorMessage = typedError.reason.message; } else { errorMessage = (0, import_i18n41.__)( "An error occurred while permanently deleting the item." ); } } else { const errorMessages = /* @__PURE__ */ new Set(); const failedPromises = promiseResult.filter( ({ status }) => status === "rejected" ); for (const failedPromise of failedPromises) { const typedError = failedPromise; if (typedError.reason?.message) { errorMessages.add( typedError.reason.message ); } } if (errorMessages.size === 0) { errorMessage = (0, import_i18n41.__)( "An error occurred while permanently deleting the items." ); } else if (errorMessages.size === 1) { errorMessage = (0, import_i18n41.sprintf)( /* translators: %s: an error message */ (0, import_i18n41.__)( "An error occurred while permanently deleting the items: %s" ), [...errorMessages][0] ); } else { errorMessage = (0, import_i18n41.sprintf)( /* translators: %s: a list of comma separated error messages */ (0, import_i18n41.__)( "Some errors occurred while permanently deleting the items: %s" ), [...errorMessages].join(",") ); } } createErrorNotice(errorMessage, { type: "snackbar" }); } setIsBusy(false); closeModal2?.(); }, isBusy, disabled: isBusy, accessibleWhenDisabled: true, __next40pxDefaultSize: true, children: (0, import_i18n41.__)("Delete permanently") } ) ] }) ] }); } }; var permanently_delete_post_default = permanentlyDeletePost; // packages/fields/build-module/actions/restore-post.mjs var import_core_data19 = __toESM(require_core_data(), 1); var import_i18n42 = __toESM(require_i18n(), 1); var import_notices9 = __toESM(require_notices(), 1); var restorePost = { id: "restore", label: (0, import_i18n42.__)("Restore"), isPrimary: true, icon: backup_default, supportsBulk: true, isEligible(item) { return !isTemplateOrTemplatePart(item) && item.type !== "wp_block" && item.status === "trash" && item.permissions?.update; }, async callback(posts, { registry, onActionPerformed }) { const { createSuccessNotice, createErrorNotice } = registry.dispatch(import_notices9.store); const { editEntityRecord, saveEditedEntityRecord } = registry.dispatch(import_core_data19.store); await Promise.allSettled( posts.map((post2) => { return editEntityRecord("postType", post2.type, post2.id, { status: "draft" }); }) ); const promiseResult = await Promise.allSettled( posts.map((post2) => { return saveEditedEntityRecord("postType", post2.type, post2.id, { throwOnError: true }); }) ); if (promiseResult.every(({ status }) => status === "fulfilled")) { let successMessage; if (posts.length === 1) { successMessage = (0, import_i18n42.sprintf)( /* translators: %s: The number of posts. */ (0, import_i18n42.__)('"%s" has been restored.'), getItemTitle(posts[0]) ); } else if (posts[0].type === "page") { successMessage = (0, import_i18n42.sprintf)( /* translators: %d: The number of posts. */ (0, import_i18n42.__)("%d pages have been restored."), posts.length ); } else { successMessage = (0, import_i18n42.sprintf)( /* translators: %d: The number of posts. */ (0, import_i18n42.__)("%d posts have been restored."), posts.length ); } createSuccessNotice(successMessage, { type: "snackbar", id: "restore-post-action" }); if (onActionPerformed) { onActionPerformed(posts); } } else { let errorMessage; if (promiseResult.length === 1) { const typedError = promiseResult[0]; if (typedError.reason?.message) { errorMessage = typedError.reason.message; } else { errorMessage = (0, import_i18n42.__)( "An error occurred while restoring the post." ); } } else { const errorMessages = /* @__PURE__ */ new Set(); const failedPromises = promiseResult.filter( ({ status }) => status === "rejected" ); for (const failedPromise of failedPromises) { const typedError = failedPromise; if (typedError.reason?.message) { errorMessages.add(typedError.reason.message); } } if (errorMessages.size === 0) { errorMessage = (0, import_i18n42.__)( "An error occurred while restoring the posts." ); } else if (errorMessages.size === 1) { errorMessage = (0, import_i18n42.sprintf)( /* translators: %s: an error message */ (0, import_i18n42.__)("An error occurred while restoring the posts: %s"), [...errorMessages][0] ); } else { errorMessage = (0, import_i18n42.sprintf)( /* translators: %s: a list of comma separated error messages */ (0, import_i18n42.__)( "Some errors occurred while restoring the posts: %s" ), [...errorMessages].join(",") ); } } createErrorNotice(errorMessage, { type: "snackbar" }); } } }; var restore_post_default = restorePost; // packages/fields/build-module/actions/trash-post.mjs var import_data21 = __toESM(require_data(), 1); var import_core_data20 = __toESM(require_core_data(), 1); var import_i18n43 = __toESM(require_i18n(), 1); var import_notices10 = __toESM(require_notices(), 1); var import_element17 = __toESM(require_element(), 1); var import_components17 = __toESM(require_components(), 1); var import_jsx_runtime99 = __toESM(require_jsx_runtime(), 1); var trashPost2 = { id: "move-to-trash", label: (0, import_i18n43._x)("Trash", "verb"), isPrimary: true, icon: trash_default, isEligible(item) { if (item.type === "wp_template_part" || item.type === "wp_block") { return false; } if (item.type === "wp_template" && typeof item.id === "string") { return false; } return !!item.status && !["auto-draft", "trash"].includes(item.status) && item.permissions?.delete; }, supportsBulk: true, hideModalHeader: true, modalFocusOnMount: "firstContentElement", RenderModal: ({ items, closeModal: closeModal2, onActionPerformed }) => { const [isBusy, setIsBusy] = (0, import_element17.useState)(false); const { createSuccessNotice, createErrorNotice } = (0, import_data21.useDispatch)(import_notices10.store); const { deleteEntityRecord } = (0, import_data21.useDispatch)(import_core_data20.store); return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_components17.__experimentalVStack, { spacing: "5", children: [ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_components17.__experimentalText, { children: items.length === 1 ? (0, import_i18n43.sprintf)( // translators: %s: The item's title. (0, import_i18n43.__)( 'Are you sure you want to move "%s" to the trash?' ), getItemTitle(items[0]) ) : (0, import_i18n43.sprintf)( // translators: %d: The number of items (2 or more). (0, import_i18n43._n)( "Are you sure you want to move %d item to the trash ?", "Are you sure you want to move %d items to the trash ?", items.length ), items.length ) }), /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_components17.__experimentalHStack, { justify: "right", children: [ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)( import_components17.Button, { __next40pxDefaultSize: true, variant: "tertiary", onClick: closeModal2, disabled: isBusy, accessibleWhenDisabled: true, children: (0, import_i18n43.__)("Cancel") } ), /* @__PURE__ */ (0, import_jsx_runtime99.jsx)( import_components17.Button, { __next40pxDefaultSize: true, variant: "primary", onClick: async () => { setIsBusy(true); const promiseResult = await Promise.allSettled( items.map( (item) => deleteEntityRecord( "postType", item.type, item.id.toString(), {}, { throwOnError: true } ) ) ); if (promiseResult.every( ({ status }) => status === "fulfilled" )) { let successMessage; if (promiseResult.length === 1) { successMessage = (0, import_i18n43.sprintf)( /* translators: %s: The item's title. */ (0, import_i18n43.__)('"%s" moved to the trash.'), getItemTitle(items[0]) ); } else { successMessage = (0, import_i18n43.sprintf)( /* translators: %d: The number of items. */ (0, import_i18n43._n)( "%d item moved to the trash.", "%d items moved to the trash.", items.length ), items.length ); } createSuccessNotice(successMessage, { type: "snackbar", id: "move-to-trash-action" }); } else { let errorMessage; if (promiseResult.length === 1) { const typedError = promiseResult[0]; if (typedError.reason?.message) { errorMessage = typedError.reason.message; } else { errorMessage = (0, import_i18n43.__)( "An error occurred while moving the item to the trash." ); } } else { const errorMessages = /* @__PURE__ */ new Set(); const failedPromises = promiseResult.filter( ({ status }) => status === "rejected" ); for (const failedPromise of failedPromises) { const typedError = failedPromise; if (typedError.reason?.message) { errorMessages.add( typedError.reason.message ); } } if (errorMessages.size === 0) { errorMessage = (0, import_i18n43.__)( "An error occurred while moving the items to the trash." ); } else if (errorMessages.size === 1) { errorMessage = (0, import_i18n43.sprintf)( /* translators: %s: an error message */ (0, import_i18n43.__)( "An error occurred while moving the item to the trash: %s" ), [...errorMessages][0] ); } else { errorMessage = (0, import_i18n43.sprintf)( /* translators: %s: a list of comma separated error messages */ (0, import_i18n43.__)( "Some errors occurred while moving the items to the trash: %s" ), [...errorMessages].join(",") ); } } createErrorNotice(errorMessage, { type: "snackbar" }); } if (onActionPerformed) { onActionPerformed(items); } setIsBusy(false); closeModal2?.(); }, isBusy, disabled: isBusy, accessibleWhenDisabled: true, children: (0, import_i18n43._x)("Trash", "verb") } ) ] }) ] }); } }; var trash_post_default = trashPost2; // packages/fields/build-module/actions/delete-post.mjs var import_i18n44 = __toESM(require_i18n(), 1); var import_element18 = __toESM(require_element(), 1); var import_components18 = __toESM(require_components(), 1); var import_patterns4 = __toESM(require_patterns(), 1); var import_html_entities5 = __toESM(require_html_entities(), 1); // packages/fields/build-module/mutation/index.mjs var import_notices11 = __toESM(require_notices(), 1); var import_core_data21 = __toESM(require_core_data(), 1); var import_data22 = __toESM(require_data(), 1); function getErrorMessagesFromPromises(allSettledResults) { const errorMessages = /* @__PURE__ */ new Set(); if (allSettledResults.length === 1) { const typedError = allSettledResults[0]; if (typedError.reason?.message) { errorMessages.add(typedError.reason.message); } } else { const failedPromises = allSettledResults.filter( ({ status }) => status === "rejected" ); for (const failedPromise of failedPromises) { const typedError = failedPromise; if (typedError.reason?.message) { errorMessages.add(typedError.reason.message); } } } return errorMessages; } var deletePostWithNotices = async (posts, notice, callbacks) => { const { createSuccessNotice, createErrorNotice } = (0, import_data22.dispatch)(import_notices11.store); const { deleteEntityRecord } = (0, import_data22.dispatch)(import_core_data21.store); const allSettledResults = await Promise.allSettled( posts.map((post2) => { return deleteEntityRecord( "postType", post2.type, post2.id, { force: true }, { throwOnError: true } ); }) ); if (allSettledResults.every(({ status }) => status === "fulfilled")) { let successMessage; if (allSettledResults.length === 1) { successMessage = notice.success.messages.getMessage(posts[0]); } else { successMessage = notice.success.messages.getBatchMessage(posts); } createSuccessNotice(successMessage, { type: notice.success.type ?? "snackbar", id: notice.success.id }); callbacks.onActionPerformed?.(posts); } else { const errorMessages = getErrorMessagesFromPromises(allSettledResults); let errorMessage = ""; if (allSettledResults.length === 1) { errorMessage = notice.error.messages.getMessage(errorMessages); } else { errorMessage = notice.error.messages.getBatchMessage(errorMessages); } createErrorNotice(errorMessage, { type: notice.error.type ?? "snackbar", id: notice.error.id }); callbacks.onActionError?.(); } }; // packages/fields/build-module/actions/delete-post.mjs var import_jsx_runtime100 = __toESM(require_jsx_runtime(), 1); var { PATTERN_TYPES: PATTERN_TYPES3 } = unlock2(import_patterns4.privateApis); var deletePostAction = { id: "delete-post", label: (0, import_i18n44.__)("Delete"), isPrimary: true, icon: trash_default, isEligible(post2) { if (isTemplateOrTemplatePart(post2)) { return isTemplateRemovable(post2); } return post2.type === PATTERN_TYPES3.user; }, supportsBulk: true, hideModalHeader: true, modalFocusOnMount: "firstContentElement", RenderModal: ({ items, closeModal: closeModal2, onActionPerformed }) => { const [isBusy, setIsBusy] = (0, import_element18.useState)(false); const isResetting = items.every( (item) => isTemplateOrTemplatePart(item) && item?.has_theme_file ); return /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(import_components18.__experimentalVStack, { spacing: "5", children: [ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_components18.__experimentalText, { children: items.length > 1 ? (0, import_i18n44.sprintf)( // translators: %d: number of items to delete. (0, import_i18n44._n)( "Delete %d item?", "Delete %d items?", items.length ), items.length ) : (0, import_i18n44.sprintf)( // translators: %s: The template or template part's title (0, import_i18n44._x)('Delete "%s"?', "template part"), getItemTitle(items[0]) ) }), /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)(import_components18.__experimentalHStack, { justify: "right", children: [ /* @__PURE__ */ (0, import_jsx_runtime100.jsx)( import_components18.Button, { variant: "tertiary", onClick: closeModal2, disabled: isBusy, accessibleWhenDisabled: true, __next40pxDefaultSize: true, children: (0, import_i18n44.__)("Cancel") } ), /* @__PURE__ */ (0, import_jsx_runtime100.jsx)( import_components18.Button, { variant: "primary", onClick: async () => { setIsBusy(true); const notice = { success: { messages: { getMessage: (item) => { return isResetting ? (0, import_i18n44.sprintf)( /* translators: %s: The template/part's name. */ (0, import_i18n44.__)('"%s" reset.'), (0, import_html_entities5.decodeEntities)( getItemTitle(item) ) ) : (0, import_i18n44.sprintf)( /* translators: %s: The template/part's name. */ (0, import_i18n44._x)( '"%s" deleted.', "template part" ), (0, import_html_entities5.decodeEntities)( getItemTitle(item) ) ); }, getBatchMessage: () => { return isResetting ? (0, import_i18n44.__)("Items reset.") : (0, import_i18n44.__)("Items deleted."); } } }, error: { messages: { getMessage: (error) => { if (error.size === 1) { return [...error][0]; } return isResetting ? (0, import_i18n44.__)( "An error occurred while reverting the item." ) : (0, import_i18n44.__)( "An error occurred while deleting the item." ); }, getBatchMessage: (errors) => { if (errors.size === 0) { return isResetting ? (0, import_i18n44.__)( "An error occurred while reverting the items." ) : (0, import_i18n44.__)( "An error occurred while deleting the items." ); } if (errors.size === 1) { return isResetting ? (0, import_i18n44.sprintf)( /* translators: %s: an error message */ (0, import_i18n44.__)( "An error occurred while reverting the items: %s" ), [...errors][0] ) : (0, import_i18n44.sprintf)( /* translators: %s: an error message */ (0, import_i18n44.__)( "An error occurred while deleting the items: %s" ), [...errors][0] ); } return isResetting ? (0, import_i18n44.sprintf)( /* translators: %s: a list of comma separated error messages */ (0, import_i18n44.__)( "Some errors occurred while reverting the items: %s" ), [...errors].join( "," ) ) : (0, import_i18n44.sprintf)( /* translators: %s: a list of comma separated error messages */ (0, import_i18n44.__)( "Some errors occurred while deleting the items: %s" ), [...errors].join( "," ) ); } } } }; await deletePostWithNotices(items, notice, { onActionPerformed }); setIsBusy(false); closeModal2?.(); }, isBusy, disabled: isBusy, accessibleWhenDisabled: true, __next40pxDefaultSize: true, children: (0, import_i18n44.__)("Delete") } ) ] }) ] }); } }; var delete_post_default = deletePostAction; // packages/fields/build-module/actions/duplicate-template-part.mjs var import_data25 = __toESM(require_data(), 1); var import_i18n46 = __toESM(require_i18n(), 1); var import_notices13 = __toESM(require_notices(), 1); var import_element20 = __toESM(require_element(), 1); var import_blocks5 = __toESM(require_blocks(), 1); // packages/fields/build-module/components/create-template-part-modal/index.mjs var import_components19 = __toESM(require_components(), 1); var import_compose3 = __toESM(require_compose(), 1); var import_core_data23 = __toESM(require_core_data(), 1); var import_data24 = __toESM(require_data(), 1); var import_element19 = __toESM(require_element(), 1); var import_i18n45 = __toESM(require_i18n(), 1); var import_notices12 = __toESM(require_notices(), 1); var import_blocks4 = __toESM(require_blocks(), 1); // packages/fields/build-module/components/create-template-part-modal/utils.mjs var import_data23 = __toESM(require_data(), 1); var import_core_data22 = __toESM(require_core_data(), 1); var useExistingTemplateParts = () => { return (0, import_data23.useSelect)( (select6) => select6(import_core_data22.store).getEntityRecords( "postType", "wp_template_part", { per_page: -1 } ), [] ) ?? []; }; var getUniqueTemplatePartTitle = (title, templateParts) => { const lowercaseTitle = title.toLowerCase(); const existingTitles = templateParts.map( (templatePart) => templatePart.title.rendered.toLowerCase() ); if (!existingTitles.includes(lowercaseTitle)) { return title; } let suffix = 2; while (existingTitles.includes(`${lowercaseTitle} ${suffix}`)) { suffix++; } return `${title} ${suffix}`; }; var getCleanTemplatePartSlug = (title) => { return paramCase(title).replace(/[^\w-]+/g, "") || "wp-custom-part"; }; // packages/fields/build-module/components/create-template-part-modal/index.mjs var import_jsx_runtime101 = __toESM(require_jsx_runtime(), 1); function getAreaRadioId(value, instanceId) { return `fields-create-template-part-modal__area-option-${value}-${instanceId}`; } function getAreaRadioDescriptionId(value, instanceId) { return `fields-create-template-part-modal__area-option-description-${value}-${instanceId}`; } function CreateTemplatePartModal({ modalTitle, ...restProps }) { const defaultModalTitle = (0, import_data24.useSelect)( (select6) => select6(import_core_data23.store).getPostType("wp_template_part")?.labels?.add_new_item, [] ); return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( import_components19.Modal, { title: modalTitle || defaultModalTitle, onRequestClose: restProps.closeModal, overlayClassName: "fields-create-template-part-modal", focusOnMount: "firstContentElement", size: "medium", children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(CreateTemplatePartModalContents, { ...restProps }) } ); } var getTemplatePartIcon2 = (areaOrIconName) => { if ("header" === areaOrIconName) { return header_default; } else if ("footer" === areaOrIconName) { return footer_default; } else if ("sidebar" === areaOrIconName) { return sidebar_default; } else if ("navigation-overlay" === areaOrIconName) { return navigation_overlay_default; } return symbol_filled_default; }; function CreateTemplatePartModalContents({ defaultArea = "uncategorized", blocks = [], confirmLabel = (0, import_i18n45.__)("Add"), closeModal: closeModal2, onCreate, onError, defaultTitle = "" }) { const { createErrorNotice } = (0, import_data24.useDispatch)(import_notices12.store); const { saveEntityRecord } = (0, import_data24.useDispatch)(import_core_data23.store); const existingTemplateParts = useExistingTemplateParts(); const [title, setTitle] = (0, import_element19.useState)(defaultTitle); const [area, setArea] = (0, import_element19.useState)(defaultArea); const [isSubmitting, setIsSubmitting] = (0, import_element19.useState)(false); const instanceId = (0, import_compose3.useInstanceId)(CreateTemplatePartModal); const defaultTemplatePartAreas = (0, import_data24.useSelect)( (select6) => select6(import_core_data23.store).getCurrentTheme()?.default_template_part_areas, [] ); async function createTemplatePart() { if (!title || isSubmitting) { return; } try { setIsSubmitting(true); const uniqueTitle = getUniqueTemplatePartTitle( title, existingTemplateParts ); const cleanSlug = getCleanTemplatePartSlug(uniqueTitle); const templatePart = await saveEntityRecord( "postType", "wp_template_part", { slug: cleanSlug, title: uniqueTitle, content: (0, import_blocks4.serialize)(blocks), area }, { throwOnError: true } ); await onCreate(templatePart); } catch (error) { const errorMessage = error instanceof Error && "code" in error && error.message && error.code !== "unknown_error" ? error.message : (0, import_i18n45.__)( "An error occurred while creating the template part." ); createErrorNotice(errorMessage, { type: "snackbar" }); onError?.(); } finally { setIsSubmitting(false); } } return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( "form", { onSubmit: async (event) => { event.preventDefault(); await createTemplatePart(); }, children: /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_components19.__experimentalVStack, { spacing: "4", children: [ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( import_components19.TextControl, { __next40pxDefaultSize: true, label: (0, import_i18n45.__)("Name"), value: title, onChange: setTitle, required: true } ), /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("fieldset", { className: "fields-create-template-part-modal__area-fieldset", children: [ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_components19.BaseControl.VisualLabel, { as: "legend", children: (0, import_i18n45.__)("Area") }), /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("div", { className: "fields-create-template-part-modal__area-radio-group", children: (defaultTemplatePartAreas ?? []).map( (item) => { const icon = getTemplatePartIcon2(item.icon); return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)( "div", { className: "fields-create-template-part-modal__area-radio-wrapper", children: [ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( "input", { type: "radio", id: getAreaRadioId( item.area, instanceId ), name: `fields-create-template-part-modal__area-${instanceId}`, value: item.area, checked: area === item.area, onChange: () => { setArea(item.area); }, "aria-describedby": getAreaRadioDescriptionId( item.area, instanceId ) } ), /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( import_components19.Icon, { icon, className: "fields-create-template-part-modal__area-radio-icon" } ), /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( "label", { htmlFor: getAreaRadioId( item.area, instanceId ), className: "fields-create-template-part-modal__area-radio-label", children: item.label } ), /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( import_components19.Icon, { icon: check_default, className: "fields-create-template-part-modal__area-radio-checkmark" } ), /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( "p", { className: "fields-create-template-part-modal__area-radio-description", id: getAreaRadioDescriptionId( item.area, instanceId ), children: item.description } ) ] }, item.area ); } ) }) ] }), /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(import_components19.__experimentalHStack, { justify: "right", children: [ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( import_components19.Button, { __next40pxDefaultSize: true, variant: "tertiary", onClick: () => { closeModal2(); }, children: (0, import_i18n45.__)("Cancel") } ), /* @__PURE__ */ (0, import_jsx_runtime101.jsx)( import_components19.Button, { __next40pxDefaultSize: true, variant: "primary", type: "submit", "aria-disabled": !title || isSubmitting, isBusy: isSubmitting, children: confirmLabel } ) ] }) ] }) } ); } // packages/fields/build-module/actions/duplicate-template-part.mjs var import_jsx_runtime102 = __toESM(require_jsx_runtime(), 1); var duplicateTemplatePart = { id: "duplicate-template-part", label: (0, import_i18n46._x)("Duplicate", "action label"), isEligible: (item) => item.type === "wp_template_part", modalHeader: (0, import_i18n46._x)("Duplicate template part", "action label"), modalFocusOnMount: "firstContentElement", RenderModal: ({ items, closeModal: closeModal2 }) => { const [item] = items; const blocks = (0, import_element20.useMemo)(() => { return item.blocks ?? (0, import_blocks5.parse)( typeof item.content === "string" ? item.content : item.content.raw, { __unstableSkipMigrationLogs: true } ); }, [item.content, item.blocks]); const { createSuccessNotice } = (0, import_data25.useDispatch)(import_notices13.store); function onTemplatePartSuccess(templatePart) { createSuccessNotice( (0, import_i18n46.sprintf)( // translators: %s: The new template part's title e.g. 'Call to action (copy)'. (0, import_i18n46._x)('"%s" duplicated.', "template part"), getItemTitle(templatePart) ), { type: "snackbar", id: "edit-site-patterns-success" } ); closeModal2?.(); } return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)( CreateTemplatePartModalContents, { blocks, defaultArea: item.area, defaultTitle: (0, import_i18n46.sprintf)( /* translators: %s: Existing template part title */ (0, import_i18n46._x)("%s (Copy)", "template part"), getItemTitle(item) ), onCreate: onTemplatePartSuccess, onError: closeModal2, confirmLabel: (0, import_i18n46._x)("Duplicate", "action label"), closeModal: closeModal2 ?? (() => { }) } ); } }; var duplicate_template_part_default = duplicateTemplatePart; // packages/media-fields/build-module/alt_text/index.mjs var import_i18n47 = __toESM(require_i18n(), 1); var import_components20 = __toESM(require_components(), 1); var import_jsx_runtime103 = __toESM(require_jsx_runtime(), 1); var altTextField = { id: "alt_text", type: "text", label: (0, import_i18n47.__)("Alt text"), isVisible: (item) => item?.media_type === "image", render: ({ item }) => item?.alt_text || "-", Edit: ({ field, onChange, data }) => { return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)( import_components20.TextareaControl, { label: field.label, value: data.alt_text || "", onChange: (value) => onChange({ alt_text: value }), rows: 2 } ); }, enableSorting: false, filterBy: false }; var alt_text_default = altTextField; // packages/media-fields/build-module/attached_to/index.mjs var import_i18n50 = __toESM(require_i18n(), 1); // packages/media-fields/build-module/attached_to/view.mjs var import_element21 = __toESM(require_element(), 1); var import_i18n48 = __toESM(require_i18n(), 1); // packages/media-fields/build-module/utils/get-rendered-content.mjs function getRenderedContent(content) { if (!content) { return ""; } if (typeof content === "string") { return content; } if (typeof content === "object") { return content.rendered || content.raw || ""; } return ""; } // packages/media-fields/build-module/attached_to/view.mjs var import_jsx_runtime104 = __toESM(require_jsx_runtime(), 1); function MediaAttachedToView({ item }) { const [attachedPostTitle, setAttachedPostTitle] = (0, import_element21.useState)(null); const parentId = item.post; const embeddedPostId = item._embedded?.["wp:attached-to"]?.[0]?.id; const embeddedPostTitle = item._embedded?.["wp:attached-to"]?.[0]?.title; (0, import_element21.useEffect)(() => { if (!!parentId && parentId === embeddedPostId) { setAttachedPostTitle( getRenderedContent(embeddedPostTitle) || embeddedPostId?.toString() || "" ); } if (!parentId) { setAttachedPostTitle((0, import_i18n48.__)("(Unattached)")); } }, [parentId, embeddedPostId, embeddedPostTitle]); return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_jsx_runtime104.Fragment, { children: attachedPostTitle }); } // packages/media-fields/build-module/attached_to/edit.mjs var import_core_data24 = __toESM(require_core_data(), 1); var import_components21 = __toESM(require_components(), 1); var import_i18n49 = __toESM(require_i18n(), 1); var import_element22 = __toESM(require_element(), 1); var import_compose4 = __toESM(require_compose(), 1); var import_data26 = __toESM(require_data(), 1); var import_jsx_runtime105 = __toESM(require_jsx_runtime(), 1); function MediaAttachedToEdit({ data, onChange }) { const defaultPost = !!data.post && !!data?._embedded?.["wp:attached-to"]?.[0] ? [ { label: getRenderedContent( data._embedded?.["wp:attached-to"]?.[0]?.title ), value: data.post.toString() } ] : []; const [options, setOptions] = (0, import_element22.useState)(defaultPost); const [searchResults, setSearchResults] = (0, import_element22.useState)( [] ); const [isLoading, setIsLoading] = (0, import_element22.useState)(false); const [value, setValue] = (0, import_element22.useState)( data?.post?.toString() ?? null ); const postTypes = (0, import_data26.useSelect)( (select6) => select6(import_core_data24.store).getPostTypes(), [] ); const handleDetach = () => { onChange({ post: 0, _embedded: { ...data?._embedded, "wp:attached-to": void 0 } }); setOptions([]); }; const onValueChange = async (filterValue) => { setIsLoading(true); const results = await (0, import_core_data24.__experimentalFetchLinkSuggestions)( filterValue, /* * @TODO `fetchLinkSuggestions()` should accept `perPage` as an option argument. * `isInitialSuggestions` limits the result to 3, otherwise it's hardcoded to 20. */ { type: "post", isInitialSuggestions: true }, {} ); setSearchResults(results); const mappedSuggestions = results.map((result) => { return { label: result.title, value: result.id.toString() }; }); setOptions(mappedSuggestions); setIsLoading(false); }; const handleSelectOption = (selectedPostId) => { if (!selectedPostId) { handleDetach(); return; } setValue(selectedPostId); if (selectedPostId) { const selectedPost = searchResults.find( (result) => result.id === Number(selectedPostId) ); if (selectedPost && postTypes) { const postType2 = postTypes.find( (_postType) => _postType.slug === selectedPost?.type ); const attachedTo = { ...postType2 && { type: postType2.slug }, id: Number(selectedPostId), title: { raw: selectedPost.title, rendered: selectedPost.title } }; onChange({ post: Number(selectedPostId), _embedded: { ...data?._embedded, "wp:attached-to": [attachedTo] } }); } } }; const help = !!data.post ? (0, import_element22.createInterpolateElement)( (0, import_i18n49.__)( "Search for a post or page to attach this media to or ." ), { button: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)( import_components21.Button, { __next40pxDefaultSize: true, onClick: handleDetach, variant: "link", accessibleWhenDisabled: true } ) } ) : (0, import_i18n49.__)("Search for a post or page to attach this media to."); return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)( import_components21.ComboboxControl, { className: "dataviews-media-field__attached-to", __next40pxDefaultSize: true, isLoading, label: (0, import_i18n49.__)("Attached to"), help, value, options, onFilterValueChange: (0, import_compose4.debounce)( (filterValue) => onValueChange(filterValue), 300 ), onChange: handleSelectOption, hideLabelFromVision: true } ); } // packages/media-fields/build-module/attached_to/index.mjs var attachedToField = { id: "attached_to", type: "text", label: (0, import_i18n50.__)("Attached to"), Edit: MediaAttachedToEdit, render: MediaAttachedToView, enableSorting: false, filterBy: false }; var attached_to_default = attachedToField; // packages/media-fields/build-module/author/index.mjs var import_i18n52 = __toESM(require_i18n(), 1); var import_data27 = __toESM(require_data(), 1); var import_core_data25 = __toESM(require_core_data(), 1); // packages/media-fields/build-module/author/view.mjs var import_i18n51 = __toESM(require_i18n(), 1); var import_element23 = __toESM(require_element(), 1); var import_components22 = __toESM(require_components(), 1); var import_jsx_runtime106 = __toESM(require_jsx_runtime(), 1); function AuthorView2({ item }) { const author = item?._embedded?.author?.[0]; const text = author?.name; const imageUrl = author?.avatar_urls?.[48]; const [loadingState, setLoadingState] = (0, import_element23.useState)("loading"); (0, import_element23.useEffect)(() => { setLoadingState("loading"); }, [imageUrl]); const imgRef = (0, import_element23.useCallback)((img) => { if (img?.complete) { setLoadingState("instant"); } }, []); const handleLoad = () => { if (loadingState === "loading") { setLoadingState("loaded"); } }; return /* @__PURE__ */ (0, import_jsx_runtime106.jsxs)(import_components22.__experimentalHStack, { alignment: "left", spacing: 0, children: [ !!imageUrl && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)( "div", { className: clsx_default("media-author-field__avatar", { "is-loading": loadingState === "loading", "is-loaded": loadingState === "loaded" }), children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)( "img", { ref: imgRef, onLoad: handleLoad, alt: (0, import_i18n51.__)("Author avatar"), src: imageUrl } ) } ), !imageUrl && /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("div", { className: "media-author-field__icon", children: /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(import_components22.Icon, { icon: comment_author_avatar_default }) }), /* @__PURE__ */ (0, import_jsx_runtime106.jsx)("span", { className: "media-author-field__name", children: text }) ] }); } // packages/media-fields/build-module/author/index.mjs var authorField2 = { label: (0, import_i18n52.__)("Author"), id: "author", type: "integer", getElements: async () => { const authors = await (0, import_data27.resolveSelect)(import_core_data25.store).getEntityRecords( "root", "user", { per_page: -1, who: "authors", _fields: "id,name", context: "view" } ) ?? []; return authors.map(({ id, name: name2 }) => ({ value: id, label: name2 })); }, render: AuthorView2, sort: (a3, b3, direction) => { const nameA = a3._embedded?.author?.[0]?.name || ""; const nameB = b3._embedded?.author?.[0]?.name || ""; return direction === "asc" ? nameA.localeCompare(nameB) : nameB.localeCompare(nameA); }, filterBy: { operators: ["isAny", "isNone"] }, readOnly: true }; var author_default2 = authorField2; // packages/media-fields/build-module/caption/index.mjs var import_i18n53 = __toESM(require_i18n(), 1); var import_components23 = __toESM(require_components(), 1); // packages/media-fields/build-module/utils/get-raw-content.mjs function getRawContent(content) { if (!content) { return ""; } if (typeof content === "string") { return content; } if (typeof content === "object" && "raw" in content) { return content.raw || ""; } return ""; } // packages/media-fields/build-module/caption/index.mjs var import_jsx_runtime107 = __toESM(require_jsx_runtime(), 1); var captionField = { id: "caption", type: "text", label: (0, import_i18n53.__)("Caption"), getValue: ({ item }) => getRawContent(item?.caption), render: ({ item }) => getRawContent(item?.caption) || "-", Edit: ({ field, onChange, data }) => { return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)( import_components23.TextareaControl, { label: field.label, value: getRawContent(data.caption) || "", onChange: (value) => onChange({ caption: value }), rows: 2 } ); }, enableSorting: false, filterBy: false }; var caption_default = captionField; // packages/media-fields/build-module/date_added/index.mjs var import_i18n54 = __toESM(require_i18n(), 1); var import_date4 = __toESM(require_date(), 1); var dateAddedField = { id: "date", type: "datetime", label: (0, import_i18n54.__)("Date added"), filterBy: { operators: ["before", "after"] }, format: { datetime: (0, import_date4.getSettings)().formats.datetimeAbbreviated }, readOnly: true }; var date_added_default = dateAddedField; // packages/media-fields/build-module/description/index.mjs var import_i18n55 = __toESM(require_i18n(), 1); var import_components24 = __toESM(require_components(), 1); var import_jsx_runtime108 = __toESM(require_jsx_runtime(), 1); var descriptionField = { id: "description", type: "text", label: (0, import_i18n55.__)("Description"), getValue: ({ item }) => getRawContent(item?.description), render: ({ item }) => /* @__PURE__ */ (0, import_jsx_runtime108.jsx)("div", { children: getRawContent(item?.description) || "-" }), Edit: ({ field, onChange, data }) => { return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)( import_components24.TextareaControl, { label: field.label, value: getRawContent(data.description) || "", onChange: (value) => onChange({ description: value }), rows: 5 } ); }, enableSorting: false, filterBy: false }; var description_default = descriptionField; // packages/media-fields/build-module/filename/index.mjs var import_i18n56 = __toESM(require_i18n(), 1); var import_url10 = __toESM(require_url(), 1); // packages/media-fields/build-module/filename/view.mjs var import_components25 = __toESM(require_components(), 1); var import_element24 = __toESM(require_element(), 1); var import_url9 = __toESM(require_url(), 1); var import_jsx_runtime109 = __toESM(require_jsx_runtime(), 1); var TRUNCATE_LENGTH = 15; function FileNameView({ item }) { const fileName = (0, import_element24.useMemo)( () => item?.source_url ? (0, import_url9.getFilename)(item.source_url) : null, [item?.source_url] ); if (!fileName) { return ""; } return fileName.length > TRUNCATE_LENGTH ? /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_components25.Tooltip, { text: fileName, children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_components25.__experimentalTruncate, { limit: TRUNCATE_LENGTH, ellipsizeMode: "tail", children: fileName }) }) : /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_jsx_runtime109.Fragment, { children: fileName }); } // packages/media-fields/build-module/filename/index.mjs var filenameField = { id: "filename", type: "text", label: (0, import_i18n56.__)("File name"), getValue: ({ item }) => (0, import_url10.getFilename)(item?.source_url || ""), render: FileNameView, enableSorting: false, filterBy: false, readOnly: true }; var filename_default = filenameField; // packages/media-fields/build-module/filesize/index.mjs var import_i18n57 = __toESM(require_i18n(), 1); var KB_IN_BYTES = 1024; var MB_IN_BYTES = 1024 * KB_IN_BYTES; var GB_IN_BYTES = 1024 * MB_IN_BYTES; var TB_IN_BYTES = 1024 * GB_IN_BYTES; var PB_IN_BYTES = 1024 * TB_IN_BYTES; var EB_IN_BYTES = 1024 * PB_IN_BYTES; var ZB_IN_BYTES = 1024 * EB_IN_BYTES; var YB_IN_BYTES = 1024 * ZB_IN_BYTES; function getBytesString(bytes, unitSymbol, decimals = 2) { return (0, import_i18n57.sprintf)( // translators: 1: Actual bytes of a file. 2: The unit symbol (e.g. MB). (0, import_i18n57._x)("%1$s %2$s", "file size"), bytes.toLocaleString(void 0, { minimumFractionDigits: 0, maximumFractionDigits: decimals }), unitSymbol ); } function formatFileSize(bytes, decimals = 2) { if (bytes === 0) { return getBytesString(0, (0, import_i18n57._x)("B", "unit symbol"), decimals); } const quant = { /* translators: Unit symbol for yottabyte. */ [(0, import_i18n57._x)("YB", "unit symbol")]: YB_IN_BYTES, /* translators: Unit symbol for zettabyte. */ [(0, import_i18n57._x)("ZB", "unit symbol")]: ZB_IN_BYTES, /* translators: Unit symbol for exabyte. */ [(0, import_i18n57._x)("EB", "unit symbol")]: EB_IN_BYTES, /* translators: Unit symbol for petabyte. */ [(0, import_i18n57._x)("PB", "unit symbol")]: PB_IN_BYTES, /* translators: Unit symbol for terabyte. */ [(0, import_i18n57._x)("TB", "unit symbol")]: TB_IN_BYTES, /* translators: Unit symbol for gigabyte. */ [(0, import_i18n57._x)("GB", "unit symbol")]: GB_IN_BYTES, /* translators: Unit symbol for megabyte. */ [(0, import_i18n57._x)("MB", "unit symbol")]: MB_IN_BYTES, /* translators: Unit symbol for kilobyte. */ [(0, import_i18n57._x)("KB", "unit symbol")]: KB_IN_BYTES, /* translators: Unit symbol for byte. */ [(0, import_i18n57._x)("B", "unit symbol")]: 1 }; for (const [unit, mag] of Object.entries(quant)) { if (bytes >= mag) { return getBytesString(bytes / mag, unit, decimals); } } return ""; } var filesizeField = { id: "filesize", type: "text", label: (0, import_i18n57.__)("File size"), getValue: ({ item }) => item?.media_details?.filesize ? formatFileSize(item?.media_details?.filesize) : "", isVisible: (item) => { return !!item?.media_details?.filesize; }, enableSorting: false, filterBy: false, readOnly: true }; var filesize_default = filesizeField; // packages/media-fields/build-module/media_dimensions/index.mjs var import_i18n58 = __toESM(require_i18n(), 1); var mediaDimensionsField = { id: "media_dimensions", type: "text", label: (0, import_i18n58.__)("Dimensions"), getValue: ({ item }) => item?.media_details?.width && item?.media_details?.height ? (0, import_i18n58.sprintf)( // translators: 1: Width. 2: Height. (0, import_i18n58._x)("%1$s \xD7 %2$s", "image dimensions"), item?.media_details?.width?.toString(), item?.media_details?.height?.toString() ) : "", isVisible: (item) => { return !!(item?.media_details?.width && item?.media_details?.height); }, enableSorting: false, filterBy: false, readOnly: true }; var media_dimensions_default = mediaDimensionsField; // packages/media-fields/build-module/mime_type/index.mjs var import_i18n59 = __toESM(require_i18n(), 1); var mimeTypeField = { id: "mime_type", type: "text", label: (0, import_i18n59.__)("File type"), getValue: ({ item }) => item?.mime_type || "", render: ({ item }) => item?.mime_type || "-", // Disable sorting until REST API support for ordering my `mime_type` is added. // See: https://core.trac.wordpress.org/ticket/64073 enableSorting: false, filterBy: false, readOnly: true }; var mime_type_default = mimeTypeField; // packages/editor/build-module/dataviews/fields/content-preview/index.mjs var import_i18n121 = __toESM(require_i18n(), 1); // packages/editor/build-module/dataviews/fields/content-preview/content-preview-view.mjs var import_i18n120 = __toESM(require_i18n(), 1); var import_block_editor34 = __toESM(require_block_editor(), 1); var import_data71 = __toESM(require_data(), 1); var import_core_data51 = __toESM(require_core_data(), 1); // packages/editor/build-module/components/provider/index.mjs var import_element47 = __toESM(require_element(), 1); var import_data55 = __toESM(require_data(), 1); var import_i18n74 = __toESM(require_i18n(), 1); var import_core_data37 = __toESM(require_core_data(), 1); var import_block_editor18 = __toESM(require_block_editor(), 1); var import_notices16 = __toESM(require_notices(), 1); var import_patterns7 = __toESM(require_patterns(), 1); var import_blocks14 = __toESM(require_blocks(), 1); // packages/editor/build-module/components/provider/with-registry-provider.mjs var import_element25 = __toESM(require_element(), 1); var import_data28 = __toESM(require_data(), 1); var import_compose5 = __toESM(require_compose(), 1); var import_block_editor5 = __toESM(require_block_editor(), 1); var import_jsx_runtime110 = __toESM(require_jsx_runtime(), 1); function getSubRegistry(subRegistries, registry, useSubRegistry) { if (!useSubRegistry) { return registry; } let subRegistry = subRegistries.get(registry); if (!subRegistry) { subRegistry = (0, import_data28.createRegistry)( { "core/block-editor": import_block_editor5.storeConfig }, registry ); subRegistry.registerStore("core/editor", storeConfig); subRegistries.set(registry, subRegistry); } return subRegistry; } var withRegistryProvider = (0, import_compose5.createHigherOrderComponent)( (WrappedComponent) => ({ useSubRegistry = true, ...props }) => { const registry = (0, import_data28.useRegistry)(); const [subRegistries] = (0, import_element25.useState)(() => /* @__PURE__ */ new WeakMap()); const subRegistry = getSubRegistry( subRegistries, registry, useSubRegistry ); if (subRegistry === registry) { return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(WrappedComponent, { registry, ...props }); } return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(import_data28.RegistryProvider, { value: subRegistry, children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(WrappedComponent, { registry: subRegistry, ...props }) }); }, "withRegistryProvider" ); var with_registry_provider_default = withRegistryProvider; // packages/editor/build-module/components/provider/use-block-editor-settings.mjs var import_element27 = __toESM(require_element(), 1); var import_data33 = __toESM(require_data(), 1); var import_core_data29 = __toESM(require_core_data(), 1); var import_i18n62 = __toESM(require_i18n(), 1); var import_preferences4 = __toESM(require_preferences(), 1); var import_compose6 = __toESM(require_compose(), 1); var import_blocks8 = __toESM(require_blocks(), 1); var import_block_editor7 = __toESM(require_block_editor(), 1); // packages/editor/build-module/components/media-categories/index.mjs var import_i18n60 = __toESM(require_i18n(), 1); var import_data29 = __toESM(require_data(), 1); var import_html_entities6 = __toESM(require_html_entities(), 1); var import_core_data26 = __toESM(require_core_data(), 1); var getExternalLink = (url, text) => `${text}`; var getExternalLinkAttributes = (url) => `href="${url}" target="_blank" rel="noreferrer noopener"`; var getOpenverseLicense = (license, licenseVersion) => { let licenseName = license.trim(); if (license !== "pdm") { licenseName = license.toUpperCase().replace("SAMPLING", "Sampling"); } if (licenseVersion) { licenseName += ` ${licenseVersion}`; } if (!["pdm", "cc0"].includes(license)) { licenseName = `CC ${licenseName}`; } return licenseName; }; var getOpenverseCaption = (item) => { const { title, foreign_landing_url: foreignLandingUrl, creator, creator_url: creatorUrl, license, license_version: licenseVersion, license_url: licenseUrl } = item; const fullLicense = getOpenverseLicense(license, licenseVersion); const _creator = (0, import_html_entities6.decodeEntities)(creator); let _caption; if (_creator) { _caption = title ? (0, import_i18n60.sprintf)( // translators: %1s: Title of a media work from Openverse; %2$s: Name of the work's creator; %3s: Work's licence e.g: "CC0 1.0". (0, import_i18n60._x)('"%1$s" by %2$s/ %3$s', "caption"), getExternalLink( foreignLandingUrl, (0, import_html_entities6.decodeEntities)(title) ), creatorUrl ? getExternalLink(creatorUrl, _creator) : _creator, licenseUrl ? getExternalLink( `${licenseUrl}?ref=openverse`, fullLicense ) : fullLicense ) : (0, import_i18n60.sprintf)( // translators: %1s: Link attributes for a given Openverse media work; %2s: Name of the work's creator; %3s: Works's licence e.g: "CC0 1.0". (0, import_i18n60._x)("Work by %2$s/ %3$s", "caption"), getExternalLinkAttributes(foreignLandingUrl), creatorUrl ? getExternalLink(creatorUrl, _creator) : _creator, licenseUrl ? getExternalLink( `${licenseUrl}?ref=openverse`, fullLicense ) : fullLicense ); } else { _caption = title ? (0, import_i18n60.sprintf)( // translators: %1s: Title of a media work from Openverse; %2s: Work's licence e.g: "CC0 1.0". (0, import_i18n60._x)('"%1$s"/ %2$s', "caption"), getExternalLink( foreignLandingUrl, (0, import_html_entities6.decodeEntities)(title) ), licenseUrl ? getExternalLink( `${licenseUrl}?ref=openverse`, fullLicense ) : fullLicense ) : (0, import_i18n60.sprintf)( // translators: %1s: Link attributes for a given Openverse media work; %2s: Works's licence e.g: "CC0 1.0". (0, import_i18n60._x)("Work/ %2$s", "caption"), getExternalLinkAttributes(foreignLandingUrl), licenseUrl ? getExternalLink( `${licenseUrl}?ref=openverse`, fullLicense ) : fullLicense ); } return _caption.replace(/\s{2}/g, " "); }; var coreMediaFetch = async (query = {}) => { const mediaItems = await (0, import_data29.resolveSelect)(import_core_data26.store).getEntityRecords( "postType", "attachment", { ...query, orderBy: !!query?.search ? "relevance" : "date" } ); return mediaItems.map((mediaItem) => ({ ...mediaItem, alt: mediaItem.alt_text, url: mediaItem.source_url, previewUrl: mediaItem.media_details?.sizes?.medium?.source_url, caption: mediaItem.caption?.raw })); }; var inserterMediaCategories = [ { name: "images", labels: { name: (0, import_i18n60.__)("Images"), search_items: (0, import_i18n60.__)("Search images") }, mediaType: "image", async fetch(query = {}) { return coreMediaFetch({ ...query, media_type: "image" }); } }, { name: "videos", labels: { name: (0, import_i18n60.__)("Videos"), search_items: (0, import_i18n60.__)("Search videos") }, mediaType: "video", async fetch(query = {}) { return coreMediaFetch({ ...query, media_type: "video" }); } }, { name: "audio", labels: { name: (0, import_i18n60.__)("Audio"), search_items: (0, import_i18n60.__)("Search audio") }, mediaType: "audio", async fetch(query = {}) { return coreMediaFetch({ ...query, media_type: "audio" }); } }, { name: "openverse", labels: { name: (0, import_i18n60.__)("Openverse"), search_items: (0, import_i18n60.__)("Search Openverse") }, mediaType: "image", async fetch(query = {}) { const defaultArgs = { mature: false, excluded_source: "flickr,inaturalist,wikimedia", license: "pdm,cc0" }; const finalQuery = { ...query, ...defaultArgs }; const mapFromInserterMediaRequest = { per_page: "page_size", search: "q" }; const url = new URL("https://api.openverse.org/v1/images/"); Object.entries(finalQuery).forEach(([key, value]) => { const queryKey = mapFromInserterMediaRequest[key] || key; url.searchParams.set(queryKey, value); }); const response = await window.fetch(url, { headers: { "User-Agent": "WordPress/inserter-media-fetch" } }); const jsonResponse = await response.json(); const results = jsonResponse.results; return results.map((result) => ({ ...result, // This is a temp solution for better titles, until Openverse API // completes the cleaning up of some titles of their upstream data. title: result.title?.toLowerCase().startsWith("file:") ? result.title.slice(5) : result.title, sourceId: result.id, id: void 0, caption: getOpenverseCaption(result), previewUrl: result.thumbnail })); }, getReportUrl: ({ sourceId }) => `https://wordpress.org/openverse/image/${sourceId}/report/`, isExternalResource: true } ]; var media_categories_default = inserterMediaCategories; // packages/editor/build-module/utils/media-upload/on-success.mjs var import_data30 = __toESM(require_data(), 1); var import_core_data27 = __toESM(require_core_data(), 1); function mediaUploadOnSuccess(attachments) { const { invalidateResolution } = (0, import_data30.dispatch)(import_core_data27.store); for (const attachment of attachments) { if (attachment.id) { invalidateResolution("getEntityRecord", [ "postType", "attachment", attachment.id, { context: "view" } ]); invalidateResolution("getEntityRecord", [ "postType", "attachment", attachment.id ]); } } } // packages/editor/build-module/utils/media-sideload/index.mjs var import_media_utils3 = __toESM(require_media_utils(), 1); var { sideloadMedia: mediaSideload } = unlock(import_media_utils3.privateApis); var media_sideload_default = mediaSideload; // packages/editor/build-module/utils/media-finalize/index.mjs var import_api_fetch3 = __toESM(require_api_fetch(), 1); async function mediaFinalize(id) { await (0, import_api_fetch3.default)({ path: `/wp/v2/media/${id}/finalize`, method: "POST" }); } // packages/editor/build-module/components/global-styles-provider/index.mjs var import_block_editor6 = __toESM(require_block_editor(), 1); var import_core_data28 = __toESM(require_core_data(), 1); var import_data32 = __toESM(require_data(), 1); var import_element26 = __toESM(require_element(), 1); // packages/global-styles-engine/build-module/utils/object.mjs function setImmutably(object, path, value) { path = Array.isArray(path) ? [...path] : [path]; object = Array.isArray(object) ? [...object] : { ...object }; const leaf = path.pop(); let prev = object; for (const key of path) { const lvl = prev[key]; prev = prev[key] = Array.isArray(lvl) ? [...lvl] : { ...lvl }; } prev[leaf] = value; return object; } var getValueFromObjectPath = (object, path, defaultValue) => { const arrayPath = Array.isArray(path) ? path : path.split("."); let value = object; arrayPath.forEach((fieldName) => { value = value?.[fieldName]; }); return value ?? defaultValue; }; // packages/global-styles-engine/build-module/settings/get-setting.mjs var VALID_SETTINGS = [ "appearanceTools", "useRootPaddingAwareAlignments", "background.backgroundImage", "background.backgroundRepeat", "background.backgroundSize", "background.backgroundPosition", "border.color", "border.radius", "border.radiusSizes", "border.style", "border.width", "shadow.presets", "shadow.defaultPresets", "color.background", "color.button", "color.caption", "color.custom", "color.customDuotone", "color.customGradient", "color.defaultDuotone", "color.defaultGradients", "color.defaultPalette", "color.duotone", "color.gradients", "color.heading", "color.link", "color.palette", "color.text", "custom", "dimensions.aspectRatio", "dimensions.height", "dimensions.minHeight", "dimensions.width", "dimensions.dimensionSizes", "layout.contentSize", "layout.definitions", "layout.wideSize", "lightbox.enabled", "lightbox.allowEditing", "position.fixed", "position.sticky", "spacing.customSpacingSize", "spacing.defaultSpacingSizes", "spacing.spacingSizes", "spacing.spacingScale", "spacing.blockGap", "spacing.margin", "spacing.padding", "spacing.units", "typography.fluid", "typography.customFontSize", "typography.defaultFontSizes", "typography.dropCap", "typography.fontFamilies", "typography.fontSizes", "typography.fontStyle", "typography.fontWeight", "typography.letterSpacing", "typography.lineHeight", "typography.textAlign", "typography.textColumns", "typography.textDecoration", "typography.textIndent", "typography.textTransform", "typography.writingMode" ]; function getSetting(globalStyles, path, blockName) { const appendedBlockPath = blockName ? ".blocks." + blockName : ""; const appendedPropertyPath = path ? "." + path : ""; const contextualPath = `settings${appendedBlockPath}${appendedPropertyPath}`; const globalPath = `settings${appendedPropertyPath}`; if (path) { return getValueFromObjectPath(globalStyles, contextualPath) ?? getValueFromObjectPath(globalStyles, globalPath); } let result = {}; VALID_SETTINGS.forEach((setting) => { const value = getValueFromObjectPath( globalStyles, `settings${appendedBlockPath}.${setting}` ) ?? getValueFromObjectPath(globalStyles, `settings.${setting}`); if (value !== void 0) { result = setImmutably(result, setting.split("."), value); } }); return result; } // packages/global-styles-engine/build-module/settings/set-setting.mjs function setSetting(globalStyles, path, newValue, blockName) { const appendedBlockPath = blockName ? ".blocks." + blockName : ""; const appendedPropertyPath = path ? "." + path : ""; const finalPath = `settings${appendedBlockPath}${appendedPropertyPath}`; return setImmutably( globalStyles, finalPath.split("."), newValue ); } // packages/global-styles-engine/build-module/utils/common.mjs var import_style_engine = __toESM(require_style_engine(), 1); // packages/global-styles-engine/build-module/utils/fluid.mjs var DEFAULT_MAXIMUM_VIEWPORT_WIDTH = "1600px"; var DEFAULT_MINIMUM_VIEWPORT_WIDTH = "320px"; var DEFAULT_SCALE_FACTOR = 1; var DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MIN = 0.25; var DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MAX = 0.75; var DEFAULT_MINIMUM_FONT_SIZE_LIMIT = "14px"; function getComputedFluidTypographyValue({ minimumFontSize, maximumFontSize, fontSize, minimumViewportWidth = DEFAULT_MINIMUM_VIEWPORT_WIDTH, maximumViewportWidth = DEFAULT_MAXIMUM_VIEWPORT_WIDTH, scaleFactor = DEFAULT_SCALE_FACTOR, minimumFontSizeLimit }) { minimumFontSizeLimit = !!getTypographyValueAndUnit(minimumFontSizeLimit) ? minimumFontSizeLimit : DEFAULT_MINIMUM_FONT_SIZE_LIMIT; if (fontSize) { const fontSizeParsed = getTypographyValueAndUnit(fontSize); if (!fontSizeParsed?.unit || !fontSizeParsed?.value) { return null; } const minimumFontSizeLimitParsed = getTypographyValueAndUnit( minimumFontSizeLimit, { coerceTo: fontSizeParsed.unit } ); if (!!minimumFontSizeLimitParsed?.value && !minimumFontSize && !maximumFontSize) { if (fontSizeParsed?.value <= minimumFontSizeLimitParsed?.value) { return null; } } if (!maximumFontSize) { maximumFontSize = `${fontSizeParsed.value}${fontSizeParsed.unit}`; } if (!minimumFontSize) { const fontSizeValueInPx = fontSizeParsed.unit === "px" ? fontSizeParsed.value : fontSizeParsed.value * 16; const minimumFontSizeFactor = Math.min( Math.max( 1 - 0.075 * Math.log2(fontSizeValueInPx), DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MIN ), DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MAX ); const calculatedMinimumFontSize = roundToPrecision( fontSizeParsed.value * minimumFontSizeFactor, 3 ); if (!!minimumFontSizeLimitParsed?.value && calculatedMinimumFontSize < minimumFontSizeLimitParsed?.value) { minimumFontSize = `${minimumFontSizeLimitParsed.value}${minimumFontSizeLimitParsed.unit}`; } else { minimumFontSize = `${calculatedMinimumFontSize}${fontSizeParsed.unit}`; } } } const minimumFontSizeParsed = getTypographyValueAndUnit(minimumFontSize); const fontSizeUnit = minimumFontSizeParsed?.unit || "rem"; const maximumFontSizeParsed = getTypographyValueAndUnit(maximumFontSize, { coerceTo: fontSizeUnit }); if (!minimumFontSizeParsed || !maximumFontSizeParsed) { return null; } const minimumFontSizeRem = getTypographyValueAndUnit(minimumFontSize, { coerceTo: "rem" }); const maximumViewportWidthParsed = getTypographyValueAndUnit( maximumViewportWidth, { coerceTo: fontSizeUnit } ); const minimumViewportWidthParsed = getTypographyValueAndUnit( minimumViewportWidth, { coerceTo: fontSizeUnit } ); if (!maximumViewportWidthParsed || !minimumViewportWidthParsed || !minimumFontSizeRem) { return null; } const linearDenominator = maximumViewportWidthParsed.value - minimumViewportWidthParsed.value; if (!linearDenominator) { return null; } const minViewportWidthOffsetValue = roundToPrecision( minimumViewportWidthParsed.value / 100, 3 ); const viewportWidthOffset = roundToPrecision(minViewportWidthOffsetValue, 3) + fontSizeUnit; const linearFactor = 100 * ((maximumFontSizeParsed.value - minimumFontSizeParsed.value) / linearDenominator); const linearFactorScaled = roundToPrecision( (linearFactor || 1) * scaleFactor, 3 ); const fluidTargetFontSize = `${minimumFontSizeRem.value}${minimumFontSizeRem.unit} + ((1vw - ${viewportWidthOffset}) * ${linearFactorScaled})`; return `clamp(${minimumFontSize}, ${fluidTargetFontSize}, ${maximumFontSize})`; } function getTypographyValueAndUnit(rawValue, options = {}) { if (typeof rawValue !== "string" && typeof rawValue !== "number") { return null; } if (isFinite(rawValue)) { rawValue = `${rawValue}px`; } const { coerceTo, rootSizeValue, acceptableUnits } = { coerceTo: "", // Default browser font size. Later we could inject some JS to compute this `getComputedStyle( document.querySelector( "html" ) ).fontSize`. rootSizeValue: 16, acceptableUnits: ["rem", "px", "em"], ...options }; const acceptableUnitsGroup = acceptableUnits?.join("|"); const regexUnits = new RegExp( `^(\\d*\\.?\\d+)(${acceptableUnitsGroup}){1,1}$` ); const matches = rawValue.toString().match(regexUnits); if (!matches || matches.length < 3) { return null; } let [, value, unit] = matches; let returnValue = parseFloat(value); if ("px" === coerceTo && ("em" === unit || "rem" === unit)) { returnValue = returnValue * rootSizeValue; unit = coerceTo; } if ("px" === unit && ("em" === coerceTo || "rem" === coerceTo)) { returnValue = returnValue / rootSizeValue; unit = coerceTo; } if (("em" === coerceTo || "rem" === coerceTo) && ("em" === unit || "rem" === unit)) { unit = coerceTo; } if (!unit) { return null; } return { value: roundToPrecision(returnValue, 3), unit }; } function roundToPrecision(value, digits = 3) { const base = Math.pow(10, digits); return Math.round(value * base) / base; } // packages/global-styles-engine/build-module/utils/typography.mjs function isFluidTypographyEnabled(typographySettings) { const fluidSettings = typographySettings?.fluid; return true === fluidSettings || fluidSettings && typeof fluidSettings === "object" && Object.keys(fluidSettings).length > 0; } function getFluidTypographyOptionsFromSettings(settings) { const typographySettings = settings?.typography ?? {}; const layoutSettings = settings?.layout; const defaultMaxViewportWidth = getTypographyValueAndUnit( layoutSettings?.wideSize ) ? layoutSettings?.wideSize : null; return isFluidTypographyEnabled(typographySettings) && defaultMaxViewportWidth ? { fluid: { maxViewportWidth: defaultMaxViewportWidth, ...typeof typographySettings.fluid === "object" ? typographySettings.fluid : {} } } : { fluid: typographySettings?.fluid }; } function getTypographyFontSizeValue(preset, settings) { const { size: defaultSize } = preset; if (!defaultSize || "0" === defaultSize || false === preset?.fluid) { return defaultSize; } if (!isFluidTypographyEnabled(settings?.typography) && !isFluidTypographyEnabled(preset)) { return defaultSize; } const fluidTypographySettings = getFluidTypographyOptionsFromSettings(settings)?.fluid ?? {}; const fluidFontSizeValue = getComputedFluidTypographyValue({ minimumFontSize: typeof preset?.fluid === "boolean" ? void 0 : preset?.fluid?.min, maximumFontSize: typeof preset?.fluid === "boolean" ? void 0 : preset?.fluid?.max, fontSize: defaultSize, minimumFontSizeLimit: typeof fluidTypographySettings === "object" ? fluidTypographySettings?.minFontSize : void 0, maximumViewportWidth: typeof fluidTypographySettings === "object" ? fluidTypographySettings?.maxViewportWidth : void 0, minimumViewportWidth: typeof fluidTypographySettings === "object" ? fluidTypographySettings?.minViewportWidth : void 0 }); if (!!fluidFontSizeValue) { return fluidFontSizeValue; } return defaultSize; } // packages/global-styles-engine/build-module/utils/common.mjs var ROOT_BLOCK_SELECTOR = "body"; var ROOT_CSS_PROPERTIES_SELECTOR = ":root"; var PRESET_METADATA = [ { path: ["color", "palette"], valueKey: "color", cssVarInfix: "color", classes: [ { classSuffix: "color", propertyName: "color" }, { classSuffix: "background-color", propertyName: "background-color" }, { classSuffix: "border-color", propertyName: "border-color" } ] }, { path: ["color", "gradients"], valueKey: "gradient", cssVarInfix: "gradient", classes: [ { classSuffix: "gradient-background", propertyName: "background" } ] }, { path: ["color", "duotone"], valueKey: "colors", cssVarInfix: "duotone", valueFunc: ({ slug }) => `url( '#wp-duotone-${slug}' )`, classes: [] }, { path: ["shadow", "presets"], valueKey: "shadow", cssVarInfix: "shadow", classes: [] }, { path: ["typography", "fontSizes"], valueFunc: (preset, settings) => getTypographyFontSizeValue(preset, settings), valueKey: "size", cssVarInfix: "font-size", classes: [{ classSuffix: "font-size", propertyName: "font-size" }] }, { path: ["typography", "fontFamilies"], valueKey: "fontFamily", cssVarInfix: "font-family", classes: [ { classSuffix: "font-family", propertyName: "font-family" } ] }, { path: ["spacing", "spacingSizes"], valueKey: "size", cssVarInfix: "spacing", valueFunc: ({ size: size3 }) => size3, classes: [] }, { path: ["border", "radiusSizes"], valueKey: "size", cssVarInfix: "border-radius", classes: [] }, { path: ["dimensions", "dimensionSizes"], valueKey: "size", cssVarInfix: "dimension", classes: [] } ]; function scopeSelector(scope, selector) { if (!scope || !selector) { return selector; } const scopes = scope.split(","); const selectors = selector.split(","); const selectorsScoped = []; scopes.forEach((outer) => { selectors.forEach((inner) => { selectorsScoped.push(`${outer.trim()} ${inner.trim()}`); }); }); return selectorsScoped.join(", "); } function scopeFeatureSelectors(scope, selectors) { if (!scope || !selectors) { return; } const featureSelectors = {}; Object.entries(selectors).forEach(([feature, selector]) => { if (typeof selector === "string") { featureSelectors[feature] = scopeSelector(scope, selector); } if (typeof selector === "object") { featureSelectors[feature] = {}; Object.entries(selector).forEach( ([subfeature, subfeatureSelector]) => { featureSelectors[feature][subfeature] = scopeSelector( scope, subfeatureSelector ); } ); } }); return featureSelectors; } function appendToSelector(selector, toAppend) { if (!selector.includes(",")) { return selector + toAppend; } const selectors = selector.split(","); const newSelectors = selectors.map((sel) => sel + toAppend); return newSelectors.join(","); } function getBlockStyleVariationSelector(variation, blockSelector) { const variationClass = `.is-style-${variation}`; if (!blockSelector) { return variationClass; } const ancestorRegex = /((?::\([^)]+\))?\s*)([^\s:]+)/; const addVariationClass = (_match, group1, group2) => { return group1 + group2 + variationClass; }; const result = blockSelector.split(",").map((part) => part.replace(ancestorRegex, addVariationClass)); return result.join(","); } function getResolvedRefValue(ruleValue, tree) { if (!ruleValue || !tree) { return ruleValue; } if (typeof ruleValue === "object" && "ref" in ruleValue && ruleValue?.ref) { const resolvedRuleValue = (0, import_style_engine.getCSSValueFromRawStyle)( getValueFromObjectPath(tree, ruleValue.ref) ); if (typeof resolvedRuleValue === "object" && resolvedRuleValue !== null && "ref" in resolvedRuleValue && resolvedRuleValue?.ref) { return void 0; } if (resolvedRuleValue === void 0) { return ruleValue; } return resolvedRuleValue; } return ruleValue; } function getResolvedThemeFilePath(file, themeFileURIs) { if (!file || !themeFileURIs || !Array.isArray(themeFileURIs)) { return file; } const uri = themeFileURIs.find( (themeFileUri) => themeFileUri?.name === file ); if (!uri?.href) { return file; } return uri?.href; } function getResolvedValue(ruleValue, tree) { if (!ruleValue || !tree) { return ruleValue; } const resolvedValue = getResolvedRefValue(ruleValue, tree); if (typeof resolvedValue === "object" && resolvedValue !== null && "url" in resolvedValue && resolvedValue?.url) { resolvedValue.url = getResolvedThemeFilePath( resolvedValue.url, tree?._links?.["wp:theme-file"] ); } return resolvedValue; } function findInPresetsBy(settings, blockName, presetPath = [], presetProperty = "slug", presetValueValue) { const orderedPresetsByOrigin = [ blockName ? getValueFromObjectPath(settings, [ "blocks", blockName, ...presetPath ]) : void 0, getValueFromObjectPath(settings, presetPath) ].filter(Boolean); for (const presetByOrigin of orderedPresetsByOrigin) { if (presetByOrigin) { const origins = ["custom", "theme", "default"]; for (const origin of origins) { const presets = presetByOrigin[origin]; if (presets) { const presetObject = presets.find( (preset) => preset[presetProperty] === presetValueValue ); if (presetObject) { if (presetProperty === "slug") { return presetObject; } const highestPresetObjectWithSameSlug = findInPresetsBy( settings, blockName, presetPath, "slug", presetObject.slug ); if (highestPresetObjectWithSameSlug[presetProperty] === presetObject[presetProperty]) { return presetObject; } return void 0; } } } } } } function getValueFromPresetVariable(features, blockName, variable, [presetType, slug] = []) { const metadata = PRESET_METADATA.find( (data) => data.cssVarInfix === presetType ); if (!metadata || !features.settings) { return variable; } const presetObject = findInPresetsBy( features.settings, blockName, metadata.path, "slug", slug ); if (presetObject) { const { valueKey } = metadata; const result = presetObject[valueKey]; return getValueFromVariable(features, blockName, result); } return variable; } function getValueFromCustomVariable(features, blockName, variable, path = []) { const result = (blockName ? getValueFromObjectPath(features?.settings ?? {}, [ "blocks", blockName, "custom", ...path ]) : void 0) ?? getValueFromObjectPath(features?.settings ?? {}, [ "custom", ...path ]); if (!result) { return variable; } return getValueFromVariable(features, blockName, result); } function getValueFromVariable(features, blockName, variable) { if (!variable || typeof variable !== "string") { if (typeof variable === "object" && variable !== null && "ref" in variable && typeof variable.ref === "string") { const resolvedVariable = getValueFromObjectPath( features, variable.ref ); if (!resolvedVariable || typeof resolvedVariable === "object" && "ref" in resolvedVariable) { return resolvedVariable; } variable = resolvedVariable; } else { return variable; } } const USER_VALUE_PREFIX = "var:"; const THEME_VALUE_PREFIX = "var(--wp--"; const THEME_VALUE_SUFFIX = ")"; let parsedVar; if (variable.startsWith(USER_VALUE_PREFIX)) { parsedVar = variable.slice(USER_VALUE_PREFIX.length).split("|"); } else if (variable.startsWith(THEME_VALUE_PREFIX) && variable.endsWith(THEME_VALUE_SUFFIX)) { parsedVar = variable.slice(THEME_VALUE_PREFIX.length, -THEME_VALUE_SUFFIX.length).split("--"); } else { return variable; } const [type, ...path] = parsedVar; if (type === "preset") { return getValueFromPresetVariable( features, blockName, variable, path ); } if (type === "custom") { return getValueFromCustomVariable( features, blockName, variable, path ); } return variable; } // packages/global-styles-engine/build-module/settings/get-style.mjs function getStyle(globalStyles, path, blockName, shouldDecodeEncode = true) { const appendedPath = path ? "." + path : ""; const finalPath = !blockName ? `styles${appendedPath}` : `styles.blocks.${blockName}${appendedPath}`; if (!globalStyles) { return void 0; } const rawResult = getValueFromObjectPath(globalStyles, finalPath); const result = shouldDecodeEncode ? getValueFromVariable(globalStyles, blockName, rawResult) : rawResult; return result; } // packages/global-styles-engine/build-module/settings/set-style.mjs function setStyle(globalStyles, path, newValue, blockName) { const appendedPath = path ? "." + path : ""; const finalPath = !blockName ? `styles${appendedPath}` : `styles.blocks.${blockName}${appendedPath}`; return setImmutably( globalStyles, finalPath.split("."), newValue ); } // packages/global-styles-engine/build-module/core/equal.mjs var import_es6 = __toESM(require_es6(), 1); function areGlobalStylesEqual(original, variation) { if (typeof original !== "object" || typeof variation !== "object") { return original === variation; } return (0, import_es6.default)(original?.styles, variation?.styles) && (0, import_es6.default)(original?.settings, variation?.settings); } // packages/global-styles-engine/build-module/core/merge.mjs var import_deepmerge = __toESM(require_cjs(), 1); // node_modules/is-plain-object/dist/is-plain-object.mjs function isObject(o4) { return Object.prototype.toString.call(o4) === "[object Object]"; } function isPlainObject(o4) { var ctor, prot; if (isObject(o4) === false) return false; ctor = o4.constructor; if (ctor === void 0) return true; prot = ctor.prototype; if (isObject(prot) === false) return false; if (prot.hasOwnProperty("isPrototypeOf") === false) { return false; } return true; } // packages/global-styles-engine/build-module/core/merge.mjs function mergeGlobalStyles(base, user) { return (0, import_deepmerge.default)(base, user, { /* * We only pass as arrays the presets, * in which case we want the new array of values * to override the old array (no merging). */ isMergeableObject: isPlainObject, /* * Exceptions to the above rule. * Background images should be replaced, not merged, * as they themselves are specific object definitions for the style. */ customMerge: (key) => { if (key === "backgroundImage") { return (baseConfig, userConfig) => userConfig ?? baseConfig; } return void 0; } }); } // node_modules/memize/dist/index.js function memize(fn, options) { var size3 = 0; var head2; var tail; options = options || {}; function memoized() { var node = head2, len = arguments.length, args, i3; searchCache: while (node) { if (node.args.length !== arguments.length) { node = node.next; continue; } for (i3 = 0; i3 < len; i3++) { if (node.args[i3] !== arguments[i3]) { node = node.next; continue searchCache; } } if (node !== head2) { if (node === tail) { tail = node.prev; } node.prev.next = node.next; if (node.next) { node.next.prev = node.prev; } node.next = head2; node.prev = null; head2.prev = node; head2 = node; } return node.val; } args = new Array(len); for (i3 = 0; i3 < len; i3++) { args[i3] = arguments[i3]; } node = { args, // Generate the result from original function val: fn.apply(null, args) }; if (head2) { head2.prev = node; node.next = head2; } else { tail = node; } if (size3 === /** @type {MemizeOptions} */ options.maxSize) { tail = /** @type {MemizeCacheNode} */ tail.prev; tail.next = null; } else { size3++; } head2 = node; return node.val; } memoized.clear = function() { head2 = null; tail = null; size3 = 0; }; return memoized; } // packages/global-styles-engine/build-module/utils/get-global-styles-changes.mjs var import_i18n61 = __toESM(require_i18n(), 1); var import_blocks6 = __toESM(require_blocks(), 1); var globalStylesChangesCache = /* @__PURE__ */ new Map(); var EMPTY_ARRAY3 = []; var translationMap = { caption: (0, import_i18n61.__)("Caption"), link: (0, import_i18n61.__)("Link"), button: (0, import_i18n61.__)("Button"), heading: (0, import_i18n61.__)("Heading"), h1: (0, import_i18n61.__)("H1"), h2: (0, import_i18n61.__)("H2"), h3: (0, import_i18n61.__)("H3"), h4: (0, import_i18n61.__)("H4"), h5: (0, import_i18n61.__)("H5"), h6: (0, import_i18n61.__)("H6"), "settings.color": (0, import_i18n61.__)("Color"), "settings.typography": (0, import_i18n61.__)("Typography"), "settings.shadow": (0, import_i18n61.__)("Shadow"), "settings.layout": (0, import_i18n61.__)("Layout"), "styles.color": (0, import_i18n61.__)("Colors"), "styles.spacing": (0, import_i18n61.__)("Spacing"), "styles.background": (0, import_i18n61.__)("Background"), "styles.typography": (0, import_i18n61.__)("Typography") }; var getBlockNames = memize( () => (0, import_blocks6.getBlockTypes)().reduce( (accumulator, { name: name2, title }) => { accumulator[name2] = title; return accumulator; }, {} ) ); var isObject2 = (obj) => obj !== null && typeof obj === "object"; function getTranslation(key) { if (translationMap[key]) { return translationMap[key]; } const keyArray = key.split("."); if (keyArray?.[0] === "blocks") { const blockName = getBlockNames()?.[keyArray[1]]; return blockName || keyArray[1]; } if (keyArray?.[0] === "elements") { return translationMap[keyArray[1]] || keyArray[1]; } return void 0; } function deepCompare(changedObject, originalObject, parentPath = "") { if (!isObject2(changedObject) && !isObject2(originalObject)) { return changedObject !== originalObject ? parentPath.split(".").slice(0, 2).join(".") : void 0; } changedObject = isObject2(changedObject) ? changedObject : {}; originalObject = isObject2(originalObject) ? originalObject : {}; const allKeys = /* @__PURE__ */ new Set([ ...Object.keys(changedObject), ...Object.keys(originalObject) ]); let diffs = []; for (const key of allKeys) { const path = parentPath ? parentPath + "." + key : key; const changedPath = deepCompare( changedObject[key], originalObject[key], path ); if (changedPath) { diffs = diffs.concat(changedPath); } } return diffs; } function getGlobalStylesChangelist(next, previous) { const cacheKey2 = JSON.stringify({ next, previous }); if (globalStylesChangesCache.has(cacheKey2)) { return globalStylesChangesCache.get(cacheKey2); } const changedValueTree = deepCompare( { styles: { background: next?.styles?.background, color: next?.styles?.color, typography: next?.styles?.typography, spacing: next?.styles?.spacing }, blocks: next?.styles?.blocks, elements: next?.styles?.elements, settings: next?.settings }, { styles: { background: previous?.styles?.background, color: previous?.styles?.color, typography: previous?.styles?.typography, spacing: previous?.styles?.spacing }, blocks: previous?.styles?.blocks, elements: previous?.styles?.elements, settings: previous?.settings } ); if (!changedValueTree || Array.isArray(changedValueTree) && !changedValueTree.length) { globalStylesChangesCache.set(cacheKey2, []); return []; } const changedValueArray = Array.isArray(changedValueTree) ? changedValueTree : [changedValueTree]; const result = [...new Set(changedValueArray)].reduce((acc, curr) => { const translation = getTranslation(curr); if (translation) { acc.push([curr.split(".")[0], translation]); } return acc; }, []); globalStylesChangesCache.set(cacheKey2, result); return result; } function getGlobalStylesChanges(next, previous, options = {}) { let changeList = getGlobalStylesChangelist(next, previous); const changesLength = changeList.length; const { maxResults } = options; if (changesLength) { if (!!maxResults && changesLength > maxResults) { changeList = changeList.slice(0, maxResults); } return Object.entries( changeList.reduce((acc, curr) => { const group = acc[curr[0]] || []; if (!group.includes(curr[1])) { acc[curr[0]] = [...group, curr[1]]; } return acc; }, {}) ).map(([key, changeValues]) => { const changeValuesLength = changeValues.length; const joinedChangesValue = changeValues.join( /* translators: Used between list items, there is a space after the comma. */ (0, import_i18n61.__)(", ") // eslint-disable-line @wordpress/i18n-no-flanking-whitespace ); switch (key) { case "blocks": { return (0, import_i18n61.sprintf)( // translators: %s: a list of block names separated by a comma. (0, import_i18n61._n)("%s block.", "%s blocks.", changeValuesLength), joinedChangesValue ); } case "elements": { return (0, import_i18n61.sprintf)( // translators: %s: a list of element names separated by a comma. (0, import_i18n61._n)("%s element.", "%s elements.", changeValuesLength), joinedChangesValue ); } case "settings": { return (0, import_i18n61.sprintf)( // translators: %s: a list of theme.json setting labels separated by a comma. (0, import_i18n61.__)("%s settings."), joinedChangesValue ); } case "styles": { return (0, import_i18n61.sprintf)( // translators: %s: a list of theme.json top-level styles labels separated by a comma. (0, import_i18n61.__)("%s styles."), joinedChangesValue ); } default: { return (0, import_i18n61.sprintf)( // translators: %s: a list of global styles changes separated by a comma. (0, import_i18n61.__)("%s."), joinedChangesValue ); } } }); } return EMPTY_ARRAY3; } // packages/global-styles-engine/build-module/core/render.mjs var import_blocks7 = __toESM(require_blocks(), 1); var import_style_engine2 = __toESM(require_style_engine(), 1); var import_data31 = __toESM(require_data(), 1); // packages/global-styles-engine/build-module/core/selectors.mjs function getBlockSelector(blockType, target = "root", options = {}) { if (!target) { return null; } const { fallback = false } = options; const { name: name2, selectors, supports } = blockType; const hasSelectors = selectors && Object.keys(selectors).length > 0; const path = Array.isArray(target) ? target.join(".") : target; let rootSelector = null; if (hasSelectors && selectors.root) { rootSelector = selectors?.root; } else if (supports?.__experimentalSelector) { rootSelector = supports.__experimentalSelector; } else { rootSelector = ".wp-block-" + name2.replace("core/", "").replace("/", "-"); } if (path === "root") { return rootSelector; } const pathArray = Array.isArray(target) ? target : target.split("."); if (pathArray.length === 1) { const fallbackSelector = fallback ? rootSelector : null; if (hasSelectors) { const featureSelector2 = getValueFromObjectPath( selectors, `${path}.root`, null ) || getValueFromObjectPath(selectors, path, null); return featureSelector2 || fallbackSelector; } const featureSelector = supports ? getValueFromObjectPath( supports, `${path}.__experimentalSelector`, null ) : void 0; if (!featureSelector) { return fallbackSelector; } return scopeSelector(rootSelector, featureSelector); } let subfeatureSelector; if (hasSelectors) { subfeatureSelector = getValueFromObjectPath(selectors, path, null); } if (subfeatureSelector) { return subfeatureSelector; } if (fallback) { return getBlockSelector(blockType, pathArray[0], options); } return null; } // node_modules/colord/index.mjs var r3 = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) }; var t2 = function(r4) { return "string" == typeof r4 ? r4.length > 0 : "number" == typeof r4; }; var n2 = function(r4, t4, n3) { return void 0 === t4 && (t4 = 0), void 0 === n3 && (n3 = Math.pow(10, t4)), Math.round(n3 * r4) / n3 + 0; }; var e2 = function(r4, t4, n3) { return void 0 === t4 && (t4 = 0), void 0 === n3 && (n3 = 1), r4 > n3 ? n3 : r4 > t4 ? r4 : t4; }; var u2 = function(r4) { return (r4 = isFinite(r4) ? r4 % 360 : 0) > 0 ? r4 : r4 + 360; }; var a2 = function(r4) { return { r: e2(r4.r, 0, 255), g: e2(r4.g, 0, 255), b: e2(r4.b, 0, 255), a: e2(r4.a) }; }; var o2 = function(r4) { return { r: n2(r4.r), g: n2(r4.g), b: n2(r4.b), a: n2(r4.a, 3) }; }; var i2 = /^#([0-9a-f]{3,8})$/i; var s2 = function(r4) { var t4 = r4.toString(16); return t4.length < 2 ? "0" + t4 : t4; }; var h2 = function(r4) { var t4 = r4.r, n3 = r4.g, e3 = r4.b, u3 = r4.a, a3 = Math.max(t4, n3, e3), o4 = a3 - Math.min(t4, n3, e3), i3 = o4 ? a3 === t4 ? (n3 - e3) / o4 : a3 === n3 ? 2 + (e3 - t4) / o4 : 4 + (t4 - n3) / o4 : 0; return { h: 60 * (i3 < 0 ? i3 + 6 : i3), s: a3 ? o4 / a3 * 100 : 0, v: a3 / 255 * 100, a: u3 }; }; var b2 = function(r4) { var t4 = r4.h, n3 = r4.s, e3 = r4.v, u3 = r4.a; t4 = t4 / 360 * 6, n3 /= 100, e3 /= 100; var a3 = Math.floor(t4), o4 = e3 * (1 - n3), i3 = e3 * (1 - (t4 - a3) * n3), s3 = e3 * (1 - (1 - t4 + a3) * n3), h3 = a3 % 6; return { r: 255 * [e3, i3, o4, o4, s3, e3][h3], g: 255 * [s3, e3, e3, i3, o4, o4][h3], b: 255 * [o4, o4, s3, e3, e3, i3][h3], a: u3 }; }; var g2 = function(r4) { return { h: u2(r4.h), s: e2(r4.s, 0, 100), l: e2(r4.l, 0, 100), a: e2(r4.a) }; }; var d2 = function(r4) { return { h: n2(r4.h), s: n2(r4.s), l: n2(r4.l), a: n2(r4.a, 3) }; }; var f2 = function(r4) { return b2((n3 = (t4 = r4).s, { h: t4.h, s: (n3 *= ((e3 = t4.l) < 50 ? e3 : 100 - e3) / 100) > 0 ? 2 * n3 / (e3 + n3) * 100 : 0, v: e3 + n3, a: t4.a })); var t4, n3, e3; }; var c = function(r4) { return { h: (t4 = h2(r4)).h, s: (u3 = (200 - (n3 = t4.s)) * (e3 = t4.v) / 100) > 0 && u3 < 200 ? n3 * e3 / 100 / (u3 <= 100 ? u3 : 200 - u3) * 100 : 0, l: u3 / 2, a: t4.a }; var t4, n3, e3, u3; }; var l2 = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; var p3 = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; var v2 = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; var m = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i; var y2 = { string: [[function(r4) { var t4 = i2.exec(r4); return t4 ? (r4 = t4[1]).length <= 4 ? { r: parseInt(r4[0] + r4[0], 16), g: parseInt(r4[1] + r4[1], 16), b: parseInt(r4[2] + r4[2], 16), a: 4 === r4.length ? n2(parseInt(r4[3] + r4[3], 16) / 255, 2) : 1 } : 6 === r4.length || 8 === r4.length ? { r: parseInt(r4.substr(0, 2), 16), g: parseInt(r4.substr(2, 2), 16), b: parseInt(r4.substr(4, 2), 16), a: 8 === r4.length ? n2(parseInt(r4.substr(6, 2), 16) / 255, 2) : 1 } : null : null; }, "hex"], [function(r4) { var t4 = v2.exec(r4) || m.exec(r4); return t4 ? t4[2] !== t4[4] || t4[4] !== t4[6] ? null : a2({ r: Number(t4[1]) / (t4[2] ? 100 / 255 : 1), g: Number(t4[3]) / (t4[4] ? 100 / 255 : 1), b: Number(t4[5]) / (t4[6] ? 100 / 255 : 1), a: void 0 === t4[7] ? 1 : Number(t4[7]) / (t4[8] ? 100 : 1) }) : null; }, "rgb"], [function(t4) { var n3 = l2.exec(t4) || p3.exec(t4); if (!n3) return null; var e3, u3, a3 = g2({ h: (e3 = n3[1], u3 = n3[2], void 0 === u3 && (u3 = "deg"), Number(e3) * (r3[u3] || 1)), s: Number(n3[3]), l: Number(n3[4]), a: void 0 === n3[5] ? 1 : Number(n3[5]) / (n3[6] ? 100 : 1) }); return f2(a3); }, "hsl"]], object: [[function(r4) { var n3 = r4.r, e3 = r4.g, u3 = r4.b, o4 = r4.a, i3 = void 0 === o4 ? 1 : o4; return t2(n3) && t2(e3) && t2(u3) ? a2({ r: Number(n3), g: Number(e3), b: Number(u3), a: Number(i3) }) : null; }, "rgb"], [function(r4) { var n3 = r4.h, e3 = r4.s, u3 = r4.l, a3 = r4.a, o4 = void 0 === a3 ? 1 : a3; if (!t2(n3) || !t2(e3) || !t2(u3)) return null; var i3 = g2({ h: Number(n3), s: Number(e3), l: Number(u3), a: Number(o4) }); return f2(i3); }, "hsl"], [function(r4) { var n3 = r4.h, a3 = r4.s, o4 = r4.v, i3 = r4.a, s3 = void 0 === i3 ? 1 : i3; if (!t2(n3) || !t2(a3) || !t2(o4)) return null; var h3 = (function(r5) { return { h: u2(r5.h), s: e2(r5.s, 0, 100), v: e2(r5.v, 0, 100), a: e2(r5.a) }; })({ h: Number(n3), s: Number(a3), v: Number(o4), a: Number(s3) }); return b2(h3); }, "hsv"]] }; var N2 = function(r4, t4) { for (var n3 = 0; n3 < t4.length; n3++) { var e3 = t4[n3][0](r4); if (e3) return [e3, t4[n3][1]]; } return [null, void 0]; }; var x = function(r4) { return "string" == typeof r4 ? N2(r4.trim(), y2.string) : "object" == typeof r4 && null !== r4 ? N2(r4, y2.object) : [null, void 0]; }; var M = function(r4, t4) { var n3 = c(r4); return { h: n3.h, s: e2(n3.s + 100 * t4, 0, 100), l: n3.l, a: n3.a }; }; var H = function(r4) { return (299 * r4.r + 587 * r4.g + 114 * r4.b) / 1e3 / 255; }; var $ = function(r4, t4) { var n3 = c(r4); return { h: n3.h, s: n3.s, l: e2(n3.l + 100 * t4, 0, 100), a: n3.a }; }; var j = (function() { function r4(r5) { this.parsed = x(r5)[0], this.rgba = this.parsed || { r: 0, g: 0, b: 0, a: 1 }; } return r4.prototype.isValid = function() { return null !== this.parsed; }, r4.prototype.brightness = function() { return n2(H(this.rgba), 2); }, r4.prototype.isDark = function() { return H(this.rgba) < 0.5; }, r4.prototype.isLight = function() { return H(this.rgba) >= 0.5; }, r4.prototype.toHex = function() { return r5 = o2(this.rgba), t4 = r5.r, e3 = r5.g, u3 = r5.b, i3 = (a3 = r5.a) < 1 ? s2(n2(255 * a3)) : "", "#" + s2(t4) + s2(e3) + s2(u3) + i3; var r5, t4, e3, u3, a3, i3; }, r4.prototype.toRgb = function() { return o2(this.rgba); }, r4.prototype.toRgbString = function() { return r5 = o2(this.rgba), t4 = r5.r, n3 = r5.g, e3 = r5.b, (u3 = r5.a) < 1 ? "rgba(" + t4 + ", " + n3 + ", " + e3 + ", " + u3 + ")" : "rgb(" + t4 + ", " + n3 + ", " + e3 + ")"; var r5, t4, n3, e3, u3; }, r4.prototype.toHsl = function() { return d2(c(this.rgba)); }, r4.prototype.toHslString = function() { return r5 = d2(c(this.rgba)), t4 = r5.h, n3 = r5.s, e3 = r5.l, (u3 = r5.a) < 1 ? "hsla(" + t4 + ", " + n3 + "%, " + e3 + "%, " + u3 + ")" : "hsl(" + t4 + ", " + n3 + "%, " + e3 + "%)"; var r5, t4, n3, e3, u3; }, r4.prototype.toHsv = function() { return r5 = h2(this.rgba), { h: n2(r5.h), s: n2(r5.s), v: n2(r5.v), a: n2(r5.a, 3) }; var r5; }, r4.prototype.invert = function() { return w2({ r: 255 - (r5 = this.rgba).r, g: 255 - r5.g, b: 255 - r5.b, a: r5.a }); var r5; }, r4.prototype.saturate = function(r5) { return void 0 === r5 && (r5 = 0.1), w2(M(this.rgba, r5)); }, r4.prototype.desaturate = function(r5) { return void 0 === r5 && (r5 = 0.1), w2(M(this.rgba, -r5)); }, r4.prototype.grayscale = function() { return w2(M(this.rgba, -1)); }, r4.prototype.lighten = function(r5) { return void 0 === r5 && (r5 = 0.1), w2($(this.rgba, r5)); }, r4.prototype.darken = function(r5) { return void 0 === r5 && (r5 = 0.1), w2($(this.rgba, -r5)); }, r4.prototype.rotate = function(r5) { return void 0 === r5 && (r5 = 15), this.hue(this.hue() + r5); }, r4.prototype.alpha = function(r5) { return "number" == typeof r5 ? w2({ r: (t4 = this.rgba).r, g: t4.g, b: t4.b, a: r5 }) : n2(this.rgba.a, 3); var t4; }, r4.prototype.hue = function(r5) { var t4 = c(this.rgba); return "number" == typeof r5 ? w2({ h: r5, s: t4.s, l: t4.l, a: t4.a }) : n2(t4.h); }, r4.prototype.isEqual = function(r5) { return this.toHex() === w2(r5).toHex(); }, r4; })(); var w2 = function(r4) { return r4 instanceof j ? r4 : new j(r4); }; var S2 = []; var k = function(r4) { r4.forEach(function(r5) { S2.indexOf(r5) < 0 && (r5(j, y2), S2.push(r5)); }); }; // packages/global-styles-engine/build-module/utils/duotone.mjs function getValuesFromColors(colors2 = []) { const values = { r: [], g: [], b: [], a: [] }; colors2.forEach((color) => { const rgbColor = w2(color).toRgb(); values.r.push(rgbColor.r / 255); values.g.push(rgbColor.g / 255); values.b.push(rgbColor.b / 255); values.a.push(rgbColor.a); }); return values; } function getDuotoneFilter(id, colors2) { const values = getValuesFromColors(colors2); return ` `; } // packages/global-styles-engine/build-module/utils/string.mjs function kebabCase(str) { return str.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/([0-9])([a-zA-Z])/g, "$1-$2").replace(/([a-zA-Z])([0-9])/g, "$1-$2").replace(/[\s_]+/g, "-").toLowerCase(); } // packages/global-styles-engine/build-module/utils/spacing.mjs function getSpacingPresetCssVar(value) { if (!value) { return; } const slug = value.match(/var:preset\|spacing\|(.+)/); if (!slug) { return value; } return `var(--wp--preset--spacing--${slug[1]})`; } // packages/global-styles-engine/build-module/utils/gap.mjs function getGapBoxControlValueFromStyle(blockGapValue) { if (!blockGapValue) { return null; } const isValueString = typeof blockGapValue === "string"; return { top: isValueString ? blockGapValue : blockGapValue?.top, left: isValueString ? blockGapValue : blockGapValue?.left }; } function getGapCSSValue(blockGapValue, defaultValue = "0") { const blockGapBoxControlValue = getGapBoxControlValueFromStyle(blockGapValue); if (!blockGapBoxControlValue) { return null; } const row = getSpacingPresetCssVar(blockGapBoxControlValue?.top) || defaultValue; const column = getSpacingPresetCssVar(blockGapBoxControlValue?.left) || defaultValue; return row === column ? row : `${row} ${column}`; } // packages/global-styles-engine/build-module/utils/background.mjs var BACKGROUND_BLOCK_DEFAULT_VALUES = { backgroundSize: "cover", backgroundPosition: "50% 50%" // used only when backgroundSize is 'contain'. }; function setBackgroundStyleDefaults(backgroundStyle) { if (!backgroundStyle || // @ts-expect-error !backgroundStyle?.backgroundImage?.url) { return; } let backgroundStylesWithDefaults; if (!backgroundStyle?.backgroundSize) { backgroundStylesWithDefaults = { backgroundSize: BACKGROUND_BLOCK_DEFAULT_VALUES.backgroundSize }; } if ("contain" === backgroundStyle?.backgroundSize && !backgroundStyle?.backgroundPosition) { backgroundStylesWithDefaults = { backgroundPosition: BACKGROUND_BLOCK_DEFAULT_VALUES.backgroundPosition }; } return backgroundStylesWithDefaults; } // packages/global-styles-engine/build-module/utils/layout.mjs var LAYOUT_DEFINITIONS = { default: { name: "default", slug: "flow", className: "is-layout-flow", baseStyles: [ { selector: " > .alignleft", rules: { float: "left", "margin-inline-start": "0", "margin-inline-end": "2em" } }, { selector: " > .alignright", rules: { float: "right", "margin-inline-start": "2em", "margin-inline-end": "0" } }, { selector: " > .aligncenter", rules: { "margin-left": "auto !important", "margin-right": "auto !important" } } ], spacingStyles: [ { selector: " > :first-child", rules: { "margin-block-start": "0" } }, { selector: " > :last-child", rules: { "margin-block-end": "0" } }, { selector: " > *", rules: { "margin-block-start": null, "margin-block-end": "0" } } ] }, constrained: { name: "constrained", slug: "constrained", className: "is-layout-constrained", baseStyles: [ { selector: " > .alignleft", rules: { float: "left", "margin-inline-start": "0", "margin-inline-end": "2em" } }, { selector: " > .alignright", rules: { float: "right", "margin-inline-start": "2em", "margin-inline-end": "0" } }, { selector: " > .aligncenter", rules: { "margin-left": "auto !important", "margin-right": "auto !important" } }, { selector: " > :where(:not(.alignleft):not(.alignright):not(.alignfull))", rules: { "max-width": "var(--wp--style--global--content-size)", "margin-left": "auto !important", "margin-right": "auto !important" } }, { selector: " > .alignwide", rules: { "max-width": "var(--wp--style--global--wide-size)" } } ], spacingStyles: [ { selector: " > :first-child", rules: { "margin-block-start": "0" } }, { selector: " > :last-child", rules: { "margin-block-end": "0" } }, { selector: " > *", rules: { "margin-block-start": null, "margin-block-end": "0" } } ] }, flex: { name: "flex", slug: "flex", className: "is-layout-flex", displayMode: "flex", baseStyles: [ { selector: "", rules: { "flex-wrap": "wrap", "align-items": "center" } }, { selector: " > :is(*, div)", // :is(*, div) instead of just * increases the specificity by 001. rules: { margin: "0" } } ], spacingStyles: [ { selector: "", rules: { gap: null } } ] }, grid: { name: "grid", slug: "grid", className: "is-layout-grid", displayMode: "grid", baseStyles: [ { selector: " > :is(*, div)", // :is(*, div) instead of just * increases the specificity by 001. rules: { margin: "0" } } ], spacingStyles: [ { selector: "", rules: { gap: null } } ] } }; // packages/global-styles-engine/build-module/core/render.mjs var ELEMENT_CLASS_NAMES = { button: "wp-element-button", caption: "wp-element-caption" }; var BLOCK_SUPPORT_FEATURE_LEVEL_SELECTORS = { __experimentalBorder: "border", color: "color", dimensions: "dimensions", spacing: "spacing", typography: "typography" }; function getPresetsDeclarations(blockPresets = {}, mergedSettings) { return PRESET_METADATA.reduce( (declarations, { path, valueKey, valueFunc, cssVarInfix }) => { const presetByOrigin = getValueFromObjectPath( blockPresets, path, [] ); ["default", "theme", "custom"].forEach((origin) => { if (presetByOrigin[origin]) { presetByOrigin[origin].forEach((value) => { if (valueKey && !valueFunc) { declarations.push( `--wp--preset--${cssVarInfix}--${kebabCase( value.slug )}: ${value[valueKey]}` ); } else if (valueFunc && typeof valueFunc === "function") { declarations.push( `--wp--preset--${cssVarInfix}--${kebabCase( value.slug )}: ${valueFunc(value, mergedSettings)}` ); } }); } }); return declarations; }, [] ); } function getPresetsClasses(blockSelector = "*", blockPresets = {}) { return PRESET_METADATA.reduce( (declarations, { path, cssVarInfix, classes }) => { if (!classes) { return declarations; } const presetByOrigin = getValueFromObjectPath( blockPresets, path, [] ); ["default", "theme", "custom"].forEach((origin) => { if (presetByOrigin[origin]) { presetByOrigin[origin].forEach( ({ slug }) => { classes.forEach( ({ classSuffix, propertyName }) => { const classSelectorToUse = `.has-${kebabCase( slug )}-${classSuffix}`; const selectorToUse = blockSelector.split(",").map( (selector) => `${selector}${classSelectorToUse}` ).join(","); const value = `var(--wp--preset--${cssVarInfix}--${kebabCase( slug )})`; declarations += `${selectorToUse}{${propertyName}: ${value} !important;}`; } ); } ); } }); return declarations; }, "" ); } function getPresetsSvgFilters(blockPresets = {}) { return PRESET_METADATA.filter( // Duotone are the only type of filters for now. (metadata) => metadata.path.at(-1) === "duotone" ).flatMap((metadata) => { const presetByOrigin = getValueFromObjectPath( blockPresets, metadata.path, {} ); return ["default", "theme"].filter((origin) => presetByOrigin[origin]).flatMap( (origin) => presetByOrigin[origin].map( (preset) => getDuotoneFilter( `wp-duotone-${preset.slug}`, preset.colors ) ) ).join(""); }); } function flattenTree(input = {}, prefix2, token) { let result = []; Object.keys(input).forEach((key) => { const newKey = prefix2 + kebabCase(key.replace("/", "-")); const newLeaf = input[key]; if (newLeaf instanceof Object) { const newPrefix = newKey + token; result = [...result, ...flattenTree(newLeaf, newPrefix, token)]; } else { result.push(`${newKey}: ${newLeaf}`); } }); return result; } function concatFeatureVariationSelectorString(featureSelector, styleVariationSelector) { const featureSelectors = featureSelector.split(","); const combinedSelectors = []; featureSelectors.forEach((selector) => { combinedSelectors.push( `${styleVariationSelector.trim()}${selector.trim()}` ); }); return combinedSelectors.join(", "); } var updateParagraphTextIndentSelector = (featureDeclarations, settings, blockName) => { if (blockName !== "core/paragraph") { return featureDeclarations; } const blockSettings = settings?.blocks?.["core/paragraph"]; const textIndentSetting = blockSettings?.typography?.textIndent ?? settings?.typography?.textIndent ?? "subsequent"; if (textIndentSetting !== "all") { return featureDeclarations; } const oldSelector = ".wp-block-paragraph + .wp-block-paragraph"; const newSelector = ".wp-block-paragraph"; if (oldSelector in featureDeclarations) { const declarations = featureDeclarations[oldSelector]; const updated = { ...featureDeclarations }; delete updated[oldSelector]; updated[newSelector] = declarations; return updated; } return featureDeclarations; }; var getFeatureDeclarations = (selectors, styles) => { const declarations = {}; Object.entries(selectors).forEach(([feature, selector]) => { if (feature === "root" || !styles?.[feature]) { return; } const isShorthand = typeof selector === "string"; if (!isShorthand && typeof selector === "object" && selector !== null) { Object.entries(selector).forEach( ([subfeature, subfeatureSelector]) => { if (subfeature === "root" || !styles?.[feature][subfeature]) { return; } const subfeatureStyles = { [feature]: { [subfeature]: styles[feature][subfeature] } }; const newDeclarations = getStylesDeclarations(subfeatureStyles); declarations[subfeatureSelector] = [ ...declarations[subfeatureSelector] || [], ...newDeclarations ]; delete styles[feature][subfeature]; } ); } if (isShorthand || typeof selector === "object" && selector !== null && "root" in selector) { const featureSelector = isShorthand ? selector : selector.root; const featureStyles = { [feature]: styles[feature] }; const newDeclarations = getStylesDeclarations(featureStyles); declarations[featureSelector] = [ ...declarations[featureSelector] || [], ...newDeclarations ]; delete styles[feature]; } }); return declarations; }; function getStylesDeclarations(blockStyles = {}, selector = "", useRootPaddingAlign, tree = {}, disableRootPadding = false) { const isRoot = ROOT_BLOCK_SELECTOR === selector; const output = Object.entries( import_blocks7.__EXPERIMENTAL_STYLE_PROPERTY ).reduce( (declarations, [key, { value, properties, useEngine, rootOnly }]) => { if (rootOnly && !isRoot) { return declarations; } const pathToValue = value; if (pathToValue[0] === "elements" || useEngine) { return declarations; } const styleValue = getValueFromObjectPath( blockStyles, pathToValue ); if (key === "--wp--style--root--padding" && (typeof styleValue === "string" || !useRootPaddingAlign)) { return declarations; } if (properties && typeof styleValue !== "string") { Object.entries(properties).forEach((entry) => { const [name2, prop] = entry; if (!getValueFromObjectPath(styleValue, [prop], false)) { return; } const cssProperty = name2.startsWith("--") ? name2 : kebabCase(name2); declarations.push( `${cssProperty}: ${(0, import_style_engine2.getCSSValueFromRawStyle)( getValueFromObjectPath(styleValue, [prop]) )}` ); }); } else if (getValueFromObjectPath(blockStyles, pathToValue, false)) { const cssProperty = key.startsWith("--") ? key : kebabCase(key); declarations.push( `${cssProperty}: ${(0, import_style_engine2.getCSSValueFromRawStyle)( getValueFromObjectPath(blockStyles, pathToValue) )}` ); } return declarations; }, [] ); if (!!blockStyles.background) { if (blockStyles.background?.backgroundImage) { blockStyles.background.backgroundImage = getResolvedValue( blockStyles.background.backgroundImage, tree ); } if (!isRoot && !!blockStyles.background?.backgroundImage?.id) { blockStyles = { ...blockStyles, background: { ...blockStyles.background, ...setBackgroundStyleDefaults(blockStyles.background) } }; } } const extraRules = (0, import_style_engine2.getCSSRules)(blockStyles); extraRules.forEach((rule) => { if (isRoot && (useRootPaddingAlign || disableRootPadding) && rule.key.startsWith("padding")) { return; } const cssProperty = rule.key.startsWith("--") ? rule.key : kebabCase(rule.key); let ruleValue = getResolvedValue(rule.value, tree); if (cssProperty === "font-size") { ruleValue = getTypographyFontSizeValue( { name: "", slug: "", size: ruleValue }, tree?.settings ); } if (cssProperty === "aspect-ratio") { output.push("min-height: unset"); } output.push(`${cssProperty}: ${ruleValue}`); }); return output; } function getLayoutStyles({ layoutDefinitions = LAYOUT_DEFINITIONS, style, selector, hasBlockGapSupport, hasFallbackGapSupport, fallbackGapValue }) { let ruleset = ""; let gapValue = hasBlockGapSupport ? getGapCSSValue(style?.spacing?.blockGap) : ""; if (hasFallbackGapSupport) { if (selector === ROOT_BLOCK_SELECTOR) { gapValue = !gapValue ? "0.5em" : gapValue; } else if (!hasBlockGapSupport && fallbackGapValue) { gapValue = fallbackGapValue; } } if (gapValue && layoutDefinitions) { Object.values(layoutDefinitions).forEach( ({ className, name: name2, spacingStyles }) => { if (!hasBlockGapSupport && "flex" !== name2 && "grid" !== name2) { return; } if (spacingStyles?.length) { spacingStyles.forEach((spacingStyle) => { const declarations = []; if (spacingStyle.rules) { Object.entries(spacingStyle.rules).forEach( ([cssProperty, cssValue]) => { declarations.push( `${cssProperty}: ${cssValue ? cssValue : gapValue}` ); } ); } if (declarations.length) { let combinedSelector = ""; if (!hasBlockGapSupport) { combinedSelector = selector === ROOT_BLOCK_SELECTOR ? `:where(.${className}${spacingStyle?.selector || ""})` : `:where(${selector}.${className}${spacingStyle?.selector || ""})`; } else { combinedSelector = selector === ROOT_BLOCK_SELECTOR ? `:root :where(.${className})${spacingStyle?.selector || ""}` : `:root :where(${selector}-${className})${spacingStyle?.selector || ""}`; } ruleset += `${combinedSelector} { ${declarations.join( "; " )}; }`; } }); } } ); if (selector === ROOT_BLOCK_SELECTOR && hasBlockGapSupport) { ruleset += `${ROOT_CSS_PROPERTIES_SELECTOR} { --wp--style--block-gap: ${gapValue}; }`; } } if (selector === ROOT_BLOCK_SELECTOR && layoutDefinitions) { const validDisplayModes = ["block", "flex", "grid"]; Object.values(layoutDefinitions).forEach( ({ className, displayMode, baseStyles }) => { if (displayMode && validDisplayModes.includes(displayMode)) { ruleset += `${selector} .${className} { display:${displayMode}; }`; } if (baseStyles?.length) { baseStyles.forEach((baseStyle) => { const declarations = []; if (baseStyle.rules) { Object.entries(baseStyle.rules).forEach( ([cssProperty, cssValue]) => { declarations.push( `${cssProperty}: ${cssValue}` ); } ); } if (declarations.length) { const combinedSelector = `.${className}${baseStyle?.selector || ""}`; ruleset += `${combinedSelector} { ${declarations.join( "; " )}; }`; } }); } } ); } return ruleset; } var STYLE_KEYS = [ "border", "color", "dimensions", "spacing", "typography", "filter", "outline", "shadow", "background" ]; function pickStyleKeys(treeToPickFrom) { if (!treeToPickFrom) { return {}; } const entries = Object.entries(treeToPickFrom); const pickedEntries = entries.filter( ([key]) => STYLE_KEYS.includes(key) ); const clonedEntries = pickedEntries.map(([key, style]) => [ key, JSON.parse(JSON.stringify(style)) ]); return Object.fromEntries(clonedEntries); } var getNodesWithStyles = (tree, blockSelectors) => { const nodes = []; if (!tree?.styles) { return nodes; } const styles = pickStyleKeys(tree.styles); if (styles) { nodes.push({ styles, selector: ROOT_BLOCK_SELECTOR, // Root selector (body) styles should not be wrapped in `:root where()` to keep // specificity at (0,0,1) and maintain backwards compatibility. skipSelectorWrapper: true }); } Object.entries(import_blocks7.__EXPERIMENTAL_ELEMENTS).forEach(([name2, selector]) => { if (tree.styles?.elements?.[name2]) { nodes.push({ styles: tree.styles?.elements?.[name2] ?? {}, selector, // Top level elements that don't use a class name should not receive the // `:root :where()` wrapper to maintain backwards compatibility. skipSelectorWrapper: !ELEMENT_CLASS_NAMES[name2] }); } }); Object.entries(tree.styles?.blocks ?? {}).forEach( ([blockName, node]) => { const blockStyles = pickStyleKeys(node); const typedNode = node; const variationNodesToAdd = []; if (typedNode?.variations) { const variations = {}; Object.entries(typedNode.variations).forEach( ([variationName, variation]) => { const typedVariation = variation; variations[variationName] = pickStyleKeys(typedVariation); if (typedVariation?.css) { variations[variationName].css = typedVariation.css; } const variationSelector = typeof blockSelectors !== "string" ? blockSelectors[blockName]?.styleVariationSelectors?.[variationName] : void 0; Object.entries( typedVariation?.elements ?? {} ).forEach(([element, elementStyles]) => { if (elementStyles && import_blocks7.__EXPERIMENTAL_ELEMENTS[element]) { variationNodesToAdd.push({ styles: elementStyles, selector: scopeSelector( variationSelector, import_blocks7.__EXPERIMENTAL_ELEMENTS[element] ) }); } }); Object.entries(typedVariation?.blocks ?? {}).forEach( ([ variationBlockName, variationBlockStyles ]) => { const variationBlockSelector = typeof blockSelectors !== "string" ? scopeSelector( variationSelector, blockSelectors[variationBlockName]?.selector ) : void 0; const variationDuotoneSelector = typeof blockSelectors !== "string" ? scopeSelector( variationSelector, blockSelectors[variationBlockName]?.duotoneSelector ) : void 0; const variationFeatureSelectors = typeof blockSelectors !== "string" ? scopeFeatureSelectors( variationSelector, blockSelectors[variationBlockName]?.featureSelectors ?? {} ) : void 0; const variationBlockStyleNodes = pickStyleKeys(variationBlockStyles); if (variationBlockStyles?.css) { variationBlockStyleNodes.css = variationBlockStyles.css; } if (!variationBlockSelector || typeof blockSelectors === "string") { return; } variationNodesToAdd.push({ selector: variationBlockSelector, duotoneSelector: variationDuotoneSelector, featureSelectors: variationFeatureSelectors, fallbackGapValue: blockSelectors[variationBlockName]?.fallbackGapValue, hasLayoutSupport: blockSelectors[variationBlockName]?.hasLayoutSupport, styles: variationBlockStyleNodes }); Object.entries( variationBlockStyles.elements ?? {} ).forEach( ([ variationBlockElement, variationBlockElementStyles ]) => { if (variationBlockElementStyles && import_blocks7.__EXPERIMENTAL_ELEMENTS[variationBlockElement]) { variationNodesToAdd.push({ styles: variationBlockElementStyles, selector: scopeSelector( variationBlockSelector, import_blocks7.__EXPERIMENTAL_ELEMENTS[variationBlockElement] ) }); } } ); } ); } ); blockStyles.variations = variations; } if (typeof blockSelectors !== "string" && blockSelectors?.[blockName]?.selector) { nodes.push({ duotoneSelector: blockSelectors[blockName].duotoneSelector, fallbackGapValue: blockSelectors[blockName].fallbackGapValue, hasLayoutSupport: blockSelectors[blockName].hasLayoutSupport, selector: blockSelectors[blockName].selector, styles: blockStyles, featureSelectors: blockSelectors[blockName].featureSelectors, styleVariationSelectors: blockSelectors[blockName].styleVariationSelectors, name: blockName }); } Object.entries(typedNode?.elements ?? {}).forEach( ([elementName, value]) => { if (typeof blockSelectors !== "string" && value && blockSelectors?.[blockName] && import_blocks7.__EXPERIMENTAL_ELEMENTS[elementName]) { nodes.push({ styles: value, selector: blockSelectors[blockName]?.selector.split(",").map((sel) => { const elementSelectors = import_blocks7.__EXPERIMENTAL_ELEMENTS[elementName].split(","); return elementSelectors.map( (elementSelector) => sel + " " + elementSelector ); }).join(",") }); } } ); nodes.push(...variationNodesToAdd); } ); return nodes; }; var getNodesWithSettings = (tree, blockSelectors) => { const nodes = []; if (!tree?.settings) { return nodes; } const pickPresets = (treeToPickFrom) => { let presets2 = {}; PRESET_METADATA.forEach(({ path }) => { const value = getValueFromObjectPath(treeToPickFrom, path, false); if (value !== false) { presets2 = setImmutably(presets2, path, value); } }); return presets2; }; const presets = pickPresets(tree.settings); const custom = tree.settings?.custom; if (Object.keys(presets).length > 0 || custom) { nodes.push({ presets, custom, selector: ROOT_CSS_PROPERTIES_SELECTOR }); } Object.entries(tree.settings?.blocks ?? {}).forEach( ([blockName, node]) => { const blockCustom = node.custom; if (typeof blockSelectors === "string" || !blockSelectors[blockName]) { return; } const blockPresets = pickPresets(node); if (Object.keys(blockPresets).length > 0 || blockCustom) { nodes.push({ presets: blockPresets, custom: blockCustom, selector: blockSelectors[blockName]?.selector }); } } ); return nodes; }; var generateCustomProperties = (tree, blockSelectors) => { const settings = getNodesWithSettings(tree, blockSelectors); let ruleset = ""; settings.forEach(({ presets, custom, selector }) => { const declarations = tree?.settings ? getPresetsDeclarations(presets, tree?.settings) : []; const customProps = flattenTree(custom, "--wp--custom--", "--"); if (customProps.length > 0) { declarations.push(...customProps); } if (declarations.length > 0) { ruleset += `${selector}{${declarations.join(";")};}`; } }); return ruleset; }; var transformToStyles = (tree, blockSelectors, hasBlockGapSupport, hasFallbackGapSupport, disableLayoutStyles = false, disableRootPadding = false, styleOptions = {}) => { const options = { blockGap: true, blockStyles: true, layoutStyles: true, marginReset: true, presets: true, rootPadding: true, variationStyles: false, ...styleOptions }; const nodesWithStyles = getNodesWithStyles(tree, blockSelectors); const nodesWithSettings = getNodesWithSettings(tree, blockSelectors); const useRootPaddingAlign = tree?.settings?.useRootPaddingAwareAlignments; const { contentSize, wideSize } = tree?.settings?.layout || {}; const hasBodyStyles = options.marginReset || options.rootPadding || options.layoutStyles; let ruleset = ""; if (options.presets && (contentSize || wideSize)) { ruleset += `${ROOT_CSS_PROPERTIES_SELECTOR} {`; ruleset = contentSize ? ruleset + ` --wp--style--global--content-size: ${contentSize};` : ruleset; ruleset = wideSize ? ruleset + ` --wp--style--global--wide-size: ${wideSize};` : ruleset; ruleset += "}"; } if (hasBodyStyles) { ruleset += ":where(body) {margin: 0;"; if (options.rootPadding && useRootPaddingAlign) { ruleset += `padding-right: 0; padding-left: 0; padding-top: var(--wp--style--root--padding-top); padding-bottom: var(--wp--style--root--padding-bottom) } .has-global-padding { padding-right: var(--wp--style--root--padding-right); padding-left: var(--wp--style--root--padding-left); } .has-global-padding > .alignfull { margin-right: calc(var(--wp--style--root--padding-right) * -1); margin-left: calc(var(--wp--style--root--padding-left) * -1); } .has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull)) { padding-right: 0; padding-left: 0; } .has-global-padding :where(:not(.alignfull.is-layout-flow) > .has-global-padding:not(.wp-block-block, .alignfull)) > .alignfull { margin-left: 0; margin-right: 0; `; } ruleset += "}"; } if (options.blockStyles) { nodesWithStyles.forEach( ({ selector, duotoneSelector, styles, fallbackGapValue, hasLayoutSupport, featureSelectors, styleVariationSelectors, skipSelectorWrapper, name: name2 }) => { if (featureSelectors) { let featureDeclarations = getFeatureDeclarations( featureSelectors, styles ); featureDeclarations = updateParagraphTextIndentSelector( featureDeclarations, tree.settings, name2 ); Object.entries(featureDeclarations).forEach( ([cssSelector, declarations]) => { if (declarations.length) { const rules = declarations.join(";"); ruleset += `:root :where(${cssSelector}){${rules};}`; } } ); } if (duotoneSelector) { const duotoneStyles = {}; if (styles?.filter) { duotoneStyles.filter = styles.filter; delete styles.filter; } const duotoneDeclarations = getStylesDeclarations(duotoneStyles); if (duotoneDeclarations.length) { ruleset += `${duotoneSelector}{${duotoneDeclarations.join( ";" )};}`; } } if (!disableLayoutStyles && (ROOT_BLOCK_SELECTOR === selector || hasLayoutSupport)) { ruleset += getLayoutStyles({ style: styles, selector, hasBlockGapSupport, hasFallbackGapSupport, fallbackGapValue }); } const styleDeclarations = getStylesDeclarations( styles, selector, useRootPaddingAlign, tree, disableRootPadding ); if (styleDeclarations?.length) { const generalSelector = skipSelectorWrapper ? selector : `:root :where(${selector})`; ruleset += `${generalSelector}{${styleDeclarations.join( ";" )};}`; } if (styles?.css) { ruleset += processCSSNesting( styles.css, `:root :where(${selector})` ); } if (options.variationStyles && styleVariationSelectors) { Object.entries(styleVariationSelectors).forEach( ([styleVariationName, styleVariationSelector]) => { const styleVariations = styles?.variations?.[styleVariationName]; if (styleVariations) { if (featureSelectors) { let featureDeclarations = getFeatureDeclarations( featureSelectors, styleVariations ); featureDeclarations = updateParagraphTextIndentSelector( featureDeclarations, tree.settings, name2 ); Object.entries( featureDeclarations ).forEach( ([baseSelector, declarations]) => { if (declarations.length) { const cssSelector = concatFeatureVariationSelectorString( baseSelector, styleVariationSelector ); const rules = declarations.join(";"); ruleset += `:root :where(${cssSelector}){${rules};}`; } } ); } const styleVariationDeclarations = getStylesDeclarations( styleVariations, styleVariationSelector, useRootPaddingAlign, tree ); if (styleVariationDeclarations.length) { ruleset += `:root :where(${styleVariationSelector}){${styleVariationDeclarations.join( ";" )};}`; } if (styleVariations?.css) { ruleset += processCSSNesting( styleVariations.css, `:root :where(${styleVariationSelector})` ); } if (hasLayoutSupport && styleVariations?.spacing?.blockGap) { const variationSelectorWithBlock = styleVariationSelector + selector; ruleset += getLayoutStyles({ style: styleVariations, selector: variationSelectorWithBlock, hasBlockGapSupport: true, hasFallbackGapSupport, fallbackGapValue }); } } } ); } const pseudoSelectorStyles = Object.entries(styles).filter( ([key]) => key.startsWith(":") ); if (pseudoSelectorStyles?.length) { pseudoSelectorStyles.forEach( ([pseudoKey, pseudoStyle]) => { const pseudoDeclarations = getStylesDeclarations(pseudoStyle); if (!pseudoDeclarations?.length) { return; } const _selector = selector.split(",").map((sel) => sel + pseudoKey).join(","); const pseudoRule = `:root :where(${_selector}){${pseudoDeclarations.join( ";" )};}`; ruleset += pseudoRule; } ); } } ); } if (options.layoutStyles) { ruleset = ruleset + ".wp-site-blocks > .alignleft { float: left; margin-right: 2em; }"; ruleset = ruleset + ".wp-site-blocks > .alignright { float: right; margin-left: 2em; }"; ruleset = ruleset + ".wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }"; } if (options.blockGap && hasBlockGapSupport) { const gapValue = getGapCSSValue(tree?.styles?.spacing?.blockGap) || "0.5em"; ruleset = ruleset + `:root :where(.wp-site-blocks) > * { margin-block-start: ${gapValue}; margin-block-end: 0; }`; ruleset = ruleset + ":root :where(.wp-site-blocks) > :first-child { margin-block-start: 0; }"; ruleset = ruleset + ":root :where(.wp-site-blocks) > :last-child { margin-block-end: 0; }"; } if (options.presets) { nodesWithSettings.forEach(({ selector, presets }) => { if (ROOT_BLOCK_SELECTOR === selector || ROOT_CSS_PROPERTIES_SELECTOR === selector) { selector = ""; } const classes = getPresetsClasses(selector, presets); if (classes.length > 0) { ruleset += classes; } }); } return ruleset; }; function generateSvgFilters(tree, blockSelectors) { const nodesWithSettings = getNodesWithSettings(tree, blockSelectors); return nodesWithSettings.flatMap(({ presets }) => { return getPresetsSvgFilters(presets); }); } var getSelectorsConfig = (blockType, rootSelector) => { if (blockType?.selectors && Object.keys(blockType.selectors).length > 0) { return blockType.selectors; } const config2 = { root: rootSelector }; Object.entries(BLOCK_SUPPORT_FEATURE_LEVEL_SELECTORS).forEach( ([featureKey, featureName]) => { const featureSelector = getBlockSelector(blockType, featureKey); if (featureSelector) { config2[featureName] = featureSelector; } } ); return config2; }; var getBlockSelectors = (blockTypes, variationInstanceId) => { const { getBlockStyles } = (0, import_data31.select)(import_blocks7.store); const result = {}; blockTypes.forEach((blockType) => { const name2 = blockType.name; const selector = getBlockSelector(blockType); if (!selector) { return; } let duotoneSelector = getBlockSelector(blockType, "filter.duotone"); if (!duotoneSelector) { const rootSelector = getBlockSelector(blockType); const duotoneSupport = (0, import_blocks7.getBlockSupport)( blockType, "color.__experimentalDuotone", false ); duotoneSelector = duotoneSupport && rootSelector && scopeSelector(rootSelector, duotoneSupport); } const hasLayoutSupport = !!blockType?.supports?.layout || !!blockType?.supports?.__experimentalLayout; const fallbackGapValue = ( // @ts-expect-error blockType?.supports?.spacing?.blockGap?.__experimentalDefault ); const blockStyleVariations = getBlockStyles(name2); const styleVariationSelectors = {}; blockStyleVariations?.forEach((variation) => { const variationSuffix = variationInstanceId ? `-${variationInstanceId}` : ""; const variationName = `${variation.name}${variationSuffix}`; const styleVariationSelector = getBlockStyleVariationSelector( variationName, selector ); styleVariationSelectors[variationName] = styleVariationSelector; }); const featureSelectors = getSelectorsConfig(blockType, selector); result[name2] = { duotoneSelector: duotoneSelector ?? void 0, fallbackGapValue, featureSelectors: Object.keys(featureSelectors).length ? featureSelectors : void 0, hasLayoutSupport, name: name2, selector, styleVariationSelectors: blockStyleVariations?.length ? styleVariationSelectors : void 0 }; }); return result; }; function updateConfigWithSeparator(config2) { const blocks = config2.styles?.blocks; const separatorBlock = blocks?.["core/separator"]; const needsSeparatorStyleUpdate = separatorBlock && separatorBlock.color?.background && !separatorBlock.color?.text && !separatorBlock.border?.color; if (needsSeparatorStyleUpdate) { return { ...config2, styles: { ...config2.styles, blocks: { ...blocks, "core/separator": { ...separatorBlock, color: { ...separatorBlock.color, text: separatorBlock.color?.background } } } } }; } return config2; } function processCSSNesting(css, blockSelector) { let processedCSS = ""; if (!css || css.trim() === "") { return processedCSS; } const parts = css.split("&"); parts.forEach((part) => { if (!part || part.trim() === "") { return; } const isRootCss = !part.includes("{"); if (isRootCss) { processedCSS += `:root :where(${blockSelector}){${part.trim()}}`; } else { const splitPart = part.replace("}", "").split("{"); if (splitPart.length !== 2) { return; } const [nestedSelector, cssValue] = splitPart; const matches = nestedSelector.match(/([>+~\s]*::[a-zA-Z-]+)/); const pseudoPart = matches ? matches[1] : ""; const withoutPseudoElement = matches ? nestedSelector.replace(pseudoPart, "").trim() : nestedSelector.trim(); let combinedSelector; if (withoutPseudoElement === "") { combinedSelector = blockSelector; } else { combinedSelector = nestedSelector.startsWith(" ") ? scopeSelector(blockSelector, withoutPseudoElement) : appendToSelector(blockSelector, withoutPseudoElement); } processedCSS += `:root :where(${combinedSelector})${pseudoPart}{${cssValue.trim()}}`; } }); return processedCSS; } function generateGlobalStyles(config2 = {}, blockTypes = [], options = {}) { const { hasBlockGapSupport: hasBlockGapSupportOption, hasFallbackGapSupport: hasFallbackGapSupportOption, disableLayoutStyles = false, disableRootPadding = false, styleOptions = {} } = options; const blocks = blockTypes.length > 0 ? blockTypes : (0, import_blocks7.getBlockTypes)(); const blockGap = getSetting(config2, "spacing.blockGap"); const hasBlockGapSupport = hasBlockGapSupportOption ?? blockGap !== null; const hasFallbackGapSupport = hasFallbackGapSupportOption ?? !hasBlockGapSupport; if (!config2?.styles || !config2?.settings) { return [[], {}]; } const updatedConfig = updateConfigWithSeparator(config2); const blockSelectors = getBlockSelectors(blocks); const customProperties = generateCustomProperties( updatedConfig, blockSelectors ); const globalStyles = transformToStyles( updatedConfig, blockSelectors, hasBlockGapSupport, hasFallbackGapSupport, disableLayoutStyles, disableRootPadding, styleOptions ); const svgs = generateSvgFilters(updatedConfig, blockSelectors); const styles = [ { css: customProperties, isGlobalStyles: true }, { css: globalStyles, isGlobalStyles: true }, // Load custom CSS in own stylesheet so that any invalid CSS entered in the input won't break all the global styles in the editor. { css: updatedConfig?.styles?.css ?? "", isGlobalStyles: true }, { assets: svgs, __unstableType: "svg", isGlobalStyles: true } ]; blocks.forEach((blockType) => { const blockStyles = updatedConfig?.styles?.blocks?.[blockType.name]; if (blockStyles?.css) { const selector = blockSelectors[blockType.name].selector; styles.push({ css: processCSSNesting(blockStyles.css, selector), isGlobalStyles: true }); } }); return [styles, updatedConfig.settings]; } // packages/editor/build-module/components/global-styles-provider/index.mjs var { cleanEmptyObject } = unlock(import_block_editor6.privateApis); function useGlobalStylesUserConfig() { const { globalStylesId, isReady: isReady2, settings, styles, _links } = (0, import_data32.useSelect)( (select6) => { const { getEntityRecord, getEditedEntityRecord: getEditedEntityRecord2, hasFinishedResolution, canUser } = select6(import_core_data28.store); const _globalStylesId = select6(import_core_data28.store).__experimentalGetCurrentGlobalStylesId(); let record; const userCanEditGlobalStyles = _globalStylesId ? canUser("update", { kind: "root", name: "globalStyles", id: _globalStylesId }) : null; if (_globalStylesId && /* * Test that the OPTIONS request for user capabilities is complete * before fetching the global styles entity record. * This is to avoid fetching the global styles entity unnecessarily. */ typeof userCanEditGlobalStyles === "boolean") { if (userCanEditGlobalStyles) { record = getEditedEntityRecord2( "root", "globalStyles", _globalStylesId ); } else { record = getEntityRecord( "root", "globalStyles", _globalStylesId, { context: "view" } ); } } let hasResolved = false; if (hasFinishedResolution( "__experimentalGetCurrentGlobalStylesId" )) { if (_globalStylesId) { hasResolved = userCanEditGlobalStyles ? hasFinishedResolution("getEditedEntityRecord", [ "root", "globalStyles", _globalStylesId ]) : hasFinishedResolution("getEntityRecord", [ "root", "globalStyles", _globalStylesId, { context: "view" } ]); } else { hasResolved = true; } } return { globalStylesId: _globalStylesId, isReady: hasResolved, settings: record?.settings, styles: record?.styles, _links: record?._links }; }, [] ); const { getEditedEntityRecord } = (0, import_data32.useSelect)(import_core_data28.store); const { editEntityRecord } = (0, import_data32.useDispatch)(import_core_data28.store); const config2 = (0, import_element26.useMemo)(() => { return { settings: settings ?? {}, styles: styles ?? {}, _links: _links ?? {} }; }, [settings, styles, _links]); const setConfig = (0, import_element26.useCallback)( /** * Set the global styles config. * @param {Function|Object} callbackOrObject If the callbackOrObject is a function, pass the current config to the callback so the consumer can merge values. * Otherwise, overwrite the current config with the incoming object. * @param {Object} options Options for editEntityRecord Core selector. */ (callbackOrObject, options = {}) => { const record = getEditedEntityRecord( "root", "globalStyles", globalStylesId ); const currentConfig = { styles: record?.styles ?? {}, settings: record?.settings ?? {}, _links: record?._links ?? {} }; const updatedConfig = typeof callbackOrObject === "function" ? callbackOrObject(currentConfig) : callbackOrObject; editEntityRecord( "root", "globalStyles", globalStylesId, { styles: cleanEmptyObject(updatedConfig.styles) || {}, settings: cleanEmptyObject(updatedConfig.settings) || {}, _links: cleanEmptyObject(updatedConfig._links) || {} }, options ); }, [globalStylesId, editEntityRecord, getEditedEntityRecord] ); return [isReady2, config2, setConfig]; } function useGlobalStylesBaseConfig() { const baseConfig = (0, import_data32.useSelect)( (select6) => select6(import_core_data28.store).__experimentalGetCurrentThemeBaseGlobalStyles(), [] ); return [!!baseConfig, baseConfig]; } function useGlobalStylesContext() { const [isUserConfigReady, userConfig, setUserConfig] = useGlobalStylesUserConfig(); const [isBaseConfigReady, baseConfig] = useGlobalStylesBaseConfig(); const mergedConfig = (0, import_element26.useMemo)(() => { if (!baseConfig || !userConfig) { return {}; } return mergeGlobalStyles(baseConfig, userConfig); }, [userConfig, baseConfig]); const context = (0, import_element26.useMemo)(() => { return { isReady: isUserConfigReady && isBaseConfigReady, user: userConfig, base: baseConfig, merged: mergedConfig, setUserConfig }; }, [ mergedConfig, userConfig, baseConfig, setUserConfig, isUserConfigReady, isBaseConfigReady ]); return context; } // packages/editor/build-module/components/provider/use-block-editor-settings.mjs var EMPTY_OBJECT3 = {}; function __experimentalReusableBlocksSelect(select6) { const { RECEIVE_INTERMEDIATE_RESULTS: RECEIVE_INTERMEDIATE_RESULTS2 } = unlock(import_core_data29.privateApis); const { getEntityRecords } = select6(import_core_data29.store); return getEntityRecords("postType", "wp_block", { per_page: -1, [RECEIVE_INTERMEDIATE_RESULTS2]: true }); } var BLOCK_EDITOR_SETTINGS = [ "__experimentalBlockBindingsSupportedAttributes", "__experimentalBlockDirectory", "__experimentalDiscussionSettings", "__experimentalFeatures", "__experimentalGlobalStylesBaseStyles", "allImageSizes", "alignWide", "blockInspectorTabs", "maxUploadFileSize", "allowedMimeTypes", "bodyPlaceholder", "canEditCSS", "canLockBlocks", "canUpdateBlockBindings", "capabilities", "clearBlockSelection", "codeEditingEnabled", "colors", "disableContentOnlyForUnsyncedPatterns", "disableCustomColors", "disableCustomFontSizes", "disableCustomSpacingSizes", "disableCustomGradients", "disableLayoutStyles", "enableCustomLineHeight", "enableCustomSpacing", "enableCustomUnits", "enableOpenverseMediaCategory", "fontSizes", "gradients", "generateAnchors", "onNavigateToEntityRecord", "imageDefaultSize", "imageDimensions", "imageEditing", "imageSizes", "isPreviewMode", "isRTL", "locale", "maxWidth", "postContentAttributes", "postsPerPage", "readOnly", "styles", "titlePlaceholder", "supportsLayout", "widgetTypesToHideFromLegacyWidgetBlock", "__unstableHasCustomAppender", "__unstableResolvedAssets", "__unstableIsBlockBasedTheme" ]; var { globalStylesDataKey, globalStylesLinksDataKey, selectBlockPatternsKey, reusableBlocksSelectKey, sectionRootClientIdKey, mediaEditKey, getMediaSelectKey, isIsolatedEditorKey, deviceTypeKey, isNavigationOverlayContextKey, mediaUploadOnSuccessKey } = unlock(import_block_editor7.privateApis); function useBlockEditorSettings(settings, postType2, postId2, renderingMode2) { const isLargeViewport = (0, import_compose6.useViewportMatch)("medium"); const { allImageSizes, bigImageSizeThreshold, allowRightClickOverrides, blockTypes, focusMode, hasFixedToolbar, isDistractionFree, keepCaretInsideBlock, hasUploadPermissions, hiddenBlockTypes, canUseUnfilteredHTML, userCanCreatePages, pageOnFront, pageForPosts, userPatternCategories, restBlockPatternCategories, sectionRootClientId, deviceType: deviceType2, isNavigationOverlayContext, isRevisionsMode: isRevisionsMode2 } = (0, import_data33.useSelect)( (select6) => { const { canUser, getRawEntityRecord, getEntityRecord, getUserPatternCategories, getBlockPatternCategories } = select6(import_core_data29.store); const { get } = select6(import_preferences4.store); const { getBlockTypes: getBlockTypes6 } = select6(import_blocks8.store); const { getDeviceType: getDeviceType2, isRevisionsMode: _isRevisionsMode } = unlock( select6(store) ); const { getBlocksByName, getBlockAttributes: getBlockAttributes2 } = select6(import_block_editor7.store); const siteSettings = canUser("read", { kind: "root", name: "site" }) ? getEntityRecord("root", "site") : void 0; const baseData = getEntityRecord("root", "__unstableBase"); function getSectionRootBlock() { if (renderingMode2 === "template-locked") { return getBlocksByName("core/post-content")?.[0] ?? ""; } return getBlocksByName("core/group").find( (clientId) => getBlockAttributes2(clientId)?.tagName === "main" ) ?? ""; } return { allImageSizes: baseData?.image_sizes, bigImageSizeThreshold: baseData?.image_size_threshold, allowRightClickOverrides: get( "core", "allowRightClickOverrides" ), blockTypes: getBlockTypes6(), canUseUnfilteredHTML: getRawEntityRecord( "postType", postType2, postId2 )?._links?.hasOwnProperty("wp:action-unfiltered-html"), focusMode: get("core", "focusMode"), hasFixedToolbar: get("core", "fixedToolbar") || !isLargeViewport, hiddenBlockTypes: get("core", "hiddenBlockTypes"), isDistractionFree: get("core", "distractionFree"), keepCaretInsideBlock: get("core", "keepCaretInsideBlock"), hasUploadPermissions: canUser("create", { kind: "postType", name: "attachment" }) ?? true, userCanCreatePages: canUser("create", { kind: "postType", name: "page" }), pageOnFront: siteSettings?.page_on_front, pageForPosts: siteSettings?.page_for_posts, userPatternCategories: getUserPatternCategories(), restBlockPatternCategories: getBlockPatternCategories(), sectionRootClientId: getSectionRootBlock(), deviceType: getDeviceType2(), isNavigationOverlayContext: postType2 === "wp_template_part" && postId2 ? getEntityRecord( "postType", "wp_template_part", postId2 )?.area === "navigation-overlay" : false, isRevisionsMode: _isRevisionsMode() }; }, [postType2, postId2, isLargeViewport, renderingMode2] ); const { merged: mergedGlobalStyles } = useGlobalStylesContext(); const globalStylesData = mergedGlobalStyles.styles ?? EMPTY_OBJECT3; const globalStylesLinksData = mergedGlobalStyles._links ?? EMPTY_OBJECT3; const settingsBlockPatterns = settings.__experimentalAdditionalBlockPatterns ?? // WP 6.0 settings.__experimentalBlockPatterns; const settingsBlockPatternCategories = settings.__experimentalAdditionalBlockPatternCategories ?? // WP 6.0 settings.__experimentalBlockPatternCategories; const blockPatterns = (0, import_element27.useMemo)( () => [...settingsBlockPatterns || []].filter( ({ postTypes }) => { return !postTypes || Array.isArray(postTypes) && postTypes.includes(postType2); } ), [settingsBlockPatterns, postType2] ); const blockPatternCategories = (0, import_element27.useMemo)( () => [ ...settingsBlockPatternCategories || [], ...restBlockPatternCategories || [] ].filter( (x2, index2, arr) => index2 === arr.findIndex((y3) => x2.name === y3.name) ), [settingsBlockPatternCategories, restBlockPatternCategories] ); const { undo: undo2, setIsInserterOpened: setIsInserterOpened2 } = (0, import_data33.useDispatch)(store); const { editMediaEntity } = unlock((0, import_data33.useDispatch)(import_core_data29.store)); const { saveEntityRecord } = (0, import_data33.useDispatch)(import_core_data29.store); const createPageEntity = (0, import_element27.useCallback)( (options) => { if (!userCanCreatePages) { return Promise.reject({ message: (0, import_i18n62.__)( "You do not have permission to create Pages." ) }); } return saveEntityRecord("postType", "page", options); }, [saveEntityRecord, userCanCreatePages] ); const allowedBlockTypes = (0, import_element27.useMemo)(() => { if (hiddenBlockTypes && hiddenBlockTypes.length > 0) { const defaultAllowedBlockTypes = true === settings.allowedBlockTypes ? blockTypes.map(({ name: name2 }) => name2) : settings.allowedBlockTypes || []; return defaultAllowedBlockTypes.filter( (type) => !hiddenBlockTypes.includes(type) ); } return settings.allowedBlockTypes; }, [settings.allowedBlockTypes, hiddenBlockTypes, blockTypes]); const forceDisableFocusMode = settings.focusMode === false; return (0, import_element27.useMemo)(() => { const blockEditorSettings = { ...Object.fromEntries( Object.entries(settings).filter( ([key]) => BLOCK_EDITOR_SETTINGS.includes(key) ).filter(([key]) => key !== "onNavigateToEntityRecord") ), [globalStylesDataKey]: globalStylesData, [globalStylesLinksDataKey]: globalStylesLinksData, allImageSizes, bigImageSizeThreshold, allowedBlockTypes, allowRightClickOverrides, focusMode: focusMode && !forceDisableFocusMode, hasFixedToolbar, isDistractionFree, keepCaretInsideBlock, onNavigateToEntityRecord: settings.onNavigateToEntityRecord, [getMediaSelectKey]: (select6, attachmentId) => { return select6(import_core_data29.store).getEntityRecord( "postType", "attachment", attachmentId ); }, [mediaEditKey]: hasUploadPermissions ? editMediaEntity : void 0, mediaUpload: hasUploadPermissions ? mediaUpload : void 0, [mediaUploadOnSuccessKey]: hasUploadPermissions ? mediaUploadOnSuccess : void 0, mediaSideload: hasUploadPermissions ? media_sideload_default : void 0, mediaFinalize: hasUploadPermissions ? mediaFinalize : void 0, __experimentalBlockPatterns: blockPatterns, [selectBlockPatternsKey]: (select6) => { const { hasFinishedResolution, getBlockPatternsForPostType } = unlock(select6(import_core_data29.store)); const patterns2 = getBlockPatternsForPostType(postType2); return hasFinishedResolution("getBlockPatterns") ? patterns2 : void 0; }, [reusableBlocksSelectKey]: __experimentalReusableBlocksSelect, __experimentalBlockPatternCategories: blockPatternCategories, __experimentalUserPatternCategories: userPatternCategories, __experimentalFetchLinkSuggestions: (search, searchOptions) => (0, import_core_data29.__experimentalFetchLinkSuggestions)(search, searchOptions, settings), inserterMediaCategories: media_categories_default, __experimentalFetchRichUrlData: import_core_data29.__experimentalFetchUrlData, // Todo: This only checks the top level post, not the post within a template or any other entity that can be edited. // This might be better as a generic "canUser" selector. __experimentalCanUserUseUnfilteredHTML: canUseUnfilteredHTML, //Todo: this is only needed for native and should probably be removed. __experimentalUndo: undo2, // Check whether we want all site editor frames to have outlines // including the navigation / pattern / parts editors. outlineMode: !isDistractionFree && postType2 === "wp_template", // Check these two properties: they were not present in the site editor. __experimentalCreatePageEntity: createPageEntity, __experimentalUserCanCreatePages: userCanCreatePages, pageOnFront, pageForPosts, __experimentalPreferPatternsOnRoot: postType2 === "wp_template", templateLock: postType2 === "wp_navigation" ? "insert" : settings.templateLock, template: postType2 === "wp_navigation" ? [["core/navigation", {}, []]] : settings.template, __experimentalSetIsInserterOpened: setIsInserterOpened2, [sectionRootClientIdKey]: sectionRootClientId, editorTool: renderingMode2 === "post-only" && postType2 !== "wp_template" ? "edit" : void 0, // When editing template parts, patterns, or navigation directly, // we're in an isolated editing context (focused on that entity alone). [isIsolatedEditorKey]: [ "wp_template_part", "wp_block", "wp_navigation" ].includes(postType2), // When in template-locked mode (e.g., "Show Template" in the post editor), // don't treat template parts as contentOnly sections. disableContentOnlyForTemplateParts: renderingMode2 === "template-locked", ...deviceType2 ? { [deviceTypeKey]: deviceType2 } : {}, [isNavigationOverlayContextKey]: isNavigationOverlayContext }; if (isRevisionsMode2) { blockEditorSettings.isPreviewMode = true; } return blockEditorSettings; }, [ isRevisionsMode2, allowedBlockTypes, allowRightClickOverrides, focusMode, forceDisableFocusMode, hasFixedToolbar, isDistractionFree, keepCaretInsideBlock, settings, hasUploadPermissions, userPatternCategories, blockPatterns, blockPatternCategories, canUseUnfilteredHTML, undo2, createPageEntity, userCanCreatePages, pageOnFront, pageForPosts, postType2, setIsInserterOpened2, sectionRootClientId, globalStylesData, globalStylesLinksData, renderingMode2, editMediaEntity, settings.onNavigateToEntityRecord, deviceType2, allImageSizes, bigImageSizeThreshold, isNavigationOverlayContext ]); } var use_block_editor_settings_default = useBlockEditorSettings; // packages/editor/build-module/components/provider/disable-non-page-content-blocks.mjs var import_data34 = __toESM(require_data(), 1); var import_block_editor8 = __toESM(require_block_editor(), 1); var import_element29 = __toESM(require_element(), 1); // packages/editor/build-module/components/provider/use-post-content-block-types.mjs var import_element28 = __toESM(require_element(), 1); var import_hooks4 = __toESM(require_hooks(), 1); var POST_CONTENT_BLOCK_TYPES = [ "core/post-title", "core/post-featured-image", "core/post-content" ]; function usePostContentBlockTypes() { return (0, import_element28.useMemo)( () => [ ...(0, import_hooks4.applyFilters)( "editor.postContentBlockTypes", POST_CONTENT_BLOCK_TYPES ) ], [] ); } // packages/editor/build-module/components/provider/disable-non-page-content-blocks.mjs function DisableNonPageContentBlocks() { const postContentBlockTypes = usePostContentBlockTypes(); const { contentOnlyIds, templateParts } = (0, import_data34.useSelect)( (select6) => { const { getPostBlocksByName: getPostBlocksByName2 } = unlock(select6(store)); const { getBlocksByName } = select6(import_block_editor8.store); return { contentOnlyIds: getPostBlocksByName2(postContentBlockTypes), templateParts: getBlocksByName("core/template-part") }; }, [postContentBlockTypes] ); const templatePartChildren = (0, import_data34.useSelect)( (select6) => { const { getBlockOrder: getBlockOrder2 } = select6(import_block_editor8.store); return templateParts.flatMap( (clientId) => getBlockOrder2(clientId) ); }, [templateParts] ); const registry = (0, import_data34.useRegistry)(); (0, import_element29.useEffect)(() => { const { setBlockEditingMode, unsetBlockEditingMode, __unstableMarkNextChangeAsNotPersistent } = registry.dispatch(import_block_editor8.store); __unstableMarkNextChangeAsNotPersistent(); setBlockEditingMode("", "disabled"); return () => { __unstableMarkNextChangeAsNotPersistent(); unsetBlockEditingMode(""); }; }, [registry]); (0, import_element29.useEffect)(() => { const { setBlockEditingMode, unsetBlockEditingMode, __unstableMarkNextChangeAsNotPersistent } = registry.dispatch(import_block_editor8.store); registry.batch(() => { for (const clientId of templateParts) { __unstableMarkNextChangeAsNotPersistent(); setBlockEditingMode(clientId, "contentOnly"); } }); return () => { registry.batch(() => { for (const clientId of templateParts) { __unstableMarkNextChangeAsNotPersistent(); unsetBlockEditingMode(clientId); } }); }; }, [templateParts, registry]); (0, import_element29.useEffect)(() => { const { setBlockEditingMode, unsetBlockEditingMode, __unstableMarkNextChangeAsNotPersistent } = registry.dispatch(import_block_editor8.store); const contentOnlySet = new Set(contentOnlyIds); registry.batch(() => { for (const clientId of contentOnlyIds) { __unstableMarkNextChangeAsNotPersistent(); setBlockEditingMode(clientId, "contentOnly"); } for (const clientId of templatePartChildren) { if (!contentOnlySet.has(clientId)) { __unstableMarkNextChangeAsNotPersistent(); setBlockEditingMode(clientId, "disabled"); } } }); return () => { registry.batch(() => { for (const clientId of contentOnlyIds) { __unstableMarkNextChangeAsNotPersistent(); unsetBlockEditingMode(clientId); } for (const clientId of templatePartChildren) { if (!contentOnlySet.has(clientId)) { __unstableMarkNextChangeAsNotPersistent(); unsetBlockEditingMode(clientId); } } }); }; }, [contentOnlyIds, templatePartChildren, registry]); return null; } // packages/editor/build-module/components/provider/navigation-block-editing-mode.mjs var import_element30 = __toESM(require_element(), 1); var import_data35 = __toESM(require_data(), 1); var import_block_editor9 = __toESM(require_block_editor(), 1); function NavigationBlockEditingMode() { const registry = (0, import_data35.useRegistry)(); const blockClientId = (0, import_data35.useSelect)( (select6) => select6(import_block_editor9.store).getBlockOrder()?.[0], [] ); (0, import_element30.useEffect)(() => { if (!blockClientId) { return; } const { setBlockEditingMode, unsetBlockEditingMode, __unstableMarkNextChangeAsNotPersistent } = registry.dispatch(import_block_editor9.store); __unstableMarkNextChangeAsNotPersistent(); setBlockEditingMode(blockClientId, "contentOnly"); return () => { __unstableMarkNextChangeAsNotPersistent(); unsetBlockEditingMode(blockClientId); }; }, [registry, blockClientId]); } // packages/editor/build-module/components/provider/use-hide-blocks-from-inserter.mjs var import_element31 = __toESM(require_element(), 1); var import_hooks5 = __toESM(require_hooks(), 1); var POST_TYPES_ALLOWING_POST_CONTENT_TEMPLATE_PART = [ "wp_block", "wp_template", "wp_template_part" ]; function useHideBlocksFromInserter(postType2, mode) { (0, import_element31.useEffect)(() => { (0, import_hooks5.addFilter)( "blockEditor.__unstableCanInsertBlockType", "removeTemplatePartsFromInserter", (canInsert, blockType) => { if (!POST_TYPES_ALLOWING_POST_CONTENT_TEMPLATE_PART.includes( postType2 ) && blockType.name === "core/template-part" && mode === "post-only") { return false; } return canInsert; } ); (0, import_hooks5.addFilter)( "blockEditor.__unstableCanInsertBlockType", "removePostContentFromInserter", (canInsert, blockType, rootClientId, { getBlockParentsByBlockName }) => { if (!POST_TYPES_ALLOWING_POST_CONTENT_TEMPLATE_PART.includes( postType2 ) && blockType.name === "core/post-content") { return getBlockParentsByBlockName(rootClientId, "core/query").length > 0; } return canInsert; } ); return () => { (0, import_hooks5.removeFilter)( "blockEditor.__unstableCanInsertBlockType", "removeTemplatePartsFromInserter" ); (0, import_hooks5.removeFilter)( "blockEditor.__unstableCanInsertBlockType", "removePostContentFromInserter" ); }; }, [postType2, mode]); } // packages/editor/build-module/components/provider/use-revision-blocks.mjs var import_data36 = __toESM(require_data(), 1); var import_element32 = __toESM(require_element(), 1); var import_blocks10 = __toESM(require_blocks(), 1); // packages/editor/build-module/components/post-revisions-preview/block-diff.mjs var import_array = __toESM(require_array(), 1); var import_word = __toESM(require_word(), 1); var import_block_serialization_default_parser = __toESM(require_block_serialization_default_parser(), 1); var import_blocks9 = __toESM(require_blocks(), 1); var import_rich_text = __toESM(require_rich_text(), 1); var import_i18n63 = __toESM(require_i18n(), 1); var { parseRawBlock } = unlock(import_blocks9.privateApis); function stringifyValue(value) { if (value === null || value === void 0) { return ""; } if (typeof value === "object") { return JSON.stringify(value, null, 2); } return String(value); } function textSimilarity(text1, text2) { if (!text1 && !text2) { return 1; } if (!text1 || !text2) { return 0; } const segmenter = new Intl.Segmenter(void 0, { granularity: "word" }); const wordLikeRegex = /[\p{L}\p{N}]/u; const getWords = (text) => { const words = []; for (const { segment, isWordLike } of segmenter.segment(text)) { if (isWordLike || wordLikeRegex.test(segment)) { words.push(segment); } } return words; }; const words1 = getWords(text1); const words2 = getWords(text2); if (words1.length === 0 && words2.length === 0) { return 1; } const set1 = new Set(words1); let intersection = 0; for (const word of words2) { if (set1.has(word)) { intersection++; } } const total = Math.max(words1.length, words2.length); return total > 0 ? intersection / total : 0; } function pairSimilarBlocks(blocks) { const removed = []; const added = []; blocks.forEach((block, index2) => { const status = block.__revisionDiffStatus?.status; if (status === "removed") { removed.push({ block, index: index2 }); } else if (status === "added") { added.push({ block, index: index2 }); } }); if (removed.length === 0 || added.length === 0) { return blocks; } const pairedRemoved = /* @__PURE__ */ new Set(); const pairedAdded = /* @__PURE__ */ new Set(); const modifications = /* @__PURE__ */ new Map(); const SIMILARITY_THRESHOLD = 0.5; const addedByName = /* @__PURE__ */ new Map(); for (const add of added) { const name2 = add.block.blockName; if (!addedByName.has(name2)) { addedByName.set(name2, []); } addedByName.get(name2).push(add); } const removedByName = /* @__PURE__ */ new Map(); for (const rem of removed) { const name2 = rem.block.blockName; if (!removedByName.has(name2)) { removedByName.set(name2, []); } removedByName.get(name2).push(rem); } let maxPairedAddedIndex = -1; for (const rem of removed) { const candidates = addedByName.get(rem.block.blockName) || []; const sameNameRemoved = removedByName.get(rem.block.blockName) || []; const unpaired = candidates.filter( (add) => !modifications.has(add.index) && add.index > maxPairedAddedIndex ); if (unpaired.length === 0) { continue; } let bestMatch = null; if (sameNameRemoved.length === 1 && unpaired.length === 1) { const add = unpaired[0]; const attrsMatch = JSON.stringify(rem.block.attrs) === JSON.stringify(add.block.attrs); const contentMatch = (rem.block.innerHTML || "") === (add.block.innerHTML || ""); if (!contentMatch || !attrsMatch) { bestMatch = add; } } else { let bestScore = 0; for (const add of unpaired) { const score = textSimilarity( rem.block.innerHTML || "", add.block.innerHTML || "" ); const attrsMatch = JSON.stringify(rem.block.attrs) === JSON.stringify(add.block.attrs); if (score > bestScore && score > SIMILARITY_THRESHOLD && (score < 1 || !attrsMatch)) { bestScore = score; bestMatch = add; } } } if (bestMatch) { maxPairedAddedIndex = bestMatch.index; const modifiedBlock = { ...bestMatch.block, __revisionDiffStatus: { status: "modified" }, __previousRawBlock: rem.block }; const lo = Math.min(rem.index, bestMatch.index); const hi = Math.max(rem.index, bestMatch.index); let hasAddedBetween = false; for (let i3 = lo + 1; i3 < hi; i3++) { if (blocks[i3].__revisionDiffStatus?.status === "added" && !pairedAdded.has(i3)) { hasAddedBetween = true; break; } } if (hasAddedBetween) { modifications.set(bestMatch.index, modifiedBlock); pairedRemoved.add(rem.index); } else { modifications.set(rem.index, modifiedBlock); pairedAdded.add(bestMatch.index); } } } return blocks.map((block, index2) => { if (pairedRemoved.has(index2) || pairedAdded.has(index2)) { return null; } if (modifications.has(index2)) { return modifications.get(index2); } return block; }).filter(Boolean); } function diffRawBlocks(currentRaw, previousRaw) { const createBlockSignature = (rawBlock) => JSON.stringify({ name: rawBlock.blockName, attrs: rawBlock.attrs, // Use innerContent filtered to non-null and non-whitespace-only strings. // This excludes whitespace between inner blocks which changes based on count. html: (rawBlock.innerContent || []).filter( (c6) => c6 !== null && c6.trim() !== "" ) }); const currentSigs = currentRaw.map(createBlockSignature); const previousSigs = previousRaw.map(createBlockSignature); const diff = (0, import_array.diffArrays)(previousSigs, currentSigs); const result = []; let currIdx = 0; let prevIdx = 0; for (const part of diff) { if (part.added) { for (let i3 = 0; i3 < part.count; i3++) { result.push({ ...currentRaw[currIdx++], __revisionDiffStatus: { status: "added" } }); } } else if (part.removed) { for (let i3 = 0; i3 < part.count; i3++) { result.push({ ...previousRaw[prevIdx++], __revisionDiffStatus: { status: "removed" } }); } } else { for (let i3 = 0; i3 < part.count; i3++) { const currBlock = currentRaw[currIdx++]; const prevBlock = previousRaw[prevIdx++]; const diffedInnerBlocks = diffRawBlocks( currBlock.innerBlocks || [], prevBlock.innerBlocks || [] ); result.push({ ...currBlock, innerBlocks: diffedInnerBlocks }); } } } return pairSimilarBlocks(result); } function hasFormatChangedAtIndex(currentFormats, previousFormats, currentIndex, previousIndex) { const currFmts = currentFormats[currentIndex] || []; const prevFmts = previousFormats[previousIndex] || []; if (currFmts.length !== prevFmts.length) { return true; } for (const fmt of currFmts) { const match3 = prevFmts.find( (pf) => pf.type === fmt.type && JSON.stringify(pf.attributes) === JSON.stringify(fmt.attributes) ); if (!match3) { return true; } } return false; } function describeFormatChange(currentFormats, previousFormats, currIdx, prevIdx) { const currFmts = currentFormats[currIdx] || []; const prevFmts = previousFormats[prevIdx] || []; let addedCount = 0; let removedCount = 0; let changedCount = 0; for (const fmt of currFmts) { const match3 = prevFmts.find((pf) => pf.type === fmt.type); if (!match3) { addedCount++; } else if (JSON.stringify(fmt.attributes) !== JSON.stringify(match3.attributes)) { changedCount++; } } for (const fmt of prevFmts) { const match3 = currFmts.find((cf) => cf.type === fmt.type); if (!match3) { removedCount++; } } if (addedCount > 0 && removedCount === 0 && changedCount === 0) { return { type: "added", description: (0, import_i18n63.sprintf)( /* translators: %d: number of formats added */ (0, import_i18n63._n)("%d format added", "%d formats added", addedCount), addedCount ) }; } if (removedCount > 0 && addedCount === 0 && changedCount === 0) { return { type: "removed", description: (0, import_i18n63.sprintf)( /* translators: %d: number of formats removed */ (0, import_i18n63._n)("%d format removed", "%d formats removed", removedCount), removedCount ) }; } const parts = []; if (addedCount > 0) { parts.push( (0, import_i18n63.sprintf)( /* translators: %d: number of formats added */ (0, import_i18n63._n)("%d format added", "%d formats added", addedCount), addedCount ) ); } if (removedCount > 0) { parts.push( (0, import_i18n63.sprintf)( /* translators: %d: number of formats removed */ (0, import_i18n63._n)("%d format removed", "%d formats removed", removedCount), removedCount ) ); } if (changedCount > 0) { parts.push( (0, import_i18n63.sprintf)( /* translators: %d: number of formats changed */ (0, import_i18n63._n)("%d format changed", "%d formats changed", changedCount), changedCount ) ); } return { type: "changed", description: parts.join(", ") || (0, import_i18n63.__)("Formatting changed") }; } function applyRichTextDiff(currentRichText, previousRichText) { const currentText = currentRichText.toPlainText(); const previousText = previousRichText.toPlainText(); const textDiff = (0, import_word.diffWords)(previousText, currentText); let result = (0, import_rich_text.create)({ text: "" }); let currentIdx = 0; let previousIdx = 0; for (const part of textDiff) { if (part.removed) { const removedSlice = (0, import_rich_text.slice)( previousRichText, previousIdx, previousIdx + part.value.length ); const formatted = (0, import_rich_text.applyFormat)( removedSlice, { type: "revision/diff-removed", attributes: { title: (0, import_i18n63.__)("Removed") } }, 0, part.value.length ); result = (0, import_rich_text.concat)(result, formatted); previousIdx += part.value.length; } else if (part.added) { const addedSlice = (0, import_rich_text.slice)( currentRichText, currentIdx, currentIdx + part.value.length ); const formatted = (0, import_rich_text.applyFormat)( addedSlice, { type: "revision/diff-added", attributes: { title: (0, import_i18n63.__)("Added") } }, 0, part.value.length ); result = (0, import_rich_text.concat)(result, formatted); currentIdx += part.value.length; } else { const currentFormats = currentRichText.formats || []; const previousFormats = previousRichText.formats || []; const len = part.value.length; const checkFormatChanged = (offset3) => hasFormatChangedAtIndex( currentFormats, previousFormats, currentIdx + offset3, previousIdx + offset3 ); let rangeStart = 0; let rangeFormatChanged = checkFormatChanged(0); for (let i3 = 1; i3 <= len; i3++) { const formatChanged = i3 < len && checkFormatChanged(i3); if (i3 === len || formatChanged !== rangeFormatChanged) { const rangeSlice = (0, import_rich_text.slice)( currentRichText, currentIdx + rangeStart, currentIdx + i3 ); if (rangeFormatChanged) { const { type, description } = describeFormatChange( currentFormats, previousFormats, currentIdx + rangeStart, previousIdx + rangeStart ); const formatType = { added: "revision/diff-format-added", removed: "revision/diff-format-removed", changed: "revision/diff-format-changed" }[type]; const marked = (0, import_rich_text.applyFormat)( rangeSlice, { type: formatType, attributes: { title: description } }, 0, i3 - rangeStart ); result = (0, import_rich_text.concat)(result, marked); } else { result = (0, import_rich_text.concat)(result, rangeSlice); } rangeStart = i3; rangeFormatChanged = formatChanged; } } currentIdx += part.value.length; previousIdx += part.value.length; } } return new import_rich_text.RichTextData(result); } function applyDiffToBlock(currentBlock, previousBlock, diffStatus) { const blockType = (0, import_blocks9.getBlockType)(currentBlock.name); if (!blockType) { return; } const changedAttributes = {}; for (const [attrName, attrDef] of Object.entries( blockType.attributes )) { if (attrDef.source === "rich-text") { const currentRichText = currentBlock.attributes[attrName]; const previousRichText = previousBlock.attributes[attrName]; if (currentRichText instanceof import_rich_text.RichTextData && previousRichText instanceof import_rich_text.RichTextData) { currentBlock.attributes[attrName] = applyRichTextDiff( currentRichText, previousRichText ); } } else { const currStr = stringifyValue( currentBlock.attributes[attrName] ); const prevStr = stringifyValue( previousBlock.attributes[attrName] ); if (currStr !== prevStr) { changedAttributes[attrName] = (0, import_word.diffWords)(prevStr, currStr); } } } if (Object.keys(changedAttributes).length > 0) { diffStatus.changedAttributes = changedAttributes; } } function applyDiffRecursively(parsedBlock, rawBlock) { if (rawBlock.__revisionDiffStatus) { if (rawBlock.__revisionDiffStatus.status === "modified" && rawBlock.__previousRawBlock) { const previousParsed = parseRawBlock(rawBlock.__previousRawBlock); if (previousParsed) { applyDiffToBlock( parsedBlock, previousParsed, rawBlock.__revisionDiffStatus ); } } parsedBlock.__revisionDiffStatus = rawBlock.__revisionDiffStatus; parsedBlock.attributes.__revisionDiffStatus = rawBlock.__revisionDiffStatus; } if (parsedBlock.innerBlocks && rawBlock.innerBlocks) { for (let i3 = 0; i3 < parsedBlock.innerBlocks.length; i3++) { const parsedInner = parsedBlock.innerBlocks[i3]; const rawInner = rawBlock.innerBlocks[i3]; if (parsedInner && rawInner) { applyDiffRecursively(parsedInner, rawInner); } } } } function diffRevisionContent(currentContent, previousContent) { const currentRaw = (0, import_block_serialization_default_parser.parse)(currentContent || ""); const previousRaw = (0, import_block_serialization_default_parser.parse)(previousContent || ""); const mergedRaw = diffRawBlocks(currentRaw, previousRaw); return mergedRaw.map((rawBlock) => { const parsed = parseRawBlock(rawBlock); if (parsed) { applyDiffRecursively(parsed, rawBlock); } return parsed; }).filter(Boolean); } // packages/editor/build-module/components/post-revisions-preview/preserve-client-ids.mjs var import_array2 = __toESM(require_array(), 1); function preserveClientIds(newBlocks, prevBlocks) { if (!prevBlocks?.length || !newBlocks?.length) { return newBlocks; } const newSigs = newBlocks.map((block) => block.name); const prevSigs = prevBlocks.map((block) => block.name); const diffResult = (0, import_array2.diffArrays)(prevSigs, newSigs); let newIndex = 0; let prevIndex = 0; const result = []; for (const chunk of diffResult) { if (chunk.removed) { prevIndex += chunk.count; } else if (chunk.added) { for (let i3 = 0; i3 < chunk.count; i3++) { result.push(newBlocks[newIndex++]); } } else { for (let i3 = 0; i3 < chunk.count; i3++) { const newBlock = newBlocks[newIndex++]; const prevBlock = prevBlocks[prevIndex++]; result.push({ ...newBlock, clientId: prevBlock.clientId, innerBlocks: preserveClientIds( newBlock.innerBlocks, prevBlock.innerBlocks ) }); } } } return result; } // packages/editor/build-module/components/provider/use-revision-blocks.mjs function useRevisionBlocks() { const { isInRevisionsMode, showDiff, revision, previousRevision, postType: postType2 } = (0, import_data36.useSelect)((select6) => { const { isRevisionsMode: isRevisionsMode2, isShowingRevisionDiff: isShowingRevisionDiff2, getCurrentRevision: getCurrentRevision2, getPreviousRevision: getPreviousRevision2 } = unlock(select6(store)); const { getCurrentPostType: getCurrentPostType2 } = select6(store); const inRevisions = isRevisionsMode2(); return { isInRevisionsMode: inRevisions, showDiff: isShowingRevisionDiff2(), revision: inRevisions ? getCurrentRevision2() : void 0, previousRevision: inRevisions ? getPreviousRevision2() : void 0, postType: getCurrentPostType2() }; }, []); const previousBlocksRef = (0, import_element32.useRef)([]); const blocks = (0, import_element32.useMemo)(() => { if (!isInRevisionsMode) { previousBlocksRef.current = []; return null; } if (!revision) { return []; } const currentContent = revision?.content?.raw ?? ""; let parsedBlocks; if (showDiff) { const previousContent = previousRevision?.content?.raw || ""; parsedBlocks = diffRevisionContent( currentContent, previousContent ); } else { parsedBlocks = (0, import_blocks10.parse)(currentContent); } if (postType2 === "wp_navigation") { parsedBlocks = [ (0, import_blocks10.createBlock)( "core/navigation", { templateLock: false }, parsedBlocks ) ]; } const blocksWithStableIds = preserveClientIds( parsedBlocks, previousBlocksRef.current ); previousBlocksRef.current = blocksWithStableIds; return blocksWithStableIds; }, [ isInRevisionsMode, revision, revision?.content?.raw, previousRevision?.content?.raw, postType2, showDiff ]); return blocks; } // packages/editor/build-module/components/commands/index.mjs var import_data44 = __toESM(require_data(), 1); var import_i18n66 = __toESM(require_i18n(), 1); var import_commands = __toESM(require_commands(), 1); var import_preferences8 = __toESM(require_preferences(), 1); var import_notices14 = __toESM(require_notices(), 1); var import_block_editor10 = __toESM(require_block_editor(), 1); var import_core_data32 = __toESM(require_core_data(), 1); // packages/interface/build-module/index.mjs var build_module_exports = {}; __export(build_module_exports, { ActionItem: () => action_item_default, ComplementaryArea: () => complementary_area_default, ComplementaryAreaMoreMenuItem: () => ComplementaryAreaMoreMenuItem, FullscreenMode: () => fullscreen_mode_default, InterfaceSkeleton: () => interface_skeleton_default, PinnedItems: () => pinned_items_default, store: () => store2 }); // packages/interface/build-module/components/complementary-area/index.mjs var import_components30 = __toESM(require_components(), 1); var import_data41 = __toESM(require_data(), 1); var import_i18n64 = __toESM(require_i18n(), 1); var import_element34 = __toESM(require_element(), 1); var import_viewport = __toESM(require_viewport(), 1); var import_preferences7 = __toESM(require_preferences(), 1); var import_compose7 = __toESM(require_compose(), 1); var import_plugins2 = __toESM(require_plugins(), 1); // packages/interface/build-module/components/complementary-area-toggle/index.mjs var import_components26 = __toESM(require_components(), 1); var import_data40 = __toESM(require_data(), 1); var import_plugins = __toESM(require_plugins(), 1); // packages/interface/build-module/store/index.mjs var import_data39 = __toESM(require_data(), 1); // packages/interface/build-module/store/actions.mjs var actions_exports2 = {}; __export(actions_exports2, { closeModal: () => closeModal, disableComplementaryArea: () => disableComplementaryArea, enableComplementaryArea: () => enableComplementaryArea, openModal: () => openModal, pinItem: () => pinItem, setDefaultComplementaryArea: () => setDefaultComplementaryArea, setFeatureDefaults: () => setFeatureDefaults, setFeatureValue: () => setFeatureValue, toggleFeature: () => toggleFeature, unpinItem: () => unpinItem }); var import_deprecated5 = __toESM(require_deprecated(), 1); var import_preferences5 = __toESM(require_preferences(), 1); // packages/interface/build-module/store/deprecated.mjs var import_deprecated4 = __toESM(require_deprecated(), 1); function normalizeComplementaryAreaScope(scope) { if (["core/edit-post", "core/edit-site"].includes(scope)) { (0, import_deprecated4.default)(`${scope} interface scope`, { alternative: "core interface scope", hint: "core/edit-post and core/edit-site are merging.", version: "6.6" }); return "core"; } return scope; } function normalizeComplementaryAreaName(scope, name2) { if (scope === "core" && name2 === "edit-site/template") { (0, import_deprecated4.default)(`edit-site/template sidebar`, { alternative: "edit-post/document", version: "6.6" }); return "edit-post/document"; } if (scope === "core" && name2 === "edit-site/block-inspector") { (0, import_deprecated4.default)(`edit-site/block-inspector sidebar`, { alternative: "edit-post/block", version: "6.6" }); return "edit-post/block"; } return name2; } // packages/interface/build-module/store/actions.mjs var setDefaultComplementaryArea = (scope, area) => { scope = normalizeComplementaryAreaScope(scope); area = normalizeComplementaryAreaName(scope, area); return { type: "SET_DEFAULT_COMPLEMENTARY_AREA", scope, area }; }; var enableComplementaryArea = (scope, area) => ({ registry, dispatch: dispatch7 }) => { if (!area) { return; } scope = normalizeComplementaryAreaScope(scope); area = normalizeComplementaryAreaName(scope, area); const isComplementaryAreaVisible = registry.select(import_preferences5.store).get(scope, "isComplementaryAreaVisible"); if (!isComplementaryAreaVisible) { registry.dispatch(import_preferences5.store).set(scope, "isComplementaryAreaVisible", true); } dispatch7({ type: "ENABLE_COMPLEMENTARY_AREA", scope, area }); }; var disableComplementaryArea = (scope) => ({ registry }) => { scope = normalizeComplementaryAreaScope(scope); const isComplementaryAreaVisible = registry.select(import_preferences5.store).get(scope, "isComplementaryAreaVisible"); if (isComplementaryAreaVisible) { registry.dispatch(import_preferences5.store).set(scope, "isComplementaryAreaVisible", false); } }; var pinItem = (scope, item) => ({ registry }) => { if (!item) { return; } scope = normalizeComplementaryAreaScope(scope); item = normalizeComplementaryAreaName(scope, item); const pinnedItems = registry.select(import_preferences5.store).get(scope, "pinnedItems"); if (pinnedItems?.[item] === true) { return; } registry.dispatch(import_preferences5.store).set(scope, "pinnedItems", { ...pinnedItems, [item]: true }); }; var unpinItem = (scope, item) => ({ registry }) => { if (!item) { return; } scope = normalizeComplementaryAreaScope(scope); item = normalizeComplementaryAreaName(scope, item); const pinnedItems = registry.select(import_preferences5.store).get(scope, "pinnedItems"); registry.dispatch(import_preferences5.store).set(scope, "pinnedItems", { ...pinnedItems, [item]: false }); }; function toggleFeature(scope, featureName) { return function({ registry }) { (0, import_deprecated5.default)(`dispatch( 'core/interface' ).toggleFeature`, { since: "6.0", alternative: `dispatch( 'core/preferences' ).toggle` }); registry.dispatch(import_preferences5.store).toggle(scope, featureName); }; } function setFeatureValue(scope, featureName, value) { return function({ registry }) { (0, import_deprecated5.default)(`dispatch( 'core/interface' ).setFeatureValue`, { since: "6.0", alternative: `dispatch( 'core/preferences' ).set` }); registry.dispatch(import_preferences5.store).set(scope, featureName, !!value); }; } function setFeatureDefaults(scope, defaults2) { return function({ registry }) { (0, import_deprecated5.default)(`dispatch( 'core/interface' ).setFeatureDefaults`, { since: "6.0", alternative: `dispatch( 'core/preferences' ).setDefaults` }); registry.dispatch(import_preferences5.store).setDefaults(scope, defaults2); }; } function openModal(name2) { return { type: "OPEN_MODAL", name: name2 }; } function closeModal() { return { type: "CLOSE_MODAL" }; } // packages/interface/build-module/store/selectors.mjs var selectors_exports2 = {}; __export(selectors_exports2, { getActiveComplementaryArea: () => getActiveComplementaryArea, isComplementaryAreaLoading: () => isComplementaryAreaLoading, isFeatureActive: () => isFeatureActive, isItemPinned: () => isItemPinned, isModalActive: () => isModalActive }); var import_data37 = __toESM(require_data(), 1); var import_deprecated7 = __toESM(require_deprecated(), 1); var import_preferences6 = __toESM(require_preferences(), 1); var getActiveComplementaryArea = (0, import_data37.createRegistrySelector)( (select6) => (state, scope) => { scope = normalizeComplementaryAreaScope(scope); const isComplementaryAreaVisible = select6(import_preferences6.store).get( scope, "isComplementaryAreaVisible" ); if (isComplementaryAreaVisible === void 0) { return void 0; } if (isComplementaryAreaVisible === false) { return null; } return state?.complementaryAreas?.[scope]; } ); var isComplementaryAreaLoading = (0, import_data37.createRegistrySelector)( (select6) => (state, scope) => { scope = normalizeComplementaryAreaScope(scope); const isVisible = select6(import_preferences6.store).get( scope, "isComplementaryAreaVisible" ); const identifier = state?.complementaryAreas?.[scope]; return isVisible && identifier === void 0; } ); var isItemPinned = (0, import_data37.createRegistrySelector)( (select6) => (state, scope, item) => { scope = normalizeComplementaryAreaScope(scope); item = normalizeComplementaryAreaName(scope, item); const pinnedItems = select6(import_preferences6.store).get( scope, "pinnedItems" ); return pinnedItems?.[item] ?? true; } ); var isFeatureActive = (0, import_data37.createRegistrySelector)( (select6) => (state, scope, featureName) => { (0, import_deprecated7.default)( `select( 'core/interface' ).isFeatureActive( scope, featureName )`, { since: "6.0", alternative: `select( 'core/preferences' ).get( scope, featureName )` } ); return !!select6(import_preferences6.store).get(scope, featureName); } ); function isModalActive(state, modalName3) { return state.activeModal === modalName3; } // packages/interface/build-module/store/reducer.mjs var import_data38 = __toESM(require_data(), 1); function complementaryAreas(state = {}, action) { switch (action.type) { case "SET_DEFAULT_COMPLEMENTARY_AREA": { const { scope, area } = action; if (state[scope]) { return state; } return { ...state, [scope]: area }; } case "ENABLE_COMPLEMENTARY_AREA": { const { scope, area } = action; return { ...state, [scope]: area }; } } return state; } function activeModal(state = null, action) { switch (action.type) { case "OPEN_MODAL": return action.name; case "CLOSE_MODAL": return null; } return state; } var reducer_default3 = (0, import_data38.combineReducers)({ complementaryAreas, activeModal }); // packages/interface/build-module/store/constants.mjs var STORE_NAME2 = "core/interface"; // packages/interface/build-module/store/index.mjs var store2 = (0, import_data39.createReduxStore)(STORE_NAME2, { reducer: reducer_default3, actions: actions_exports2, selectors: selectors_exports2 }); (0, import_data39.register)(store2); // packages/interface/build-module/components/complementary-area-toggle/index.mjs var import_jsx_runtime111 = __toESM(require_jsx_runtime(), 1); function roleSupportsCheckedState(role) { return [ "checkbox", "option", "radio", "switch", "menuitemcheckbox", "menuitemradio", "treeitem" ].includes(role); } function ComplementaryAreaToggle({ as = import_components26.Button, scope, identifier: identifierProp, icon: iconProp, selectedIcon, name: name2, shortcut, ...props }) { const ComponentToUse = as; const context = (0, import_plugins.usePluginContext)(); const icon = iconProp || context.icon; const identifier = identifierProp || `${context.name}/${name2}`; const isSelected = (0, import_data40.useSelect)( (select6) => select6(store2).getActiveComplementaryArea(scope) === identifier, [identifier, scope] ); const { enableComplementaryArea: enableComplementaryArea2, disableComplementaryArea: disableComplementaryArea2 } = (0, import_data40.useDispatch)(store2); return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)( ComponentToUse, { icon: selectedIcon && isSelected ? selectedIcon : icon, "aria-controls": identifier.replace("/", ":"), "aria-checked": roleSupportsCheckedState(props.role) ? isSelected : void 0, onClick: () => { if (isSelected) { disableComplementaryArea2(scope); } else { enableComplementaryArea2(scope, identifier); } }, shortcut, ...props } ); } // packages/interface/build-module/components/complementary-area-header/index.mjs var import_jsx_runtime112 = __toESM(require_jsx_runtime(), 1); var ComplementaryAreaHeader = ({ children, className, toggleButtonProps }) => { const toggleButton = /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(ComplementaryAreaToggle, { icon: close_small_default, ...toggleButtonProps }); return /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)( "div", { className: clsx_default( "components-panel__header", "interface-complementary-area-header", className ), tabIndex: -1, children: [ children, toggleButton ] } ); }; var complementary_area_header_default = ComplementaryAreaHeader; // packages/interface/build-module/components/complementary-area-more-menu-item/index.mjs var import_components28 = __toESM(require_components(), 1); // packages/interface/build-module/components/action-item/index.mjs var import_components27 = __toESM(require_components(), 1); var import_element33 = __toESM(require_element(), 1); var import_jsx_runtime113 = __toESM(require_jsx_runtime(), 1); var noop3 = () => { }; function ActionItemSlot({ name: name2, as: Component6 = import_components27.MenuGroup, fillProps = {}, bubblesVirtually, ...props }) { return /* @__PURE__ */ (0, import_jsx_runtime113.jsx)( import_components27.Slot, { name: name2, bubblesVirtually, fillProps, children: (fills) => { if (!import_element33.Children.toArray(fills).length) { return null; } const initializedByPlugins = []; import_element33.Children.forEach( fills, ({ props: { __unstableExplicitMenuItem, __unstableTarget } }) => { if (__unstableTarget && __unstableExplicitMenuItem) { initializedByPlugins.push(__unstableTarget); } } ); const children = import_element33.Children.map(fills, (child) => { if (!child.props.__unstableExplicitMenuItem && initializedByPlugins.includes( child.props.__unstableTarget )) { return null; } return child; }); return /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(Component6, { ...props, children }); } } ); } function ActionItem({ name: name2, as: Component6 = import_components27.Button, onClick, ...props }) { return /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(import_components27.Fill, { name: name2, children: ({ onClick: fpOnClick }) => { return /* @__PURE__ */ (0, import_jsx_runtime113.jsx)( Component6, { onClick: onClick || fpOnClick ? (...args) => { (onClick || noop3)(...args); (fpOnClick || noop3)(...args); } : void 0, ...props } ); } }); } ActionItem.Slot = ActionItemSlot; var action_item_default = ActionItem; // packages/interface/build-module/components/complementary-area-more-menu-item/index.mjs var import_jsx_runtime114 = __toESM(require_jsx_runtime(), 1); var PluginsMenuItem = ({ // Menu item is marked with unstable prop for backward compatibility. // They are removed so they don't leak to DOM elements. // @see https://github.com/WordPress/gutenberg/issues/14457 __unstableExplicitMenuItem, __unstableTarget, ...restProps }) => /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(import_components28.MenuItem, { ...restProps }); function ComplementaryAreaMoreMenuItem({ scope, target, __unstableExplicitMenuItem, ...props }) { return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)( ComplementaryAreaToggle, { as: (toggleProps) => { return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)( action_item_default, { __unstableExplicitMenuItem, __unstableTarget: `${scope}/${target}`, as: PluginsMenuItem, name: `${scope}/plugin-more-menu`, ...toggleProps } ); }, role: "menuitemcheckbox", selectedIcon: check_default, name: target, scope, ...props } ); } // packages/interface/build-module/components/pinned-items/index.mjs var import_components29 = __toESM(require_components(), 1); var import_jsx_runtime115 = __toESM(require_jsx_runtime(), 1); function PinnedItems({ scope, ...props }) { return /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_components29.Fill, { name: `PinnedItems/${scope}`, ...props }); } function PinnedItemsSlot({ scope, className, ...props }) { return /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(import_components29.Slot, { name: `PinnedItems/${scope}`, ...props, children: (fills) => fills?.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime115.jsx)( "div", { className: clsx_default( className, "interface-pinned-items" ), children: fills } ) }); } PinnedItems.Slot = PinnedItemsSlot; var pinned_items_default = PinnedItems; // packages/interface/build-module/components/complementary-area/index.mjs var import_jsx_runtime116 = __toESM(require_jsx_runtime(), 1); var ANIMATION_DURATION = 0.3; function ComplementaryAreaSlot({ scope, ...props }) { return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_components30.Slot, { name: `ComplementaryArea/${scope}`, ...props }); } var SIDEBAR_WIDTH = 280; var variants = { open: { width: SIDEBAR_WIDTH }, closed: { width: 0 }, mobileOpen: { width: "100vw" } }; function ComplementaryAreaFill({ activeArea, isActive, scope, children, className, id }) { const disableMotion = (0, import_compose7.useReducedMotion)(); const isMobileViewport = (0, import_compose7.useViewportMatch)("medium", "<"); const previousActiveArea = (0, import_compose7.usePrevious)(activeArea); const previousIsActive = (0, import_compose7.usePrevious)(isActive); const [, setState] = (0, import_element34.useState)({}); (0, import_element34.useEffect)(() => { setState({}); }, [isActive]); const transition = { type: "tween", duration: disableMotion || isMobileViewport || !!previousActiveArea && !!activeArea && activeArea !== previousActiveArea ? 0 : ANIMATION_DURATION, ease: [0.6, 0, 0.4, 1] }; return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_components30.Fill, { name: `ComplementaryArea/${scope}`, children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_components30.__unstableAnimatePresence, { initial: false, children: (previousIsActive || isActive) && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)( import_components30.__unstableMotion.div, { variants, initial: "closed", animate: isMobileViewport ? "mobileOpen" : "open", exit: "closed", transition, className: "interface-complementary-area__fill", children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)( "div", { id, className, style: { width: isMobileViewport ? "100vw" : SIDEBAR_WIDTH }, children } ) } ) }) }); } function useAdjustComplementaryListener(scope, identifier, activeArea, isActive, isSmall) { const previousIsSmallRef = (0, import_element34.useRef)(false); const shouldOpenWhenNotSmallRef = (0, import_element34.useRef)(false); const { enableComplementaryArea: enableComplementaryArea2, disableComplementaryArea: disableComplementaryArea2 } = (0, import_data41.useDispatch)(store2); (0, import_element34.useEffect)(() => { if (isActive && isSmall && !previousIsSmallRef.current) { disableComplementaryArea2(scope); shouldOpenWhenNotSmallRef.current = true; } else if ( // If there is a flag indicating the complementary area should be // enabled when we go from small to big window size and we are going // from a small to big window size. shouldOpenWhenNotSmallRef.current && !isSmall && previousIsSmallRef.current ) { shouldOpenWhenNotSmallRef.current = false; enableComplementaryArea2(scope, identifier); } else if ( // If the flag is indicating the current complementary should be // reopened but another complementary area becomes active, remove // the flag. shouldOpenWhenNotSmallRef.current && activeArea && activeArea !== identifier ) { shouldOpenWhenNotSmallRef.current = false; } if (isSmall !== previousIsSmallRef.current) { previousIsSmallRef.current = isSmall; } }, [ isActive, isSmall, scope, identifier, activeArea, disableComplementaryArea2, enableComplementaryArea2 ]); } function ComplementaryArea({ children, className, closeLabel = (0, import_i18n64.__)("Close plugin"), identifier: identifierProp, header, headerClassName, icon: iconProp, isPinnable = true, panelClassName, scope, name: name2, title, toggleShortcut, isActiveByDefault }) { const context = (0, import_plugins2.usePluginContext)(); const icon = iconProp || context.icon; const identifier = identifierProp || `${context.name}/${name2}`; const [isReady2, setIsReady2] = (0, import_element34.useState)(false); const { isLoading, isActive, isPinned, activeArea, isSmall, isLarge, showIconLabels } = (0, import_data41.useSelect)( (select6) => { const { getActiveComplementaryArea: getActiveComplementaryArea2, isComplementaryAreaLoading: isComplementaryAreaLoading2, isItemPinned: isItemPinned2 } = select6(store2); const { get } = select6(import_preferences7.store); const _activeArea = getActiveComplementaryArea2(scope); return { isLoading: isComplementaryAreaLoading2(scope), isActive: _activeArea === identifier, isPinned: isItemPinned2(scope, identifier), activeArea: _activeArea, isSmall: select6(import_viewport.store).isViewportMatch("< medium"), isLarge: select6(import_viewport.store).isViewportMatch("large"), showIconLabels: get("core", "showIconLabels") }; }, [identifier, scope] ); const isMobileViewport = (0, import_compose7.useViewportMatch)("medium", "<"); useAdjustComplementaryListener( scope, identifier, activeArea, isActive, isSmall ); const { enableComplementaryArea: enableComplementaryArea2, disableComplementaryArea: disableComplementaryArea2, pinItem: pinItem2, unpinItem: unpinItem2 } = (0, import_data41.useDispatch)(store2); (0, import_element34.useEffect)(() => { if (isActiveByDefault && activeArea === void 0 && !isSmall) { enableComplementaryArea2(scope, identifier); } else if (activeArea === void 0 && isSmall) { disableComplementaryArea2(scope, identifier); } setIsReady2(true); }, [ activeArea, isActiveByDefault, scope, identifier, isSmall, enableComplementaryArea2, disableComplementaryArea2 ]); if (!isReady2) { return; } return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(import_jsx_runtime116.Fragment, { children: [ isPinnable && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(pinned_items_default, { scope, children: isPinned && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)( ComplementaryAreaToggle, { scope, identifier, isPressed: isActive && (!showIconLabels || isLarge), "aria-expanded": isActive, "aria-disabled": isLoading, label: title, icon: showIconLabels ? check_default : icon, showTooltip: !showIconLabels, variant: showIconLabels ? "tertiary" : void 0, size: "compact", shortcut: toggleShortcut } ) }), name2 && isPinnable && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)( ComplementaryAreaMoreMenuItem, { target: name2, scope, icon, identifier, children: title } ), /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)( ComplementaryAreaFill, { activeArea, isActive, className: clsx_default("interface-complementary-area", className), scope, id: identifier.replace("/", ":"), children: [ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)( complementary_area_header_default, { className: headerClassName, closeLabel, onClose: () => disableComplementaryArea2(scope), toggleButtonProps: { label: closeLabel, size: "compact", shortcut: toggleShortcut, scope, identifier }, children: header || /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(import_jsx_runtime116.Fragment, { children: [ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("h2", { className: "interface-complementary-area-header__title", children: title }), isPinnable && !isMobileViewport && /* @__PURE__ */ (0, import_jsx_runtime116.jsx)( import_components30.Button, { className: "interface-complementary-area__pin-unpin-item", icon: isPinned ? star_filled_default : star_empty_default, label: isPinned ? (0, import_i18n64.__)("Unpin from toolbar") : (0, import_i18n64.__)("Pin to toolbar"), onClick: () => (isPinned ? unpinItem2 : pinItem2)( scope, identifier ), isPressed: isPinned, "aria-expanded": isPinned, size: "compact" } ) ] }) } ), /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_components30.Panel, { className: panelClassName, children }) ] } ) ] }); } ComplementaryArea.Slot = ComplementaryAreaSlot; var complementary_area_default = ComplementaryArea; // packages/interface/build-module/components/fullscreen-mode/index.mjs var import_element35 = __toESM(require_element(), 1); var FullscreenMode = ({ isActive }) => { (0, import_element35.useEffect)(() => { let isSticky = false; if (document.body.classList.contains("sticky-menu")) { isSticky = true; document.body.classList.remove("sticky-menu"); } return () => { if (isSticky) { document.body.classList.add("sticky-menu"); } }; }, []); (0, import_element35.useEffect)(() => { if (isActive) { document.body.classList.add("is-fullscreen-mode"); } else { document.body.classList.remove("is-fullscreen-mode"); } return () => { if (isActive) { document.body.classList.remove("is-fullscreen-mode"); } }; }, [isActive]); return null; }; var fullscreen_mode_default = FullscreenMode; // packages/admin-ui/build-module/navigable-region/index.mjs var import_element36 = __toESM(require_element(), 1); var import_jsx_runtime117 = __toESM(require_jsx_runtime(), 1); var NavigableRegion = (0, import_element36.forwardRef)( ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => { return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)( Tag, { ref, className: clsx_default("admin-ui-navigable-region", className), "aria-label": ariaLabel, role: "region", tabIndex: "-1", ...props, children } ); } ); NavigableRegion.displayName = "NavigableRegion"; var navigable_region_default = NavigableRegion; // node_modules/@base-ui/utils/esm/useRefWithInit.js var React3 = __toESM(require_react(), 1); var UNINITIALIZED = {}; function useRefWithInit(init, initArg) { const ref = React3.useRef(UNINITIALIZED); if (ref.current === UNINITIALIZED) { ref.current = init(initArg); } return ref; } // node_modules/@base-ui/react/esm/utils/useRenderElement.js var React6 = __toESM(require_react(), 1); // node_modules/@base-ui/utils/esm/useMergedRefs.js function useMergedRefs(a3, b3, c6, d3) { const forkRef = useRefWithInit(createForkRef).current; if (didChange(forkRef, a3, b3, c6, d3)) { update3(forkRef, [a3, b3, c6, d3]); } return forkRef.callback; } function useMergedRefsN(refs) { const forkRef = useRefWithInit(createForkRef).current; if (didChangeN(forkRef, refs)) { update3(forkRef, refs); } return forkRef.callback; } function createForkRef() { return { callback: null, cleanup: null, refs: [] }; } function didChange(forkRef, a3, b3, c6, d3) { return forkRef.refs[0] !== a3 || forkRef.refs[1] !== b3 || forkRef.refs[2] !== c6 || forkRef.refs[3] !== d3; } function didChangeN(forkRef, newRefs) { return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index2) => ref !== newRefs[index2]); } function update3(forkRef, refs) { forkRef.refs = refs; if (refs.every((ref) => ref == null)) { forkRef.callback = null; return; } forkRef.callback = (instance) => { if (forkRef.cleanup) { forkRef.cleanup(); forkRef.cleanup = null; } if (instance != null) { const cleanupCallbacks = Array(refs.length).fill(null); for (let i3 = 0; i3 < refs.length; i3 += 1) { const ref = refs[i3]; if (ref == null) { continue; } switch (typeof ref) { case "function": { const refCleanup = ref(instance); if (typeof refCleanup === "function") { cleanupCallbacks[i3] = refCleanup; } break; } case "object": { ref.current = instance; break; } default: } } forkRef.cleanup = () => { for (let i3 = 0; i3 < refs.length; i3 += 1) { const ref = refs[i3]; if (ref == null) { continue; } switch (typeof ref) { case "function": { const cleanupCallback = cleanupCallbacks[i3]; if (typeof cleanupCallback === "function") { cleanupCallback(); } else { ref(null); } break; } case "object": { ref.current = null; break; } default: } } }; } }; } // node_modules/@base-ui/utils/esm/getReactElementRef.js var React5 = __toESM(require_react(), 1); // node_modules/@base-ui/utils/esm/reactVersion.js var React4 = __toESM(require_react(), 1); var majorVersion = parseInt(React4.version, 10); function isReactVersionAtLeast(reactVersionToCheck) { return majorVersion >= reactVersionToCheck; } // node_modules/@base-ui/utils/esm/getReactElementRef.js function getReactElementRef(element) { if (!/* @__PURE__ */ React5.isValidElement(element)) { return null; } const reactElement = element; const propsWithRef = reactElement.props; return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null; } // node_modules/@base-ui/utils/esm/mergeObjects.js function mergeObjects(a3, b3) { if (a3 && !b3) { return a3; } if (!a3 && b3) { return b3; } if (a3 || b3) { return { ...a3, ...b3 }; } return void 0; } // node_modules/@base-ui/react/esm/utils/getStateAttributesProps.js function getStateAttributesProps(state, customMapping) { const props = {}; for (const key in state) { const value = state[key]; if (customMapping?.hasOwnProperty(key)) { const customProps = customMapping[key](value); if (customProps != null) { Object.assign(props, customProps); } continue; } if (value === true) { props[`data-${key.toLowerCase()}`] = ""; } else if (value) { props[`data-${key.toLowerCase()}`] = value.toString(); } } return props; } // node_modules/@base-ui/react/esm/utils/resolveClassName.js function resolveClassName(className, state) { return typeof className === "function" ? className(state) : className; } // node_modules/@base-ui/react/esm/utils/resolveStyle.js function resolveStyle(style, state) { return typeof style === "function" ? style(state) : style; } // node_modules/@base-ui/react/esm/merge-props/mergeProps.js var EMPTY_PROPS = {}; function mergeProps(a3, b3, c6, d3, e3) { let merged = { ...resolvePropsGetter(a3, EMPTY_PROPS) }; if (b3) { merged = mergeOne(merged, b3); } if (c6) { merged = mergeOne(merged, c6); } if (d3) { merged = mergeOne(merged, d3); } if (e3) { merged = mergeOne(merged, e3); } return merged; } function mergePropsN(props) { if (props.length === 0) { return EMPTY_PROPS; } if (props.length === 1) { return resolvePropsGetter(props[0], EMPTY_PROPS); } let merged = { ...resolvePropsGetter(props[0], EMPTY_PROPS) }; for (let i3 = 1; i3 < props.length; i3 += 1) { merged = mergeOne(merged, props[i3]); } return merged; } function mergeOne(merged, inputProps) { if (isPropsGetter(inputProps)) { return inputProps(merged); } return mutablyMergeInto(merged, inputProps); } function mutablyMergeInto(mergedProps, externalProps) { if (!externalProps) { return mergedProps; } for (const propName in externalProps) { const externalPropValue = externalProps[propName]; switch (propName) { case "style": { mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue); break; } case "className": { mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue); break; } default: { if (isEventHandler(propName, externalPropValue)) { mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue); } else { mergedProps[propName] = externalPropValue; } } } } return mergedProps; } function isEventHandler(key, value) { const code0 = key.charCodeAt(0); const code1 = key.charCodeAt(1); const code2 = key.charCodeAt(2); return code0 === 111 && code1 === 110 && code2 >= 65 && code2 <= 90 && (typeof value === "function" || typeof value === "undefined"); } function isPropsGetter(inputProps) { return typeof inputProps === "function"; } function resolvePropsGetter(inputProps, previousProps) { if (isPropsGetter(inputProps)) { return inputProps(previousProps); } return inputProps ?? EMPTY_PROPS; } function mergeEventHandlers(ourHandler, theirHandler) { if (!theirHandler) { return ourHandler; } if (!ourHandler) { return theirHandler; } return (event) => { if (isSyntheticEvent(event)) { const baseUIEvent = event; makeEventPreventable(baseUIEvent); const result2 = theirHandler(baseUIEvent); if (!baseUIEvent.baseUIHandlerPrevented) { ourHandler?.(baseUIEvent); } return result2; } const result = theirHandler(event); ourHandler?.(event); return result; }; } function makeEventPreventable(event) { event.preventBaseUIHandler = () => { event.baseUIHandlerPrevented = true; }; return event; } function mergeClassNames(ourClassName, theirClassName) { if (theirClassName) { if (ourClassName) { return theirClassName + " " + ourClassName; } return theirClassName; } return ourClassName; } function isSyntheticEvent(event) { return event != null && typeof event === "object" && "nativeEvent" in event; } // node_modules/@base-ui/utils/esm/empty.js var EMPTY_ARRAY4 = Object.freeze([]); var EMPTY_OBJECT4 = Object.freeze({}); // node_modules/@base-ui/react/esm/utils/useRenderElement.js var import_react4 = __toESM(require_react(), 1); function useRenderElement(element, componentProps, params = {}) { const renderProp = componentProps.render; const outProps = useRenderElementProps(componentProps, params); if (params.enabled === false) { return null; } const state = params.state ?? EMPTY_OBJECT4; return evaluateRenderProp(element, renderProp, outProps, state); } function useRenderElementProps(componentProps, params = {}) { const { className: classNameProp, style: styleProp, render: renderProp } = componentProps; const { state = EMPTY_OBJECT4, ref, props, stateAttributesMapping, enabled = true } = params; const className = enabled ? resolveClassName(classNameProp, state) : void 0; const style = enabled ? resolveStyle(styleProp, state) : void 0; const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping) : EMPTY_OBJECT4; const outProps = enabled ? mergeObjects(stateProps, Array.isArray(props) ? mergePropsN(props) : props) ?? EMPTY_OBJECT4 : EMPTY_OBJECT4; if (typeof document !== "undefined") { if (!enabled) { useMergedRefs(null, null); } else if (Array.isArray(ref)) { outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]); } else { outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref); } } if (!enabled) { return EMPTY_OBJECT4; } if (className !== void 0) { outProps.className = mergeClassNames(outProps.className, className); } if (style !== void 0) { outProps.style = mergeObjects(outProps.style, style); } return outProps; } function evaluateRenderProp(element, render4, props, state) { if (render4) { if (typeof render4 === "function") { return render4(props, state); } const mergedProps = mergeProps(props, render4.props); mergedProps.ref = props.ref; return /* @__PURE__ */ React6.cloneElement(render4, mergedProps); } if (element) { if (typeof element === "string") { return renderTag(element, props); } } throw new Error(true ? "Base UI: Render element or function are not defined." : formatErrorMessage(8)); } function renderTag(Tag, props) { if (Tag === "button") { return /* @__PURE__ */ (0, import_react4.createElement)("button", { type: "button", ...props, key: props.key }); } if (Tag === "img") { return /* @__PURE__ */ (0, import_react4.createElement)("img", { alt: "", ...props, key: props.key }); } return /* @__PURE__ */ React6.createElement(Tag, props); } // node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs function hasWindow() { return typeof window !== "undefined"; } function getNodeName(node) { if (isNode(node)) { return (node.nodeName || "").toLowerCase(); } return "#document"; } function getWindow(node) { var _node$ownerDocument; return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window; } function getDocumentElement(node) { var _ref; return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement; } function isNode(value) { if (!hasWindow()) { return false; } return value instanceof Node || value instanceof getWindow(value).Node; } function isElement(value) { if (!hasWindow()) { return false; } return value instanceof Element || value instanceof getWindow(value).Element; } function isHTMLElement(value) { if (!hasWindow()) { return false; } return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement; } function isShadowRoot(value) { if (!hasWindow() || typeof ShadowRoot === "undefined") { return false; } return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot; } var invalidOverflowDisplayValues = /* @__PURE__ */ new Set(["inline", "contents"]); function isOverflowElement(element) { const { overflow, overflowX, overflowY, display } = getComputedStyle2(element); return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display); } var tableElements = /* @__PURE__ */ new Set(["table", "td", "th"]); function isTableElement(element) { return tableElements.has(getNodeName(element)); } var topLayerSelectors = [":popover-open", ":modal"]; function isTopLayer(element) { return topLayerSelectors.some((selector) => { try { return element.matches(selector); } catch (_e) { return false; } }); } var transformProperties = ["transform", "translate", "scale", "rotate", "perspective"]; var willChangeValues = ["transform", "translate", "scale", "rotate", "perspective", "filter"]; var containValues = ["paint", "layout", "strict", "content"]; function isContainingBlock(elementOrCss) { const webkit = isWebKit(); const css = isElement(elementOrCss) ? getComputedStyle2(elementOrCss) : elementOrCss; return transformProperties.some((value) => css[value] ? css[value] !== "none" : false) || (css.containerType ? css.containerType !== "normal" : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== "none" : false) || !webkit && (css.filter ? css.filter !== "none" : false) || willChangeValues.some((value) => (css.willChange || "").includes(value)) || containValues.some((value) => (css.contain || "").includes(value)); } function getContainingBlock(element) { let currentNode = getParentNode(element); while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) { if (isContainingBlock(currentNode)) { return currentNode; } else if (isTopLayer(currentNode)) { return null; } currentNode = getParentNode(currentNode); } return null; } function isWebKit() { if (typeof CSS === "undefined" || !CSS.supports) return false; return CSS.supports("-webkit-backdrop-filter", "none"); } var lastTraversableNodeNames = /* @__PURE__ */ new Set(["html", "body", "#document"]); function isLastTraversableNode(node) { return lastTraversableNodeNames.has(getNodeName(node)); } function getComputedStyle2(element) { return getWindow(element).getComputedStyle(element); } function getNodeScroll(element) { if (isElement(element)) { return { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop }; } return { scrollLeft: element.scrollX, scrollTop: element.scrollY }; } function getParentNode(node) { if (getNodeName(node) === "html") { return node; } const result = ( // Step into the shadow DOM of the parent of a slotted node. node.assignedSlot || // DOM Element detected. node.parentNode || // ShadowRoot detected. isShadowRoot(node) && node.host || // Fallback. getDocumentElement(node) ); return isShadowRoot(result) ? result.host : result; } function getNearestOverflowAncestor(node) { const parentNode = getParentNode(node); if (isLastTraversableNode(parentNode)) { return node.ownerDocument ? node.ownerDocument.body : node.body; } if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) { return parentNode; } return getNearestOverflowAncestor(parentNode); } function getOverflowAncestors(node, list, traverseIframes) { var _node$ownerDocument2; if (list === void 0) { list = []; } if (traverseIframes === void 0) { traverseIframes = true; } const scrollableAncestor = getNearestOverflowAncestor(node); const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body); const win = getWindow(scrollableAncestor); if (isBody) { const frameElement = getFrameElement(win); return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []); } return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes)); } function getFrameElement(win) { return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null; } // node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs var min = Math.min; var max = Math.max; var round = Math.round; var floor = Math.floor; var createCoords = (v3) => ({ x: v3, y: v3 }); function evaluate(value, param) { return typeof value === "function" ? value(param) : value; } function getSide(placement) { return placement.split("-")[0]; } function getAlignment(placement) { return placement.split("-")[1]; } function getOppositeAxis(axis) { return axis === "x" ? "y" : "x"; } function getAxisLength(axis) { return axis === "y" ? "height" : "width"; } var yAxisSides = /* @__PURE__ */ new Set(["top", "bottom"]); function getSideAxis(placement) { return yAxisSides.has(getSide(placement)) ? "y" : "x"; } function getAlignmentAxis(placement) { return getOppositeAxis(getSideAxis(placement)); } function rectToClientRect(rect) { const { x: x2, y: y3, width, height } = rect; return { width, height, top: y3, left: x2, right: x2 + width, bottom: y3 + height, x: x2, y: y3 }; } // node_modules/@floating-ui/core/dist/floating-ui.core.mjs function computeCoordsFromPlacement(_ref, placement, rtl) { let { reference, floating } = _ref; const sideAxis = getSideAxis(placement); const alignmentAxis = getAlignmentAxis(placement); const alignLength = getAxisLength(alignmentAxis); const side = getSide(placement); const isVertical = sideAxis === "y"; const commonX = reference.x + reference.width / 2 - floating.width / 2; const commonY = reference.y + reference.height / 2 - floating.height / 2; const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2; let coords; switch (side) { case "top": coords = { x: commonX, y: reference.y - floating.height }; break; case "bottom": coords = { x: commonX, y: reference.y + reference.height }; break; case "right": coords = { x: reference.x + reference.width, y: commonY }; break; case "left": coords = { x: reference.x - floating.width, y: commonY }; break; default: coords = { x: reference.x, y: reference.y }; } switch (getAlignment(placement)) { case "start": coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1); break; case "end": coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1); break; } return coords; } var computePosition = async (reference, floating, config2) => { const { placement = "bottom", strategy = "absolute", middleware = [], platform: platform2 } = config2; const validMiddleware = middleware.filter(Boolean); const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(floating)); let rects = await platform2.getElementRects({ reference, floating, strategy }); let { x: x2, y: y3 } = computeCoordsFromPlacement(rects, placement, rtl); let statefulPlacement = placement; let middlewareData = {}; let resetCount = 0; for (let i3 = 0; i3 < validMiddleware.length; i3++) { const { name: name2, fn } = validMiddleware[i3]; const { x: nextX, y: nextY, data, reset } = await fn({ x: x2, y: y3, initialPlacement: placement, placement: statefulPlacement, strategy, middlewareData, rects, platform: platform2, elements: { reference, floating } }); x2 = nextX != null ? nextX : x2; y3 = nextY != null ? nextY : y3; middlewareData = { ...middlewareData, [name2]: { ...middlewareData[name2], ...data } }; if (reset && resetCount <= 50) { resetCount++; if (typeof reset === "object") { if (reset.placement) { statefulPlacement = reset.placement; } if (reset.rects) { rects = reset.rects === true ? await platform2.getElementRects({ reference, floating, strategy }) : reset.rects; } ({ x: x2, y: y3 } = computeCoordsFromPlacement(rects, statefulPlacement, rtl)); } i3 = -1; } } return { x: x2, y: y3, placement: statefulPlacement, strategy, middlewareData }; }; var originSides = /* @__PURE__ */ new Set(["left", "top"]); async function convertValueToCoords(state, options) { const { placement, platform: platform2, elements: elements2 } = state; const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(elements2.floating)); const side = getSide(placement); const alignment = getAlignment(placement); const isVertical = getSideAxis(placement) === "y"; const mainAxisMulti = originSides.has(side) ? -1 : 1; const crossAxisMulti = rtl && isVertical ? -1 : 1; const rawValue = evaluate(options, state); let { mainAxis, crossAxis, alignmentAxis } = typeof rawValue === "number" ? { mainAxis: rawValue, crossAxis: 0, alignmentAxis: null } : { mainAxis: rawValue.mainAxis || 0, crossAxis: rawValue.crossAxis || 0, alignmentAxis: rawValue.alignmentAxis }; if (alignment && typeof alignmentAxis === "number") { crossAxis = alignment === "end" ? alignmentAxis * -1 : alignmentAxis; } return isVertical ? { x: crossAxis * crossAxisMulti, y: mainAxis * mainAxisMulti } : { x: mainAxis * mainAxisMulti, y: crossAxis * crossAxisMulti }; } var offset = function(options) { if (options === void 0) { options = 0; } return { name: "offset", options, async fn(state) { var _middlewareData$offse, _middlewareData$arrow; const { x: x2, y: y3, placement, middlewareData } = state; const diffCoords = await convertValueToCoords(state, options); if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) { return {}; } return { x: x2 + diffCoords.x, y: y3 + diffCoords.y, data: { ...diffCoords, placement } }; } }; }; // node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs function getCssDimensions(element) { const css = getComputedStyle2(element); let width = parseFloat(css.width) || 0; let height = parseFloat(css.height) || 0; const hasOffset = isHTMLElement(element); const offsetWidth = hasOffset ? element.offsetWidth : width; const offsetHeight = hasOffset ? element.offsetHeight : height; const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight; if (shouldFallback) { width = offsetWidth; height = offsetHeight; } return { width, height, $: shouldFallback }; } function unwrapElement(element) { return !isElement(element) ? element.contextElement : element; } function getScale(element) { const domElement = unwrapElement(element); if (!isHTMLElement(domElement)) { return createCoords(1); } const rect = domElement.getBoundingClientRect(); const { width, height, $: $2 } = getCssDimensions(domElement); let x2 = ($2 ? round(rect.width) : rect.width) / width; let y3 = ($2 ? round(rect.height) : rect.height) / height; if (!x2 || !Number.isFinite(x2)) { x2 = 1; } if (!y3 || !Number.isFinite(y3)) { y3 = 1; } return { x: x2, y: y3 }; } var noOffsets = /* @__PURE__ */ createCoords(0); function getVisualOffsets(element) { const win = getWindow(element); if (!isWebKit() || !win.visualViewport) { return noOffsets; } return { x: win.visualViewport.offsetLeft, y: win.visualViewport.offsetTop }; } function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) { if (isFixed === void 0) { isFixed = false; } if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) { return false; } return isFixed; } function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) { if (includeScale === void 0) { includeScale = false; } if (isFixedStrategy === void 0) { isFixedStrategy = false; } const clientRect = element.getBoundingClientRect(); const domElement = unwrapElement(element); let scale = createCoords(1); if (includeScale) { if (offsetParent) { if (isElement(offsetParent)) { scale = getScale(offsetParent); } } else { scale = getScale(element); } } const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0); let x2 = (clientRect.left + visualOffsets.x) / scale.x; let y3 = (clientRect.top + visualOffsets.y) / scale.y; let width = clientRect.width / scale.x; let height = clientRect.height / scale.y; if (domElement) { const win = getWindow(domElement); const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent; let currentWin = win; let currentIFrame = getFrameElement(currentWin); while (currentIFrame && offsetParent && offsetWin !== currentWin) { const iframeScale = getScale(currentIFrame); const iframeRect = currentIFrame.getBoundingClientRect(); const css = getComputedStyle2(currentIFrame); const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x; const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y; x2 *= iframeScale.x; y3 *= iframeScale.y; width *= iframeScale.x; height *= iframeScale.y; x2 += left; y3 += top; currentWin = getWindow(currentIFrame); currentIFrame = getFrameElement(currentWin); } } return rectToClientRect({ width, height, x: x2, y: y3 }); } function getWindowScrollBarX(element, rect) { const leftScroll = getNodeScroll(element).scrollLeft; if (!rect) { return getBoundingClientRect(getDocumentElement(element)).left + leftScroll; } return rect.left + leftScroll; } function getHTMLOffset(documentElement, scroll) { const htmlRect = documentElement.getBoundingClientRect(); const x2 = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect); const y3 = htmlRect.top + scroll.scrollTop; return { x: x2, y: y3 }; } function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) { let { elements: elements2, rect, offsetParent, strategy } = _ref; const isFixed = strategy === "fixed"; const documentElement = getDocumentElement(offsetParent); const topLayer = elements2 ? isTopLayer(elements2.floating) : false; if (offsetParent === documentElement || topLayer && isFixed) { return rect; } let scroll = { scrollLeft: 0, scrollTop: 0 }; let scale = createCoords(1); const offsets = createCoords(0); const isOffsetParentAnElement = isHTMLElement(offsetParent); if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { scroll = getNodeScroll(offsetParent); } if (isHTMLElement(offsetParent)) { const offsetRect = getBoundingClientRect(offsetParent); scale = getScale(offsetParent); offsets.x = offsetRect.x + offsetParent.clientLeft; offsets.y = offsetRect.y + offsetParent.clientTop; } } const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0); return { width: rect.width * scale.x, height: rect.height * scale.y, x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x, y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y }; } function getClientRects(element) { return Array.from(element.getClientRects()); } function getDocumentRect(element) { const html = getDocumentElement(element); const scroll = getNodeScroll(element); const body = element.ownerDocument.body; const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth); const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight); let x2 = -scroll.scrollLeft + getWindowScrollBarX(element); const y3 = -scroll.scrollTop; if (getComputedStyle2(body).direction === "rtl") { x2 += max(html.clientWidth, body.clientWidth) - width; } return { width, height, x: x2, y: y3 }; } var SCROLLBAR_MAX = 25; function getViewportRect(element, strategy) { const win = getWindow(element); const html = getDocumentElement(element); const visualViewport = win.visualViewport; let width = html.clientWidth; let height = html.clientHeight; let x2 = 0; let y3 = 0; if (visualViewport) { width = visualViewport.width; height = visualViewport.height; const visualViewportBased = isWebKit(); if (!visualViewportBased || visualViewportBased && strategy === "fixed") { x2 = visualViewport.offsetLeft; y3 = visualViewport.offsetTop; } } const windowScrollbarX = getWindowScrollBarX(html); if (windowScrollbarX <= 0) { const doc = html.ownerDocument; const body = doc.body; const bodyStyles = getComputedStyle(body); const bodyMarginInline = doc.compatMode === "CSS1Compat" ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0; const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline); if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) { width -= clippingStableScrollbarWidth; } } else if (windowScrollbarX <= SCROLLBAR_MAX) { width += windowScrollbarX; } return { width, height, x: x2, y: y3 }; } var absoluteOrFixed = /* @__PURE__ */ new Set(["absolute", "fixed"]); function getInnerBoundingClientRect(element, strategy) { const clientRect = getBoundingClientRect(element, true, strategy === "fixed"); const top = clientRect.top + element.clientTop; const left = clientRect.left + element.clientLeft; const scale = isHTMLElement(element) ? getScale(element) : createCoords(1); const width = element.clientWidth * scale.x; const height = element.clientHeight * scale.y; const x2 = left * scale.x; const y3 = top * scale.y; return { width, height, x: x2, y: y3 }; } function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) { let rect; if (clippingAncestor === "viewport") { rect = getViewportRect(element, strategy); } else if (clippingAncestor === "document") { rect = getDocumentRect(getDocumentElement(element)); } else if (isElement(clippingAncestor)) { rect = getInnerBoundingClientRect(clippingAncestor, strategy); } else { const visualOffsets = getVisualOffsets(element); rect = { x: clippingAncestor.x - visualOffsets.x, y: clippingAncestor.y - visualOffsets.y, width: clippingAncestor.width, height: clippingAncestor.height }; } return rectToClientRect(rect); } function hasFixedPositionAncestor(element, stopNode) { const parentNode = getParentNode(element); if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) { return false; } return getComputedStyle2(parentNode).position === "fixed" || hasFixedPositionAncestor(parentNode, stopNode); } function getClippingElementAncestors(element, cache) { const cachedResult = cache.get(element); if (cachedResult) { return cachedResult; } let result = getOverflowAncestors(element, [], false).filter((el) => isElement(el) && getNodeName(el) !== "body"); let currentContainingBlockComputedStyle = null; const elementIsFixed = getComputedStyle2(element).position === "fixed"; let currentNode = elementIsFixed ? getParentNode(element) : element; while (isElement(currentNode) && !isLastTraversableNode(currentNode)) { const computedStyle = getComputedStyle2(currentNode); const currentNodeIsContaining = isContainingBlock(currentNode); if (!currentNodeIsContaining && computedStyle.position === "fixed") { currentContainingBlockComputedStyle = null; } const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === "static" && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode); if (shouldDropCurrentNode) { result = result.filter((ancestor) => ancestor !== currentNode); } else { currentContainingBlockComputedStyle = computedStyle; } currentNode = getParentNode(currentNode); } cache.set(element, result); return result; } function getClippingRect(_ref) { let { element, boundary, rootBoundary, strategy } = _ref; const elementClippingAncestors = boundary === "clippingAncestors" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary); const clippingAncestors = [...elementClippingAncestors, rootBoundary]; const firstClippingAncestor = clippingAncestors[0]; const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => { const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy); accRect.top = max(rect.top, accRect.top); accRect.right = min(rect.right, accRect.right); accRect.bottom = min(rect.bottom, accRect.bottom); accRect.left = max(rect.left, accRect.left); return accRect; }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy)); return { width: clippingRect.right - clippingRect.left, height: clippingRect.bottom - clippingRect.top, x: clippingRect.left, y: clippingRect.top }; } function getDimensions(element) { const { width, height } = getCssDimensions(element); return { width, height }; } function getRectRelativeToOffsetParent(element, offsetParent, strategy) { const isOffsetParentAnElement = isHTMLElement(offsetParent); const documentElement = getDocumentElement(offsetParent); const isFixed = strategy === "fixed"; const rect = getBoundingClientRect(element, true, isFixed, offsetParent); let scroll = { scrollLeft: 0, scrollTop: 0 }; const offsets = createCoords(0); function setLeftRTLScrollbarOffset() { offsets.x = getWindowScrollBarX(documentElement); } if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) { scroll = getNodeScroll(offsetParent); } if (isOffsetParentAnElement) { const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent); offsets.x = offsetRect.x + offsetParent.clientLeft; offsets.y = offsetRect.y + offsetParent.clientTop; } else if (documentElement) { setLeftRTLScrollbarOffset(); } } if (isFixed && !isOffsetParentAnElement && documentElement) { setLeftRTLScrollbarOffset(); } const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0); const x2 = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x; const y3 = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y; return { x: x2, y: y3, width: rect.width, height: rect.height }; } function isStaticPositioned(element) { return getComputedStyle2(element).position === "static"; } function getTrueOffsetParent(element, polyfill) { if (!isHTMLElement(element) || getComputedStyle2(element).position === "fixed") { return null; } if (polyfill) { return polyfill(element); } let rawOffsetParent = element.offsetParent; if (getDocumentElement(element) === rawOffsetParent) { rawOffsetParent = rawOffsetParent.ownerDocument.body; } return rawOffsetParent; } function getOffsetParent(element, polyfill) { const win = getWindow(element); if (isTopLayer(element)) { return win; } if (!isHTMLElement(element)) { let svgOffsetParent = getParentNode(element); while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) { if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) { return svgOffsetParent; } svgOffsetParent = getParentNode(svgOffsetParent); } return win; } let offsetParent = getTrueOffsetParent(element, polyfill); while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) { offsetParent = getTrueOffsetParent(offsetParent, polyfill); } if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) { return win; } return offsetParent || getContainingBlock(element) || win; } var getElementRects = async function(data) { const getOffsetParentFn = this.getOffsetParent || getOffsetParent; const getDimensionsFn = this.getDimensions; const floatingDimensions = await getDimensionsFn(data.floating); return { reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy), floating: { x: 0, y: 0, width: floatingDimensions.width, height: floatingDimensions.height } }; }; function isRTL(element) { return getComputedStyle2(element).direction === "rtl"; } var platform = { convertOffsetParentRelativeRectToViewportRelativeRect, getDocumentElement, getClippingRect, getOffsetParent, getElementRects, getClientRects, getDimensions, getScale, isElement, isRTL }; function rectsAreEqual(a3, b3) { return a3.x === b3.x && a3.y === b3.y && a3.width === b3.width && a3.height === b3.height; } function observeMove(element, onMove) { let io = null; let timeoutId; const root = getDocumentElement(element); function cleanup() { var _io; clearTimeout(timeoutId); (_io = io) == null || _io.disconnect(); io = null; } function refresh(skip, threshold) { if (skip === void 0) { skip = false; } if (threshold === void 0) { threshold = 1; } cleanup(); const elementRectForRootMargin = element.getBoundingClientRect(); const { left, top, width, height } = elementRectForRootMargin; if (!skip) { onMove(); } if (!width || !height) { return; } const insetTop = floor(top); const insetRight = floor(root.clientWidth - (left + width)); const insetBottom = floor(root.clientHeight - (top + height)); const insetLeft = floor(left); const rootMargin = -insetTop + "px " + -insetRight + "px " + -insetBottom + "px " + -insetLeft + "px"; const options = { rootMargin, threshold: max(0, min(1, threshold)) || 1 }; let isFirstUpdate = true; function handleObserve(entries) { const ratio = entries[0].intersectionRatio; if (ratio !== threshold) { if (!isFirstUpdate) { return refresh(); } if (!ratio) { timeoutId = setTimeout(() => { refresh(false, 1e-7); }, 1e3); } else { refresh(false, ratio); } } if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) { refresh(); } isFirstUpdate = false; } try { io = new IntersectionObserver(handleObserve, { ...options, // Handle