@dartcom/ui-kit 10.2.27 → 10.2.28

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.
package/dist/index.esm.js CHANGED
@@ -20,7 +20,7 @@ import*as e from"react";import t,{forwardRef as n,useRef as i,useCallback as r,u
20
20
  object-assign
21
21
  (c) Sindre Sorhus
22
22
  @license MIT
23
- */function wm(){if(lm)return am;lm=1;var e=Object.getOwnPropertySymbols,t=Object.prototype.hasOwnProperty,n=Object.prototype.propertyIsEnumerable;return am=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;var i=Object.getOwnPropertyNames(t).map(function(e){return t[e]});if("0123456789"!==i.join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(i,r){for(var s,o,a=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(i),l=1;l<arguments.length;l++){for(var u in s=Object(arguments[l]))t.call(s,u)&&(a[u]=s[u]);if(e){o=e(s);for(var c=0;c<o.length;c++)n.call(s,o[c])&&(a[o[c]]=s[o[c]])}}return a},am}function Em(){if(cm)return um;cm=1;return um="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}function Am(){return dm?hm:(dm=1,hm=Function.call.bind(Object.prototype.hasOwnProperty))}function Tm(){if(pm)return fm;pm=1;var e=function(){};if("production"!==process.env.NODE_ENV){var t=Em(),n={},i=Am();e=function(e){var t="Warning: "+e;"undefined"!=typeof console&&console.error(t);try{throw new Error(t)}catch(e){}}}function r(r,s,o,a,l){if("production"!==process.env.NODE_ENV)for(var u in r)if(i(r,u)){var c;try{if("function"!=typeof r[u]){var h=Error((a||"React class")+": "+o+" type `"+u+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof r[u]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw h.name="Invariant Violation",h}c=r[u](s,u,a,o,null,t)}catch(e){c=e}if(!c||c instanceof Error||e((a||"React class")+": type specification of "+o+" `"+u+"` is invalid; the type checker function must return `null` or an `Error` but returned a "+typeof c+". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument)."),c instanceof Error&&!(c.message in n)){n[c.message]=!0;var d=l?l():"";e("Failed "+o+" type: "+c.message+(null!=d?d:""))}}}return r.resetWarningCache=function(){"production"!==process.env.NODE_ENV&&(n={})},fm=r}function Sm(){if(_m)return mm;_m=1;var e=xm(),t=wm(),n=Em(),i=Am(),r=Tm(),s=function(){};function o(){return null}return"production"!==process.env.NODE_ENV&&(s=function(e){var t="Warning: "+e;"undefined"!=typeof console&&console.error(t);try{throw new Error(t)}catch(e){}}),mm=function(a,l){var u="function"==typeof Symbol&&Symbol.iterator;var c="<<anonymous>>",h={array:m("array"),bigint:m("bigint"),bool:m("boolean"),func:m("function"),number:m("number"),object:m("object"),string:m("string"),symbol:m("symbol"),any:p(o),arrayOf:function(e){return p(function(t,i,r,s,o){if("function"!=typeof e)return new f("Property `"+o+"` of component `"+r+"` has invalid PropType notation inside arrayOf.");var a=t[i];if(!Array.isArray(a))return new f("Invalid "+s+" `"+o+"` of type `"+y(a)+"` supplied to `"+r+"`, expected an array.");for(var l=0;l<a.length;l++){var u=e(a,l,r,s,o+"["+l+"]",n);if(u instanceof Error)return u}return null})},element:p(function(e,t,n,i,r){var s=e[t];return a(s)?null:new f("Invalid "+i+" `"+r+"` of type `"+y(s)+"` supplied to `"+n+"`, expected a single ReactElement.")}),elementType:p(function(t,n,i,r,s){var o=t[n];return e.isValidElementType(o)?null:new f("Invalid "+r+" `"+s+"` of type `"+y(o)+"` supplied to `"+i+"`, expected a single ReactElement type.")}),instanceOf:function(e){return p(function(t,n,i,r,s){if(!(t[n]instanceof e)){var o=e.name||c;return new f("Invalid "+r+" `"+s+"` of type `"+(((a=t[n]).constructor&&a.constructor.name?a.constructor.name:c)+"` supplied to `")+i+"`, expected instance of `"+o+"`.")}var a;return null})},node:p(function(e,t,n,i,r){return g(e[t])?null:new f("Invalid "+i+" `"+r+"` supplied to `"+n+"`, expected a ReactNode.")}),objectOf:function(e){return p(function(t,r,s,o,a){if("function"!=typeof e)return new f("Property `"+a+"` of component `"+s+"` has invalid PropType notation inside objectOf.");var l=t[r],u=y(l);if("object"!==u)return new f("Invalid "+o+" `"+a+"` of type `"+u+"` supplied to `"+s+"`, expected an object.");for(var c in l)if(i(l,c)){var h=e(l,c,s,o,a+"."+c,n);if(h instanceof Error)return h}return null})},oneOf:function(e){if(!Array.isArray(e))return"production"!==process.env.NODE_ENV&&s(arguments.length>1?"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]).":"Invalid argument supplied to oneOf, expected an array."),o;return p(function(t,n,i,r,s){for(var o=t[n],a=0;a<e.length;a++)if(d(o,e[a]))return null;var l=JSON.stringify(e,function(e,t){return"symbol"===v(t)?String(t):t});return new f("Invalid "+r+" `"+s+"` of value `"+String(o)+"` supplied to `"+i+"`, expected one of "+l+".")})},oneOfType:function(e){if(!Array.isArray(e))return"production"!==process.env.NODE_ENV&&s("Invalid argument supplied to oneOfType, expected an instance of array."),o;for(var t=0;t<e.length;t++){var r=e[t];if("function"!=typeof r)return s("Invalid argument supplied to oneOfType. Expected an array of check functions, but received "+b(r)+" at index "+t+"."),o}return p(function(t,r,s,o,a){for(var l=[],u=0;u<e.length;u++){var c=(0,e[u])(t,r,s,o,a,n);if(null==c)return null;c.data&&i(c.data,"expectedType")&&l.push(c.data.expectedType)}return new f("Invalid "+o+" `"+a+"` supplied to `"+s+"`"+(l.length>0?", expected one of type ["+l.join(", ")+"]":"")+".")})},shape:function(e){return p(function(t,i,r,s,o){var a=t[i],l=y(a);if("object"!==l)return new f("Invalid "+s+" `"+o+"` of type `"+l+"` supplied to `"+r+"`, expected `object`.");for(var u in e){var c=e[u];if("function"!=typeof c)return _(r,s,o,u,v(c));var h=c(a,u,r,s,o+"."+u,n);if(h)return h}return null})},exact:function(e){return p(function(r,s,o,a,l){var u=r[s],c=y(u);if("object"!==c)return new f("Invalid "+a+" `"+l+"` of type `"+c+"` supplied to `"+o+"`, expected `object`.");var h=t({},r[s],e);for(var d in h){var p=e[d];if(i(e,d)&&"function"!=typeof p)return _(o,a,l,d,v(p));if(!p)return new f("Invalid "+a+" `"+l+"` key `"+d+"` supplied to `"+o+"`.\nBad object: "+JSON.stringify(r[s],null," ")+"\nValid keys: "+JSON.stringify(Object.keys(e),null," "));var m=p(u,d,o,a,l+"."+d,n);if(m)return m}return null})}};function d(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}function f(e,t){this.message=e,this.data=t&&"object"==typeof t?t:{},this.stack=""}function p(e){if("production"!==process.env.NODE_ENV)var t={},i=0;function r(r,o,a,u,h,d,p){if(u=u||c,d=d||a,p!==n){if(l){var m=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");throw m.name="Invariant Violation",m}if("production"!==process.env.NODE_ENV&&"undefined"!=typeof console){var _=u+":"+a;!t[_]&&i<3&&(s("You are manually calling a React.PropTypes validation function for the `"+d+"` prop on `"+u+"`. 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."),t[_]=!0,i++)}}return null==o[a]?r?null===o[a]?new f("The "+h+" `"+d+"` is marked as required in `"+u+"`, but its value is `null`."):new f("The "+h+" `"+d+"` is marked as required in `"+u+"`, but its value is `undefined`."):null:e(o,a,u,h,d)}var o=r.bind(null,!1);return o.isRequired=r.bind(null,!0),o}function m(e){return p(function(t,n,i,r,s,o){var a=t[n];return y(a)!==e?new f("Invalid "+r+" `"+s+"` of type `"+v(a)+"` supplied to `"+i+"`, expected `"+e+"`.",{expectedType:e}):null})}function _(e,t,n,i,r){return new f((e||"React class")+": "+t+" type `"+n+"."+i+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+r+"`.")}function g(e){switch(typeof e){case"number":case"string":case"undefined":return!0;case"boolean":return!e;case"object":if(Array.isArray(e))return e.every(g);if(null===e||a(e))return!0;var t=function(e){var t=e&&(u&&e[u]||e["@@iterator"]);if("function"==typeof t)return t}(e);if(!t)return!1;var n,i=t.call(e);if(t!==e.entries){for(;!(n=i.next()).done;)if(!g(n.value))return!1}else for(;!(n=i.next()).done;){var r=n.value;if(r&&!g(r[1]))return!1}return!0;default:return!1}}function y(e){var t=typeof e;return Array.isArray(e)?"array":e instanceof RegExp?"object":function(e,t){return"symbol"===e||!!t&&("Symbol"===t["@@toStringTag"]||"function"==typeof Symbol&&t instanceof Symbol)}(t,e)?"symbol":t}function v(e){if(null==e)return""+e;var t=y(e);if("object"===t){if(e instanceof Date)return"date";if(e instanceof RegExp)return"regexp"}return t}function b(e){var t=v(e);switch(t){case"array":case"object":return"an "+t;case"boolean":case"date":case"regexp":return"a "+t;default:return t}}return f.prototype=Error.prototype,h.checkPropTypes=r,h.resetWarningCache=r.resetWarningCache,h.PropTypes=h,h},mm}function km(){if(ym)return gm;ym=1;var e=Em();function t(){}function n(){}return n.resetWarningCache=t,gm=function(){function i(t,n,i,r,s,o){if(o!==e){var a=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");throw a.name="Invariant Violation",a}}function r(){return i}i.isRequired=i;var s={array:i,bigint:i,bool:i,func:i,number:i,object:i,string:i,symbol:i,any:i,arrayOf:r,element:i,elementType:i,instanceOf:r,node:i,objectOf:r,oneOf:r,oneOfType:r,shape:r,exact:r,checkPropTypes:n,resetWarningCache:t};return s.PropTypes=s,s},gm}function Om(){if(vm)return nm.exports;if(vm=1,"production"!==process.env.NODE_ENV){var e=xm();nm.exports=Sm()(e.isElement,true)}else nm.exports=km()();return nm.exports}var Pm,Cm={exports:{}};var Rm,Mm={},Nm={};function Lm(){if(Rm)return Nm;return Rm=1,Object.defineProperty(Nm,"__esModule",{value:!0}),Nm.dontSetMe=function(e,t,n){if(e[t])return new Error(`Invalid prop ${t} passed to ${n} - do not set this, set it on the child.`)},Nm.findInArray=function(e,t){for(let n=0,i=e.length;n<i;n++)if(t.apply(t,[e[n],n,e]))return e[n]},Nm.int=function(e){return parseInt(e,10)},Nm.isFunction=function(e){return"function"==typeof e||"[object Function]"===Object.prototype.toString.call(e)},Nm.isNum=function(e){return"number"==typeof e&&!isNaN(e)},Nm}var zm,Dm,Im={};function Fm(){if(Dm)return Mm;Dm=1,Object.defineProperty(Mm,"__esModule",{value:!0}),Mm.addClassName=o,Mm.addEvent=function(e,t,n,i){if(!e)return;const r={capture:!0,...i};e.addEventListener?e.addEventListener(t,n,r):e.attachEvent?e.attachEvent("on"+t,n):e["on"+t]=n},Mm.addUserSelectStyles=function(e){if(!e)return;let t=e.getElementById("react-draggable-style-el");t||(t=e.createElement("style"),t.type="text/css",t.id="react-draggable-style-el",t.innerHTML=".react-draggable-transparent-selection *::-moz-selection {all: inherit;}\n",t.innerHTML+=".react-draggable-transparent-selection *::selection {all: inherit;}\n",e.getElementsByTagName("head")[0].appendChild(t));e.body&&o(e.body,"react-draggable-transparent-selection")},Mm.createCSSTransform=function(e,n){const i=r(e,n,"px");return{[(0,t.browserPrefixToKey)("transform",t.default)]:i}},Mm.createSVGTransform=function(e,t){return r(e,t,"")},Mm.getTouch=function(t,n){return t.targetTouches&&(0,e.findInArray)(t.targetTouches,e=>n===e.identifier)||t.changedTouches&&(0,e.findInArray)(t.changedTouches,e=>n===e.identifier)},Mm.getTouchIdentifier=function(e){if(e.targetTouches&&e.targetTouches[0])return e.targetTouches[0].identifier;if(e.changedTouches&&e.changedTouches[0])return e.changedTouches[0].identifier},Mm.getTranslation=r,Mm.innerHeight=function(t){let n=t.clientHeight;const i=t.ownerDocument.defaultView.getComputedStyle(t);return n-=(0,e.int)(i.paddingTop),n-=(0,e.int)(i.paddingBottom),n},Mm.innerWidth=function(t){let n=t.clientWidth;const i=t.ownerDocument.defaultView.getComputedStyle(t);return n-=(0,e.int)(i.paddingLeft),n-=(0,e.int)(i.paddingRight),n},Mm.matchesSelector=i,Mm.matchesSelectorAndParentsTo=function(e,t,n){let r=e;do{if(i(r,t))return!0;if(r===n)return!1;r=r.parentNode}while(r);return!1},Mm.offsetXYFromParent=function(e,t,n){const i=t===t.ownerDocument.body?{left:0,top:0}:t.getBoundingClientRect(),r=(e.clientX+t.scrollLeft-i.left)/n,s=(e.clientY+t.scrollTop-i.top)/n;return{x:r,y:s}},Mm.outerHeight=function(t){let n=t.clientHeight;const i=t.ownerDocument.defaultView.getComputedStyle(t);return n+=(0,e.int)(i.borderTopWidth),n+=(0,e.int)(i.borderBottomWidth),n},Mm.outerWidth=function(t){let n=t.clientWidth;const i=t.ownerDocument.defaultView.getComputedStyle(t);return n+=(0,e.int)(i.borderLeftWidth),n+=(0,e.int)(i.borderRightWidth),n},Mm.removeClassName=a,Mm.removeEvent=function(e,t,n,i){if(!e)return;const r={capture:!0,...i};e.removeEventListener?e.removeEventListener(t,n,r):e.detachEvent?e.detachEvent("on"+t,n):e["on"+t]=null},Mm.scheduleRemoveUserSelectStyles=function(e){window.requestAnimationFrame?window.requestAnimationFrame(()=>{s(e)}):s(e)};var e=Lm(),t=function(e,t){if("function"==typeof WeakMap)var n=new WeakMap,i=new WeakMap;return function(e,t){if(!t&&e&&e.__esModule)return e;var r,s,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(r=t?i:n){if(r.has(e))return r.get(e);r.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((s=(r=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(s.get||s.set)?r(o,t,s):o[t]=e[t]);return o}(e,t)}(function(){if(zm)return Im;zm=1,Object.defineProperty(Im,"__esModule",{value:!0}),Im.browserPrefixToKey=n,Im.browserPrefixToStyle=function(e,t){return t?`-${t.toLowerCase()}-${e}`:e},Im.default=void 0,Im.getPrefix=t;const e=["Moz","Webkit","O","ms"];function t(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"transform";if("undefined"==typeof window)return"";const i=window.document?.documentElement?.style;if(!i)return"";if(t in i)return"";for(let r=0;r<e.length;r++)if(n(t,e[r])in i)return e[r];return""}function n(e,t){return t?`${t}${function(e){let t="",n=!0;for(let i=0;i<e.length;i++)n?(t+=e[i].toUpperCase(),n=!1):"-"===e[i]?n=!0:t+=e[i];return t}(e)}`:e}return Im.default=t(),Im}());let n="";function i(t,i){return n||(n=(0,e.findInArray)(["matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector"],function(n){return(0,e.isFunction)(t[n])})),!!(0,e.isFunction)(t[n])&&t[n](i)}function r(e,t,n){let{x:i,y:r}=e,s=`translate(${i}${n},${r}${n})`;if(t){s=`translate(${`${"string"==typeof t.x?t.x:t.x+n}`}, ${`${"string"==typeof t.y?t.y:t.y+n}`})`+s}return s}function s(e){if(e)try{if(e.body&&a(e.body,"react-draggable-transparent-selection"),e.selection)e.selection.empty();else{const t=(e.defaultView||window).getSelection();t&&"Caret"!==t.type&&t.removeAllRanges()}}catch(e){}}function o(e,t){e.classList?e.classList.add(t):e.className.match(new RegExp(`(?:^|\\s)${t}(?!\\S)`))||(e.className+=` ${t}`)}function a(e,t){e.classList?e.classList.remove(t):e.className=e.className.replace(new RegExp(`(?:^|\\s)${t}(?!\\S)`,"g"),"")}return Mm}var jm,Bm={};function Um(){if(jm)return Bm;jm=1,Object.defineProperty(Bm,"__esModule",{value:!0}),Bm.canDragX=function(e){return"both"===e.props.axis||"x"===e.props.axis},Bm.canDragY=function(e){return"both"===e.props.axis||"y"===e.props.axis},Bm.createCoreData=function(t,i,r){const s=!(0,e.isNum)(t.lastX),o=n(t);return s?{node:o,deltaX:0,deltaY:0,lastX:i,lastY:r,x:i,y:r}:{node:o,deltaX:i-t.lastX,deltaY:r-t.lastY,lastX:t.lastX,lastY:t.lastY,x:i,y:r}},Bm.createDraggableData=function(e,t){const n=e.props.scale;return{node:t.node,x:e.state.x+t.deltaX/n,y:e.state.y+t.deltaY/n,deltaX:t.deltaX/n,deltaY:t.deltaY/n,lastX:e.state.x,lastY:e.state.y}},Bm.getBoundPosition=function(i,r,s){if(!i.props.bounds)return[r,s];let{bounds:o}=i.props;o="string"==typeof o?o:function(e){return{left:e.left,top:e.top,right:e.right,bottom:e.bottom}}(o);const a=n(i);if("string"==typeof o){const{ownerDocument:n}=a,i=n.defaultView;let r;if("parent"===o)r=a.parentNode;else{r=a.getRootNode().querySelector(o)}if(!(r instanceof i.HTMLElement))throw new Error('Bounds selector "'+o+'" could not find an element.');const s=r,l=i.getComputedStyle(a),u=i.getComputedStyle(s);o={left:-a.offsetLeft+(0,e.int)(u.paddingLeft)+(0,e.int)(l.marginLeft),top:-a.offsetTop+(0,e.int)(u.paddingTop)+(0,e.int)(l.marginTop),right:(0,t.innerWidth)(s)-(0,t.outerWidth)(a)-a.offsetLeft+(0,e.int)(u.paddingRight)-(0,e.int)(l.marginRight),bottom:(0,t.innerHeight)(s)-(0,t.outerHeight)(a)-a.offsetTop+(0,e.int)(u.paddingBottom)-(0,e.int)(l.marginBottom)}}(0,e.isNum)(o.right)&&(r=Math.min(r,o.right));(0,e.isNum)(o.bottom)&&(s=Math.min(s,o.bottom));(0,e.isNum)(o.left)&&(r=Math.max(r,o.left));(0,e.isNum)(o.top)&&(s=Math.max(s,o.top));return[r,s]},Bm.getControlPosition=function(e,i,r){const s="number"==typeof i?(0,t.getTouch)(e,i):null;if("number"==typeof i&&!s)return null;const o=n(r),a=r.props.offsetParent||o.offsetParent||o.ownerDocument.body;return(0,t.offsetXYFromParent)(s||e,a,r.props.scale)},Bm.snapToGrid=function(e,t,n){const i=Math.round(t/e[0])*e[0],r=Math.round(n/e[1])*e[1];return[i,r]};var e=Lm(),t=Fm();function n(e){const t=e.findDOMNode();if(!t)throw new Error("<DraggableCore>: Unmounted during event!");return t}return Bm}var Vm,Gm,$m,Zm,qm={},Wm={};function Hm(){if(Vm)return Wm;return Vm=1,Object.defineProperty(Wm,"__esModule",{value:!0}),Wm.default=function(){},Wm}function Ym(){if(Gm)return qm;Gm=1,Object.defineProperty(qm,"__esModule",{value:!0}),qm.default=void 0;var e=function(e,t){if("function"==typeof WeakMap)var n=new WeakMap,i=new WeakMap;return function(e,t){if(!t&&e&&e.__esModule)return e;var r,s,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(r=t?i:n){if(r.has(e))return r.get(e);r.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((s=(r=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(s.get||s.set)?r(o,t,s):o[t]=e[t]);return o}(e,t)}(t),n=l(Om()),i=l(y),r=Fm(),s=Um(),o=Lm(),a=l(Hm());function l(e){return e&&e.__esModule?e:{default:e}}function u(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t);if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const c={start:"touchstart",move:"touchmove",stop:"touchend"},h={start:"mousedown",move:"mousemove",stop:"mouseup"};let d=h,f=class extends e.Component{constructor(){super(...arguments),u(this,"dragging",!1),u(this,"lastX",NaN),u(this,"lastY",NaN),u(this,"touchIdentifier",null),u(this,"mounted",!1),u(this,"handleDragStart",e=>{if(this.props.onMouseDown(e),!this.props.allowAnyClick&&"number"==typeof e.button&&0!==e.button)return!1;const t=this.findDOMNode();if(!t||!t.ownerDocument||!t.ownerDocument.body)throw new Error("<DraggableCore> not mounted on DragStart!");const{ownerDocument:n}=t;if(this.props.disabled||!(e.target instanceof n.defaultView.Node)||this.props.handle&&!(0,r.matchesSelectorAndParentsTo)(e.target,this.props.handle,t)||this.props.cancel&&(0,r.matchesSelectorAndParentsTo)(e.target,this.props.cancel,t))return;"touchstart"!==e.type||this.props.allowMobileScroll||e.preventDefault();const i=(0,r.getTouchIdentifier)(e);this.touchIdentifier=i;const o=(0,s.getControlPosition)(e,i,this);if(null==o)return;const{x:l,y:u}=o,c=(0,s.createCoreData)(this,l,u);(0,a.default)("DraggableCore: handleDragStart: %j",c),(0,a.default)("calling",this.props.onStart);!1!==this.props.onStart(e,c)&&!1!==this.mounted&&(this.props.enableUserSelectHack&&(0,r.addUserSelectStyles)(n),this.dragging=!0,this.lastX=l,this.lastY=u,(0,r.addEvent)(n,d.move,this.handleDrag),(0,r.addEvent)(n,d.stop,this.handleDragStop))}),u(this,"handleDrag",e=>{const t=(0,s.getControlPosition)(e,this.touchIdentifier,this);if(null==t)return;let{x:n,y:i}=t;if(Array.isArray(this.props.grid)){let e=n-this.lastX,t=i-this.lastY;if([e,t]=(0,s.snapToGrid)(this.props.grid,e,t),!e&&!t)return;n=this.lastX+e,i=this.lastY+t}const r=(0,s.createCoreData)(this,n,i);(0,a.default)("DraggableCore: handleDrag: %j",r);if(!1!==this.props.onDrag(e,r)&&!1!==this.mounted)this.lastX=n,this.lastY=i;else try{this.handleDragStop(new MouseEvent("mouseup"))}catch(e){const t=document.createEvent("MouseEvents");t.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),this.handleDragStop(t)}}),u(this,"handleDragStop",e=>{if(!this.dragging)return;const t=(0,s.getControlPosition)(e,this.touchIdentifier,this);if(null==t)return;let{x:n,y:i}=t;if(Array.isArray(this.props.grid)){let e=n-this.lastX||0,t=i-this.lastY||0;[e,t]=(0,s.snapToGrid)(this.props.grid,e,t),n=this.lastX+e,i=this.lastY+t}const o=(0,s.createCoreData)(this,n,i);if(!1===this.props.onStop(e,o)||!1===this.mounted)return!1;const l=this.findDOMNode();l&&this.props.enableUserSelectHack&&(0,r.scheduleRemoveUserSelectStyles)(l.ownerDocument),(0,a.default)("DraggableCore: handleDragStop: %j",o),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,l&&((0,a.default)("DraggableCore: Removing handlers"),(0,r.removeEvent)(l.ownerDocument,d.move,this.handleDrag),(0,r.removeEvent)(l.ownerDocument,d.stop,this.handleDragStop))}),u(this,"onMouseDown",e=>(d=h,this.handleDragStart(e))),u(this,"onMouseUp",e=>(d=h,this.handleDragStop(e))),u(this,"onTouchStart",e=>(d=c,this.handleDragStart(e))),u(this,"onTouchEnd",e=>(d=c,this.handleDragStop(e)))}componentDidMount(){this.mounted=!0;const e=this.findDOMNode();e&&(0,r.addEvent)(e,c.start,this.onTouchStart,{passive:!1})}componentWillUnmount(){this.mounted=!1;const e=this.findDOMNode();if(e){const{ownerDocument:t}=e;(0,r.removeEvent)(t,h.move,this.handleDrag),(0,r.removeEvent)(t,c.move,this.handleDrag),(0,r.removeEvent)(t,h.stop,this.handleDragStop),(0,r.removeEvent)(t,c.stop,this.handleDragStop),(0,r.removeEvent)(e,c.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&(0,r.scheduleRemoveUserSelectStyles)(t)}}findDOMNode(){return this.props?.nodeRef?this.props?.nodeRef?.current:i.default.findDOMNode(this)}render(){return e.cloneElement(e.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}};return qm.default=f,u(f,"displayName","DraggableCore"),u(f,"propTypes",{allowAnyClick:n.default.bool,allowMobileScroll:n.default.bool,children:n.default.node.isRequired,disabled:n.default.bool,enableUserSelectHack:n.default.bool,offsetParent:function(e,t){if(e[t]&&1!==e[t].nodeType)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:n.default.arrayOf(n.default.number),handle:n.default.string,cancel:n.default.string,nodeRef:n.default.object,onStart:n.default.func,onDrag:n.default.func,onStop:n.default.func,onMouseDown:n.default.func,scale:n.default.number,className:o.dontSetMe,style:o.dontSetMe,transform:o.dontSetMe}),u(f,"defaultProps",{allowAnyClick:!1,allowMobileScroll:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1}),qm}function Xm(){return $m||($m=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"DraggableCore",{enumerable:!0,get:function(){return u.default}}),e.default=void 0;var n=function(e,t){if("function"==typeof WeakMap)var n=new WeakMap,i=new WeakMap;return function(e,t){if(!t&&e&&e.__esModule)return e;var r,s,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(r=t?i:n){if(r.has(e))return r.get(e);r.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((s=(r=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(s.get||s.set)?r(o,t,s):o[t]=e[t]);return o}(e,t)}(t),i=h(Om()),r=h(y),s=function(){if(Pm)return Cm.exports;function e(t){var n,i,r="";if("string"==typeof t||"number"==typeof t)r+=t;else if("object"==typeof t)if(Array.isArray(t)){var s=t.length;for(n=0;n<s;n++)t[n]&&(i=e(t[n]))&&(r&&(r+=" "),r+=i)}else for(i in t)t[i]&&(r&&(r+=" "),r+=i);return r}function t(){for(var t,n,i=0,r="",s=arguments.length;i<s;i++)(t=arguments[i])&&(n=e(t))&&(r&&(r+=" "),r+=n);return r}return Pm=1,Cm.exports=t,Cm.exports.clsx=t,Cm.exports}(),o=Fm(),a=Um(),l=Lm(),u=h(Ym()),c=h(Hm());function h(e){return e&&e.__esModule?e:{default:e}}function d(){return d=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)({}).hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},d.apply(null,arguments)}function f(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t);if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class p extends n.Component{static getDerivedStateFromProps(e,t){let{position:n}=e,{prevPropsPosition:i}=t;return!n||i&&n.x===i.x&&n.y===i.y?null:((0,c.default)("Draggable: getDerivedStateFromProps %j",{position:n,prevPropsPosition:i}),{x:n.x,y:n.y,prevPropsPosition:{...n}})}constructor(e){super(e),f(this,"onDragStart",(e,t)=>{(0,c.default)("Draggable: onDragStart: %j",t);if(!1===this.props.onStart(e,(0,a.createDraggableData)(this,t)))return!1;this.setState({dragging:!0,dragged:!0})}),f(this,"onDrag",(e,t)=>{if(!this.state.dragging)return!1;(0,c.default)("Draggable: onDrag: %j",t);const n=(0,a.createDraggableData)(this,t),i={x:n.x,y:n.y,slackX:0,slackY:0};if(this.props.bounds){const{x:e,y:t}=i;i.x+=this.state.slackX,i.y+=this.state.slackY;const[r,s]=(0,a.getBoundPosition)(this,i.x,i.y);i.x=r,i.y=s,i.slackX=this.state.slackX+(e-i.x),i.slackY=this.state.slackY+(t-i.y),n.x=i.x,n.y=i.y,n.deltaX=i.x-this.state.x,n.deltaY=i.y-this.state.y}if(!1===this.props.onDrag(e,n))return!1;this.setState(i)}),f(this,"onDragStop",(e,t)=>{if(!this.state.dragging)return!1;if(!1===this.props.onStop(e,(0,a.createDraggableData)(this,t)))return!1;(0,c.default)("Draggable: onDragStop: %j",t);const n={dragging:!1,slackX:0,slackY:0};if(Boolean(this.props.position)){const{x:e,y:t}=this.props.position;n.x=e,n.y=t}this.setState(n)}),this.state={dragging:!1,dragged:!1,x:e.position?e.position.x:e.defaultPosition.x,y:e.position?e.position.y:e.defaultPosition.y,prevPropsPosition:{...e.position},slackX:0,slackY:0,isElementSVG:!1},!e.position||e.onDrag||e.onStop||console.warn("A `position` was applied to this <Draggable>, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}componentDidMount(){void 0!==window.SVGElement&&this.findDOMNode()instanceof window.SVGElement&&this.setState({isElementSVG:!0})}componentWillUnmount(){this.state.dragging&&this.setState({dragging:!1})}findDOMNode(){return this.props?.nodeRef?.current??r.default.findDOMNode(this)}render(){const{axis:e,bounds:t,children:i,defaultPosition:r,defaultClassName:l,defaultClassNameDragging:c,defaultClassNameDragged:h,position:f,positionOffset:p,scale:m,..._}=this.props;let g={},y=null;const v=!Boolean(f)||this.state.dragging,b=f||r,x={x:(0,a.canDragX)(this)&&v?this.state.x:b.x,y:(0,a.canDragY)(this)&&v?this.state.y:b.y};this.state.isElementSVG?y=(0,o.createSVGTransform)(x,p):g=(0,o.createCSSTransform)(x,p);const w=(0,s.clsx)(i.props.className||"",l,{[c]:this.state.dragging,[h]:this.state.dragged});return n.createElement(u.default,d({},_,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),n.cloneElement(n.Children.only(i),{className:w,style:{...i.props.style,...g},transform:y}))}}e.default=p,f(p,"displayName","Draggable"),f(p,"propTypes",{...u.default.propTypes,axis:i.default.oneOf(["both","x","y","none"]),bounds:i.default.oneOfType([i.default.shape({left:i.default.number,right:i.default.number,top:i.default.number,bottom:i.default.number}),i.default.string,i.default.oneOf([!1])]),defaultClassName:i.default.string,defaultClassNameDragging:i.default.string,defaultClassNameDragged:i.default.string,defaultPosition:i.default.shape({x:i.default.number,y:i.default.number}),positionOffset:i.default.shape({x:i.default.oneOfType([i.default.number,i.default.string]),y:i.default.oneOfType([i.default.number,i.default.string])}),position:i.default.shape({x:i.default.number,y:i.default.number}),className:l.dontSetMe,style:l.dontSetMe,transform:l.dontSetMe}),f(p,"defaultProps",{...u.default.defaultProps,axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},scale:1})}(tm)),tm}var Km=function(){if(Zm)return em.exports;Zm=1;const{default:e,DraggableCore:t}=Xm();return em.exports=e,em.exports.default=e,em.exports.DraggableCore=t,em.exports}(),Qm=ve(Km);const Jm=({zIndex:t,width:n,bottom:i,right:r,left:s,top:o,sx:a,children:l})=>{const u=e.useId(),c=e.useRef(null);return x(H,{children:x(Qm,{nodeRef:c,children:x(O,{id:u,ref:c,sx:()=>({position:"absolute",top:o,left:s,bottom:i,right:r,width:n,zIndex:t,backgroundColor:"white"}),children:x(qc,{sx:a,children:l})})})})},e_=m(null),t_={didCatch:!1,error:null};class n_ extends c{constructor(e){super(e),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=t_}static getDerivedStateFromError(e){return{didCatch:!0,error:e}}resetErrorBoundary(...e){const{error:t}=this.state;null!==t&&(this.props.onReset?.({args:e,reason:"imperative-api"}),this.setState(t_))}componentDidCatch(e,t){this.props.onError?.(e,t)}componentDidUpdate(e,t){const{didCatch:n}=this.state,{resetKeys:i}=this.props;n&&null!==t.error&&function(e=[],t=[]){return e.length!==t.length||e.some((e,n)=>!Object.is(e,t[n]))}(e.resetKeys,i)&&(this.props.onReset?.({next:i,prev:e.resetKeys,reason:"keys"}),this.setState(t_))}render(){const{children:e,fallbackRender:t,FallbackComponent:n,fallback:i}=this.props,{didCatch:r,error:s}=this.state;let a=e;if(r){const e={error:s,resetErrorBoundary:this.resetErrorBoundary};if("function"==typeof t)a=t(e);else if(n)a=o(n,e);else{if(void 0===i)throw s;a=i}}return o(e_.Provider,{value:{didCatch:r,error:s,resetErrorBoundary:this.resetErrorBoundary}},a)}}const i_=({error:e,resetErrorBoundary:t})=>w(O,{role:"alert",sx:{padding:"20px",background:"#fee"},children:[x(k,{variant:"h2",children:"Ошибка приложения"}),x(k,{variant:"body1",color:"error",children:e.message}),x(Fc,{onClick:t,children:"Попробовать снова"})]}),r_=({children:e,FallbackComponent:t=i_})=>x(n_,{FallbackComponent:t,children:e});function s_(t){const{name:n,type:i}=t,r=e.useId(),{control:s}=Dh();return x(Lh,{name:n,control:s,render:({field:e})=>w(O,{sx:({spacing:e})=>({display:"grid",width:"100%",gap:e(1)}),children:[x(Sd,{id:r,size:"small",...t,...e,onChange:t=>{const{target:n}=t,{value:r}=n;if("number"===i)""===r?e.onChange():e.onChange(Number(r));else e.onChange(t)}}),x(Ed,{name:n})]})})}var o_,a_;!function(e){e.ONE_WAY='"OneWay"',e.POINT_ADDRESS='"PointAddress"',e.BUILDING_AREA='"MapBuildingECArea"',e.BUILTUP_AREA='"MapAdminBuiltupArea"',e.ADMIN_AREA='"MapAdminArea"',e.OCEAN_AREA='"MapOceanArea"',e.OCEAN_AREA_LABEL='"MapOceanAreaLabel"',e.FACILITY_AREA='"MapFacilityArea"',e.FACILITY_AREA_LABEL='"MapFacilityAreaLabel"',e.LANDUSE_AREA='"MapLanduseArea"',e.LANDUSE_AREA_LABEL='"MapLanduseAreaLabel"',e.NATURE_FIELD='"MapNatureField"',e.NATURE_FOREST='"MapNatureForest"',e.LINK='"Link"',e.RAILROAD_LINK='"MapRailroadLink"',e.WATER_LINK='"MapWaterLink"',e.WATER_AREA='"MapWaterArea"',e.WATER_AREA_LABEL='"MapWaterAreaLabel"',e.WATER_LAKE_LABEL='"MapWaterLakeLabel"',e.POI='"POI"',e.CITY_POI='"CityPOI"',e.CONDITIONS='"Conditions"',e.ROAD_POLY='"RoadPoly"',e.PARKING_LINE='"ParkingLine"',e.LANE_MARKING_LINE='"LaneMarkingLine"',e.LANE_MARKING_POLY='"LaneMarkingPoly"',e.LANE_MARKING_ARROW='"LaneMarkingArrow"',e.TRAFFIC_SIGN='"TrafficSign"',e.TRAFFIC_SIGNAL='"TrafficSignal"',e.CAMERA='"Camera"',e.PILLAR='"Pillar"'}(o_||(o_={})),function(e){e.TILE="tile",e.NATURE_TILE="nature_tile",e.MSK="msk"}(a_||(a_={}));const l_=new class{constructor(){}log({message:e,context:t,meta:n}){console.log(t,e,n)}warn({message:e,context:t,meta:n}){console.warn(t,e,n)}error({message:e,context:t,meta:n}){console.error(t,e,n)}},u_=256,c_={[a_.TILE]:"https://dalganmap.ru/api/tiles/get_tile/{z}/{x}/{y}.mvt",[a_.NATURE_TILE]:"https://dalganmap.ru/api/tiles/get_nature_tile/{z}/{x}/{y}.mvt",[a_.MSK]:"http://89.108.118.23:3070/tiles/get_tile/{z}/{x}/{y}.mvt"};var h_={global:{links:{getIsConstruction:"function (feature) {\n const { construction } = feature;\n\n return construction;\n}\n",getIsFunctionalClass:"function (feature) {\n const { functional_class, access_id } = feature;\n\n return functional_class === 5 && access_id === 32;\n}\n",getIsLowMobility:"function (feature) {\n const { functional_class, low_mobility } = feature;\n\n return functional_class === 5 && low_mobility === 1;\n}\n"}},cameras:{camera1:{type:"perspective",vanishing_point:[0,-500]}},textures:{arrow:{url:"https://dalganmap.ru/api-image/images/arrow-20.png",sprites:{base:[0,0,20,20]}},"traffic-signal":{url:"https://dalganmap.ru/api-image/images/conditions/traffic-signal.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},pedestrian_crossing:{url:"https://dalganmap.ru/api-image/images/conditions/pedestrian_crossing.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},physical:{url:"https://dalganmap.ru/api-image/images/conditions/physical.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},gate:{url:"https://dalganmap.ru/api-image/images/conditions/gate.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_3578:{url:"https://dalganmap.ru/api-image/images/POI/3578.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_5813:{url:"https://dalganmap.ru/api-image/images/POI/5813.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_5541:{url:"https://dalganmap.ru/api-image/images/POI/5541.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_5540:{url:"https://dalganmap.ru/api-image/images/POI/5540.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},"POI_9530(Mail)":{url:"https://dalganmap.ru/api-image/images/POI/mail.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},"POI_9530(Delivery)":{url:"https://dalganmap.ru/api-image/images/POI/delivery.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_5400:{url:"https://dalganmap.ru/api-image/images/POI/5400.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_6000:{url:"https://dalganmap.ru/api-image/images/POI/6000.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_9565:{url:"https://dalganmap.ru/api-image/images/POI/9565.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_9583:{url:"https://dalganmap.ru/api-image/images/POI/9583.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_8060:{url:"https://dalganmap.ru/api-image/images/POI/8060.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_5511:{url:"https://dalganmap.ru/api-image/images/POI/5511.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_5512:{url:"https://dalganmap.ru/api-image/images/POI/5512.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_5800:{url:"https://dalganmap.ru/api-image/images/POI/5800.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_5999:{url:"https://dalganmap.ru/api-image/images/POI/5999.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_7011:{url:"https://dalganmap.ru/api-image/images/POI/7011.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_7389:{url:"https://dalganmap.ru/api-image/images/POI/7389.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_7832:{url:"https://dalganmap.ru/api-image/images/POI/7832.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_7929:{url:"https://dalganmap.ru/api-image/images/POI/7929.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_7990:{url:"https://dalganmap.ru/api-image/images/POI/7990.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_7999:{url:"https://dalganmap.ru/api-image/images/POI/7999.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_8410:{url:"https://dalganmap.ru/api-image/images/POI/8410.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_9517:{url:"https://dalganmap.ru/api-image/images/POI/9517.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_9718:{url:"https://dalganmap.ru/api-image/images/POI/9718.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},"POI_9992(mosque)":{url:"https://dalganmap.ru/api-image/images/POI/9992_mosque.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},"POI_9992(church)":{url:"https://dalganmap.ru/api-image/images/POI/9992_church.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},"POI_9992(temple)":{url:"https://dalganmap.ru/api-image/images/POI/9992_temple.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},"POI_9992(davidStar)":{url:"https://dalganmap.ru/api-image/images/POI/9992_davidStar.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},"POI_9992(mortar)":{url:"https://dalganmap.ru/api-image/images/POI/9992_mortar.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},"POI_4100(metro)":{url:"https://dalganmap.ru/api-image/images/POI/4100_metro.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},"POI_4100(diameter)":{url:"https://dalganmap.ru/api-image/images/POI/4100_diameter.png",filtering:"mipmap",sprites:{base:[0,0,41,15]}},POI_4013:{url:"https://dalganmap.ru/api-image/images/POI/4013.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}}},layers:null,styles:{buildings:{base:"polygons",shaders:{blocks:{color:"color.rgb;\n"}}}},lights:{light1:{type:"directional",direction:[.1,.5,-1],diffuse:.7,ambient:.5}},sources:null};const d_=e=>{const t=[],n={source:e,layer:o_.BUILDING_AREA,minzoom:15},i={id:pn(),data:n,extruded:{draw:{polygons:{style:"buildings",extrude:"function() {\n return $zoom >= 17;\n }"}}},draw:{polygons:{color:"#DDB07B",height:{property:"height"}},lines:{color:"#DB933F",width:"2px",cap:"round",join:"round"}}};return t.push(i),t},f_=e=>{const t=[],n={source:e,layer:o_.BUILTUP_AREA},i={id:pn(),data:n,draw:{polygons:{color:"#CFC8C8"}}};return t.push(i),t},p_=e=>{const t=[],n={source:e,layer:o_.ADMIN_AREA},i={id:pn(),data:n,draw:{polygons:{color:"#D3D2CF"}}},r={id:pn(),data:n,filter:"function() {\n const { type } = feature;\n\n const isFilter = type === 'R';\n\n return isFilter;\n }",draw:{lines:{color:"#696969",width:"1px",cap:"round",join:"round"}}},s={id:pn(),data:n,filter:"function() {\n const { type } = feature;\n\n const isFilter = type === 'D' && $zoom >= 12;\n\n return isFilter;\n }",draw:{lines:{color:"#696969",dash:[4,7],width:"1px",cap:"round",join:"round"}}};return t.push(i,r,s),t},m_={size:20,extension:"png"},__=e=>{const t=[],n={source:e,layer:o_.CAMERA},i={},r="camera";i[r]={url:vn(`msk/${r}/${r}_${m_.size}.${m_.extension}`),filtering:"mipmap",sprites:{base:[0,0,m_.size,m_.size]}};const s={id:pn(),data:n,draw:{points:{collide:!1,texture:r,size:m_.size,sprite:"base",placement:"midpoint"}},textures:i,sublayers:{}};return t.push(s),t},g_=e=>{const t=[],n={source:e,layer:o_.CITY_POI},i={id:pn(),data:n,filter:"function() {\n const { capital_order8, capital_order2, capital_order1, poi_name, priority } = feature;\n\n if ($zoom >= 9 && $zoom < 13) {\n return priority < 8;\n }\n\n if ($zoom <= 11) {\n return capital_order8 === 'Y';\n }\n\n if ($zoom >= 15) {\n return capital_order2 !== 'Y';\n }\n\n return true;\n }\n ",draw:{text:{text_source:"poi_name",priority:"function () {\n const { priority } = feature;\n\n if ($zoom <= 15) {\n return priority;\n }\n\n return 1;\n }\n ",font:{fill:"black",size:"function() {\n const { capital_order8 } = feature;\n\n if (capital_order8 === 'Y') {\n return '16px';\n }\n\n return '12px';\n }",weight:"function() {\n const { capital_order2 } = feature;\n\n if (capital_order2 === 'Y') {\n return 'bold';\n }\n\n return 'normal';\n }",stroke:{color:"white",width:"2px"}}}}};return t.push(i),t};var y_;!function(e){e.traffic_signal="traffic_signal",e.pedestrian_crossing="pedestrian_crossing",e.physical="physical",e.gate="gate"}(y_||(y_={}));const v_=e=>{const t=[],n={},i={source:e,layer:o_.CONDITIONS},r={id:pn(),data:i};return Object.values(y_).forEach(e=>{n[`_${e}`]={filter:`function() {\n const { type } = feature;\n\n const isShow = type === '${e}';\n\n return isShow;\n }`,draw:{points:{texture:e,sprite:"base",placement:"midpoint"}}}}),r.sublayers=n,t.push(r),t},b_=e=>{const t=[],n={id:pn(),data:{source:e,layer:o_.FACILITY_AREA},draw:{polygons:{color:"function() {\n const { feature_type } = feature;\n\n switch (feature_type) {\n case '2000408': {\n return '#DBBAC4';\n }\n\n case '1900403': {\n return '#B6C3C7';\n }\n\n case '1907403': {\n return '#A3B9C0';\n }\n\n case '2000123': {\n return '#E4BA7D';\n }\n\n case '2000124': {\n return '#BFE6E3';\n }\n\n case '2000200': {\n return '#A0A9A8';\n }\n\n case '2000403': {\n return '#AF7136';\n }\n\n case '2000420': {\n return '#89AC76';\n }\n\n case '2000457': {\n return '#9494C0';\n }\n\n default: {\n return '#E1D4D4';\n }\n }\n }",order:"function() {\n const { feature_type } = feature;\n\n switch (feature_type) {\n case '1907403': {\n return 301;\n }\n\n default: {\n return 300;\n }\n }\n }"},lines:{color:"#857F7F",width:"2px",cap:"round",join:"round"}}},i={id:pn(),data:{source:e,layer:o_.FACILITY_AREA_LABEL},draw:{text:{text_source:"name",font:{fill:"function() {\n const { feature_type } = feature;\n\n switch(feature_type) {\n case '1900403':\n case '1907403': {\n return '#256D7B';\n }\n\n case '2000420':\n case '2000460':\n case '2000123': {\n return '#00541F';\n }\n\n case '2000408': {\n return '#5E2129';\n }\n\n case '2000124': {\n return '#3E5F8A';\n }\n\n case '2000200': {\n return '#464451';\n }\n\n case '2000403': {\n return '#B03F35';\n }\n\n case '2000457': {\n return '#6A5ACD';\n }\n\n case '1700215':\n case '900159':\n case '900158': {\n return '#474A51';\n }\n\n default: {\n return black;\n }\n }\n }",size:"12px",stroke:{color:"white",width:"3px"}}}}};return t.push(n,i),t},x_=e=>{const t=[],n={id:pn(),data:{source:e,layer:o_.LANDUSE_AREA},draw:{polygons:{color:"function() {\n const { feature_type } = feature;\n\n switch (feature_type) {\n case '509998': {\n return '#ECD175';\n }\n\n case '600102':\n case '900140': {\n return '#3E9A8C';\n }\n\n case '900202':\n case '900130':\n case '900150':\n case '900103': {\n return '#96BE7D';\n }\n\n case '9997010': {\n return null;\n }\n }\n }",order:"function() {\n const { feature_type } = feature;\n\n switch(feature_type) {\n case '900150':\n case '900130':\n case '509998': {\n return 300;\n }\n\n default: {\n return 299;\n }\n }\n }"}}},i={id:pn(),data:{source:e,layer:o_.LANDUSE_AREA_LABEL},filter:"function() {\n return $zoom >= 15;\n }",draw:{text:{text_source:"name",font:{size:"13px",fill:"function() {\n const { feature_type } = feature;\n\n switch(feature_type) {\n case '509998': {\n return '#CD7F32';\n }\n\n default: {\n return '#00541F';\n }\n }\n }",stroke:{color:"white",width:"3px"}}}}};return t.push(n,i),t},w_=e=>{const t=[],n={source:e,layer:o_.LANE_MARKING_ARROW},i={id:pn(),data:n,draw:{polygons:{color:"white"}}};return t.push(i),t},E_=["-1.0","-0.5","-0.3","0.0","0.3","0.5","0.7","1.0","1.5","2.0"],A_=[[5],[4,3],[2,1]],T_="function() {\n const { functional_class, tunnel, tollway } = feature;\n\n const alpha = tunnel ? 0.89 : 1;\n\n const getRGB = (hex, alpha) => {\n const r = +(parseInt(hex.slice(1, 3), 16) / 255).toFixed(2);\n const g = +(parseInt(hex.slice(3, 5), 16) / 255).toFixed(2);\n const b = +(parseInt(hex.slice(5, 7), 16) / 255).toFixed(2);\n\n return [r, g, b, alpha];\n }\n\n if (tollway) {\n return '#D72740';\n }\n\n switch (functional_class) {\n case 1:\n case 2: {\n const color = getRGB('#D1747F', alpha);\n\n return color;\n }\n\n case 3:\n case 4: {\n const color = getRGB('#B1A7AA', alpha);\n\n return color;\n }\n\n case 5: {\n const color = getRGB('#D5CEC3', alpha);\n\n return color;\n }\n }\n}",S_="function() {\n const { functional_class, road_number } = feature;\n\n const getScale = () => {\n if ($zoom <= 15 && $zoom >= 14) { return 7; }\n\n if ($zoom <= 13 && $zoom >= 12) { return 9; }\n\n if ($zoom <= 5) { return 400; }\n\n if ($zoom <= 7) { return 200; }\n\n if ($zoom < 12) { return 50; }\n\n return 1;\n }\n\n const scale = getScale();\n\n switch(functional_class) {\n case 1:\n case 2: {\n return 8 * scale;\n }\n\n case 3:\n case 4: {\n return 7 * scale;\n }\n\n case 5: {\n if (Boolean(road_number)) {\n return 7 * scale;\n }\n\n return 6;\n }\n }\n}",k_={text_source:"street_name",font:{fill:"black",size:"14px",stroke:{color:"white",width:"3px"}}},O_={text:{text_source:"road_number",font:{fill:"#181bff",size:"16px",weight:"bold",underline:!0,background:{color:"black"}}}},P_={text:k_,lines:{color:T_,width:S_,cap:"round",join:"round"}},C_={lines:{color:T_,width:S_,outline:{color:"function() {\n const { functional_class, access_id, tollway } = feature;\n\n if (tollway) {\n return '#B9263B';\n }\n\n switch(functional_class) {\n case 5: {\n return '#989898';\n }\n\n case 3:\n case 4: {\n return '#8F6E78';\n }\n\n case 1:\n case 2: {\n return '#9A414B';\n }\n }\n}",width:"function() {\n const { functional_class, access_id } = feature;\n\n switch(functional_class) {\n case 5: {\n switch (access_id) {\n case 32: {\n return 0;\n }\n\n default: {\n return 1;\n }\n }\n }\n\n default: {\n return 1;\n }\n }\n}"}}},R_={text:k_,lines:{color:"#BABCC2",width:10,cap:"round",join:"round"}},M_={filter:"function() {\n return global.links.getIsLowMobility(feature);\n }",draw:{lines:{width:4}}},N_={filter:"function() {\n return global.links.getIsConstruction(feature);\n }",draw:{lines:{width:3,color:"#9AA096",dash:[2,1]}}},L_={filter:"function() {\n return global.links.getIsFunctionalClass(feature);\n }",draw:{lines:{width:2,color:"#9AA096",dash:[2,1]}}},z_=e=>{const t=[],n={source:e,layer:o_.LINK},i={id:pn(),data:n,draw:O_};return t.push(i),E_.forEach(i=>{const r=[],s=[];A_.forEach(t=>{const o=[],a=[];t.forEach(t=>{const r=(({source:e,zLvl:t,functionClass:n})=>e===a_.MSK?{base:{default:`function() {\n const { functional_class, z_lvl = '0.0', tollway } = feature;\n\n const isFilter = $zoom <= 16 && z_lvl === '${t}' && +functional_class === ${n} && tollway === false;\n\n return isFilter;\n }`,tollway:`function() {\n const { functional_class, z_lvl = '0.0', tollway } = feature;\n\n const isFilter = $zoom <= 16 && z_lvl === '${t}' && +functional_class === ${n} && tollway === true;\n\n return isFilter;\n }`},border:{default:`function() {\n const { functional_class, z_lvl = '0.0', tollway } = feature;\n\n const isFilter = $zoom <= 16 && tollway === false && z_lvl === '${t}' && +functional_class === ${n} && !global.links.getIsConstruction(feature) && !global.links.getIsFunctionalClass(feature);\n\n return isFilter;\n }`,tollway:`function() {\n const { functional_class, z_lvl = '0.0', tollway } = feature;\n\n const isFilter = $zoom <= 16 && tollway === true && z_lvl === '${t}' && +functional_class === ${n} && !global.links.getIsConstruction(feature) && !global.links.getIsFunctionalClass(feature);\n\n return isFilter;\n }`}}:{base:{default:`function() {\n const { functional_class, z_lvl = '0.0', tollway } = feature;\n\n const isFilter = z_lvl === '${t}' && +functional_class === ${n} && tollway === false;\n\n return isFilter;\n }`,tollway:`function() {\n const { functional_class, z_lvl = '0.0', tollway } = feature;\n\n const isFilter = z_lvl === '${t}' && +functional_class === ${n} && tollway === true;\n\n return isFilter;\n }`},border:{default:`function() {\n const { functional_class, z_lvl = '0.0', tollway } = feature;\n\n const isFilter = tollway === false && z_lvl === '${t}' && +functional_class === ${n} && !global.links.getIsConstruction(feature) && !global.links.getIsFunctionalClass(feature);\n\n return isFilter;\n }`,tollway:`function() {\n const { functional_class, z_lvl = '0.0', tollway } = feature;\n\n const isFilter = tollway === true && z_lvl === '${t}' && +functional_class === ${n} && !global.links.getIsConstruction(feature) && !global.links.getIsFunctionalClass(feature);\n\n return isFilter;\n }`}})({source:e,zLvl:i,functionClass:t}),s=(({zLvl:e,functionClass:t})=>`function() {\n const { functional_class, z_lvl = '0.0', tollway } = feature;\n\n const isFilter = $zoom > 16 && z_lvl === '${e}' && +functional_class === ${t};\n\n return isFilter;\n }`)({zLvl:i,functionClass:t}),l={id:pn(),data:n,filter:r.base.default,draw:P_,sublayers:{construction:{...N_},functionalClassAccessId32:{...L_},lowMobility:{...M_}}},u={id:pn(),data:n,filter:r.base.tollway,draw:P_,sublayers:{construction:{...N_},functionalClassAccessId32:{...L_},lowMobility:{...M_}}},c={id:pn(),data:n,filter:s,draw:R_,sublayers:{functionalClassAccessId32:{...L_}}},h={id:pn(),data:n,filter:r.border.default,draw:C_,sublayers:{lowMobility:{...M_}}},d={id:pn(),data:n,filter:r.border.tollway,draw:C_,sublayers:{lowMobility:{...M_}}};if(e===a_.MSK)o.push(c);o.push(l,u),a.push(h,d)}),r.push(...o),s.push(...a)}),t.push(...s,...r)}),t},D_=()=>{const e=[],t={source:a_.NATURE_TILE,layer:o_.NATURE_FIELD},n={id:pn(),data:t,draw:{polygons:{color:"#EBEEC7"}}};return e.push(n),e},I_=()=>{const e=[],t={source:a_.NATURE_TILE,layer:o_.NATURE_FOREST},n={id:pn(),data:t,draw:{polygons:{color:"function() {\n const { feature_type } = feature;\n\n switch (feature_type) {\n case '900202': {\n return '#96BE7D';\n }\n\n default : {\n return null;\n }\n }\n }"}}};return e.push(n),e},F_=e=>{const t=[],n={id:pn(),data:{source:e,layer:o_.OCEAN_AREA},draw:{polygons:{color:"#7DBEE4"}}},i={id:pn(),data:{source:e,layer:o_.OCEAN_AREA_LABEL},draw:{text:{text_source:"name",font:{fill:"#0A80C4",size:"18px",stroke:{color:"white",width:"3px"}}}}};return t.push(n,i),t},j_=e=>{const t=[],n={id:pn(),data:{source:e,layer:o_.ONE_WAY},draw:{points:{texture:"arrow",sprite:"base",angle:"function() {\n const { bearing } = feature;\n \n return bearing;\n }\n "}}};return t.push(n),t},B_={size:20,extension:"png"},U_=e=>{const t=[],n={source:e,layer:o_.PILLAR},i={},r="pillar";i[r]={url:vn(`msk/${r}/${r}_${B_.size}.${B_.extension}`),filtering:"mipmap",sprites:{base:[0,0,B_.size,B_.size]}};const s={id:pn(),data:n,draw:{points:{collide:!1,texture:r,size:B_.size,sprite:"base",placement:"midpoint"}},textures:i,sublayers:{}};return t.push(s),t},V_='function() {\n const { poi_name, cat_id } = feature;\n\n switch (+cat_id) {\n case 4100: {\n const text = poi_name.replaceAll(/(Метро-|Станция-|МЦД-)/g, "");\n\n return text;\n }\n\n default: {\n return poi_name;\n }\n }\n}',G_=[3578,4013,4100,5400,5511,5512,5540,5541,5800,5813,5999,6e3,7011,7389,7832,7929,7990,8060,8410,9517,9530,9565,9583,9718,9992],$_=e=>{const t={};switch(e){case 4100:t[`_${e}-metro`]={filter:`function() {\n const { poi_name, cat_id } = feature;\n\n const isMetro = poi_name.startsWith('Метро-');\n const isStation = poi_name.startsWith('Станция-');\n\n const isCatId = +cat_id === ${e};\n\n const isFilter = isCatId && (isMetro || isStation);\n\n return isFilter;\n }`,draw:{points:Z_({texture:`POI_${e}(metro)`})}},t[`_${e}-diameter`]={filter:`function() {\n const { cat_id, poi_name } = feature;\n\n const isDiameter = poi_name.startsWith('МЦД-');\n\n const isCatId = +cat_id === ${e};\n\n const isFilter = isCatId && isDiameter;\n\n return isFilter;\n }`,draw:{points:Z_({texture:`POI_${e}(diameter)`,size:[41,15]})}};break;case 9530:t[`_${e}-mail`]={filter:`function() {\n const { cat_id, poi_name = '' } = feature;\n\n const isCatId = +cat_id === ${e};\n\n const isMail = poi_name.startsWith('Почта');\n\n const isFilter = isCatId && isMail;\n\n return isFilter;\n }`,draw:{points:Z_({texture:`POI_${e}(Mail)`})}},t[`_${e}-delivery`]={filter:`function() {\n const { cat_id, poi_name = '' } = feature;\n\n const isCatId = +cat_id === ${e};\n \n const isMail = poi_name.startsWith('Почта');\n\n const isFilter = isCatId && !isMail;\n\n return isFilter;\n }`,draw:{points:Z_({texture:`POI_${e}(Delivery)`})}};break;case 9992:{const n={mosque:1,church:2,temple:3,davidStar:4,mortar:6};Object.entries(n).forEach(([n,i])=>{t[`_${e}-${n}`]={filter:`function() {\n const { cat_id, subcat_id } = feature;\n\n const isCatId = +cat_id === ${e};\n const isSubcatId = +subcat_id === ${i};\n\n const isFilter = isCatId && isSubcatId;\n\n return isFilter;\n }`,draw:{points:Z_({texture:`POI_${e}(${n})`})}}});break}default:t[`_${e}`]={filter:`function() {\n const { cat_id } = feature;\n\n const isFilter = +cat_id === ${e};\n\n return isFilter;\n }`,draw:{points:Z_({texture:`POI_${e}`})}}}return t},Z_=({texture:e,size:t=20})=>({texture:e,size:t,sprite:"base",placement:"midpoint"}),q_=G_.reduce((e,t)=>({...e,...$_(t)}),{}),W_=e=>{const t=[],n={id:pn(),data:{source:e,layer:o_.POI},draw:{points:{text:{text_source:V_,font:{fill:"#464544",size:"12px"}}}},sublayers:q_};return t.push(n),t},H_=e=>{const t=[],n={source:e,layer:o_.POINT_ADDRESS,minzoom:15},i={id:pn(),data:n,draw:{text:{text_source:"address",font:{fill:"black",size:"12px"}}}};return t.push(i),t},Y_=e=>{const t=[],n={source:e,layer:o_.RAILROAD_LINK},i={id:pn(),data:n,draw:{lines:{color:"#A3A8A",width:5,dash:[1,2],dash_background_color:[0,0,0],join:"round"}}};return t.push(i),t},X_={fileName:"traffic-sign",extension:"svg",dopsCount:2,widths:{map:20,preview:40}},K_={1.1:{title:"Железнодорожный переезд со шлагбаумом",height:20,type:"Предупреждающие знаки"},1.2:{title:"Железнодорожный переезд без шлагбаума",height:20,type:"Предупреждающие знаки"},"1.3.1":{title:"Однопутная железная дорога",height:20,type:"Предупреждающие знаки"},"1.3.2":{title:"Многопутная железная дорога",height:20,type:"Предупреждающие знаки"},"1.4.1":{title:"Приближение к железнодорожному переезду",height:40,type:"Предупреждающие знаки"},"1.4.2":{title:"Приближение к железнодорожному переезду",height:40,type:"Предупреждающие знаки"},"1.4.3":{title:"Приближение к железнодорожному переезду",height:40,type:"Предупреждающие знаки"},"1.4.4":{title:"Приближение к железнодорожному переезду",height:40,type:"Предупреждающие знаки"},"1.4.5":{title:"Приближение к железнодорожному переезду",height:40,type:"Предупреждающие знаки"},"1.4.6":{title:"Приближение к железнодорожному переезду",height:40,type:"Предупреждающие знаки"},1.5:{title:"Пересечение с трамвайной линией",height:20,type:"Предупреждающие знаки"},1.6:{title:"Пересечение равнозначных дорог",height:20,type:"Предупреждающие знаки"},1.7:{title:"Пересечение с круговым движением",height:20,type:"Предупреждающие знаки"},1.8:{title:"Светофорное регулирование",height:20,type:"Предупреждающие знаки"},1.9:{title:"Разводной мост",height:20,type:"Предупреждающие знаки"},"1.10":{title:"Выезд на набережную",height:20,type:"Предупреждающие знаки"},"1.11.1":{title:"Опасный поворот (правый)",height:20,type:"Предупреждающие знаки"},"1.11.2":{title:"Опасный поворот (левый)",height:20,type:"Предупреждающие знаки"},"1.12.1":{title:"Опасные повороты",height:20,type:"Предупреждающие знаки"},"1.12.2":{title:"Опасные повороты",height:20,type:"Предупреждающие знаки"},1.13:{title:"Крутой спуск",height:20,type:"Предупреждающие знаки"},1.14:{title:"Крутой подъём",height:20,type:"Предупреждающие знаки"},1.15:{title:"Скользкая дорога",height:20,type:"Предупреждающие знаки"},1.16:{title:"Неровная дорога",height:20,type:"Предупреждающие знаки"},1.17:{title:"Искусственная неровность",height:20,type:"Предупреждающие знаки"},1.18:{title:"Выброс гравия",height:20,type:"Предупреждающие знаки"},1.19:{title:"Опасная обочина",height:20,type:"Предупреждающие знаки"},"1.20.1":{title:"Сужение дороги",height:20,type:"Предупреждающие знаки"},"1.20.2":{title:"Сужение дороги",height:20,type:"Предупреждающие знаки"},"1.20.3":{title:"Сужение дороги",height:20,type:"Предупреждающие знаки"},1.21:{title:"Двустороннее движение",height:20,type:"Предупреждающие знаки"},1.22:{title:"Пешеходный переход",height:20,type:"Предупреждающие знаки"},1.23:{title:"Дети",height:20,type:"Предупреждающие знаки"},1.24:{title:"Пересечение с велосипедной дорожкой или велопешеходной дорожкой",height:20,type:"Предупреждающие знаки"},1.25:{title:"Дорожные работы",height:20,type:"Предупреждающие знаки"},1.26:{title:"Перегон скота",height:20,type:"Предупреждающие знаки"},1.27:{title:"Дикие животные",height:20,type:"Предупреждающие знаки"},1.28:{title:"Падение камней",height:20,type:"Предупреждающие знаки"},1.29:{title:"Боковой ветер",height:20,type:"Предупреждающие знаки"},"1.30":{title:"Низколетящие самолёты",height:20,type:"Предупреждающие знаки"},1.31:{title:"Тоннель",height:20,type:"Предупреждающие знаки"},1.32:{title:"Затор",height:20,type:"Предупреждающие знаки"},1.33:{title:"Прочие опасности",height:20,type:"Предупреждающие знаки"},"1.34.1 A":{title:"Направление поворота",height:20,type:"Предупреждающие знаки"},"1.34.1 B":{title:"Направление поворота",height:20,type:"Предупреждающие знаки"},"1.34.1 C":{title:"Направление поворота",height:20,type:"Предупреждающие знаки"},"1.34.2 A":{title:"Направление поворота",height:20,type:"Предупреждающие знаки"},"1.34.2 B":{title:"Направление поворота",height:20,type:"Предупреждающие знаки"},"1.34.2 C":{title:"Направление поворота",height:20,type:"Предупреждающие знаки"},"1.34.3 A":{title:"Направление поворота",height:20,type:"Предупреждающие знаки"},"1.34.3 B":{title:"Направление поворота",height:20,type:"Предупреждающие знаки"},1.35:{title:"Участок перекрёстка",height:20,type:"Предупреждающие знаки"},2.1:{title:"Главная дорога",height:20,type:"Знаки приоритета"},2.2:{title:"Конец главной дороги",height:20,type:"Знаки приоритета"},"2.3.1":{title:"Пересечение со второстепенной дорогой",height:20,type:"Знаки приоритета"},"2.3.2":{title:"Примыкание второстепенной дороги",height:20,type:"Знаки приоритета"},"2.3.3":{title:"Примыкание второстепенной дороги",height:20,type:"Знаки приоритета"},"2.3.4":{title:"Примыкание второстепенной дороги",height:20,type:"Знаки приоритета"},"2.3.5":{title:"Примыкание второстепенной дороги",height:20,type:"Знаки приоритета"},"2.3.6":{title:"Примыкание второстепенной дороги",height:20,type:"Знаки приоритета"},"2.3.7":{title:"Примыкание второстепенной дороги",height:20,type:"Знаки приоритета"},2.4:{title:"Уступите дорогу",height:20,type:"Знаки приоритета"},2.5:{title:"Движение без остановки запрещено",height:20,type:"Знаки приоритета"},2.6:{title:"Преимущество встречного движения",height:20,type:"Знаки приоритета"},2.7:{title:"Преимущество перед встречным движением",height:20,type:"Знаки приоритета"},3.1:{title:"Въезд запрещён",height:20,type:"Запрещающие знаки"},3.2:{title:"Движение запрещено",height:20,type:"Запрещающие знаки"},3.3:{title:"Движение механических транспортных средств запрещено",height:20,type:"Запрещающие знаки"},3.4:{title:"Движение грузовых автомобилей запрещено",height:20,type:"Запрещающие знаки"},3.5:{title:"Движение мотоциклов запрещено",height:20,type:"Запрещающие знаки"},3.6:{title:"Движение тракторов запрещено",height:20,type:"Запрещающие знаки"},3.7:{title:"Движение с прицепом запрещено",height:20,type:"Запрещающие знаки"},3.8:{title:"Движение гужевых повозок запрещено",height:20,type:"Запрещающие знаки"},3.9:{title:"Движение на велосипедах запрещено",height:20,type:"Запрещающие знаки"},"3.10":{title:"Движение пешеходов запрещено",height:20,type:"Запрещающие знаки"},3.11:{title:"Ограничение массы",height:20,type:"Запрещающие знаки"},3.12:{title:"Ограничение массы, приходящейся на ось транспортного средства",height:20,type:"Запрещающие знаки"},3.13:{title:"Ограничение высоты",height:20,type:"Запрещающие знаки"},3.14:{title:"Ограничение ширины",height:20,type:"Запрещающие знаки"},3.15:{title:"Ограничение длины",height:20,type:"Запрещающие знаки"},3.16:{title:"Ограничение минимальной дистанции",height:20,type:"Запрещающие знаки"},"3.17.1":{title:"Таможня",height:20,type:"Запрещающие знаки"},"3.17.2":{title:"Опасность",height:20,type:"Запрещающие знаки"},"3.17.3":{title:"Контроль",height:20,type:"Запрещающие знаки"},"3.18.1":{title:"Поворот направо запрещён",height:20,type:"Запрещающие знаки"},"3.18.2":{title:"Поворот налево запрещён",height:20,type:"Запрещающие знаки"},3.19:{title:"Разворот запрещён",height:20,type:"Запрещающие знаки"},"3.20":{title:"Обгон запрещён",height:20,type:"Запрещающие знаки"},3.21:{title:"Конец зоны запрещения обгона",height:20,type:"Запрещающие знаки"},3.22:{title:"Обгон грузовым автомобилям запрещён",height:20,type:"Запрещающие знаки"},3.23:{title:"Конец зоны запрещения обгона грузовым автомобилям",height:20,type:"Запрещающие знаки"},"3.24-50":{title:"Ограничение максимальной скорости",height:20,type:"Запрещающие знаки"},"3.25-50":{title:"Конец зоны ограничения максимальной скорости",height:20,type:"Запрещающие знаки"},3.26:{title:"Подача звукового сигнала запрещена",height:20,type:"Запрещающие знаки"},3.27:{title:"Остановка запрещена",height:20,type:"Запрещающие знаки"},3.28:{title:"Стоянка запрещена",height:20,type:"Запрещающие знаки"},3.29:{title:"Стоянка запрещена по нечётным числам месяца.",height:20,type:"Запрещающие знаки"},"3.30":{title:"Стоянка запрещена по чётным числам месяца",height:20,type:"Запрещающие знаки"},3.31:{title:"Конец зоны всех ограничений",height:20,type:"Запрещающие знаки"},3.32:{title:"Движение транспортных средств с опасными грузами запрещено",height:20,type:"Запрещающие знаки"},3.33:{title:"Движение транспортных средств с взрывчатыми и легковоспламеняющимися грузами запрещено",height:20,type:"Запрещающие знаки"},3.34:{title:"Движение автобусов запрещено",height:20,type:"Запрещающие знаки"},3.35:{title:"Движение на средствах индивидуальной мобильности запрещено",height:20,type:"Запрещающие знаки"},"4.1.1":{title:"Движение прямо",height:20,type:"Предписывающие знаки"},"4.1.2":{title:"Движение направо",height:20,type:"Предписывающие знаки"},"4.1.3":{title:"Движение налево",height:20,type:"Предписывающие знаки"},"4.1.4":{title:"Движение прямо или направо",height:20,type:"Предписывающие знаки"},"4.1.5":{title:"Движение прямо или налево",height:20,type:"Предписывающие знаки"},"4.1.6":{title:"Движение направо или налево",height:20,type:"Предписывающие знаки"},"4.2.1":{title:"Объезд препятствия справа",height:20,type:"Предписывающие знаки"},"4.2.2":{title:"Объезд препятствия слева",height:20,type:"Предписывающие знаки"},"4.2.3":{title:"Объезд препятствия справа или слева",height:20,type:"Предписывающие знаки"},4.3:{title:"Круговое движение",height:20,type:"Предписывающие знаки"},"4.4.1":{title:"Велосипедная дорожка",height:20,type:"Предписывающие знаки"},"4.4.2":{title:"Конец велосипедной дорожки",height:20,type:"Предписывающие знаки"},"4.5.1":{title:"Пешеходная дорожка",height:20,type:"Предписывающие знаки"},"4.5.2":{title:"Пешеходная и велосипедная дорожка с совмещённым движением",height:20,type:"Предписывающие знаки"},"4.5.3":{title:"Конец пешеходной и велосипедной дорожки с совмещённым движением",height:20,type:"Предписывающие знаки"},"4.5.4":{title:"Пешеходная и велосипедная дорожка с разделением движения",height:20,type:"Предписывающие знаки"},"4.5.5":{title:"Пешеходная и велосипедная дорожка с разделением движения",height:20,type:"Предписывающие знаки"},"4.5.6":{title:"Конец пешеходной и велосипедной дорожки с разделением движения",height:20,type:"Предписывающие знаки"},"4.5.7":{title:"Конец пешеходной и велосипедной дорожки с разделением движения",height:20,type:"Предписывающие знаки"},"4.6-50":{title:"Ограничение минимальной скорости",height:20,type:"Предписывающие знаки"},"4.7-50":{title:"Конец зоны ограничения минимальной скорости",height:20,type:"Предписывающие знаки"},"4.8.1":{title:"Направление движения транспортных средств с опасными грузами",height:30,type:"Предписывающие знаки"},"4.8.2":{title:"Направление движения транспортных средств с опасными грузами",height:30,type:"Предписывающие знаки"},"4.8.3":{title:"Направление движения транспортных средств с опасными грузами",height:30,type:"Предписывающие знаки"},5.1:{title:"Автомагистраль",height:30,type:"Знаки особых предписаний"},5.2:{title:"Конец автомагистрали",height:30,type:"Знаки особых предписаний"},5.3:{title:"Дорога для автомобилей",height:30,type:"Знаки особых предписаний"},5.4:{title:"Конец дороги для автомобилей",height:30,type:"Знаки особых предписаний"},5.5:{title:"Дорога с односторонним движением",height:20,type:"Знаки особых предписаний"},5.6:{title:"Конец дороги с односторонним движением",height:20,type:"Знаки особых предписаний"},"5.7.1":{title:"Выезд на дорогу с односторонним движением",height:20,type:"Знаки особых предписаний"},"5.7.2":{title:"Выезд на дорогу с односторонним движением",height:20,type:"Знаки особых предписаний"},5.8:{title:"Реверсивное движение",height:20,type:"Знаки особых предписаний"},5.9:{title:"Конец реверсивного движения",height:20,type:"Знаки особых предписаний"},"5.10":{title:"Выезд на дорогу с реверсивным движением",height:20,type:"Знаки особых предписаний"},"5.11.1":{title:"Дорога с полосой для маршрутных транспортных средств",height:20,type:"Знаки особых предписаний"},"5.11.2":{title:"Дорога с полосой для велосипедистов",height:20,type:"Знаки особых предписаний"},"5.12.1":{title:"Конец дороги с полосой для маршрутных транспортных средств",height:20,type:"Знаки особых предписаний"},"5.12.2":{title:"Конец дороги с полосой для велосипедистов",height:20,type:"Знаки особых предписаний"},"5.13.1":{title:"Выезд на дорогу с полосой для маршрутных транспортных средств",height:20,type:"Знаки особых предписаний"},"5.13.2":{title:"Выезд на дорогу с полосой для маршрутных транспортных средств",height:20,type:"Знаки особых предписаний"},"5.13.3":{title:"Выезд на дорогу с полосой для велосипедистов",height:20,type:"Знаки особых предписаний"},"5.13.4":{title:"Выезд на дорогу с полосой для велосипедистов",height:20,type:"Знаки особых предписаний"},"5.14.1":{title:"Полоса для маршрутных транспортных средств",height:20,type:"Знаки особых предписаний"},"5.14.2":{title:"Полоса для велосипедистов",height:20,type:"Знаки особых предписаний"},"5.14.3":{title:"Конец полосы для маршрутных транспортных средств",height:20,type:"Знаки особых предписаний"},"5.14.4":{title:"Конец полосы для велосипедистов",height:20,type:"Знаки особых предписаний"},"5.15.1":{title:"Направления движения по полосам",height:20,type:"Знаки особых предписаний"},"5.15.2 A":{title:"Направления движения по полосе",height:20,type:"Знаки особых предписаний"},"5.15.2 B":{title:"Направления движения по полосе",height:20,type:"Знаки особых предписаний"},"5.15.2 C":{title:"Направления движения по полосе",height:20,type:"Знаки особых предписаний"},"5.15.2 D":{title:"Направления движения по полосе",height:20,type:"Знаки особых предписаний"},"5.15.2 E":{title:"Направления движения по полосе",height:20,type:"Знаки особых предписаний"},"5.15.2 F":{title:"Направления движения по полосе",height:20,type:"Знаки особых предписаний"},"5.15.2 G":{title:"Направления движения по полосе",height:20,type:"Знаки особых предписаний"},"5.15.2 H":{title:"Направления движения по полосе",height:20,type:"Знаки особых предписаний"},"5.15.2 I":{title:"Направления движения по полосе",height:20,type:"Знаки особых предписаний"},"5.15.2 K":{title:"Направления движения по полосе",height:20,type:"Знаки особых предписаний"},"5.15.3 A":{title:"Начало полосы",height:20,type:"Знаки особых предписаний"},"5.15.3 B":{title:"Начало полосы",height:20,type:"Знаки особых предписаний"},"5.15.3 C":{title:"Начало полосы",height:20,type:"Знаки особых предписаний"},"5.15.4 A":{title:"Начало полосы",height:20,type:"Знаки особых предписаний"},"5.15.4 B":{title:"Начало полосы",height:20,type:"Знаки особых предписаний"},"5.15.5":{title:"Конец полосы",height:20,type:"Знаки особых предписаний"},"5.15.6":{title:"Конец полосы",height:20,type:"Знаки особых предписаний"},"5.15.7 A":{title:"Направление движения по полосам",height:20,type:"Знаки особых предписаний"},"5.15.7 B":{title:"Направление движения по полосам",height:20,type:"Знаки особых предписаний"},"5.15.7 C":{title:"Направление движения по полосам",height:20,type:"Знаки особых предписаний"},"5.15.8":{title:"Число полос",height:20,type:"Знаки особых предписаний"},5.16:{title:"Место остановки автобуса и (или) троллейбуса",height:30,type:"Знаки особых предписаний"},5.17:{title:"Место остановки трамвая",height:30,type:"Знаки особых предписаний"},5.18:{title:"Место стоянки легковых такси",height:30,type:"Знаки особых предписаний"},"5.19.1":{title:"Пешеходный переход",height:20,type:"Знаки особых предписаний"},"5.19.2":{title:"Пешеходный переход",height:20,type:"Знаки особых предписаний"},"5.19.3":{title:"Диагональный пешеходный переход",height:20,type:"Знаки особых предписаний"},"5.19.4 A":{title:"Диагональный пешеходный переход",height:20,type:"Знаки особых предписаний"},"5.19.4 B":{title:"Диагональный пешеходный переход",height:20,type:"Знаки особых предписаний"},"5.20":{title:"Искусственная неровность",height:20,type:"Знаки особых предписаний"},5.21:{title:"Жилая зона",height:30,type:"Знаки особых предписаний"},5.22:{title:"Конец жилой зоны",height:30,type:"Знаки особых предписаний"},"5.23.1":{title:"Начало населённого пункта",height:20,type:"Знаки особых предписаний"},"5.23.2":{title:"Начало населённого пункта",height:20,type:"Знаки особых предписаний"},"5.24.1":{title:"Конец населённого пункта",height:20,type:"Знаки особых предписаний"},"5.24.2":{title:"Конец населённого пункта",height:20,type:"Знаки особых предписаний"},5.25:{title:"Начало населённого пункта",height:20,type:"Знаки особых предписаний"},5.26:{title:"Конец населённого пункта",height:20,type:"Знаки особых предписаний"},5.27:{title:"Зона с ограничением стоянки",height:30,type:"Знаки особых предписаний"},5.28:{title:"Конец зоны с ограничением стоянки",height:30,type:"Знаки особых предписаний"},5.29:{title:"Зона регулируемой стоянки",height:30,type:"Знаки особых предписаний"},"5.30":{title:"Конец зоны регулируемой стоянки",height:30,type:"Знаки особых предписаний"},5.31:{title:"Зона с ограничением максимальной скорости",height:30,type:"Знаки особых предписаний"},5.32:{title:"Конец зоны с ограничением максимальной скорости",height:30,type:"Знаки особых предписаний"},5.33:{title:"Пешеходная зона",height:30,type:"Знаки особых предписаний"},5.34:{title:"Конец пешеходной зоны",height:30,type:"Знаки особых предписаний"},5.35:{title:"Зона с ограничением экологического класса механических транспортных средств",height:30,type:"Знаки особых предписаний"},5.36:{title:"Конец зоны с ограничением экологического класса механических транспортных средств",height:30,type:"Знаки особых предписаний"},"5.37 A":{title:"Зона с ограничением экологического класса по видам транспортных средств",height:30,type:"Знаки особых предписаний"},"5.37 B":{title:"Зона с ограничением экологического класса по видам транспортных средств",height:30,type:"Знаки особых предписаний"},"5.38 A":{title:"Конец зоны с ограничением экологического класса по видам транспортных средств",height:30,type:"Знаки особых предписаний"},"5.38 B":{title:"Конец зоны с ограничением экологического класса по видам транспортных средств",height:30,type:"Знаки особых предписаний"},5.39:{title:"Велосипедная зона",height:30,type:"Знаки особых предписаний"},"5.40":{title:"Конец велосипедной зоны",height:30,type:"Знаки особых предписаний"},6.1:{title:"Общие ограничения максимальной скорости",height:30,type:"Информационные знаки"},"6.2-50":{title:"Рекомендуемая скорость",height:20,type:"Информационные знаки"},"6.3.1":{title:"Место для разворота",height:20,type:"Информационные знаки"},"6.3.2":{title:"Зона для разворота",height:20,type:"Информационные знаки"},"6.4 A":{title:"Парковка (парковочное место)",height:20,type:"Информационные знаки"},"6.4 B":{title:"Парковка (платные услуги)",height:20,type:"Информационные знаки"},"6.4 C":{title:"Парковка (только для инвалидов)",height:20,type:"Информационные знаки"},6.5:{title:"Полоса аварийной остановки",height:20,type:"Информационные знаки"},6.6:{title:"Подземный пешеходный переход",height:20,type:"Информационные знаки"},6.7:{title:"Надземный пешеходный переход",height:20,type:"Информационные знаки"},"6.8.1":{title:"Тупик",height:20,type:"Информационные знаки"},"6.8.2":{title:"Тупик",height:20,type:"Информационные знаки"},"6.8.3":{title:"Тупик",height:20,type:"Информационные знаки"},"6.9.1 A":{title:"Предварительный указатель направлений",height:20,type:"Информационные знаки"},"6.9.1 B":{title:"Предварительный указатель направлений",height:20,type:"Информационные знаки"},"6.9.1 C":{title:"Предварительный указатель направлений",height:20,type:"Информационные знаки"},"6.9.1 D":{title:"Предварительный указатель направлений",height:20,type:"Информационные знаки"},"6.9.1 E":{title:"Предварительный указатель направлений",height:20,type:"Информационные знаки"},"6.9.1 F":{title:"Предварительный указатель направлений",height:20,type:"Информационные знаки"},"6.9.2 A":{title:"Предварительный указатель направления",height:20,type:"Информационные знаки"},"6.9.2 B":{title:"Предварительный указатель направления",height:20,type:"Информационные знаки"},"6.9.2 C":{title:"Предварительный указатель направления",height:20,type:"Информационные знаки"},"6.9.3":{title:"Схема движения",height:20,type:"Информационные знаки"},"6.10.1 A":{title:"Указатель направлений",height:20,type:"Информационные знаки"},"6.10.1 B":{title:"Указатель направлений",height:20,type:"Информационные знаки"},"6.10.1 C":{title:"Указатель направлений",height:20,type:"Информационные знаки"},"6.10.1 D":{title:"Указатель направлений",height:20,type:"Информационные знаки"},"6.10.1 E":{title:"Указатель направлений",height:20,type:"Информационные знаки"},"6.10.1 F":{title:"Указатель направлений",height:20,type:"Информационные знаки"},"6.10.1 G":{title:"Указатель направлений",height:20,type:"Информационные знаки"},"6.10.2 A":{title:"Указатель направления",height:20,type:"Информационные знаки"},"6.10.2 B":{title:"Указатель направления",height:20,type:"Информационные знаки"},"6.11 A":{title:"Наименование объекта",height:20,type:"Информационные знаки"},"6.11 B":{title:"Наименование объекта",height:20,type:"Информационные знаки"},"6.11 C":{title:"Наименование объекта",height:20,type:"Информационные знаки"},"6.11 D":{title:"Наименование объекта",height:20,type:"Информационные знаки"},"6.12 A":{title:"Указатель расстояний",height:20,type:"Информационные знаки"},"6.12 B":{title:"Указатель расстояний",height:20,type:"Информационные знаки"},"6.12 C":{title:"Указатель расстояний",height:20,type:"Информационные знаки"},"6.13 A":{title:"Километровый знак",height:20,type:"Информационные знаки"},"6.13 B":{title:"Километровый знак",height:20,type:"Информационные знаки"},"6.13 C":{title:"Километровый знак",height:20,type:"Информационные знаки"},"6.13 D":{title:"Километровый знак",height:20,type:"Информационные знаки"},"6.13 E":{title:"Километровый знак",height:20,type:"Информационные знаки"},"6.14.1 A":{title:"Номер маршрута",height:20,type:"Информационные знаки"},"6.14.1 B":{title:"Номер маршрута",height:20,type:"Информационные знаки"},"6.14.1 C":{title:"Номер маршрута",height:20,type:"Информационные знаки"},"6.14.1 D":{title:"Номер маршрута",height:20,type:"Информационные знаки"},"6.14.2 A":{title:"Номер маршрута",height:20,type:"Информационные знаки"},"6.14.2 B":{title:"Номер маршрута",height:20,type:"Информационные знаки"},"6.14.2 C":{title:"Номер маршрута",height:20,type:"Информационные знаки"},"6.15.1":{title:"Направление движения для грузовых автомобилей",height:20,type:"Информационные знаки"},"6.15.2":{title:"Направление движения для грузовых автомобилей",height:20,type:"Информационные знаки"},"6.15.3":{title:"Направление движения для грузовых автомобилей",height:20,type:"Информационные знаки"},6.16:{title:"Стоп-линия",height:20,type:"Информационные знаки"},6.17:{title:"Схема объезда",height:25,type:"Информационные знаки"},"6.18.1":{title:"Направление объезда",height:20,type:"Информационные знаки"},"6.18.2":{title:"Направление объезда",height:20,type:"Информационные знаки"},"6.18.3":{title:"Направление объезда",height:20,type:"Информационные знаки"},"6.19.1":{title:"Предварительный указатель перестроения на другую проезжую часть",height:25,type:"Информационные знаки"},"6.19.2":{title:"Предварительный указатель перестроения на другую проезжую часть",height:25,type:"Информационные знаки"},"6.20.1":{title:"Аварийный выход",height:20,type:"Информационные знаки"},"6.20.2":{title:"Аварийный выход",height:20,type:"Информационные знаки"},"6.21.1":{title:"Направление движения к аварийному выходу",height:20,type:"Информационные знаки"},"6.21.2":{title:"Направление движения к аварийному выходу",height:20,type:"Информационные знаки"},6.22:{title:"Фотовидеофиксация",height:20,type:"Информационные знаки"},7.1:{title:"Пункт медицинской помощи",height:30,type:"Знаки сервиса"},7.2:{title:"Больница",height:30,type:"Знаки сервиса"},7.3:{title:"Автозаправочная станция",height:30,type:"Знаки сервиса"},7.4:{title:"Техническое обслуживание автомобилей",height:30,type:"Знаки сервиса"},7.5:{title:"Мойка автомобилей",height:30,type:"Знаки сервиса"},7.6:{title:"Телефон",height:30,type:"Знаки сервиса"},7.7:{title:"Пункт питания",height:30,type:"Знаки сервиса"},7.8:{title:"Питьевая вода",height:30,type:"Знаки сервиса"},7.9:{title:"Гостиница или мотель",height:30,type:"Знаки сервиса"},"7.10":{title:"Кемпинг",height:30,type:"Знаки сервиса"},7.11:{title:"Место отдыха",height:30,type:"Знаки сервиса"},7.12:{title:"Пост ДПС",height:30,type:"Знаки сервиса"},7.13:{title:"Полиция",height:30,type:"Знаки сервиса"},"7.14.1":{title:"Пункт таможенного контроля",height:30,type:"Знаки сервиса"},"7.14.2":{title:"Пункт транспортного контроля",height:30,type:"Знаки сервиса"},7.15:{title:"Зона приёма радиостанции, передающей информацию о дорожном движении",height:30,type:"Знаки сервиса"},7.16:{title:"Зона радиосвязи с аварийными службами",height:30,type:"Знаки сервиса"},7.17:{title:"Бассейн или пляж",height:30,type:"Знаки сервиса"},7.18:{title:"Туалет",height:30,type:"Знаки сервиса"},7.19:{title:"Телефон экстренной связи",height:30,type:"Знаки сервиса"},"7.20":{title:"Огнетушитель",height:30,type:"Знаки сервиса"},7.21:{title:"Автозаправочная станция с возможностью зарядки электромобилей",height:30,type:"Знаки сервиса"}},Q_={"8.1.1":{title:"Расстояние до объекта",height:20,type:"Знаки дополнительной информации"},"8.1.2":{title:"Расстояние до объекта",height:20,type:"Знаки дополнительной информации"},"8.1.3":{title:"Расстояние до объекта",height:20,type:"Знаки дополнительной информации"},"8.1.4":{title:"Расстояние до объекта",height:20,type:"Знаки дополнительной информации"},"8.2.1":{title:"Зона действия",height:20,type:"Знаки дополнительной информации"},"8.2.2":{title:"Зона действия",height:40,type:"Знаки дополнительной информации"},"8.2.3":{title:"Зона действия",height:40,type:"Знаки дополнительной информации"},"8.2.4":{title:"Зона действия",height:40,type:"Знаки дополнительной информации"},"8.2.5":{title:"Зона действия",height:20,type:"Знаки дополнительной информации"},"8.2.6":{title:"Зона действия",height:20,type:"Знаки дополнительной информации"},"8.3.1":{title:"Направления действия",height:20,type:"Знаки дополнительной информации"},"8.3.2":{title:"Направления действия",height:20,type:"Знаки дополнительной информации"},"8.3.3":{title:"Направления действия",height:20,type:"Знаки дополнительной информации"},"8.4.1":{title:"Вид транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.2":{title:"Вид транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.3.1":{title:"Вид транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.3.2":{title:"Вид транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.4":{title:"Вид транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.5":{title:"Вид транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.6":{title:"Вид транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.7.1":{title:"Вид транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.7.2":{title:"Вид транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.8":{title:"Вид транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.9":{title:"Кроме вида транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.10":{title:"Кроме вида транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.11":{title:"Кроме вида транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.12":{title:"Кроме вида транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.13":{title:"Кроме вида транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.14":{title:"Кроме вида транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.15":{title:"Кроме вида транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.5.1":{title:"Субботние, воскресные и праздничные дни",height:20,type:"Знаки дополнительной информации"},"8.5.2":{title:"Рабочие дни",height:20,type:"Знаки дополнительной информации"},"8.5.3":{title:"Дни недели",height:20,type:"Знаки дополнительной информации"},"8.5.4":{title:"Время действия",height:20,type:"Знаки дополнительной информации"},"8.5.5":{title:"Время действия",height:20,type:"Знаки дополнительной информации"},"8.5.6":{title:"Время действия",height:20,type:"Знаки дополнительной информации"},"8.5.7":{title:"Время действия",height:20,type:"Знаки дополнительной информации"},"8.6.1":{title:"Способ постановки транспортного средства на стоянку",height:20,type:"Знаки дополнительной информации"},"8.6.2":{title:"Способ постановки транспортного средства на стоянку",height:20,type:"Знаки дополнительной информации"},"8.6.3":{title:"Способ постановки транспортного средства на стоянку",height:20,type:"Знаки дополнительной информации"},"8.6.4":{title:"Способ постановки транспортного средства на стоянку",height:20,type:"Знаки дополнительной информации"},"8.6.5":{title:"Способ постановки транспортного средства на стоянку",height:20,type:"Знаки дополнительной информации"},"8.6.6":{title:"Способ постановки транспортного средства на стоянку",height:20,type:"Знаки дополнительной информации"},"8.6.7":{title:"Способ постановки транспортного средства на стоянку",height:20,type:"Знаки дополнительной информации"},"8.6.8":{title:"Способ постановки транспортного средства на стоянку",height:20,type:"Знаки дополнительной информации"},"8.6.9":{title:"Способ постановки транспортного средства на стоянку",height:20,type:"Знаки дополнительной информации"},8.7:{title:"Стоянка с неработающим двигателем",height:20,type:"Знаки дополнительной информации"},8.8:{title:"Платные услуги",height:20,type:"Знаки дополнительной информации"},"8.9.1":{title:"Ограничение продолжительности стоянки",height:20,type:"Знаки дополнительной информации"},"8.9.2":{title:"Стоянка только для владельцев парковочных разрешений",height:20,type:"Знаки дополнительной информации"},"8.9.3":{title:"Стоянка только транспортных средств дипломатического корпуса",height:20,type:"Знаки дополнительной информации"},"8.10":{title:"Место для осмотра автомобилей",height:20,type:"Знаки дополнительной информации"},8.11:{title:"Ограничение разрешённой максимальной массы",height:20,type:"Знаки дополнительной информации"},8.12:{title:"Опасная обочина",height:20,type:"Знаки дополнительной информации"},8.13:{title:"Направление главной дороги",height:20,type:"Знаки дополнительной информации"},"8.13 B":{title:"Направление главной дороги",height:20,type:"Знаки дополнительной информации"},8.14:{title:"Полоса движения",height:20,type:"Знаки дополнительной информации"},8.15:{title:"Слепые пешеходы",height:20,type:"Знаки дополнительной информации"},8.16:{title:"Влажное покрытие",height:20,type:"Знаки дополнительной информации"},8.17:{title:"Инвалиды",height:20,type:"Знаки дополнительной информации"},8.18:{title:"Кроме инвалидов",height:20,type:"Знаки дополнительной информации"},8.19:{title:"Класс опасного груза",height:20,type:"Знаки дополнительной информации"},"8.20.1":{title:"Тип тележки транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.20.2":{title:"Тип тележки транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.21.1":{title:"Вид маршрутного транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.21.2":{title:"Вид маршрутного транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.21.3":{title:"Вид маршрутного транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.22.1":{title:"Препятствие",height:68,type:"Знаки дополнительной информации"},"8.22.2":{title:"Препятствие",height:68,type:"Знаки дополнительной информации"},"8.22.3":{title:"Препятствие",height:68,type:"Знаки дополнительной информации"},8.24:{title:"Работает эвакуатор",height:20,type:"Знаки дополнительной информации"},8.25:{title:"Экологический класс транспортного средства",height:20,type:"Знаки дополнительной информации"},8.26:{title:"Зарядка электромобилей",height:20,type:"Знаки дополнительной информации"}},J_={...K_,...Q_},eg=e=>{const t=[],n={source:e,layer:o_.TRAFFIC_SIGN},i={},r={};Object.keys(K_).forEach(e=>{const t=`${X_.fileName}-${e}`,{height:n}=K_[e],s=tg({type:"map",number:e});i[t]={url:s,filtering:"mipmap",sprites:{base:[0,0,X_.widths.map,n]}},r[t]={filter:`function() {\n const { traffic_sign_number } = feature;\n\n const isFilter = traffic_sign_number === '${e}';\n\n return isFilter;\n }`,draw:{points:{collide:!1,texture:t,size:[X_.widths.map,n],sprite:"base",placement:"midpoint"}}}});const s={id:pn(),data:n,textures:i,sublayers:r};return t.push(s),t},tg=({type:e,number:t})=>{const n=X_.widths[e];return vn(`msk/${X_.fileName}_${n}/${t}.${X_.extension}`)},ng=e=>{const t={};e.forEach(({traffic_sign_number:e,traffic_sign_title:n,traffic_sign_type:i,height:r})=>{t[e]={title:n,height:Number(r),type:i}}),fn(t)},ig={size:20,extension:"svg"},rg=e=>{const t=[],n={source:e,layer:o_.TRAFFIC_SIGNAL},i={},r="traffic_signal";i[r]={url:vn(`msk/${r}/${r}_${ig.size}.${ig.extension}`),filtering:"mipmap",sprites:{base:[0,0,ig.size,ig.size]}};const s={id:pn(),data:n,draw:{points:{collide:!1,texture:r,size:ig.size,sprite:"base",placement:"midpoint"}},textures:i,sublayers:{}};return t.push(s),t},sg=e=>{const t=[],n={id:pn(),data:{source:e,layer:o_.WATER_AREA},draw:{polygons:{color:"#7DBEE4"},lines:{color:"#7DBEE4",width:20,cap:"round",join:"round"}}},i={id:pn(),data:{source:e,layer:o_.WATER_AREA_LABEL},filter:"function() {\n const { display_class } = feature;\n\n if ($zoom >= 14) {\n return true;\n } else {\n return display_class <= 4;\n }\n }",draw:{text:{text_source:"name",font:{fill:"#0A80C4",size:"14px",stroke:{color:"white",width:"3px"}}}}},r={id:pn(),data:{source:e,layer:o_.WATER_LAKE_LABEL},filter:"function() {\n const { display_class } = feature;\n\n if ($zoom >= 14) {\n return true;\n } else {\n return display_class <= 4;\n }\n }",draw:{text:{text_source:"name",font:{fill:"#0A80C4",size:"14px",stroke:{color:"white",width:"3px"}}}}};return t.push(n,i,r),t},og=e=>{const t=[],n={},i={source:e,layer:o_.WATER_LINK},r={id:pn(),data:i};return n.geometry={draw:{lines:{color:"#7DBEE4",width:5,cap:"round",join:"round"}}},n.text={filter:"function() {\n return $zoom >= 10;\n }",draw:{text:{text_source:"name",font:{fill:"#0A80C4",size:"14px",stroke:{color:"white",width:"3px"}}}}},r.sublayers=n,t.push(r),t},ag="white",lg=.5,ug={1.1:{color:ag,width:lg},1.2:{color:ag,width:lg},1.5:{color:ag,width:lg,dash:[4,10]},1.6:{color:ag,width:lg,dash:[5,5]},1.7:{color:ag,width:lg,dash:[4,10]},"1.7-blue":{color:"blue",width:lg,dash:[4,10]},1.8:{color:ag,width:lg},1.12:{color:ag,width:1.5},"1.14.3":{color:ag,width:lg,dash:[3,8]},"1.16.1":{color:ag,width:lg},"1.16.2":{color:ag,width:lg},"1.16.3":{color:ag,width:lg},"1.16.x":{color:ag,width:lg},"1.17.1":{color:"yellow",width:lg},1.26:{color:"yellow",width:lg}};var cg;!function(e){e.ROAD="Road",e.TUNNEL="Tunnel",e.TRAM="Tram",e.CURB="Curb",e.BRIDGE="Bridge"}(cg||(cg={}));const hg={[cg.ROAD]:"#BABCC2",[cg.TUNNEL]:"#EAEBEE",[cg.TRAM]:"#ADA8A8",[cg.CURB]:"#D2D9E6",[cg.BRIDGE]:"#E1DFDD"},dg=({id:e,data:{source:t,layer:n}})=>`${e}-${t}-${n}`,fg=({layer:e,order:t,eventHandlers:n})=>{const i=structuredClone(e),{draw:r,sublayers:s}=i,o=Boolean(n?.[e.data.layer]);if(r){const{points:e,lines:n,polygons:s,text:a,styles:l}=r;e&&(r.points={...structuredClone(e),order:t,interactive:o}),n&&(r.lines={...structuredClone(n),order:t,interactive:o}),s&&(r.polygons={...structuredClone(s),order:t,interactive:o}),a&&(r.text={...structuredClone(a),order:t,interactive:o}),l&&(r.styles=Object.entries(l).reduce((e,[n,i])=>({...e,[n]:{...structuredClone(i),order:t}}),{})),i.draw=structuredClone(r)}return s&&(Object.entries(s).forEach(([e,n])=>{if(n){const{draw:i}=n;if(i){const{points:e,lines:r,polygons:s,text:a}=i;a&&(i.text={...structuredClone(a),order:t,interactive:o}),e&&(i.points={...structuredClone(e),order:t,interactive:o}),r&&(i.lines={...structuredClone(r),order:t,interactive:o}),s&&(i.polygons={...structuredClone(s),order:t,interactive:o}),n.draw=structuredClone(i)}s[e]=structuredClone(n)}}),i.sublayers=structuredClone(s)),i},pg=e=>{const t=p_(e),n=D_(),i=I_(),r=f_(e),s=b_(e),o=x_(e),a=sg(e),l=F_(e),u=[];if(e===a_.MSK)u.push(...t,...r,...s,...o,...a,...l);else u.push(...t,...r,...s,...n,...i,...o,...a,...l);return u},mg=e=>{const t=z_(e),n=Y_(e),i=og(e),r=j_(e),s=v_(e),o=[...i,...n,...t];if(e===a_.MSK);else o.push(...r,...s);return o},_g=e=>{const t=W_(e),n=g_(e);return[...t,...H_(e),...n,...eg(e),...rg(e),...__(e),...U_(e)]},gg=e=>{const t=[],n=d_(e),i=pg(e),r=mg(e),s=_g(e),o=(e=>{const t=[],n={source:e,layer:o_.ROAD_POLY};return Object.values(cg).forEach(e=>{const i={id:pn(),data:n,filter:`function() {\n const { type } = feature;\n\n const isFilter = type === '${e}';\n\n return isFilter;\n }`,draw:{polygons:{color:hg[e]}}};t.push(i)}),t})(e),a=(e=>{const t=[],n={source:e,layer:o_.LANE_MARKING_POLY},i={id:pn(),data:n,filter:"function() {\n const { poly_number } = feature;\n\n const isFilter = poly_number === '1.14.1';\n\n return isFilter;\n }",draw:{styles:{zebra_crossing:{attributes:{a_angle:"function() {\n return feature.angle;\n }"}}}}};return t.push(i),t})(e),l=(e=>{const t=[],n={source:e,layer:o_.LANE_MARKING_LINE},i=Object.entries(ug).reduce((e,[t,n])=>{const i={filter:`function () {\n const { lane_number } = feature;\n\n const isFilter = lane_number === '${t}';\n\n return isFilter;\n }`,draw:{lines:n}};return{...e,[t]:i}},{}),r={id:pn(),data:n,sublayers:i},s={"1.3-left":{id:pn(),data:n,filter:"function() {\n const { lane_number } = feature;\n\n const isFilter = lane_number === '1.3';\n\n return isFilter;\n }",draw:{lines:{color:ag,width:lg,offset:-.5}}},"1.3-right":{id:pn(),data:n,filter:"function() {\n const { lane_number } = feature;\n\n const isFilter = lane_number === '1.3';\n\n return isFilter;\n }",draw:{lines:{color:ag,width:lg,offset:lg}}},"1.11r-left":{id:pn(),data:n,filter:"function() {\n const { lane_number } = feature;\n\n const isFilter = lane_number === '1.11r';\n\n return isFilter;\n }",draw:{lines:{color:ag,width:lg,offset:-.5}}},"1.11r-right":{id:pn(),data:n,filter:"function() {\n const { lane_number } = feature;\n\n const isFilter = lane_number === '1.11r';\n\n return isFilter;\n }",draw:{lines:{color:ag,width:lg,offset:lg,dash:[5,5]}}},"1.11l-left":{id:pn(),data:n,filter:"function() {\n const { lane_number } = feature;\n\n const isFilter = lane_number === '1.11l';\n\n return isFilter;\n }",draw:{lines:{color:ag,width:lg,offset:-.5,dash:[5,5]}}},"1.11l-right":{id:pn(),data:n,filter:"function() {\n const { lane_number } = feature;\n\n const isFilter = lane_number === '1.11l';\n\n return isFilter;\n }",draw:{lines:{color:ag,width:lg,offset:lg}}},"1.25-left":{id:pn(),data:n,filter:"function() {\n const { lane_number } = feature;\n\n const isFilter = lane_number === '1.25';\n\n return isFilter;\n }",draw:{lines:{color:ag,width:1,offset:-.5,dash:[1,1],dash_background_color:[0,0,0,0]}}},"1.25-right":{id:pn(),data:n,filter:"function() {\n const { lane_number } = feature;\n\n const isFilter = lane_number === '1.25';\n\n return isFilter;\n }",draw:{lines:{color:"rgba(0,0,0,0)",width:1,offset:.5,dash:[1,1],dash_background_color:[1,1,1]}}}};return t.push(r,...Object.values(s)),t})(e),u=w_(e),c=(e=>{const t=[],n={source:e,layer:o_.PARKING_LINE},i={id:pn(),data:n,draw:{lines:{color:"white",width:1}}};return t.push(i),t})(e);if(e===a_.MSK)t.push(...i,...r,...o,...a,...u,...l,...c,...n,...s);else t.push(...i,...r,...n,...s);return t},yg=e=>`${e.getFullYear()}-${`${e.getUTCMonth()+1}`.padStart(2,"0")}-${`${e.getUTCDate()}`.padStart(2,"0")}`,vg=e=>{const t={[ge.CREATE]:"",[ge.UPDATE]:"",[ge.DELETE]:""};return Object.values(ge).forEach(n=>{t[n]=`${e}-${n}`}),t},bg=({eventHandlers:t,defaultLayers:n})=>{const[i,r]=e.useState(null),[s,o]=e.useState(null),[a,l]=e.useState(null),u=e.useMemo(()=>{if(null===i)return null;const{scene:e}=i;return e},[i]),c=e.useCallback(e=>{if(s&&i){const t=i.getContainer();e?s.scrollWheelZoom.enable():s.scrollWheelZoom.disable(),t.style.pointerEvents=e?"auto":"none"}},[s,i]),h=e.useCallback(()=>{Promise.resolve().then(function(){return pb}).then(()=>{if(window.Tangram){const e=window.Tangram.leafletLayer({scene:h_,modifyScrollWheel:!0,modifyZoomBehavior:!1}),{scene:n}=e;n.subscribe({load:({config:e})=>{l(e)}}),e.on("load",({sourceTarget:n})=>{const i=n._map,r=e.getContainer();e.setSelectionEvents({click:({feature:e,leaflet_event:n})=>{if(e){const{source_layer:i,properties:r}=e;t?.[i]?.click?.({leaflet_event:n,properties:r})}},hover:({feature:e,leaflet_event:n})=>{const r=i.getContainer();if(e){const{source_layer:i,properties:s}=e;r.style.cursor="pointer",t?.[i]?.hover?.({leaflet_event:n,properties:s})}else r.style.cursor="default"}}),i.scrollWheelZoom.enable(),r.style.pointerEvents="auto",o(i)}),r(e)}})},[t]),d=e.useCallback(e=>{a?e(a):l_.warn({message:"Config не инициализирована"})},[a]),f=e.useCallback(e=>{d(t=>{u?e({config:t,scene:u}):l_.warn({message:"Scene не инициализирована"})})},[d,u]),p=e.useCallback(e=>{f(({config:t,scene:n})=>{const i=c_[e];t.sources[e]={tile_size:256,url:i,type:"MVT"},n.updateConfig({rebuild:!0})})},[f]),m=e.useCallback(e=>{f(({config:t,scene:n})=>{delete t.sources[e],n.updateConfig({rebuild:!0})})},[f]),_=e.useCallback(e=>{let t=null;return d(n=>{t=structuredClone(n.sources[e])}),t},[d]),g=e.useCallback((e,t)=>{f(({config:n,scene:i})=>{n.sources[e].url=t,i.updateConfig({rebuild:!0})})},[f]),y=e.useCallback(e=>{m(e),p(e)},[m,p]),v=e.useCallback(e=>{f(({config:n,scene:i})=>{const r=A().length+1,s=fg({layer:e,order:r,eventHandlers:t}),o=dg(s),{sublayers:a,draw:l,textures:u}=s;if(l){const{styles:e}=l;e&&(s.draw={...structuredClone(s.draw),...structuredClone(e)})}n.layers[o]={...structuredClone(s),...structuredClone(a)},n.textures={...structuredClone(n.textures),...structuredClone(u)},i.updateConfig({rebuild:!0})})},[f]),b=e.useCallback(e=>{const t=dg(e);f(({config:e,scene:n})=>{delete e.layers[t],n.updateConfig({rebuild:!0})})},[f]),x=e.useCallback(({name:e,style:t})=>{f(({config:n,scene:i})=>{n.styles[e]=structuredClone(t),i.updateConfig({rebuild:!0})})},[f]),w=e.useCallback(e=>{let t=!0;const n=dg(e);return d(e=>{const{visible:i=!0}=e.layers[n];t=i}),t},[dg,d]),E=e.useCallback(({layer:e,visible:t})=>{const n=dg(e);f(({config:e,scene:i})=>{e.layers[n].visible=t,i.updateConfig({rebuild:!0})})},[f]),A=e.useCallback(()=>{const e=[];return d(t=>{e.push(...Object.keys(t.layers))}),e},[d]),T=e.useCallback(()=>{d(e=>{const{layers:t}=e;Object.values(t).forEach(b)})},[d,b]),S=e.useCallback(()=>{const e=[];return d(t=>{e.push(...Object.keys(t.sources))}),e},[a]);return e.useEffect(()=>(ta.instance.isValidApiKey&&h(),()=>{r(null),l(null)}),[ta.instance.isValidApiKey]),e.useEffect(()=>{x({name:"zebra_crossing",style:{base:"polygons",lighting:!1,shaders:{attributes:{a_angle:{type:"float",default:0}},uniforms:{u_stripe_width:1},blocks:{filter:"\n vec3 pos = worldPosition().xyz;\n\n float ang = radians(a_angle);\n\n vec2 dir = vec2(sin(ang), cos(ang));\n\n float positionAlongLine = dot(pos.xy, dir);\n\n float stripe = step(1.0, mod(positionAlongLine / u_stripe_width, 2.0));\n\n color.rgb = mix(vec3(1.0, 1.0, 1.0), vec3(1.0, 0.8, 0.0), stripe);\n \n color.a = 1.0;\n "}}}}),Object.values(a_).forEach(p)},[x,p]),e.useEffect(()=>{n&&n.map(v)},[n,v]),{layer:i,scene:u,config:a,addSource:p,getSource:_,updateSource:g,reloadSource:y,addLayer:v,removeLayer:b,addStyle:x,getLayerVisibility:w,toggleLayerVisibility:E,getSources:S,getLayers:A,removeLayers:T,toggleWheelZoom:c}},xg=m(null);function wg(){return function(){const e=g(xg);if(null==e)throw new Error("No context provided: useLeafletContext() can only be used in a descendant of <MapContainer>");return e}().map}const Eg=({layers:t})=>{const n=wg(),{layer:i}=bg({defaultLayers:t});return e.useEffect(()=>{i&&n.addLayer(i)},[i]),null},Ag={position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",bgcolor:"background.paper",border:"2px solid #000",boxShadow:24,p:4,maxHeight:"90vh",overflowX:"auto",overflowY:"auto"};var Tg=Pl(({name:t,children:n,onClose:i,onOpen:r})=>{const s=e.useId(),o=Yo.getIsOpen(t);return e.useEffect(()=>{o?r?.({name:t}):i?.({name:t})},[o]),x(fe,{open:o,onClose:()=>{Yo.close(t)},"aria-labelledby":`modal-${s}-title`,"aria-describedby":`modal-${s}-description`,children:x(de,{sx:({breakpoints:e})=>({...Ag,[e.up("sm")]:{minWidth:400},[e.down("sm")]:{minWidth:"80vw"}}),children:n})})});function Sg({name:t,items:n,label:i,sx:r,getLabel:s,getValue:o,getKey:a}){const{watch:l,resetField:u,setValue:c}=Dh(),h=l(t),d=e.useId(),f=n.find(e=>o(e)===h)??null;return x(Y,{value:f,options:n,id:d,getOptionLabel:e=>s(e),getOptionKey:e=>a(e),sx:{minWidth:150,...r},size:"small",onChange:(e,n)=>{n?c(t,o(n)):u(t)},renderInput:e=>x(Sd,{...e,label:i})})}const kg=({items:t,initialValue:n,onChange:i})=>{const[r,s]=e.useState(()=>n??t[0].value),o=e.useId();return e.useEffect(()=>{n&&s(n)},[n]),w(pe,{value:r,children:[x(O,{sx:{borderBottom:1,borderColor:"divider"},children:x(me,{"aria-label":`tabs-${o}`,onChange:(e,t)=>{s(t),i?.(t)},children:t.map(({label:e,value:t})=>x(X,{label:e,value:t,sx:{textTransform:"none"}},`${o}-tab-${t}`))})}),t.map(({content:e,value:t})=>x(_e,{value:t,children:e},`${o}-tab-panel-${t}`))]})};var Og,Pg={exports:{}};
23
+ */function wm(){if(lm)return am;lm=1;var e=Object.getOwnPropertySymbols,t=Object.prototype.hasOwnProperty,n=Object.prototype.propertyIsEnumerable;return am=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;var i=Object.getOwnPropertyNames(t).map(function(e){return t[e]});if("0123456789"!==i.join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(i,r){for(var s,o,a=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(i),l=1;l<arguments.length;l++){for(var u in s=Object(arguments[l]))t.call(s,u)&&(a[u]=s[u]);if(e){o=e(s);for(var c=0;c<o.length;c++)n.call(s,o[c])&&(a[o[c]]=s[o[c]])}}return a},am}function Em(){if(cm)return um;cm=1;return um="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}function Am(){return dm?hm:(dm=1,hm=Function.call.bind(Object.prototype.hasOwnProperty))}function Tm(){if(pm)return fm;pm=1;var e=function(){};if("production"!==process.env.NODE_ENV){var t=Em(),n={},i=Am();e=function(e){var t="Warning: "+e;"undefined"!=typeof console&&console.error(t);try{throw new Error(t)}catch(e){}}}function r(r,s,o,a,l){if("production"!==process.env.NODE_ENV)for(var u in r)if(i(r,u)){var c;try{if("function"!=typeof r[u]){var h=Error((a||"React class")+": "+o+" type `"+u+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof r[u]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw h.name="Invariant Violation",h}c=r[u](s,u,a,o,null,t)}catch(e){c=e}if(!c||c instanceof Error||e((a||"React class")+": type specification of "+o+" `"+u+"` is invalid; the type checker function must return `null` or an `Error` but returned a "+typeof c+". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument)."),c instanceof Error&&!(c.message in n)){n[c.message]=!0;var d=l?l():"";e("Failed "+o+" type: "+c.message+(null!=d?d:""))}}}return r.resetWarningCache=function(){"production"!==process.env.NODE_ENV&&(n={})},fm=r}function Sm(){if(_m)return mm;_m=1;var e=xm(),t=wm(),n=Em(),i=Am(),r=Tm(),s=function(){};function o(){return null}return"production"!==process.env.NODE_ENV&&(s=function(e){var t="Warning: "+e;"undefined"!=typeof console&&console.error(t);try{throw new Error(t)}catch(e){}}),mm=function(a,l){var u="function"==typeof Symbol&&Symbol.iterator;var c="<<anonymous>>",h={array:m("array"),bigint:m("bigint"),bool:m("boolean"),func:m("function"),number:m("number"),object:m("object"),string:m("string"),symbol:m("symbol"),any:p(o),arrayOf:function(e){return p(function(t,i,r,s,o){if("function"!=typeof e)return new f("Property `"+o+"` of component `"+r+"` has invalid PropType notation inside arrayOf.");var a=t[i];if(!Array.isArray(a))return new f("Invalid "+s+" `"+o+"` of type `"+y(a)+"` supplied to `"+r+"`, expected an array.");for(var l=0;l<a.length;l++){var u=e(a,l,r,s,o+"["+l+"]",n);if(u instanceof Error)return u}return null})},element:p(function(e,t,n,i,r){var s=e[t];return a(s)?null:new f("Invalid "+i+" `"+r+"` of type `"+y(s)+"` supplied to `"+n+"`, expected a single ReactElement.")}),elementType:p(function(t,n,i,r,s){var o=t[n];return e.isValidElementType(o)?null:new f("Invalid "+r+" `"+s+"` of type `"+y(o)+"` supplied to `"+i+"`, expected a single ReactElement type.")}),instanceOf:function(e){return p(function(t,n,i,r,s){if(!(t[n]instanceof e)){var o=e.name||c;return new f("Invalid "+r+" `"+s+"` of type `"+(((a=t[n]).constructor&&a.constructor.name?a.constructor.name:c)+"` supplied to `")+i+"`, expected instance of `"+o+"`.")}var a;return null})},node:p(function(e,t,n,i,r){return g(e[t])?null:new f("Invalid "+i+" `"+r+"` supplied to `"+n+"`, expected a ReactNode.")}),objectOf:function(e){return p(function(t,r,s,o,a){if("function"!=typeof e)return new f("Property `"+a+"` of component `"+s+"` has invalid PropType notation inside objectOf.");var l=t[r],u=y(l);if("object"!==u)return new f("Invalid "+o+" `"+a+"` of type `"+u+"` supplied to `"+s+"`, expected an object.");for(var c in l)if(i(l,c)){var h=e(l,c,s,o,a+"."+c,n);if(h instanceof Error)return h}return null})},oneOf:function(e){if(!Array.isArray(e))return"production"!==process.env.NODE_ENV&&s(arguments.length>1?"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]).":"Invalid argument supplied to oneOf, expected an array."),o;return p(function(t,n,i,r,s){for(var o=t[n],a=0;a<e.length;a++)if(d(o,e[a]))return null;var l=JSON.stringify(e,function(e,t){return"symbol"===v(t)?String(t):t});return new f("Invalid "+r+" `"+s+"` of value `"+String(o)+"` supplied to `"+i+"`, expected one of "+l+".")})},oneOfType:function(e){if(!Array.isArray(e))return"production"!==process.env.NODE_ENV&&s("Invalid argument supplied to oneOfType, expected an instance of array."),o;for(var t=0;t<e.length;t++){var r=e[t];if("function"!=typeof r)return s("Invalid argument supplied to oneOfType. Expected an array of check functions, but received "+b(r)+" at index "+t+"."),o}return p(function(t,r,s,o,a){for(var l=[],u=0;u<e.length;u++){var c=(0,e[u])(t,r,s,o,a,n);if(null==c)return null;c.data&&i(c.data,"expectedType")&&l.push(c.data.expectedType)}return new f("Invalid "+o+" `"+a+"` supplied to `"+s+"`"+(l.length>0?", expected one of type ["+l.join(", ")+"]":"")+".")})},shape:function(e){return p(function(t,i,r,s,o){var a=t[i],l=y(a);if("object"!==l)return new f("Invalid "+s+" `"+o+"` of type `"+l+"` supplied to `"+r+"`, expected `object`.");for(var u in e){var c=e[u];if("function"!=typeof c)return _(r,s,o,u,v(c));var h=c(a,u,r,s,o+"."+u,n);if(h)return h}return null})},exact:function(e){return p(function(r,s,o,a,l){var u=r[s],c=y(u);if("object"!==c)return new f("Invalid "+a+" `"+l+"` of type `"+c+"` supplied to `"+o+"`, expected `object`.");var h=t({},r[s],e);for(var d in h){var p=e[d];if(i(e,d)&&"function"!=typeof p)return _(o,a,l,d,v(p));if(!p)return new f("Invalid "+a+" `"+l+"` key `"+d+"` supplied to `"+o+"`.\nBad object: "+JSON.stringify(r[s],null," ")+"\nValid keys: "+JSON.stringify(Object.keys(e),null," "));var m=p(u,d,o,a,l+"."+d,n);if(m)return m}return null})}};function d(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}function f(e,t){this.message=e,this.data=t&&"object"==typeof t?t:{},this.stack=""}function p(e){if("production"!==process.env.NODE_ENV)var t={},i=0;function r(r,o,a,u,h,d,p){if(u=u||c,d=d||a,p!==n){if(l){var m=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");throw m.name="Invariant Violation",m}if("production"!==process.env.NODE_ENV&&"undefined"!=typeof console){var _=u+":"+a;!t[_]&&i<3&&(s("You are manually calling a React.PropTypes validation function for the `"+d+"` prop on `"+u+"`. 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."),t[_]=!0,i++)}}return null==o[a]?r?null===o[a]?new f("The "+h+" `"+d+"` is marked as required in `"+u+"`, but its value is `null`."):new f("The "+h+" `"+d+"` is marked as required in `"+u+"`, but its value is `undefined`."):null:e(o,a,u,h,d)}var o=r.bind(null,!1);return o.isRequired=r.bind(null,!0),o}function m(e){return p(function(t,n,i,r,s,o){var a=t[n];return y(a)!==e?new f("Invalid "+r+" `"+s+"` of type `"+v(a)+"` supplied to `"+i+"`, expected `"+e+"`.",{expectedType:e}):null})}function _(e,t,n,i,r){return new f((e||"React class")+": "+t+" type `"+n+"."+i+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+r+"`.")}function g(e){switch(typeof e){case"number":case"string":case"undefined":return!0;case"boolean":return!e;case"object":if(Array.isArray(e))return e.every(g);if(null===e||a(e))return!0;var t=function(e){var t=e&&(u&&e[u]||e["@@iterator"]);if("function"==typeof t)return t}(e);if(!t)return!1;var n,i=t.call(e);if(t!==e.entries){for(;!(n=i.next()).done;)if(!g(n.value))return!1}else for(;!(n=i.next()).done;){var r=n.value;if(r&&!g(r[1]))return!1}return!0;default:return!1}}function y(e){var t=typeof e;return Array.isArray(e)?"array":e instanceof RegExp?"object":function(e,t){return"symbol"===e||!!t&&("Symbol"===t["@@toStringTag"]||"function"==typeof Symbol&&t instanceof Symbol)}(t,e)?"symbol":t}function v(e){if(null==e)return""+e;var t=y(e);if("object"===t){if(e instanceof Date)return"date";if(e instanceof RegExp)return"regexp"}return t}function b(e){var t=v(e);switch(t){case"array":case"object":return"an "+t;case"boolean":case"date":case"regexp":return"a "+t;default:return t}}return f.prototype=Error.prototype,h.checkPropTypes=r,h.resetWarningCache=r.resetWarningCache,h.PropTypes=h,h},mm}function km(){if(ym)return gm;ym=1;var e=Em();function t(){}function n(){}return n.resetWarningCache=t,gm=function(){function i(t,n,i,r,s,o){if(o!==e){var a=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");throw a.name="Invariant Violation",a}}function r(){return i}i.isRequired=i;var s={array:i,bigint:i,bool:i,func:i,number:i,object:i,string:i,symbol:i,any:i,arrayOf:r,element:i,elementType:i,instanceOf:r,node:i,objectOf:r,oneOf:r,oneOfType:r,shape:r,exact:r,checkPropTypes:n,resetWarningCache:t};return s.PropTypes=s,s},gm}function Om(){if(vm)return nm.exports;if(vm=1,"production"!==process.env.NODE_ENV){var e=xm();nm.exports=Sm()(e.isElement,true)}else nm.exports=km()();return nm.exports}var Pm,Cm={exports:{}};var Rm,Mm={},Nm={};function Lm(){if(Rm)return Nm;return Rm=1,Object.defineProperty(Nm,"__esModule",{value:!0}),Nm.dontSetMe=function(e,t,n){if(e[t])return new Error(`Invalid prop ${t} passed to ${n} - do not set this, set it on the child.`)},Nm.findInArray=function(e,t){for(let n=0,i=e.length;n<i;n++)if(t.apply(t,[e[n],n,e]))return e[n]},Nm.int=function(e){return parseInt(e,10)},Nm.isFunction=function(e){return"function"==typeof e||"[object Function]"===Object.prototype.toString.call(e)},Nm.isNum=function(e){return"number"==typeof e&&!isNaN(e)},Nm}var zm,Dm,Im={};function Fm(){if(Dm)return Mm;Dm=1,Object.defineProperty(Mm,"__esModule",{value:!0}),Mm.addClassName=o,Mm.addEvent=function(e,t,n,i){if(!e)return;const r={capture:!0,...i};e.addEventListener?e.addEventListener(t,n,r):e.attachEvent?e.attachEvent("on"+t,n):e["on"+t]=n},Mm.addUserSelectStyles=function(e){if(!e)return;let t=e.getElementById("react-draggable-style-el");t||(t=e.createElement("style"),t.type="text/css",t.id="react-draggable-style-el",t.innerHTML=".react-draggable-transparent-selection *::-moz-selection {all: inherit;}\n",t.innerHTML+=".react-draggable-transparent-selection *::selection {all: inherit;}\n",e.getElementsByTagName("head")[0].appendChild(t));e.body&&o(e.body,"react-draggable-transparent-selection")},Mm.createCSSTransform=function(e,n){const i=r(e,n,"px");return{[(0,t.browserPrefixToKey)("transform",t.default)]:i}},Mm.createSVGTransform=function(e,t){return r(e,t,"")},Mm.getTouch=function(t,n){return t.targetTouches&&(0,e.findInArray)(t.targetTouches,e=>n===e.identifier)||t.changedTouches&&(0,e.findInArray)(t.changedTouches,e=>n===e.identifier)},Mm.getTouchIdentifier=function(e){if(e.targetTouches&&e.targetTouches[0])return e.targetTouches[0].identifier;if(e.changedTouches&&e.changedTouches[0])return e.changedTouches[0].identifier},Mm.getTranslation=r,Mm.innerHeight=function(t){let n=t.clientHeight;const i=t.ownerDocument.defaultView.getComputedStyle(t);return n-=(0,e.int)(i.paddingTop),n-=(0,e.int)(i.paddingBottom),n},Mm.innerWidth=function(t){let n=t.clientWidth;const i=t.ownerDocument.defaultView.getComputedStyle(t);return n-=(0,e.int)(i.paddingLeft),n-=(0,e.int)(i.paddingRight),n},Mm.matchesSelector=i,Mm.matchesSelectorAndParentsTo=function(e,t,n){let r=e;do{if(i(r,t))return!0;if(r===n)return!1;r=r.parentNode}while(r);return!1},Mm.offsetXYFromParent=function(e,t,n){const i=t===t.ownerDocument.body?{left:0,top:0}:t.getBoundingClientRect(),r=(e.clientX+t.scrollLeft-i.left)/n,s=(e.clientY+t.scrollTop-i.top)/n;return{x:r,y:s}},Mm.outerHeight=function(t){let n=t.clientHeight;const i=t.ownerDocument.defaultView.getComputedStyle(t);return n+=(0,e.int)(i.borderTopWidth),n+=(0,e.int)(i.borderBottomWidth),n},Mm.outerWidth=function(t){let n=t.clientWidth;const i=t.ownerDocument.defaultView.getComputedStyle(t);return n+=(0,e.int)(i.borderLeftWidth),n+=(0,e.int)(i.borderRightWidth),n},Mm.removeClassName=a,Mm.removeEvent=function(e,t,n,i){if(!e)return;const r={capture:!0,...i};e.removeEventListener?e.removeEventListener(t,n,r):e.detachEvent?e.detachEvent("on"+t,n):e["on"+t]=null},Mm.scheduleRemoveUserSelectStyles=function(e){window.requestAnimationFrame?window.requestAnimationFrame(()=>{s(e)}):s(e)};var e=Lm(),t=function(e,t){if("function"==typeof WeakMap)var n=new WeakMap,i=new WeakMap;return function(e,t){if(!t&&e&&e.__esModule)return e;var r,s,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(r=t?i:n){if(r.has(e))return r.get(e);r.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((s=(r=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(s.get||s.set)?r(o,t,s):o[t]=e[t]);return o}(e,t)}(function(){if(zm)return Im;zm=1,Object.defineProperty(Im,"__esModule",{value:!0}),Im.browserPrefixToKey=n,Im.browserPrefixToStyle=function(e,t){return t?`-${t.toLowerCase()}-${e}`:e},Im.default=void 0,Im.getPrefix=t;const e=["Moz","Webkit","O","ms"];function t(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"transform";if("undefined"==typeof window)return"";const i=window.document?.documentElement?.style;if(!i)return"";if(t in i)return"";for(let r=0;r<e.length;r++)if(n(t,e[r])in i)return e[r];return""}function n(e,t){return t?`${t}${function(e){let t="",n=!0;for(let i=0;i<e.length;i++)n?(t+=e[i].toUpperCase(),n=!1):"-"===e[i]?n=!0:t+=e[i];return t}(e)}`:e}return Im.default=t(),Im}());let n="";function i(t,i){return n||(n=(0,e.findInArray)(["matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector"],function(n){return(0,e.isFunction)(t[n])})),!!(0,e.isFunction)(t[n])&&t[n](i)}function r(e,t,n){let{x:i,y:r}=e,s=`translate(${i}${n},${r}${n})`;if(t){s=`translate(${`${"string"==typeof t.x?t.x:t.x+n}`}, ${`${"string"==typeof t.y?t.y:t.y+n}`})`+s}return s}function s(e){if(e)try{if(e.body&&a(e.body,"react-draggable-transparent-selection"),e.selection)e.selection.empty();else{const t=(e.defaultView||window).getSelection();t&&"Caret"!==t.type&&t.removeAllRanges()}}catch(e){}}function o(e,t){e.classList?e.classList.add(t):e.className.match(new RegExp(`(?:^|\\s)${t}(?!\\S)`))||(e.className+=` ${t}`)}function a(e,t){e.classList?e.classList.remove(t):e.className=e.className.replace(new RegExp(`(?:^|\\s)${t}(?!\\S)`,"g"),"")}return Mm}var jm,Bm={};function Um(){if(jm)return Bm;jm=1,Object.defineProperty(Bm,"__esModule",{value:!0}),Bm.canDragX=function(e){return"both"===e.props.axis||"x"===e.props.axis},Bm.canDragY=function(e){return"both"===e.props.axis||"y"===e.props.axis},Bm.createCoreData=function(t,i,r){const s=!(0,e.isNum)(t.lastX),o=n(t);return s?{node:o,deltaX:0,deltaY:0,lastX:i,lastY:r,x:i,y:r}:{node:o,deltaX:i-t.lastX,deltaY:r-t.lastY,lastX:t.lastX,lastY:t.lastY,x:i,y:r}},Bm.createDraggableData=function(e,t){const n=e.props.scale;return{node:t.node,x:e.state.x+t.deltaX/n,y:e.state.y+t.deltaY/n,deltaX:t.deltaX/n,deltaY:t.deltaY/n,lastX:e.state.x,lastY:e.state.y}},Bm.getBoundPosition=function(i,r,s){if(!i.props.bounds)return[r,s];let{bounds:o}=i.props;o="string"==typeof o?o:function(e){return{left:e.left,top:e.top,right:e.right,bottom:e.bottom}}(o);const a=n(i);if("string"==typeof o){const{ownerDocument:n}=a,i=n.defaultView;let r;if("parent"===o)r=a.parentNode;else{r=a.getRootNode().querySelector(o)}if(!(r instanceof i.HTMLElement))throw new Error('Bounds selector "'+o+'" could not find an element.');const s=r,l=i.getComputedStyle(a),u=i.getComputedStyle(s);o={left:-a.offsetLeft+(0,e.int)(u.paddingLeft)+(0,e.int)(l.marginLeft),top:-a.offsetTop+(0,e.int)(u.paddingTop)+(0,e.int)(l.marginTop),right:(0,t.innerWidth)(s)-(0,t.outerWidth)(a)-a.offsetLeft+(0,e.int)(u.paddingRight)-(0,e.int)(l.marginRight),bottom:(0,t.innerHeight)(s)-(0,t.outerHeight)(a)-a.offsetTop+(0,e.int)(u.paddingBottom)-(0,e.int)(l.marginBottom)}}(0,e.isNum)(o.right)&&(r=Math.min(r,o.right));(0,e.isNum)(o.bottom)&&(s=Math.min(s,o.bottom));(0,e.isNum)(o.left)&&(r=Math.max(r,o.left));(0,e.isNum)(o.top)&&(s=Math.max(s,o.top));return[r,s]},Bm.getControlPosition=function(e,i,r){const s="number"==typeof i?(0,t.getTouch)(e,i):null;if("number"==typeof i&&!s)return null;const o=n(r),a=r.props.offsetParent||o.offsetParent||o.ownerDocument.body;return(0,t.offsetXYFromParent)(s||e,a,r.props.scale)},Bm.snapToGrid=function(e,t,n){const i=Math.round(t/e[0])*e[0],r=Math.round(n/e[1])*e[1];return[i,r]};var e=Lm(),t=Fm();function n(e){const t=e.findDOMNode();if(!t)throw new Error("<DraggableCore>: Unmounted during event!");return t}return Bm}var Vm,Gm,$m,Zm,qm={},Wm={};function Hm(){if(Vm)return Wm;return Vm=1,Object.defineProperty(Wm,"__esModule",{value:!0}),Wm.default=function(){},Wm}function Ym(){if(Gm)return qm;Gm=1,Object.defineProperty(qm,"__esModule",{value:!0}),qm.default=void 0;var e=function(e,t){if("function"==typeof WeakMap)var n=new WeakMap,i=new WeakMap;return function(e,t){if(!t&&e&&e.__esModule)return e;var r,s,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(r=t?i:n){if(r.has(e))return r.get(e);r.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((s=(r=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(s.get||s.set)?r(o,t,s):o[t]=e[t]);return o}(e,t)}(t),n=l(Om()),i=l(y),r=Fm(),s=Um(),o=Lm(),a=l(Hm());function l(e){return e&&e.__esModule?e:{default:e}}function u(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t);if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const c={start:"touchstart",move:"touchmove",stop:"touchend"},h={start:"mousedown",move:"mousemove",stop:"mouseup"};let d=h,f=class extends e.Component{constructor(){super(...arguments),u(this,"dragging",!1),u(this,"lastX",NaN),u(this,"lastY",NaN),u(this,"touchIdentifier",null),u(this,"mounted",!1),u(this,"handleDragStart",e=>{if(this.props.onMouseDown(e),!this.props.allowAnyClick&&"number"==typeof e.button&&0!==e.button)return!1;const t=this.findDOMNode();if(!t||!t.ownerDocument||!t.ownerDocument.body)throw new Error("<DraggableCore> not mounted on DragStart!");const{ownerDocument:n}=t;if(this.props.disabled||!(e.target instanceof n.defaultView.Node)||this.props.handle&&!(0,r.matchesSelectorAndParentsTo)(e.target,this.props.handle,t)||this.props.cancel&&(0,r.matchesSelectorAndParentsTo)(e.target,this.props.cancel,t))return;"touchstart"!==e.type||this.props.allowMobileScroll||e.preventDefault();const i=(0,r.getTouchIdentifier)(e);this.touchIdentifier=i;const o=(0,s.getControlPosition)(e,i,this);if(null==o)return;const{x:l,y:u}=o,c=(0,s.createCoreData)(this,l,u);(0,a.default)("DraggableCore: handleDragStart: %j",c),(0,a.default)("calling",this.props.onStart);!1!==this.props.onStart(e,c)&&!1!==this.mounted&&(this.props.enableUserSelectHack&&(0,r.addUserSelectStyles)(n),this.dragging=!0,this.lastX=l,this.lastY=u,(0,r.addEvent)(n,d.move,this.handleDrag),(0,r.addEvent)(n,d.stop,this.handleDragStop))}),u(this,"handleDrag",e=>{const t=(0,s.getControlPosition)(e,this.touchIdentifier,this);if(null==t)return;let{x:n,y:i}=t;if(Array.isArray(this.props.grid)){let e=n-this.lastX,t=i-this.lastY;if([e,t]=(0,s.snapToGrid)(this.props.grid,e,t),!e&&!t)return;n=this.lastX+e,i=this.lastY+t}const r=(0,s.createCoreData)(this,n,i);(0,a.default)("DraggableCore: handleDrag: %j",r);if(!1!==this.props.onDrag(e,r)&&!1!==this.mounted)this.lastX=n,this.lastY=i;else try{this.handleDragStop(new MouseEvent("mouseup"))}catch(e){const t=document.createEvent("MouseEvents");t.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),this.handleDragStop(t)}}),u(this,"handleDragStop",e=>{if(!this.dragging)return;const t=(0,s.getControlPosition)(e,this.touchIdentifier,this);if(null==t)return;let{x:n,y:i}=t;if(Array.isArray(this.props.grid)){let e=n-this.lastX||0,t=i-this.lastY||0;[e,t]=(0,s.snapToGrid)(this.props.grid,e,t),n=this.lastX+e,i=this.lastY+t}const o=(0,s.createCoreData)(this,n,i);if(!1===this.props.onStop(e,o)||!1===this.mounted)return!1;const l=this.findDOMNode();l&&this.props.enableUserSelectHack&&(0,r.scheduleRemoveUserSelectStyles)(l.ownerDocument),(0,a.default)("DraggableCore: handleDragStop: %j",o),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,l&&((0,a.default)("DraggableCore: Removing handlers"),(0,r.removeEvent)(l.ownerDocument,d.move,this.handleDrag),(0,r.removeEvent)(l.ownerDocument,d.stop,this.handleDragStop))}),u(this,"onMouseDown",e=>(d=h,this.handleDragStart(e))),u(this,"onMouseUp",e=>(d=h,this.handleDragStop(e))),u(this,"onTouchStart",e=>(d=c,this.handleDragStart(e))),u(this,"onTouchEnd",e=>(d=c,this.handleDragStop(e)))}componentDidMount(){this.mounted=!0;const e=this.findDOMNode();e&&(0,r.addEvent)(e,c.start,this.onTouchStart,{passive:!1})}componentWillUnmount(){this.mounted=!1;const e=this.findDOMNode();if(e){const{ownerDocument:t}=e;(0,r.removeEvent)(t,h.move,this.handleDrag),(0,r.removeEvent)(t,c.move,this.handleDrag),(0,r.removeEvent)(t,h.stop,this.handleDragStop),(0,r.removeEvent)(t,c.stop,this.handleDragStop),(0,r.removeEvent)(e,c.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&(0,r.scheduleRemoveUserSelectStyles)(t)}}findDOMNode(){return this.props?.nodeRef?this.props?.nodeRef?.current:i.default.findDOMNode(this)}render(){return e.cloneElement(e.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}};return qm.default=f,u(f,"displayName","DraggableCore"),u(f,"propTypes",{allowAnyClick:n.default.bool,allowMobileScroll:n.default.bool,children:n.default.node.isRequired,disabled:n.default.bool,enableUserSelectHack:n.default.bool,offsetParent:function(e,t){if(e[t]&&1!==e[t].nodeType)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:n.default.arrayOf(n.default.number),handle:n.default.string,cancel:n.default.string,nodeRef:n.default.object,onStart:n.default.func,onDrag:n.default.func,onStop:n.default.func,onMouseDown:n.default.func,scale:n.default.number,className:o.dontSetMe,style:o.dontSetMe,transform:o.dontSetMe}),u(f,"defaultProps",{allowAnyClick:!1,allowMobileScroll:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1}),qm}function Xm(){return $m||($m=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"DraggableCore",{enumerable:!0,get:function(){return u.default}}),e.default=void 0;var n=function(e,t){if("function"==typeof WeakMap)var n=new WeakMap,i=new WeakMap;return function(e,t){if(!t&&e&&e.__esModule)return e;var r,s,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(r=t?i:n){if(r.has(e))return r.get(e);r.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((s=(r=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(s.get||s.set)?r(o,t,s):o[t]=e[t]);return o}(e,t)}(t),i=h(Om()),r=h(y),s=function(){if(Pm)return Cm.exports;function e(t){var n,i,r="";if("string"==typeof t||"number"==typeof t)r+=t;else if("object"==typeof t)if(Array.isArray(t)){var s=t.length;for(n=0;n<s;n++)t[n]&&(i=e(t[n]))&&(r&&(r+=" "),r+=i)}else for(i in t)t[i]&&(r&&(r+=" "),r+=i);return r}function t(){for(var t,n,i=0,r="",s=arguments.length;i<s;i++)(t=arguments[i])&&(n=e(t))&&(r&&(r+=" "),r+=n);return r}return Pm=1,Cm.exports=t,Cm.exports.clsx=t,Cm.exports}(),o=Fm(),a=Um(),l=Lm(),u=h(Ym()),c=h(Hm());function h(e){return e&&e.__esModule?e:{default:e}}function d(){return d=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)({}).hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},d.apply(null,arguments)}function f(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t);if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class p extends n.Component{static getDerivedStateFromProps(e,t){let{position:n}=e,{prevPropsPosition:i}=t;return!n||i&&n.x===i.x&&n.y===i.y?null:((0,c.default)("Draggable: getDerivedStateFromProps %j",{position:n,prevPropsPosition:i}),{x:n.x,y:n.y,prevPropsPosition:{...n}})}constructor(e){super(e),f(this,"onDragStart",(e,t)=>{(0,c.default)("Draggable: onDragStart: %j",t);if(!1===this.props.onStart(e,(0,a.createDraggableData)(this,t)))return!1;this.setState({dragging:!0,dragged:!0})}),f(this,"onDrag",(e,t)=>{if(!this.state.dragging)return!1;(0,c.default)("Draggable: onDrag: %j",t);const n=(0,a.createDraggableData)(this,t),i={x:n.x,y:n.y,slackX:0,slackY:0};if(this.props.bounds){const{x:e,y:t}=i;i.x+=this.state.slackX,i.y+=this.state.slackY;const[r,s]=(0,a.getBoundPosition)(this,i.x,i.y);i.x=r,i.y=s,i.slackX=this.state.slackX+(e-i.x),i.slackY=this.state.slackY+(t-i.y),n.x=i.x,n.y=i.y,n.deltaX=i.x-this.state.x,n.deltaY=i.y-this.state.y}if(!1===this.props.onDrag(e,n))return!1;this.setState(i)}),f(this,"onDragStop",(e,t)=>{if(!this.state.dragging)return!1;if(!1===this.props.onStop(e,(0,a.createDraggableData)(this,t)))return!1;(0,c.default)("Draggable: onDragStop: %j",t);const n={dragging:!1,slackX:0,slackY:0};if(Boolean(this.props.position)){const{x:e,y:t}=this.props.position;n.x=e,n.y=t}this.setState(n)}),this.state={dragging:!1,dragged:!1,x:e.position?e.position.x:e.defaultPosition.x,y:e.position?e.position.y:e.defaultPosition.y,prevPropsPosition:{...e.position},slackX:0,slackY:0,isElementSVG:!1},!e.position||e.onDrag||e.onStop||console.warn("A `position` was applied to this <Draggable>, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}componentDidMount(){void 0!==window.SVGElement&&this.findDOMNode()instanceof window.SVGElement&&this.setState({isElementSVG:!0})}componentWillUnmount(){this.state.dragging&&this.setState({dragging:!1})}findDOMNode(){return this.props?.nodeRef?.current??r.default.findDOMNode(this)}render(){const{axis:e,bounds:t,children:i,defaultPosition:r,defaultClassName:l,defaultClassNameDragging:c,defaultClassNameDragged:h,position:f,positionOffset:p,scale:m,..._}=this.props;let g={},y=null;const v=!Boolean(f)||this.state.dragging,b=f||r,x={x:(0,a.canDragX)(this)&&v?this.state.x:b.x,y:(0,a.canDragY)(this)&&v?this.state.y:b.y};this.state.isElementSVG?y=(0,o.createSVGTransform)(x,p):g=(0,o.createCSSTransform)(x,p);const w=(0,s.clsx)(i.props.className||"",l,{[c]:this.state.dragging,[h]:this.state.dragged});return n.createElement(u.default,d({},_,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),n.cloneElement(n.Children.only(i),{className:w,style:{...i.props.style,...g},transform:y}))}}e.default=p,f(p,"displayName","Draggable"),f(p,"propTypes",{...u.default.propTypes,axis:i.default.oneOf(["both","x","y","none"]),bounds:i.default.oneOfType([i.default.shape({left:i.default.number,right:i.default.number,top:i.default.number,bottom:i.default.number}),i.default.string,i.default.oneOf([!1])]),defaultClassName:i.default.string,defaultClassNameDragging:i.default.string,defaultClassNameDragged:i.default.string,defaultPosition:i.default.shape({x:i.default.number,y:i.default.number}),positionOffset:i.default.shape({x:i.default.oneOfType([i.default.number,i.default.string]),y:i.default.oneOfType([i.default.number,i.default.string])}),position:i.default.shape({x:i.default.number,y:i.default.number}),className:l.dontSetMe,style:l.dontSetMe,transform:l.dontSetMe}),f(p,"defaultProps",{...u.default.defaultProps,axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},scale:1})}(tm)),tm}var Km=function(){if(Zm)return em.exports;Zm=1;const{default:e,DraggableCore:t}=Xm();return em.exports=e,em.exports.default=e,em.exports.DraggableCore=t,em.exports}(),Qm=ve(Km);const Jm=({zIndex:t,width:n,bottom:i,right:r,left:s,top:o,sx:a,children:l})=>{const u=e.useId(),c=e.useRef(null);return x(H,{children:x(Qm,{nodeRef:c,children:x(O,{id:u,ref:c,sx:()=>({position:"absolute",top:o,left:s,bottom:i,right:r,width:n,zIndex:t,backgroundColor:"white"}),children:x(qc,{sx:a,children:l})})})})},e_=m(null),t_={didCatch:!1,error:null};class n_ extends c{constructor(e){super(e),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=t_}static getDerivedStateFromError(e){return{didCatch:!0,error:e}}resetErrorBoundary(...e){const{error:t}=this.state;null!==t&&(this.props.onReset?.({args:e,reason:"imperative-api"}),this.setState(t_))}componentDidCatch(e,t){this.props.onError?.(e,t)}componentDidUpdate(e,t){const{didCatch:n}=this.state,{resetKeys:i}=this.props;n&&null!==t.error&&function(e=[],t=[]){return e.length!==t.length||e.some((e,n)=>!Object.is(e,t[n]))}(e.resetKeys,i)&&(this.props.onReset?.({next:i,prev:e.resetKeys,reason:"keys"}),this.setState(t_))}render(){const{children:e,fallbackRender:t,FallbackComponent:n,fallback:i}=this.props,{didCatch:r,error:s}=this.state;let a=e;if(r){const e={error:s,resetErrorBoundary:this.resetErrorBoundary};if("function"==typeof t)a=t(e);else if(n)a=o(n,e);else{if(void 0===i)throw s;a=i}}return o(e_.Provider,{value:{didCatch:r,error:s,resetErrorBoundary:this.resetErrorBoundary}},a)}}const i_=({error:e,resetErrorBoundary:t})=>w(O,{role:"alert",sx:{padding:"20px",background:"#fee"},children:[x(k,{variant:"h2",children:"Ошибка приложения"}),x(k,{variant:"body1",color:"error",children:e.message}),x(Fc,{onClick:t,children:"Попробовать снова"})]}),r_=({children:e,FallbackComponent:t=i_})=>x(n_,{FallbackComponent:t,children:e});function s_(t){const{name:n,type:i}=t,r=e.useId(),{control:s}=Dh();return x(Lh,{name:n,control:s,render:({field:e})=>w(O,{sx:({spacing:e})=>({display:"grid",width:"100%",gap:e(1)}),children:[x(Sd,{id:r,size:"small",...t,...e,onChange:t=>{const{target:n}=t,{value:r}=n;if("number"===i)""===r?e.onChange():e.onChange(Number(r));else e.onChange(t)}}),x(Ed,{name:n})]})})}var o_,a_;!function(e){e.ONE_WAY='"OneWay"',e.POINT_ADDRESS='"PointAddress"',e.BUILDING_AREA='"MapBuildingECArea"',e.BUILTUP_AREA='"MapAdminBuiltupArea"',e.ADMIN_AREA='"MapAdminArea"',e.OCEAN_AREA='"MapOceanArea"',e.OCEAN_AREA_LABEL='"MapOceanAreaLabel"',e.FACILITY_AREA='"MapFacilityArea"',e.FACILITY_AREA_LABEL='"MapFacilityAreaLabel"',e.LANDUSE_AREA='"MapLanduseArea"',e.LANDUSE_AREA_LABEL='"MapLanduseAreaLabel"',e.NATURE_FIELD='"MapNatureField"',e.NATURE_FOREST='"MapNatureForest"',e.LINK='"Link"',e.RAILROAD_LINK='"MapRailroadLink"',e.WATER_LINK='"MapWaterLink"',e.WATER_AREA='"MapWaterArea"',e.WATER_AREA_LABEL='"MapWaterAreaLabel"',e.WATER_LAKE_LABEL='"MapWaterLakeLabel"',e.POI='"POI"',e.CITY_POI='"CityPOI"',e.CONDITIONS='"Conditions"',e.ROAD_POLY='"RoadPoly"',e.PARKING_LINE='"ParkingLine"',e.LANE_MARKING_LINE='"LaneMarkingLine"',e.LANE_MARKING_POLY='"LaneMarkingPoly"',e.LANE_MARKING_ARROW='"LaneMarkingArrow"',e.TRAFFIC_SIGN='"TrafficSign"',e.TRAFFIC_SIGNAL='"TrafficSignal"',e.CAMERA='"Camera"',e.PILLAR='"Pillar"'}(o_||(o_={})),function(e){e.TILE="tile",e.NATURE_TILE="nature_tile",e.MSK="msk"}(a_||(a_={}));const l_=new class{constructor(){}log({message:e,context:t,meta:n}){console.log(t,e,n)}warn({message:e,context:t,meta:n}){console.warn(t,e,n)}error({message:e,context:t,meta:n}){console.error(t,e,n)}},u_=256,c_={[a_.TILE]:"https://dalganmap.ru/api/tiles/get_tile/{z}/{x}/{y}.mvt",[a_.NATURE_TILE]:"https://dalganmap.ru/api/tiles/get_nature_tile/{z}/{x}/{y}.mvt",[a_.MSK]:"http://89.108.118.23:3070/tiles/get_tile/{z}/{x}/{y}.mvt"};var h_={global:{links:{getIsConstruction:"function (feature) {\n const { construction } = feature;\n\n return construction;\n}\n",getIsFunctionalClass:"function (feature) {\n const { functional_class, access_id } = feature;\n\n return functional_class === 5 && access_id === 32;\n}\n",getIsLowMobility:"function (feature) {\n const { functional_class, low_mobility } = feature;\n\n return functional_class === 5 && low_mobility === 1;\n}\n"}},cameras:{camera1:{type:"perspective",vanishing_point:[0,-500]}},textures:{arrow:{url:"https://dalganmap.ru/api-image/images/arrow-20.png",sprites:{base:[0,0,20,20]}},"traffic-signal":{url:"https://dalganmap.ru/api-image/images/conditions/traffic-signal.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},pedestrian_crossing:{url:"https://dalganmap.ru/api-image/images/conditions/pedestrian_crossing.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},physical:{url:"https://dalganmap.ru/api-image/images/conditions/physical.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},gate:{url:"https://dalganmap.ru/api-image/images/conditions/gate.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_3578:{url:"https://dalganmap.ru/api-image/images/POI/3578.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_5813:{url:"https://dalganmap.ru/api-image/images/POI/5813.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_5541:{url:"https://dalganmap.ru/api-image/images/POI/5541.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_5540:{url:"https://dalganmap.ru/api-image/images/POI/5540.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},"POI_9530(Mail)":{url:"https://dalganmap.ru/api-image/images/POI/mail.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},"POI_9530(Delivery)":{url:"https://dalganmap.ru/api-image/images/POI/delivery.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_5400:{url:"https://dalganmap.ru/api-image/images/POI/5400.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_6000:{url:"https://dalganmap.ru/api-image/images/POI/6000.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_9565:{url:"https://dalganmap.ru/api-image/images/POI/9565.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_9583:{url:"https://dalganmap.ru/api-image/images/POI/9583.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_8060:{url:"https://dalganmap.ru/api-image/images/POI/8060.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_5511:{url:"https://dalganmap.ru/api-image/images/POI/5511.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_5512:{url:"https://dalganmap.ru/api-image/images/POI/5512.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_5800:{url:"https://dalganmap.ru/api-image/images/POI/5800.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_5999:{url:"https://dalganmap.ru/api-image/images/POI/5999.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_7011:{url:"https://dalganmap.ru/api-image/images/POI/7011.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_7389:{url:"https://dalganmap.ru/api-image/images/POI/7389.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_7832:{url:"https://dalganmap.ru/api-image/images/POI/7832.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_7929:{url:"https://dalganmap.ru/api-image/images/POI/7929.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_7990:{url:"https://dalganmap.ru/api-image/images/POI/7990.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_7999:{url:"https://dalganmap.ru/api-image/images/POI/7999.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_8410:{url:"https://dalganmap.ru/api-image/images/POI/8410.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_9517:{url:"https://dalganmap.ru/api-image/images/POI/9517.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},POI_9718:{url:"https://dalganmap.ru/api-image/images/POI/9718.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},"POI_9992(mosque)":{url:"https://dalganmap.ru/api-image/images/POI/9992_mosque.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},"POI_9992(church)":{url:"https://dalganmap.ru/api-image/images/POI/9992_church.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},"POI_9992(temple)":{url:"https://dalganmap.ru/api-image/images/POI/9992_temple.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},"POI_9992(davidStar)":{url:"https://dalganmap.ru/api-image/images/POI/9992_davidStar.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},"POI_9992(mortar)":{url:"https://dalganmap.ru/api-image/images/POI/9992_mortar.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},"POI_4100(metro)":{url:"https://dalganmap.ru/api-image/images/POI/4100_metro.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}},"POI_4100(diameter)":{url:"https://dalganmap.ru/api-image/images/POI/4100_diameter.png",filtering:"mipmap",sprites:{base:[0,0,41,15]}},POI_4013:{url:"https://dalganmap.ru/api-image/images/POI/4013.png",filtering:"mipmap",sprites:{base:[0,0,20,20]}}},layers:null,styles:{buildings:{base:"polygons",shaders:{blocks:{color:"color.rgb;\n"}}}},lights:{light1:{type:"directional",direction:[.1,.5,-1],diffuse:.7,ambient:.5}},sources:null};const d_=e=>{const t=[],n={source:e,layer:o_.BUILDING_AREA,minzoom:15},i={id:pn(),data:n,extruded:{draw:{polygons:{style:"buildings",extrude:"function() {\n return $zoom >= 17;\n }"}}},draw:{polygons:{color:"#DDB07B",height:{property:"height"}},lines:{color:"#DB933F",width:"2px",cap:"round",join:"round"}}};return t.push(i),t},f_=e=>{const t=[],n={source:e,layer:o_.BUILTUP_AREA},i={id:pn(),data:n,draw:{polygons:{color:"#CFC8C8"}}};return t.push(i),t},p_=e=>{const t=[],n={source:e,layer:o_.ADMIN_AREA},i={id:pn(),data:n,draw:{polygons:{color:"#D3D2CF"}}},r={id:pn(),data:n,filter:"function() {\n const { type } = feature;\n\n const isFilter = type === 'R';\n\n return isFilter;\n }",draw:{lines:{color:"#696969",width:"1px",cap:"round",join:"round"}}},s={id:pn(),data:n,filter:"function() {\n const { type } = feature;\n\n const isFilter = type === 'D' && $zoom >= 12;\n\n return isFilter;\n }",draw:{lines:{color:"#696969",dash:[4,7],width:"1px",cap:"round",join:"round"}}};return t.push(i,r,s),t},m_={size:20,extension:"png"},__=e=>{const t=[],n={source:e,layer:o_.CAMERA},i={},r="camera";i[r]={url:vn(`msk/${r}/${r}_${m_.size}.${m_.extension}`),filtering:"mipmap",sprites:{base:[0,0,m_.size,m_.size]}};const s={id:pn(),data:n,draw:{points:{collide:!1,texture:r,size:m_.size,sprite:"base",placement:"midpoint"}},textures:i,sublayers:{}};return t.push(s),t},g_=e=>{const t=[],n={source:e,layer:o_.CITY_POI},i={id:pn(),data:n,filter:"function() {\n const { capital_order8, capital_order2, capital_order1, poi_name, priority } = feature;\n\n if ($zoom >= 9 && $zoom < 13) {\n return priority < 8;\n }\n\n if ($zoom <= 11) {\n return capital_order8 === 'Y';\n }\n\n if ($zoom >= 15) {\n return capital_order2 !== 'Y';\n }\n\n return true;\n }\n ",draw:{text:{text_source:"poi_name",priority:"function () {\n const { priority } = feature;\n\n if ($zoom <= 15) {\n return priority;\n }\n\n return 1;\n }\n ",font:{fill:"black",size:"function() {\n const { capital_order8 } = feature;\n\n if (capital_order8 === 'Y') {\n return '16px';\n }\n\n return '12px';\n }",weight:"function() {\n const { capital_order2 } = feature;\n\n if (capital_order2 === 'Y') {\n return 'bold';\n }\n\n return 'normal';\n }",stroke:{color:"white",width:"2px"}}}}};return t.push(i),t};var y_;!function(e){e.traffic_signal="traffic_signal",e.pedestrian_crossing="pedestrian_crossing",e.physical="physical",e.gate="gate"}(y_||(y_={}));const v_=e=>{const t=[],n={},i={source:e,layer:o_.CONDITIONS},r={id:pn(),data:i};return Object.values(y_).forEach(e=>{n[`_${e}`]={filter:`function() {\n const { type } = feature;\n\n const isShow = type === '${e}';\n\n return isShow;\n }`,draw:{points:{texture:e,sprite:"base",placement:"midpoint"}}}}),r.sublayers=n,t.push(r),t},b_=e=>{const t=[],n={id:pn(),data:{source:e,layer:o_.FACILITY_AREA},draw:{polygons:{color:"function() {\n const { feature_type } = feature;\n\n switch (feature_type) {\n case '2000408': {\n return '#DBBAC4';\n }\n\n case '1900403': {\n return '#B6C3C7';\n }\n\n case '1907403': {\n return '#A3B9C0';\n }\n\n case '2000123': {\n return '#E4BA7D';\n }\n\n case '2000124': {\n return '#BFE6E3';\n }\n\n case '2000200': {\n return '#A0A9A8';\n }\n\n case '2000403': {\n return '#AF7136';\n }\n\n case '2000420': {\n return '#89AC76';\n }\n\n case '2000457': {\n return '#9494C0';\n }\n\n default: {\n return '#E1D4D4';\n }\n }\n }",order:"function() {\n const { feature_type } = feature;\n\n switch (feature_type) {\n case '1907403': {\n return 301;\n }\n\n default: {\n return 300;\n }\n }\n }"},lines:{color:"#857F7F",width:"2px",cap:"round",join:"round"}}},i={id:pn(),data:{source:e,layer:o_.FACILITY_AREA_LABEL},draw:{text:{text_source:"name",font:{fill:"function() {\n const { feature_type } = feature;\n\n switch(feature_type) {\n case '1900403':\n case '1907403': {\n return '#256D7B';\n }\n\n case '2000420':\n case '2000460':\n case '2000123': {\n return '#00541F';\n }\n\n case '2000408': {\n return '#5E2129';\n }\n\n case '2000124': {\n return '#3E5F8A';\n }\n\n case '2000200': {\n return '#464451';\n }\n\n case '2000403': {\n return '#B03F35';\n }\n\n case '2000457': {\n return '#6A5ACD';\n }\n\n case '1700215':\n case '900159':\n case '900158': {\n return '#474A51';\n }\n\n default: {\n return black;\n }\n }\n }",size:"12px",stroke:{color:"white",width:"3px"}}}}};return t.push(n,i),t},x_=e=>{const t=[],n={id:pn(),data:{source:e,layer:o_.LANDUSE_AREA},draw:{polygons:{color:"function() {\n const { feature_type } = feature;\n\n switch (feature_type) {\n case '509998': {\n return '#ECD175';\n }\n\n case '600102':\n case '900140': {\n return '#3E9A8C';\n }\n\n case '900202':\n case '900130':\n case '900150':\n case '900103': {\n return '#96BE7D';\n }\n\n case '9997010': {\n return null;\n }\n }\n }",order:"function() {\n const { feature_type } = feature;\n\n switch(feature_type) {\n case '900150':\n case '900130':\n case '509998': {\n return 300;\n }\n\n default: {\n return 299;\n }\n }\n }"}}},i={id:pn(),data:{source:e,layer:o_.LANDUSE_AREA_LABEL},filter:"function() {\n return $zoom >= 15;\n }",draw:{text:{text_source:"name",font:{size:"13px",fill:"function() {\n const { feature_type } = feature;\n\n switch(feature_type) {\n case '509998': {\n return '#CD7F32';\n }\n\n default: {\n return '#00541F';\n }\n }\n }",stroke:{color:"white",width:"3px"}}}}};return t.push(n,i),t},w_=e=>{const t=[],n={source:e,layer:o_.LANE_MARKING_ARROW},i={id:pn(),data:n,draw:{polygons:{color:"white"}}};return t.push(i),t},E_=["-1.0","-0.5","-0.3","0.0","0.3","0.5","0.7","1.0","1.5","2.0"],A_=[[5],[4,3],[2,1]],T_="function() {\n const { functional_class, tunnel, tollway } = feature;\n\n const alpha = tunnel ? 0.89 : 1;\n\n const getRGB = (hex, alpha) => {\n const r = +(parseInt(hex.slice(1, 3), 16) / 255).toFixed(2);\n const g = +(parseInt(hex.slice(3, 5), 16) / 255).toFixed(2);\n const b = +(parseInt(hex.slice(5, 7), 16) / 255).toFixed(2);\n\n return [r, g, b, alpha];\n }\n\n if (tollway) {\n return '#D72740';\n }\n\n switch (functional_class) {\n case 1:\n case 2: {\n const color = getRGB('#D1747F', alpha);\n\n return color;\n }\n\n case 3:\n case 4: {\n const color = getRGB('#B1A7AA', alpha);\n\n return color;\n }\n\n case 5: {\n const color = getRGB('#D5CEC3', alpha);\n\n return color;\n }\n }\n}",S_="function() {\n const { functional_class, road_number } = feature;\n\n const getScale = () => {\n if ($zoom <= 15 && $zoom >= 14) { return 7; }\n\n if ($zoom <= 13 && $zoom >= 12) { return 9; }\n\n if ($zoom <= 5) { return 400; }\n\n if ($zoom <= 7) { return 200; }\n\n if ($zoom < 12) { return 50; }\n\n return 1;\n }\n\n const scale = getScale();\n\n switch(functional_class) {\n case 1:\n case 2: {\n return 8 * scale;\n }\n\n case 3:\n case 4: {\n return 7 * scale;\n }\n\n case 5: {\n if (Boolean(road_number)) {\n return 7 * scale;\n }\n\n return 6;\n }\n }\n}",k_={text_source:"street_name",font:{fill:"black",size:"14px",stroke:{color:"white",width:"3px"}}},O_={text:{text_source:"road_number",font:{fill:"#181bff",size:"16px",weight:"bold",underline:!0,background:{color:"black"}}}},P_={text:k_,lines:{color:T_,width:S_,cap:"round",join:"round"}},C_={lines:{color:T_,width:S_,outline:{color:"function() {\n const { functional_class, access_id, tollway } = feature;\n\n if (tollway) {\n return '#B9263B';\n }\n\n switch(functional_class) {\n case 5: {\n return '#989898';\n }\n\n case 3:\n case 4: {\n return '#8F6E78';\n }\n\n case 1:\n case 2: {\n return '#9A414B';\n }\n }\n}",width:"function() {\n const { functional_class, access_id } = feature;\n\n switch(functional_class) {\n case 5: {\n switch (access_id) {\n case 32: {\n return 0;\n }\n\n default: {\n return 1;\n }\n }\n }\n\n default: {\n return 1;\n }\n }\n}"}}},R_={text:k_,lines:{color:"#BABCC2",width:10,cap:"round",join:"round"}},M_={filter:"function() {\n return global.links.getIsLowMobility(feature);\n }",draw:{lines:{width:4}}},N_={filter:"function() {\n return global.links.getIsConstruction(feature);\n }",draw:{lines:{width:3,color:"#9AA096",dash:[2,1]}}},L_={filter:"function() {\n return global.links.getIsFunctionalClass(feature);\n }",draw:{lines:{width:2,color:"#9AA096",dash:[2,1]}}},z_=e=>{const t=[],n={source:e,layer:o_.LINK},i={id:pn(),data:n,draw:O_};return t.push(i),E_.forEach(i=>{const r=[],s=[];A_.forEach(t=>{const o=[],a=[];t.forEach(t=>{const r=(({source:e,zLvl:t,functionClass:n})=>e===a_.MSK?{base:{default:`function() {\n const { functional_class, z_lvl = '0.0', tollway } = feature;\n\n const isFilter = $zoom <= 16 && z_lvl === '${t}' && +functional_class === ${n} && tollway === false;\n\n return isFilter;\n }`,tollway:`function() {\n const { functional_class, z_lvl = '0.0', tollway } = feature;\n\n const isFilter = $zoom <= 16 && z_lvl === '${t}' && +functional_class === ${n} && tollway === true;\n\n return isFilter;\n }`},border:{default:`function() {\n const { functional_class, z_lvl = '0.0', tollway } = feature;\n\n const isFilter = $zoom <= 16 && tollway === false && z_lvl === '${t}' && +functional_class === ${n} && !global.links.getIsConstruction(feature) && !global.links.getIsFunctionalClass(feature);\n\n return isFilter;\n }`,tollway:`function() {\n const { functional_class, z_lvl = '0.0', tollway } = feature;\n\n const isFilter = $zoom <= 16 && tollway === true && z_lvl === '${t}' && +functional_class === ${n} && !global.links.getIsConstruction(feature) && !global.links.getIsFunctionalClass(feature);\n\n return isFilter;\n }`}}:{base:{default:`function() {\n const { functional_class, z_lvl = '0.0', tollway } = feature;\n\n const isFilter = z_lvl === '${t}' && +functional_class === ${n} && tollway === false;\n\n return isFilter;\n }`,tollway:`function() {\n const { functional_class, z_lvl = '0.0', tollway } = feature;\n\n const isFilter = z_lvl === '${t}' && +functional_class === ${n} && tollway === true;\n\n return isFilter;\n }`},border:{default:`function() {\n const { functional_class, z_lvl = '0.0', tollway } = feature;\n\n const isFilter = tollway === false && z_lvl === '${t}' && +functional_class === ${n} && !global.links.getIsConstruction(feature) && !global.links.getIsFunctionalClass(feature);\n\n return isFilter;\n }`,tollway:`function() {\n const { functional_class, z_lvl = '0.0', tollway } = feature;\n\n const isFilter = tollway === true && z_lvl === '${t}' && +functional_class === ${n} && !global.links.getIsConstruction(feature) && !global.links.getIsFunctionalClass(feature);\n\n return isFilter;\n }`}})({source:e,zLvl:i,functionClass:t}),s=(({zLvl:e,functionClass:t})=>`function() {\n const { functional_class, z_lvl = '0.0', tollway } = feature;\n\n const isFilter = $zoom > 16 && z_lvl === '${e}' && +functional_class === ${t};\n\n return isFilter;\n }`)({zLvl:i,functionClass:t}),l={id:pn(),data:n,filter:r.base.default,draw:P_,sublayers:{construction:{...N_},functionalClassAccessId32:{...L_},lowMobility:{...M_}}},u={id:pn(),data:n,filter:r.base.tollway,draw:P_,sublayers:{construction:{...N_},functionalClassAccessId32:{...L_},lowMobility:{...M_}}},c={id:pn(),data:n,filter:s,draw:R_,sublayers:{functionalClassAccessId32:{...L_}}},h={id:pn(),data:n,filter:r.border.default,draw:C_,sublayers:{lowMobility:{...M_}}},d={id:pn(),data:n,filter:r.border.tollway,draw:C_,sublayers:{lowMobility:{...M_}}};if(e===a_.MSK)o.push(c);o.push(l,u),a.push(h,d)}),r.push(...o),s.push(...a)}),t.push(...s,...r)}),t},D_=()=>{const e=[],t={source:a_.NATURE_TILE,layer:o_.NATURE_FIELD},n={id:pn(),data:t,draw:{polygons:{color:"#EBEEC7"}}};return e.push(n),e},I_=()=>{const e=[],t={source:a_.NATURE_TILE,layer:o_.NATURE_FOREST},n={id:pn(),data:t,draw:{polygons:{color:"function() {\n const { feature_type } = feature;\n\n switch (feature_type) {\n case '900202': {\n return '#96BE7D';\n }\n\n default : {\n return null;\n }\n }\n }"}}};return e.push(n),e},F_=e=>{const t=[],n={id:pn(),data:{source:e,layer:o_.OCEAN_AREA},draw:{polygons:{color:"#7DBEE4"}}},i={id:pn(),data:{source:e,layer:o_.OCEAN_AREA_LABEL},draw:{text:{text_source:"name",font:{fill:"#0A80C4",size:"18px",stroke:{color:"white",width:"3px"}}}}};return t.push(n,i),t},j_=e=>{const t=[],n={id:pn(),data:{source:e,layer:o_.ONE_WAY},draw:{points:{texture:"arrow",sprite:"base",angle:"function() {\n const { bearing } = feature;\n \n return bearing;\n }\n "}}};return t.push(n),t},B_={size:20,extension:"png"},U_=e=>{const t=[],n={source:e,layer:o_.PILLAR},i={},r="pillar";i[r]={url:vn(`msk/${r}/${r}_${B_.size}.${B_.extension}`),filtering:"mipmap",sprites:{base:[0,0,B_.size,B_.size]}};const s={id:pn(),data:n,draw:{points:{collide:!1,texture:r,size:B_.size,sprite:"base",placement:"midpoint"}},textures:i,sublayers:{}};return t.push(s),t},V_='function() {\n const { poi_name, cat_id } = feature;\n\n switch (+cat_id) {\n case 4100: {\n const text = poi_name.replaceAll(/(Метро-|Станция-|МЦД-)/g, "");\n\n return text;\n }\n\n default: {\n return poi_name;\n }\n }\n}',G_=[3578,4013,4100,5400,5511,5512,5540,5541,5800,5813,5999,6e3,7011,7389,7832,7929,7990,8060,8410,9517,9530,9565,9583,9718,9992],$_=e=>{const t={};switch(e){case 4100:t[`_${e}-metro`]={filter:`function() {\n const { poi_name, cat_id } = feature;\n\n const isMetro = poi_name.startsWith('Метро-');\n const isStation = poi_name.startsWith('Станция-');\n\n const isCatId = +cat_id === ${e};\n\n const isFilter = isCatId && (isMetro || isStation);\n\n return isFilter;\n }`,draw:{points:Z_({texture:`POI_${e}(metro)`})}},t[`_${e}-diameter`]={filter:`function() {\n const { cat_id, poi_name } = feature;\n\n const isDiameter = poi_name.startsWith('МЦД-');\n\n const isCatId = +cat_id === ${e};\n\n const isFilter = isCatId && isDiameter;\n\n return isFilter;\n }`,draw:{points:Z_({texture:`POI_${e}(diameter)`,size:[41,15]})}};break;case 9530:t[`_${e}-mail`]={filter:`function() {\n const { cat_id, poi_name = '' } = feature;\n\n const isCatId = +cat_id === ${e};\n\n const isMail = poi_name.startsWith('Почта');\n\n const isFilter = isCatId && isMail;\n\n return isFilter;\n }`,draw:{points:Z_({texture:`POI_${e}(Mail)`})}},t[`_${e}-delivery`]={filter:`function() {\n const { cat_id, poi_name = '' } = feature;\n\n const isCatId = +cat_id === ${e};\n \n const isMail = poi_name.startsWith('Почта');\n\n const isFilter = isCatId && !isMail;\n\n return isFilter;\n }`,draw:{points:Z_({texture:`POI_${e}(Delivery)`})}};break;case 9992:{const n={mosque:1,church:2,temple:3,davidStar:4,mortar:6};Object.entries(n).forEach(([n,i])=>{t[`_${e}-${n}`]={filter:`function() {\n const { cat_id, subcat_id } = feature;\n\n const isCatId = +cat_id === ${e};\n const isSubcatId = +subcat_id === ${i};\n\n const isFilter = isCatId && isSubcatId;\n\n return isFilter;\n }`,draw:{points:Z_({texture:`POI_${e}(${n})`})}}});break}default:t[`_${e}`]={filter:`function() {\n const { cat_id } = feature;\n\n const isFilter = +cat_id === ${e};\n\n return isFilter;\n }`,draw:{points:Z_({texture:`POI_${e}`})}}}return t},Z_=({texture:e,size:t=20})=>({texture:e,size:t,sprite:"base",placement:"midpoint"}),q_=G_.reduce((e,t)=>({...e,...$_(t)}),{}),W_=e=>{const t=[],n={id:pn(),data:{source:e,layer:o_.POI},draw:{points:{text:{text_source:V_,font:{fill:"#464544",size:"12px"}}}},sublayers:q_};return t.push(n),t},H_=e=>{const t=[],n={source:e,layer:o_.POINT_ADDRESS,minzoom:15},i={id:pn(),data:n,draw:{text:{text_source:"address",font:{fill:"black",size:"12px"}}}};return t.push(i),t},Y_=e=>{const t=[],n={source:e,layer:o_.RAILROAD_LINK},i={id:pn(),data:n,draw:{lines:{color:"#A3A8A",width:5,dash:[1,2],dash_background_color:[0,0,0],join:"round"}}};return t.push(i),t},X_={fileName:"traffic-sign",extension:"svg",dopsCount:2,widths:{map:20,preview:40}},K_={1.1:{title:"Железнодорожный переезд со шлагбаумом",height:20,type:"Предупреждающие знаки"},1.2:{title:"Железнодорожный переезд без шлагбаума",height:20,type:"Предупреждающие знаки"},"1.3.1":{title:"Однопутная железная дорога",height:20,type:"Предупреждающие знаки"},"1.3.2":{title:"Многопутная железная дорога",height:20,type:"Предупреждающие знаки"},"1.4.1":{title:"Приближение к железнодорожному переезду",height:40,type:"Предупреждающие знаки"},"1.4.2":{title:"Приближение к железнодорожному переезду",height:40,type:"Предупреждающие знаки"},"1.4.3":{title:"Приближение к железнодорожному переезду",height:40,type:"Предупреждающие знаки"},"1.4.4":{title:"Приближение к железнодорожному переезду",height:40,type:"Предупреждающие знаки"},"1.4.5":{title:"Приближение к железнодорожному переезду",height:40,type:"Предупреждающие знаки"},"1.4.6":{title:"Приближение к железнодорожному переезду",height:40,type:"Предупреждающие знаки"},1.5:{title:"Пересечение с трамвайной линией",height:20,type:"Предупреждающие знаки"},1.6:{title:"Пересечение равнозначных дорог",height:20,type:"Предупреждающие знаки"},1.7:{title:"Пересечение с круговым движением",height:20,type:"Предупреждающие знаки"},1.8:{title:"Светофорное регулирование",height:20,type:"Предупреждающие знаки"},1.9:{title:"Разводной мост",height:20,type:"Предупреждающие знаки"},"1.10":{title:"Выезд на набережную",height:20,type:"Предупреждающие знаки"},"1.11.1":{title:"Опасный поворот (правый)",height:20,type:"Предупреждающие знаки"},"1.11.2":{title:"Опасный поворот (левый)",height:20,type:"Предупреждающие знаки"},"1.12.1":{title:"Опасные повороты",height:20,type:"Предупреждающие знаки"},"1.12.2":{title:"Опасные повороты",height:20,type:"Предупреждающие знаки"},1.13:{title:"Крутой спуск",height:20,type:"Предупреждающие знаки"},1.14:{title:"Крутой подъём",height:20,type:"Предупреждающие знаки"},1.15:{title:"Скользкая дорога",height:20,type:"Предупреждающие знаки"},1.16:{title:"Неровная дорога",height:20,type:"Предупреждающие знаки"},1.17:{title:"Искусственная неровность",height:20,type:"Предупреждающие знаки"},1.18:{title:"Выброс гравия",height:20,type:"Предупреждающие знаки"},1.19:{title:"Опасная обочина",height:20,type:"Предупреждающие знаки"},"1.20.1":{title:"Сужение дороги",height:20,type:"Предупреждающие знаки"},"1.20.2":{title:"Сужение дороги",height:20,type:"Предупреждающие знаки"},"1.20.3":{title:"Сужение дороги",height:20,type:"Предупреждающие знаки"},1.21:{title:"Двустороннее движение",height:20,type:"Предупреждающие знаки"},1.22:{title:"Пешеходный переход",height:20,type:"Предупреждающие знаки"},1.23:{title:"Дети",height:20,type:"Предупреждающие знаки"},1.24:{title:"Пересечение с велосипедной дорожкой или велопешеходной дорожкой",height:20,type:"Предупреждающие знаки"},1.25:{title:"Дорожные работы",height:20,type:"Предупреждающие знаки"},1.26:{title:"Перегон скота",height:20,type:"Предупреждающие знаки"},1.27:{title:"Дикие животные",height:20,type:"Предупреждающие знаки"},1.28:{title:"Падение камней",height:20,type:"Предупреждающие знаки"},1.29:{title:"Боковой ветер",height:20,type:"Предупреждающие знаки"},"1.30":{title:"Низколетящие самолёты",height:20,type:"Предупреждающие знаки"},1.31:{title:"Тоннель",height:20,type:"Предупреждающие знаки"},1.32:{title:"Затор",height:20,type:"Предупреждающие знаки"},1.33:{title:"Прочие опасности",height:20,type:"Предупреждающие знаки"},"1.34.1 A":{title:"Направление поворота",height:20,type:"Предупреждающие знаки"},"1.34.1 B":{title:"Направление поворота",height:20,type:"Предупреждающие знаки"},"1.34.1 C":{title:"Направление поворота",height:20,type:"Предупреждающие знаки"},"1.34.2 A":{title:"Направление поворота",height:20,type:"Предупреждающие знаки"},"1.34.2 B":{title:"Направление поворота",height:20,type:"Предупреждающие знаки"},"1.34.2 C":{title:"Направление поворота",height:20,type:"Предупреждающие знаки"},"1.34.3 A":{title:"Направление поворота",height:20,type:"Предупреждающие знаки"},"1.34.3 B":{title:"Направление поворота",height:20,type:"Предупреждающие знаки"},1.35:{title:"Участок перекрёстка",height:20,type:"Предупреждающие знаки"},2.1:{title:"Главная дорога",height:20,type:"Знаки приоритета"},2.2:{title:"Конец главной дороги",height:20,type:"Знаки приоритета"},"2.3.1":{title:"Пересечение со второстепенной дорогой",height:20,type:"Знаки приоритета"},"2.3.2":{title:"Примыкание второстепенной дороги",height:20,type:"Знаки приоритета"},"2.3.3":{title:"Примыкание второстепенной дороги",height:20,type:"Знаки приоритета"},"2.3.4":{title:"Примыкание второстепенной дороги",height:20,type:"Знаки приоритета"},"2.3.5":{title:"Примыкание второстепенной дороги",height:20,type:"Знаки приоритета"},"2.3.6":{title:"Примыкание второстепенной дороги",height:20,type:"Знаки приоритета"},"2.3.7":{title:"Примыкание второстепенной дороги",height:20,type:"Знаки приоритета"},2.4:{title:"Уступите дорогу",height:20,type:"Знаки приоритета"},2.5:{title:"Движение без остановки запрещено",height:20,type:"Знаки приоритета"},2.6:{title:"Преимущество встречного движения",height:20,type:"Знаки приоритета"},2.7:{title:"Преимущество перед встречным движением",height:20,type:"Знаки приоритета"},3.1:{title:"Въезд запрещён",height:20,type:"Запрещающие знаки"},3.2:{title:"Движение запрещено",height:20,type:"Запрещающие знаки"},3.3:{title:"Движение механических транспортных средств запрещено",height:20,type:"Запрещающие знаки"},3.4:{title:"Движение грузовых автомобилей запрещено",height:20,type:"Запрещающие знаки"},3.5:{title:"Движение мотоциклов запрещено",height:20,type:"Запрещающие знаки"},3.6:{title:"Движение тракторов запрещено",height:20,type:"Запрещающие знаки"},3.7:{title:"Движение с прицепом запрещено",height:20,type:"Запрещающие знаки"},3.8:{title:"Движение гужевых повозок запрещено",height:20,type:"Запрещающие знаки"},3.9:{title:"Движение на велосипедах запрещено",height:20,type:"Запрещающие знаки"},"3.10":{title:"Движение пешеходов запрещено",height:20,type:"Запрещающие знаки"},3.11:{title:"Ограничение массы",height:20,type:"Запрещающие знаки"},3.12:{title:"Ограничение массы, приходящейся на ось транспортного средства",height:20,type:"Запрещающие знаки"},3.13:{title:"Ограничение высоты",height:20,type:"Запрещающие знаки"},3.14:{title:"Ограничение ширины",height:20,type:"Запрещающие знаки"},3.15:{title:"Ограничение длины",height:20,type:"Запрещающие знаки"},3.16:{title:"Ограничение минимальной дистанции",height:20,type:"Запрещающие знаки"},"3.17.1":{title:"Таможня",height:20,type:"Запрещающие знаки"},"3.17.2":{title:"Опасность",height:20,type:"Запрещающие знаки"},"3.17.3":{title:"Контроль",height:20,type:"Запрещающие знаки"},"3.18.1":{title:"Поворот направо запрещён",height:20,type:"Запрещающие знаки"},"3.18.2":{title:"Поворот налево запрещён",height:20,type:"Запрещающие знаки"},3.19:{title:"Разворот запрещён",height:20,type:"Запрещающие знаки"},"3.20":{title:"Обгон запрещён",height:20,type:"Запрещающие знаки"},3.21:{title:"Конец зоны запрещения обгона",height:20,type:"Запрещающие знаки"},3.22:{title:"Обгон грузовым автомобилям запрещён",height:20,type:"Запрещающие знаки"},3.23:{title:"Конец зоны запрещения обгона грузовым автомобилям",height:20,type:"Запрещающие знаки"},"3.24-50":{title:"Ограничение максимальной скорости",height:20,type:"Запрещающие знаки"},"3.25-50":{title:"Конец зоны ограничения максимальной скорости",height:20,type:"Запрещающие знаки"},3.26:{title:"Подача звукового сигнала запрещена",height:20,type:"Запрещающие знаки"},3.27:{title:"Остановка запрещена",height:20,type:"Запрещающие знаки"},3.28:{title:"Стоянка запрещена",height:20,type:"Запрещающие знаки"},3.29:{title:"Стоянка запрещена по нечётным числам месяца.",height:20,type:"Запрещающие знаки"},"3.30":{title:"Стоянка запрещена по чётным числам месяца",height:20,type:"Запрещающие знаки"},3.31:{title:"Конец зоны всех ограничений",height:20,type:"Запрещающие знаки"},3.32:{title:"Движение транспортных средств с опасными грузами запрещено",height:20,type:"Запрещающие знаки"},3.33:{title:"Движение транспортных средств с взрывчатыми и легковоспламеняющимися грузами запрещено",height:20,type:"Запрещающие знаки"},3.34:{title:"Движение автобусов запрещено",height:20,type:"Запрещающие знаки"},3.35:{title:"Движение на средствах индивидуальной мобильности запрещено",height:20,type:"Запрещающие знаки"},"4.1.1":{title:"Движение прямо",height:20,type:"Предписывающие знаки"},"4.1.2":{title:"Движение направо",height:20,type:"Предписывающие знаки"},"4.1.3":{title:"Движение налево",height:20,type:"Предписывающие знаки"},"4.1.4":{title:"Движение прямо или направо",height:20,type:"Предписывающие знаки"},"4.1.5":{title:"Движение прямо или налево",height:20,type:"Предписывающие знаки"},"4.1.6":{title:"Движение направо или налево",height:20,type:"Предписывающие знаки"},"4.2.1":{title:"Объезд препятствия справа",height:20,type:"Предписывающие знаки"},"4.2.2":{title:"Объезд препятствия слева",height:20,type:"Предписывающие знаки"},"4.2.3":{title:"Объезд препятствия справа или слева",height:20,type:"Предписывающие знаки"},4.3:{title:"Круговое движение",height:20,type:"Предписывающие знаки"},"4.4.1":{title:"Велосипедная дорожка",height:20,type:"Предписывающие знаки"},"4.4.2":{title:"Конец велосипедной дорожки",height:20,type:"Предписывающие знаки"},"4.5.1":{title:"Пешеходная дорожка",height:20,type:"Предписывающие знаки"},"4.5.2":{title:"Пешеходная и велосипедная дорожка с совмещённым движением",height:20,type:"Предписывающие знаки"},"4.5.3":{title:"Конец пешеходной и велосипедной дорожки с совмещённым движением",height:20,type:"Предписывающие знаки"},"4.5.4":{title:"Пешеходная и велосипедная дорожка с разделением движения",height:20,type:"Предписывающие знаки"},"4.5.5":{title:"Пешеходная и велосипедная дорожка с разделением движения",height:20,type:"Предписывающие знаки"},"4.5.6":{title:"Конец пешеходной и велосипедной дорожки с разделением движения",height:20,type:"Предписывающие знаки"},"4.5.7":{title:"Конец пешеходной и велосипедной дорожки с разделением движения",height:20,type:"Предписывающие знаки"},"4.6-50":{title:"Ограничение минимальной скорости",height:20,type:"Предписывающие знаки"},"4.7-50":{title:"Конец зоны ограничения минимальной скорости",height:20,type:"Предписывающие знаки"},"4.8.1":{title:"Направление движения транспортных средств с опасными грузами",height:30,type:"Предписывающие знаки"},"4.8.2":{title:"Направление движения транспортных средств с опасными грузами",height:30,type:"Предписывающие знаки"},"4.8.3":{title:"Направление движения транспортных средств с опасными грузами",height:30,type:"Предписывающие знаки"},5.1:{title:"Автомагистраль",height:30,type:"Знаки особых предписаний"},5.2:{title:"Конец автомагистрали",height:30,type:"Знаки особых предписаний"},5.3:{title:"Дорога для автомобилей",height:30,type:"Знаки особых предписаний"},5.4:{title:"Конец дороги для автомобилей",height:30,type:"Знаки особых предписаний"},5.5:{title:"Дорога с односторонним движением",height:20,type:"Знаки особых предписаний"},5.6:{title:"Конец дороги с односторонним движением",height:20,type:"Знаки особых предписаний"},"5.7.1":{title:"Выезд на дорогу с односторонним движением",height:20,type:"Знаки особых предписаний"},"5.7.2":{title:"Выезд на дорогу с односторонним движением",height:20,type:"Знаки особых предписаний"},5.8:{title:"Реверсивное движение",height:20,type:"Знаки особых предписаний"},5.9:{title:"Конец реверсивного движения",height:20,type:"Знаки особых предписаний"},"5.10":{title:"Выезд на дорогу с реверсивным движением",height:20,type:"Знаки особых предписаний"},"5.11.1":{title:"Дорога с полосой для маршрутных транспортных средств",height:20,type:"Знаки особых предписаний"},"5.11.2":{title:"Дорога с полосой для велосипедистов",height:20,type:"Знаки особых предписаний"},"5.12.1":{title:"Конец дороги с полосой для маршрутных транспортных средств",height:20,type:"Знаки особых предписаний"},"5.12.2":{title:"Конец дороги с полосой для велосипедистов",height:20,type:"Знаки особых предписаний"},"5.13.1":{title:"Выезд на дорогу с полосой для маршрутных транспортных средств",height:20,type:"Знаки особых предписаний"},"5.13.2":{title:"Выезд на дорогу с полосой для маршрутных транспортных средств",height:20,type:"Знаки особых предписаний"},"5.13.3":{title:"Выезд на дорогу с полосой для велосипедистов",height:20,type:"Знаки особых предписаний"},"5.13.4":{title:"Выезд на дорогу с полосой для велосипедистов",height:20,type:"Знаки особых предписаний"},"5.14.1":{title:"Полоса для маршрутных транспортных средств",height:20,type:"Знаки особых предписаний"},"5.14.2":{title:"Полоса для велосипедистов",height:20,type:"Знаки особых предписаний"},"5.14.3":{title:"Конец полосы для маршрутных транспортных средств",height:20,type:"Знаки особых предписаний"},"5.14.4":{title:"Конец полосы для велосипедистов",height:20,type:"Знаки особых предписаний"},"5.15.1":{title:"Направления движения по полосам",height:20,type:"Знаки особых предписаний"},"5.15.2 A":{title:"Направления движения по полосе",height:20,type:"Знаки особых предписаний"},"5.15.2 B":{title:"Направления движения по полосе",height:20,type:"Знаки особых предписаний"},"5.15.2 C":{title:"Направления движения по полосе",height:20,type:"Знаки особых предписаний"},"5.15.2 D":{title:"Направления движения по полосе",height:20,type:"Знаки особых предписаний"},"5.15.2 E":{title:"Направления движения по полосе",height:20,type:"Знаки особых предписаний"},"5.15.2 F":{title:"Направления движения по полосе",height:20,type:"Знаки особых предписаний"},"5.15.2 G":{title:"Направления движения по полосе",height:20,type:"Знаки особых предписаний"},"5.15.2 H":{title:"Направления движения по полосе",height:20,type:"Знаки особых предписаний"},"5.15.2 I":{title:"Направления движения по полосе",height:20,type:"Знаки особых предписаний"},"5.15.2 K":{title:"Направления движения по полосе",height:20,type:"Знаки особых предписаний"},"5.15.3 A":{title:"Начало полосы",height:20,type:"Знаки особых предписаний"},"5.15.3 B":{title:"Начало полосы",height:20,type:"Знаки особых предписаний"},"5.15.3 C":{title:"Начало полосы",height:20,type:"Знаки особых предписаний"},"5.15.4 A":{title:"Начало полосы",height:20,type:"Знаки особых предписаний"},"5.15.4 B":{title:"Начало полосы",height:20,type:"Знаки особых предписаний"},"5.15.5":{title:"Конец полосы",height:20,type:"Знаки особых предписаний"},"5.15.6":{title:"Конец полосы",height:20,type:"Знаки особых предписаний"},"5.15.7 A":{title:"Направление движения по полосам",height:20,type:"Знаки особых предписаний"},"5.15.7 B":{title:"Направление движения по полосам",height:20,type:"Знаки особых предписаний"},"5.15.7 C":{title:"Направление движения по полосам",height:20,type:"Знаки особых предписаний"},"5.15.8":{title:"Число полос",height:20,type:"Знаки особых предписаний"},5.16:{title:"Место остановки автобуса и (или) троллейбуса",height:30,type:"Знаки особых предписаний"},5.17:{title:"Место остановки трамвая",height:30,type:"Знаки особых предписаний"},5.18:{title:"Место стоянки легковых такси",height:30,type:"Знаки особых предписаний"},"5.19.1":{title:"Пешеходный переход",height:20,type:"Знаки особых предписаний"},"5.19.2":{title:"Пешеходный переход",height:20,type:"Знаки особых предписаний"},"5.19.3":{title:"Диагональный пешеходный переход",height:20,type:"Знаки особых предписаний"},"5.19.4 A":{title:"Диагональный пешеходный переход",height:20,type:"Знаки особых предписаний"},"5.19.4 B":{title:"Диагональный пешеходный переход",height:20,type:"Знаки особых предписаний"},"5.20":{title:"Искусственная неровность",height:20,type:"Знаки особых предписаний"},5.21:{title:"Жилая зона",height:30,type:"Знаки особых предписаний"},5.22:{title:"Конец жилой зоны",height:30,type:"Знаки особых предписаний"},"5.23.1":{title:"Начало населённого пункта",height:20,type:"Знаки особых предписаний"},"5.23.2":{title:"Начало населённого пункта",height:20,type:"Знаки особых предписаний"},"5.24.1":{title:"Конец населённого пункта",height:20,type:"Знаки особых предписаний"},"5.24.2":{title:"Конец населённого пункта",height:20,type:"Знаки особых предписаний"},5.25:{title:"Начало населённого пункта",height:20,type:"Знаки особых предписаний"},5.26:{title:"Конец населённого пункта",height:20,type:"Знаки особых предписаний"},5.27:{title:"Зона с ограничением стоянки",height:30,type:"Знаки особых предписаний"},5.28:{title:"Конец зоны с ограничением стоянки",height:30,type:"Знаки особых предписаний"},5.29:{title:"Зона регулируемой стоянки",height:30,type:"Знаки особых предписаний"},"5.30":{title:"Конец зоны регулируемой стоянки",height:30,type:"Знаки особых предписаний"},5.31:{title:"Зона с ограничением максимальной скорости",height:30,type:"Знаки особых предписаний"},5.32:{title:"Конец зоны с ограничением максимальной скорости",height:30,type:"Знаки особых предписаний"},5.33:{title:"Пешеходная зона",height:30,type:"Знаки особых предписаний"},5.34:{title:"Конец пешеходной зоны",height:30,type:"Знаки особых предписаний"},5.35:{title:"Зона с ограничением экологического класса механических транспортных средств",height:30,type:"Знаки особых предписаний"},5.36:{title:"Конец зоны с ограничением экологического класса механических транспортных средств",height:30,type:"Знаки особых предписаний"},"5.37 A":{title:"Зона с ограничением экологического класса по видам транспортных средств",height:30,type:"Знаки особых предписаний"},"5.37 B":{title:"Зона с ограничением экологического класса по видам транспортных средств",height:30,type:"Знаки особых предписаний"},"5.38 A":{title:"Конец зоны с ограничением экологического класса по видам транспортных средств",height:30,type:"Знаки особых предписаний"},"5.38 B":{title:"Конец зоны с ограничением экологического класса по видам транспортных средств",height:30,type:"Знаки особых предписаний"},5.39:{title:"Велосипедная зона",height:30,type:"Знаки особых предписаний"},"5.40":{title:"Конец велосипедной зоны",height:30,type:"Знаки особых предписаний"},6.1:{title:"Общие ограничения максимальной скорости",height:30,type:"Информационные знаки"},"6.2-50":{title:"Рекомендуемая скорость",height:20,type:"Информационные знаки"},"6.3.1":{title:"Место для разворота",height:20,type:"Информационные знаки"},"6.3.2":{title:"Зона для разворота",height:20,type:"Информационные знаки"},"6.4 A":{title:"Парковка (парковочное место)",height:20,type:"Информационные знаки"},"6.4 B":{title:"Парковка (платные услуги)",height:20,type:"Информационные знаки"},"6.4 C":{title:"Парковка (только для инвалидов)",height:20,type:"Информационные знаки"},6.5:{title:"Полоса аварийной остановки",height:20,type:"Информационные знаки"},6.6:{title:"Подземный пешеходный переход",height:20,type:"Информационные знаки"},6.7:{title:"Надземный пешеходный переход",height:20,type:"Информационные знаки"},"6.8.1":{title:"Тупик",height:20,type:"Информационные знаки"},"6.8.2":{title:"Тупик",height:20,type:"Информационные знаки"},"6.8.3":{title:"Тупик",height:20,type:"Информационные знаки"},"6.9.1 A":{title:"Предварительный указатель направлений",height:20,type:"Информационные знаки"},"6.9.1 B":{title:"Предварительный указатель направлений",height:20,type:"Информационные знаки"},"6.9.1 C":{title:"Предварительный указатель направлений",height:20,type:"Информационные знаки"},"6.9.1 D":{title:"Предварительный указатель направлений",height:20,type:"Информационные знаки"},"6.9.1 E":{title:"Предварительный указатель направлений",height:20,type:"Информационные знаки"},"6.9.1 F":{title:"Предварительный указатель направлений",height:20,type:"Информационные знаки"},"6.9.2 A":{title:"Предварительный указатель направления",height:20,type:"Информационные знаки"},"6.9.2 B":{title:"Предварительный указатель направления",height:20,type:"Информационные знаки"},"6.9.2 C":{title:"Предварительный указатель направления",height:20,type:"Информационные знаки"},"6.9.3":{title:"Схема движения",height:20,type:"Информационные знаки"},"6.10.1 A":{title:"Указатель направлений",height:20,type:"Информационные знаки"},"6.10.1 B":{title:"Указатель направлений",height:20,type:"Информационные знаки"},"6.10.1 C":{title:"Указатель направлений",height:20,type:"Информационные знаки"},"6.10.1 D":{title:"Указатель направлений",height:20,type:"Информационные знаки"},"6.10.1 E":{title:"Указатель направлений",height:20,type:"Информационные знаки"},"6.10.1 F":{title:"Указатель направлений",height:20,type:"Информационные знаки"},"6.10.1 G":{title:"Указатель направлений",height:20,type:"Информационные знаки"},"6.10.2 A":{title:"Указатель направления",height:20,type:"Информационные знаки"},"6.10.2 B":{title:"Указатель направления",height:20,type:"Информационные знаки"},"6.11 A":{title:"Наименование объекта",height:20,type:"Информационные знаки"},"6.11 B":{title:"Наименование объекта",height:20,type:"Информационные знаки"},"6.11 C":{title:"Наименование объекта",height:20,type:"Информационные знаки"},"6.11 D":{title:"Наименование объекта",height:20,type:"Информационные знаки"},"6.12 A":{title:"Указатель расстояний",height:20,type:"Информационные знаки"},"6.12 B":{title:"Указатель расстояний",height:20,type:"Информационные знаки"},"6.12 C":{title:"Указатель расстояний",height:20,type:"Информационные знаки"},"6.13 A":{title:"Километровый знак",height:20,type:"Информационные знаки"},"6.13 B":{title:"Километровый знак",height:20,type:"Информационные знаки"},"6.13 C":{title:"Километровый знак",height:20,type:"Информационные знаки"},"6.13 D":{title:"Километровый знак",height:20,type:"Информационные знаки"},"6.13 E":{title:"Километровый знак",height:20,type:"Информационные знаки"},"6.14.1 A":{title:"Номер маршрута",height:20,type:"Информационные знаки"},"6.14.1 B":{title:"Номер маршрута",height:20,type:"Информационные знаки"},"6.14.1 C":{title:"Номер маршрута",height:20,type:"Информационные знаки"},"6.14.1 D":{title:"Номер маршрута",height:20,type:"Информационные знаки"},"6.14.2 A":{title:"Номер маршрута",height:20,type:"Информационные знаки"},"6.14.2 B":{title:"Номер маршрута",height:20,type:"Информационные знаки"},"6.14.2 C":{title:"Номер маршрута",height:20,type:"Информационные знаки"},"6.15.1":{title:"Направление движения для грузовых автомобилей",height:20,type:"Информационные знаки"},"6.15.2":{title:"Направление движения для грузовых автомобилей",height:20,type:"Информационные знаки"},"6.15.3":{title:"Направление движения для грузовых автомобилей",height:20,type:"Информационные знаки"},6.16:{title:"Стоп-линия",height:20,type:"Информационные знаки"},6.17:{title:"Схема объезда",height:25,type:"Информационные знаки"},"6.18.1":{title:"Направление объезда",height:20,type:"Информационные знаки"},"6.18.2":{title:"Направление объезда",height:20,type:"Информационные знаки"},"6.18.3":{title:"Направление объезда",height:20,type:"Информационные знаки"},"6.19.1":{title:"Предварительный указатель перестроения на другую проезжую часть",height:25,type:"Информационные знаки"},"6.19.2":{title:"Предварительный указатель перестроения на другую проезжую часть",height:25,type:"Информационные знаки"},"6.20.1":{title:"Аварийный выход",height:20,type:"Информационные знаки"},"6.20.2":{title:"Аварийный выход",height:20,type:"Информационные знаки"},"6.21.1":{title:"Направление движения к аварийному выходу",height:20,type:"Информационные знаки"},"6.21.2":{title:"Направление движения к аварийному выходу",height:20,type:"Информационные знаки"},6.22:{title:"Фотовидеофиксация",height:20,type:"Информационные знаки"},7.1:{title:"Пункт медицинской помощи",height:30,type:"Знаки сервиса"},7.2:{title:"Больница",height:30,type:"Знаки сервиса"},7.3:{title:"Автозаправочная станция",height:30,type:"Знаки сервиса"},7.4:{title:"Техническое обслуживание автомобилей",height:30,type:"Знаки сервиса"},7.5:{title:"Мойка автомобилей",height:30,type:"Знаки сервиса"},7.6:{title:"Телефон",height:30,type:"Знаки сервиса"},7.7:{title:"Пункт питания",height:30,type:"Знаки сервиса"},7.8:{title:"Питьевая вода",height:30,type:"Знаки сервиса"},7.9:{title:"Гостиница или мотель",height:30,type:"Знаки сервиса"},"7.10":{title:"Кемпинг",height:30,type:"Знаки сервиса"},7.11:{title:"Место отдыха",height:30,type:"Знаки сервиса"},7.12:{title:"Пост ДПС",height:30,type:"Знаки сервиса"},7.13:{title:"Полиция",height:30,type:"Знаки сервиса"},"7.14.1":{title:"Пункт таможенного контроля",height:30,type:"Знаки сервиса"},"7.14.2":{title:"Пункт транспортного контроля",height:30,type:"Знаки сервиса"},7.15:{title:"Зона приёма радиостанции, передающей информацию о дорожном движении",height:30,type:"Знаки сервиса"},7.16:{title:"Зона радиосвязи с аварийными службами",height:30,type:"Знаки сервиса"},7.17:{title:"Бассейн или пляж",height:30,type:"Знаки сервиса"},7.18:{title:"Туалет",height:30,type:"Знаки сервиса"},7.19:{title:"Телефон экстренной связи",height:30,type:"Знаки сервиса"},"7.20":{title:"Огнетушитель",height:30,type:"Знаки сервиса"},7.21:{title:"Автозаправочная станция с возможностью зарядки электромобилей",height:30,type:"Знаки сервиса"}},Q_={"8.1.1":{title:"Расстояние до объекта",height:20,type:"Знаки дополнительной информации"},"8.1.2":{title:"Расстояние до объекта",height:20,type:"Знаки дополнительной информации"},"8.1.3":{title:"Расстояние до объекта",height:20,type:"Знаки дополнительной информации"},"8.1.4":{title:"Расстояние до объекта",height:20,type:"Знаки дополнительной информации"},"8.2.1":{title:"Зона действия",height:20,type:"Знаки дополнительной информации"},"8.2.2":{title:"Зона действия",height:40,type:"Знаки дополнительной информации"},"8.2.3":{title:"Зона действия",height:40,type:"Знаки дополнительной информации"},"8.2.4":{title:"Зона действия",height:40,type:"Знаки дополнительной информации"},"8.2.5":{title:"Зона действия",height:20,type:"Знаки дополнительной информации"},"8.2.6":{title:"Зона действия",height:20,type:"Знаки дополнительной информации"},"8.3.1":{title:"Направления действия",height:20,type:"Знаки дополнительной информации"},"8.3.2":{title:"Направления действия",height:20,type:"Знаки дополнительной информации"},"8.3.3":{title:"Направления действия",height:20,type:"Знаки дополнительной информации"},"8.4.1":{title:"Вид транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.2":{title:"Вид транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.3.1":{title:"Вид транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.3.2":{title:"Вид транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.4":{title:"Вид транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.5":{title:"Вид транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.6":{title:"Вид транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.7.1":{title:"Вид транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.7.2":{title:"Вид транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.8":{title:"Вид транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.9":{title:"Кроме вида транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.10":{title:"Кроме вида транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.11":{title:"Кроме вида транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.12":{title:"Кроме вида транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.13":{title:"Кроме вида транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.14":{title:"Кроме вида транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.4.15":{title:"Кроме вида транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.5.1":{title:"Субботние, воскресные и праздничные дни",height:20,type:"Знаки дополнительной информации"},"8.5.2":{title:"Рабочие дни",height:20,type:"Знаки дополнительной информации"},"8.5.3":{title:"Дни недели",height:20,type:"Знаки дополнительной информации"},"8.5.4":{title:"Время действия",height:20,type:"Знаки дополнительной информации"},"8.5.5":{title:"Время действия",height:20,type:"Знаки дополнительной информации"},"8.5.6":{title:"Время действия",height:20,type:"Знаки дополнительной информации"},"8.5.7":{title:"Время действия",height:20,type:"Знаки дополнительной информации"},"8.6.1":{title:"Способ постановки транспортного средства на стоянку",height:20,type:"Знаки дополнительной информации"},"8.6.2":{title:"Способ постановки транспортного средства на стоянку",height:20,type:"Знаки дополнительной информации"},"8.6.3":{title:"Способ постановки транспортного средства на стоянку",height:20,type:"Знаки дополнительной информации"},"8.6.4":{title:"Способ постановки транспортного средства на стоянку",height:20,type:"Знаки дополнительной информации"},"8.6.5":{title:"Способ постановки транспортного средства на стоянку",height:20,type:"Знаки дополнительной информации"},"8.6.6":{title:"Способ постановки транспортного средства на стоянку",height:20,type:"Знаки дополнительной информации"},"8.6.7":{title:"Способ постановки транспортного средства на стоянку",height:20,type:"Знаки дополнительной информации"},"8.6.8":{title:"Способ постановки транспортного средства на стоянку",height:20,type:"Знаки дополнительной информации"},"8.6.9":{title:"Способ постановки транспортного средства на стоянку",height:20,type:"Знаки дополнительной информации"},8.7:{title:"Стоянка с неработающим двигателем",height:20,type:"Знаки дополнительной информации"},8.8:{title:"Платные услуги",height:20,type:"Знаки дополнительной информации"},"8.9.1":{title:"Ограничение продолжительности стоянки",height:20,type:"Знаки дополнительной информации"},"8.9.2":{title:"Стоянка только для владельцев парковочных разрешений",height:20,type:"Знаки дополнительной информации"},"8.9.3":{title:"Стоянка только транспортных средств дипломатического корпуса",height:20,type:"Знаки дополнительной информации"},"8.10":{title:"Место для осмотра автомобилей",height:20,type:"Знаки дополнительной информации"},8.11:{title:"Ограничение разрешённой максимальной массы",height:20,type:"Знаки дополнительной информации"},8.12:{title:"Опасная обочина",height:20,type:"Знаки дополнительной информации"},8.13:{title:"Направление главной дороги",height:20,type:"Знаки дополнительной информации"},"8.13 B":{title:"Направление главной дороги",height:20,type:"Знаки дополнительной информации"},8.14:{title:"Полоса движения",height:20,type:"Знаки дополнительной информации"},8.15:{title:"Слепые пешеходы",height:20,type:"Знаки дополнительной информации"},8.16:{title:"Влажное покрытие",height:20,type:"Знаки дополнительной информации"},8.17:{title:"Инвалиды",height:20,type:"Знаки дополнительной информации"},8.18:{title:"Кроме инвалидов",height:20,type:"Знаки дополнительной информации"},8.19:{title:"Класс опасного груза",height:20,type:"Знаки дополнительной информации"},"8.20.1":{title:"Тип тележки транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.20.2":{title:"Тип тележки транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.21.1":{title:"Вид маршрутного транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.21.2":{title:"Вид маршрутного транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.21.3":{title:"Вид маршрутного транспортного средства",height:20,type:"Знаки дополнительной информации"},"8.22.1":{title:"Препятствие",height:68,type:"Знаки дополнительной информации"},"8.22.2":{title:"Препятствие",height:68,type:"Знаки дополнительной информации"},"8.22.3":{title:"Препятствие",height:68,type:"Знаки дополнительной информации"},8.24:{title:"Работает эвакуатор",height:20,type:"Знаки дополнительной информации"},8.25:{title:"Экологический класс транспортного средства",height:20,type:"Знаки дополнительной информации"},8.26:{title:"Зарядка электромобилей",height:20,type:"Знаки дополнительной информации"}},J_={...K_,...Q_},eg=e=>{const t=[],n={source:e,layer:o_.TRAFFIC_SIGN},i={},r={};Object.keys(K_).forEach(e=>{const t=`${X_.fileName}-${e}`,{height:n}=K_[e],s=tg({type:"map",number:e});i[t]={url:s,filtering:"mipmap",sprites:{base:[0,0,X_.widths.map,n]}},r[t]={filter:`function() {\n const { traffic_sign_number } = feature;\n\n const isFilter = traffic_sign_number === '${e}';\n\n return isFilter;\n }`,draw:{points:{collide:!1,texture:t,size:[X_.widths.map,n],sprite:"base",placement:"midpoint"}}}});const s={id:pn(),data:n,textures:i,sublayers:r};return t.push(s),t},tg=({type:e,number:t})=>{const n=X_.widths[e];return vn(`msk/${X_.fileName}_${n}/${t}.${X_.extension}`)},ng=e=>{const t={};e.forEach(({traffic_sign_number:e,traffic_sign_title:n,traffic_sign_type:i,height:r})=>{t[e]={title:n,height:Number(r),type:i}}),fn(t)},ig={size:20,extension:"svg"},rg=e=>{const t=[],n={source:e,layer:o_.TRAFFIC_SIGNAL},i={},r="traffic_signal";i[r]={url:vn(`msk/${r}/${r}_${ig.size}.${ig.extension}`),filtering:"mipmap",sprites:{base:[0,0,ig.size,ig.size]}};const s={id:pn(),data:n,draw:{points:{collide:!1,texture:r,size:ig.size,sprite:"base",placement:"midpoint"}},textures:i,sublayers:{}};return t.push(s),t},sg=e=>{const t=[],n={id:pn(),data:{source:e,layer:o_.WATER_AREA},draw:{polygons:{color:"#7DBEE4"},lines:{color:"#7DBEE4",width:20,cap:"round",join:"round"}}},i={id:pn(),data:{source:e,layer:o_.WATER_AREA_LABEL},filter:"function() {\n const { display_class } = feature;\n\n if ($zoom >= 14) {\n return true;\n } else {\n return display_class <= 4;\n }\n }",draw:{text:{text_source:"name",font:{fill:"#0A80C4",size:"14px",stroke:{color:"white",width:"3px"}}}}},r={id:pn(),data:{source:e,layer:o_.WATER_LAKE_LABEL},filter:"function() {\n const { display_class } = feature;\n\n if ($zoom >= 14) {\n return true;\n } else {\n return display_class <= 4;\n }\n }",draw:{text:{text_source:"name",font:{fill:"#0A80C4",size:"14px",stroke:{color:"white",width:"3px"}}}}};return t.push(n,i,r),t},og=e=>{const t=[],n={},i={source:e,layer:o_.WATER_LINK},r={id:pn(),data:i};return n.geometry={draw:{lines:{color:"#7DBEE4",width:5,cap:"round",join:"round"}}},n.text={filter:"function() {\n return $zoom >= 10;\n }",draw:{text:{text_source:"name",font:{fill:"#0A80C4",size:"14px",stroke:{color:"white",width:"3px"}}}}},r.sublayers=n,t.push(r),t},ag="white",lg=.5,ug={1.1:{color:ag,width:lg},1.2:{color:ag,width:lg},1.5:{color:ag,width:lg,dash:[4,10]},1.6:{color:ag,width:lg,dash:[5,5]},1.7:{color:ag,width:lg,dash:[4,10]},"1.7-blue":{color:"blue",width:lg,dash:[4,10]},1.8:{color:ag,width:lg},1.12:{color:ag,width:1.5},"1.14.3":{color:ag,width:lg,dash:[3,8]},"1.16.1":{color:ag,width:lg},"1.16.2":{color:ag,width:lg},"1.16.3":{color:ag,width:lg},"1.16.x":{color:ag,width:lg},"1.17.1":{color:"yellow",width:lg},1.26:{color:"yellow",width:lg}};var cg;!function(e){e.ROAD="Road",e.TUNNEL="Tunnel",e.TRAM="Tram",e.CURB="Curb",e.BRIDGE="Bridge"}(cg||(cg={}));const hg={[cg.ROAD]:"#BABCC2",[cg.TUNNEL]:"#EAEBEE",[cg.TRAM]:"#ADA8A8",[cg.CURB]:"#D2D9E6",[cg.BRIDGE]:"#E1DFDD"},dg=({id:e,data:{source:t,layer:n}})=>`${e}-${t}-${n}`,fg=({layer:e,order:t,eventHandlers:n})=>{const i=structuredClone(e),{draw:r,sublayers:s}=i,o=Boolean(n?.[e.data.layer]);if(r){const{points:e,lines:n,polygons:s,text:a,styles:l}=r;e&&(r.points={...structuredClone(e),order:t,interactive:o}),n&&(r.lines={...structuredClone(n),order:t,interactive:o}),s&&(r.polygons={...structuredClone(s),order:t,interactive:o}),a&&(r.text={...structuredClone(a),order:t,interactive:o}),l&&(r.styles=Object.entries(l).reduce((e,[n,i])=>({...e,[n]:{...structuredClone(i),order:t}}),{})),i.draw=structuredClone(r)}return s&&(Object.entries(s).forEach(([e,n])=>{if(n){const{draw:i}=n;if(i){const{points:e,lines:r,polygons:s,text:a}=i;a&&(i.text={...structuredClone(a),order:t,interactive:o}),e&&(i.points={...structuredClone(e),order:t,interactive:o}),r&&(i.lines={...structuredClone(r),order:t,interactive:o}),s&&(i.polygons={...structuredClone(s),order:t,interactive:o}),n.draw=structuredClone(i)}s[e]=structuredClone(n)}}),i.sublayers=structuredClone(s)),i},pg=e=>{const t=p_(e),n=D_(),i=I_(),r=f_(e),s=b_(e),o=x_(e),a=sg(e),l=F_(e),u=[];if(e===a_.MSK)u.push(...t,...r,...s,...o,...a,...l);else u.push(...t,...r,...s,...n,...i,...o,...a,...l);return u},mg=e=>{const t=z_(e),n=Y_(e),i=og(e),r=j_(e),s=v_(e),o=[...i,...n,...t];if(e===a_.MSK);else o.push(...r,...s);return o},_g=e=>{const t=W_(e),n=g_(e);return[...t,...H_(e),...n,...eg(e),...rg(e),...__(e),...U_(e)]},gg=e=>{const t=[],n=d_(e),i=pg(e),r=mg(e),s=_g(e),o=(e=>{const t=[],n={source:e,layer:o_.ROAD_POLY};return Object.values(cg).forEach(e=>{const i={id:pn(),data:n,filter:`function() {\n const { type } = feature;\n\n const isFilter = type === '${e}';\n\n return isFilter;\n }`,draw:{polygons:{color:hg[e]}}};t.push(i)}),t})(e),a=(e=>{const t=[],n={source:e,layer:o_.LANE_MARKING_POLY},i={id:pn(),data:n,filter:"function() {\n const { poly_number } = feature;\n\n const isFilter = poly_number === '1.14.1';\n\n return isFilter;\n }",draw:{styles:{zebra_crossing:{attributes:{a_angle:"function() {\n return feature.angle;\n }"}}}}};return t.push(i),t})(e),l=(e=>{const t=[],n={source:e,layer:o_.LANE_MARKING_LINE},i=Object.entries(ug).reduce((e,[t,n])=>{const i={filter:`function () {\n const { lane_number } = feature;\n\n const isFilter = lane_number === '${t}';\n\n return isFilter;\n }`,draw:{lines:n}};return{...e,[t]:i}},{}),r={id:pn(),data:n,sublayers:i},s={"1.3-left":{id:pn(),data:n,filter:"function() {\n const { lane_number } = feature;\n\n const isFilter = lane_number === '1.3';\n\n return isFilter;\n }",draw:{lines:{color:ag,width:lg,offset:-.5}}},"1.3-right":{id:pn(),data:n,filter:"function() {\n const { lane_number } = feature;\n\n const isFilter = lane_number === '1.3';\n\n return isFilter;\n }",draw:{lines:{color:ag,width:lg,offset:lg}}},"1.11r-left":{id:pn(),data:n,filter:"function() {\n const { lane_number } = feature;\n\n const isFilter = lane_number === '1.11r';\n\n return isFilter;\n }",draw:{lines:{color:ag,width:lg,offset:-.5}}},"1.11r-right":{id:pn(),data:n,filter:"function() {\n const { lane_number } = feature;\n\n const isFilter = lane_number === '1.11r';\n\n return isFilter;\n }",draw:{lines:{color:ag,width:lg,offset:lg,dash:[5,5]}}},"1.11l-left":{id:pn(),data:n,filter:"function() {\n const { lane_number } = feature;\n\n const isFilter = lane_number === '1.11l';\n\n return isFilter;\n }",draw:{lines:{color:ag,width:lg,offset:-.5,dash:[5,5]}}},"1.11l-right":{id:pn(),data:n,filter:"function() {\n const { lane_number } = feature;\n\n const isFilter = lane_number === '1.11l';\n\n return isFilter;\n }",draw:{lines:{color:ag,width:lg,offset:lg}}},"1.25-left":{id:pn(),data:n,filter:"function() {\n const { lane_number } = feature;\n\n const isFilter = lane_number === '1.25';\n\n return isFilter;\n }",draw:{lines:{color:ag,width:1,offset:-.5,dash:[1,1],dash_background_color:[0,0,0,0]}}},"1.25-right":{id:pn(),data:n,filter:"function() {\n const { lane_number } = feature;\n\n const isFilter = lane_number === '1.25';\n\n return isFilter;\n }",draw:{lines:{color:"rgba(0,0,0,0)",width:1,offset:.5,dash:[1,1],dash_background_color:[1,1,1]}}}};return t.push(r,...Object.values(s)),t})(e),u=w_(e),c=(e=>{const t=[],n={source:e,layer:o_.PARKING_LINE},i={id:pn(),data:n,draw:{lines:{color:"white",width:1}}};return t.push(i),t})(e);if(e===a_.MSK)t.push(...i,...r,...o,...a,...u,...l,...c,...n,...s);else t.push(...i,...r,...n,...s);return t},yg=e=>`${e.getFullYear()}-${`${e.getUTCMonth()+1}`.padStart(2,"0")}-${`${e.getUTCDate()}`.padStart(2,"0")}`,vg=e=>{const t={[ge.CREATE]:"",[ge.UPDATE]:"",[ge.DELETE]:""};return Object.values(ge).forEach(n=>{t[n]=`${e}-${n}`}),t},bg=({eventHandlers:t,defaultLayers:n})=>{const[i,r]=e.useState(null),[s,o]=e.useState(null),[a,l]=e.useState(!1),u=e.useMemo(()=>{if(null===i)return null;const{scene:e}=i;return e},[i]),c=e.useCallback(()=>{Promise.resolve().then(function(){return pb}).then(()=>{if(window.Tangram){const e=window.Tangram.leafletLayer({scene:h_,modifyScrollWheel:!1,modifyZoomBehavior:!1}),{scene:n}=e;n.subscribe({load:({config:e})=>{o(e),l(!0)}}),e.on("load",({sourceTarget:n})=>{const i=n._map;l_.log({message:"leafletLayer onLoad",context:"useGetLeafletLayer",meta:{sourceTarget:n}}),e.setSelectionEvents({click:({feature:e,leaflet_event:n})=>{if(e){const{source_layer:i,properties:r}=e;t?.[i]?.click?.({leaflet_event:n,properties:r})}},hover:({feature:e,leaflet_event:n})=>{const r=i.getContainer();if(e){const{source_layer:i,properties:s}=e;r.style.cursor="pointer",t?.[i]?.hover?.({leaflet_event:n,properties:s})}else r.style.cursor="default"}})}),r(e)}})},[t]),h=e.useCallback(e=>{s?e(s):l_.warn({message:"Config не инициализирована"})},[s]),d=e.useCallback(e=>{h(t=>{u?e({config:t,scene:u}):l_.warn({message:"Scene не инициализирована"})})},[h,u]),f=e.useCallback(e=>{d(({config:t,scene:n})=>{const i=c_[e];t.sources[e]={tile_size:256,url:i,type:"MVT"},n.updateConfig({rebuild:!0})})},[d]),p=e.useCallback(e=>{d(({config:t,scene:n})=>{delete t.sources[e],n.updateConfig({rebuild:!0})})},[d]),m=e.useCallback(e=>{let t=null;return h(n=>{t=structuredClone(n.sources[e])}),t},[h]),_=e.useCallback((e,t)=>{d(({config:n,scene:i})=>{n.sources[e].url=t,i.updateConfig({rebuild:!0})})},[d]),g=e.useCallback(e=>{p(e),f(e)},[p,f]),y=e.useCallback(e=>{d(({config:n,scene:i})=>{const r=E().length+1,s=fg({layer:e,order:r,eventHandlers:t}),o=dg(s),{sublayers:a,draw:l,textures:u}=s;if(l){const{styles:e}=l;e&&(s.draw={...structuredClone(s.draw),...structuredClone(e)})}n.layers[o]={...structuredClone(s),...structuredClone(a)},n.textures={...structuredClone(n.textures),...structuredClone(u)},i.updateConfig({rebuild:!0})})},[d]),v=e.useCallback(e=>{const t=dg(e);d(({config:e,scene:n})=>{delete e.layers[t],n.updateConfig({rebuild:!0})})},[d]),b=e.useCallback(({name:e,style:t})=>{d(({config:n,scene:i})=>{n.styles[e]=structuredClone(t),i.updateConfig({rebuild:!0})})},[d]),x=e.useCallback(e=>{let t=!0;const n=dg(e);return h(e=>{const{visible:i=!0}=e.layers[n];t=i}),t},[dg,h]),w=e.useCallback(({layer:e,visible:t})=>{const n=dg(e);d(({config:e,scene:i})=>{e.layers[n].visible=t,i.updateConfig({rebuild:!0})})},[d]),E=e.useCallback(()=>{const e=[];return h(t=>{e.push(...Object.keys(t.layers))}),e},[h]),A=e.useCallback(()=>{h(e=>{const{layers:t}=e;Object.values(t).forEach(v)})},[h,v]),T=e.useCallback(()=>{const e=[];return h(t=>{e.push(...Object.keys(t.sources))}),e},[s]);return e.useEffect(()=>(ta.instance.isValidApiKey&&c(),()=>{r(null),o(null)}),[ta.instance.isValidApiKey]),e.useEffect(()=>{b({name:"zebra_crossing",style:{base:"polygons",lighting:!1,shaders:{attributes:{a_angle:{type:"float",default:0}},uniforms:{u_stripe_width:1},blocks:{filter:"\n vec3 pos = worldPosition().xyz;\n\n float ang = radians(a_angle);\n\n vec2 dir = vec2(sin(ang), cos(ang));\n\n float positionAlongLine = dot(pos.xy, dir);\n\n float stripe = step(1.0, mod(positionAlongLine / u_stripe_width, 2.0));\n\n color.rgb = mix(vec3(1.0, 1.0, 1.0), vec3(1.0, 0.8, 0.0), stripe);\n \n color.a = 1.0;\n "}}}}),Object.values(a_).forEach(f)},[b,f]),e.useEffect(()=>{n&&a&&n.map(y)},[n,y,a]),{layer:i,scene:u,config:s,addSource:f,getSource:m,updateSource:_,reloadSource:g,addLayer:y,removeLayer:v,addStyle:b,getLayerVisibility:x,toggleLayerVisibility:w,getSources:T,getLayers:E,removeLayers:A}},xg=m(null);function wg(){return function(){const e=g(xg);if(null==e)throw new Error("No context provided: useLeafletContext() can only be used in a descendant of <MapContainer>");return e}().map}const Eg=({layers:t})=>{const n=wg(),{layer:i}=bg({defaultLayers:t});return e.useEffect(()=>{i&&n.addLayer(i)},[i]),null},Ag={position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",bgcolor:"background.paper",border:"2px solid #000",boxShadow:24,p:4,maxHeight:"90vh",overflowX:"auto",overflowY:"auto"};var Tg=Pl(({name:t,children:n,onClose:i,onOpen:r})=>{const s=e.useId(),o=Yo.getIsOpen(t);return e.useEffect(()=>{o?r?.({name:t}):i?.({name:t})},[o]),x(fe,{open:o,onClose:()=>{Yo.close(t)},"aria-labelledby":`modal-${s}-title`,"aria-describedby":`modal-${s}-description`,children:x(de,{sx:({breakpoints:e})=>({...Ag,[e.up("sm")]:{minWidth:400},[e.down("sm")]:{minWidth:"80vw"}}),children:n})})});function Sg({name:t,items:n,label:i,sx:r,getLabel:s,getValue:o,getKey:a}){const{watch:l,resetField:u,setValue:c}=Dh(),h=l(t),d=e.useId(),f=n.find(e=>o(e)===h)??null;return x(Y,{value:f,options:n,id:d,getOptionLabel:e=>s(e),getOptionKey:e=>a(e),sx:{minWidth:150,...r},size:"small",onChange:(e,n)=>{n?c(t,o(n)):u(t)},renderInput:e=>x(Sd,{...e,label:i})})}const kg=({items:t,initialValue:n,onChange:i})=>{const[r,s]=e.useState(()=>n??t[0].value),o=e.useId();return e.useEffect(()=>{n&&s(n)},[n]),w(pe,{value:r,children:[x(O,{sx:{borderBottom:1,borderColor:"divider"},children:x(me,{"aria-label":`tabs-${o}`,onChange:(e,t)=>{s(t),i?.(t)},children:t.map(({label:e,value:t})=>x(X,{label:e,value:t,sx:{textTransform:"none"}},`${o}-tab-${t}`))})}),t.map(({content:e,value:t})=>x(_e,{value:t,children:e},`${o}-tab-panel-${t}`))]})};var Og,Pg={exports:{}};
24
24
  /* @license
25
25
  Papa Parse
26
26
  v5.5.3