@diplodoc/client 5.11.4 → 5.11.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,7 +7,7 @@
7
7
  ],
8
8
  "js": [
9
9
  "vendor-339cc1d47a631861.js",
10
- "search-e07642473eac94b3.js",
10
+ "search-821cf5de7183d70c.js",
11
11
  "react-27c1123f79611859.js"
12
12
  ],
13
13
  "css": [
@@ -0,0 +1,2 @@
1
+ (()=>{var e,t,r,n,o,i,a={66008(){var e,t;"u">typeof Element&&((t=(e=Element.prototype).matches||e.matchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector)?e.matches=e.matchesSelector=t:e.matches=e.matchesSelector=function(e){var t=this;return Array.prototype.some.call(document.querySelectorAll(e),function(e){return e===t})})},93635(e,t,r){"use strict";var n,o=r(71893),i=r(74848),a=r(5338),c=r(96540),u=r(18522),l=r(78184),s=r(81836),d=r(96747),f=(0,c.createContext)({pathname:"/",depth:0});f.displayName="RouterContext";var h=f.Provider;function p(){return(0,c.useContext)(f)}var v=(0,c.createContext)(l.JA.En);v.displayName="Lang";var m=v.Provider,g=r(41438),y=r(60478),b={theme:l.Sx.Light,textSize:l.ov.M,showMiniToc:!0,wideFormat:!0,fullScreen:!1},w=["ar","arc","ckb","dv","fa","ha","he","khw","ks","ps","sd","ur","uz_AF","yi"],_=((n={}).RTL="rtl",n.LTR="ltr",n);function S(){return"u">typeof document}function k(e){var t=e.theme;"u">typeof document&&document.querySelectorAll(".g-root").forEach(function(e){e.classList.toggle("g-root_theme_light","light"===t),e.classList.toggle("g-root_theme_dark","dark"===t)})}function C(e){if(S()){document.body.classList.add("g-root");var t=function(e,t){return document.body.classList.toggle(e,!!t)};Object.keys(e).forEach(function(r){switch(r){case"wideFormat":t("dc-root_wide-format",e[r]);break;case"focusSearch":t("dc-root_focused-search",e[r]);break;case"fullScreen":t("dc-root_full-screen",e[r]);break;case"landingPage":t("dc-root_document-page",!e[r]),t("dc-root_landing-page",e[r]);break;case"mobileView":t("mobile",e[r]),t("desktop",!e[r])}})}}function x(e){return w.includes(e)?_.RTL:_.LTR}(0,y._)(new Set((0,y._)(["href"]).concat((0,y._)(["src","url","href","icon","image","desktop","mobile","tablet","previewImg","image","avatar","logo","light","dark"]))));var j=function(e){return"boolean"==typeof e?e:!!e&&"true"===e};function E(){return!!S()&&document.body.clientWidth<769}function A(e){if(!S())return b[e];try{return sessionStorage.getItem(e)||b[e]}catch(t){return b[e]}}var T=r(50467),L=r(53014);function M(){var e,t,r,n,i,a=(e=A("theme"),t=A("textSize"),r=A("showMiniToc"),n=A("wideFormat"),i=A("fullScreen"),{theme:e,textSize:t,showMiniToc:j(r),wideFormat:j(n),fullScreen:j(i)}),u=O("theme",a),l=O("textSize",a),s=O("wideFormat",a),d=O("fullScreen",a),f=O("showMiniToc",a);return(0,c.useMemo)(function(){return(0,o._)({},u,l,s,f,d)},[u,l,s,f,d])}function O(e,t){var r=(0,L._)((0,c.useState)(t[e]),2),n=r[0],o=r[1],i=(0,c.useMemo)(function(){var t,r;return t=e,r=o,function(e){if(S())try{sessionStorage.setItem(t,String(e))}catch(e){}r(e)}},[e,o]);return(0,c.useMemo)(function(){var t;return t={},(0,T._)(t,e,n),(0,T._)(t,"onChange"+e.replace(/^./,function(e){return e.toUpperCase()}),i),t},[e,n,i])}function N(){var e=(0,L._)((0,c.useState)(E()),2),t=e[0],r=e[1],n=(0,c.useCallback)(function(){r(E())},[]);return(0,c.useEffect)(n,[n]),(0,c.useEffect)(function(){return window.addEventListener("resize",n),function(){return window.removeEventListener("resize",n)}},[n]),t}var P=r(51937),R=r(48697),q=r(23614),F=r(55456),z=r(6790),U=r(86639),W=r(84785),I=r(37321),B=r(77580);r(20553);var V=(0,c.createContext)(null);V.displayName="NeuroExpertContext";V.Provider;r(66008);var $=r(31105),H=r(56701),J=r(26141),D=r(720),K=(0,c.memo)(function(e){var t=e.mobileView,r=e.theme,n=e.onChangeTheme,o=e.textSize,a=e.onChangeTextSize,c=e.wideFormat,u=e.onChangeWideFormat,s=e.showMiniToc,d=e.onChangeShowMiniToc,f=e.lang,h=e.langs,p=e.onChangeLang,v=e.availableLangs;return(0,i.jsx)(J.n,{controlClassName:"Control",controlSize:l.Uv.L,isWideView:t,isMobileView:t,children:(0,i.jsx)(D.A,{className:"Controls",theme:r,onChangeTheme:n,wideFormat:c,onChangeWideFormat:u,showMiniToc:s,onChangeShowMiniToc:d,textSize:o,onChangeTextSize:a,lang:f,langs:h,onChangeLang:p,availableLangs:void 0===v?[]:v})})});K.displayName="HeaderControls";var G=(0,c.createContext)(null),Q=G.Provider,X=r(75280),Y=r(40258),Z=r(89911),ee=r(78564),et=r(36847),er=r(84941),en=r(41374),eo=r(30494),ei=r(99407),ea=r(53750),ec=r(51735);function eu(e){try{return decodeURIComponent(e.replaceAll("+"," "))}catch(t){return e.replaceAll("+"," ")}}function el(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],n=[];return e&&n.push("query=".concat(encodeURIComponent(e))),r.length&&n.push("tags=".concat(r.map(encodeURIComponent).join(","))),t>1&&n.push("page=".concat(t)),n.join("&")}var es=function(){function e(t){var n=this,i=this;(0,eo._)(this,e),(0,T._)(this,"worker",void 0),(0,T._)(this,"config",void 0),(0,T._)(this,"init",function(){var e;e=(0,F._)((0,o._)({},n.config),{base:n.base,mark:"Suggest__Item__Marker"}),n.worker=(0,en._)(function(){var t;return(0,ec._)(this,function(n){switch(n.label){case 0:return[4,(0,en._)(function(){var e,t,n;return(0,ec._)(this,function(o){try{return[2,new Worker(new URL(r.p+r.u("976"),r.b))]}catch(r){if((0,ea._)(r,DOMException)&&(e=ed.exec(r.message)))return t=e[1],n=new Blob(["importScripts('".concat(t,"');")],{type:"text/javascript"}),[2,new Worker(URL.createObjectURL(n))];throw r}})})()];case 1:return[4,ef(t=n.sent(),(0,F._)((0,o._)({},e),{type:"init"}))];case 2:return n.sent(),[2,t]}})})()}),(0,T._)(this,"link",function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],i=el(r||"",n,o);return"".concat(e,"/").concat(t.link).concat(i?"?".concat(i):"")}(i.base,i.config,e,t,r)}),this.config=t}return(0,ei._)(e,[{key:"suggest",value:function(e){return(0,en._)(function(){return(0,ec._)(this,function(t){return[2,this.request({type:"suggest",query:e})]})}).call(this)}},{key:"search",value:function(e){return(0,en._)(function(e){var t,r,n,o=arguments;return(0,ec._)(this,function(i){return t=o.length>1&&void 0!==o[1]?o[1]:1,r=o.length>2&&void 0!==o[2]?o[2]:10,n=o.length>3&&void 0!==o[3]?o[3]:[],[2,this.request({type:"search",query:e,page:t,count:r,tags:n})]})}).apply(this,arguments)}},{key:"base",get:function(){return window.location.href.split("/").slice(0,-this.config.depth).join("/")}},{key:"request",value:function(e){return(0,en._)(function(){return(0,ec._)(this,function(t){switch(t.label){case 0:return[4,this.worker];case 1:return[2,ef.apply(void 0,[t.sent(),e])]}})}).call(this)}}]),e}(),ed=/Script at '(.*?)' cannot be accessed from origin/;function ef(e,t){var r=new MessageChannel;return new Promise(function(n,o){r.port1.onmessage=function(e){e.data.error?o(e.data.error):n(e.data.result)},r.port1.onmessageerror=function(e){o(e.data.error)},e.postMessage(t,[r.port2])})}function eh(){var e=(0,c.useContext)(v),t=(0,c.useContext)(f).depth,r=void 0===t?0:t,n=(0,c.useContext)(ej),i=(0,L._)((0,c.useState)(null),2),a=i[0],u=i[1],l=(0,c.useMemo)(function(){return n?(0,F._)((0,o._)({},n),{depth:r,lang:e}):null},[e,r,n]);return(0,c.useEffect)(function(){l&&u(l?new es(l):null)},[l]),a}(0,q.default)("Suggest");r(15395),r(29794),r(41790),r(63192);var ep=(0,c.createContext)(null),ev=ep.Provider,em=r(30970),eg=(0,q.default)("Layout");function ey(){return null}function eb(){return null}function ew(){return null}var e_={doc:!1},eS=function(e){var t,r,n,a=(0,o._)({},e_,e),u=a.children,l=a.doc,s=a.headerHeight;return c.Children.forEach(u,function(e){if((0,c.isValidElement)(e))switch(e.type){case ey:t=e.props.children;break;case eb:r=e.props.children;break;case ew:n=e.props.children}}),(0,i.jsxs)("div",{className:eg({"full-header":(void 0===s?0:s)>0}),children:[t&&(0,i.jsx)("div",{className:eg("header"),children:t}),(0,i.jsxs)("div",{className:eg("body"),children:[r&&(0,i.jsx)("div",{className:eg("content"),children:r}),n&&(0,i.jsx)("div",{className:eg("footer",{doc:l}),children:n})]})]})};eS.displayName="Layout",eS.Header=ey,eS.Content=eb,eS.Footer=ew;(0,q.default)("pc-page-constructor"),(0,q.default)("pc-constructor-row");r(58498),r(89457),r(57016),r(81397),r(59071);r(6424);r(34236);var ek=(0,q.default)("Search");function eC(e,t,r){var n=el(e,t,r),o=n?"?".concat(n):window.location.pathname;window.history.pushState({},"",o)}var ex=function(){var e=eh(),t=p(),r=eA(),n=(0,L._)((0,c.useState)(""),2),o=n[0],a=n[1],u=(0,L._)((0,c.useState)([]),2),l=u[0],s=u[1],d=(0,L._)((0,c.useState)(1),2),f=d[0],h=d[1],v=(0,L._)((0,c.useState)([]),2),m=v[0],g=v[1],b=(0,L._)((0,c.useState)(0),2),w=b[0],_=b[1],S=(0,L._)((0,c.useState)(!1),2),k=S[0],C=S[1],x=(0,c.useRef)(null);(0,c.useEffect)(function(){var t;x.current=e,null==e||null==(t=e.init)||t.call(e)},[e]),(0,c.useEffect)(function(){var e,t,r,n,o=(r=new URLSearchParams(e=window.location.search),n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=new Set,r=!0,n=!1,o=void 0;try{for(var i,a=e[Symbol.iterator]();!(r=(i=a.next()).done);r=!0){var c=i.value,u=Array.from(c.trim().toLowerCase()).slice(0,32).join("");u&&!u.startsWith("_")&&t.add(u)}}catch(e){n=!0,o=e}finally{try{r||null==a.return||a.return()}finally{if(n)throw o}}return(0,y._)(t)}(((null==(t=e.replace(/^\?/,"").split("&").find(function(e){return e.startsWith("tags=")}))?void 0:t.slice(5))||"").split(",").filter(Boolean).map(eu)),{query:r.get("query")||"",page:Number(r.get("page"))||1,tags:n}),i=o.query,c=o.page,u=o.tags;a(i),h(c),s(u)},[t]),(0,c.useEffect)(function(){var e=!1;return(o.trim()||l.length)&&x.current?(C(!0),x.current.search(o,f,10,l).then(function(t){if(!e){var r,n=t.items,o=t.total;g(Array.isArray(r=null!=n?n:[])?r.map(function(e){var t,r,n;return{title:(null==e?void 0:e.title)||(null==e||null==(t=e.hierarchy)?void 0:t.lvl0)||(null==e||null==(r=e.hierarchy)?void 0:r.lvl1)||"",url:(null==e?void 0:e.url)||(null==e?void 0:e.link)||"#",description:(null==e?void 0:e.description)||(null==e?void 0:e.content)||(null==e?void 0:e.text)||"",section:(null==e?void 0:e.section)||(null==e||null==(n=e.hierarchy)?void 0:n.lvl1)||""}}):[]),_(o)}}).catch(function(){e||(g([]),_(0))}).finally(function(){e||C(!1)})):(g([]),_(0),C(!1)),function(){e=!0}},[o,f,e,l]);var j=(0,c.useCallback)(function(e){eC(o,e,l),h(e)},[o,l]),E=(0,c.useCallback)(function(e){eC(e,1,l),a(e),h(1)},[l]),A=(0,c.useCallback)(function(e){eC(o,1,e),s(e),h(1)},[o]),T=(0,c.useMemo)(function(){return(0,y._)(new Set(((null==r?void 0:r.tags)||[]).filter(function(e){return!e.startsWith("_")})))},[null==r?void 0:r.tags]),M=!!(o.trim()||l.length);return(0,i.jsx)("div",{className:ek(),children:(0,i.jsx)(P.A,{query:o,items:m,page:f,totalItems:w,onPageChange:j,onSubmit:E,loading:k,hasRequest:M,filters:T.length?(0,i.jsx)(R.A,{tags:T,selectedTags:l,onChange:A}):null})})},ej=(0,c.createContext)(null);ej.displayName="SearchContext";var eE=ej.Provider;function eA(){return(0,c.useContext)(ej)}var eT=document.getElementById("root");if(!eT)throw Error("Root element not found!");var eL=window.__DATA__,eM=eL||{};eM.depth=eM.depth||3;var eO=new URL(window.location.href);(0,a.createRoot)(eT).render((0,i.jsx)(function(e){var t=e.data,r=e.url,n=t.search,o=(null==n?void 0:n.lang)||l.JA.En,a=M(),f=N(),p=s.Lq.includes(o)?o:l.JA.En,v=x(p);(0,d.jK)({lang:p,localeCode:p});var g={pathname:r.pathname,depth:3},y=a.theme,b=a.wideFormat;return(0,c.useEffect)(function(){C({mobileView:f,wideFormat:b}),k({theme:y})},[y,f,b]),(0,i.jsx)(u.ThemeProvider,{theme:y,direction:v,children:(0,i.jsx)(m,{value:p,children:(0,i.jsx)(h,{value:g,children:(0,i.jsx)(eE,{value:n,children:(0,i.jsx)(ex,{})})})})})},(0,o._)({},{data:eL,url:eO})))},98010(e,t,r){"use strict";function n(){}r.d(t,{A:()=>n})},14892(){},4320(){},3038(){},91190(){},7155(){},54318(){}},c={};function u(e){var t=c[e];if(void 0!==t)return t.exports;var r=c[e]={id:e,loaded:!1,exports:{}};return a[e].call(r.exports,r,r.exports,u),r.loaded=!0,r.exports}u.m=a,u.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return u.d(t,{a:t}),t},s=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,u.t=function(e,t){if(1&t&&(e=this(e)),8&t||"object"==typeof e&&e&&(4&t&&e.__esModule||16&t&&"function"==typeof e.then))return e;var r=Object.create(null);u.r(r);var n={};l=l||[null,s({}),s([]),s(s)];for(var o=2&t&&e;("object"==typeof o||"function"==typeof o)&&!~l.indexOf(o);o=s(o))Object.getOwnPropertyNames(o).forEach(t=>{n[t]=()=>e[t]});return n.default=()=>e,u.d(r,n),r},u.d=(e,t)=>{for(var r in t)u.o(t,r)&&!u.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},u.f={},u.e=e=>Promise.all(Object.keys(u.f).reduce((t,r)=>(u.f[r](e,t),t),[])),u.k=e=>""+e+"-e43658c1c6d9f673.css",u.u=e=>""+e+"-"+({189:"5cb382a08b27d506",976:"9ad44c68ef5c59fb"})[e]+".js",u.g=(()=>{if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}})(),u.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),d={},u.l=function(e,t,r,n){if(d[e])return void d[e].push(t);if(void 0!==r)for(var o,i,a=document.getElementsByTagName("script"),c=0;c<a.length;c++){var l=a[c];if(l.getAttribute("src")==e||l.getAttribute("data-rspack")=="@diplodoc/client:"+r){o=l;break}}o||(i=!0,(o=document.createElement("script")).timeout=120,u.nc&&o.setAttribute("nonce",u.nc),o.setAttribute("data-rspack","@diplodoc/client:"+r),o.src=e),d[e]=[t];var s=function(t,r){o.onerror=o.onload=null,clearTimeout(f);var n=d[e];if(delete d[e],o.parentNode&&o.parentNode.removeChild(o),n&&n.forEach(function(e){return e(r)}),t)return t(r)},f=setTimeout(s.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=s.bind(null,o.onerror),o.onload=s.bind(null,o.onload),i&&document.head.appendChild(o)},u.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),f=[],u.O=(e,t,r,n)=>{if(t){n=n||0;for(var o=f.length;o>0&&f[o-1][2]>n;o--)f[o]=f[o-1];f[o]=[t,r,n];return}for(var i=1/0,o=0;o<f.length;o++){for(var[t,r,n]=f[o],a=!0,c=0;c<t.length;c++)(!1&n||i>=n)&&Object.keys(u.O).every(e=>u.O[e](t[c]))?t.splice(c--,1):(a=!1,n<i&&(i=n));if(a){f.splice(o--,1);var l=r();void 0!==l&&(e=l)}}return e},u.rv=()=>"1.7.4",u.j="328",u.g.importScripts&&(h=u.g.location+"");var l,s,d,f,h,p=u.g.document;if(!h&&p&&(p.currentScript&&"SCRIPT"===p.currentScript.tagName.toUpperCase()&&(h=p.currentScript.src),!h)){var v=p.getElementsByTagName("script");if(v.length)for(var m=v.length-1;m>-1&&(!h||!/^http(s?):/.test(h));)h=v[m--].src}if(!h)throw Error("Automatic publicPath is not supported in this browser");u.p=h=h.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),e={328:0,474:0},r="data-rspack-loading",(t=(t,r)=>{e[r]=0})(u.m,0,"474"),t(u.m,0,"328"),u.f.css=(n,o,i)=>{var a=u.o(e,n)?e[n]:void 0;if(0!==a)if(a)o.push(a[2]);else if(/^(189|85)$/.test(n))e[n]=0;else{var c=new Promise(function(t,r){a=e[n]=[t,r]});o.push(a[2]=c);var l=u.p+u.k(n),s=Error(),d=function(r){if(u.o(e,n)&&(0!==(a=e[n])&&(e[n]=void 0),a))if("load"!==r.type){var o=r&&r.type,i=r&&r.target&&r.target.src;s.message="Loading css chunk "+n+" failed.\n("+o+": "+i+")",s.name="ChunkLoadError",s.type=o,s.request=i,a[1](s)}else t(u.m,n),a[0]()};"u">typeof document?((e,t,n,o,i)=>{var a,c,l="chunk-"+e;if(!o){for(var s=document.getElementsByTagName("link"),d=0;d<s.length;d++){var f=s[d],h=f.getAttribute("href")||f.href;if(h&&!h.startsWith(u.p)&&(h=u.p+(h.startsWith("/")?h.slice(1):h)),"stylesheet"==f.rel&&(h&&h.startsWith(t)||f.getAttribute("data-rspack")=="@diplodoc/client:"+l)){a=f;break}}if(!n)return}a||(c=!0,a=document.createElement("link"),u.nc&&a.setAttribute("nonce",u.nc),a.setAttribute("data-rspack","@diplodoc/client:"+l),a.setAttribute(r,1),a.rel="stylesheet",a.href=t);var p=(e,t)=>{if(a.onerror=a.onload=null,a.removeAttribute(r),clearTimeout(v),t&&"load"!=t.type&&a.parentNode.removeChild(a),n(t),e)return e(t)};if(a.getAttribute(r)){var v=setTimeout(p.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=p.bind(null,a.onerror),a.onload=p.bind(null,a.onload)}else p(void 0,{type:"load",target:a});return o&&o.getAttribute("fetchpriority")&&a.setAttribute("fetchpriority",o.getAttribute("fetchpriority")),o?document.head.insertBefore(a,o):c&&document.head.appendChild(a)})(n,l,d,void 0,0):d({type:"load"})}},u.b=document.baseURI||self.location.href,n={328:0},u.f.j=function(e,t){var r=u.o(n,e)?n[e]:void 0;if(0!==r)if(r)t.push(r[2]);else if(572!=e){var o=new Promise((t,o)=>r=n[e]=[t,o]);t.push(r[2]=o);var i=u.p+u.u(e),a=Error();u.l(i,function(t){if(u.o(n,e)&&(0!==(r=n[e])&&(n[e]=void 0),r)){var o=t&&("load"===t.type?"missing":t.type),i=t&&t.target&&t.target.src;a.message="Loading chunk "+e+" failed.\n("+o+": "+i+")",a.name="ChunkLoadError",a.type=o,a.request=i,r[1](a)}},"chunk-"+e,e)}else n[e]=0},u.O.j=e=>0===n[e],o=(e,t)=>{var r,o,[i,a,c]=t,l=0;if(i.some(e=>0!==n[e])){for(r in a)u.o(a,r)&&(u.m[r]=a[r]);if(c)var s=c(u)}for(e&&e(t);l<i.length;l++)o=i[l],u.o(n,o)&&n[o]&&n[o][0](),n[o]=0;return u.O(s)},(i=self.webpackChunk_diplodoc_client=self.webpackChunk_diplodoc_client||[]).forEach(o.bind(null,0)),i.push=o.bind(null,i.push.bind(i)),u.ruid="bundler=rspack@1.7.4";var g=u.O(void 0,["85","474"],()=>u(93635));g=u.O(g)})();
2
+ //# sourceMappingURL=search-821cf5de7183d70c.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-821cf5de7183d70c.js","sources":["webpack://@diplodoc/client/webpack/runtime/css_loading","webpack://@diplodoc/client/webpack/runtime/jsonp_chunk_loading","webpack://@diplodoc/client/./src/interceptors/leading-page-links.js","webpack://@diplodoc/client/./src/constants.ts","webpack://@diplodoc/client/./src/components/Router/index.ts","webpack://@diplodoc/client/./src/hooks/useLang.ts","webpack://@diplodoc/client/./src/utils.ts","webpack://@diplodoc/client/./src/components/App/useSettings.ts","webpack://@diplodoc/client/./src/components/App/useMobile.ts","webpack://@diplodoc/client/./src/components/NeuroExpert/index.ts","webpack://@diplodoc/client/./src/components/HeaderControls/index.tsx","webpack://@diplodoc/client/./src/components/App/CustomControls.tsx","webpack://@diplodoc/client/./src/components/Search/searchParams.ts","webpack://@diplodoc/client/./src/components/Search/provider/index.ts","webpack://@diplodoc/client/./src/components/Search/provider/utils/searchLink.ts","webpack://@diplodoc/client/./src/components/Search/useProvider.ts","webpack://@diplodoc/client/./src/components/Search/Suggest.tsx","webpack://@diplodoc/client/./src/components/ConstructorPage/useNavigation.tsx","webpack://@diplodoc/client/./src/components/App/PageContext.tsx","webpack://@diplodoc/client/./src/components/Layout/index.tsx","webpack://@diplodoc/client/./src/components/ConstructorPage/index.tsx","webpack://@diplodoc/client/./src/components/Search/Page.tsx","webpack://@diplodoc/client/./src/components/Search/index.tsx","webpack://@diplodoc/client/./src/search.tsx","webpack://@diplodoc/client/./src/stub/empty-module.js","webpack://@diplodoc/client/webpack/runtime/compat_get_default_export","webpack://@diplodoc/client/webpack/runtime/create_fake_namespace_object","webpack://@diplodoc/client/webpack/runtime/define_property_getters","webpack://@diplodoc/client/webpack/runtime/ensure_chunk","webpack://@diplodoc/client/webpack/runtime/get css chunk filename","webpack://@diplodoc/client/webpack/runtime/get javascript chunk filename","webpack://@diplodoc/client/webpack/runtime/global","webpack://@diplodoc/client/webpack/runtime/has_own_property","webpack://@diplodoc/client/webpack/runtime/load_script","webpack://@diplodoc/client/webpack/runtime/make_namespace_object","webpack://@diplodoc/client/webpack/runtime/node_module_decorator","webpack://@diplodoc/client/webpack/runtime/on_chunk_loaded","webpack://@diplodoc/client/webpack/runtime/rspack_version","webpack://@diplodoc/client/webpack/runtime/runtime_id","webpack://@diplodoc/client/webpack/runtime/auto_public_path","webpack://@diplodoc/client/webpack/runtime/rspack_unique_id"],"sourcesContent":["var installedChunks = {\"328\": 0,\"474\": 0,};\nvar uniqueName = \"@diplodoc/client\";\nfunction handleCssComposes(exports, composes) {\n\tfor (var i = 0; i < composes.length; i += 3) {\n\t\tvar moduleId = composes[i];\n\t\tvar composeFrom = composes[i + 1];\n\t\tvar composeVar = composes[i + 2];\n\t\tvar composedId = __webpack_require__(composeFrom)[composeVar];\n\t\texports[moduleId] = exports[moduleId] + \" \" + composedId\n\t}\n}\nvar loadCssChunkData = (target, chunkId) => {\n\ninstalledChunks[chunkId] = 0;\n\n} \nvar loadingAttribute = \"data-rspack-loading\";\nvar loadStylesheet = (chunkId, url, done, hmr, fetchPriority) => {\n\tvar link,\n\t\tneedAttach,\n\t\tkey = \"chunk-\" + chunkId;\n\tif (!hmr) {\n\t\tvar links = document.getElementsByTagName(\"link\");\n\t\tfor (var i = 0; i < links.length; i++) {\n\t\t\tvar l = links[i];\n\t\t\tvar href = l.getAttribute(\"href\") || l.href;\n\t\t\tif (href && !href.startsWith(__webpack_require__.p)) {\n\t\t\t\thref =\n\t\t\t\t\t__webpack_require__.p + (href.startsWith(\"/\") ? href.slice(1) : href);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tl.rel == \"stylesheet\" &&\n\t\t\t\t((href && href.startsWith(url)) ||\n\t\t\t\t\tl.getAttribute(\"data-rspack\") == uniqueName + \":\" + key)\n\t\t\t) {\n\t\t\t\tlink = l;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!done) return link;\n\t}\n\tif (!link) {\n\t\tneedAttach = true;\n\t\tlink = document.createElement(\"link\");\n\nif (__webpack_require__.nc) {\n link.setAttribute(\"nonce\", __webpack_require__.nc);\n}\n\nlink.setAttribute(\"data-rspack\", uniqueName + \":\" + key);\n\n\nlink.setAttribute(loadingAttribute, 1);\nlink.rel = \"stylesheet\";\nlink.href = url;\n\n\t}\n\tvar onLinkComplete = (prev, event) => {\n\t\tlink.onerror = link.onload = null;\n\t\tlink.removeAttribute(loadingAttribute);\n\t\tclearTimeout(timeout);\n\t\tif (event && event.type != \"load\") link.parentNode.removeChild(link);\n\t\tdone(event);\n\t\tif (prev) return prev(event);\n\t};\n\tif (link.getAttribute(loadingAttribute)) {\n\t\tvar timeout = setTimeout(\n\t\t\tonLinkComplete.bind(null, undefined, { type: \"timeout\", target: link }),\n\t\t\t120000 \n\t\t);\n\t\tlink.onerror = onLinkComplete.bind(null, link.onerror);\n\t\tlink.onload = onLinkComplete.bind(null, link.onload);\n\t} else onLinkComplete(undefined, { type: \"load\", target: link });\n\tif (hmr && hmr.getAttribute(\"fetchpriority\")) link.setAttribute(\"fetchpriority\", hmr.getAttribute(\"fetchpriority\"));\n\thmr ? document.head.insertBefore(link, hmr) : needAttach && document.head.appendChild(link);\n\treturn link;\n};\nloadCssChunkData(__webpack_require__.m, 0, \"474\");loadCssChunkData(__webpack_require__.m, 0, \"328\");\n__webpack_require__.f.css = (chunkId, promises, fetchPriority) => {\n\t// css chunk loading\n\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId)\n\t\t? installedChunks[chunkId]\n\t\t: undefined;\n\tif (installedChunkData !== 0) {\n\t\t// 0 means \"already installed\".\n\n\t\t// a Promise means \"currently loading\".\n\t\tif (installedChunkData) {\n\t\t\tpromises.push(installedChunkData[2]);\n\t\t} else {\n\t\t\tif (!/^(189|85)$/.test(chunkId)) {\n\t\t\t\t// setup Promise in chunk cache\n\t\t\t\tvar promise = new Promise(function (resolve, reject) {\n\t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n\t\t\t\t});\n\t\t\t\tpromises.push((installedChunkData[2] = promise));\n\n\t\t\t\t// start chunk loading\n\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.k(chunkId);\n\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\tvar error = new Error();\n\t\t\t\tvar loadingEnded = function (event) {\n\t\t\t\t\tif (__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\tif (installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\tif (installedChunkData) {\n\t\t\t\t\t\t\tif (event.type !== \"load\") {\n\t\t\t\t\t\t\t\tvar errorType = event && event.type;\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message =\n\t\t\t\t\t\t\t\t\t\"Loading css chunk \" +\n\t\t\t\t\t\t\t\t\tchunkId +\n\t\t\t\t\t\t\t\t\t\" failed.\\n(\" +\n\t\t\t\t\t\t\t\t\terrorType +\n\t\t\t\t\t\t\t\t\t\": \" +\n\t\t\t\t\t\t\t\t\trealSrc +\n\t\t\t\t\t\t\t\t\t\")\";\n\t\t\t\t\t\t\t\terror.name = \"ChunkLoadError\";\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tloadCssChunkData(__webpack_require__.m, chunkId);\n\t\t\t\t\t\t\t\tinstalledChunkData[0]();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tif (typeof document !== 'undefined') {\n\t\t\t\t\tloadStylesheet(chunkId, url, loadingEnded, undefined, fetchPriority);\n\t\t\t\t} else { loadingEnded({ type: 'load' }); }\n\t\t\t} else installedChunks[chunkId] = 0;\n\t\t}\n\t}\n};\n","__webpack_require__.b = document.baseURI || self.location.href;\n\n // object to store loaded and loading chunks\n // undefined = chunk not loaded, null = chunk preloaded/prefetched\n // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\n var installedChunks = {\"328\": 0,};\n \n __webpack_require__.f.j = function (chunkId, promises) {\n // JSONP chunk loading for javascript\nvar installedChunkData = __webpack_require__.o(installedChunks, chunkId)\n\t? installedChunks[chunkId]\n\t: undefined;\nif (installedChunkData !== 0) {\n\t// 0 means \"already installed\".\n\n\t// a Promise means \"currently loading\".\n\tif (installedChunkData) {\n\t\tpromises.push(installedChunkData[2]);\n\t} else {\n\t\tif (572 != chunkId) {\n\t\t\t// setup Promise in chunk cache\n\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\tpromises.push((installedChunkData[2] = promise));\n\n\t\t\t// start chunk loading\n\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\tvar error = new Error();\n\t\t\tvar loadingEnded = function (event) {\n\t\t\t\tif (__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\tif (installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\tif (installedChunkData) {\n\t\t\t\t\t\tvar errorType =\n\t\t\t\t\t\t\tevent && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\terror.message =\n\t\t\t\t\t\t\t'Loading chunk ' +\n\t\t\t\t\t\t\tchunkId +\n\t\t\t\t\t\t\t' failed.\\n(' +\n\t\t\t\t\t\t\terrorType +\n\t\t\t\t\t\t\t': ' +\n\t\t\t\t\t\t\trealSrc +\n\t\t\t\t\t\t\t')';\n\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t} else installedChunks[chunkId] = 0; \n\t}\n}\n\n }\n __webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n// install a JSONP callback for chunk loading\nvar __rspack_jsonp = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif (chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor (moduleId in moreModules) {\n\t\t\tif (__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif (runtime) var result = runtime(__webpack_require__);\n\t}\n\tif (parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor (; i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif (\n\t\t\t__webpack_require__.o(installedChunks, chunkId) &&\n\t\t\tinstalledChunks[chunkId]\n\t\t) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\t\n\treturn __webpack_require__.O(result);\n\t\n};\n\nvar chunkLoadingGlobal = self[\"webpackChunk_diplodoc_client\"] = self[\"webpackChunk_diplodoc_client\"] || [];\nchunkLoadingGlobal.forEach(__rspack_jsonp.bind(null, 0));\nchunkLoadingGlobal.push = __rspack_jsonp.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));\n","(function () {\n /**\n * Element.matches() polyfill.\n * @link https://developer.mozilla.org/ru/docs/Web/API/Element/matches\n */\n if (typeof Element !== 'undefined') {\n (function (e) {\n const matches =\n e.matches ||\n e.matchesSelector ||\n e.webkitMatchesSelector ||\n e.mozMatchesSelector ||\n e.msMatchesSelector ||\n e.oMatchesSelector;\n\n if (matches) {\n e.matches = e.matchesSelector = matches;\n } else {\n e.matches = e.matchesSelector = function (selector) {\n const th = this;\n return Array.prototype.some.call(document.querySelectorAll(selector), (el) => {\n return el === th;\n });\n };\n }\n })(Element.prototype);\n }\n})();\n","import {TextSizes, Theme} from '@diplodoc/components';\n\nexport const HEADER_HEIGHT = 64;\n\nexport const MOBILE_VIEW_WIDTH_BREAKPOINT = 769;\n\nexport const DEFAULT_USER_SETTINGS = {\n theme: Theme.Light,\n textSize: TextSizes.M,\n showMiniToc: true,\n wideFormat: true,\n fullScreen: false,\n};\n\nexport const RTL_LANGS = [\n 'ar',\n 'arc',\n 'ckb',\n 'dv',\n 'fa',\n 'ha',\n 'he',\n 'khw',\n 'ks',\n 'ps',\n 'sd',\n 'ur',\n 'uz_AF',\n 'yi',\n];\n\nexport enum TextDirection {\n RTL = 'rtl',\n LTR = 'ltr',\n}\n\nexport const LINK_KEYS_LEADING_CONFIG = ['href'];\nexport const LINK_KEYS_PAGE_CONSTRUCTOR_CONFIG = [\n 'src',\n 'url',\n 'href',\n 'icon',\n 'image',\n 'desktop',\n 'mobile',\n 'tablet',\n 'previewImg',\n 'image',\n 'avatar',\n 'logo',\n 'light',\n 'dark',\n];\n\nexport const LINK_KEYS = [\n ...new Set([...LINK_KEYS_LEADING_CONFIG, ...LINK_KEYS_PAGE_CONSTRUCTOR_CONFIG]),\n];\n","import type {Router} from '@diplodoc/components';\n\nimport {createContext, useContext} from 'react';\n\nexport interface RouterConfig extends Router {\n depth: number;\n}\n\nexport const RouterContext = createContext<RouterConfig>({\n pathname: '/',\n depth: 0,\n});\n\nRouterContext.displayName = 'RouterContext';\n\nexport const RouterProvider = RouterContext.Provider;\n\nexport function useRouter() {\n return useContext(RouterContext);\n}\n","import {createContext, useContext} from 'react';\nimport {Lang} from '@diplodoc/components';\n\nconst LangContext = createContext<`${Lang}` | Lang>(Lang.En);\n\nLangContext.displayName = 'Lang';\n\nexport const LangProvider = LangContext.Provider;\n\nexport function useLang() {\n return useContext(LangContext);\n}\n","import type {PageData} from './components/App';\nimport type {Lang, Theme} from '@diplodoc/components';\nimport type {AnalyticsConfig, UserAnalyticsConfig} from './types';\n\nimport {Analytics, YandexMetrikaAdapter, getPageType} from '@diplodoc/components';\n\nimport {\n DEFAULT_USER_SETTINGS,\n MOBILE_VIEW_WIDTH_BREAKPOINT,\n RTL_LANGS,\n TextDirection,\n} from './constants';\n\nexport function isBrowser() {\n return typeof document !== 'undefined';\n}\n\nexport function updateThemeClassName({theme}: {theme: Theme}) {\n if (typeof document === 'undefined') {\n return;\n }\n\n document.querySelectorAll('.g-root').forEach((el) => {\n el.classList.toggle('g-root_theme_light', theme === 'light');\n el.classList.toggle('g-root_theme_dark', theme === 'dark');\n });\n}\n\nexport function updateRootClassName(states: {\n mobileView?: boolean;\n wideFormat?: boolean;\n fullScreen?: boolean;\n focusSearch?: boolean;\n landingPage?: boolean;\n}) {\n if (!isBrowser()) {\n return;\n }\n\n document.body.classList.add('g-root');\n\n const toggle = (name: string, state: unknown) =>\n document.body.classList.toggle(name, Boolean(state));\n\n Object.keys(states).forEach((state) => {\n switch (state) {\n case 'wideFormat':\n toggle('dc-root_wide-format', states[state]);\n break;\n case 'focusSearch':\n toggle('dc-root_focused-search', states[state]);\n break;\n case 'fullScreen':\n toggle('dc-root_full-screen', states[state]);\n break;\n case 'landingPage':\n toggle('dc-root_document-page', !states[state]);\n toggle('dc-root_landing-page', states[state]);\n break;\n case 'mobileView':\n toggle('mobile', states[state]);\n toggle('desktop', !states[state]);\n break;\n }\n });\n}\n\nexport function getDirection(lang: `${Lang}` | Lang): TextDirection {\n const isRTL = RTL_LANGS.includes(lang);\n\n return isRTL ? TextDirection.RTL : TextDirection.LTR;\n}\n\nconst toBoolean = (str: string | boolean) => {\n if (typeof str === 'boolean') {\n return str;\n }\n\n return str ? str === 'true' : false;\n};\n\nexport type Settings = typeof DEFAULT_USER_SETTINGS;\n\nexport function getSettings() {\n const theme = getSetting('theme');\n const textSize = getSetting('textSize');\n const showMiniToc = getSetting('showMiniToc');\n const wideFormat = getSetting('wideFormat');\n const fullScreen = getSetting('fullScreen');\n\n return {\n theme,\n textSize,\n showMiniToc: toBoolean(showMiniToc),\n wideFormat: toBoolean(wideFormat),\n fullScreen: toBoolean(fullScreen),\n };\n}\n\nexport function getLandingPage(data: PageData) {\n return getPageType(data) === 'PAGE_CONSTRUCTOR';\n}\n\nexport function getMobileView() {\n if (!isBrowser()) {\n return false;\n }\n\n return document.body.clientWidth < MOBILE_VIEW_WIDTH_BREAKPOINT;\n}\n\nfunction getSetting<T extends keyof Settings>(name: T): Settings[T] {\n if (!isBrowser()) {\n return DEFAULT_USER_SETTINGS[name];\n }\n\n try {\n return (sessionStorage.getItem(name) as Settings[T]) || DEFAULT_USER_SETTINGS[name];\n } catch {\n return DEFAULT_USER_SETTINGS[name];\n }\n}\n\nexport function setSetting<T>(name: string, value: T) {\n if (!isBrowser()) {\n return;\n }\n\n try {\n sessionStorage.setItem(name, String(value));\n } catch {}\n}\n\nexport function isDetailsTag(el: HTMLElement): el is HTMLDetailsElement {\n return el?.tagName.toLowerCase() === 'details';\n}\n\nexport function isHeaderTag(el: HTMLElement) {\n return ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'].indexOf(el.tagName) !== -1;\n}\n\n/**\n * Scrolls to the element.\n * If the element is a heading - simply scrolls to it, since needed offset is already in css.\n * If the element is of any other type - calculate the offset form the element position in heading and scroll to it.\n * @param {HTMLElement} el\n */\n\nexport function scrollToElement(el: HTMLElement, offset = 200) {\n if (isInViewport(el)) {\n return;\n }\n\n if (isHeaderTag(el)) {\n // Header already includes the offset in css\n // That puts it where we want it when it's scrolled to\n el.scrollIntoView();\n } else {\n const elementPosition = el.getBoundingClientRect().top;\n const offsetPosition = elementPosition + window.scrollY - offset;\n\n window.scrollTo({\n top: offsetPosition,\n });\n }\n}\n\nexport function getLangPath(lang: string, href: string) {\n let path;\n\n const isLocal = href.match(/^file:\\/\\/\\/(.*)$/);\n\n if (isLocal) {\n path = '/' + isLocal[1];\n } else {\n path = href.replace(/^https?:\\/\\/[^/]+/, '');\n }\n\n const newPath = path.replace(/\\/[a-z]{2}\\//, `/${lang}/`);\n\n if (isLocal) {\n return 'file://' + newPath;\n }\n\n return newPath;\n}\n\nexport function getDomainPath(lang: string, tld: string, href: string) {\n const newPath = href.replace(/([a-zA-Z0-9-]+\\.[a-zA-Z0-9-]+)(?=[/:?#]|$)/, (match) => {\n const dotPos = match.lastIndexOf('.');\n\n if (dotPos === -1) {\n return match;\n }\n\n return match.slice(0, dotPos + 1) + tld;\n });\n\n return getLangPath(lang, newPath);\n}\n\nfunction isInViewport(el: HTMLElement) {\n const rect = el.getBoundingClientRect();\n\n return (\n rect.top >= 0 &&\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight)\n );\n}\n\nfunction activateTabPanel(panel: HTMLElement): void {\n const controller = (globalThis as Record<symbol, unknown>)[Symbol.for('diplodocTabs')] as\n | {selectTabById: (id: string) => void}\n | undefined;\n\n if (!controller || typeof controller.selectTabById !== 'function') {\n return;\n }\n\n const tabId = panel.getAttribute('aria-labelledby');\n\n if (tabId) {\n controller.selectTabById(tabId);\n }\n}\n\nexport function scrollToHash() {\n const hash = window.location.hash.substring(1);\n\n if (!hash) {\n return;\n }\n\n const element = document.getElementById(hash);\n\n if (!element) {\n return;\n }\n\n let node = element?.parentElement;\n\n while (node) {\n if (isDetailsTag(node)) {\n node.open = true;\n }\n\n if (node.classList.contains('yfm-tab-panel') && !node.classList.contains('active')) {\n activateTabPanel(node);\n }\n\n node = node.parentElement;\n }\n\n element.focus();\n\n setTimeout(() => {\n scrollToElement(element);\n }, 10);\n}\n\nfunction normalizeAnalyticsConfig(rawConfig?: UserAnalyticsConfig): AnalyticsConfig {\n const config: AnalyticsConfig = {\n metrika: [],\n };\n\n if (!rawConfig || typeof rawConfig !== 'object') {\n return config;\n }\n\n if ('gtm' in rawConfig && rawConfig.gtm && typeof rawConfig.gtm === 'object') {\n if (typeof rawConfig.gtm.id === 'string') {\n config.gtm = {\n id: rawConfig.gtm.id,\n mode: rawConfig.gtm.mode === 'notification' ? 'notification' : 'base',\n };\n }\n }\n\n if ('metrika' in rawConfig && Array.isArray(rawConfig.metrika)) {\n for (const metrika of rawConfig.metrika) {\n if (!metrika || typeof metrika !== 'object' || !metrika.id) {\n continue;\n }\n\n config.metrika.push({\n id: metrika.id,\n params: metrika.params || {},\n });\n }\n }\n\n return config;\n}\n\nexport function createAnalyticsProps(config?: UserAnalyticsConfig) {\n const analyticsConfig = normalizeAnalyticsConfig(config);\n const adapters = analyticsConfig.metrika.map((config) => {\n return new YandexMetrikaAdapter(config);\n });\n const analyticsService = new Analytics({adapters});\n\n return {\n analyticsConfig,\n analyticsService,\n };\n}\n","import type {Settings} from '../../utils';\n\nimport {useMemo, useState} from 'react';\n\nimport {getSettings, setSetting} from '../../utils';\n\nconst capitalize = <T extends string>(string: T): Capitalize<T> =>\n string.replace(/^./, (ch) => ch.toUpperCase()) as Capitalize<T>;\n\nexport function useSettings() {\n const settings = getSettings();\n\n const theme = useSetting('theme', settings);\n const textSize = useSetting('textSize', settings);\n const wideFormat = useSetting('wideFormat', settings);\n const fullScreen = useSetting('fullScreen', settings);\n const showMiniToc = useSetting('showMiniToc', settings);\n\n const controls = useMemo(\n () => ({\n ...theme,\n ...textSize,\n ...wideFormat,\n ...showMiniToc,\n ...fullScreen,\n }),\n [theme, textSize, wideFormat, showMiniToc, fullScreen],\n );\n\n return controls;\n}\n\ntype State<P extends keyof Settings> = Record<P, Settings[P]> &\n Record<`onChange${Capitalize<P>}`, (value: Settings[P]) => void>;\n\nfunction useSetting<P extends keyof Settings>(name: P, settings: Settings): State<P> {\n const [setting, setSetting] = useState<Settings[P]>(settings[name]);\n const onChangeSetting = useMemo(() => withSavingSetting(name, setSetting), [name, setSetting]);\n\n return useMemo(\n () =>\n ({\n [name]: setting,\n ['onChange' + capitalize(name)]: onChangeSetting,\n }) as State<P>,\n [name, setting, onChangeSetting],\n );\n}\n\nfunction withSavingSetting<T>(settingName: string, onChange: (value: T) => void) {\n return (value: T) => {\n setSetting<T>(settingName, value);\n\n onChange(value);\n };\n}\n","import {useCallback, useEffect, useState} from 'react';\n\nimport {getMobileView} from '../../utils';\n\nexport function useMobile() {\n const [mobileView, setMobileView] = useState<boolean>(getMobileView());\n\n const onResizeHandler = useCallback(() => {\n setMobileView(getMobileView());\n }, []);\n\n useEffect(onResizeHandler, [onResizeHandler]);\n\n useEffect(() => {\n window.addEventListener('resize', onResizeHandler);\n\n return () => window.removeEventListener('resize', onResizeHandler);\n }, [onResizeHandler]);\n\n return mobileView;\n}\n","import {createContext, useContext} from 'react';\n\nexport interface NeuroExpertConfig {\n projectId?: string;\n}\n\nexport const NeuroExpertContext = createContext<NeuroExpertConfig | null | undefined>(null);\n\nNeuroExpertContext.displayName = 'NeuroExpertContext';\n\nexport const NeuroExpertProvider = NeuroExpertContext.Provider;\n\nexport function useNeuroExpert() {\n return useContext(NeuroExpertContext);\n}\n","import type {AvailableLangs, Lang, LangOptions, TextSizes, Theme} from '@diplodoc/components';\n\nimport {memo} from 'react';\nimport {ControlSizes, Controls, ControlsLayout} from '@diplodoc/components';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype OnChangeCallback = (value: any) => void;\n\nexport type Props = {\n mobileView: boolean;\n\n theme: Theme;\n onChangeTheme: OnChangeCallback;\n textSize: TextSizes;\n onChangeTextSize: OnChangeCallback;\n wideFormat: boolean;\n onChangeWideFormat: OnChangeCallback;\n showMiniToc: boolean;\n onChangeShowMiniToc: OnChangeCallback;\n lang: Lang | `${Lang}`;\n langs: (Lang | `${Lang}`)[];\n onChangeLang?: (lang: `${Lang}` | Lang, options?: LangOptions) => void;\n availableLangs?: AvailableLangs;\n};\n\nexport const HeaderControls = memo<Props>(\n ({\n mobileView,\n\n theme,\n onChangeTheme,\n\n textSize,\n onChangeTextSize,\n\n wideFormat,\n onChangeWideFormat,\n\n showMiniToc,\n onChangeShowMiniToc,\n\n lang,\n langs,\n onChangeLang,\n\n availableLangs = [],\n }) => {\n return (\n <ControlsLayout\n controlClassName={'Control'}\n controlSize={ControlSizes.L}\n isWideView={mobileView}\n isMobileView={mobileView}\n >\n <Controls\n className={'Controls'}\n theme={theme}\n onChangeTheme={onChangeTheme}\n wideFormat={wideFormat}\n onChangeWideFormat={onChangeWideFormat}\n showMiniToc={showMiniToc}\n onChangeShowMiniToc={onChangeShowMiniToc}\n textSize={textSize}\n onChangeTextSize={onChangeTextSize}\n lang={lang}\n langs={langs}\n onChangeLang={onChangeLang}\n availableLangs={availableLangs}\n />\n </ControlsLayout>\n );\n },\n);\n\nHeaderControls.displayName = 'HeaderControls';\n","import type {FC} from 'react';\nimport type {Props as HeaderControlsProps} from '../HeaderControls';\n\nimport {createContext, useContext} from 'react';\n\nimport {HeaderControls} from '../HeaderControls';\n\nconst HeaderControlsContext = createContext<HeaderControlsProps | null>(null);\n\nexport const HeaderControlsProvider = HeaderControlsContext.Provider;\n\nexport const CustomControls: FC = () => {\n const props = useContext(HeaderControlsContext);\n\n if (!props) {\n throw new Error('CustomControls must be used within HeaderControlsProvider');\n }\n\n return <HeaderControls {...props} />;\n};\n","export interface SearchParams {\n query: string;\n page: number;\n tags: string[];\n}\n\nconst MAX_TAG_LENGTH = 32;\n\nfunction decodeTag(tag: string): string {\n try {\n return decodeURIComponent(tag.replaceAll('+', ' '));\n } catch {\n return tag.replaceAll('+', ' ');\n }\n}\n\nfunction normalizeTags(tags: string[] = []): string[] {\n const seen = new Set<string>();\n\n for (const tag of tags) {\n const value = Array.from(tag.trim().toLowerCase()).slice(0, MAX_TAG_LENGTH).join('');\n\n if (value && !value.startsWith('_')) {\n seen.add(value);\n }\n }\n\n return [...seen];\n}\n\nexport function buildSearchParams(query: string, page = 1, tags: string[] = []): string {\n const params: string[] = [];\n\n if (query) {\n params.push(`query=${encodeURIComponent(query)}`);\n }\n\n if (tags.length) {\n params.push(`tags=${tags.map(encodeURIComponent).join(',')}`);\n }\n\n if (page > 1) {\n params.push(`page=${page}`);\n }\n\n return params.join('&');\n}\n\nexport function parseSearchParams(search: string): SearchParams {\n const params = new URLSearchParams(search);\n const rawTags = search\n .replace(/^\\?/, '')\n .split('&')\n .find((part) => part.startsWith('tags='))\n ?.slice('tags='.length);\n const tags = normalizeTags((rawTags || '').split(',').filter(Boolean).map(decodeTag));\n\n return {\n query: params.get('query') || '',\n page: Number(params.get('page')) || 1,\n tags,\n };\n}\n","import type {ISearchProvider, ISearchResult} from '@diplodoc/components';\nimport type {SearchConfig, SearchProviderExtended, WorkerConfig} from '../types';\n\nimport {buildSearchLink} from './utils/searchLink';\n\nexport class DefaultSearchProvider implements ISearchProvider, SearchProviderExtended {\n private worker!: Promise<Worker>;\n\n private config: SearchConfig;\n\n constructor(config: SearchConfig) {\n this.config = config;\n }\n\n init = () => {\n this.worker = initWorker({\n ...this.config,\n base: this.base,\n mark: 'Suggest__Item__Marker',\n });\n };\n\n async suggest(query: string) {\n return this.request({\n type: 'suggest',\n query,\n }) as Promise<ISearchResult[]>;\n }\n\n async search(query: string, page = 1, count = 10, tags: string[] = []) {\n return this.request({\n type: 'search',\n query,\n page,\n count,\n tags,\n }) as Promise<{items: ISearchResult[]; total: number}>;\n }\n\n link = (query: string, page = 1, tags: string[] = []) =>\n buildSearchLink(this.base, this.config, query, page, tags);\n\n private get base() {\n return window.location.href.split('/').slice(0, -this.config.depth).join('/');\n }\n\n private async request(message: object) {\n return request(await this.worker, message);\n }\n}\n\nconst BAD_ORIGIN_ERROR = /Script at '(.*?)' cannot be accessed from origin/;\n\nasync function loadWorker() {\n try {\n return new Worker(new URL('../worker/index.ts', import.meta.url));\n } catch (error) {\n if (error instanceof DOMException) {\n const match = BAD_ORIGIN_ERROR.exec(error.message);\n if (match) {\n const url = match[1];\n const blob = new Blob([`importScripts('${url}');`], {type: 'text/javascript'});\n\n return new Worker(URL.createObjectURL(blob));\n }\n }\n\n throw error;\n }\n}\n\nasync function initWorker(config: WorkerConfig) {\n const worker = await loadWorker();\n\n await request(worker, {...config, type: 'init'});\n\n return worker;\n}\n\nfunction request(worker: Worker, message: object) {\n const channel = new MessageChannel();\n\n return new Promise((resolve, reject) => {\n channel.port1.onmessage = (message) => {\n if (message.data.error) {\n reject(message.data.error);\n } else {\n resolve(message.data.result);\n }\n };\n\n channel.port1.onmessageerror = (message) => {\n reject(message.data.error);\n };\n\n worker.postMessage(message, [channel.port2]);\n });\n}\n\nexport function createProvider(config: SearchConfig): ISearchProvider | null {\n if (!config) {\n return null;\n }\n\n return new DefaultSearchProvider(config);\n}\n\nexport const SearchProvider = DefaultSearchProvider;\n","import type {SearchConfig} from '../../types';\n\nimport {buildSearchParams} from '../../searchParams';\n\nexport function buildSearchLink(\n base: string,\n config: SearchConfig,\n query?: string,\n page = 1,\n tags: string[] = [],\n) {\n const searchParams = buildSearchParams(query || '', page, tags);\n const params = searchParams ? `?${searchParams}` : '';\n const link = `${base}/${config.link}${params}`;\n\n return link;\n}\n","import type {ISearchProvider} from '@diplodoc/components';\n\nimport {useContext, useEffect, useMemo, useState} from 'react';\n\nimport {RouterContext, SearchContext} from '../index';\nimport {useLang} from '../../hooks/useLang';\n\nimport {createProvider} from './provider';\n\nexport function useProvider() {\n const lang = useLang();\n const {depth = 0} = useContext(RouterContext);\n const search = useContext(SearchContext);\n const [provider, setProvider] = useState<ISearchProvider | null>(null);\n\n const config = useMemo(() => {\n if (!search) {\n return null;\n }\n\n return {\n ...search,\n depth,\n lang,\n };\n }, [lang, depth, search]);\n\n useEffect(() => {\n if (config) {\n setProvider(createProvider(config));\n }\n }, [config]);\n\n return provider;\n}\n","import type {ISearchProvider, SearchSuggestApi} from '@diplodoc/components';\n\nimport {useCallback, useMemo, useRef, useState} from 'react';\nimport {AiIcon, NeuroExpertModal, SearchSuggest, useInterface} from '@diplodoc/components';\nimport {Icon} from '@gravity-ui/uikit';\nimport {Magnifier} from '@gravity-ui/icons';\nimport block from 'bem-cn-lite';\n\nimport {updateRootClassName} from '../../utils';\nimport {useNeuroExpert} from '../NeuroExpert';\n\nimport {useProvider} from './useProvider';\nimport './Suggest.scss';\n\nconst b = block('Suggest');\n\nfunction SearchButton() {\n return <Icon data={Magnifier} className={b('end')} size={24} />;\n}\n\nexport function Suggest() {\n const provider: ISearchProvider | null = useProvider();\n const suggest = useRef<SearchSuggestApi>(null);\n const isSearchHidden = useInterface('search');\n\n const [modalOpen, setModalOpen] = useState<boolean>(false);\n const [modalQuery, setModalQuery] = useState<string>('');\n\n const neuroExpertProjectId = useNeuroExpert()?.projectId;\n\n const onAiAction = useMemo(\n () =>\n neuroExpertProjectId\n ? (query: string) => {\n setModalQuery(query);\n setModalOpen(true);\n }\n : undefined,\n [neuroExpertProjectId],\n );\n\n const onModalClose = useCallback(() => {\n setModalOpen(false);\n }, []);\n\n const onFocus = useCallback(() => {\n updateRootClassName({focusSearch: true});\n }, []);\n\n const onBlur = useCallback(() => {\n updateRootClassName({focusSearch: false});\n setTimeout(() => {\n if (suggest.current) {\n suggest.current.close();\n }\n }, 100);\n }, []);\n\n if (!provider || isSearchHidden) {\n return null;\n }\n\n return (\n <>\n <SearchSuggest\n ref={suggest}\n provider={provider}\n onFocus={onFocus}\n onBlur={onBlur}\n endContent={<SearchButton />}\n className={b('input')}\n classNameContainer={`${b()} ${onAiAction ? b('with-ai') : ''}`}\n classNameClose={b('close')}\n closeButton={true}\n startContent={onAiAction ? <AiIcon /> : undefined}\n focusFirstSearchResult={Boolean(onAiAction)}\n onAiAction={onAiAction}\n />\n {neuroExpertProjectId && (\n <NeuroExpertModal\n open={modalOpen}\n query={modalQuery}\n projectId={neuroExpertProjectId}\n onClose={onModalClose}\n />\n )}\n </>\n );\n}\n","import type {ComponentType, ReactNode} from 'react';\nimport type {NavigationData, NavigationItemModel} from '@gravity-ui/page-constructor';\nimport type {DocBasePageData} from '@diplodoc/components';\nimport type {WithNavigation} from '../App';\nimport type {Props as HeaderControlsProps} from '../HeaderControls';\n\nimport {useMemo} from 'react';\nimport {\n ControlSizes,\n CustomNavigation,\n MobileDropdown,\n NavigationDropdown,\n NavigationLabel,\n} from '@diplodoc/components';\n\nimport {HEADER_HEIGHT} from '../../constants';\nimport {useRouter, useSearch} from '../';\n\nfunction findItem(right: NavigationItemModel[], left: NavigationItemModel[], type: string) {\n return right.some((item) => item.type === type) || left.some((item) => item.type === type);\n}\n\ntype NavigationDataWithOptionalLogo = Omit<NavigationData, 'logo'> & {\n logo?: NavigationData['logo'];\n};\n\nconst EmptyNavigation = {} as NavigationData;\nconst EmptyHeader = {} as NavigationData['header'];\nconst EmptyLeftItems = [] as NavigationItemModel[];\nconst EmptyRightItems = [] as NavigationItemModel[];\n\nexport const useNavigation = (\n data: DocBasePageData<WithNavigation>,\n controls: HeaderControlsProps,\n CustomControls: ComponentType<{}>,\n CustomSuggest: () => ReactNode,\n viewerInterface?: Record<string, boolean>,\n): {\n custom: Record<string, ComponentType<any> | (() => ReactNode)>;\n layout?: {\n header: {leftItems: NavigationItemModel[]};\n renderNavigation: () => ReactNode;\n logo: NavigationData['logo'];\n };\n withControls: boolean;\n} => {\n const {toc} = data;\n const navigation = toc.navigation || EmptyNavigation;\n const {header = EmptyHeader, logo} = navigation as NavigationDataWithOptionalLogo;\n const {leftItems = EmptyLeftItems, rightItems = EmptyRightItems} =\n header as NavigationData['header'];\n\n const withControls = findItem(rightItems, leftItems, 'controls');\n const withSearch = findItem(rightItems, leftItems, 'search');\n\n const search = useSearch();\n const router = useRouter();\n\n if (search && !withSearch) {\n rightItems.unshift({type: 'search'} as unknown as NavigationItemModel);\n }\n\n const navigationData = useMemo(\n () => ({\n withBorder: true,\n leftItems: leftItems,\n rightItems: rightItems,\n customMobileHeaderItems: [{type: 'search'} as unknown as NavigationItemModel],\n }),\n [leftItems, rightItems],\n );\n const navigationTocData = useMemo(\n () => ({\n toc,\n router,\n headerHeight: HEADER_HEIGHT,\n }),\n [toc, router],\n );\n const mobileControlsData = useMemo(\n () => ({\n controlSize: ControlSizes.L,\n userSettings: controls,\n viewerInterface,\n }),\n [controls, viewerInterface],\n );\n\n const layout = useMemo(\n () =>\n EmptyNavigation === navigation\n ? undefined\n : {\n header: {\n leftItems: [],\n },\n renderNavigation: () => (\n <CustomNavigation\n logo={{...logo, icon: logo?.icon ?? ''}}\n data={navigationData}\n navigationTocData={navigationTocData}\n mobileControlsData={mobileControlsData}\n />\n ),\n logo: {...logo, icon: logo?.icon ?? ''},\n },\n [navigationData, navigationTocData, mobileControlsData, logo, navigation],\n );\n\n const config = useMemo(\n () => ({\n custom: {\n search: CustomSuggest,\n controls: CustomControls,\n MobileDropdown: MobileDropdown,\n label: NavigationLabel,\n dropdown: NavigationDropdown,\n },\n layout,\n withControls,\n }),\n [CustomSuggest, CustomControls, layout, withControls],\n );\n\n return config;\n};\n","import type {DocBasePageData} from '@diplodoc/components';\nimport type {PageData} from './index';\nimport type {Props as HeaderControlsProps} from '../HeaderControls';\nimport type {Settings} from '../../utils';\n\nimport {createContext, useContext} from 'react';\n\nexport type CustomPageProps = Settings & Partial<HeaderControlsProps>;\n\nexport interface PageContextProps {\n data: DocBasePageData & PageData;\n props: CustomPageProps;\n hasLayout: boolean;\n}\n\nconst PageContext = createContext<PageContextProps | null>(null);\n\nexport const PageProvider = PageContext.Provider;\n\nexport function usePageContext() {\n const context = useContext(PageContext);\n\n if (!context) {\n throw new Error('usePageContext must be used within PageProvider');\n }\n\n return context;\n}\n","import type {FC, PropsWithChildren} from 'react';\n\nimport {Children, isValidElement} from 'react';\nimport block from 'bem-cn-lite';\n\nimport './Layout.scss';\n\nconst b = block('Layout');\n\nfunction Header() {\n return null;\n}\n\nfunction Content() {\n return null;\n}\n\nfunction Footer() {\n return null;\n}\n\ntype LayoutStatics = {\n Header: FC<PropsWithChildren>;\n Content: FC<PropsWithChildren>;\n Footer: FC<PropsWithChildren>;\n};\n\ntype LayoutProps = {\n doc?: boolean;\n headerHeight?: number;\n};\n\nconst defaults = {\n doc: false,\n};\n\nexport const Layout: LayoutStatics & FC<PropsWithChildren<LayoutProps>> = (props) => {\n const {children, doc, headerHeight = 0} = {...defaults, ...props};\n let header, content, footer;\n\n Children.forEach(children, (child) => {\n if (!isValidElement<PropsWithChildren>(child)) {\n return;\n }\n\n switch (child.type) {\n case Header:\n header = child.props.children;\n break;\n case Content:\n content = child.props.children;\n break;\n case Footer:\n footer = child.props.children;\n break;\n }\n });\n\n return (\n <div className={b({'full-header': headerHeight > 0})}>\n {header && <div className={b('header')}>{header}</div>}\n <div className={b('body')}>\n {content && <div className={b('content')}>{content}</div>}\n {footer && <div className={b('footer', {doc})}>{footer}</div>}\n </div>\n </div>\n );\n};\n\nLayout.displayName = 'Layout';\n\nLayout.Header = Header;\nLayout.Content = Content;\nLayout.Footer = Footer;\n","import type {PropsWithChildren} from 'react';\nimport type {PageContent} from '@gravity-ui/page-constructor';\n\nimport block from 'bem-cn-lite';\nimport {\n BackgroundMedia,\n Col,\n ConstructorBlocks,\n Grid,\n Row,\n getThemedValue,\n useTheme,\n} from '@gravity-ui/page-constructor';\n\nconst bPC = block('pc-page-constructor');\nconst bPCRow = block('pc-constructor-row');\n\nexport const ConstructorRow = ({children}: PropsWithChildren) =>\n children ? (\n <Row className={bPCRow()}>\n <Col>{children}</Col>\n </Row>\n ) : null;\n\nexport function ConstructorPage({background, blocks}: PageContent) {\n const theme = useTheme();\n const themedBackground = getThemedValue(background, theme);\n\n return (\n <div className={bPC('docs')}>\n <div className={bPC('wrapper')}>\n {blocks && themedBackground && (\n <BackgroundMedia {...themedBackground} className={bPC('background')} />\n )}\n <Grid>\n <ConstructorRow>\n <ConstructorBlocks items={blocks} />\n </ConstructorRow>\n </Grid>\n </div>\n </div>\n );\n}\n","import type {FormattedSearchResultData, SearchProviderExtended, SearchResultData} from './types';\n\nimport {type FC, useCallback, useEffect, useMemo, useRef, useState} from 'react';\nimport {SearchPage, TagsFilter} from '@diplodoc/components';\nimport block from 'bem-cn-lite';\n\nimport {useSearch} from '../index';\nimport {useRouter} from '../Router';\n\nimport {useProvider} from './useProvider';\nimport {buildSearchParams, parseSearchParams} from './searchParams';\nimport './Page.scss';\n\nconst b = block('Search');\n\nfunction setUrlParams(query: string, page: number, tags: string[]) {\n const params = buildSearchParams(query, page, tags);\n const url = params ? `?${params}` : window.location.pathname;\n\n window.history.pushState({}, '', url);\n}\n\nfunction formatResults(searchResults: SearchResultData[]): FormattedSearchResultData {\n if (!Array.isArray(searchResults)) {\n return [];\n }\n\n return searchResults.map((result) => ({\n title: result?.title || result?.hierarchy?.lvl0 || result?.hierarchy?.lvl1 || '',\n url: result?.url || result?.link || '#',\n description: result?.description || result?.content || result?.text || '',\n section: result?.section || result?.hierarchy?.lvl1 || '',\n }));\n}\n\nconst ITEMS_PER_PAGE = 10;\n\nexport const Page: FC = () => {\n const provider = useProvider();\n const router = useRouter();\n const search = useSearch();\n\n const [query, setQuery] = useState<string>('');\n const [selectedTags, setSelectedTags] = useState<string[]>([]);\n const [page, setPage] = useState<number>(1);\n const [results, setResults] = useState<FormattedSearchResultData>([]);\n const [total, setTotal] = useState<number>(0);\n const [loading, setLoading] = useState<boolean>(false);\n\n const providerRef = useRef<SearchProviderExtended | null>(null);\n\n useEffect(() => {\n providerRef.current = provider as SearchProviderExtended;\n provider?.init?.();\n }, [provider]);\n\n useEffect(() => {\n const {query: q, page: p, tags} = parseSearchParams(window.location.search);\n\n setQuery(q);\n setPage(p);\n setSelectedTags(tags);\n }, [router]);\n\n useEffect(() => {\n let cancelled = false;\n const hasRequest = Boolean(query.trim() || selectedTags.length);\n\n if (hasRequest && providerRef.current) {\n setLoading(true);\n\n providerRef.current\n .search(query, page, ITEMS_PER_PAGE, selectedTags)\n .then((searchResults) => {\n if (cancelled) {\n return;\n }\n\n const {items, total} = searchResults;\n const formatted = formatResults(items ?? []);\n\n setResults(formatted);\n setTotal(total);\n })\n .catch(() => {\n if (cancelled) {\n return;\n }\n\n setResults([]);\n setTotal(0);\n })\n .finally(() => {\n if (!cancelled) {\n setLoading(false);\n }\n });\n } else {\n setResults([]);\n setTotal(0);\n setLoading(false);\n }\n\n return () => {\n cancelled = true;\n };\n }, [query, page, provider, selectedTags]);\n\n const handlePageChange = useCallback(\n (newPage: number) => {\n setUrlParams(query, newPage, selectedTags);\n setPage(newPage);\n },\n [query, selectedTags],\n );\n\n const handleQueryChange = useCallback(\n (newQuery: string) => {\n setUrlParams(newQuery, 1, selectedTags);\n setQuery(newQuery);\n setPage(1);\n },\n [selectedTags],\n );\n\n const handleTagsChange = useCallback(\n (tags: string[]) => {\n setUrlParams(query, 1, tags);\n setSelectedTags(tags);\n setPage(1);\n },\n [query],\n );\n\n const availableTags = useMemo(\n () => [...new Set((search?.tags || []).filter((tag) => !tag.startsWith('_')))],\n [search?.tags],\n );\n const hasRequest = Boolean(query.trim() || selectedTags.length);\n\n return (\n <div className={b()}>\n <SearchPage\n query={query}\n items={results}\n page={page}\n totalItems={total}\n onPageChange={handlePageChange}\n onSubmit={handleQueryChange}\n loading={loading}\n hasRequest={hasRequest}\n filters={\n availableTags.length ? (\n <TagsFilter\n tags={availableTags}\n selectedTags={selectedTags}\n onChange={handleTagsChange}\n />\n ) : null\n }\n />\n </div>\n );\n};\n","import type {ReactElement} from 'react';\nimport type {SearchConfig, SearchData, WorkerApi, WorkerConfig} from './types';\n\nimport {createContext, useContext, useEffect} from 'react';\nimport {ThemeProvider} from '@gravity-ui/uikit';\nimport {Lang, SUPPORTED_LANGS, configure} from '@diplodoc/components';\n\nimport {RouterProvider} from '../Router';\nimport {LangProvider} from '../../hooks/useLang';\nimport {getDirection, updateRootClassName, updateThemeClassName} from '../../utils';\nimport {useSettings} from '../App/useSettings';\nimport {useMobile} from '../App/useMobile';\n\nimport {Page} from './Page';\n\nexport type {SearchConfig, WorkerConfig, WorkerApi};\n\nexport const SearchContext = createContext<SearchConfig | SearchData | null | undefined>(null);\n\nSearchContext.displayName = 'SearchContext';\n\nexport const SearchProvider = SearchContext.Provider;\n\nexport interface SearchProps {\n data: SearchConfig;\n url: URL;\n}\n\nexport function Search(props: SearchProps): ReactElement {\n const {data, url} = props;\n\n const searchData = data.search;\n const lang = (searchData?.lang as Lang) || Lang.En;\n const settings = useSettings();\n const mobileView = useMobile();\n const fixedLang = SUPPORTED_LANGS.includes(lang) ? lang : Lang.En;\n const direction = getDirection(fixedLang);\n\n configure({\n lang: fixedLang,\n localeCode: fixedLang,\n });\n\n const routerConfig = {\n pathname: url.pathname,\n depth: 3,\n };\n\n const {theme, wideFormat} = settings;\n\n useEffect(() => {\n updateRootClassName({mobileView, wideFormat});\n updateThemeClassName({theme});\n }, [theme, mobileView, wideFormat]);\n\n return (\n <ThemeProvider theme={theme} direction={direction}>\n <LangProvider value={fixedLang}>\n <RouterProvider value={routerConfig}>\n <SearchProvider value={searchData}>\n <Page />\n </SearchProvider>\n </RouterProvider>\n </LangProvider>\n </ThemeProvider>\n );\n}\n\nexport function useSearch() {\n return useContext(SearchContext);\n}\n","import type {SearchConfig} from './components/Search';\n\nimport {createRoot} from 'react-dom/client';\n\nimport {Search} from './components/Search';\n\nconst root = document.getElementById('root');\n\nif (!root) {\n throw new Error('Root element not found!');\n}\n\nconst data = window.__DATA__ as SearchConfig;\nconst searchConfig = data || {};\nsearchConfig.depth = searchConfig.depth || 3;\n\nconst url = new URL(window.location.href);\n\nconst props = {\n data,\n url,\n};\n\ncreateRoot(root).render(<Search {...props} />);\n","export default function () {}\n","// getDefaultExport function for compatibility with non-ESM modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};\n","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n __webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => { def[key] = () => (value[key]) });\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(\n\t\tObject.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t\t__webpack_require__.f[key](chunkId, promises);\n\t\t\treturn promises;\n\t\t}, [])\n\t);\n};","// This function allow to reference chunks\n__webpack_require__.k = (chunkId) => {\n // return url for filenames not based on template\n \n // return url for filenames based on template\n return \"\" + chunkId + \"-\" + \"e43658c1c6d9f673\" + \".css\"\n}","// This function allow to reference chunks\n__webpack_require__.u = (chunkId) => {\n // return url for filenames not based on template\n \n // return url for filenames based on template\n return \"\" + chunkId + \"-\" + {\"189\": \"5cb382a08b27d506\",\"976\": \"9ad44c68ef5c59fb\",}[chunkId] + \".js\"\n}","__webpack_require__.g = (() => {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\n\nvar uniqueName = \"@diplodoc/client:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function (url, done, key, chunkId) {\n\tif (inProgress[url]) {\n\t\tinProgress[url].push(done);\n\t\treturn;\n\t}\n\tvar script, needAttach;\n\tif (key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor (var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif (s.getAttribute(\"src\") == url || s.getAttribute(\"data-rspack\") == uniqueName + key) {\n\t\t\t\tscript = s;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif (!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\nscript.timeout = 120;\nif (__webpack_require__.nc) {\n script.setAttribute(\"nonce\", __webpack_require__.nc);\n}\n\nscript.setAttribute(\"data-rspack\", uniqueName + key);\n\n\n\nscript.src = url;\n\n\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function (prev, event) {\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns &&\n\t\t\tdoneFns.forEach(function (fn) {\n\t\t\t\treturn fn(event);\n\t\t\t});\n\t\tif (prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(\n\t\tonScriptComplete.bind(null, undefined, {\n\t\t\ttype: 'timeout',\n\t\t\ttarget: script\n\t\t}),\n\t\t120000\n\t);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};\n","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n module.paths = [];\n if (!module.children) module.children = [];\n return module;\n};","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif (chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor (var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--)\n\t\t\tdeferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif (\n\t\t\t\t(priority & (1 === 0) || notFulfilled >= priority) &&\n\t\t\t\tObject.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))\n\t\t\t) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif (priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif (fulfilled) {\n\t\t\tdeferred.splice(i--, 1);\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};\n","__webpack_require__.rv = () => (\"1.7.4\")","__webpack_require__.j = \"328\";","var scriptUrl;\n\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n // Technically we could use `document.currentScript instanceof window.HTMLScriptElement`,\n // but an attacker could try to inject `<script>HTMLScriptElement = HTMLImageElement</script>`\n // and use `<img name=\"currentScript\" src=\"https://attacker.controlled.server/\"></img>`\n if (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT') scriptUrl = document.currentScript.src;\n if (!scriptUrl) {\n var scripts = document.getElementsByTagName(\"script\");\n if (scripts.length) {\n var i = scripts.length - 1;\n while (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n }\n }\n}\n\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\",\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.',\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n\n__webpack_require__.p = scriptUrl;\n","__webpack_require__.ruid = \"bundler=rspack@1.7.4\";"],"names":["e","matches","Element","selector","th","Array","document","el","TextDirection","RouterContext","createContext","RouterProvider","useRouter","useContext","LangContext","Lang","LangProvider","DEFAULT_USER_SETTINGS","Theme","TextSizes","RTL_LANGS","isBrowser","updateThemeClassName","param","theme","updateRootClassName","states","toggle","name","state","Boolean","Object","getDirection","lang","isRTL","Set","LINK_KEYS_LEADING_CONFIG","toBoolean","str","getMobileView","getSetting","sessionStorage","useSettings","textSize","showMiniToc","wideFormat","fullScreen","settings","useSetting","useMemo","_useState","setting","setSetting","onChangeSetting","settingName","onChange","value","String","_obj","string","ch","useMobile","mobileView","setMobileView","onResizeHandler","useCallback","useEffect","window","NeuroExpertContext","HeaderControls","memo","onChangeTheme","onChangeTextSize","onChangeWideFormat","onChangeShowMiniToc","langs","onChangeLang","availableLangs","ControlsLayout","ControlSizes","Controls","HeaderControlsContext","HeaderControlsProvider","decodeTag","tag","decodeURIComponent","buildSearchParams","query","page","tags","params","encodeURIComponent","DefaultSearchProvider","config","worker","match","url","blob","Worker","URL","error","_instanceof","DOMException","BAD_ORIGIN_ERROR","Blob","request","buildSearchLink","base","searchParams","suggest","search","count","request1","message","channel","MessageChannel","Promise","resolve","reject","useProvider","_useContext","depth","SearchContext","provider","setProvider","block","PageContext","PageProvider","b","Header","Content","Footer","defaults","Layout","props","header","content","footer","_$_object_spread","children","doc","headerHeight","Children","child","isValidElement","setUrlParams","Page","router","useSearch","setQuery","_useState1","selectedTags","setSelectedTags","_useState2","setPage","_useState3","results","setResults","_useState4","total","setTotal","_useState5","loading","setLoading","providerRef","useRef","_search_replace_split_find","_parseSearchParams","URLSearchParams","normalizeTags","seen","_iteratorError","rawTags","part","Number","q","p","cancelled","hasRequest","searchResults","items","result","_result_hierarchy","_result_hierarchy1","_result_hierarchy2","handlePageChange","newPage","handleQueryChange","newQuery","handleTagsChange","availableTags","SearchPage","TagsFilter","SearchProvider","root","Error","data","searchConfig","createRoot","searchData","fixedLang","SUPPORTED_LANGS","direction","configure","routerConfig","ThemeProvider","Search","l","globalThis","Function","clearTimeout","setTimeout","Symbol","t","r","h","self"],"mappings":"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"}
@@ -483,6 +483,7 @@ var _instanceof = __webpack_require__(53750);
483
483
  var _ts_generator = __webpack_require__(51735);
484
484
  ;// CONCATENATED MODULE: ./src/components/Search/searchParams.ts
485
485
 
486
+ var MAX_TAG_LENGTH = 32;
486
487
  function decodeTag(tag) {
487
488
  try {
488
489
  return decodeURIComponent(tag.replaceAll('+', ' '));
@@ -490,6 +491,34 @@ function decodeTag(tag) {
490
491
  return tag.replaceAll('+', ' ');
491
492
  }
492
493
  }
494
+ function normalizeTags() {
495
+ var tags = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
496
+ var seen = new Set();
497
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
498
+ try {
499
+ for(var _iterator = tags[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
500
+ var tag = _step.value;
501
+ var value = Array.from(tag.trim().toLowerCase()).slice(0, MAX_TAG_LENGTH).join('');
502
+ if (value && !value.startsWith('_')) {
503
+ seen.add(value);
504
+ }
505
+ }
506
+ } catch (err) {
507
+ _didIteratorError = true;
508
+ _iteratorError = err;
509
+ } finally{
510
+ try {
511
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
512
+ _iterator.return();
513
+ }
514
+ } finally{
515
+ if (_didIteratorError) {
516
+ throw _iteratorError;
517
+ }
518
+ }
519
+ }
520
+ return _to_consumable_array(seen);
521
+ }
493
522
  function searchParams_buildSearchParams(query) {
494
523
  var page = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1, tags = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [];
495
524
  var params = [];
@@ -510,11 +539,11 @@ function searchParams_parseSearchParams(search) {
510
539
  var rawTags = (_search_replace_split_find = search.replace(/^\?/, '').split('&').find(function(part) {
511
540
  return part.startsWith('tags=');
512
541
  })) === null || _search_replace_split_find === void 0 ? void 0 : _search_replace_split_find.slice('tags='.length);
513
- var tags = (rawTags || '').split(',').filter(Boolean).map(decodeTag);
542
+ var tags = normalizeTags((rawTags || '').split(',').filter(Boolean).map(decodeTag));
514
543
  return {
515
544
  query: params.get('query') || '',
516
545
  page: Number(params.get('page')) || 1,
517
- tags: _to_consumable_array(new Set(tags))
546
+ tags: tags
518
547
  };
519
548
  }
520
549
 
@@ -875,7 +904,9 @@ var Page_Page = function() {
875
904
  query
876
905
  ]);
877
906
  var availableTags = useMemo(function() {
878
- return _to_consumable_array(new Set((search === null || search === void 0 ? void 0 : search.tags) || []));
907
+ return _to_consumable_array(new Set(((search === null || search === void 0 ? void 0 : search.tags) || []).filter(function(tag) {
908
+ return !tag.startsWith('_');
909
+ })));
879
910
  }, [
880
911
  search === null || search === void 0 ? void 0 : search.tags
881
912
  ]);