From 4b9f9a995b0b28c274f166c55a302ce1347ecdcb Mon Sep 17 00:00:00 2001 From: "Deployment Bot (from Travis CI)" Date: Tue, 23 Jul 2024 18:40:59 +0000 Subject: [PATCH] Deploy arubanetworks/meridian-web-sdk to github.com/arubanetworks/meridian-web-sdk.git:gh-pages --- .nojekyll | 1 + assets/highlight.css | 141 ++ assets/icons.js | 15 + assets/icons.svg | 1 + assets/main.js | 59 + assets/navigation.js | 1 + assets/search.js | 1 + assets/style.css | 1412 +++++++++++++++++ classes/API.html | 73 + examples/advanced-styling/index.html | 115 ++ examples/annotation-kiosk/index.html | 78 + examples/annotation-point/index.html | 118 ++ examples/api-as-option/index.html | 48 + examples/basic/index.html | 68 + examples/center-map/index.html | 106 ++ examples/container-styling/index.html | 49 + examples/cypress/annotation-point/index.html | 122 ++ examples/cypress/basic/index.html | 39 + examples/cypress/control-tags/index.html | 42 + examples/cypress/disable-click/index.html | 42 + examples/cypress/filter-by-id/index.html | 47 + examples/cypress/filter-by-name/index.html | 46 + .../cypress/filter-by-tag-label/index.html | 46 + examples/cypress/filter-update/index.html | 42 + examples/cypress/hidden-placemarks/index.html | 40 + .../cypress/lat-lng-to-map-point/index.html | 115 ++ examples/cypress/load-placemarks/index.html | 40 + examples/cypress/load-tags/index.html | 40 + examples/cypress/map-point-lat-lng/index.html | 78 + examples/cypress/polygon/index.html | 57 + examples/cypress/polyline/index.html | 53 + examples/cypress/tag-search/index.html | 39 + examples/cypress/utils/mock-all-assets.js | 204 +++ examples/cypress/utils/mock-api.js | 128 ++ examples/cypress/utils/mock-floor-assets.js | 3 + examples/cypress/utils/mock-maps.js | 75 + examples/cypress/utils/mock-placemarks.js | 1390 ++++++++++++++++ examples/cypress/utils/mock-svg.js | 40 + examples/dark-theme/index.html | 104 ++ .../arrow-left-hard.png | Bin 0 -> 1453 bytes .../arrow-left-soft.png | Bin 0 -> 1557 bytes .../arrow-left.png | Bin 0 -> 1532 bytes .../arrow-right-hard.png | Bin 0 -> 1463 bytes .../arrow-right-soft.png | Bin 0 -> 1520 bytes .../arrow-right.png | Bin 0 -> 1509 bytes .../arrow-straight.png | Bin 0 -> 1064 bytes .../directions-arrived.png | Bin 0 -> 1702 bytes .../directions-overview-multifloor/index.html | 707 +++++++++ .../directions-arrived.png | Bin 0 -> 1702 bytes examples/directions-overview/index.html | 325 ++++ examples/floor-control/index.html | 64 + examples/full-page/index.html | 59 + examples/index.html | 318 ++++ examples/lat-lng-to-map-point/index.html | 252 +++ examples/load-tags/index.html | 69 + examples/location-viewer/index.html | 141 ++ examples/map-point-lat-lng/index.html | 166 ++ .../marker-click-prevent-default/index.html | 57 + .../marker-click-unique-behavior/index.html | 83 + .../placemark.svg | 1 + .../marker-click-unique-behavior/style.css | 62 + examples/marker-click/index.html | 61 + examples/max-zoom/index.html | 73 + examples/meridian-sdk.js | 2 + examples/min-zoom/index.html | 73 + examples/openStream/index.html | 72 + examples/openStreamLocation/index.html | 69 + examples/openStreamTag/index.html | 66 + examples/openStreamTagLabel/index.html | 66 + examples/openStreamZone/index.html | 66 + examples/option-toggles/index.html | 320 ++++ examples/option-toggles/style.css | 78 + examples/overlay-area/index.html | 73 + examples/overlay-path-image-circle/car.png | Bin 0 -> 1109 bytes examples/overlay-path-image-circle/index.html | 97 ++ examples/overlay-polygon/index.html | 120 ++ examples/overlay-polyline/index.html | 76 + examples/placemark-customization/heart.png | Bin 0 -> 208 bytes examples/placemark-customization/index.html | 140 ++ .../placemark-label-zoom-level/index.html | 58 + examples/restricted-pan-zoom/index.html | 177 +++ examples/search-control/index.html | 63 + examples/shared.css | 197 +++ examples/shared.js | 76 + examples/tag-customization/index.html | 144 ++ examples/tag-label/index.html | 138 ++ examples/tag-labels/index.html | 145 ++ examples/tag-labels/style.css | 64 + examples/tag-name/index.html | 146 ++ examples/zoom-to-default/index.html | 106 ++ examples/zoom-to-point/index.html | 106 ++ functions/createAPI.html | 3 + functions/createMap.html | 6 + functions/init.html | 6 + functions/latLngToMapPoint.html | 5 + functions/mapPointToLatLng.html | 5 + functions/placemarkIconURL.html | 4 + functions/pointsFromArea.html | 2 + functions/restrictedPanZoom.html | 9 + index.html | 51 + interfaces/APIOptions.html | 7 + interfaces/CreateMapOptions.html | 70 + interfaces/CreateMapPlacemarksOptions.html | 18 + interfaces/CreateMapTagsOptions.html | 10 + interfaces/CustomAnnotationPoint.html | 13 + interfaces/CustomOverlayCircle.html | 29 + interfaces/CustomOverlayImage.html | 21 + interfaces/CustomOverlayMarker.html | 27 + interfaces/CustomOverlayPath.html | 25 + interfaces/CustomOverlayPolygon.html | 26 + interfaces/CustomOverlayPolyline.html | 24 + interfaces/CustomOverlayUse.html | 26 + interfaces/FloorData.html | 4 + interfaces/LocationData.html | 4 + interfaces/MeridianEvent.html | 4 + interfaces/MeridianMap.html | 19 + interfaces/OpenStreamOptions.html | 22 + interfaces/PlacemarkData.html | 4 + interfaces/Stream.html | 5 + interfaces/TagData.html | 4 + interfaces/getDirectionsOptions.html | 12 + interfaces/placemarkSearchOptions.html | 12 + modules.html | 36 + types/CustomAnnotation.html | 2 + types/CustomOverlay.html | 2 + types/EnvOptions.html | 2 + variables/version.html | 5 + 127 files changed, 10818 insertions(+) create mode 100644 .nojekyll create mode 100644 assets/highlight.css create mode 100644 assets/icons.js create mode 100644 assets/icons.svg create mode 100644 assets/main.js create mode 100644 assets/navigation.js create mode 100644 assets/search.js create mode 100644 assets/style.css create mode 100644 classes/API.html create mode 100644 examples/advanced-styling/index.html create mode 100644 examples/annotation-kiosk/index.html create mode 100644 examples/annotation-point/index.html create mode 100644 examples/api-as-option/index.html create mode 100644 examples/basic/index.html create mode 100644 examples/center-map/index.html create mode 100644 examples/container-styling/index.html create mode 100644 examples/cypress/annotation-point/index.html create mode 100644 examples/cypress/basic/index.html create mode 100644 examples/cypress/control-tags/index.html create mode 100644 examples/cypress/disable-click/index.html create mode 100644 examples/cypress/filter-by-id/index.html create mode 100644 examples/cypress/filter-by-name/index.html create mode 100644 examples/cypress/filter-by-tag-label/index.html create mode 100644 examples/cypress/filter-update/index.html create mode 100644 examples/cypress/hidden-placemarks/index.html create mode 100644 examples/cypress/lat-lng-to-map-point/index.html create mode 100644 examples/cypress/load-placemarks/index.html create mode 100644 examples/cypress/load-tags/index.html create mode 100644 examples/cypress/map-point-lat-lng/index.html create mode 100644 examples/cypress/polygon/index.html create mode 100644 examples/cypress/polyline/index.html create mode 100644 examples/cypress/tag-search/index.html create mode 100644 examples/cypress/utils/mock-all-assets.js create mode 100644 examples/cypress/utils/mock-api.js create mode 100644 examples/cypress/utils/mock-floor-assets.js create mode 100644 examples/cypress/utils/mock-maps.js create mode 100644 examples/cypress/utils/mock-placemarks.js create mode 100644 examples/cypress/utils/mock-svg.js create mode 100644 examples/dark-theme/index.html create mode 100644 examples/directions-overview-multifloor/arrow-left-hard.png create mode 100644 examples/directions-overview-multifloor/arrow-left-soft.png create mode 100644 examples/directions-overview-multifloor/arrow-left.png create mode 100644 examples/directions-overview-multifloor/arrow-right-hard.png create mode 100644 examples/directions-overview-multifloor/arrow-right-soft.png create mode 100644 examples/directions-overview-multifloor/arrow-right.png create mode 100644 examples/directions-overview-multifloor/arrow-straight.png create mode 100644 examples/directions-overview-multifloor/directions-arrived.png create mode 100644 examples/directions-overview-multifloor/index.html create mode 100644 examples/directions-overview/directions-arrived.png create mode 100644 examples/directions-overview/index.html create mode 100644 examples/floor-control/index.html create mode 100644 examples/full-page/index.html create mode 100644 examples/index.html create mode 100644 examples/lat-lng-to-map-point/index.html create mode 100644 examples/load-tags/index.html create mode 100644 examples/location-viewer/index.html create mode 100644 examples/map-point-lat-lng/index.html create mode 100644 examples/marker-click-prevent-default/index.html create mode 100644 examples/marker-click-unique-behavior/index.html create mode 100644 examples/marker-click-unique-behavior/placemark.svg create mode 100644 examples/marker-click-unique-behavior/style.css create mode 100644 examples/marker-click/index.html create mode 100644 examples/max-zoom/index.html create mode 100644 examples/meridian-sdk.js create mode 100644 examples/min-zoom/index.html create mode 100644 examples/openStream/index.html create mode 100644 examples/openStreamLocation/index.html create mode 100644 examples/openStreamTag/index.html create mode 100644 examples/openStreamTagLabel/index.html create mode 100644 examples/openStreamZone/index.html create mode 100644 examples/option-toggles/index.html create mode 100644 examples/option-toggles/style.css create mode 100644 examples/overlay-area/index.html create mode 100644 examples/overlay-path-image-circle/car.png create mode 100644 examples/overlay-path-image-circle/index.html create mode 100644 examples/overlay-polygon/index.html create mode 100644 examples/overlay-polyline/index.html create mode 100644 examples/placemark-customization/heart.png create mode 100644 examples/placemark-customization/index.html create mode 100644 examples/placemark-label-zoom-level/index.html create mode 100644 examples/restricted-pan-zoom/index.html create mode 100644 examples/search-control/index.html create mode 100644 examples/shared.css create mode 100644 examples/shared.js create mode 100644 examples/tag-customization/index.html create mode 100644 examples/tag-label/index.html create mode 100644 examples/tag-labels/index.html create mode 100644 examples/tag-labels/style.css create mode 100644 examples/tag-name/index.html create mode 100644 examples/zoom-to-default/index.html create mode 100644 examples/zoom-to-point/index.html create mode 100644 functions/createAPI.html create mode 100644 functions/createMap.html create mode 100644 functions/init.html create mode 100644 functions/latLngToMapPoint.html create mode 100644 functions/mapPointToLatLng.html create mode 100644 functions/placemarkIconURL.html create mode 100644 functions/pointsFromArea.html create mode 100644 functions/restrictedPanZoom.html create mode 100644 index.html create mode 100644 interfaces/APIOptions.html create mode 100644 interfaces/CreateMapOptions.html create mode 100644 interfaces/CreateMapPlacemarksOptions.html create mode 100644 interfaces/CreateMapTagsOptions.html create mode 100644 interfaces/CustomAnnotationPoint.html create mode 100644 interfaces/CustomOverlayCircle.html create mode 100644 interfaces/CustomOverlayImage.html create mode 100644 interfaces/CustomOverlayMarker.html create mode 100644 interfaces/CustomOverlayPath.html create mode 100644 interfaces/CustomOverlayPolygon.html create mode 100644 interfaces/CustomOverlayPolyline.html create mode 100644 interfaces/CustomOverlayUse.html create mode 100644 interfaces/FloorData.html create mode 100644 interfaces/LocationData.html create mode 100644 interfaces/MeridianEvent.html create mode 100644 interfaces/MeridianMap.html create mode 100644 interfaces/OpenStreamOptions.html create mode 100644 interfaces/PlacemarkData.html create mode 100644 interfaces/Stream.html create mode 100644 interfaces/TagData.html create mode 100644 interfaces/getDirectionsOptions.html create mode 100644 interfaces/placemarkSearchOptions.html create mode 100644 modules.html create mode 100644 types/CustomAnnotation.html create mode 100644 types/CustomOverlay.html create mode 100644 types/EnvOptions.html create mode 100644 variables/version.html diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e2ac6616 --- /dev/null +++ b/.nojekyll @@ -0,0 +1 @@ +TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false. \ No newline at end of file diff --git a/assets/highlight.css b/assets/highlight.css new file mode 100644 index 00000000..c0309598 --- /dev/null +++ b/assets/highlight.css @@ -0,0 +1,141 @@ +:root { + --light-hl-0: #795E26; + --dark-hl-0: #DCDCAA; + --light-hl-1: #000000; + --dark-hl-1: #D4D4D4; + --light-hl-2: #A31515; + --dark-hl-2: #CE9178; + --light-hl-3: #0000FF; + --dark-hl-3: #569CD6; + --light-hl-4: #0070C1; + --dark-hl-4: #4FC1FF; + --light-hl-5: #AF00DB; + --dark-hl-5: #C586C0; + --light-hl-6: #001080; + --dark-hl-6: #9CDCFE; + --light-hl-7: #800000; + --dark-hl-7: #808080; + --light-hl-8: #800000; + --dark-hl-8: #569CD6; + --light-hl-9: #000000FF; + --dark-hl-9: #D4D4D4; + --light-hl-10: #E50000; + --dark-hl-10: #9CDCFE; + --light-hl-11: #0000FF; + --dark-hl-11: #CE9178; + --light-hl-12: #800000; + --dark-hl-12: #D7BA7D; + --light-hl-13: #098658; + --dark-hl-13: #B5CEA8; + --light-hl-14: #0451A5; + --dark-hl-14: #CE9178; + --light-hl-15: #267F99; + --dark-hl-15: #4EC9B0; + --light-hl-16: #008000; + --dark-hl-16: #6A9955; + --light-code-background: #FFFFFF; + --dark-code-background: #1E1E1E; +} + +@media (prefers-color-scheme: light) { :root { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); + --hl-2: var(--light-hl-2); + --hl-3: var(--light-hl-3); + --hl-4: var(--light-hl-4); + --hl-5: var(--light-hl-5); + --hl-6: var(--light-hl-6); + --hl-7: var(--light-hl-7); + --hl-8: var(--light-hl-8); + --hl-9: var(--light-hl-9); + --hl-10: var(--light-hl-10); + --hl-11: var(--light-hl-11); + --hl-12: var(--light-hl-12); + --hl-13: var(--light-hl-13); + --hl-14: var(--light-hl-14); + --hl-15: var(--light-hl-15); + --hl-16: var(--light-hl-16); + --code-background: var(--light-code-background); +} } + +@media (prefers-color-scheme: dark) { :root { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); + --hl-2: var(--dark-hl-2); + --hl-3: var(--dark-hl-3); + --hl-4: var(--dark-hl-4); + --hl-5: var(--dark-hl-5); + --hl-6: var(--dark-hl-6); + --hl-7: var(--dark-hl-7); + --hl-8: var(--dark-hl-8); + --hl-9: var(--dark-hl-9); + --hl-10: var(--dark-hl-10); + --hl-11: var(--dark-hl-11); + --hl-12: var(--dark-hl-12); + --hl-13: var(--dark-hl-13); + --hl-14: var(--dark-hl-14); + --hl-15: var(--dark-hl-15); + --hl-16: var(--dark-hl-16); + --code-background: var(--dark-code-background); +} } + +:root[data-theme='light'] { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); + --hl-2: var(--light-hl-2); + --hl-3: var(--light-hl-3); + --hl-4: var(--light-hl-4); + --hl-5: var(--light-hl-5); + --hl-6: var(--light-hl-6); + --hl-7: var(--light-hl-7); + --hl-8: var(--light-hl-8); + --hl-9: var(--light-hl-9); + --hl-10: var(--light-hl-10); + --hl-11: var(--light-hl-11); + --hl-12: var(--light-hl-12); + --hl-13: var(--light-hl-13); + --hl-14: var(--light-hl-14); + --hl-15: var(--light-hl-15); + --hl-16: var(--light-hl-16); + --code-background: var(--light-code-background); +} + +:root[data-theme='dark'] { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); + --hl-2: var(--dark-hl-2); + --hl-3: var(--dark-hl-3); + --hl-4: var(--dark-hl-4); + --hl-5: var(--dark-hl-5); + --hl-6: var(--dark-hl-6); + --hl-7: var(--dark-hl-7); + --hl-8: var(--dark-hl-8); + --hl-9: var(--dark-hl-9); + --hl-10: var(--dark-hl-10); + --hl-11: var(--dark-hl-11); + --hl-12: var(--dark-hl-12); + --hl-13: var(--dark-hl-13); + --hl-14: var(--dark-hl-14); + --hl-15: var(--dark-hl-15); + --hl-16: var(--dark-hl-16); + --code-background: var(--dark-code-background); +} + +.hl-0 { color: var(--hl-0); } +.hl-1 { color: var(--hl-1); } +.hl-2 { color: var(--hl-2); } +.hl-3 { color: var(--hl-3); } +.hl-4 { color: var(--hl-4); } +.hl-5 { color: var(--hl-5); } +.hl-6 { color: var(--hl-6); } +.hl-7 { color: var(--hl-7); } +.hl-8 { color: var(--hl-8); } +.hl-9 { color: var(--hl-9); } +.hl-10 { color: var(--hl-10); } +.hl-11 { color: var(--hl-11); } +.hl-12 { color: var(--hl-12); } +.hl-13 { color: var(--hl-13); } +.hl-14 { color: var(--hl-14); } +.hl-15 { color: var(--hl-15); } +.hl-16 { color: var(--hl-16); } +pre, code { background: var(--code-background); } diff --git a/assets/icons.js b/assets/icons.js new file mode 100644 index 00000000..b79c9e89 --- /dev/null +++ b/assets/icons.js @@ -0,0 +1,15 @@ +(function(svg) { + svg.innerHTML = ``; + svg.style.display = 'none'; + if (location.protocol === 'file:') { + if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', updateUseElements); + else updateUseElements() + function updateUseElements() { + document.querySelectorAll('use').forEach(el => { + if (el.getAttribute('href').includes('#icon-')) { + el.setAttribute('href', el.getAttribute('href').replace(/.*#/, '#')); + } + }); + } + } +})(document.body.appendChild(document.createElementNS('http://www.w3.org/2000/svg', 'svg'))) \ No newline at end of file diff --git a/assets/icons.svg b/assets/icons.svg new file mode 100644 index 00000000..7dead611 --- /dev/null +++ b/assets/icons.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/main.js b/assets/main.js new file mode 100644 index 00000000..d6f13886 --- /dev/null +++ b/assets/main.js @@ -0,0 +1,59 @@ +"use strict"; +"use strict";(()=>{var Ce=Object.create;var ne=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var _e=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Fe=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!Re.call(t,i)&&i!==n&&ne(t,i,{get:()=>e[i],enumerable:!(r=Pe(e,i))||r.enumerable});return t};var De=(t,e,n)=>(n=t!=null?Ce(_e(t)):{},Fe(e||!t||!t.__esModule?ne(n,"default",{value:t,enumerable:!0}):n,t));var ae=Me((se,oe)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),y=s.str.charAt(1),p;y in s.node.edges?p=s.node.edges[y]:(p=new t.TokenSet,s.node.edges[y]=p),s.str.length==1&&(p.final=!0),i.push({node:p,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof se=="object"?oe.exports=n():e.lunr=n()}(this,function(){return t})})()});var re=[];function G(t,e){re.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible()),document.body.style.display||(this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}createComponents(e){re.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}showPage(){document.body.style.display&&(console.log("Show page"),document.body.style.removeProperty("display"),this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}scrollToHash(){if(location.hash){console.log("Scorlling");let e=document.getElementById(location.hash.substring(1));if(!e)return;e.scrollIntoView({behavior:"instant",block:"start"})}}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e&&!e.checkVisibility()){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r}}updateIndexVisibility(){let e=document.querySelector(".tsd-index-content"),n=e?.open;e&&(e.open=!0),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let i=Array.from(r.querySelectorAll(".tsd-index-link")).every(s=>s.offsetParent==null);r.style.display=i?"none":"block"}),e&&(e.open=n)}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(n&&n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let r=document.createElement("p");r.classList.add("warning"),r.textContent="This member is normally hidden due to your filter settings.",n.prepend(r)}}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent="Copied!",e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent="Copy"},100)},1e3)})})}};var ie=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var de=De(ae());async function le(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=de.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function he(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{le(e,t)}),le(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");let s=!1;i.addEventListener("mousedown",()=>s=!0),i.addEventListener("mouseup",()=>{s=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{s||(s=!1,t.classList.remove("has-focus"))}),Ae(t,i,r,e)}function Ae(t,e,n,r){n.addEventListener("input",ie(()=>{Ve(t,e,n,r)},200));let i=!1;n.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Ne(e,n):s.key=="Escape"?n.blur():s.key=="ArrowUp"?ue(e,-1):s.key==="ArrowDown"?ue(e,1):i=!1}),n.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!n.matches(":focus")&&s.key==="/"&&(n.focus(),s.preventDefault())})}function Ve(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=ce(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` + ${ce(l.parent,i)}.${d}`);let y=document.createElement("li");y.classList.value=l.classes??"";let p=document.createElement("a");p.href=r.base+l.url,p.innerHTML=u+d,y.append(p),e.appendChild(y)}}function ue(t,e){let n=t.querySelector(".current");if(!n)n=t.querySelector(e==1?"li:first-child":"li:last-child"),n&&n.classList.add("current");else{let r=n;if(e===1)do r=r.nextElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);else do r=r.previousElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);r&&(n.classList.remove("current"),r.classList.add("current"))}}function Ne(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),e.blur()}}function ce(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(K(t.substring(s,o)),`${K(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(K(t.substring(s))),i.join("")}var He={"&":"&","<":"<",">":">","'":"'",'"':"""};function K(t){return t.replace(/[&<>"'"]/g,e=>He[e])}var I=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",fe="mousemove",H="mouseup",J={x:0,y:0},pe=!1,ee=!1,Be=!1,D=!1,me=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(me?"is-mobile":"not-mobile");me&&"ontouchstart"in document.documentElement&&(Be=!0,F="touchstart",fe="touchmove",H="touchend");document.addEventListener(F,t=>{ee=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(fe,t=>{if(ee&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(H,()=>{ee=!1});document.addEventListener("click",t=>{pe&&(t.preventDefault(),t.stopImmediatePropagation(),pe=!1)});var X=class extends I{constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener(H,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(F,n=>this.onDocumentPointerDown(n)),document.addEventListener(H,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){D||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!D&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var ye=document.head.appendChild(document.createElement("style"));ye.dataset.for="filters";var Y=class extends I{constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ye.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`,this.app.updateIndexVisibility()}fromLocalStorage(){let e=Q.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){Q.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),this.app.updateIndexVisibility()}};var Z=class extends I{constructor(e){super(e),this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let n=Q.getItem(this.key);this.el.open=n?n==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let r=this.summary.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function ge(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,ve(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),ve(t.value)})}function ve(t){document.documentElement.dataset.theme=t}var Le;function be(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",xe),xe())}async function xe(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();Le=t.dataset.base+"/",t.innerHTML="";for(let s of i)we(s,t,[]);window.app.createComponents(t),window.app.showPage(),window.app.ensureActivePageVisible()}function we(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-index-accordion`:"tsd-index-accordion",s.dataset.key=i.join("$");let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.innerHTML='',Ee(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)we(u,l,i)}else Ee(t,r,t.class)}function Ee(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=Le+t.path,n&&(r.className=n),location.pathname===r.pathname&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else e.appendChild(document.createElement("span")).textContent=t.text}G(X,"a[data-toggle]");G(Z,".tsd-index-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Se=document.getElementById("tsd-theme");Se&&ge(Se);var je=new U;Object.defineProperty(window,"app",{value:je});he();be();})(); +/*! Bundled license information: + +lunr/lunr.js: + (** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + *) + (*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Set + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.tokenizer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Vector + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.stemmer + * Copyright (C) 2020 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + *) + (*! + * lunr.stopWordFilter + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.trimmer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.TokenSet + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Builder + * Copyright (C) 2020 Oliver Nightingale + *) +*/ diff --git a/assets/navigation.js b/assets/navigation.js new file mode 100644 index 00000000..d86415bd --- /dev/null +++ b/assets/navigation.js @@ -0,0 +1 @@ +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA5XWTY/aMBAG4P/iMypduktbbmg/JCQioi5cWu1h6swGi8SObG9UVPW/V/lYiBNn4r0y7zzGTuz4119m8Y9lK7aON2zGCrBHtmI8A2PQzNfx5tPR5hmbsZOQCVvdLL79m3V7doUVSpprq5AW9Svwprstu8jibtlB7jWCxQgKiuqHgsA4A4456JMJogfxoEH2kIbxnSAJvxmr8rWUykIVjpWQ1i/7ktP0rkSdwfleaJ4hATu5YHaTQxqg1rFgNAJ9Qj2tNrlgNq60SbRKhZMqO6dKBqhN8ENwJmTA0r4ng+mDCVAPhgSfMqX0A1jwSpcqRWwVr1/jUaUboKAItUgEyMcSR3aOkwihIihIKIKCYnYFymerEXLqpBikKPJyWI0ul5OgqGZMr9GUqOY9pKP/oK1R7SnaB6GR1/OlFscXpODiffbPCJofKdof/cgZfWXtufCczD3r8/evN3eLse3ox9rilPQoy8FUG+ZamTJK1MaZVAlawO8MzbwtucKXbjOvP3fOZeL1TTaPbX4pusDydtbcONiKJVho5GAxYQPV2YV9dbAFl7cdQEhhfb3V70RbBnYr072qbgfud/hK9DMEl7eRvdrWTT6unyG4y4u74Uoefmx9XD9DcdWw5kmrfK0RvJiTICiNxmrBLSYxyJ9K5T5tEBqAL/8BjVb0Rp8KAAA=" \ No newline at end of file diff --git a/assets/search.js b/assets/search.js new file mode 100644 index 00000000..e5ac9011 --- /dev/null +++ b/assets/search.js @@ -0,0 +1 @@ +window.searchData = "data:application/octet-stream;base64,H4sIAAAAAAAAA8VdbZPbOI7+L+6vvh6Tes+3bDJ7m6vkJnWZ2XvpmtpSbHW3btySS1Z3kp2a/35FSpRBCKBI25f5FKdNAA8JAgQf0tLvq679cly9uvt99Vvd7Fav0ni9asqnavVqddiX2+qp7H57t22bX/7j/Wq9eu72q1er++dm29dtc/wBN7l97J/2q/Vquy+Px+q4erVa/bGmVLd10x//2rVPr7uqpBRbDXzVdtWx7+ptX+0+ls3/tO0ToXnWxlf5vuzfNw8/tx/Kw0eFjtCNm7hVJ0mUTtr/8Y/+26Hy1Xkz++skD2ytV4eyq5qeAH87680JmNjIU6+/Xgrp9uv5oEyvGGzfLsb27ZrYwFx5Ghv93L7XYgRQ3OQac4XUeTP768JcmbWf9Ybxx76kgiII1O2g40xgC/Nl7+8IHp/WcTV8YM7UTU0Nn/qzb4radlXZVx/KA6Fn+i5M2euP71hlrz++cyqL5KTspeqOddtMql7Kri4/76vjD+M3TkUyOU3+N6YfP5cPx58OGs+ktm76qrsvt9XxB6qd04g1VY6P7Zc3bdN37V7JBxm4mQvT84XsCgPovt73VReGY5I5y7wz5wTYX0o3pPwInRmMXX1Uk2cXBgdIXe6P58Ou7Kt3yu5LuQ8DMpM9Cw4ZFB9NQeYVGrPWYQHyt3q3q5qTkjNs3TB6FkZk3s3zw4YB5hs8LijBIeTE4h1Icy1XCCcGmn9QeftsX36u9h/a3VlDBYWvCkhtFd5XL5U71l2ooIYLoFlx/3zs26efXqpuX3772O6/PYA1FuIj2vnHOjttOa037nlKgeamZnVPpxXW9ChxuemajgfWcO2IgQCzWsO/q89B1qHY5SCO/bd9IAAjcrnxYe8fZn2Sudz8fb2nY5w1Pkpcx/RPh3Jb99/CEZwEr+H/rv0teAKMMtcy/5/1rn88B4MRvBaQ93VT/Vtbh2XWm5nsteC8LY+PZdeVgXNkLnxNQO39/bHqz0U0SV8L0llRhEUvB6OW8Kr71Jdd4NDYgtcC8iF0TYNi1wLxY3MWiEHschBlUz+VfWBuOwldoaQp+zKwpBkkLjfdNm/29fa3MOsnobMAeO+BlgAsbn8oBQa8Z/m8rxs/cKrh/0MBPakNrKA17ktL6JPxsBraZdwz4ZxMh6Qal+GwMvpk/4w62gXDv5A+QQispF3mA0rpk/3QWtoFwLuYPpkPq6aXjIcUAjaG4DrAPQ+8C2o4EcIq6mUA/iU1RhFYUy9DCSqqMZrwqtoP0BtwdBKKZ5C9GpywKh8DOqPM94MUUOdTmEIL/WVQ5wX4maW+C05orX8Cc1axvwzFt9rHQILK/WUYvvU+hhFU8LtghFT8JxDBJT+CwNeZpU8KLvvHa9eXRmVIbamwXlRXTkYDakqHUZ8pPZn0nscOgwF15GQ3tIZ0mPesHyfTIbWjy+xjGTSjTPsLzfpVi5PVgErROcR+pRkY44CybNGwZ0mGrIeUY4sQ/EsxhCKwDPMC4lWCETj8y69FGAGlFwISWnZ5QfEtuQgsQeXWIhjvUgshCSuzHDCCSqwJRHh5tQjBq7RCAPzLqkXzXiUVMu9fTjnMe5dSk/GwMmrZ9Ie2r33OuDGASe5SBxyCyrcb0z7cLFtAvqm7rUdRMDS7chEJlAaUkSPiSwpJaNi/lHQb9ghiaNY3ft1G/QtKaDuwpHRD8CsqofmAsnKh91/Dus1fHg8xurxkWUY9Vyq3UfrSGWfTcdHM36RKNe+r5sEjQUHbltjFILxqeGjev4pfNuxboWD7QRXKUnB5bSfs6PLfUPgY99tSzBEEbCp8YHhvK+ZIwjYWvmB8thY0Fu/NhQ8U/+3FHEzgBsMXjucWg8YTssnwAXROEJ+x0XBD8a10IYigWtfLvGe1S4AIqXfdUPwqXgghoOZdqAx9rkpYlaH3TQm3Yd+LEtB20D2JmfmzrkkQ5oNuSYzyAZck3j2VD8u4dKsr7zxOOgM2HgPcS/YdwKz/tsNp1mPXAYz6bjqcJv33HMBy4JbDCcBvxwGMB2w4nIaXtxvAqOdmw2lwedkCBj1XKqfBL17FHjD6xb/Kcxp+rOqHx+WaAVieJC423VX3QYaH9peaDVuUgf0z1mQfIGdAuIJxv3oAmA4oB9z52qcagPnauxhwmvWtBYDloFIAGz+rEpgbDyoEBvGAOuCD5pQXYQ3NrlwJAKUBpcCI+JJaABr2Lwbchj2qAWjWtxxwG/WvB6DtwILADcGvIoDmA0oCt+mXuvryl3a5MoDGTzIXm++q+/8Ksj0KXMPwf4ca/u9rGB4OoPxYKWjflrsSjL/5lS1zHH8LqF7cQNqurpowCJPIxca9+Flo2p+fXTbsS+1g+0HEzlLi8eJn7czjz8/6GA+PhGB+1geGNz87RxLGz/qC8eFnaSze/KwPFH9+dg4mkJ/1hePJz9J4QvhZH0DnBPEZ/OwCFHXj7Md99VQ1/c+hVSMhfFVAr/u+qz8/91VYTcmqOAccW7r/clwerF+O16bvjMaAil0BvaRcn0z61+oOkx6F+mTQt0p3mPMv0SergfW5w7hfcT4ZDqjMHUaXC/LJoGcd7jC2nL0mY57pymHMj6KbDAYQdA6jnvTcZDWEnHOZ9aHmTka9iTmHSa+KdjLpX846A8SriAQR4l9BLpr1Kx+R7YDacRGAd+GIMIRVjV4wfEpGAoV3vbgIwr9YRDACK0UvIJ5lIoEkpEZchOJbICIcQdWhA4QvOz6ZD+LGlw17ng9g8yGnAw4QfvT8ZDyAnLeNyk2RiUTSNeZkX1V7yLSzsJxXra+bpu1LNTT2U3dnPUMNr1W/Ump9iliMO7zqIS0vlT6eZh3BSZpdikpPs8f6n6FDPYpcwfjncvvbQ9c+N7s37b51HF6QOObSV4X0KXxkZsJXBbRw02MBkZG+AqS+7l2bETo+R5krmHefOpLWPQ4ePY0vnj2S9v2OH3kIYSeQLgh+h5BYA3EOSS42JzlyvTl97b/kmAcw+jw99Zxnpj7vd+rxjujp9EvabwhJZkBxB87wqheC0bP/InJvLLezXgTvl0loC/tlfkR898uk1aX9sqfZfbvVU/TdW3/Tlsxl5u/3bduF2D4JXGa4PNT+RofGlxlUDxr+qwJ/HB/NHTT3Z6KXg/lUld328SwwWPQKc8B07VPb9W+r47ZqdjV4XL7fvGCVXBoj5W7xKewoQiaJy0z3QWb7a5hU2D2fqT3rc8gztBdgHM6AcLie+XbYLAYYBxIXpqapbgiwbgtdBuCpbvyeNm0hQFIXQii/ngPBlrpwBjQfygNf/tJzAMp85wrpZNvURgGlEQDODsfP5UPwcACZ7z4cxvZUKsYh4zEhZ8djSnbBozKT/O5jYyOYRmgTMkKoF655c/xFv3Ii0HsnqT9j7ozWp7FJA2ePQb88f84YHUL2z5tDeKTkWbNocbyGEjh8rJDcdx8naN+MUVAqsjrgHp43j2XD0GYudJPYnzM4g3kzNkHTB8Jnh+Z9W6qNwKe+7KvwESKlv/tAzVGY8QpKTERn2GF7q15V2NJUPYPyJPLdB2g07f2WmtOYGNA0J/eh6updXTY/vjCXZq0G/mzcoauUwNvqvnzeeyq+mQnRnbQxh4/xouWlUbYVINTucf5AH6mDr/3HeMfPYKzvZrcwdSG+80cUm1tOelByN5up9h2x4ziV6XcpzTDY7UO6bZl9ZpfkmcVn9yp85TF+9lxzoeCzc5n9Z9s+/dx6xOyEAUt8l45bRpfXCShv43UOA3sgzuAx7b/jEMBXpTr2w/MBcB6LbStl2DNR3cDW36Xrk0HfLK2anlDS6fmnQ9V86ruqfHKcTc0a+adq90EErdjnJGKOO/wogrG+dBbhbbqrju1zt63evQ0Y1Rtb6koQuLvsCxict9i9QbTNu6bu65J95ymDAsuFw/CNNR8Ay+vNXIvdAxeVwu9/WWxQ6k8Ymsn8ch6mBuaEnh2WH79uqwN36Y3FBaX+hGGZzC+XgNSwnNA77m609G8tWExG4k8YDm16acGiBmLAzA6CEgkCMgr8CUOgvlgu1qgx0Jjpdfuh6t/WXTW8ONuxdFPtrrV6s7p9FnCyA+z937Lr/8ov5DwQJHklKBO5eRYcW/pySFWzOxvQTPZyOH1XNsdD27G/n+PRYNGzwMAomU6Oh6sNjjihW14rUhzafWKF6QY3RXWjTz15FdWFBApeA0hX3TuC1oXEkrwSFHZbuwDEvb1dhiHzCcXrj+8mAKO6H15/fOecZYk43U/cts2x7563PbhmjPXc2I1o1AoIF77tb2BlnWk3Xwfr3ZfNwzO8+ztTDVoEa6+al7prmyfI5c4M2I18bMhUihhc4fhat0dev/naS/MmzunFnNePmwXbua/67aPaivzlmw4v3hTR8hJr78cc52UQND7b5tuqL+v9srmp3XmWTqec3n1kRC637+NRqv15lofDS+9eE80vsPsWXp53GHzrujG/ZOnT3/91wcbQIjhX7arP7XOzrU6V17B2/KVy9WpBygeFcycTZHBpQ6eUOAEzA99OmyAel9XGz7X2Lf8fmxdcCA73+09feN/sf/3xnaOoPH3rX0hSKxmv0ndNW6rZrUXfYW5x+V+6hYqrAIctn3rAXf6jqQRsDd/4e2XLcS5A0c3WSbOMYMKJhZmJpegbBbaIQYEjo5Y+5hdI41f+Y/NUbpf03AxtaLgGC410yh4cXquBP2r6wRtzZa6nbtjYaPzzBQuYm768FLetyIX5hIfGa1ZoDjL8/lLUM10u4BawP35dr+pmV31dvfp99VJ1R1VTvFrJ2+i2WK1X93W13x1Xr+4G++vVtn3SKfLX8bu/V2p/pFoMTX7YrNZ3m3US3Yo4//XX9Z2R0F/oP+hmYrW+E1QzYTWTq/WdpJpJq1m0Wt9FVLPIahav1nfxWsrbbBNZzWKrWbJa3yXrWN6KVFrNEqtZulrfpVSz1GqWrdZ3GYUts5rlHLbcalas1nc5pa2wh1eNdkGOL/KDdgTpMGG7Ql1bvBO0z2xvCDXqgnSbsB2irhzfCdJzwvaJUGMvYrKl7RZ1EfVOJGRL2zNCeUCk6zi/3cR2Q9s3gnWOsL0jlBdERmm0/SOVFwTpSGk7SGoHka6UKFZ0sJCulLaDZMR1XNr+kWzESNs9MuE6Lm3vSOUCSc4iaXtHKh9IOvht90jlBEnOImn7RyovyHgdJbf5xg5aaTsoUl6QyTrKbjeJ3aPIdlCkvCDTdRTdpnlht7QdFGkHZaROlM+UG2ROtrQ9FCk/yIIY+Mj2UKT8EG3WUX4b54nd0nZRpPwQCSqzRbaLIuWHSJI6bRdFyg9RRLa0XRQpP0Qx2dJ2Uaz8ECVUy9h2Uaz8EKVkS9tFsfJDlJEtbRfFes3J13F8m2aoJVp1lCOigmxp+yhWjog3ZEvbR7FyRCxInLaPYuWIWFLejG0fxTrLRWRL20dxwS6ktosS5YeYzNqJ7aJEsJGZ2C5KJBuZie2iJGIjM7FdlMRsZCaoNkjYyExsFyUpF5mJ7aEkYyMzsT2U5GxkJraHkoKNzMR2UbphIzO1XZQKNjJT20Wp8kOcrOPNrUhSu6XtojRiYzi1XZTGbAyntovShI3hFFVwKRvDqe2jNGNjOLV9lOZsDKe2j9KCjeHU9lGmwygli0jbRxkfRpnto4wPo8z2UcaHUWb7KOPDKLN9lPFhlNk+ynSmowtoVGjzcZTZPspyNjoy20dZwUZHZvso37DRkds+ygUbHbnto1yy0ZHbPsojNjpy20d5zEZHbvsoT9joyG0f5SkbHbntozxjoyNH+6GcjY7c9lGu4yinsmJu+6jQcVRQLQvbR4VyRELW0oXto0KyEVfYPioiNuIK20dFzEZcYfuoSNiIK2wfFSkbcYXto0I5IiFL9ML2UaEckZAleoG2rcoRCVmiF3jnqjyR0Du9Ddq8bgQb8sN3sK1kF8/hO9g2YhPE8B1sG7MpYvgOtk3YJDF8B9umbJoYvoNtMzZRDN/BtjmbKobvYNuCTRbDd6CtJhbogBUz0kGwISsw7aDJBTpoBSYeNL1AF7sCUw+aYKDLXYHJB00x0AQAZh80x5DQ9APmHzTNQOcOgSkIzTTQ2UNgFkKTDXT+EIiIEJpuoDOIQFSE0IQDnUOExGyR5Fg0gdgIoUkHkkkTiI8QmnZIUmr9EIiSEJp5SDK6LfKa5h6SnCJuEC0hNPnAzF1ETAjJL2ICURNCExDMPEfkhNAUBDPPET0hNAnBzHNEUAhNQ9DzPMIcn/JMQlOMiKMQA0lBz3NEUwhNRjDzHBEVQtMRzDxHVIXQhAQzzxFZITQlwcxzRFcITUqkNIGKCAuhaYmUplARZSE0MZHSJCoiLYSmJlKGRkV+0+RESi+vMWZnlW9SOpch6kLEPL8kEHkhYp5hEoi+EDHPMQlEYIiYZ5kEojBEzPNMArEYYqAx6KUY8RhCsxXMUoyYDKH5CmYpRlyG0IwFsxQjNkNoziIl94siwby68k1K7q8EYjSEJi5SkrUWiNQQiWNtQ7SGSBxrGyI2ROJY2xC1IVLH2obIDZE61jZEb4iUX9sQvyFSfm1DBIdIHWsbojhE6ljbUnwewq9tiOUQKb+FFojnECm/iRaI6RApv40WiOsQGb+RFojtEBm/lRaI7xAZv5kWiPEQGb+dFojzEBm/oRaI9RCa22DqAcR7iIH4oOuMDB9kZXztgLgPoRmOlF64EfshNMeR0Ysb4j+EZjmYgEcMiNA8Bx1AiAIRmuigAwhxIEIzHRm9vCIWRGiuI6OXV8SDCM12ZPTyipgQofmOjF5eERciNOOR0csrYkPEQIfQFR/iQ8RAiNAVH2JExECJkBUfokSEJj4yelVBpIjQ1EdGryqIFhGa/MjoVQURI6JgDyQFYkaE5j+YdIq4EaEZECadInZEaA4ko2MN8SNCsyD5hjwPxifH+mRfkE3x2bFyTE6fjCKGRGoWJKfPRhFDIjULkpNzVyKGRGoWJCfnrkQMidQsSE5OHIkYEqlZkJycOBIxJFKzIDlziI4OkzULktPH6IghkZoFKeiDdMSQSM2CFPR5NmJI5HApg/YbYkikZkEK2m+IIZGC3bVJRJBITYIUtIsRQSIFf/iP+BGpSZCCng2IIJGaBGHUIqdpDqSgJw7iRyR/R0MiekRqCqSg5xi+pyHZ/CjxRQ3NgBT0dJxd1eBdhu9qaAqkoGcuvq7huK+BL2wMNzY2zHUR5DPJ+wzf2tAUiNjQEYEvbkjeafjmhqZAxIaOHsSPSM2BiA0dPoggkQNBQoJA/IjUJIjY0PGDGBKpWRCxoaMCUSQy4j2HGBIZDZ6jwwJRJFLTIGJDT3bEkUjNgzAgkOc0DSI29GxHHImM2PsCElEkMh48R093xJHImPccokhkPNxeo6c74kik5kEYvfiClL7BRl+Lk4gjkZoHoUsHiTgSqXkQsnSQiCKRmgYR9IU7iTgSqXkQQd+5k4gkkZoIEfS1O4lYEpnwqRKRJFITIYK+pCcRSyITPlcikkRqIkQIOjQQSyITPuQQSSI1ESIEHUWIJZEJnywRSSKTwXN0FCGWRCZ8skQkiUwGv9FRhFgSqZkQZlYilkRqJkQwlwwRTSI1FyK4y37IdelwaZSexIgqkZoOEcyVP8SVSM2HCElPYkSWSM2IcIOBvKcZESHpWYzoEqkpESHpqYn4Eqk5ESHp+YYIE6lJEXLnIBFfIrPBffR8Q4SJzAb3UTeYJCJMpCZFRESmK0SYyGy49EsDRr7TpIiImFugyHeaFRERPSsQZSI1LSIielYgzkRqXkREtKcRaSI1MSIi2tOINZGaGRER7WlEm0jNjYiIdh8iTqRmR0RE5wBEnUhNj4iYjmvEnUjNj4iYjmtEnsh8uLhNexCxJzLnUyciT6QmSETM3PrFF4S1/+iLiBLRJ1JTJCKmnY34E1ls+MmMCBRZCD6gEIEiC8kHFCJQZDE4j55wiEGRxeA8esIhDkUW7Lm3RBSK1DSJiOm5iTgUWQzOo+cmIlGkZkoEfRlHIhpFFvzxgEQ8SqS5EkHfdIkQkRJtHNe8EZESabJE0BdjIsSkRBv+el00Min6NzovVddXu3fDb3Xu7qbfuf2++sf4A57pV0K/r+LVq9//WK/y4R8x/ivHP8fF+HeRjB8iOX4oNubD2FZRCOOH6S+p+WD0yo35YBobU2p/OH4wjSNhPpg2UWY+FAaoaRNH44fEmEiMicSIJ8ZEYkzk5i+F7uAfp98tqf+pIZ7eKQmGT4DxGxWkI6DcjKQw42O6o3h7p4mn8b2RwFB+MpRPrhBGcWYUp6xi8C6Lk9pic1KreCpGWL2r5ySUg04ronEYtmzDS7eHmWWVLE+mhy5RwsNjHYBcJIEcO5Cn19Zth1f7nTRkQIHi7ZcU1MN774CCGCrgRvykYHjdIZCPoDzXg+HhkU/qEZeg9wI6LJacrPoRn24GZGV2EjWxa+IhG/8tTHCb6BQmztThJ2dM//IWuhZYkgU3wtazUoC0zKGDBSetnzmNZqaAro2ckrOBBZLssBpJYj5nGQyKRQ2n1+pQsVGAEXAPwFN5UG8oIgMMAGInmX6rXgleugd6lMIesTCQhsPwxB6gBsxYdQDoUtOaV82exNMCinMZyhLf1t12b83IBGBY6MmoYxb0CUhXQnBBb+lQ7q2suZ3AzkTsBIVKhnf5goUAeIVNubaGdv/twXatjGDu9VWyrxt78QMzLPGC8mwnijSHU5Qd06/WEIJALTJOxJpCCcgKBdfb4QWfoHNAKDY5UEQmK5r0mLP6zBM4TpGun8DxubLtCGhIsqvBrrq3oluC6WjAmConG/8tDFpTc6nLcMOHhIc9PrEdINzAlZqdtbv6WH7eq6eeA1ErKZqKi1FQNaexqm01Eo5RyiGwHscBKwYBFxRTARbcjK2aFzKdxtBP3PjpZ9PohxjjCaV2ykAB14mTguPnb/vpiT2wO3B1yLmVRus5zb3P3+6HRw5BRXChzbm0OFNEg4JLfs4NrdZ1fHmwxwW6h63HtGhfPuzGh0ZB2yn0L7fCGAX0UEDnZlxaASroQYCBwq5V9/Xewh+BeWECNBkzTmYyz8aU+rEJ4ZRFWe/37aHc1r0VxjAKonGrYjY/6scMo3ouC9/X+95ezASsD6bdGCdOhgRM5mr37JC1M0IOi4pi2qqy4HU8bYc3WR7brt+BN1kCrXAWbLjIeqj6HXgSHPQ/XFbZrZglT2Uaq/xLuPlsXlYL1jmYbeU0T8yHggP02FX3lh64LJu9uLr3R4vbnpFgVphdezIuRNn4r+EJhFkThJmQIjGrhNlXRmbmK2KDAdDUdsKHk4NLa/Vxd3pPB5SFySTi1qp9+bnaP7U7e4MFExk3WlpSvQ9hP7xREYhbG1tW3DyXCc47uLKYQZbsJmRfWsMFvM3NtX3Z75sHVecfZvU9mPOcg/Z2mMEimIt59eZT+OpRABeuNBvWQW25G17dCiRhemZnk8ns82QlYbJiB3cUt6Mig30uTLI0uVymhqhig0w/wwkumjBHsHWw8VffDh60IIF9BCuuNjBVY3UFljGmA+mYgXO3pnnKSuEmNeZcMkg/2UMKy6B4TCjpOLIsKTNo0k+CtnSBGDDsYTqmJLYkH3SNbyoHXYLsDsvQPJVfySRQwCTARsfT+JKR6gXXuhsoL7l4NvKYBNnABTBisdcNjR3mvw1re7ajBY6cqGTDIAtplgi2Kmub7fDKT6AS+CCeaFiz6phlSbCso1KJSS24l1Hn95wkuYOCI8Pm9rapTq9PgJbhkpRwQdI2usrZjm/TA26BqYIt0Ebxo3mbFJCH2wSWjmqbenjbBs66AhJRMuaHfD+8Ru+oXqM374W6dgZg8OP/VB5m86GAhRlbErRNq99TALHDvie846alam4aLjosDwc0UB6AU0/wI9iXD3P7cPRZTlTLUpbh1BN8//vyYS6sLuuA0WOH/VApIlg/LBKucBZHxZqehMlKGsZdzG0t265GaTSFZB8vN72dHNQYMNg2HGqVAvdV82AnwgQuhuxuaJoo8wIFRghLdJ04lm3bqKcCAhVAwaJ5u9swTjbc6ouoMMpjEk7XlAsXXdTYfBgYd3NGyDKKg/h91z6VXWWPIfAAJzy8eHFn3j4HUxScshE3gjYjDEQKLrK76p7YAwu41ZIp5++uup/V7AKeBcnUYdfiXlM4PDHbv+reZvDhoUzMDat561W9QyEMC5qYCygjjY+31aVFIM6P0bHv6m1f7Q6lrm2sqQU0MPLDfD726CALpj+Wrjk+luhIHlbm3BTWUtW+Un8s+76rPz/3lTVyKWQD2HoF6sGDl0KCJ+Gy4PGxfd7v1E5jPnQZZBIKbvE5PrZfRm5mVjzARMyPRfvFYniszATdxyZVpeKx3u2qhs5v0io+HEqGmUDhgBNxw0XB7KgYRhzLGev9DJkhIOyUNarEWerdIjXYrhPrN8xOvO/7rv3N6jI83zeHz4YVyia+0hxtTEczbP4bLOzK42PZdfbZIuRr43HnkY6ac7MB2RgLidk2ZI5RGE219/fHyt5iguEwN1VSc+XG9GZj+meOckTmHjh1JLe1N3HwXkU6qskN9M3Es5mNFnvAfjLwv21tVcWQLDe3b9LRQm70bgztOF0cYk8rB0sUZQ1SWDx2xdCZudnNbYx+wzKKjE1V2tBsxw5p22j0gGFkMqN9Y+xN+0l22Tz23+zjZ3ijIRpRJmM/svHfwnhGGl9FkyHOReo4ZHbKBCsxlvKdUWMwWDfc+PV1b3csg+mZrdHH59bDpAKrZHNcKdmT+enVVLPl3TrITlncSMwqMkcHm+jOxn8LE4HmaEOYslKYwxnBnnMRe6ENrLgizi+DoH5K90tpn3JZFTYjbh7GbZHDsPri5Orqy+fWrvUgiR5xU30WSwmsGcyFPmESnWDv1tln/OBegYkK4w6T0gR7YGkXnyAZGlUmT5hUL9hDVFXP9C1Z6kN3RNzaM8jPy+8NnP90If3renWoDzr/rl7d/frHH/8HmmbUINfxAAA="; \ No newline at end of file diff --git a/assets/style.css b/assets/style.css new file mode 100644 index 00000000..778b9492 --- /dev/null +++ b/assets/style.css @@ -0,0 +1,1412 @@ +:root { + /* Light */ + --light-color-background: #f2f4f8; + --light-color-background-secondary: #eff0f1; + --light-color-warning-text: #222; + --light-color-background-warning: #e6e600; + --light-color-icon-background: var(--light-color-background); + --light-color-accent: #c5c7c9; + --light-color-active-menu-item: var(--light-color-accent); + --light-color-text: #222; + --light-color-text-aside: #6e6e6e; + --light-color-link: #1f70c2; + + --light-color-ts-keyword: #056bd6; + --light-color-ts-project: #b111c9; + --light-color-ts-module: var(--light-color-ts-project); + --light-color-ts-namespace: var(--light-color-ts-project); + --light-color-ts-enum: #7e6f15; + --light-color-ts-enum-member: var(--light-color-ts-enum); + --light-color-ts-variable: #4760ec; + --light-color-ts-function: #572be7; + --light-color-ts-class: #1f70c2; + --light-color-ts-interface: #108024; + --light-color-ts-constructor: var(--light-color-ts-class); + --light-color-ts-property: var(--light-color-ts-variable); + --light-color-ts-method: var(--light-color-ts-function); + --light-color-ts-call-signature: var(--light-color-ts-method); + --light-color-ts-index-signature: var(--light-color-ts-property); + --light-color-ts-constructor-signature: var(--light-color-ts-constructor); + --light-color-ts-parameter: var(--light-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --light-color-ts-type-parameter: #a55c0e; + --light-color-ts-accessor: var(--light-color-ts-property); + --light-color-ts-get-signature: var(--light-color-ts-accessor); + --light-color-ts-set-signature: var(--light-color-ts-accessor); + --light-color-ts-type-alias: #d51270; + /* reference not included as links will be colored with the kind that it points to */ + + --light-external-icon: url("data:image/svg+xml;utf8,"); + --light-color-scheme: light; + + /* Dark */ + --dark-color-background: #2b2e33; + --dark-color-background-secondary: #1e2024; + --dark-color-background-warning: #bebe00; + --dark-color-warning-text: #222; + --dark-color-icon-background: var(--dark-color-background-secondary); + --dark-color-accent: #9096a2; + --dark-color-active-menu-item: #5d5d6a; + --dark-color-text: #f5f5f5; + --dark-color-text-aside: #dddddd; + --dark-color-link: #00aff4; + + --dark-color-ts-keyword: #3399ff; + --dark-color-ts-project: #e358ff; + --dark-color-ts-module: var(--dark-color-ts-project); + --dark-color-ts-namespace: var(--dark-color-ts-project); + --dark-color-ts-enum: #f4d93e; + --dark-color-ts-enum-member: var(--dark-color-ts-enum); + --dark-color-ts-variable: #798dff; + --dark-color-ts-function: #a280ff; + --dark-color-ts-class: #8ac4ff; + --dark-color-ts-interface: #6cff87; + --dark-color-ts-constructor: var(--dark-color-ts-class); + --dark-color-ts-property: var(--dark-color-ts-variable); + --dark-color-ts-method: var(--dark-color-ts-function); + --dark-color-ts-call-signature: var(--dark-color-ts-method); + --dark-color-ts-index-signature: var(--dark-color-ts-property); + --dark-color-ts-constructor-signature: var(--dark-color-ts-constructor); + --dark-color-ts-parameter: var(--dark-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --dark-color-ts-type-parameter: #e07d13; + --dark-color-ts-accessor: var(--dark-color-ts-property); + --dark-color-ts-get-signature: var(--dark-color-ts-accessor); + --dark-color-ts-set-signature: var(--dark-color-ts-accessor); + --dark-color-ts-type-alias: #ff6492; + /* reference not included as links will be colored with the kind that it points to */ + + --dark-external-icon: url("data:image/svg+xml;utf8,"); + --dark-color-scheme: dark; +} + +@media (prefers-color-scheme: light) { + :root { + --color-background: var(--light-color-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + + --color-ts-keyword: var(--light-color-ts-keyword); + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); + } +} + +@media (prefers-color-scheme: dark) { + :root { + --color-background: var(--dark-color-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + + --color-ts-keyword: var(--dark-color-ts-keyword); + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); + } +} + +html { + color-scheme: var(--color-scheme); +} + +body { + margin: 0; +} + +:root[data-theme="light"] { + --color-background: var(--light-color-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + + --color-ts-keyword: var(--light-color-ts-keyword); + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); +} + +:root[data-theme="dark"] { + --color-background: var(--dark-color-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + + --color-ts-keyword: var(--dark-color-ts-keyword); + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); +} + +.always-visible, +.always-visible .tsd-signatures { + display: inherit !important; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + line-height: 1.2; +} + +h1 > a:not(.link), +h2 > a:not(.link), +h3 > a:not(.link), +h4 > a:not(.link), +h5 > a:not(.link), +h6 > a:not(.link) { + text-decoration: none; + color: var(--color-text); +} + +h1 { + font-size: 1.875rem; + margin: 0.67rem 0; +} + +h2 { + font-size: 1.5rem; + margin: 0.83rem 0; +} + +h3 { + font-size: 1.25rem; + margin: 1rem 0; +} + +h4 { + font-size: 1.05rem; + margin: 1.33rem 0; +} + +h5 { + font-size: 1rem; + margin: 1.5rem 0; +} + +h6 { + font-size: 0.875rem; + margin: 2.33rem 0; +} + +.uppercase { + text-transform: uppercase; +} + +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +.container { + max-width: 1700px; + padding: 0 2rem; +} + +/* Footer */ +footer { + border-top: 1px solid var(--color-accent); + padding-top: 1rem; + padding-bottom: 1rem; + max-height: 3.5rem; +} +.tsd-generator { + margin: 0 1em; +} + +.container-main { + margin: 0 auto; + /* toolbar, footer, margin */ + min-height: calc(100vh - 41px - 56px - 4rem); +} + +@keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes fade-out { + from { + opacity: 1; + visibility: visible; + } + to { + opacity: 0; + } +} +@keyframes fade-in-delayed { + 0% { + opacity: 0; + } + 33% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes fade-out-delayed { + 0% { + opacity: 1; + visibility: visible; + } + 66% { + opacity: 0; + } + 100% { + opacity: 0; + } +} +@keyframes pop-in-from-right { + from { + transform: translate(100%, 0); + } + to { + transform: translate(0, 0); + } +} +@keyframes pop-out-to-right { + from { + transform: translate(0, 0); + visibility: visible; + } + to { + transform: translate(100%, 0); + } +} +body { + background: var(--color-background); + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", + Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + font-size: 16px; + color: var(--color-text); +} + +a { + color: var(--color-link); + text-decoration: none; +} +a:hover { + text-decoration: underline; +} +a.external[target="_blank"] { + background-image: var(--external-icon); + background-position: top 3px right; + background-repeat: no-repeat; + padding-right: 13px; +} + +code, +pre { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + padding: 0.2em; + margin: 0; + font-size: 0.875rem; + border-radius: 0.8em; +} + +pre { + position: relative; + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; + padding: 10px; + border: 1px solid var(--color-accent); +} +pre code { + padding: 0; + font-size: 100%; +} +pre > button { + position: absolute; + top: 10px; + right: 10px; + opacity: 0; + transition: opacity 0.1s; + box-sizing: border-box; +} +pre:hover > button, +pre > button.visible { + opacity: 1; +} + +blockquote { + margin: 1em 0; + padding-left: 1em; + border-left: 4px solid gray; +} + +.tsd-typography { + line-height: 1.333em; +} +.tsd-typography ul { + list-style: square; + padding: 0 0 0 20px; + margin: 0; +} +.tsd-typography .tsd-index-panel h3, +.tsd-index-panel .tsd-typography h3, +.tsd-typography h4, +.tsd-typography h5, +.tsd-typography h6 { + font-size: 1em; +} +.tsd-typography h5, +.tsd-typography h6 { + font-weight: normal; +} +.tsd-typography p, +.tsd-typography ul, +.tsd-typography ol { + margin: 1em 0; +} +.tsd-typography table { + border-collapse: collapse; + border: none; +} +.tsd-typography td, +.tsd-typography th { + padding: 6px 13px; + border: 1px solid var(--color-accent); +} +.tsd-typography thead, +.tsd-typography tr:nth-child(even) { + background-color: var(--color-background-secondary); +} + +.tsd-breadcrumb { + margin: 0; + padding: 0; + color: var(--color-text-aside); +} +.tsd-breadcrumb a { + color: var(--color-text-aside); + text-decoration: none; +} +.tsd-breadcrumb a:hover { + text-decoration: underline; +} +.tsd-breadcrumb li { + display: inline; +} +.tsd-breadcrumb li:after { + content: " / "; +} + +.tsd-comment-tags { + display: flex; + flex-direction: column; +} +dl.tsd-comment-tag-group { + display: flex; + align-items: center; + overflow: hidden; + margin: 0.5em 0; +} +dl.tsd-comment-tag-group dt { + display: flex; + margin-right: 0.5em; + font-size: 0.875em; + font-weight: normal; +} +dl.tsd-comment-tag-group dd { + margin: 0; +} +code.tsd-tag { + padding: 0.25em 0.4em; + border: 0.1em solid var(--color-accent); + margin-right: 0.25em; + font-size: 70%; +} +h1 code.tsd-tag:first-of-type { + margin-left: 0.25em; +} + +dl.tsd-comment-tag-group dd:before, +dl.tsd-comment-tag-group dd:after { + content: " "; +} +dl.tsd-comment-tag-group dd pre, +dl.tsd-comment-tag-group dd:after { + clear: both; +} +dl.tsd-comment-tag-group p { + margin: 0; +} + +.tsd-panel.tsd-comment .lead { + font-size: 1.1em; + line-height: 1.333em; + margin-bottom: 2em; +} +.tsd-panel.tsd-comment .lead:last-child { + margin-bottom: 0; +} + +.tsd-filter-visibility h4 { + font-size: 1rem; + padding-top: 0.75rem; + padding-bottom: 0.5rem; + margin: 0; +} +.tsd-filter-item:not(:last-child) { + margin-bottom: 0.5rem; +} +.tsd-filter-input { + display: flex; + width: fit-content; + width: -moz-fit-content; + align-items: center; + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + cursor: pointer; +} +.tsd-filter-input input[type="checkbox"] { + cursor: pointer; + position: absolute; + width: 1.5em; + height: 1.5em; + opacity: 0; +} +.tsd-filter-input input[type="checkbox"]:disabled { + pointer-events: none; +} +.tsd-filter-input svg { + cursor: pointer; + width: 1.5em; + height: 1.5em; + margin-right: 0.5em; + border-radius: 0.33em; + /* Leaving this at full opacity breaks event listeners on Firefox. + Don't remove unless you know what you're doing. */ + opacity: 0.99; +} +.tsd-filter-input input[type="checkbox"]:focus + svg { + transform: scale(0.95); +} +.tsd-filter-input input[type="checkbox"]:focus:not(:focus-visible) + svg { + transform: scale(1); +} +.tsd-checkbox-background { + fill: var(--color-accent); +} +input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { + stroke: var(--color-text); +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-background { + fill: var(--color-background); + stroke: var(--color-accent); + stroke-width: 0.25rem; +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-checkmark { + stroke: var(--color-accent); +} + +.tsd-theme-toggle { + padding-top: 0.75rem; +} +.tsd-theme-toggle > h4 { + display: inline; + vertical-align: middle; + margin-right: 0.75rem; +} + +.tsd-hierarchy { + list-style: square; + margin: 0; +} +.tsd-hierarchy .target { + font-weight: bold; +} + +.tsd-full-hierarchy:not(:last-child) { + margin-bottom: 1em; + padding-bottom: 1em; + border-bottom: 1px solid var(--color-accent); +} +.tsd-full-hierarchy, +.tsd-full-hierarchy ul { + list-style: none; + margin: 0; + padding: 0; +} +.tsd-full-hierarchy ul { + padding-left: 1.5rem; +} +.tsd-full-hierarchy a { + padding: 0.25rem 0 !important; + font-size: 1rem; + display: inline-flex; + align-items: center; + color: var(--color-text); +} + +.tsd-panel-group.tsd-index-group { + margin-bottom: 0; +} +.tsd-index-panel .tsd-index-list { + list-style: none; + line-height: 1.333em; + margin: 0; + padding: 0.25rem 0 0 0; + overflow: hidden; + display: grid; + grid-template-columns: repeat(3, 1fr); + column-gap: 1rem; + grid-template-rows: auto; +} +@media (max-width: 1024px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(2, 1fr); + } +} +@media (max-width: 768px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(1, 1fr); + } +} +.tsd-index-panel .tsd-index-list li { + -webkit-page-break-inside: avoid; + -moz-page-break-inside: avoid; + -ms-page-break-inside: avoid; + -o-page-break-inside: avoid; + page-break-inside: avoid; +} + +.tsd-flag { + display: inline-block; + padding: 0.25em 0.4em; + border-radius: 4px; + color: var(--color-comment-tag-text); + background-color: var(--color-comment-tag); + text-indent: 0; + font-size: 75%; + line-height: 1; + font-weight: normal; +} + +.tsd-anchor { + position: relative; + top: -100px; +} + +.tsd-member { + position: relative; +} +.tsd-member .tsd-anchor + h3 { + display: flex; + align-items: center; + margin-top: 0; + margin-bottom: 0; + border-bottom: none; +} + +.tsd-navigation.settings { + margin: 1rem 0; +} +.tsd-navigation > a, +.tsd-navigation .tsd-accordion-summary { + width: calc(100% - 0.25rem); + display: flex; + align-items: center; +} +.tsd-navigation a, +.tsd-navigation summary > span, +.tsd-page-navigation a { + display: flex; + width: calc(100% - 0.25rem); + align-items: center; + padding: 0.25rem; + color: var(--color-text); + text-decoration: none; + box-sizing: border-box; +} +.tsd-navigation a.current, +.tsd-page-navigation a.current { + background: var(--color-active-menu-item); +} +.tsd-navigation a:hover, +.tsd-page-navigation a:hover { + text-decoration: underline; +} +.tsd-navigation ul, +.tsd-page-navigation ul { + margin-top: 0; + margin-bottom: 0; + padding: 0; + list-style: none; +} +.tsd-navigation li, +.tsd-page-navigation li { + padding: 0; + max-width: 100%; +} +.tsd-nested-navigation { + margin-left: 3rem; +} +.tsd-nested-navigation > li > details { + margin-left: -1.5rem; +} +.tsd-small-nested-navigation { + margin-left: 1.5rem; +} +.tsd-small-nested-navigation > li > details { + margin-left: -1.5rem; +} + +.tsd-page-navigation ul { + padding-left: 1.75rem; +} + +#tsd-sidebar-links a { + margin-top: 0; + margin-bottom: 0.5rem; + line-height: 1.25rem; +} +#tsd-sidebar-links a:last-of-type { + margin-bottom: 0; +} + +a.tsd-index-link { + padding: 0.25rem 0 !important; + font-size: 1rem; + line-height: 1.25rem; + display: inline-flex; + align-items: center; + color: var(--color-text); +} +.tsd-accordion-summary { + list-style-type: none; /* hide marker on non-safari */ + outline: none; /* broken on safari, so just hide it */ +} +.tsd-accordion-summary::-webkit-details-marker { + display: none; /* hide marker on safari */ +} +.tsd-accordion-summary, +.tsd-accordion-summary a { + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + + cursor: pointer; +} +.tsd-accordion-summary a { + width: calc(100% - 1.5rem); +} +.tsd-accordion-summary > * { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; +} +.tsd-index-accordion .tsd-accordion-summary > svg { + margin-left: 0.25rem; +} +.tsd-index-content > :not(:first-child) { + margin-top: 0.75rem; +} +.tsd-index-heading { + margin-top: 1.5rem; + margin-bottom: 0.75rem; +} + +.tsd-kind-icon { + margin-right: 0.5rem; + width: 1.25rem; + height: 1.25rem; + min-width: 1.25rem; + min-height: 1.25rem; +} +.tsd-kind-icon path { + transform-origin: center; + transform: scale(1.1); +} +.tsd-signature > .tsd-kind-icon { + margin-right: 0.8rem; +} + +.tsd-panel { + margin-bottom: 2.5rem; +} +.tsd-panel.tsd-member { + margin-bottom: 4rem; +} +.tsd-panel:empty { + display: none; +} +.tsd-panel > h1, +.tsd-panel > h2, +.tsd-panel > h3 { + margin: 1.5rem -1.5rem 0.75rem -1.5rem; + padding: 0 1.5rem 0.75rem 1.5rem; +} +.tsd-panel > h1.tsd-before-signature, +.tsd-panel > h2.tsd-before-signature, +.tsd-panel > h3.tsd-before-signature { + margin-bottom: 0; + border-bottom: none; +} + +.tsd-panel-group { + margin: 4rem 0; +} +.tsd-panel-group.tsd-index-group { + margin: 2rem 0; +} +.tsd-panel-group.tsd-index-group details { + margin: 2rem 0; +} + +#tsd-search { + transition: background-color 0.2s; +} +#tsd-search .title { + position: relative; + z-index: 2; +} +#tsd-search .field { + position: absolute; + left: 0; + top: 0; + right: 2.5rem; + height: 100%; +} +#tsd-search .field input { + box-sizing: border-box; + position: relative; + top: -50px; + z-index: 1; + width: 100%; + padding: 0 10px; + opacity: 0; + outline: 0; + border: 0; + background: transparent; + color: var(--color-text); +} +#tsd-search .field label { + position: absolute; + overflow: hidden; + right: -40px; +} +#tsd-search .field input, +#tsd-search .title, +#tsd-toolbar-links a { + transition: opacity 0.2s; +} +#tsd-search .results { + position: absolute; + visibility: hidden; + top: 40px; + width: 100%; + margin: 0; + padding: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); +} +#tsd-search .results li { + background-color: var(--color-background); + line-height: initial; + padding: 4px; +} +#tsd-search .results li:nth-child(even) { + background-color: var(--color-background-secondary); +} +#tsd-search .results li.state { + display: none; +} +#tsd-search .results li.current:not(.no-results), +#tsd-search .results li:hover:not(.no-results) { + background-color: var(--color-accent); +} +#tsd-search .results a { + display: flex; + align-items: center; + padding: 0.25rem; + box-sizing: border-box; +} +#tsd-search .results a:before { + top: 10px; +} +#tsd-search .results span.parent { + color: var(--color-text-aside); + font-weight: normal; +} +#tsd-search.has-focus { + background-color: var(--color-accent); +} +#tsd-search.has-focus .field input { + top: 0; + opacity: 1; +} +#tsd-search.has-focus .title, +#tsd-search.has-focus #tsd-toolbar-links a { + z-index: 0; + opacity: 0; +} +#tsd-search.has-focus .results { + visibility: visible; +} +#tsd-search.loading .results li.state.loading { + display: block; +} +#tsd-search.failure .results li.state.failure { + display: block; +} + +#tsd-toolbar-links { + position: absolute; + top: 0; + right: 2rem; + height: 100%; + display: flex; + align-items: center; + justify-content: flex-end; +} +#tsd-toolbar-links a { + margin-left: 1.5rem; +} +#tsd-toolbar-links a:hover { + text-decoration: underline; +} + +.tsd-signature { + margin: 0 0 1rem 0; + padding: 1rem 0.5rem; + border: 1px solid var(--color-accent); + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 14px; + overflow-x: auto; +} + +.tsd-signature-keyword { + color: var(--color-ts-keyword); + font-weight: normal; +} + +.tsd-signature-symbol { + color: var(--color-text-aside); + font-weight: normal; +} + +.tsd-signature-type { + font-style: italic; + font-weight: normal; +} + +.tsd-signatures { + padding: 0; + margin: 0 0 1em 0; + list-style-type: none; +} +.tsd-signatures .tsd-signature { + margin: 0; + border-color: var(--color-accent); + border-width: 1px 0; + transition: background-color 0.1s; +} +.tsd-description .tsd-signatures .tsd-signature { + border-width: 1px; +} + +ul.tsd-parameter-list, +ul.tsd-type-parameter-list { + list-style: square; + margin: 0; + padding-left: 20px; +} +ul.tsd-parameter-list > li.tsd-parameter-signature, +ul.tsd-type-parameter-list > li.tsd-parameter-signature { + list-style: none; + margin-left: -20px; +} +ul.tsd-parameter-list h5, +ul.tsd-type-parameter-list h5 { + font-size: 16px; + margin: 1em 0 0.5em 0; +} +.tsd-sources { + margin-top: 1rem; + font-size: 0.875em; +} +.tsd-sources a { + color: var(--color-text-aside); + text-decoration: underline; +} +.tsd-sources ul { + list-style: none; + padding: 0; +} + +.tsd-page-toolbar { + position: sticky; + z-index: 1; + top: 0; + left: 0; + width: 100%; + color: var(--color-text); + background: var(--color-background-secondary); + border-bottom: 1px var(--color-accent) solid; + transition: transform 0.3s ease-in-out; +} +.tsd-page-toolbar a { + color: var(--color-text); + text-decoration: none; +} +.tsd-page-toolbar a.title { + font-weight: bold; +} +.tsd-page-toolbar a.title:hover { + text-decoration: underline; +} +.tsd-page-toolbar .tsd-toolbar-contents { + display: flex; + justify-content: space-between; + height: 2.5rem; + margin: 0 auto; +} +.tsd-page-toolbar .table-cell { + position: relative; + white-space: nowrap; + line-height: 40px; +} +.tsd-page-toolbar .table-cell:first-child { + width: 100%; +} +.tsd-page-toolbar .tsd-toolbar-icon { + box-sizing: border-box; + line-height: 0; + padding: 12px 0; +} + +.tsd-widget { + display: inline-block; + overflow: hidden; + opacity: 0.8; + height: 40px; + transition: + opacity 0.1s, + background-color 0.2s; + vertical-align: bottom; + cursor: pointer; +} +.tsd-widget:hover { + opacity: 0.9; +} +.tsd-widget.active { + opacity: 1; + background-color: var(--color-accent); +} +.tsd-widget.no-caption { + width: 40px; +} +.tsd-widget.no-caption:before { + margin: 0; +} + +.tsd-widget.options, +.tsd-widget.menu { + display: none; +} +input[type="checkbox"] + .tsd-widget:before { + background-position: -120px 0; +} +input[type="checkbox"]:checked + .tsd-widget:before { + background-position: -160px 0; +} + +img { + max-width: 100%; +} + +.tsd-anchor-icon { + display: inline-flex; + align-items: center; + margin-left: 0.5rem; + vertical-align: middle; + color: var(--color-text); +} + +.tsd-anchor-icon svg { + width: 1em; + height: 1em; + visibility: hidden; +} + +.tsd-anchor-link:hover > .tsd-anchor-icon svg { + visibility: visible; +} + +.deprecated { + text-decoration: line-through !important; +} + +.warning { + padding: 1rem; + color: var(--color-warning-text); + background: var(--color-background-warning); +} + +.tsd-kind-project { + color: var(--color-ts-project); +} +.tsd-kind-module { + color: var(--color-ts-module); +} +.tsd-kind-namespace { + color: var(--color-ts-namespace); +} +.tsd-kind-enum { + color: var(--color-ts-enum); +} +.tsd-kind-enum-member { + color: var(--color-ts-enum-member); +} +.tsd-kind-variable { + color: var(--color-ts-variable); +} +.tsd-kind-function { + color: var(--color-ts-function); +} +.tsd-kind-class { + color: var(--color-ts-class); +} +.tsd-kind-interface { + color: var(--color-ts-interface); +} +.tsd-kind-constructor { + color: var(--color-ts-constructor); +} +.tsd-kind-property { + color: var(--color-ts-property); +} +.tsd-kind-method { + color: var(--color-ts-method); +} +.tsd-kind-call-signature { + color: var(--color-ts-call-signature); +} +.tsd-kind-index-signature { + color: var(--color-ts-index-signature); +} +.tsd-kind-constructor-signature { + color: var(--color-ts-constructor-signature); +} +.tsd-kind-parameter { + color: var(--color-ts-parameter); +} +.tsd-kind-type-literal { + color: var(--color-ts-type-literal); +} +.tsd-kind-type-parameter { + color: var(--color-ts-type-parameter); +} +.tsd-kind-accessor { + color: var(--color-ts-accessor); +} +.tsd-kind-get-signature { + color: var(--color-ts-get-signature); +} +.tsd-kind-set-signature { + color: var(--color-ts-set-signature); +} +.tsd-kind-type-alias { + color: var(--color-ts-type-alias); +} + +/* if we have a kind icon, don't color the text by kind */ +.tsd-kind-icon ~ span { + color: var(--color-text); +} + +* { + scrollbar-width: thin; + scrollbar-color: var(--color-accent) var(--color-icon-background); +} + +*::-webkit-scrollbar { + width: 0.75rem; +} + +*::-webkit-scrollbar-track { + background: var(--color-icon-background); +} + +*::-webkit-scrollbar-thumb { + background-color: var(--color-accent); + border-radius: 999rem; + border: 0.25rem solid var(--color-icon-background); +} + +/* mobile */ +@media (max-width: 769px) { + .tsd-widget.options, + .tsd-widget.menu { + display: inline-block; + } + + .container-main { + display: flex; + } + html .col-content { + float: none; + max-width: 100%; + width: 100%; + } + html .col-sidebar { + position: fixed !important; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + z-index: 1024; + top: 0 !important; + bottom: 0 !important; + left: auto !important; + right: 0 !important; + padding: 1.5rem 1.5rem 0 0; + width: 75vw; + visibility: hidden; + background-color: var(--color-background); + transform: translate(100%, 0); + } + html .col-sidebar > *:last-child { + padding-bottom: 20px; + } + html .overlay { + content: ""; + display: block; + position: fixed; + z-index: 1023; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.75); + visibility: hidden; + } + + .to-has-menu .overlay { + animation: fade-in 0.4s; + } + + .to-has-menu .col-sidebar { + animation: pop-in-from-right 0.4s; + } + + .from-has-menu .overlay { + animation: fade-out 0.4s; + } + + .from-has-menu .col-sidebar { + animation: pop-out-to-right 0.4s; + } + + .has-menu body { + overflow: hidden; + } + .has-menu .overlay { + visibility: visible; + } + .has-menu .col-sidebar { + visibility: visible; + transform: translate(0, 0); + display: flex; + flex-direction: column; + gap: 1.5rem; + max-height: 100vh; + padding: 1rem 2rem; + } + .has-menu .tsd-navigation { + max-height: 100%; + } +} + +/* one sidebar */ +@media (min-width: 770px) { + .container-main { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); + grid-template-areas: "sidebar content"; + margin: 2rem auto; + } + + .col-sidebar { + grid-area: sidebar; + } + .col-content { + grid-area: content; + padding: 0 1rem; + } +} +@media (min-width: 770px) and (max-width: 1399px) { + .col-sidebar { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + padding-top: 1rem; + } + .site-menu { + margin-top: 1rem; + } +} + +/* two sidebars */ +@media (min-width: 1200px) { + .container-main { + grid-template-columns: minmax(0, 1fr) minmax(0, 2.5fr) minmax(0, 20rem); + grid-template-areas: "sidebar content toc"; + } + + .col-sidebar { + display: contents; + } + + .page-menu { + grid-area: toc; + padding-left: 1rem; + } + .site-menu { + grid-area: sidebar; + } + + .site-menu { + margin-top: 1rem 0; + } + + .page-menu, + .site-menu { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + } +} diff --git a/classes/API.html b/classes/API.html new file mode 100644 index 00000000..e60cc56a --- /dev/null +++ b/classes/API.html @@ -0,0 +1,73 @@ +API | @meridian/web-sdk

Holds an API token and environment. Can be used to access an axios instance +for REST API calls, or openStream() for opening a tag stream. You can +create multiple API instances in case you want to use multiple tokens (e.g. +to show data from multiple locations or organizations on a single page).

+

Example

// Basic usage
const api = new MeridianSDK.API({
token: "<TOKEN GOES HERE>"
});

// Multiple APIs at once
const apiOrg1 = new MeridianSDK.API({
token: "Insert Org 1 token here"
});
MeridianSDK.createMap(elementOrg1, {
api: apiOrg1,
locationID: "Insert Org 1 location ID here",
floorID: "Insert Org 1 floor ID here"
});

const apiOrg2 = new MeridianSDK.API({
token: "Insert Org 2 token here"
});
MeridianSDK.createMap(elementOrg2, {
api: apiOrg2,
locationID: "Insert Org 2 location ID here",
floorID: "Insert Org 2 floor ID here"
}); +
+

Constructors

Properties

debouncedPlacemarkSearchBeta: ((options) => Promise<null | Record<string, any>[]>) = ...

[async] Returns an array of results or null when a request is cancelled +or debounced. Cancellation happens when a new request is made before the +previous request completes. The Debounce wait time is 6ms and the function +is invoked with the last arguments provided.

+

Both cancelled and debounced requests will eventually resolve with an array +of results (possibly empty).

+

Requests that throw an exception will return an empty array and output a +warning message to the Web console.

+

Local/Nearby Search integration. If both refFloorID AND refPoint are +provided, a second API call will be made and the results will be ordered +where placemarks closest to the refPoint (x/y) will appear first.

+

Placemark Search defaults to a single instance per API. This should work +fine for most use cases, but if you need to make multiple unique search +calls simultaneously, each will need a unique API instance like shown below.

+
// Search Widget One API Instance.
const apiInstance1 = new MeridianSDK.API({
token: "<TOKEN GOES HERE>"
});

// Search Widget Two API Instance
const apiInstance2 = new MeridianSDK.API({
token: "<TOKEN GOES HERE>"
}); +
+

Type declaration

    • (options): Promise<null | Record<string, any>[]>
    • Parameters

      Returns Promise<null | Record<string, any>[]>

environment: EnvOptions

Meridian environment ("production" or "eu"). Defaults to +"production".

+
language: undefined | "no" | "en" | "ar" | "ca" | "es" | "cs" | "de" | "fr" | "it" | "iw" | "ja" | "ko" | "nl" | "pt" | "ru" | "sv" | "uk" | "vi" | "zh-cn" | "zh-tw"

Language code that matches a supported language for this location. +Note: The LanguageCodes Type includes all possible language codes. See +"Translations" in Meridian Editor to learn exactly what languages are +supported for this location.

+
token: string

Meridian API token. Make sure to create a READ ONLY token for security. +Otherwise anyone using your page could take your token and modify all of +your Meridian data.

+

Accessors

  • get axios(): AxiosInstance
  • Returns AxiosInstance

    Deprecated

    Use the fetch methods instead

    +

Methods

  • [async] Returns the data of specified floor

    +

    Parameters

    • locationID: string
    • floorID: string

    Returns Promise<FloorData>

  • [async] Returns an array of all floors at the specified location

    +

    Parameters

    • locationID: string

    Returns Promise<LocationData[]>

  • [async] Returns an array of all placemarks on the specified location and +floor

    +

    Parameters

    • locationID: string
    • floorID: string

    Returns Promise<FloorData[]>

  • [async] Returns an array of all placemarks at the specified location

    +

    Parameters

    • locationID: string

    Returns Promise<FloorData[]>

  • [async] Returns an object URL for the given SVG URL

    +

    This object URL can be used as the src for an img tag.

    +

    This method fetches the SVG URL using your API token, since img tags +can't pass API tokens. The SVG URL can be obtained from the svg_url +property on a floor. When you're finished using this URL, you should call +URL.revokeObjectURL with the URL, so the browser can save memory by +releasing the data.

    +

    Parameters

    • svgURL: string

    Returns Promise<string>

  • [async] Returns dynamicly updated data for a specific tag.

    +

    Parameters

    • mac: string

    Returns Promise<TagData>

  • [async] Returns an array of all tags on the specified location and floor

    +

    Parameters

    • locationID: string
    • floorID: string

    Returns Promise<TagData[]>

  • [async] Returns an array of all tags at the specified location

    +

    Parameters

    • locationID: string

    Returns Promise<TagData[]>

  • [async] Returns an Object with routes to the destination (endPlacemarkID)

    +

    Parameters

    Returns Promise<Record<string, any>>

  • Opens a tag stream for a given location and floor. onInitialTags is +called with the full list of tags for that floor.

    +

    Note: When resourceType is set to "ZONE", onTagUpdate is called when +a tag/resource exits or enters the zone. Otherwise, onTagUpdate is +called every time a tag/resource is updated.

    +

    Parameters

    Returns Stream

    Example

    const api = new MeridianSDK.API({
    token: token,
    environment: "production"
    });

    const stream = api.openStream({
    locationID: locationID,
    floorID: floorID,
    onInitialTags: (tags) => {
    console.log("tags", tags);
    },
    onTagUpdate: (tag) => {
    console.log("update", tag);
    }
    });

    // Tag Zones

    const stream = api.openStream({
    locationID: locationID,
    floorID: floorID,
    resourceIDs: ["1218"],
    resourceType: "ZONE",
    onTagUpdate: (tag) => {
    console.log("update", tag);
    }
    });

    // call `stream.close()` when switching pages to avoid leaving the stream
    // open and wasting bandwidth in the background +
    +
\ No newline at end of file diff --git a/examples/advanced-styling/index.html b/examples/advanced-styling/index.html new file mode 100644 index 00000000..1066c04c --- /dev/null +++ b/examples/advanced-styling/index.html @@ -0,0 +1,115 @@ + + + + + + Advanced styling | Meridian Web SDK + + + + + + + + + + + + + +
+
+

+ This style is intentionally a bit over the top to show you how + customizable these hooks are. +

+
+ + + + + diff --git a/examples/annotation-kiosk/index.html b/examples/annotation-kiosk/index.html new file mode 100644 index 00000000..57be22a3 --- /dev/null +++ b/examples/annotation-kiosk/index.html @@ -0,0 +1,78 @@ + + + + + + Annotation Kiosk | Meridian Web SDK + + + + + + + + + + + + + +
+
+
+ In a scenario where the Map is presented in a fixed location (like a + kiosk), a custom marker can be used to inform the user/visitor where + they are. +
+
+ + + + + diff --git a/examples/annotation-point/index.html b/examples/annotation-point/index.html new file mode 100644 index 00000000..0e977a90 --- /dev/null +++ b/examples/annotation-point/index.html @@ -0,0 +1,118 @@ + + + + + + Annotation Point | Meridian Web SDK + + + + + + + + + + + + + +
+ + + + + diff --git a/examples/api-as-option/index.html b/examples/api-as-option/index.html new file mode 100644 index 00000000..5a392a35 --- /dev/null +++ b/examples/api-as-option/index.html @@ -0,0 +1,48 @@ + + + + + + Alternate (API as an option) | Meridian Web SDK + + + + + + + + + + + + + +
+ + + + + diff --git a/examples/basic/index.html b/examples/basic/index.html new file mode 100644 index 00000000..a6c4f168 --- /dev/null +++ b/examples/basic/index.html @@ -0,0 +1,68 @@ + + + + + + Basic Usage | Meridian Web SDK + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + + diff --git a/examples/center-map/index.html b/examples/center-map/index.html new file mode 100644 index 00000000..6f37bf4e --- /dev/null +++ b/examples/center-map/index.html @@ -0,0 +1,106 @@ + + + + + + Center Map | Meridian Web SDK + + + + + + + + + + + + + + +
+
+
+
+

centerMap

+

Center the map while retaining the current scale.

+

+ meridianMap.centerMap() + +

+
+
+

zoomToPoint

+

Pan to x/y coordinate and scale to a given zoom factor.

+

+ meridianMap.zoomToPoint({x: 6825.5830078125, y: + 478.98833499103785, scale: 1}) + +

+
+
+

zoomToDefault

+

+ Set zoom to the default level and pan to the default position. +

+

+ meridianMap.zoomToDefault() + +

+
+
+
+ + + + diff --git a/examples/container-styling/index.html b/examples/container-styling/index.html new file mode 100644 index 00000000..88052eed --- /dev/null +++ b/examples/container-styling/index.html @@ -0,0 +1,49 @@ + + + + + + Container styling | Meridian Web SDK + + + + + + + + + + + + + +
+ + + + + diff --git a/examples/cypress/annotation-point/index.html b/examples/cypress/annotation-point/index.html new file mode 100644 index 00000000..9520a645 --- /dev/null +++ b/examples/cypress/annotation-point/index.html @@ -0,0 +1,122 @@ + + + + + + Example + + + + + + +
+ + + + diff --git a/examples/cypress/basic/index.html b/examples/cypress/basic/index.html new file mode 100644 index 00000000..ab0be1a2 --- /dev/null +++ b/examples/cypress/basic/index.html @@ -0,0 +1,39 @@ + + + + + + Example + + + + + + +
+ + + + diff --git a/examples/cypress/control-tags/index.html b/examples/cypress/control-tags/index.html new file mode 100644 index 00000000..3f289840 --- /dev/null +++ b/examples/cypress/control-tags/index.html @@ -0,0 +1,42 @@ + + + + + + Cypress - Control Tags + + + + + + +
+ + + + diff --git a/examples/cypress/disable-click/index.html b/examples/cypress/disable-click/index.html new file mode 100644 index 00000000..6732340a --- /dev/null +++ b/examples/cypress/disable-click/index.html @@ -0,0 +1,42 @@ + + + + + + Example + + + + + + +
+ + + + diff --git a/examples/cypress/filter-by-id/index.html b/examples/cypress/filter-by-id/index.html new file mode 100644 index 00000000..0774c272 --- /dev/null +++ b/examples/cypress/filter-by-id/index.html @@ -0,0 +1,47 @@ + + + + + + Example + + + + + + +
+ + + + diff --git a/examples/cypress/filter-by-name/index.html b/examples/cypress/filter-by-name/index.html new file mode 100644 index 00000000..ce0f7e83 --- /dev/null +++ b/examples/cypress/filter-by-name/index.html @@ -0,0 +1,46 @@ + + + + + + Example + + + + + + +
+ + + + diff --git a/examples/cypress/filter-by-tag-label/index.html b/examples/cypress/filter-by-tag-label/index.html new file mode 100644 index 00000000..aabcbb2c --- /dev/null +++ b/examples/cypress/filter-by-tag-label/index.html @@ -0,0 +1,46 @@ + + + + + + Example + + + + + + +
+ + + + diff --git a/examples/cypress/filter-update/index.html b/examples/cypress/filter-update/index.html new file mode 100644 index 00000000..46b8023d --- /dev/null +++ b/examples/cypress/filter-update/index.html @@ -0,0 +1,42 @@ + + + + + + Example + + + + + + +
+ + + + diff --git a/examples/cypress/hidden-placemarks/index.html b/examples/cypress/hidden-placemarks/index.html new file mode 100644 index 00000000..7db1426b --- /dev/null +++ b/examples/cypress/hidden-placemarks/index.html @@ -0,0 +1,40 @@ + + + + + + Example + + + + + + +
+ + + + diff --git a/examples/cypress/lat-lng-to-map-point/index.html b/examples/cypress/lat-lng-to-map-point/index.html new file mode 100644 index 00000000..ebeff0b4 --- /dev/null +++ b/examples/cypress/lat-lng-to-map-point/index.html @@ -0,0 +1,115 @@ + + + + + + Lat/Lng to Map Point | Meridian Web SDK + + + + + + +
+ + + + diff --git a/examples/cypress/load-placemarks/index.html b/examples/cypress/load-placemarks/index.html new file mode 100644 index 00000000..ea038275 --- /dev/null +++ b/examples/cypress/load-placemarks/index.html @@ -0,0 +1,40 @@ + + + + + + Cypress - Control Tags + + + + + + +
+ + + + diff --git a/examples/cypress/load-tags/index.html b/examples/cypress/load-tags/index.html new file mode 100644 index 00000000..fa68c7f4 --- /dev/null +++ b/examples/cypress/load-tags/index.html @@ -0,0 +1,40 @@ + + + + + + Cypress - Load Tags + + + + + + +
+ + + + diff --git a/examples/cypress/map-point-lat-lng/index.html b/examples/cypress/map-point-lat-lng/index.html new file mode 100644 index 00000000..2b09b4fb --- /dev/null +++ b/examples/cypress/map-point-lat-lng/index.html @@ -0,0 +1,78 @@ + + + + + + Map Point to Lat/Lng | Meridian Web SDK + + + + + + +
+ + + + diff --git a/examples/cypress/polygon/index.html b/examples/cypress/polygon/index.html new file mode 100644 index 00000000..284560fb --- /dev/null +++ b/examples/cypress/polygon/index.html @@ -0,0 +1,57 @@ + + + + + + Example + + + + + + +
+ + + + diff --git a/examples/cypress/polyline/index.html b/examples/cypress/polyline/index.html new file mode 100644 index 00000000..21424d95 --- /dev/null +++ b/examples/cypress/polyline/index.html @@ -0,0 +1,53 @@ + + + + + + Example + + + + + + +
+ + + + diff --git a/examples/cypress/tag-search/index.html b/examples/cypress/tag-search/index.html new file mode 100644 index 00000000..ab0be1a2 --- /dev/null +++ b/examples/cypress/tag-search/index.html @@ -0,0 +1,39 @@ + + + + + + Example + + + + + + +
+ + + + diff --git a/examples/cypress/utils/mock-all-assets.js b/examples/cypress/utils/mock-all-assets.js new file mode 100644 index 00000000..28eff95d --- /dev/null +++ b/examples/cypress/utils/mock-all-assets.js @@ -0,0 +1,204 @@ +export default { + asset_updates: [ + { + mac: "546C0E014866", + id: "546C0E014866", + name: "Chad", + location_id: "5198682008846336", + map_id: "5755685136498688", + x: 5027.271251150382, + y: 2165.735877420776, + event_type: "UPDATE", + timestamp: "1600202365", + created: "2019-06-07T21:36:12", + modified: "2020-09-15T20:05:04", + external_id: "", + image_url: "", + battery_level: 83, + control_x: 5450.225958858496, + control_y: 1065.3388213790097, + is_control_tag: false, + current_zone_id: "18", + tags: [ + { + id: "5876089909673984", + name: "CT-Human/Personnel", + }, + ], + tag_ids: ["5876089909673984"], + zone_events: [], + map_events: [], + }, + { + mac: "546C0E032A87", + id: "546C0E032A87", + name: "Jamboard - Blue", + location_id: "5198682008846336", + map_id: "5755685136498688", + x: 6656.849190078101, + y: 1915.9377465555629, + event_type: "UPDATE", + timestamp: "1600202374", + created: "2019-05-08T23:20:17", + modified: "2020-09-15T20:20:22", + external_id: "", + image_url: + "https://lh3.googleusercontent.com/g5vnSy-189JCHJlIKhZQO2OeTw9mYP197z6YtkEMjZcBW4UwH3f4kNC3sHMpMVGi0QUKu2w078R0D5W-sBE45xdl", + battery_level: 87, + control_x: 0, + control_y: 0, + is_control_tag: false, + current_zone_id: "12", + tags: [ + { + id: "4726953227845632", + name: "Jamboard", + }, + ], + tag_ids: ["4726953227845632"], + zone_events: [], + map_events: [], + }, + { + mac: "546C0E082AFB", + id: "546C0E082AFB", + name: "MM Precision", + location_id: "5198682008846336", + map_id: "5755685136498688", + x: 1144.0538972336537, + y: 2159.0853713716574, + event_type: "UPDATE", + timestamp: "1600202389", + created: "2018-10-01T21:47:56", + modified: "2020-09-15T20:05:08", + external_id: "", + image_url: + "https://lh3.googleusercontent.com/EWCXu4zCRC58hvva78Acnc0e1f6-Q9GAevC367J2tBuybFK4qBbqExzylm-Yd_C25qFtabLJlE6O0y8P0aBBGFms", + battery_level: 69, + control_x: 0, + control_y: 0, + is_control_tag: false, + current_zone_id: "0", + tags: [ + { + id: "5659797845442560", + name: "Multimeter", + }, + { + id: "5454888638349312", + name: "Fluke", + }, + ], + tag_ids: ["5659797845442560", "5454888638349312"], + zone_events: [], + map_events: [], + }, + { + mac: "546C0E014517", + id: "546C0E014517", + name: "Chad-Control", + location_id: "5198682008846336", + map_id: "5755685136498688", + x: 6506.614394882942, + y: 902.8928286905004, + event_type: "UPDATE", + timestamp: "1600202381", + created: "2019-06-07T21:54:13", + modified: "2020-09-15T19:05:38", + external_id: "", + image_url: "", + battery_level: 92, + control_x: 7041.762933740962, + control_y: 165.35773029922666, + is_control_tag: true, + current_zone_id: "18", + tags: [], + tag_ids: [], + zone_events: [], + map_events: [], + }, + { + mac: "546C0E014877", + id: "546C0E014877", + name: "Chad (second floor)", + location_id: "5198682008846336", + map_id: "5715161717407744", + x: 5027.271251150382, + y: 3165.735877420776, + event_type: "UPDATE", + timestamp: "1600202365", + created: "2019-06-07T21:36:12", + modified: "2020-09-15T20:05:04", + external_id: "", + image_url: "", + battery_level: 83, + control_x: 0, + control_y: 0, + is_control_tag: false, + current_zone_id: "18", + tags: [ + { + id: "5876089909673984", + name: "CT-Human/Personnel", + }, + ], + tag_ids: ["5876089909673984"], + zone_events: [], + map_events: [], + }, + { + mac: "546C0E032A98", + id: "546C0E032A98", + name: "Jamboard - Blue (second floor)", + location_id: "5198682008846336", + map_id: "5715161717407744", + x: 6656.849190078101, + y: 2915.9377465555629, + event_type: "UPDATE", + timestamp: "1600202374", + created: "2019-05-08T23:20:17", + modified: "2020-09-15T20:20:22", + external_id: "", + image_url: + "https://lh3.googleusercontent.com/g5vnSy-189JCHJlIKhZQO2OeTw9mYP197z6YtkEMjZcBW4UwH3f4kNC3sHMpMVGi0QUKu2w078R0D5W-sBE45xdl", + battery_level: 87, + control_x: 0, + control_y: 0, + is_control_tag: false, + current_zone_id: "12", + tags: [ + { + id: "4726953227845632", + name: "Jamboard", + }, + ], + tag_ids: ["4726953227845632"], + zone_events: [], + map_events: [], + }, + { + mac: "546C0E014528", + id: "546C0E014528", + name: "Chad-Control (second floor)", + location_id: "5198682008846336", + map_id: "5715161717407744", + x: 6506.614394882942, + y: 902.8928286905004, + event_type: "UPDATE", + timestamp: "1600202381", + created: "2019-06-07T21:54:13", + modified: "2020-09-15T19:05:38", + external_id: "", + image_url: "", + battery_level: 92, + control_x: 7041.762933740962, + control_y: 165.35773029922666, + is_control_tag: true, + current_zone_id: "18", + tags: [], + tag_ids: [], + zone_events: [], + map_events: [], + }, + ], +}; diff --git a/examples/cypress/utils/mock-api.js b/examples/cypress/utils/mock-api.js new file mode 100644 index 00000000..4d8bf48d --- /dev/null +++ b/examples/cypress/utils/mock-api.js @@ -0,0 +1,128 @@ +import mockMaps from "./mock-maps.js"; +import mockPlacemarks from "./mock-placemarks.js"; +import mockSvgDefault from "./mock-svg.js"; +import mockAllAssets from "./mock-all-assets.js"; +import mockFloorAssets from "./mock-floor-assets.js"; + +// Show console warnings when accessing an undefined property, so it's easier to +// develop these fake APIs +function missingPropertyProxy(name, target) { + return new Proxy(target, { + get(target, property) { + if (property in target) { + return target[property]; + } + // Some library is trying to read various strange properties we don't + // implement, so let's ignore those isntead of showing a warning + if (typeof property !== "symbol" && !property.startsWith("@")) { + // eslint-disable-next-line no-console + console.warn(`[${name}] missing property "${property}"`); + } + return undefined; + }, + }); +} + +async function sleep(time) { + return new Promise((resolve) => { + setTimeout(resolve, time); + }); +} + +class MockAPI { + constructor() { + this.token = "[FAKE_TOKEN]"; + this.environment = "production"; + this._live = false; + this._loadTime = 1000; + this._updateInterval = 2000; + } + + async _sleep() { + await sleep(this._live ? this._loadTime : 0); + } + + async fetchTagsByFloor(_locationID, floorID) { + await this._sleep(); + return mockFloorAssets.filter((item) => item.map_id === floorID); + } + + async fetchTagsByLocation() { + await this._sleep(); + return mockAllAssets.asset_updates; + } + + async fetchPlacemarksByLocation() { + await this._sleep(); + return mockPlacemarks.results; + } + + async fetchPlacemarksByFloor(_locationID, floorID) { + await this._sleep(); + return mockPlacemarks.results.filter((item) => item.map === floorID); + } + + async fetchFloorsByLocation() { + await this._sleep(); + return mockMaps.results; + } + + async fetchSVG() { + await this._sleep(); + const blob = new Blob([mockSvgDefault], { type: "image/svg+xml" }); + return URL.createObjectURL(blob); + } + + async fetchFloorData(_locationID, floorID) { + await this._sleep(); + const floorData = mockMaps.results.find((item) => item.id === floorID); + if (!floorData) { + return null; + } + return floorData; + } + + openStream({ + locationID, + floorID, + onInitialTags, + onTagUpdate, + // onException, + // onClose + }) { + let interval; + const originalPositions = new Map(); + const fn = async () => { + const tags = await this.fetchTagsByFloor(locationID, floorID); + for (const { x, y, mac } of tags) { + originalPositions.set(mac, { x, y }); + } + onInitialTags(tags); + if (this._live) { + // Simulate a tiny amount of jitter around the actual (x, y) position + interval = setInterval(() => { + const tag = tags[rand(0, tags.length - 1)]; + const dx = rand(-1, 1) * 100; + const dy = rand(-1, 1) * 100; + const { x, y } = originalPositions.get(tag.mac); + tag.x = x + dx; + tag.y = y + dy; + onTagUpdate(tag); + }, this._updateInterval); + } + }; + fn(); + return { + close() { + clearInterval(interval); + }, + }; + } +} + +function rand(a, b) { + const c = b - a; + return a + Math.floor(c * Math.random()); +} + +export const mockAPI = missingPropertyProxy("API", new MockAPI()); diff --git a/examples/cypress/utils/mock-floor-assets.js b/examples/cypress/utils/mock-floor-assets.js new file mode 100644 index 00000000..9044b298 --- /dev/null +++ b/examples/cypress/utils/mock-floor-assets.js @@ -0,0 +1,3 @@ +import allAssets from "./mock-all-assets.js"; + +export default [...allAssets.asset_updates]; diff --git a/examples/cypress/utils/mock-maps.js b/examples/cypress/utils/mock-maps.js new file mode 100644 index 00000000..18b3cc72 --- /dev/null +++ b/examples/cypress/utils/mock-maps.js @@ -0,0 +1,75 @@ +export default { + next: null, + previous: null, + results: [ + { + modified: "2019-09-24T05:19:52", + created: "2019-01-10T03:59:44", + name: "Floor 02", + parent_map: "", + id: "5715161717407744", + image_url: null, + svg_url: + "https://edit.meridianapps.com/api/locations/5198682008846336/maps/5715161717407744.svg?hash=4cec6eb3eb0f260060032aeda829adc9&style=2fd1d99f4846f26c70b63fb0c624f87b&default_style=original", + unformatted_svg_url: + "https://edit.meridianapps.com/api/blob/NTE5ODY4MjAwODg0NjMzNi9tYXBzLzU5ODE2NDAwMy0xNTQ4ODEyNDI5/598164003-1548812429.svg", + name_is_generated: false, + is_default: false, + published: true, + group: "5433630015619072", + group_name: "Main Building", + level: 6.0, + level_label: "6", + width: 7213, + height: 4363, + width_meters: 89.54053977585014, + height_meters: 58.865857109010925, + units_per_meter: 29.796559264428097, + north_offset: 0.0, + north: 180.21617478502242, + gps_ref_points: + "37.3817320625443,-121.98187611782572,37.38221175434211,-121.98088565213226,2627.9443359375,27.90966796875,16,1606.395751953125", + overview_map_id: "", + is_outdoor: false, + zoom_max: 23.0, + zoom_scalar: 1.0, + invalid: false, + asset_tracking_control_tags: false, + }, + { + modified: "2019-09-24T05:19:09", + created: "2016-08-27T16:53:51", + name: "Floor 01", + parent_map: "", + id: "5755685136498688", + image_url: null, + svg_url: + "https://edit.meridianapps.com/api/locations/5198682008846336/maps/5755685136498688.svg?hash=23e120588dbde05795aca41889fb96ec&style=2fd1d99f4846f26c70b63fb0c624f87b&default_style=original", + name_is_generated: false, + is_default: true, + published: true, + group: "5433630015619072", + group_name: "Main Building", + level: 1, + level_label: "1", + width: 7213, + height: 4363, + width_meters: 88.22358949747179, + height_meters: 53.364691664698384, + units_per_meter: 81.75817874885607, + north_offset: 0.0, + north: 177.93109264506393, + // Below is an example of ref points that are in the top left and bottom right of a map + gps_ref_points: + "37.38184189317074,-121.98089271787921,37.382210607520115,-121.9818502664566,83.50489950180054,1184.5433292388916,7112.7607421875,4282.70947265625", + // Below is an example of ref points that are in the bottom left and top right of a map + // "37.38223405175838,-121.980855166953,37.38172040881185,-121.98188245296478,80,4304,7152.030798845043,32", + overview_map_id: "", + is_outdoor: false, + zoom_max: 23.0, + zoom_scalar: 1.0, + invalid: false, + asset_tracking_control_tags: false, + }, + ], +}; diff --git a/examples/cypress/utils/mock-placemarks.js b/examples/cypress/utils/mock-placemarks.js new file mode 100644 index 00000000..4f0eaef2 --- /dev/null +++ b/examples/cypress/utils/mock-placemarks.js @@ -0,0 +1,1390 @@ +export default { + next: null, + previous: null, + results: [ + { + id: "5755685136498688_563194337060454422", + map: "5755685136498688", + x: 600.18408203125, + y: 301.6123046875, + name: "Campus Area", + type: "label_campus", + type_name: "Label (Department area)", + type_category: "Labels", + is_facility: false, + hide_on_map: false, + landmark: false, + is_disabled: false, + is_searchable: true, + }, + { + id: "5755685136498688_563194337060454411", + map: "5755685136498688", + x: 3600.18408203125, + y: 301.6123046875, + name: "Building Area", + type: "label_building", + type_name: "Label (Department area)", + type_category: "Labels", + is_facility: false, + hide_on_map: false, + landmark: false, + is_disabled: false, + is_searchable: true, + }, + { + id: "5755685136498688_563194337060454400", + map: "5755685136498688", + x: 5600.18408203125, + y: 2501.6123046875, + name: "Department Area", + type: "label_department", + type_name: "Label (Department area)", + type_category: "Labels", + is_facility: false, + hide_on_map: false, + landmark: false, + is_disabled: false, + is_searchable: true, + }, + { + id: "5755685136498688_5631943370604544", + map: "5755685136498688", + x: 5399.18408203125, + y: 2021.6123046875, + name: null, + type: "generic", + type_category: "Markers", + type_name: "Placemark", + color: "88689e", + description: + '

Fulfill all of your IoT needs. 

This "garage" is used for deep-dive sessions from our experts.

', + keywords: null, + image_url: + "https://lh3.googleusercontent.com/sr2nNXhutx-LV40npPVIgIsTulJyS0qhFueOTZBI1d2HSb-_xUBi-7EqFZpTvnxp68sqXmdua76VhYfFQj6xYwd3", + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + is_disabled: false, + is_searchable: true, + }, + { + id: "5755685136498688_5634387206995968", + map: "5755685136498688", + x: 6818.5390625, + y: 3838.9501953125, + name: "Sputnik", + area: null, + hint: null, + uid: "1.580", + links: [], + type: "conference_room", + type_category: "Office", + type_name: "Conference Room", + color: "596c7c", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5755685136498688_5639274879778816", + map: "5755685136498688", + x: 1922.9970703125, + y: 1866.6455078125, + name: "Eating Area | All Hands", + area: null, + links: [], + type: "generic", + type_category: "Markers", + type_name: "Placemark", + color: "88689e", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5755685136498688_5643440998055936", + map: "5755685136498688", + x: 6825.5830078125, + y: 478.98833499103785, + name: "The Presidio", + area: null, + links: [], + type: "conference_room", + type_category: "Office", + type_name: "Conference Room", + color: "596c7c", + description: + "

Seats up to 20.

Fully integrated Skype room.

Powered by Crestron.

", + keywords: null, + phone: null, + email: null, + url: null, + image_url: + "https://lh3.googleusercontent.com/PbBQVA-kAH2dUnbMsjiI0N-Rw6t9ZHj5VFv2klcQmnRzrfZqchPVaMWKckIlWWQ2fQh0foIoWyOwZxoEd2O0ba552Q", + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5755685136498688_5645478960037888", + map: "5755685136498688", + x: 6029.6171875, + y: 1320.73974609375, + name: "Chargifi - FL1 - Hospitality", + area: null, + links: [], + type: "device_charging", + type_category: "Markers", + type_name: "Device Charging", + color: "88689e", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5755685136498688_5653164804014080", + map: "5755685136498688", + x: 3092.2919921875, + y: 3789.642578125, + name: "PurpleTie Dry Cleaning Drop Off", + area: null, + links: [{ link: "page/5699866936213504" }], + type: "generic", + type_category: "Markers", + type_name: "Placemark", + color: "88689e", + description: + "

 

PurpleTie Dry Cleaning is a convenient service available at work! It's as easy as 1-2-3. 


1- Sign up and print out the Confirmation Page to include with your items.


2-Put your items and the Confirmation Page in a bag, and bring it to the PurpleTie station near you.


3- Place your bag at the bottom of the PurpleTie station. 

What happens next? The PurpleTie experts will pick up your items, take the utmost care of your belongings and a driver will deliver your completed order back to the designated PurpleTie station during the next service day and time window as posted.  


To find the kiosk: walk out of the lobby, make an immediate left turn (before you get to the elevators). When you get to the end of the hallway, make another left. The kiosk is located straight ahead.    

", + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5755685136498688_5661458385862656", + map: "5755685136498688", + x: 4469.38330078125, + y: 2750.66064453125, + name: "FL01 Water Fountain", + area: null, + links: [], + type: "water_fountain", + type_category: "Water Fountain", + type_name: "Water Fountain", + color: "f2af1d", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: true, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5755685136498688_5668600916475904", + map: "5755685136498688", + x: 3768.5107421875, + y: 3645.24169921875, + name: "Lobby", + area: "3147.861,4092.532,3151.383,3381.094,4388.378,3388.138,4391.117,4103.098", + links: [], + type: "information", + type_category: "Information", + type_name: "Information", + color: "f2af1d", + description: null, + keywords: "Main, Entrance, Lobby, Reception", + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: true, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + parent_pane: "5755685136498688_5651442522128384", + child_pane_ne: "", + child_pane_se: "", + child_pane_sw: "", + child_pane_nw: "5755685136498688_5743114304094208", + left: 5324, + top: 537, + width: 0, + height: 0, + modified: "2019-09-24T05:19:11", + created: "2016-12-19T19:11:25", + id: "5755685136498688_5673385510043648", + map: "5755685136498688", + x: 5282.958984375, + y: 3853.0380859375, + latitude: 37.38215607501162, + longitude: -121.98159912048112, + related_map: "", + name: "Pioneer", + area: null, + hint: null, + uid: "1.590", + links: [], + type: "conference_room", + type_category: "Office", + type_name: "Conference Room", + color: "596c7c", + description: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: ["5639274879778816"], + categories: [{ id: "5639274879778816", name: "Conference Rooms" }], + is_searchable: true, + }, + { + id: "5755685136498688_5678807906254848", + map: "5755685136498688", + x: 5687.98583984375, + y: 767.7900390625, + name: "Screws", + area: null, + links: [], + type: "generic", + type_category: "Markers", + type_name: "Placemark", + color: "88689e", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5755685136498688_5688737870643200", + map: "5755685136498688", + x: 4902.5859375, + y: 1951.1728515625, + name: "Chargifi - FL1 - Team Desk Front", + area: null, + links: [], + type: "device_charging", + type_category: "Markers", + type_name: "Device Charging", + color: "88689e", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5755685136498688_5689792285114368", + map: "5755685136498688", + x: 6867.8466796875, + y: 2077.9638671875, + name: "Muir Woods", + area: null, + links: [], + type: "conference_room", + type_category: "Office", + type_name: "Conference Room", + color: "596c7c", + description: + "

Comfortably seats 6

Fully Skype enabled.

Look at the wall to find a surprise!

", + keywords: null, + phone: null, + email: null, + url: null, + image_url: + "https://lh3.googleusercontent.com/_HEyFYI1h3nSEmEi63SUOZThM5dgjZMUd439Ss0vhv3yGVEaspEuGEWOe19AiTWwTFIAdhy7xyTEqU0XmgcQamEW", + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5755685136498688_5693417237512192", + map: "5755685136498688", + x: 5025.85498046875, + y: 2976.06689453125, + name: "FL01 Men's Restroom", + area: null, + links: [], + type: "restroom_men", + type_category: "Restrooms", + type_name: "Restroom (Men's)", + color: "f2af1d", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: true, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: ["5713573250596864", "5645784439586816"], + categories: [ + { id: "5713573250596864", name: "Floor 1" }, + { id: "5645784439586816", name: "Restroom" }, + ], + is_searchable: true, + }, + { + id: "5755685136498688_5697982787747840", + map: "5755685136498688", + x: 5599.9365234375, + y: 950.9326171875, + name: "The Experience Zone", + area: null, + links: [], + type: "generic", + type_category: "Markers", + type_name: "Placemark", + color: "88689e", + description: + "

The experience zone is a combination of multiple demo kiosks, which show our vision of use cases for each industry.


The Workplace

The Retail Store

The Hospitality Zone

The Warehouse

", + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5755685136498688_5700735861784576", + map: "5755685136498688", + x: 6177.5400390625, + y: 3853.0380859375, + name: "Mariner", + area: null, + hint: null, + uid: "1.586", + links: [], + type: "conference_room", + type_category: "Office", + type_name: "Conference Room", + color: "596c7c", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5755685136498688_5707702298738688", + map: "5755685136498688", + x: 5749.620361328125, + y: 3786.12060546875, + name: "Training Rooms", + area: "4396.342,3296.355,7118.827,3306.921,7118.827,4275.463,4396.342,4275.463", + links: [], + type: "training", + type_category: "Office", + type_name: "Training Room", + color: "596c7c", + description: `

A nodes can have as many path segments connecting to other nodes as needed. For example, a T-intersection consists of one node at the intersection point joined by 3 segments that lead to other nodes.

WARNING: The nodes and segments must all be interconnected for a proper route to be displayed. A discontinuity in the nodes and segments will result in a less desirable route for the user.

Generally, your routes should be fully interconnected. In order to assist with that, disconnected routes are shown in different colors. This means that if an area on the routing graph is all one color, you can get from any point to any other point without using a portal or going outside. Make sure to connect all parts of your maps together.

Path segments are always straight lines, but by adding many nodes joined by segments to your route, you can approximate a curve. A circular hallway or roundabout may require many nodes with very small line segments.

Transitions from one floor to the next can be done by configuring the node as a portal. Portals are ingress and egress points that my be used to represent elevators, escalators, stairs, or any other way of connecting two or more floors together. A normal node has a white fill, but when a node is configured as a portal, it will have a blue fill.

A nodes can have as many path segments connecting to other nodes as needed. For example, a T-intersection consists of one node at the intersection point joined by 3 segments that lead to other nodes.

WARNING: The nodes and segments must all be interconnected for a proper route to be displayed. A discontinuity in the nodes and segments will result in a less desirable route for the user.

Generally, your routes should be fully interconnected. In order to assist with that, disconnected routes are shown in different colors. This means that if an area on the routing graph is all one color, you can get from any point to any other point without using a portal or going outside. Make sure to connect all parts of your maps together.

Path segments are always straight lines, but by adding many nodes joined by segments to your route, you can approximate a curve. A circular hallway or roundabout may require many nodes with very small line segments.

Transitions from one floor to the next can be done by configuring the node as a portal. Portals are ingress and egress points that my be used to represent elevators, escalators, stairs, or any other way of connecting two or more floors together. A normal node has a white fill, but when a node is configured as a portal, it will have a blue fill.

`, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: null, + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5755685136498688_5709068098338816", + map: "5755685136498688", + x: 5867.6064453125, + y: 2025.1342672673054, + name: "Union Square", + area: null, + links: [], + type: "conference_room", + type_category: "Office", + type_name: "Conference Room", + color: "596c7c", + description: + "

Can seat up to 12.

Skype enabled room.

Powered by Crestron.

", + keywords: null, + phone: null, + email: null, + url: null, + image_url: + "https://lh3.googleusercontent.com/ZoinmnLNXKeu2KsxZ6L-N-4mWpHADA3aCJ6XN-ht_17iN0BKrf9GuXrv2gWEQVOT4TjkwfFB94poOMnQi82AsRE", + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5755685136498688_5717271485874176", + map: "5755685136498688", + x: 3204.9951171875, + y: 1465.140625, + name: "Coffee Bar", + area: null, + links: [], + type: "generic", + type_category: "Markers", + type_name: "Placemark", + color: "88689e", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [ + { id: "6286567746830336", name: "Dolby/Widescreen" }, + { id: "6286567746830337", name: "Conference Room" }, + ], + is_searchable: true, + }, + { + id: "5755685136498688_5718998062727168", + map: "5755685136498688", + x: 6867.8466796875, + y: 1739.8544921875, + name: "Golden Gate", + area: null, + links: [], + type: "conference_room", + type_category: "Office", + type_name: "Conference Room", + color: "596c7c", + description: "

Comfortably seats 6.

Skype enabled room.

", + keywords: null, + phone: null, + email: null, + url: null, + image_url: + "https://lh3.googleusercontent.com/MQ3CL6fKn19qShzo3gTThvLYc9WJlGWFFdHRE5XmgVO4Ti39EaiH-VDfpDXSTlozzNyERzn1TTgeI6_FBKgZJr_QuA", + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5755685136498688_5721036024709120", + map: "5755685136498688", + x: 4902.5859375, + y: 2183.623046875, + name: "Chargifi - FL1 - Team Desk Back", + area: null, + links: [], + type: "device_charging", + type_category: "Markers", + type_name: "Device Charging", + color: "88689e", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5755685136498688_5724160613416960", + map: "5755685136498688", + x: 3740.3349609375, + y: 2754.1826171875, + name: "FL01 Elevator Lobby", + area: null, + links: [], + type: "elevator", + type_category: "Elevators", + type_name: "Elevator", + color: "596c7c", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: true, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5755685136498688_5728116278296576", + map: "5755685136498688", + x: 4465.861328125, + y: 887.537109375, + name: "The Multitaction Wall", + area: null, + links: [], + type: "generic", + type_category: "Markers", + type_name: "Placemark", + color: "88689e", + description: + "

Please take a seat and enjoy our beautiful lounge area and advanced Multitaction wall.

", + keywords: null, + phone: null, + email: null, + url: null, + image_url: + "https://lh3.googleusercontent.com/7DNscmE9YH-13ymvh5bfdRrdgzyNi5GFxFqf2UGZsUqFISWBS7QDHKFsfHNm0NZVRq8qNEMFVzbn47wlrJWtU9rQjQ", + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5755685136498688_5733935958982656", + map: "5755685136498688", + x: 5022.3330078125, + y: 2567.51806640625, + name: "FL01 Women's Restroom", + area: null, + links: [], + type: "restroom_women", + type_category: "Restrooms", + type_name: "Restroom (Women's)", + color: "f2af1d", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: true, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: ["5713573250596864", "5645784439586816"], + categories: [ + { id: "5713573250596864", name: "Floor 1" }, + { id: "5645784439586816", name: "Restroom" }, + ], + is_searchable: true, + }, + { + id: "5755685136498688_5738600293466112", + map: "5755685136498688", + x: 4677.1796875, + y: 3853.0380859375, + name: "Voyager", + area: null, + hint: null, + uid: "1.596", + links: [], + type: "conference_room", + type_category: "Office", + type_name: "Conference Room", + color: "596c7c", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: ["5639274879778816"], + categories: [{ id: "5639274879778816", name: "Conference Rooms" }], + is_searchable: true, + }, + { + id: "5755685136498688_5750085036015616", + map: "5755685136498688", + x: 4353.158203125, + y: 1690.546875, + name: "Customer Experience Center", + area: "4384.856,63.396,4381.334,1077.724,4145.362,1077.724,4155.928,1447.531,4215.801,1440.487,4222.845,1627.151,4226.367,1778.596,4159.45,1778.596,4162.972,1933.563,4670.136,1940.607,4677.18,2370.288,6621.309,2370.288,6621.309,2447.771,7117.907,2444.249,7121.429,59.874", + links: [], + type: "generic", + type_category: "Markers", + type_name: "Placemark", + color: "88689e", + description: + "

Welcome to the Customer Experience Center!


Here at the CEC, we host the majority of the customer meetings that occur on the Santa Clara campus. 


Our experience ranges from state-of-the-art conference rooms; to advanced demonstrations from our own internal experts here at Aruba. 



", + keywords: "CEC, Customer, Experience, Center", + phone: null, + email: null, + url: null, + image_url: + "https://lh3.googleusercontent.com/pWhnf6EeHdIIZ4z5jAmiQjvLt8avBUqIrRchzKfmvGCh_Cfw9DIFa06UkX6XMJY_D0YbjzHBbhZAXzzQj1iQVtM", + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5755685136498688_5753952654065664", + map: "5755685136498688", + x: 5272.39306640625, + y: 648.04296875, + name: "Chargifi - FL1 - Focal Desk", + area: null, + links: [], + type: "device_charging", + type_category: "Markers", + type_name: "Device Charging", + color: "88689e", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5755685136498688_5754903989321728", + map: "5755685136498688", + x: 6846.71484375, + y: 1225.646484375, + name: "Woodside", + area: null, + links: [], + type: "conference_room", + type_category: "Office", + type_name: "Conference Room", + color: "596c7c", + description: + "

Seats up to 20.

Fully integrated Skype room.

Powered by Crestron.

", + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5755685136498688_5757334940811264", + map: "5755685136498688", + x: 2100.856689453125, + y: 2842.23193359375, + name: "Cafe", + area: null, + links: [], + type: "cafe", + type_category: "Recreation", + type_name: "Cafe", + color: "5ba68d", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5755685136498688_5764640680181760", + map: "5755685136498688", + x: 4670.1357421875, + y: 299.36767578125, + name: "The Aruba Stadium", + area: null, + links: [], + type: "generic", + type_category: "Markers", + type_name: "Placemark", + color: "88689e", + description: "

Take a seat and enjoy the view from up high!

", + keywords: null, + phone: null, + email: null, + url: null, + image_url: + "https://lh3.googleusercontent.com/v7S1rgMdNZF1IPTXhT_jlD8cST9pd_geDd1GzoIxFR9qEJIU3H1dAS9UG6bacvrUkk2arl1L8wLHgmLPyuwnL-He2A", + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + }, + { + id: "5755685136498688_5766466041282560", + map: "5755685136498688", + x: 1981.9901123046875, + y: 4096.05419921875, + name: "Facilities Storage", + area: null, + links: [], + type: "generic", + type_category: "Markers", + type_name: "Placemark", + color: "88689e", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: true, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5755685136498688_5766466041281460", + map: "5755685136498688", + x: 1981.9901123046875, + y: 4096.05419921875, + name: "Executive Bathroom (not searchable)", + area: null, + links: [], + type: "restroom", + type_category: "Restrooms", + type_name: "Restroom (Men's)", + color: "88689e", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + is_searchable: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + }, + { + id: "5755685136498688_5858330013335552", + map: "5755685136498688", + x: 3103.053554404527, + y: 3423.357421875, + name: "Shipping Drop off", + area: null, + links: [], + type: "mailbox", + type_category: "Mailbox", + type_name: "Mailbox", + color: "5ba68d", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: true, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5755685136498688_6237196809142272", + map: "5755685136498688", + x: 3163.514022305608, + y: 3162.7314016479068, + name: "UPS Lockers", + area: null, + links: [], + type: "mailbox", + type_category: "Mailbox", + type_name: "Mailbox", + color: "5ba68d", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: true, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5715161717407744_563194337060454455", + map: "5715161717407744", + x: 600.18408203125, + y: 301.6123046875, + name: "Campus Area", + type: "label_campus", + type_name: "Label (Department area)", + type_category: "Labels", + is_facility: false, + hide_on_map: false, + landmark: false, + is_disabled: false, + is_searchable: true, + }, + { + id: "5715161717407744_563194337060454444", + map: "5715161717407744", + x: 3600.18408203125, + y: 301.6123046875, + name: "Building Area", + type: "label_building", + type_name: "Label (Department area)", + type_category: "Labels", + is_facility: false, + hide_on_map: false, + landmark: false, + is_disabled: false, + is_searchable: true, + }, + { + id: "5715161717407744_563194337060454433", + map: "5715161717407744", + x: 5600.18408203125, + y: 2501.6123046875, + name: "Department Area", + type: "label_department", + type_name: "Label (Department area)", + type_category: "Labels", + is_facility: false, + hide_on_map: false, + landmark: false, + is_disabled: false, + is_searchable: true, + }, + { + id: "5715161717407744_4814261133246464", + map: "5715161717407744", + x: 5867.13671875, + y: 1075.80859375, + name: "Chargifi - FL6 - 6.269", + area: null, + links: [], + type: "device_charging", + type_category: "Markers", + type_name: "Device Charging", + color: "88689e", + description: "None", + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5715161717407744_4825980946350080", + map: "5715161717407744", + x: 4503.734375, + y: 2493.97265625, + name: "6.354", + area: null, + hint: null, + uid: "6.354", + links: [], + type: "generic", + type_category: "Markers", + type_name: "Placemark", + color: "88689e", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5715161717407744_4832691901693952", + map: "5715161717407744", + x: 3303.734375, + y: 2493.97265625, + name: "Warner Bros", + area: null, + links: [], + type: "conference_room", + type_category: "Office", + type_name: "Conference Room", + color: "596c7c", + description: null, + keywords: null, + phone: null, + email: "VRS_SantaClara_SLR01_06FL_CONF-WarnerBros@hpe.com", + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5715161717407744_5067160539889664", + map: "5715161717407744", + x: 4981.800982803106, + y: 1185.23828125, + name: "6.280", + area: null, + hint: null, + uid: "6.280", + links: [], + type: "generic", + type_category: "Markers", + type_name: "Placemark", + color: "88689e", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5715161717407744_5068292263772160", + map: "5715161717407744", + x: 4859.343951553106, + y: 3036.423828125, + name: "6.305", + area: null, + hint: null, + uid: "6.305", + links: [], + type: "generic", + type_category: "Markers", + type_name: "Placemark", + color: "88689e", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5715161717407744_5074086174654464", + map: "5715161717407744", + x: 3699.765625, + y: 3561.42578125, + name: "6.351", + area: null, + hint: null, + uid: "6.351", + links: [], + type: "generic", + type_category: "Markers", + type_name: "Placemark", + color: "88689e", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5715161717407744_5081296799006720", + map: "5715161717407744", + x: 3957.9964968562126, + y: 1185.23828125, + name: "Chargifi - FL6 - 6.268", + area: null, + links: [], + type: "device_charging", + type_category: "Markers", + type_name: "Device Charging", + color: "88689e", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5715161717407744_5085384086126592", + map: "5715161717407744", + x: 1586.73046875, + y: 3035.12109375, + name: "6.101", + area: null, + hint: null, + uid: "6.101", + links: [], + type: "generic", + type_category: "Markers", + type_name: "Placemark", + color: "88689e", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5715161717407744_5085993434611712", + map: "5715161717407744", + x: 1063.1759828031063, + y: 3289.154296875, + name: "6.123", + area: null, + hint: null, + uid: "6.123", + links: [], + type: "desk", + type_category: "Markers", + type_name: "Desk", + color: "88689e", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + { + id: "5715161717407744_5086441721823232", + map: "5715161717407744", + x: 1067.0841859281063, + y: 3567.939453125, + name: "6.125", + area: null, + hint: null, + uid: "6.125", + links: [], + type: "generic", + type_category: "Markers", + type_name: "Placemark", + color: "88689e", + description: null, + keywords: null, + phone: null, + email: null, + url: null, + image_url: null, + image_layout: "widescreen", + is_facility: false, + hide_on_map: false, + landmark: false, + feed: "", + deep_link: null, + is_disabled: false, + category_ids: [], + categories: [], + is_searchable: true, + }, + ], +}; diff --git a/examples/cypress/utils/mock-svg.js b/examples/cypress/utils/mock-svg.js new file mode 100644 index 00000000..36620765 --- /dev/null +++ b/examples/cypress/utils/mock-svg.js @@ -0,0 +1,40 @@ +export default ` + + + + + + + + + + + + +`; diff --git a/examples/dark-theme/index.html b/examples/dark-theme/index.html new file mode 100644 index 00000000..5faf651f --- /dev/null +++ b/examples/dark-theme/index.html @@ -0,0 +1,104 @@ + + + + + + Props API | Meridian Web SDK + + + + + + + + + + + + + + +
+ +

+ This example uses a dark theme, so we customized the map background and + controls to match better by targeting the underlying HTML and CSS. +

+ + + + diff --git a/examples/directions-overview-multifloor/arrow-left-hard.png b/examples/directions-overview-multifloor/arrow-left-hard.png new file mode 100644 index 0000000000000000000000000000000000000000..cc88b0a4018d8e14fb26548673ee5a7a782e36fb GIT binary patch literal 1453 zcmc(f`#Tc~0EV|A4kp)57IxTCZt*O0$y{dU7E^8+nmkHq#~f{#a#>EvYNeWGVJyl$ zlrl4PAt6K=CYPKvBXdbEk#_t6=lp!0=l#C-`Tl{AcFe~etO!vA003Z54~*ZALv}(` z*tOGTF0#BG0ZD%DXh2P$&MW{R7v+g@4xj)f?9i;hz`d_$C~uX7m-iohsh4SV%b-G` z!>C-|xgrd$(d413;1-^9+B@8auAT~q&gs|X7PenHUy+*`?P0cJc>PZ^Y_UxlpESGv zN@wr%AHyLRYPTha->1JQvaBEGwo18aGsvxZ(wRQ*quH4XS=9gF`M2NuznTytA|kBA z7K@)oM^y<%XFlVnU9d`b`7*2bzV!Q%fo%85d$koS@dXOqOjr>T$3 ze&JQNMd^)Z^vT+jyq#E83*E^hy)tUZO$JLVum|U~FV?NClQ1$H9nWm4uYQmfEY9!5 zr{g+u#tuGFV`qKq(rw^-j|UIel^oDW5)}CXcu;iWEb|ndF>SwzgbR(9-}ue-L9TsA zldT_#VeRrKQEDV7$dR6L;~$nPL{~0HYHrDUO8Rm32~@kCwM;%vG43i~c)(Ibw%dnI zyUgRo?^OtXDnh|qAUX8b(Jfmz;ig0SrHA;F=p+pw;uCBz#~n<9nK+9Zt3A z+y*Qo2-~Z>nYVGkKzW|b*jBd+2;E(}R#$Z>46dPGjan=zCM@Byok5H~sRaADudx3L zj6TF2ZXEOL?=@N*J02i~dXKP~o9*QI)=xU+%2XYsh0oa3)Gdge_W5X$NXo!`1G-%gdAhrUl8MnY^yj#^MGXVQS%h!wuFIVq?$Itg@%iutrw_4VXa?jusqKlg-Z|6A8H&j5*L=S7ZOew5Ide(i2b1 zJb|&#EbYfLw~3@6dX5cqUaosZy#I6%bPZNz5Ij+Q7&%eM^+ySpHI#NU@$)U_5JcQu z!TrXvb9*{nCQ(UEE~819vct%=Um>NXw1U;ayQUDbuB&$j#E=`~mYqZTM&ISTE|P5` zzGQrt3*oR8Y=z||a-%dV*}&^DpMGhagt(06o;m4X+p zp+;sdCSzZ#e$18`yL$B}n!nAx?&jnVt-n%31BzP2nt68fMfN8&>S-qF7O?$N`c+_M w!om@%M#sF!uaz+)JO2ytboIg1pu;o%0X3JirvLx| literal 0 HcmV?d00001 diff --git a/examples/directions-overview-multifloor/arrow-left-soft.png b/examples/directions-overview-multifloor/arrow-left-soft.png new file mode 100644 index 0000000000000000000000000000000000000000..72449daa9f631b3c5166626ddc4953f508ae7666 GIT binary patch literal 1557 zcmV+w2I~2VP)Px)&q+i$j3!26Zn}O2Gte_TJEx|n>r8i_ zD)`y%K6Or=`lhD0yQjP7%yDx9PQVE`0Vm)DoIs@sOixd*LHp4jv>uIBI-#;o96 ztQ}|NRdhvJ=UmBo0rV)E%|52#R@A6ua%Gw{5M{R!vb{Jwj24t>?vycGho0r&S{1z$7h`I2ec>YF>%M zHYEG;N6=ZJ4rOk)1pRwKi7#QC7tl|@ei~g+(6~{Du>?J6MR$TYhYjn{1hC&gS9Us- zdEF9pQ5D_EZ-fnZqn*IsfmS2SJUZj&TDP2_73gfDD_Gf#_5u4*G@5NpVwt3`L9y*m z0zQK-OaihbNwOEmrksg)lI1ti)nx&0cCCRV&nC%3B}nuw=I~&n(KtHHxtQ&vN$fC* zof>9x&DeMG_r77z!whsYv7!(0^75L@+p(yA)}Uh?dGul-->9{GyWa2R6r=5Q;~>KX zy_ekX1@cbg996?xSM)G;9n)m~ELvU`$nr_lt)i#MX&k_xNOEPeI#u*0z+PTP$nt^L zp`s6v$3p<#A_#19&z1O%f@)S%bDZ>X1tZJIW3> zJ3njCRuw%;60dPR#d`i(Rs$_tPt*#uBrVsX9~&t9h@IstXl7KLjDHf%H41W!aplD1 z8>8_H8`iX<0U&2-dH2(QE3%xAkK6}heVD44N^cia(9O{Of|d{GIkXskheCE04o`-h zYTr(^eTK9)h2yFg6qc_?|0+7m9Zt(y{gV6(fXxa};<5?JuQF}MwvE!Lu&?l$*VZ|u z6_S5B0Oz!*7lMG#4d_1J z3%Up8K1rhQDx@*l&8$q1bb%QI@Ffjtd?t`w6LHH!0C)?L+`_A|7xTpMK1~7;zC}a1 z>2srl8-M^1Pd`i-t5lucS?D!0Z8drxLWd-8^8pw7UcFJtb`U z2Rh?gO4{`L$R2oO=no}q--YzSc7`jE$CaSP?WP$6_y#=z0Dh!|J&B*6$mr3wdjjtg z)a#83+0S8Pdv9OsivT3oWohoW@qo8Bt)EDbP=Of(T3#Wfv7d1|qrlK< z4F$ZpNc)fR{

6oGqYlM;iOQ;LvFe2jK?VqaZE6FGmERbTDXRK|+QYC;5XjpUpbz6?bsx9+!$Q^!wd2dvTOpI*6_mDJY-(cAwr6FdGvW`mQqCz4YCAw(2?*vXa^mMK%_8U(GEHifk0#3jQv8;5_Gt&*%MqKhNj&`SG3Z>5i3#s6jv=khF_48ZT6D z;Q*52!d-J3+$9u|SUlDd)W|-z1_Ft7xS&zz5=GX_h_z6H;xi=ih!~FEL7+xfEk&Z$Xi z=_21I&|i_ru_*f3*5k7$*`B0ZEGB?^c@+A{hq_436gJJ$R^wXZ_l}Le374RyD_>n3 zP08VB&3p^q8=H3<+n76w4YJQd%zp;^EF^RNO`ID;4WBE_kWTKol`u9Y$!%-eaXSoY zgv)q{bi(n5LN8n`|9u>lU#68yVkG`J=}LFwe_fC=ajVlmYw5+Gu;B))`yULHCg^b8ieqwbm{uAj zC(OdHts})dghPzP!m_N zeQP^S^3`vP29-h1k88u`mvNfd`kWrGoN<)vl^hmJOMP#;F1a)iKp&jbi}_{NaU%gr z(O@x$XSN{cW`z2Em5B?41}v>|yF@L3vp&Xfwo<@ABfVuJvd*emOo2&RR&x0DfynGEk*V zj)>yiwwb49lDd;_Q4Pd`aO(VGk|6v<)c`zN3`Gwz?fe1Gv%RT9QS01ukc;6#3rBDX)iCA?^!+r8XI zJ^xrlG@_zF(&%P$hSh{CIREKIjC!d4AyyzF9GgtccQ2IIMF)A5Q!ak{T887zuPvTkU6-ge%eiKBO=DLyf>$!=*w;v_oX))dZ*f*+f%nCh X=E{Kp*|IEQor7F3?&wBGzm$IfjPTB5 literal 0 HcmV?d00001 diff --git a/examples/directions-overview-multifloor/arrow-right-hard.png b/examples/directions-overview-multifloor/arrow-right-hard.png new file mode 100644 index 0000000000000000000000000000000000000000..058ef9767b3e1628f441bc5bc031c5a5c06cfd0a GIT binary patch literal 1463 zcmcJP>pK$)0LJG&B%6s6(T<%N;jC1X%S>Z!E+tl>&LnDC=1v_)4qnkf5;8y&uMs> zwtaC1XvpdP&}4$PM&%8#&>~cFu2&3;Lczyo1%}&uw^U-Jov$WyKfWPB>n6lH*CZ!? zU(-^?;DTc=bX3iKCt%8!xAsP_(XrK{L`*x;F+ESCDdqgZH3u9`-)LC4IKkCnj~8W? z*&aEd_`pUrH4w@=DD%sBt2ToUikS;sY$s~-Xm_TeJ0wX&{Z63;7%ypFEqqjGTMO4s zUEsCfeS96*7*B_udJ0l`BbVAyNG@l$Pb!b_k# zuNRgv=oy?WG>kn>bHIL|g`ylh>_k72;g7=k%W3*&jBRf?7l<5f1S1At+0pbpii&b5 zSJpx2bsL?1e(eP7k&CI)UCOaX$>l+b&dK&LZHGIkt21)D8jEkttGRk z=rfmJs)tL2s|GfUeuXeev@F+H*@XS(q7HjUE2$y99{uE0uO(@2LGa+xPodtKD#M^} zX=je^iz{ZH6hDi(w1*wh`<5sTxQg#v;zTaV0t)t$tXA$#F}T)IX1tS1En+wR%EQ%| zq#WA`_-;}~Xu~B-K{YK$>B^ujz?EA>%NAn9laxes>8wUP*KLKLI~?!Va2`dQQGiPu zukoR;C`OW9!~F0hsX}wR@)jdr*|jnGA-0P>3A{RjO_$G^&c*GYNYRoPnp54Ts6@lq znlI<~-{_et*!gifn?=j7WG1(7Rdk+e zVQU&hD95YM71YFyFebUs&U8CWV2P|)wc%=dDZ$r>t>LF5**Y;_GESG*SXYO7)`jTY z$sDMxViSR$IrB}2-G_if?%KWkT|k5f57_}WwcPpQ9rd!#AW2ngNg6u-ncb?-e6!F? zSn0g9-hIOO`7N(>h#-xuO^f6gJ6`TV+%2LM2FWKV2=2+MHiWuZW6%i%c@#p)_-E28jF2$KOsWe4E&>mh2@zf6-e zlA)u<-WK*Ee@%M(1D4iM-XDS6lj=QOz_EI)zy6PLFGiHA?wsAJ@$YwO2f||gB0wO_ zh%*p^MlBo5|GetWn%U`42AaSnK!Je1jf70q;i_t9l3Cqax*P1<;E^vjYHz6rmz0R& r3dY*~3|TYM!plPw`y-fXnj30GJ1!6{=4eBkPYl3&`C~brVVVB{-AAxp literal 0 HcmV?d00001 diff --git a/examples/directions-overview-multifloor/arrow-right-soft.png b/examples/directions-overview-multifloor/arrow-right-soft.png new file mode 100644 index 0000000000000000000000000000000000000000..83b9fab2074307d7bdc26568b0b983fc033eb7de GIT binary patch literal 1520 zcmVPx)s!2paRCodHolA%vMHGf}HHk{pAwrA{@ex8qM2*46#)t}P$U*{c6hsLqqC!+O zaT8qX#w-LOC_*+O1Q(*H3sC|=QBaBaK#b2Yi6D|_VtmC>$M4A8aMM;#o$gyz-CcbO zex|$X^f^^upXt6+U43WXJS#@P2p9n)U<8bS5ikOg3CzsQtV6G&AJI!_LFADAaSzOe zXao8L70b=BNX(DrxNUwRIzgZALHDD{lKw3%sUN#Kd(Z$r2TBj3yU=MKVuwBL)?6e2 z;MM4PG>x=nZPAbImk@yHTJ)xtY{BmG61P?@1c0>w-GM$XfUCN@+=w~|KydhpOD*w9vmVgbTXciH~=Xx{*57LF~K|jGD-)#Zx zyg?5JgCjt`7Hvf{sHu`SXrT)1Khb73uSff(u7Q$2=pj^K?_~QD^un+%;m@d`6ON-= zC_eVdv}edkBizkdTKC6WHDY5}gXKK*_MCXaG#(nGo2oY(X*F~?GTPR`DCC0yb-NYr1EZTWP+;B zd`WcBivBleLN>2Jzan3er{b4NPx*Nr+UGl<&@OW<{VaeOpj`zZWxJ1$Qo?94+EHfg zs9!yLe6O~FvC#p>95m&l6K{uSUXN53Fn`3Hlm=ORSA%$L07akOYI zA6d2mL@pUSJz$2-+cXd`J`rs}t`$yyXnbU61B`o-rpOJi(y|2XWxixj!TG1zLG%p> z0Oz8g3n0pNZ}Rzbwc~6N+J=VNEl=V5RT%v1NKD=)Q`c4gDY!0F` zJ2${KbQo}x=n&GB4Q=RiC;I^1S2TpNd83m9Y(uAkcbgLOZ`iG9L!Ud>2f!^s2b7>6 z>D&O@(qRB==OaGEw!g~(#yMetTd&OIzp=CT|LVX7oV>R7of7nubz;~t5CHHqO2|{# zoodi(5CGg7B(rXsvc5(LI|Q=xk?VUhT+m-OVl@dsbCZjxqfQ=Q^>Z@5Cfj3&0d6Te z;(+R^+H&kb+o(nWnld%1DPLkFZ)#boN&s*x(Qy9P2YX#r|7Jf+0J7VCbZ6V`23R+1 z0C*NUssJrE*?uueinVw5agr7)PSn#Z&HYwkXC^KJWa&4GY?diddurkWsHp?ql?upW z@~p;Rmu+HSI<()67;Axfm(Pv9?_}ybij4kD@3Fg<(J~sqvL5a-1)3KXHk~(#1{yN5 zLR0f;{=<^lvr?HU*)pfyjdKjO3V(d;QRz@|a>BAX?VVuD_x$ke?G zn=DLXf<8k*XrIC+3zL|j7b^%&DQvPZi3xf_LFfmCO%^6GL2JIl?)NMxDhAOs=-#|P z(lltxXvJ@X&qT8*(K6acF;IJ*_qGFtPU|M-r6cV~S{}_nCptj}+CV2FkSL60w1G}U zAW<00Xak*yK%y{~(FQsZfka^}qYZQ-0*S&{MjPlv1QLa@j5g4T2qX$)8Ev2w5l9rq zGP)33*YgKFzdS#DzwiIxbH~#iEhnQY0{{TzTwPGu1APw` zEe$$&x}yZ+0I_&18VP6_Q~w(PkgRk?Ib28)<5S%RFW{61G=9RonRB{rVm3H@4O~q* zMW~Gtz41NC)(KOT4s1VGEA6YOh${AasN_1{?{z*-f;(SN;hY_6+RM@Hd|&7S5jaAn96-Sj910yU{&Aq)!_l)I zt6jFVifDbWH5_E+sY+H2+pY2Ll5DEHUnQ~(ci9tW)JjNZfvcdI9T*#6k#MXg24vY> zb4OM*&s$>6O%hgBIQ>{tLEK4;M!MtKBCD{_uVVRpS*x41#`#PY^Js`mgu>nGIy^5 z*&%MpB{7ssZ5$b;?2`|(x-XybQi1{Ow4$7MDBhEgZr>qq78 z7A*BHV1*X8+3h3ebi3QU0Eq?zb8$lJqrbbA{FS&9X#z*ZAf{eV*6}vim*URp@qO^_ zp@k`;Q8-_k+g9s#w`zd(5tVRLcMSbQV3h01ljmW* z<%qLj1m$oVtA;0@plF+i9HCoAzLc`&ehCPc6zLVCs%Da#Vi4TyfSq|HHNacJYa2_? zw!Y9iIKx{oTRp$L8aUfmFJ!`Y-j}pr=NDakPL0CzKA&(NuYPMfpg7R;Y2sG>vDhA< zdgU#7TEOte?q;+9rxZDv-MKYblt2Xp_}Zy6tFyLvn!`6O?*iSPt}L{vv(jD-Plkz( zGl;^7a2IkD2OnrE8edH6Uo-3wkgSmT3ZXAfP5rF)(15ggCaq<3CM#pz;iF{2b>bM9 zOBTB!dV0l`LSIwvx|Ey#Y6L6TE2irEOYxmT7S)pc%Pp=1wVAC)-|s8Rh%;?o)cbLo zetvy-h}ozHyk}wVydcNg0&{YU8KgE|A5v&zREj1h`aUB!mJ!E{#v}H@M;Mic3pd-? zcoKEsU1UNnKAN>`E^lJk(Hulok5dS?Posfzq)|pR9Da=z}#Rhrg)}Sior-TxHx!rg(IF zwSwc9zufTOj&N6tBWvzpZFr~qAH^ylWO>H+kl}kGZ^&VwNJfFsllo4DWModu&;(Ve z9wKV$2O(Z<{j#5jrnc1|1*T?8RrS~{=R1`sv*1wM$%|kPT-BV$g^eaNa!XrVE@dNR z!!AzwW^PqC*DMimi^g?PxM_-=641Dg@A7Apg(9$V{d)7Sweu;X2;+iO*|5i^WM@@i zvn3hCK^PzL!~{YAZ~u^_@xxzhgA7BR2ii5NNi|+rG2<>r_ku?6djx1I2eK9gXp*?dxR_mbK09Pk>R0|SM_y!3HFkJG1NrQjEnx?oJHr&dI!FU|@da>Eakt z!T5Hr{|eqjiDU0S&OiP3)`Ex~PyMHtA@BiLiKJ#+ktjpJz zt1&4lz>t9Bf~#3`9ZdwU3lu8{U70$a;eeb&$u{rG>sS5=FkXo5`fF@p^wF(fZ?N_!pwp{ogWk3HTN%Pyc5B6=felx{hgK}{7upV`wyuE$Gk6_@VT6; z;hrC(sn%0oEAgM+dd^Q7wyJj}wC&q0`Q(oe>zTSEE^I3TS6+S*6Rh5}`PG)0-{Slp z?a+F@?^*J{qjR#qyervJp!>*uimUAJvTu58Wu`Jd^L1ZPcsVZdz@4>X0t^#k3%3+~ zo6lvk%EoM!2>%wwBF1y`72BHjG4%&WWbe3`u}81q>>2N?PZKL-to4~UF-CSsY!+TG zeP@rB?`FPk&{hfMkM&Gvj=4%`G9$#iRb+6&F#c#JI z%D;Z&eR<6;cZ1`08_!%>m-OMZ52s*q{zY>>bAOkfpVwR2Uz)oFNv|@Ne71J+IT^3} zvmK`Q{g~h2z-`jW;OW*UmLbGAsYgclf(nz0q-E3sPZkfOqAd=SIVPk$$!Js)R5*F! zB9pI@!=#CeS!cO4s3^M+Dvfs^y?7~Nvn=RI$h1qk3+Af`WIb|S_wCx9Tify&Yi%17 zE>#>V;r*}P5dQXFN9Emj%3p5l?^!A8%HY7S^iE+`2YZJwhkbp<8jTfE?kp}2V6@;k b#~;S4oU*ptb+&o~vp$2TtDnm{r-UW|ve?!X literal 0 HcmV?d00001 diff --git a/examples/directions-overview-multifloor/directions-arrived.png b/examples/directions-overview-multifloor/directions-arrived.png new file mode 100644 index 0000000000000000000000000000000000000000..95abb32dd06495eb25ac9d2f8193178a81a02454 GIT binary patch literal 1702 zcmb7_`y&&I0>?LH%(=~^#$_$;im1@V=F!CR?vl)_ymn0UXdVgkN@pFi<`v^w4XeBg zXI@!0l~v>%?>w4ksL5ky&0EOz!~F-&58uz{Klps_yExk&QczO>004&^?5$n*eQkf? z@}PZITs+9#7x0#=9TvdufzJZ~AiRUMm0KK8T-Z_tcR$iTsapZn&K~zA z2a$t@gr`wuQxhW*>=DTSuLtJNzMtK)Q6=l9c*zkfMs z0{Sdt$7fD80%(mDz-%4K@BVKw-{0d6;;iRUPQca)PyyffyNr=>W4_|nXff>c2DvTK z2>UFpSk`~UlBA;>R%y;Vww2V$aj$ZBl$; z&%02uAC0AX<9?10szG9Z#bmvjetyDKlxd{0-OaOv#kEAs@^h0t_slwL)iKS3(5lQJ zQG8%B5{TI~80%zN6;q+(hPio}#a0|lbdu_oU9)R`jcp9?E>p$J>+E8q&ee>Fc-vQ@ z9msGBvh90#_cw8+a^!*G(?IlCJah7qS37^!ayF#`ca6rQ_V zlubC z@_uqC{jam%RBv5I1b1nsgby#3Eef?{TNcV<#2sEw?|ax|(L^HpFtya(?Kev<+Oko8obS(9so?qWY zW@uS=agXWo5(>nnvY{@V5bvWsO==sJJi^$IGto?K^{~+_uu+|>_1t}UQlldUh2cp* z|KWIQblv-f54p~1tkNs?PlF}*n0C(E)wwak!%yBJ0~}pfr6=3hlH#FG%I&P&##!h*(Nq@06 zv+ogu5ZeknT)>)^Y^zzgdxr698HBFePrSlXvRJ5B%`Pt<<Qom%ft+88w(kPp_Lx44$taqbT8YE=5$f6d_-!3T| z+JU}Yv+OpRC3GOx(;B!!TN1`O7ju9kxRok7pJgH&e&qcJ?YEpXh|+7s@Egai5HG(n zY+JTwfMQ`_8<+8 zP4g4eQ~ym94@~Yu+02mkx)a?0ADmu-c^!@mWFnpx77%DrCVu*zrQ0j=HyW;=T#j<$ zWw&M}a;U-efl^ayho%rKW$6fJZuc^U+Iy-t^pok`Hg2TH@Gc`sqPF1I#sL%P$07Uk zmwm{-KRqw_KFg}*^<>SaH<+1$L#j&~G(EOJG$qz|uVXXyL$ZP|7Md02_7m)}JR;1l zTuSOrUTz^=;ub(xEqCAIr7d=rk*||(!R7*mcOE{hNB1tL&Lx22!E^IGgb4lrS{~J( z-Dpc(JyS3L;w?wna^S>HL}n0pX0rM3HoHk?7f#^Ue( E4`HQ88~^|S literal 0 HcmV?d00001 diff --git a/examples/directions-overview-multifloor/index.html b/examples/directions-overview-multifloor/index.html new file mode 100644 index 00000000..59afb2f0 --- /dev/null +++ b/examples/directions-overview-multifloor/index.html @@ -0,0 +1,707 @@ + + + + + + + [BETA] Directions Overview, multi-floor, step by step | Meridian Web SDK + + + + + + + + + + + + + + + + + +

+
+
+ + + + + + diff --git a/examples/directions-overview/directions-arrived.png b/examples/directions-overview/directions-arrived.png new file mode 100644 index 0000000000000000000000000000000000000000..95abb32dd06495eb25ac9d2f8193178a81a02454 GIT binary patch literal 1702 zcmb7_`y&&I0>?LH%(=~^#$_$;im1@V=F!CR?vl)_ymn0UXdVgkN@pFi<`v^w4XeBg zXI@!0l~v>%?>w4ksL5ky&0EOz!~F-&58uz{Klps_yExk&QczO>004&^?5$n*eQkf? z@}PZITs+9#7x0#=9TvdufzJZ~AiRUMm0KK8T-Z_tcR$iTsapZn&K~zA z2a$t@gr`wuQxhW*>=DTSuLtJNzMtK)Q6=l9c*zkfMs z0{Sdt$7fD80%(mDz-%4K@BVKw-{0d6;;iRUPQca)PyyffyNr=>W4_|nXff>c2DvTK z2>UFpSk`~UlBA;>R%y;Vww2V$aj$ZBl$; z&%02uAC0AX<9?10szG9Z#bmvjetyDKlxd{0-OaOv#kEAs@^h0t_slwL)iKS3(5lQJ zQG8%B5{TI~80%zN6;q+(hPio}#a0|lbdu_oU9)R`jcp9?E>p$J>+E8q&ee>Fc-vQ@ z9msGBvh90#_cw8+a^!*G(?IlCJah7qS37^!ayF#`ca6rQ_V zlubC z@_uqC{jam%RBv5I1b1nsgby#3Eef?{TNcV<#2sEw?|ax|(L^HpFtya(?Kev<+Oko8obS(9so?qWY zW@uS=agXWo5(>nnvY{@V5bvWsO==sJJi^$IGto?K^{~+_uu+|>_1t}UQlldUh2cp* z|KWIQblv-f54p~1tkNs?PlF}*n0C(E)wwak!%yBJ0~}pfr6=3hlH#FG%I&P&##!h*(Nq@06 zv+ogu5ZeknT)>)^Y^zzgdxr698HBFePrSlXvRJ5B%`Pt<<Qom%ft+88w(kPp_Lx44$taqbT8YE=5$f6d_-!3T| z+JU}Yv+OpRC3GOx(;B!!TN1`O7ju9kxRok7pJgH&e&qcJ?YEpXh|+7s@Egai5HG(n zY+JTwfMQ`_8<+8 zP4g4eQ~ym94@~Yu+02mkx)a?0ADmu-c^!@mWFnpx77%DrCVu*zrQ0j=HyW;=T#j<$ zWw&M}a;U-efl^ayho%rKW$6fJZuc^U+Iy-t^pok`Hg2TH@Gc`sqPF1I#sL%P$07Uk zmwm{-KRqw_KFg}*^<>SaH<+1$L#j&~G(EOJG$qz|uVXXyL$ZP|7Md02_7m)}JR;1l zTuSOrUTz^=;ub(xEqCAIr7d=rk*||(!R7*mcOE{hNB1tL&Lx22!E^IGgb4lrS{~J( z-Dpc(JyS3L;w?wna^S>HL}n0pX0rM3HoHk?7f#^Ue( E4`HQ88~^|S literal 0 HcmV?d00001 diff --git a/examples/directions-overview/index.html b/examples/directions-overview/index.html new file mode 100644 index 00000000..442ac8df --- /dev/null +++ b/examples/directions-overview/index.html @@ -0,0 +1,325 @@ + + + + + + [BETA] Directions Overview (Single Floor) | Meridian Web SDK + + + + + + + + + + + + + + + + +
+
+
+ + + + + + diff --git a/examples/floor-control/index.html b/examples/floor-control/index.html new file mode 100644 index 00000000..6b1bd269 --- /dev/null +++ b/examples/floor-control/index.html @@ -0,0 +1,64 @@ + + + + + + Floor Control | Meridian Web SDK + + + + + + + + + + + + + +
+
+
+ Pass "showFloorsControl: false" to the createMap function or use the + "update" method to hide the search control. +
+
+ + + + + diff --git a/examples/full-page/index.html b/examples/full-page/index.html new file mode 100644 index 00000000..1b8e1569 --- /dev/null +++ b/examples/full-page/index.html @@ -0,0 +1,59 @@ + + + + + + Full Page | Meridian Web SDK + + + + + + + + + + + + + +
+ + + + diff --git a/examples/index.html b/examples/index.html new file mode 100644 index 00000000..d63a7d92 --- /dev/null +++ b/examples/index.html @@ -0,0 +1,318 @@ + + + + + + Meridian Web SDK Examples + + + + + + +

Meridian Web SDK Examples

+
+

Documentation

+

+ Read the documentation + on GitHub. +

+
+
+

Note:

+

+ Unlike Meridian's well known iOS and Android mobile SDKs, the WebSDK is + not a complete location services SDK. +

+
+
+

Examples

+ +

Basic

+

A basic demo of the Meridian Web SDK.

+ +

Placemark Customization

+

+ A demo showing you can target placemark css using + .meridian-placemark-icon[data-meridian-placemark-id="add placemark id + here"] + to customize the UI +

+ +

+ Placemark Label Zoom Level +

+

+ A demo showing how you can modify the zoom level at which label text + appears. +

+ +

API as an option

+

+ A demo of using the api parameter directly, for use cases + where you need multiple API tokens, or don't want to call + init. +

+ +

Option toggles

+

+ A demo showing how to change several options dynamically while using the + SDK. +

+ +

Overlay: Polygon

+

A demo showing how to draw a SVG polygon element.

+ +

Overlay: Polyline

+

A demo showing how to draw a SVG polyline element.

+ +

+ Overlay: Path, Image and Circle +

+

A demo showing how to draw SVG path, image and circle elements.

+ +

Overlay: Area Placemark

+

A demo showing how to draw an Area Placemark.

+ +

+ Lat/Lng to Map Point (x/y) conversion +

+

+ A demo showing how to convert a Lat/Lng to a Map Point (x/y) by creating + an annotation point and drawing a polygon using a real world latitude + and longitude. +

+ +

+ Map Point (x/y) to Lat/Lng conversion +

+

A demo showing how to convert a Map Point (x/y) to Lat/Lng.

+ +

Annotation: Point

+

A demo showing how to create a point annotation.

+ +

Annotation: Kiosk

+

A demo showing how to create a custom 'you are here' marker.

+ +

Tag/Marker click

+

+ A demo showing how to hook into extra functionality of the click + callbacks. +

+ +

+ Load Tags +

+

Option to avoid loading Tags

+ +

+ + Tag/Marker click, prevent default functionality + +

+

+ A demo showing how to replace the click callback functionality with + entirely custom behavior. +

+ +

+ + Tag/Marker click, prevent default and show additional options +

+

+ A demo with an additional example of how a Tag/Marker click callback can + be customized. +

+ +

Tag label (single)

+

A demo showing how to filter tags by labels.

+ +

Tag labels (multiple)

+

Another demo showing how to filter tags by labels.

+ +

Tag name (single)

+

A demo showing how to filter tags by name.

+ +

Tag Customization

+

+ A demo showing you can target tag css using + .meridian-tag-label-"add tag label name here" + to customize the UI +

+ +

Hide Search

+

A demo showing how to hide the Search menu icon.

+ +

Hide Floors

+

A demo showing how to hide the Floor menu icon.

+ +

Min Zoom Level

+

Specifying a minimum zoom level (minZoomLevel)

+ +

Max Zoom Level

+

Specifying a maximum zoom level (maxZoomLevel)

+ +

Zoom to point

+

Pan to x/y coordinate and scale to a given zoom factor.

+ +

Zoom to default

+

Set zoom to the default level and pan to the default position.

+ +

Center Map

+

Center the map while retaining the current scale.

+ +

Restricted Pan/Zoom

+

A demo showing how to prevent unwanted pan and zoom gestures.

+ +

Container styling

+

A demo showing how to style the map container.

+ +

Full page

+

A demo showing how to make the SDK take up the entire page.

+ +

Dark theme

+

A demo of how to create a dark mode theme for the SDK.

+ +

Advanced styling

+

An advanced styling demo.

+ +

+ [BETA] Directions Overview (Single Floor) +

+

+ A demo showing how to use api.getDirections() to display a + route. To submit feedback please visit: + https://forms.gle/amwwJ8FsQebNCNzz5 +

+ +

+ [BETA] Directions Overview (Multiple Floors) +

+

+ A demo showing how to use api.getDirections() to display a + route that navigates across multiple floors. To submit feedback please + visit: + https://forms.gle/amwwJ8FsQebNCNzz5 +

+ +

api.openStream(), Floor Example

+

+ A demo showing how to use api.openStream() to track updates + of Tags on a single Floor. +

+ +

api.openStream(), Tag Zone example

+

+ A demo showing how to use api.openStream() to track updates + of Tags leaving and entering a single zone. +

+ +

api.openStream(), Tag example

+

+ A demo showing how to use api.openStream() to track updates + on a single Tag. +

+ +

+ api.openStream(), Tag Label example +

+

+ A demo showing how to use api.openStream() to track updates + for Tags with a specific Label. +

+ +

+ api.openStream(), Location example +

+

+ A demo showing how to use api.openStream() to track Tags at + a specific location (all Floors) +

+ +

Location viewer

+

A demo allowing you to preview any floor.

+
+ +
© 2022 Hewlett Packard Enterprise Development LP
+ + diff --git a/examples/lat-lng-to-map-point/index.html b/examples/lat-lng-to-map-point/index.html new file mode 100644 index 00000000..e9e4b9ae --- /dev/null +++ b/examples/lat-lng-to-map-point/index.html @@ -0,0 +1,252 @@ + + + + + + Lat/Lng to Map Point | Meridian Web SDK + + + + + + + + + + + + + +
+
+
+
+ First fetch your floor data:
+

+ + const floorData = await api.fetchFloorData(locationID, floorID); + +
+

+

+ Adding an annotation:

+ convert your latitude and longitude to a screen x/y and update + the map with an annotation +

+

+ + const pointLocation = MeridianSDK.latLngToMapPoint(floorData, + {lat: 37.38215607501162, lng: -121.98159912048112}); + +
+
+ + meridianMap.update({
+ + annotations: [
+ + {
+ + type: "point",
+ x: pointLocation.x,
+ y: pointLocation.y,
+ size: 32,
+ backgroundColor: "red",
+ backgroundImage: MeridianSDK.placemarkIconURL("generic")
+
+ },
+
+ ],
+
+ }); +
+

+
+
+ Adding a polygon:

+ polygons are created using an array of coordinate arrays - convert + your lat/lng points to x/y points +

+ const polygonArray = [];

+ + function coordinateObjectToArray({lat, lng}) {
+ + const coordObject = MeridianSDK.latLngToMapPoint(floorData, + {lat, lng});
+ return [coordObject.x, coordObject.y];
+
+ }
+
+

+ then push your x/y coordinate arrays to a polygon array +

+ + polygonArray.push(coordinateObjectToArray({lat: 37.38217476738073, + lng: -121.98124592380535}));

+ polygonArray.push(coordinateObjectToArray({lat: 37.38215630276508, + lng: -121.98099902518736}));

+ polygonArray.push(coordinateObjectToArray({lat: + 37.382049361776645, lng: -121.98100870748611}));

+ polygonArray.push(coordinateObjectToArray({lat: + 37.382145531737166, lng: -121.98124592380535}));

+
+

+

+ update your overlay points with your polygon array +

+

+ + + meridianMap.update({
+ + overlays: [
+ + {
+ + type: "polygon",
+ points: polygonArray,
+ fillOpacity: "15%",
+
+ },
+
+ ],
+
+ }); +
+
+

+
+
+
+ + + + diff --git a/examples/load-tags/index.html b/examples/load-tags/index.html new file mode 100644 index 00000000..244a21b9 --- /dev/null +++ b/examples/load-tags/index.html @@ -0,0 +1,69 @@ + + + + + + Load Tags | Meridian Web SDK + + + + + + + + + + + + + +
+
+ +
+ +
+ + + + + diff --git a/examples/location-viewer/index.html b/examples/location-viewer/index.html new file mode 100644 index 00000000..875ba814 --- /dev/null +++ b/examples/location-viewer/index.html @@ -0,0 +1,141 @@ + + + + + + Location Viewer | Meridian Web SDK + + + + + + + + + + + + + +
+ + + + + + + + + +
+ + + + + + diff --git a/examples/map-point-lat-lng/index.html b/examples/map-point-lat-lng/index.html new file mode 100644 index 00000000..988a9d7c --- /dev/null +++ b/examples/map-point-lat-lng/index.html @@ -0,0 +1,166 @@ + + + + + + Map Point to Lat/Lng | Meridian Web SDK + + + + + + + + + + + + + +
+
+
+ + First fetch your floor data:
+

+ + const floorData = await api.fetchFloorData(locationID, floorID); + +
+

+
+ + Adding an annotation:

+ Convert your x and y points to latitude and longitude. In this + example you can view the latitude and longitude in the + console. +

+ + const xyToLatLng = MeridianSDK.mapPointToLatLng(floorData, {x: + 5269.126531688274, y: 3824.493588695426}); + +

+
+ + To confirm we have generated the proper latitude and longitute, we + will convert our lat/lng to screen X and Y points that we can create + an annotation for and update the map with an annotation:
+

+ + const latLngToXy = MeridianSDK.latLngToMapPoint(floorData, + xyToLatLng); + +
+
+ + meridianMap.update({
+ + annotations: [
+ + {
+ + type: "point",
+ x: latLngToXy.x,
+ y: latLngToXy.y,
+ size: 32,
+ backgroundColor: "red",
+ backgroundImage: MeridianSDK.placemarkIconURL("generic")
+
+ },
+
+ ],
+
+ }); +
+

+
+
+
+ + + + diff --git a/examples/marker-click-prevent-default/index.html b/examples/marker-click-prevent-default/index.html new file mode 100644 index 00000000..5e334adc --- /dev/null +++ b/examples/marker-click-prevent-default/index.html @@ -0,0 +1,57 @@ + + + + + + Marker Click Callback (Prevent Default) | Meridian Web SDK + + + + + + + + + + + + + + + +
+ + + + diff --git a/examples/marker-click-unique-behavior/index.html b/examples/marker-click-unique-behavior/index.html new file mode 100644 index 00000000..8bb7e80f --- /dev/null +++ b/examples/marker-click-unique-behavior/index.html @@ -0,0 +1,83 @@ + + + + + + + Tag/Placemark click callback with custom sidebar | Meridian Web SDK + + + + + + + + + + + + + + + + + +
+ + + + + diff --git a/examples/marker-click-unique-behavior/placemark.svg b/examples/marker-click-unique-behavior/placemark.svg new file mode 100644 index 00000000..11eea1c3 --- /dev/null +++ b/examples/marker-click-unique-behavior/placemark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/examples/marker-click-unique-behavior/style.css b/examples/marker-click-unique-behavior/style.css new file mode 100644 index 00000000..6ada063e --- /dev/null +++ b/examples/marker-click-unique-behavior/style.css @@ -0,0 +1,62 @@ +body { + font-family: sans-serif; +} + +.map { + position: fixed; + top: 0; + left: 0; + width: calc(100vw - 350px); + height: 100vh; + margin: 0; + max-width: 100%; + border: 0; +} + +.sidebar-container { + position: fixed; + top: 0; + right: 0; + width: 350px; + height: 100vh; + box-sizing: border-box; + width: 350px; + height: 100%; + display: flex; + background: hsl(210, 50%, 98%); + color: hsl(210, 80%, 30%); + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1), 0 0 4px rgba(0, 0, 0, 0.1); + display: flex; + flex-direction: column; + padding: 20px; +} + +h2 { + display: flex; + align-items: stretch; + flex-direction: column; + margin: 0; + margin-left: -20px; + margin-right: -20px; + padding: 20px; + padding-top: 0; +} + +h3 { + margin-top: 0px; +} + +.marker-img { + width: 100%; + border-radius: 4px; +} + +.meridian-placemark-icon:focus { + height: 30px; + width: 30px; +} + +.meridian-tag:focus { + height: 60px; + width: 60px; +} diff --git a/examples/marker-click/index.html b/examples/marker-click/index.html new file mode 100644 index 00000000..92368dd9 --- /dev/null +++ b/examples/marker-click/index.html @@ -0,0 +1,61 @@ + + + + + + Marker Click Callback | Meridian Web SDK + + + + + + + + + + + + + + + +
+
+
+ Click on any tag/marker in the map or select one in the search control. +
+
+ + + + + diff --git a/examples/max-zoom/index.html b/examples/max-zoom/index.html new file mode 100644 index 00000000..3070cf87 --- /dev/null +++ b/examples/max-zoom/index.html @@ -0,0 +1,73 @@ + + + + + + Max Zoom Level (maxZoomLevel) | Meridian Web SDK + + + + + + + + + + + + + +
+
+

+ This demo shows the result of specifying a maximum zoom level + (maxZoomLevel) of 16. By zooming in you see how this + affects the map. The default value is 8 which equals + eight times the scale of the map. +

+
+ + + + + diff --git a/examples/meridian-sdk.js b/examples/meridian-sdk.js new file mode 100644 index 00000000..8963bed0 --- /dev/null +++ b/examples/meridian-sdk.js @@ -0,0 +1,2 @@ +/*! For license information please see meridian-sdk.js.LICENSE.txt */ +var MeridianSDK;!function(){var e={323:function(e,t,n){var r={"./aed.svg":852,"./amusement_park.svg":1968,"./atm.svg":5150,"./attraction.svg":1541,"./baggage.svg":3412,"./baggage_carts.svg":2096,"./bank.svg":136,"./bar.svg":5861,"./bike.svg":8113,"./bus.svg":7536,"./cafe.svg":2873,"./cafeteria.svg":3884,"./cashier.svg":9005,"./changing_room.svg":8327,"./changing_station.svg":7126,"./charging_station.svg":6906,"./clinic.svg":9138,"./club.svg":1174,"./coat_check.svg":3826,"./conference_room.svg":1606,"./currency_exchange.svg":7501,"./customer_service.svg":5738,"./desk.svg":9477,"./device_charging.svg":2630,"./elevator.svg":4,"./emergency_dept.svg":2053,"./escalator.svg":4266,"./exclusion_area.svg":2890,"./exhibit.svg":1641,"./exit.svg":9458,"./fire_extinguisher.svg":6624,"./first_aid.svg":1535,"./fitness_center.svg":1902,"./fountain.svg":3614,"./gallery.svg":6848,"./gaming.svg":5781,"./garden.svg":1841,"./gate.svg":5995,"./generic.svg":9101,"./global_entry_office.svg":1393,"./handicap.svg":2914,"./information.svg":8208,"./kiosk.svg":6175,"./lab.svg":7903,"./laptop_lounge.svg":4067,"./lost_found.svg":1833,"./lounge.svg":1900,"./mailbox.svg":2086,"./museum.svg":2002,"./nursing_station.svg":1565,"./operating_room.svg":2515,"./outdoor_area.svg":4525,"./paging_phone.svg":9563,"./parking.svg":8854,"./pet_relief.svg":4975,"./pharmacy.svg":593,"./phone.svg":9338,"./play_area.svg":9484,"./printer.svg":7774,"./registration.svg":9333,"./rental_cars.svg":3622,"./restaurant.svg":2311,"./restroom.svg":4965,"./restroom_ada.svg":2804,"./restroom_family.svg":504,"./restroom_men.svg":5584,"./restroom_men_ada.svg":7073,"./restroom_women.svg":8098,"./restroom_women_ada.svg":3303,"./rewards.svg":8850,"./security.svg":9456,"./security_checkpoint.svg":2453,"./shoe_shine.svg":9519,"./shop.svg":5758,"./spa.svg":7244,"./stadium.svg":1915,"./stairs.svg":2208,"./swimming_pool.svg":646,"./taxi.svg":7342,"./theater.svg":2925,"./ticketing.svg":8034,"./tours.svg":3187,"./train.svg":4340,"./training.svg":6740,"./valet.svg":1644,"./vending_machines.svg":4810,"./water_fountain.svg":9922,"./wedding.svg":2994};function o(e){var t=i(e);return n(t)}function i(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=i,e.exports=o,o.id=323},2244:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return ye}});var r=function(){function e(e){var t=this;this._insertTag=function(e){var n;n=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(function(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=function(e){if(e.sheet)return e.sheet;for(var t=0;t0?u(b,--y):0,g--,10===_&&(g=1,m--),_}function O(){return _=y2||E(_)>3?"":" "}function M(e,t){for(;--t&&O()&&!(_<48||_>102||_>57&&_<65||_>70&&_<97););return A(e,C()+(t<6&&32==S()&&32==O()))}function R(e){for(;O();)switch(_){case e:return y;case 34:case 39:34!==e&&39!==e&&R(_);break;case 40:41===e&&R(e);break;case 92:O()}return y}function L(e,t){for(;O()&&e+_!==57&&(e+_!==84||47!==S()););return"/*"+A(t,y-1)+"*"+i(47===e?e:O())}function N(e){for(;!E(S());)O();return A(e,y)}var I="-ms-",z="-moz-",F="-webkit-",B="comm",U="rule",$="decl",q="@keyframes";function W(e,t){for(var n="",r=p(e),o=0;o0&&h(z)-v&&d(_>32?J(z+";",r,n,v-1):J(l(z," ","")+";",r,n,v-2),p);break;case 59:z+=";";default:if(d(I=G(z,t,n,m,g,o,f,T,P=[],R=[],v),a),123===E)if(0===g)V(z,t,I,I,P,a,v,f,R);else switch(99===y&&110===u(z,3)?100:y){case 100:case 108:case 109:case 115:V(e,I,I,r&&d(G(e,I,I,0,0,o,f,T,o,P=[],v),R),o,R,v,f,r?P:R);break;default:V(z,I,I,I,[""],R,0,f,R)}}m=g=_=0,w=A=1,T=z="",v=s;break;case 58:v=1+h(z),_=b;default:if(w<1)if(123==E)--w;else if(125==E&&0==w++&&125==x())continue;switch(z+=i(E),E*w){case 38:A=g>0?1:(z+="\f",-1);break;case 44:f[m++]=(h(z)-1)*A,A=1;break;case 64:45===S()&&(z+=D(O())),y=S(),g=v=h(T=z+=N(C())),E++;break;case 45:45===b&&2==h(z)&&(w=0)}}return a}function G(e,t,n,r,i,a,c,u,h,d,m){for(var g=i-1,v=0===i?a:[""],y=p(v),_=0,b=0,k=0;_0?v[x]+" "+O:l(O,/&\f/g,v[x])))&&(h[k++]=S);return w(e,t,n,0===i?U:u,h,d,m)}function X(e,t,n){return w(e,t,n,B,i(_),f(e,2,-2),0)}function J(e,t,n,r){return w(e,t,n,$,f(e,0,r),f(e,r+1,-1),r)}var Y=function(e,t,n){for(var r=0,o=0;r=o,o=S(),38===r&&12===o&&(t[n]=1),!E(o);)O();return A(e,y)},K=new WeakMap,Q=function(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,n=e.parent,r=e.column===n.column&&e.line===n.line;"rule"!==n.type;)if(!(n=n.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||K.get(n))&&!r){K.set(e,!0);for(var o=[],a=function(e,t){return P(function(e,t){var n=-1,r=44;do{switch(E(r)){case 0:38===r&&12===S()&&(t[n]=1),e[n]+=Y(y-1,t,n);break;case 2:e[n]+=D(r);break;case 4:if(44===r){e[++n]=58===S()?"&\f":"",t[n]=e[n].length;break}default:e[n]+=i(r)}}while(r=O());return e}(T(e),t))}(t,o),s=n.props,l=0,c=0;l6)switch(u(e,t+1)){case 109:if(45!==u(e,t+4))break;case 102:return l(e,/(.+:)(.+)-([^]+)/,"$1"+F+"$2-$3$1"+z+(108==u(e,t+3)?"$3":"$2-$3"))+e;case 115:return~c(e,"stretch")?te(l(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==u(e,t+1))break;case 6444:switch(u(e,h(e)-3-(~c(e,"!important")&&10))){case 107:return l(e,":",":"+F)+e;case 101:return l(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+F+(45===u(e,14)?"inline-":"")+"box$3$1"+F+"$2$3$1"+I+"$2box$3")+e}break;case 5936:switch(u(e,t+11)){case 114:return F+e+I+l(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return F+e+I+l(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return F+e+I+l(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return F+e+I+e+e}return e}var ne=[function(e,t,n,r){if(e.length>-1&&!e.return)switch(e.type){case $:e.return=te(e.value,e.length);break;case q:return W([k(e,{value:l(e.value,"@","@"+F)})],r);case U:if(e.length)return function(e,t){return e.map(t).join("")}(e.props,(function(t){switch(function(e,t){return(e=/(::plac\w+|:read-\w+)/.exec(e))?e[0]:e}(t)){case":read-only":case":read-write":return W([k(e,{props:[l(t,/:(read-\w+)/,":-moz-$1")]})],r);case"::placeholder":return W([k(e,{props:[l(t,/:(plac\w+)/,":"+F+"input-$1")]}),k(e,{props:[l(t,/:(plac\w+)/,":-moz-$1")]}),k(e,{props:[l(t,/:(plac\w+)/,I+"input-$1")]})],r)}return""}))}}],re={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1};function oe(e){var t=Object.create(null);return function(n){return void 0===t[n]&&(t[n]=e(n)),t[n]}}var ie=/[A-Z]|^ms/g,ae=/_EMO_([^_]+?)_([^]*?)_EMO_/g,se=function(e){return 45===e.charCodeAt(1)},le=function(e){return null!=e&&"boolean"!=typeof e},ce=oe((function(e){return se(e)?e:e.replace(ie,"-$&").toLowerCase()})),ue=function(e,t){switch(e){case"animation":case"animationName":if("string"==typeof t)return t.replace(ae,(function(e,t,n){return he={name:t,styles:n,next:he},t}))}return 1===re[e]||se(e)||"number"!=typeof t||0===t?t:t+"px"};function fe(e,t,n){if(null==n)return"";if(void 0!==n.__emotion_styles)return n;switch(typeof n){case"boolean":return"";case"object":if(1===n.anim)return he={name:n.name,styles:n.styles,next:he},n.name;if(void 0!==n.styles){var r=n.next;if(void 0!==r)for(;void 0!==r;)he={name:r.name,styles:r.styles,next:he},r=r.next;return n.styles+";"}return function(e,t,n){var r="";if(Array.isArray(n))for(var o=0;o=4;++r,o-=4)t=1540483477*(65535&(t=255&e.charCodeAt(r)|(255&e.charCodeAt(++r))<<8|(255&e.charCodeAt(++r))<<16|(255&e.charCodeAt(++r))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(o){case 3:n^=(255&e.charCodeAt(r+2))<<16;case 2:n^=(255&e.charCodeAt(r+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(r)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)}(o)+l;return{name:c,styles:o,next:he}};function me(e,t,n){var r="";return n.split(" ").forEach((function(n){void 0!==e[n]?t.push(e[n]+";"):r+=n+" "})),r}function ge(e,t){if(void 0===e.inserted[t.name])return e.insert("",t,e.sheet,!0)}function ve(e,t,n){var r=[],o=me(e,r,n);return r.length<2?n:o+t(r)}var ye=function(e){var t=function(e){var t=e.key;if("css"===t){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,(function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))}))}var o,i,a=e.stylisPlugins||ne,s={},l=[];o=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),(function(e){for(var t=e.getAttribute("data-emotion").split(" "),n=1;n=0&&(t=e.slice(n+1),e=e.slice(0,n)),e&&!r.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:t}}))),l=-1,c=s.length;if(!(arguments.length<2)){if(null!=t&&"function"!=typeof t)throw new Error("invalid callback: "+t);for(;++l0)for(var n,r,o=new Array(n),i=0;i=t||n<0||f&&e-c>=i}function b(){var e=d();if(_(e))return w(e);s=setTimeout(b,function(e){var n=t-(e-l);return f?p(n,i-(e-c)):n}(e))}function w(e){return s=void 0,v&&r?y(e):(r=o=void 0,a)}function k(){var e=d(),n=_(e);if(r=arguments,o=this,l=e,n){if(void 0===s)return function(e){return c=e,s=setTimeout(b,t),u?y(e):a}(l);if(f)return s=setTimeout(b,t),y(l)}return void 0===s&&(s=setTimeout(b,t)),a}return t=g(t)||0,m(n)&&(u=!!n.leading,i=(f="maxWait"in n)?h(g(n.maxWait)||0,t):i,v="trailing"in n?!!n.trailing:v),k.cancel=function(){void 0!==s&&clearTimeout(s),c=0,r=l=o=s=void 0},k.flush=function(){return void 0===s?a:w(d())},k}},1324:function(e,t,n){e=n.nmd(e);var r="__lodash_hash_undefined__",o=1,i=2,a=1/0,s=9007199254740991,l="[object Arguments]",c="[object Array]",u="[object Boolean]",f="[object Date]",h="[object Error]",p="[object Function]",d="[object GeneratorFunction]",m="[object Map]",g="[object Number]",v="[object Object]",y="[object Promise]",_="[object RegExp]",b="[object Set]",w="[object String]",k="[object Symbol]",x="[object WeakMap]",O="[object ArrayBuffer]",S="[object DataView]",C=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,A=/^\w*$/,E=/^\./,T=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,P=/\\(\\)?/g,D=/^\[object .+?Constructor\]$/,j=/^(?:0|[1-9]\d*)$/,M={};M["[object Float32Array]"]=M["[object Float64Array]"]=M["[object Int8Array]"]=M["[object Int16Array]"]=M["[object Int32Array]"]=M["[object Uint8Array]"]=M["[object Uint8ClampedArray]"]=M["[object Uint16Array]"]=M["[object Uint32Array]"]=!0,M[l]=M[c]=M[O]=M[u]=M[S]=M[f]=M[h]=M[p]=M[m]=M[g]=M[v]=M[_]=M[b]=M[w]=M[x]=!1;var R="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,L="object"==typeof self&&self&&self.Object===Object&&self,N=R||L||Function("return this")(),I=t&&!t.nodeType&&t,z=I&&e&&!e.nodeType&&e,F=z&&z.exports===I&&R.process,B=function(){try{return F&&F.binding("util")}catch(e){}}(),U=B&&B.isTypedArray;function $(e,t,n,r){for(var o=-1,i=e?e.length:0;++o-1},Se.prototype.set=function(e,t){var n=this.__data__,r=Te(n,e);return r<0?n.push([e,t]):n[r][1]=t,this},Ce.prototype.clear=function(){this.__data__={hash:new Oe,map:new(fe||Se),string:new Oe}},Ce.prototype.delete=function(e){return Fe(this,e).delete(e)},Ce.prototype.get=function(e){return Fe(this,e).get(e)},Ce.prototype.has=function(e){return Fe(this,e).has(e)},Ce.prototype.set=function(e,t){return Fe(this,e).set(e,t),this},Ae.prototype.add=Ae.prototype.push=function(e){return this.__data__.set(e,r),this},Ae.prototype.has=function(e){return this.__data__.has(e)},Ee.prototype.clear=function(){this.__data__=new Se},Ee.prototype.delete=function(e){return this.__data__.delete(e)},Ee.prototype.get=function(e){return this.__data__.get(e)},Ee.prototype.has=function(e){return this.__data__.has(e)},Ee.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Se){var r=n.__data__;if(!fe||r.length<199)return r.push([e,t]),this;n=this.__data__=new Ce(r)}return n.set(e,t),this};var De,je=(De=function(e,t){return e&&Me(e,t,lt)},function(e,t){if(null==e)return e;if(!tt(e))return De(e,t);for(var n=e.length,r=-1,o=Object(e);++rc))return!1;var f=s.get(e);if(f&&s.get(t))return f==t;var h=-1,p=!0,d=a&o?new Ae:void 0;for(s.set(e,t),s.set(t,e);++h-1&&e%1==0&&e-1&&e%1==0&&e<=s}function ot(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function it(e){return!!e&&"object"==typeof e}function at(e){return"symbol"==typeof e||it(e)&&re.call(e)==k}var st=U?function(e){return function(t){return e(t)}}(U):function(e){return it(e)&&rt(e.length)&&!!M[re.call(e)]};function lt(e){return tt(e)?function(e,t){var n=et(e)||Qe(e)?function(e,t){for(var n=-1,r=Array(e);++n=t||n<0||h&&e-u>=a}function w(){var e=v();if(b(e))return k(e);l=setTimeout(w,function(e){var n=t-(e-c);return h?g(n,a-(e-u)):n}(e))}function k(e){return l=void 0,p&&o?d(e):(o=i=void 0,s)}function x(){var e=v(),n=b(e);if(o=arguments,i=this,c=e,n){if(void 0===l)return function(e){return u=e,l=setTimeout(w,t),f?d(e):s}(c);if(h)return l=setTimeout(w,t),d(c)}return void 0===l&&(l=setTimeout(w,t)),s}return t=_(t)||0,y(n)&&(f=!!n.leading,a=(h="maxWait"in n)?m(_(n.maxWait)||0,t):a,p="trailing"in n?!!n.trailing:p),x.cancel=function(){void 0!==l&&clearTimeout(l),u=0,o=c=i=l=void 0},x.flush=function(){return void 0===l?s:k(v())},x}(e,t,{leading:o,maxWait:t,trailing:i})}},7975:function(e){"use strict";function t(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function n(e,t){for(var n,r="",o=0,i=-1,a=0,s=0;s<=e.length;++s){if(s2){var l=r.lastIndexOf("/");if(l!==r.length-1){-1===l?(r="",o=0):o=(r=r.slice(0,l)).length-1-r.lastIndexOf("/"),i=s,a=0;continue}}else if(2===r.length||1===r.length){r="",o=0,i=s,a=0;continue}t&&(r.length>0?r+="/..":r="..",o=2)}else r.length>0?r+="/"+e.slice(i+1,s):r=e.slice(i+1,s),o=s-i-1;i=s,a=0}else 46===n&&-1!==a?++a:a=-1}return r}var r={resolve:function(){for(var e,r="",o=!1,i=arguments.length-1;i>=-1&&!o;i--){var a;i>=0?a=arguments[i]:(void 0===e&&(e=process.cwd()),a=e),t(a),0!==a.length&&(r=a+"/"+r,o=47===a.charCodeAt(0))}return r=n(r,!o),o?r.length>0?"/"+r:"/":r.length>0?r:"."},normalize:function(e){if(t(e),0===e.length)return".";var r=47===e.charCodeAt(0),o=47===e.charCodeAt(e.length-1);return 0!==(e=n(e,!r)).length||r||(e="."),e.length>0&&o&&(e+="/"),r?"/"+e:e},isAbsolute:function(e){return t(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,n=0;n0&&(void 0===e?e=o:e+="/"+o)}return void 0===e?".":r.normalize(e)},relative:function(e,n){if(t(e),t(n),e===n)return"";if((e=r.resolve(e))===(n=r.resolve(n)))return"";for(var o=1;oc){if(47===n.charCodeAt(s+f))return n.slice(s+f+1);if(0===f)return n.slice(s+f)}else a>c&&(47===e.charCodeAt(o+f)?u=f:0===f&&(u=0));break}var h=e.charCodeAt(o+f);if(h!==n.charCodeAt(s+f))break;47===h&&(u=f)}var p="";for(f=o+u+1;f<=i;++f)f!==i&&47!==e.charCodeAt(f)||(0===p.length?p+="..":p+="/..");return p.length>0?p+n.slice(s+u):(s+=u,47===n.charCodeAt(s)&&++s,n.slice(s))},_makeLong:function(e){return e},dirname:function(e){if(t(e),0===e.length)return".";for(var n=e.charCodeAt(0),r=47===n,o=-1,i=!0,a=e.length-1;a>=1;--a)if(47===(n=e.charCodeAt(a))){if(!i){o=a;break}}else i=!1;return-1===o?r?"/":".":r&&1===o?"//":e.slice(0,o)},basename:function(e,n){if(void 0!==n&&"string"!=typeof n)throw new TypeError('"ext" argument must be a string');t(e);var r,o=0,i=-1,a=!0;if(void 0!==n&&n.length>0&&n.length<=e.length){if(n.length===e.length&&n===e)return"";var s=n.length-1,l=-1;for(r=e.length-1;r>=0;--r){var c=e.charCodeAt(r);if(47===c){if(!a){o=r+1;break}}else-1===l&&(a=!1,l=r+1),s>=0&&(c===n.charCodeAt(s)?-1==--s&&(i=r):(s=-1,i=l))}return o===i?i=l:-1===i&&(i=e.length),e.slice(o,i)}for(r=e.length-1;r>=0;--r)if(47===e.charCodeAt(r)){if(!a){o=r+1;break}}else-1===i&&(a=!1,i=r+1);return-1===i?"":e.slice(o,i)},extname:function(e){t(e);for(var n=-1,r=0,o=-1,i=!0,a=0,s=e.length-1;s>=0;--s){var l=e.charCodeAt(s);if(47!==l)-1===o&&(i=!1,o=s+1),46===l?-1===n?n=s:1!==a&&(a=1):-1!==n&&(a=-1);else if(!i){r=s+1;break}}return-1===n||-1===o||0===a||1===a&&n===o-1&&n===r+1?"":e.slice(n,o)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return function(e,t){var n=t.dir||t.root,r=t.base||(t.name||"")+(t.ext||"");return n?n===t.root?n+r:n+"/"+r:r}(0,e)},parse:function(e){t(e);var n={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return n;var r,o=e.charCodeAt(0),i=47===o;i?(n.root="/",r=1):r=0;for(var a=-1,s=0,l=-1,c=!0,u=e.length-1,f=0;u>=r;--u)if(47!==(o=e.charCodeAt(u)))-1===l&&(c=!1,l=u+1),46===o?-1===a?a=u:1!==f&&(f=1):-1!==a&&(f=-1);else if(!c){s=u+1;break}return-1===a||-1===l||0===f||1===f&&a===l-1&&a===s+1?-1!==l&&(n.base=n.name=0===s&&i?e.slice(1,l):e.slice(s,l)):(0===s&&i?(n.name=e.slice(1,a),n.base=e.slice(1,l)):(n.name=e.slice(s,a),n.base=e.slice(s,l)),n.ext=e.slice(a,l)),s>0?n.dir=e.slice(0,s-1):i&&(n.dir="/"),n},sep:"/",delimiter:":",win32:null,posix:null};r.posix=r,e.exports=r},3034:function(e,t,n){"use strict";n.r(t),n.d(t,{resetPropWarnings:function(){return a}});var r,o=n(172);null!=(r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0)&&r.__PREACT_DEVTOOLS__&&r.__PREACT_DEVTOOLS__.attachPreact("10.22.1",o.options,{Fragment:o.Fragment,Component:o.Component});var i={};function a(){i={}}function s(e){return e.type===o.Fragment?"Fragment":"function"==typeof e.type?e.type.displayName||e.type.name:"string"==typeof e.type?e.type:"#text"}var l=[],c=[];function u(){return l.length>0?l[l.length-1]:null}var f=!0;function h(e){return"function"==typeof e.type&&e.type!=o.Fragment}function p(e){for(var t=[e],n=e;null!=n.__o;)t.push(n.__o),n=n.__o;return t.reduce((function(e,t){e+=" in "+s(t);var n=t.__source;return n?e+=" (at "+n.fileName+":"+n.lineNumber+")":f&&console.warn("Add @babel/plugin-transform-react-jsx-source to get a more detailed component stack. Note that you should not add it to production builds of your App for bundle size reasons."),f=!1,e+"\n"}),"")}var d="function"==typeof WeakMap;function m(e){var t=[];return e.__k?(e.__k.forEach((function(e){e&&"function"==typeof e.type?t.push.apply(t,m(e)):e&&"string"==typeof e.type&&t.push(e.type)})),t):t}function g(e){return e?"function"==typeof e.type?null===e.__?null!==e.__e&&null!==e.__e.parentNode?e.__e.parentNode.localName:"":g(e.__):e.type:""}var v=o.Component.prototype.setState;function y(e){return"table"===e||"tfoot"===e||"tbody"===e||"thead"===e||"td"===e||"tr"===e||"th"===e}o.Component.prototype.setState=function(e,t){return null==this.__v&&null==this.state&&console.warn('Calling "this.setState" inside the constructor of a component is a no-op and might be a bug in your application. Instead, set "this.state = {}" directly.\n\n'+p(u())),v.call(this,e,t)};var _=/^(address|article|aside|blockquote|details|div|dl|fieldset|figcaption|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|hr|main|menu|nav|ol|p|pre|search|section|table|ul)$/,b=o.Component.prototype.forceUpdate;function w(e){var t=e.props,n=s(e),r="";for(var o in t)if(t.hasOwnProperty(o)&&"children"!==o){var i=t[o];"function"==typeof i&&(i="function "+(i.displayName||i.name)+"() {}"),i=Object(i)!==i||i.toString?i+"":Object.prototype.toString.call(i),r+=" "+o+"="+JSON.stringify(i)}var a=t.children;return"<"+n+r+(a&&a.length?">..":" />")}o.Component.prototype.forceUpdate=function(e){return null==this.__v?console.warn('Calling "this.forceUpdate" inside the constructor of a component is a no-op and might be a bug in your application.\n\n'+p(u())):null==this.__P&&console.warn('Can\'t call "this.forceUpdate" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.\n\n'+p(this.__v)),b.call(this,e)},function(){!function(){var e=o.options.__b,t=o.options.diffed,n=o.options.__,r=o.options.vnode,i=o.options.__r;o.options.diffed=function(e){h(e)&&c.pop(),l.pop(),t&&t(e)},o.options.__b=function(t){h(t)&&l.push(t),e&&e(t)},o.options.__=function(e,t){c=[],n&&n(e,t)},o.options.vnode=function(e){e.__o=c.length>0?c[c.length-1]:null,r&&r(e)},o.options.__r=function(e){h(e)&&c.push(e),i&&i(e)}}();var e=!1,t=o.options.__b,n=o.options.diffed,r=o.options.vnode,a=o.options.__r,u=o.options.__e,f=o.options.__,v=o.options.__h,b=d?{useEffect:new WeakMap,useLayoutEffect:new WeakMap,lazyPropTypes:new WeakMap}:null,k=[];o.options.__e=function(e,t,n,r){if(t&&t.__c&&"function"==typeof e.then){var o=e;e=new Error("Missing Suspense. The throwing component was: "+s(t));for(var i=t;i;i=i.__)if(i.__c&&i.__c.__c){e=o;break}if(e instanceof Error)throw e}try{(r=r||{}).componentStack=p(t),u(e,t,n,r),"function"!=typeof e.then&&setTimeout((function(){throw e}))}catch(e){throw e}},o.options.__=function(e,t){if(!t)throw new Error("Undefined parent passed to render(), this is the second argument.\nCheck if the element is available in the DOM/has the correct id.");var n;switch(t.nodeType){case 1:case 11:case 9:n=!0;break;default:n=!1}if(!n){var r=s(e);throw new Error("Expected a valid HTML node as a second argument to render.\tReceived "+t+" instead: render(<"+r+" />, "+t+");")}f&&f(e,t)},o.options.__b=function(n){var r=n.type;if(e=!0,void 0===r)throw new Error("Undefined component passed to createElement()\n\nYou likely forgot to export your component or might have mixed up default and named imports"+w(n)+"\n\n"+p(n));if(null!=r&&"object"==typeof r){if(void 0!==r.__k&&void 0!==r.__e)throw new Error("Invalid type passed to createElement(): "+r+"\n\nDid you accidentally pass a JSX literal as JSX twice?\n\n let My"+s(n)+" = "+w(r)+";\n let vnode = ;\n\nThis usually happens when you export a JSX literal and not the component.\n\n"+p(n));throw new Error("Invalid type passed to createElement(): "+(Array.isArray(r)?"array":r))}if(void 0!==n.ref&&"function"!=typeof n.ref&&"object"!=typeof n.ref&&!("$$typeof"in n))throw new Error('Component\'s "ref" property should be a function, or an object created by createRef(), but got ['+typeof n.ref+"] instead\n"+w(n)+"\n\n"+p(n));if("string"==typeof n.type)for(var o in n.props)if("o"===o[0]&&"n"===o[1]&&"function"!=typeof n.props[o]&&null!=n.props[o])throw new Error("Component's \""+o+'" property should be a function, but got ['+typeof n.props[o]+"] instead\n"+w(n)+"\n\n"+p(n));if("function"==typeof n.type&&n.type.propTypes){if("Lazy"===n.type.displayName&&b&&!b.lazyPropTypes.has(n.type)){var a="PropTypes are not supported on lazy(). Use propTypes on the wrapped component itself. ";try{var l=n.type();b.lazyPropTypes.set(n.type,!0),console.warn(a+"Component wrapped in lazy() is "+s(l))}catch(e){console.warn(a+"We will log the wrapped component's name once it is loaded.")}}var c=n.props;n.type.__f&&delete(c=function(e,t){for(var n in t)e[n]=t[n];return e}({},c)).ref,function(e,t,n,r,o){Object.keys(e).forEach((function(n){var a;try{a=e[n](t,n,r,"prop",null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(e){a=e}a&&!(a.message in i)&&(i[a.message]=!0,console.error("Failed prop type: "+a.message+(o&&"\n"+o()||"")))}))}(n.type.propTypes,c,0,s(n),(function(){return p(n)}))}t&&t(n)};var x,O=0;o.options.__r=function(t){a&&a(t),e=!0;var n=t.__c;if(n===x?O++:O=1,O>=25)throw new Error("Too many re-renders. This is limited to prevent an infinite loop which may lock up your browser. The component causing this is: "+s(t));x=n},o.options.__h=function(t,n,r){if(!t||!e)throw new Error("Hook can only be invoked from render methods.");v&&v(t,n,r)};var S=function(e,t){return{get:function(){var n="get"+e+t;k&&k.indexOf(n)<0&&(k.push(n),console.warn("getting vnode."+e+" is deprecated, "+t))},set:function(){var n="set"+e+t;k&&k.indexOf(n)<0&&(k.push(n),console.warn("setting vnode."+e+" is not allowed, "+t))}}},C={nodeName:S("nodeName","use vnode.type"),attributes:S("attributes","use vnode.props"),children:S("children","use vnode.props.children")},A=Object.create({},C);o.options.vnode=function(e){var t=e.props;if(null!==e.type&&null!=t&&("__source"in t||"__self"in t)){var n=e.props={};for(var o in t){var i=t[o];"__source"===o?e.__source=i:"__self"===o?e.__self=i:n[o]=i}}e.__proto__=A,r&&r(e)},o.options.diffed=function(t){var r,o=t.type,i=t.__;if(t.__k&&t.__k.forEach((function(e){if("object"==typeof e&&e&&void 0===e.type){var n=Object.keys(e).join(",");throw new Error("Objects are not valid as a child. Encountered an object with the keys {"+n+"}.\n\n"+p(t))}})),t.__c===x&&(O=0),"string"==typeof o&&(y(o)||"p"===o||"a"===o||"button"===o)){var a=g(i);if(""!==a)"table"===o&&"td"!==a&&y(a)?(console.log(a,i.__e),console.error("Improper nesting of table. Your should not have a table-node parent."+w(t)+"\n\n"+p(t))):"thead"!==o&&"tfoot"!==o&&"tbody"!==o||"table"===a?"tr"===o&&"thead"!==a&&"tfoot"!==a&&"tbody"!==a?console.error("Improper nesting of table. Your should have a parent."+w(t)+"\n\n"+p(t)):"td"===o&&"tr"!==a?console.error("Improper nesting of table. Your parent."+w(t)+"\n\n"+p(t)):"th"===o&&"tr"!==a&&console.error("Improper nesting of table. Your ."+w(t)+"\n\n"+p(t)):console.error("Improper nesting of table. Your should have a
should have a
should have a
parent."+w(t)+"\n\n"+p(t));else if("p"===o){var l=m(t).filter((function(e){return _.test(e)}));l.length&&console.error("Improper nesting of paragraph. Your

should not have "+l.join(", ")+"as child-elements."+w(t)+"\n\n"+p(t))}else"a"!==o&&"button"!==o||-1!==m(t).indexOf(o)&&console.error("Improper nesting of interactive content. Your <"+o+"> should not have other "+("a"===o?"anchor":"button")+" tags as child-elements."+w(t)+"\n\n"+p(t))}if(e=!1,n&&n(t),null!=t.__k)for(var c=[],u=0;u2&&(s.children=arguments.length>3?r.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(a in e.defaultProps)void 0===s[a]&&(s[a]=e.defaultProps[a]);return k(e,s,o,i,null)}function k(e,t,n,r,a){var s={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:null==a?++i:a,__i:-1,__u:0};return null==a&&null!=o.vnode&&o.vnode(s),s}function x(){return{current:null}}function O(e){return e.children}function S(e,t){this.props=e,this.context=t}function C(e,t){if(null==t)return e.__?C(e.__,e.__i+1):null;for(var n;tt&&s.sort(u));T.__r=0}function P(e,t,n,r,o,i,a,s,l,c,u){var f,h,p,d,v,y=r&&r.__k||g,_=t.length;for(n.__d=l,D(n,t,y),l=n.__d,f=0;f<_;f++)null!=(p=n.__k[f])&&"boolean"!=typeof p&&"function"!=typeof p&&(h=-1===p.__i?m:y[p.__i]||m,p.__i=f,z(e,p,h,o,i,a,s,l,c,u),d=p.__e,p.ref&&h.ref!=p.ref&&(h.ref&&U(h.ref,null,p),u.push(p.ref,p.__c||d,p)),null==v&&null!=d&&(v=d),65536&p.__u||h.__k===p.__k?(l&&"string"==typeof p.type&&!e.contains(l)&&(l=C(h)),l=j(p,l,e)):"function"==typeof p.type&&void 0!==p.__d?l=p.__d:d&&(l=d.nextSibling),p.__d=void 0,p.__u&=-196609);n.__d=l,n.__e=v}function D(e,t,n){var r,o,i,a,s,l=t.length,c=n.length,u=c,f=0;for(e.__k=[],r=0;r0?k(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):o)?(o.__=e,o.__b=e.__b+1,s=R(o,n,a,u),o.__i=s,i=null,-1!==s&&(u--,(i=n[s])&&(i.__u|=131072)),null==i||null===i.__v?(-1==s&&f--,"function"!=typeof o.type&&(o.__u|=65536)):s!==a&&(s==a-1?f=s-a:s==a+1?f++:s>a?u>l-a?f+=s-a:f--:s(null==l||131072&l.__u?0:1))for(;a>=0||s=0){if((l=t[a])&&!(131072&l.__u)&&o==l.key&&i===l.type)return a;a--}if(s2&&(l.children=arguments.length>3?r.call(arguments,2):n),k(e.type,l,o||e.key,i||e.ref,null)}function V(e,t){var n={__c:t="__cC"+d++,__:e,Consumer:function(e,t){return e.children(t)},Provider:function(e){var n,r;return this.getChildContext||(n=[],(r={})[t]=this,this.getChildContext=function(){return r},this.componentWillUnmount=function(){n=null},this.shouldComponentUpdate=function(e){this.props.value!==e.value&&n.some((function(e){e.__e=!0,E(e)}))},this.sub=function(e){n.push(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){n&&n.splice(n.indexOf(e),1),t&&t.call(e)}}),e.children}};return n.Provider.__=n.Consumer.contextType=n}r=g.slice,o={__e:function(e,t,n,r){for(var o,i,a;t=t.__;)if((o=t.__c)&&!o.__)try{if((i=o.constructor)&&null!=i.getDerivedStateFromError&&(o.setState(i.getDerivedStateFromError(e)),a=o.__d),null!=o.componentDidCatch&&(o.componentDidCatch(e,r||{}),a=o.__d),a)return o.__E=o}catch(t){e=t}throw e}},i=0,a=function(e){return null!=e&&null==e.constructor},S.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=_({},this.state),"function"==typeof e&&(e=e(_({},n),this.props)),e&&_(n,e),null!=e&&this.__v&&(t&&this._sb.push(t),E(this))},S.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),E(this))},S.prototype.render=O,s=[],c="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,u=function(e,t){return e.__v.__b-t.__v.__b},T.__r=0,f=0,h=I(!1),p=I(!0),d=0},5697:function(e,t,n){"use strict";n.r(t);var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},r(e,t)};function o(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function i(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}var a=function(e,t){this.target=t,this.type=e},s=function(e){function t(t,n){var r=e.call(this,"error",n)||this;return r.message=t.message,r.error=t,r}return o(t,e),t}(a),l=function(e){function t(t,n,r){void 0===t&&(t=1e3),void 0===n&&(n="");var o=e.call(this,"close",r)||this;return o.wasClean=!0,o.code=t,o.reason=n,o}return o(t,e),t}(a),c=function(){if("undefined"!=typeof WebSocket)return WebSocket},u={maxReconnectionDelay:1e4,minReconnectionDelay:1e3+4e3*Math.random(),minUptime:5e3,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,maxEnqueuedMessages:1/0,startClosed:!1,debug:!1},f=function(){function e(e,t,n){var r=this;void 0===n&&(n={}),this._listeners={error:[],message:[],open:[],close:[]},this._retryCount=-1,this._shouldReconnect=!0,this._connectLock=!1,this._binaryType="blob",this._closeCalled=!1,this._messageQueue=[],this.onclose=null,this.onerror=null,this.onmessage=null,this.onopen=null,this._handleOpen=function(e){r._debug("open event");var t=r._options.minUptime,n=void 0===t?u.minUptime:t;clearTimeout(r._connectTimeout),r._uptimeTimeout=setTimeout((function(){return r._acceptOpen()}),n),r._ws.binaryType=r._binaryType,r._messageQueue.forEach((function(e){return r._ws.send(e)})),r._messageQueue=[],r.onopen&&r.onopen(e),r._listeners.open.forEach((function(t){return r._callEventListener(e,t)}))},this._handleMessage=function(e){r._debug("message event"),r.onmessage&&r.onmessage(e),r._listeners.message.forEach((function(t){return r._callEventListener(e,t)}))},this._handleError=function(e){r._debug("error event",e.message),r._disconnect(void 0,"TIMEOUT"===e.message?"timeout":void 0),r.onerror&&r.onerror(e),r._debug("exec error listeners"),r._listeners.error.forEach((function(t){return r._callEventListener(e,t)})),r._connect()},this._handleClose=function(e){r._debug("close event"),r._clearTimeouts(),r._shouldReconnect&&r._connect(),r.onclose&&r.onclose(e),r._listeners.close.forEach((function(t){return r._callEventListener(e,t)}))},this._url=e,this._protocols=t,this._options=n,this._options.startClosed&&(this._shouldReconnect=!1),this._connect()}return Object.defineProperty(e,"CONNECTING",{get:function(){return 0},enumerable:!0,configurable:!0}),Object.defineProperty(e,"OPEN",{get:function(){return 1},enumerable:!0,configurable:!0}),Object.defineProperty(e,"CLOSING",{get:function(){return 2},enumerable:!0,configurable:!0}),Object.defineProperty(e,"CLOSED",{get:function(){return 3},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"CONNECTING",{get:function(){return e.CONNECTING},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"OPEN",{get:function(){return e.OPEN},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"CLOSING",{get:function(){return e.CLOSING},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"CLOSED",{get:function(){return e.CLOSED},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"binaryType",{get:function(){return this._ws?this._ws.binaryType:this._binaryType},set:function(e){this._binaryType=e,this._ws&&(this._ws.binaryType=e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"retryCount",{get:function(){return Math.max(this._retryCount,0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"bufferedAmount",{get:function(){return this._messageQueue.reduce((function(e,t){return"string"==typeof t?e+=t.length:t instanceof Blob?e+=t.size:e+=t.byteLength,e}),0)+(this._ws?this._ws.bufferedAmount:0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"extensions",{get:function(){return this._ws?this._ws.extensions:""},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"protocol",{get:function(){return this._ws?this._ws.protocol:""},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"readyState",{get:function(){return this._ws?this._ws.readyState:this._options.startClosed?e.CLOSED:e.CONNECTING},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"url",{get:function(){return this._ws?this._ws.url:""},enumerable:!0,configurable:!0}),e.prototype.close=function(e,t){void 0===e&&(e=1e3),this._closeCalled=!0,this._shouldReconnect=!1,this._clearTimeouts(),this._ws?this._ws.readyState!==this.CLOSED?this._ws.close(e,t):this._debug("close: already closed"):this._debug("close enqueued: no ws instance")},e.prototype.reconnect=function(e,t){this._shouldReconnect=!0,this._closeCalled=!1,this._retryCount=-1,this._ws&&this._ws.readyState!==this.CLOSED?(this._disconnect(e,t),this._connect()):this._connect()},e.prototype.send=function(e){if(this._ws&&this._ws.readyState===this.OPEN)this._debug("send",e),this._ws.send(e);else{var t=this._options.maxEnqueuedMessages,n=void 0===t?u.maxEnqueuedMessages:t;this._messageQueue.length=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}(r),i=o.next();!i.done;i=o.next()){var a=i.value;this._callEventListener(e,a)}}catch(e){t={error:e}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}return!0},e.prototype.removeEventListener=function(e,t){this._listeners[e]&&(this._listeners[e]=this._listeners[e].filter((function(e){return e!==t})))},e.prototype._debug=function(){for(var e=[],t=0;t"],e))},e.prototype._getNextDelay=function(){var e=this._options,t=e.reconnectionDelayGrowFactor,n=void 0===t?u.reconnectionDelayGrowFactor:t,r=e.minReconnectionDelay,o=void 0===r?u.minReconnectionDelay:r,i=e.maxReconnectionDelay,a=void 0===i?u.maxReconnectionDelay:i,s=0;return this._retryCount>0&&(s=o*Math.pow(n,this._retryCount-1))>a&&(s=a),this._debug("next delay",s),s},e.prototype._wait=function(){var e=this;return new Promise((function(t){setTimeout(t,e._getNextDelay())}))},e.prototype._getNextUrl=function(e){if("string"==typeof e)return Promise.resolve(e);if("function"==typeof e){var t=e();if("string"==typeof t)return Promise.resolve(t);if(t.then)return t}throw Error("Invalid URL")},e.prototype._connect=function(){var e=this;if(!this._connectLock&&this._shouldReconnect){this._connectLock=!0;var t=this._options,n=t.maxRetries,r=void 0===n?u.maxRetries:n,o=t.connectionTimeout,i=void 0===o?u.connectionTimeout:o,a=t.WebSocket,s=void 0===a?c():a;if(this._retryCount>=r)this._debug("max retries reached",this._retryCount,">=",r);else{if(this._retryCount++,this._debug("connect",this._retryCount),this._removeListeners(),void 0===(l=s)||!l||2!==l.CLOSING)throw Error("No valid WebSocket class provided");var l;this._wait().then((function(){return e._getNextUrl(e._url)})).then((function(t){e._closeCalled||(e._debug("connect",{url:t,protocols:e._protocols}),e._ws=e._protocols?new s(t,e._protocols):new s(t),e._ws.binaryType=e._binaryType,e._connectLock=!1,e._addListeners(),e._connectTimeout=setTimeout((function(){return e._handleTimeout()}),i))}))}}},e.prototype._handleTimeout=function(){this._debug("timeout event"),this._handleError(new s(Error("TIMEOUT"),this))},e.prototype._disconnect=function(e,t){if(void 0===e&&(e=1e3),this._clearTimeouts(),this._ws){this._removeListeners();try{this._ws.close(e,t),this._handleClose(new l(e,t,this))}catch(e){}}},e.prototype._acceptOpen=function(){this._debug("accept open"),this._retryCount=0},e.prototype._callEventListener=function(e,t){"handleEvent"in t?t.handleEvent(e):t(e)},e.prototype._removeListeners=function(){this._ws&&(this._debug("removeListeners"),this._ws.removeEventListener("open",this._handleOpen),this._ws.removeEventListener("close",this._handleClose),this._ws.removeEventListener("message",this._handleMessage),this._ws.removeEventListener("error",this._handleError))},e.prototype._addListeners=function(){this._ws&&(this._debug("addListeners"),this._ws.addEventListener("open",this._handleOpen),this._ws.addEventListener("close",this._handleClose),this._ws.addEventListener("message",this._handleMessage),this._ws.addEventListener("error",this._handleError))},e.prototype._clearTimeouts=function(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)},e}();t.default=f},78:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=n(172),i=r(n(5843));t.default=({mapZoomFactor:e,annotations:t})=>(0,o.h)("div",{"data-testid":"meridian--private--annotation-layer"},t.map(((t,n)=>"point"===t.type?(0,o.h)(i.default,Object.assign({key:n},t,{mapZoomFactor:e})):null)))},5843:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(172),o=n(2785),i=n(7746),a=({mapZoomFactor:e,x:t,y:n,size:o=24,backgroundColor:a="hsl(207, 65%, 46%)",backgroundSize:c="cover",backgroundImage:u,title:f,onClick:h,data:p={}})=>(0,r.h)("div",{className:s,style:{"--meridian-annotationPoint-x":`${t}px`,"--meridian-annotationPoint-y":`${n}px`,"--meridian-annotationPoint-scale":1/e,"--meridian-annotationPoint-size":`${o}px`,"--meridian-annotationPoint-backgroundColor":a,"--meridian-annotationPoint-backgroundSize":c,"--meridian-annotationPoint-backgroundImage":u?`url('${u}')`:"none",cursor:h?"pointer":"initial"},onClick:h?()=>(0,i.asyncClientCall)(h,p):void 0,"data-testid":"meridian--private--annotation-point"},f?(0,r.h)("div",{className:l,"data-testid":"meridian--private--annotation-point-title"},f):null),s=(0,o.css)({label:"AnnotationPoint",position:"absolute",top:"var(--meridian-annotationPoint-y)",left:"var(--meridian-annotationPoint-x)",transform:"translate(-50%, -50%) scale(var(--meridian-annotationPoint-scale))",width:"var(--meridian-annotationPoint-size)",height:"var(--meridian-annotationPoint-size)",backgroundColor:"var(--meridian-annotationPoint-backgroundColor)",backgroundImage:"var(--meridian-annotationPoint-backgroundImage)",backgroundSize:"var(--meridian-annotationPoint-backgroundSize)",backgroundRepeat:"no-repeat",backgroundPosition:"center",borderRadius:9999,userSelect:"none"}),l=(0,o.css)(o.mixins.textStrokeWhite,{label:"AnnotationPoint-Label",marginLeft:"50%",position:"absolute",minWidth:55,maxWidth:120,fontSize:14,textAlign:"center",marginTop:"var(--meridian-annotationPoint-size)",paddingTop:4,color:"#222",userSelect:"none",transform:"translate(-50%, 0)",fontWeight:"bold"});a.displayName="AnnotationPoint",t.default=a},2150:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(1324)),i=n(172),a=r(n(2930)),s=r(n(9594)),l=r(n(8828)),c=r(n(6933)),u=n(2785),f=r(n(7866)),h=n(7746);class p extends i.Component{constructor(){super(...arguments),this.state={searchFilter:"",searchType:this.props.showTags?"tags":"placemarks"},this.searchInputRef=(0,i.createRef)(),this.setRadioFilter=e=>{this.setState({searchType:e})}}componentDidMount(){this.searchInputRef.current&&this.searchInputRef.current.focus()}render(){const{floors:e,tagsLoading:t,placemarksLoading:n,toggleAssetListOverlay:r,showTags:a,showPlacemarks:s,language:u}=this.props,p=f.default.lookup("tags",u),g=f.default.lookup("search_tags",u),v=f.default.lookup("placemarks",u),y=f.default.lookup("search_placemarks",u),{searchFilter:_}=this.state,b=(0,h.createSearchMatcher)(_),w=(0,o.default)(e,(e=>e.id)),S={};for(const t of e)S[t.id]=[t.group_name||h.uiText.unnamedBuilding,h.uiText.enDash,t.name].join(" ");return(0,i.h)(l.default,{position:"right",onCloseClicked:()=>{r({open:!1})}},(0,i.h)(c.default,{placeholder:"tags"===this.state.searchType?g:y,value:_,onChange:e=>{this.setState({searchFilter:e})}}),(0,i.h)("div",{className:O(Boolean(a&&s))},a?(0,i.h)(i.Fragment,null,(0,i.h)("input",{type:"radio",name:"searchType",id:"tags",className:x,checked:"tags"===this.state.searchType,onChange:e=>{e.target.checked&&this.setRadioFilter("tags")}}),(0,i.h)("label",{for:"tags",className:k},p)):null,s?(0,i.h)(i.Fragment,null,(0,i.h)("input",{type:"radio",name:"searchType",id:"placemarks",className:x,checked:"placemarks"===this.state.searchType,onChange:e=>{e.target.checked&&this.setRadioFilter("placemarks")}}),(0,i.h)("label",{for:"placemarks",className:k},v)):null),(()=>"tags"===this.state.searchType?(0,i.h)(d,Object.assign({},this.props,{floorToGroup:S,floorsByID:w,match:b,loading:t})):(0,i.h)(m,Object.assign({},this.props,{floorToGroup:S,floorsByID:w,match:b,loading:n})))())}}function d(e){const{currentFloorID:t,updateMap:n,tagOptions:r={},tags:l,loading:c,onTagClick:p,toggleAssetListOverlay:d,match:m,floorsByID:k,floorToGroup:x,language:O}=e,S=f.default.lookup("no_results_found",O),C=l.filter((e=>{const t=k[e.map_id][0];return!t||t.published})).filter((e=>m(e.name||"")||m(e.mac)||(0,h.getTagLabels)(e).some(m))).filter((e=>!0===r.showControlTags||!e.is_control_tag)).sort(((e,t)=>e.namet.name?1:0)),A=(0,o.default)(C,(e=>x[e.map_id])),E=Object.keys(A).sort();return E.forEach(((e,n)=>{if(A[e][0].map_id===t){const[e]=E.splice(n,1);E.unshift(e)}})),c?(0,i.h)("div",{className:w},(0,i.h)(a.default,null)):0===C.length?(0,i.h)("div",{className:w},S,"."):(0,i.h)("div",{className:v},E.map((e=>(0,i.h)("div",{key:e},(0,i.h)("div",{className:g},e),A[e].map((e=>(0,i.h)("button",{key:e.id,"data-testid":`meridian--private--overlay-tag-${e.id}`,className:y,onClick:()=>{n({floorID:e.map_id,tags:Object.assign(Object.assign({},r),{filter:()=>!0})}),p(e),d({open:!1})}},(0,i.h)("div",{className:_},(0,i.h)("div",{className:b},e.name||e.mac),(0,i.h)(s.default,{align:"right",labels:(0,h.getTagLabels)(e),fontSize:u.theme.fontSizeSmallest})))))))))}function m(e){const{currentFloorID:t,updateMap:n,placemarkOptions:r={},toggleAssetListOverlay:s,floorToGroup:l,match:c,placemarks:u,onPlacemarkClick:h,floorsByID:p,loading:d,language:m}=e,_=f.default.lookup("no_results_found",m),k=u.filter((e=>{const t=p[e.map][0];return!t||t.published})).filter((e=>e.is_searchable||null===e.is_searchable||void 0===e.is_searchable)).filter((e=>"exclusion_area"!==e.type&&(!0===r.showHiddenPlacemarks||!e.hide_on_map))).filter((e=>c(e.name||"")||c(e.type_name||""))).sort(((e,t)=>e.namet.name?1:0)),x=(0,o.default)(k,(e=>l[e.map])),O=Object.keys(x).sort();return O.forEach(((e,n)=>{if(x[e][0].map_id===t){const[e]=O.splice(n,1);O.unshift(e)}})),d?(0,i.h)("div",{className:w},(0,i.h)(a.default,null)):0===k.length?(0,i.h)("div",{className:w},_,"."):(0,i.h)("div",{className:v},O.map((e=>(0,i.h)("div",{key:e},(0,i.h)("div",{className:g},e),x[e].map((e=>(0,i.h)("button",{key:e.id,"data-testid":`meridian--private--overlay-tag-${e.id}`,className:y,onClick:()=>{n({floorID:e.map,placemarks:Object.assign(Object.assign({},r),{filter:()=>!0})}),h(e),s({open:!1})}},(0,i.h)("div",{className:b},e.name||e.type_name))))))))}const g=(0,u.css)({label:"overlay-building-name",top:0,position:"sticky",textTransform:"uppercase",fontWeight:"bold",color:u.theme.brandBlue,background:u.theme.almostWhite,fontSize:u.theme.fontSizeSmaller,padding:10}),v=(0,u.css)({label:"asset-list",overflowY:"auto",flex:"1 1 auto"}),y=(0,u.css)(u.mixins.buttonReset,u.mixins.focusRingMenuItem,u.mixins.buttonHoverActive,{label:"overlay-asset-button",minHeight:56,padding:10,paddingLeft:20,display:"block",width:"100%",textAlign:"left"}),_=(0,u.css)(u.mixins.flexRow,{label:"overlay-asset-button-inner",alignItems:"center"}),b=(0,u.css)({label:"overlay-asset-button-name",flex:"1 1 auto"}),w=(0,u.css)({label:"overlay-asset-list-empty",padding:"60px 20px",textAlign:"center",fontSize:u.theme.fontSizeBigger,color:u.theme.textColorBluish}),k=(0,u.css)({label:"overlay-radio-label",color:"white",padding:"2px 10px 0px 4px"}),x=(0,u.css)({label:"overlay-radio-button",WebkitAppearance:"none",position:"relative",boxSizing:"border-box",border:"1px solid rgb(224,224,225)",width:16,height:16,background:"white",borderRadius:9999,cursor:"pointer",boxShadow:"inset 0 2px 2px rgba(0, 0, 0, 0.1)","&:focus":{outline:"none",borderColor:u.theme.searchBarColor,borderWidth:2},"&:checked":{"--circle-color":u.theme.searchBarColor,"--circle-gap":"4px"},"&:checked::after":{content:'" "',position:"absolute",width:"calc(100% - var(--circle-gap))",height:"calc(100% - var(--circle-gap))",left:"calc(var(--circle-gap) / 2)",top:"calc(var(--circle-gap) / 2)",background:"var(--circle-color)",borderRadius:9999},"&:checked:focus":{"--circle-gap":"4px","--circle-color":u.theme.searchBarColor,borderColor:u.theme.searchBarColor,borderWidth:2}}),O=e=>(0,u.css)({label:"overlay-radio-container",display:e?"flex":"none",flexDirection:"row",justifyContent:"baseline",paddingLeft:10,paddingBottom:10,backgroundColor:"rgb(105, 146, 176)",alignItems:"center"});t.default=p},324:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=n(172),i=r(n(9594)),a=r(n(8828)),s=n(2785),l=n(7746),c=n(4221),u=(0,s.css)({label:"overlay-image",width:"100%",backgroundColor:"white",backgroundPosition:"center",backgroundRepeat:"no-repeat",backgroundSize:"cover"}),f=(0,s.css)({label:"overlay-name",fontSize:22}),h=(0,s.css)({label:"overlay-content",padding:"0 20px 15px 20px",overflow:"auto"}),p=(0,s.css)({label:"overlay-tag-data",fontSize:14}),d=(0,s.css)({label:"overlay-placemark-data",fontSize:14});t.default=({kind:e,item:t,toggleDetailsOverlay:n})=>{const r="placemark"===e&&t.image_url?{backgroundImage:`url('${t.image_url}')`,backgroundSize:"contain",height:300,minHeight:220}:"placemark"===e?{backgroundSize:"contain",backgroundImage:`url('${(0,c.placemarkIconURL)(t.type)}')`,backgroundColor:`#${t.color}`,height:300,minHeight:220}:"tag"===e&&t.image_url?{backgroundImage:`url('${t.image_url}')`,height:300}:{background:s.theme.brandBrightBlue,height:300};return(0,o.h)(a.default,{position:"left",onCloseClicked:()=>{n({open:!1})}},(0,o.h)("div",{className:u,style:r}),(0,o.h)("div",{className:(0,s.cx)("meridian-overlay-content",h)},(0,o.h)("p",{className:(0,s.cx)("meridian-overlay-item-name",f)},t.name||t.type_name),"tag"===e?(0,o.h)("div",{className:(0,s.cx)("meridian-overlay-tag-data",p)},(0,o.h)(i.default,{align:"left",labels:(0,l.getTagLabels)(t),fontSize:s.theme.fontSize}),(0,o.h)("p",null,"MAC: ",t.mac)):(0,o.h)("div",{className:(0,s.cx)("meridian-overlay-placemark-description",d),dangerouslySetInnerHTML:function(){if("placemark"===e&&t.description)return{__html:t.description}}()})))}},8812:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=n(172),i=r(n(4145)),a=n(2785),s=(0,a.css)(a.mixins.rounded,{label:"error",position:"absolute",zIndex:4,top:"35%",left:0,right:0,margin:"0 auto",minWidth:300,maxWidth:420,border:"1px solid #dfe1ef",paddingTop:15,paddingRight:20,paddingBottom:15,paddingLeft:25,background:a.theme.white,boxShadow:"0 0 1px rgba(0, 0, 0, 0.15), inset 4px 0 0 #d82e1f"}),l=(0,a.css)(a.mixins.buttonReset,{label:"close",cursor:"pointer",float:"right",width:38,height:38,marginLeft:15,padding:4,fill:"#c3c5c8","&:hover":{fill:a.theme.textColorBluish,cursor:"pointer"},"&:focus":{outline:0}});t.default=({toggleErrorOverlay:e,messages:t=["Unknown"]})=>(0,o.h)("div",{className:s},(0,o.h)("button",{className:l,onClick:()=>{e({open:!1})}},(0,o.h)(i.default,null)),(0,o.h)("p",null,"Sorry, something went wrong. It might be related to:"),(0,o.h)("ul",null,t.map(((e,t)=>(0,o.h)("li",{key:t},e)))))},3169:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(172),o=n(2785),i=(0,o.css)({label:"floor-and-tag-controls",display:"flex",flexDirection:"column",position:"absolute",zIndex:1,right:15,top:15}),a=(0,o.css)(o.mixins.buttonReset,o.mixins.shadow,o.mixins.rounded,o.mixins.buttonHoverActive,o.mixins.focusRing,{label:"control",cursor:"pointer",background:"white",padding:4,width:40,height:40,border:0,fontSize:20,fontWeight:200,fill:o.theme.brandBrightBlue}),s=(0,o.css)(a,{marginTop:10});t.default=({toggleFloorOverlay:e,toggleAssetListOverlay:t,showFloors:n,showSearch:l})=>(0,r.h)("div",{className:i},l?(0,r.h)("button",{className:(0,o.cx)("meridian-tag-control",a),"data-testid":"meridian--private--tag-control",onClick:()=>{t({open:!0})}},(0,r.h)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 36 36"},(0,r.h)("path",{d:"M26.19 25l-4.12-4.12a7.29 7.29 0 001.44-4.35 7.11 7.11 0 00-7-7.2 7.11 7.11 0 00-7 7.2 7.11 7.11 0 007 7.2 6.83 6.83 0 004.16-1.42l4.1 4.1A1 1 0 0026.19 25zm-14.68-8.49a5.11 5.11 0 015-5.2 5.11 5.11 0 015 5.2 5.11 5.11 0 01-5 5.2 5.11 5.11 0 01-5-5.2z"}))):null,n?(0,r.h)("button",{className:(0,o.cx)("meridian-floor-control",n&&l?s:a),"data-testid":"meridian--private--floor-control",onClick:()=>{e({open:!0})}},(0,r.h)("svg",{viewBox:"0 0 36 36"},(0,r.h)("path",{d:"M28.4 14.09a1.84 1.84 0 0 0-.62-.39l-8.48-3.33a3.61 3.61 0 0 0-1.3-.22 3.56 3.56 0 0 0-1.3.22L8.22 13.7a1.83 1.83 0 0 0-.62.39 1.24 1.24 0 0 0 0 1.82 1.85 1.85 0 0 0 .62.39l8.48 3.34a3.92 3.92 0 0 0 2.59 0l8.48-3.34a1.86 1.86 0 0 0 .62-.39 1.24 1.24 0 0 0 0-1.82m-9.83 3.68a2 2 0 0 1-1.13 0l-7-2.77 7-2.77a2 2 0 0 1 1.13 0l7 2.77zm9.83 2.32a1.24 1.24 0 0 1 0 1.82 1.86 1.86 0 0 1-.62.39l-8.47 3.33a3.92 3.92 0 0 1-2.59 0L8.22 22.3a1.85 1.85 0 0 1-.62-.39 1.24 1.24 0 0 1 0-1.82 1.83 1.83 0 0 1 .62-.39L10 19l2.73 1.08-2.34.92 7 2.77a2 2 0 0 0 1.13 0l7-2.77-2.35-.92L26 19l1.79.7a1.84 1.84 0 0 1 .62.39"}))):null)},6670:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(172),o=n(2785),i=n(7746),a=(0,o.css)(o.mixins.buttonReset,o.mixins.rounded,o.mixins.overflowEllipses,{label:"floor-control",background:"rgba(0, 0, 0, 0.4)",color:"white",textShadow:"0 0 2px black",position:"absolute",zIndex:1,bottom:15,left:"50%",transform:"translate(-50%, 0)",textAlign:"center",maxWidth:300,padding:"8px 16px",border:0,fontSize:16});t.default=({buildingName:e,floorName:t})=>(0,r.h)("div",{className:(0,o.cx)("meridian-floor-label",a),"data-testid":"meridian--private--floor-label"},e||i.uiText.unnamedBuilding," ",i.uiText.enDash," ",t)},4144:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(1324)),i=n(172),a=r(n(8828)),s=r(n(6933)),l=n(2785),c=r(n(7866)),u=n(7746);class f extends i.Component{constructor(){super(...arguments),this.state={searchFilter:""},this.searchInputRef=(0,i.createRef)()}componentDidMount(){this.searchInputRef.current&&this.searchInputRef.current.focus()}render(){const{currentFloorID:e,toggleFloorOverlay:t,selectFloorByID:n,floors:r,language:f}=this.props,y=c.default.lookup("search_floors",f),_=c.default.lookup("no_results_found",f),{searchFilter:b}=this.state,w=(0,u.createSearchMatcher)(b),k=r.filter((e=>e.published&&(w(e.name||"")||w(e.group_name||u.uiText.unnamedBuilding)))),x=(0,o.default)(k,"group_name"),O=Object.keys(x).sort();""===O[0]&&(O.push(O[0]),O.shift());for(const e of O)x[e].sort(((e,t)=>Math.sign(e.level-t.level))),this.props.sortDescending&&x[e].reverse();return(0,i.h)(a.default,{position:"right",onCloseClicked:()=>{t({open:!1})}},(0,i.h)(s.default,{placeholder:y,value:b,onChange:e=>{this.setState({searchFilter:e})}}),0===O.length?(0,i.h)("div",{className:m},_,"."):(0,i.h)("div",{className:p,"data-testid":"meridian--private--floors-list"},O.map((r=>(0,i.h)("div",{key:r},(0,i.h)("div",{className:h},r||u.uiText.unnamedBuilding),x[r].map((r=>(0,i.h)("button",{key:r.name,onClick:()=>{n(r.id),t({open:!1})},className:(0,l.cx)(d,r.id===e?g:void 0),"data-testid":r.id===e?"meridian--private--current-floor":"meridian--private--floor"},r.name,r.id===e?(0,i.h)("svg",{viewBox:"0 0 10 7",className:v},(0,i.h)("path",{d:"M3.9 7C3.7 7 3.4 6.9 3.2 6.7L0.3 3.8C-0.1 3.4 -0.1 2.8 0.3 2.4C0.7 2 1.3 2 1.7 2.4L3.9 4.6L8.2 0.3C8.6 -0.1 9.2 -0.1 9.6 0.3C10 0.7 10 1.3 9.6 1.7L4.6 6.7C4.4 6.9 4.2 7 3.9 7Z"})):null))))))))}}const h=(0,l.css)({label:"overlay-building-name",textTransform:"uppercase",fontWeight:"bold",top:0,position:"sticky",color:l.theme.brandBlue,background:l.theme.almostWhite,fontSize:l.theme.fontSizeSmaller,padding:10}),p=(0,l.css)({label:"floors-list",overflowY:"auto"}),d=(0,l.css)(l.mixins.buttonReset,l.mixins.focusRingMenuItem,l.mixins.buttonHoverActive,{label:"overlay-floor-button",padding:10,paddingLeft:20,display:"block",width:"100%",textAlign:"left"}),m=(0,l.css)({label:"overlay-floor-list-empty",padding:"60px 20px",textAlign:"center",fontSize:l.theme.fontSizeBigger,color:l.theme.textColorBluish}),g=(0,l.css)({label:"overlay-floor-button-curent-floor",color:l.theme.brandBrightBlue,fill:"currentcolor"}),v=(0,l.css)({label:"floor-checkmark",verticalAlign:"middle",marginLeft:"0.5em",width:"0.8em",height:"0.8em"});t.default=f},4145:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(172);t.default=()=>(0,r.h)("svg",{viewBox:"0 0 36 36"},(0,r.h)("path",{d:"M19.41 18l6.36-6.36a1 1 0 0 0-1.41-1.41L18 16.59l-6.36-6.36a1 1 0 0 0-1.41 1.41L16.59 18l-6.36 6.36a1 1 0 1 0 1.41 1.41L18 19.41l6.36 6.36a1 1 0 0 0 1.41-1.41z"}))},2930:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(172),o=n(2785),i=(0,o.keyframes)({from:{transform:"rotate(0turn)"},to:{transform:"rotate(1turn)"}}),a=(0,o.css)({label:"spinner",width:22,height:22,margin:"0 auto",border:"2px rgba(227, 227, 227, 0.9) solid",borderTop:"2px #2e7cbe solid",borderRadius:"50%",animation:`${i} 600ms infinite linear`});t.default=()=>(0,r.h)("div",{className:a})},9594:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(172),o=n(2785),i=(0,o.css)({label:"label-list",fontSize:"var(--meridian-labelList-fontSize)",marginTop:8,marginLeft:3,textAlign:"var(--meridian-labelList-textAlign)",flex:"1 1 auto"}),a=(0,o.css)(o.mixins.maxRounded,{label:"label",display:"inline-block",padding:"3px 8px",marginBottom:8,marginRight:8,background:"rgba(0, 0, 0, 0.035)",border:"1px solid rgba(0, 0, 0, 0.05)",color:"#3b3b3b"});t.default=({align:e,labels:t,fontSize:n=o.theme.fontSize})=>0===t.length?null:(0,r.h)("div",{className:i,style:{"--meridian-labelList-fontSize":n,"--meridian-labelList-textAlign":e}},t.map(((e,t)=>(0,r.h)("div",{key:t,className:a},e))))},4905:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=n(172),i=n(2785),a=r(n(2930)),s=(0,i.css)({label:"loading",position:"absolute",zIndex:1,width:30,left:0,top:"45%",right:0,overflow:"hidden",margin:"0 auto",color:i.theme.textColor,textAlign:"center",pointerEvents:"none"});t.default=()=>(0,o.h)("div",{className:s},(0,o.h)(a.default,null))},529:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=n(9062);n(7662);const i=n(9529),a=n(172),s=r(n(78)),l=r(n(324)),c=r(n(8812)),u=r(n(3169)),f=r(n(6670)),h=r(n(4144)),p=r(n(4905)),d=r(n(6805)),m=r(n(7387)),g=n(2785),v=r(n(8901)),y=r(n(2150)),_=n(7746),b=r(n(1018)),w=r(n(5481)),k=r(n(181));class x extends a.Component{constructor(){super(...arguments),this.state={mapImageURL:void 0,isFloorOverlayOpen:!1,isAssetListOverlayOpen:!1,isMapMarkerOverlayOpen:!1,isErrorOverlayOpen:!1,isPanningOrZooming:!1,loadingSources:{},errors:[],mapTransform:"",mapZoomFactor:.5,floors:[],allPlacemarkData:[],svgURL:void 0,tagsConnection:void 0,tagsStatus:"Connecting",selectedItem:void 0,areTagsLoading:Boolean(this.props.showSearchControl&&this.props.loadTags),arePlacemarksLoading:Boolean(this.props.showSearchControl&&this.props.loadPlacemarks),allTagData:[]},this.isMounted=!1,this.isLoaded=!1,this.fetchAllTagsInitialized=!1,this.fetchAllPlacemarksInitialized=!1,this.mapRef=(0,a.createRef)(),this.mapContainerRef=(0,a.createRef)(),this.mapImageref=(0,a.createRef)(),this.debouncedResizeFn=(0,k.default)(this.handleResize.bind(this),250),this.onTagsInit=()=>{this.props.showSearchControl&&this.props.loadTags&&this.fetchAllTags()},this.onPlacemarksInit=()=>{this.props.showSearchControl&&this.props.loadPlacemarks&&this.fetchAllPlacemarks()},this.updateMap=e=>{const{update:t}=this.props;t(e)},this.toggleAssetListOverlay=({open:e})=>{this.isMounted&&this.setState({isAssetListOverlayOpen:e})},this.toggleFloorOverlay=({open:e})=>{this.isMounted&&this.setState({isFloorOverlayOpen:e})},this.toggleErrorOverlay=({open:e,message:t="Unknown"})=>{this.isMounted&&(e?this.setState((e=>({errors:[...e.errors,t],isErrorOverlayOpen:!0}))):this.setState({isErrorOverlayOpen:!1,errors:[]}))},this.toggleLoadingSpinner=({show:e,source:t="unknown"})=>{this.isMounted&&this.setState((n=>({loadingSources:Object.assign(Object.assign({},n.loadingSources),{[t]:e})})))},this.toggleDetailsOverlay=({open:e,selectedItem:t})=>{this.setState({isMapMarkerOverlayOpen:e,selectedItem:t})},this.selectFloorByID=e=>{if(this.updateMap({floorID:e,annotations:[],overlays:[]}),this.props.onFloorChange){const t=this.state.floors.find((t=>t.id===e));t&&(0,_.asyncClientCall)(this.props.onFloorChange,t)}},this.zoomToPoint=(e,t,n)=>{if(!this.mapSelection)throw new Error("mapSelection is not defined");if(!this.zoomD3)throw new Error("zoomD3 is not defined");const{width:r,height:o}=this.getMapRefSize(),a=i.zoomIdentity.translate(-n*e+r/2,-n*t+o/2).scale(n);this.mapSelection.transition().duration(250).call(this.zoomD3.transform,a)},this.zoomBy=e=>{if(!this.mapSelection)throw new Error("mapSelection is not defined");if(!this.zoomD3)throw new Error("zoomD3 is not defined");this.mapSelection.transition().duration(250).call(this.zoomD3.scaleBy,e)},this.zoomIn=()=>{this.zoomBy(1.5)},this.zoomOut=()=>{this.zoomBy(.5)},this.onClick=e=>{var t,n,r;const o=e.target instanceof Element&&((null===(n=null===(t=this.mapRef.current)||void 0===t?void 0:t.isEqualNode)||void 0===n?void 0:n.call(t,e.target))||(null===(r=this.mapImageref.current)||void 0===r?void 0:r.isEqualNode(e.target)));this.props.onMapClick&&o?(0,_.asyncClientCall)(this.props.onMapClick):o&&this.toggleDetailsOverlay({open:!1})},this.onTagClick=async e=>{let t=!0;const{onTagClick:n=(()=>{})}=this.props;try{const r={preventDefault:()=>{t=!1}};await n(e,r)}catch(e){(0,_.logError)(e)}t&&this.toggleDetailsOverlay({open:!0,selectedItem:e})},this.onPlacemarkClick=async e=>{let t=!0;const{onPlacemarkClick:n=(()=>{})}=this.props;try{const r={preventDefault:()=>{t=!1}};await n(e,r)}catch(e){(0,_.logError)(e)}t&&this.toggleDetailsOverlay({open:!0,selectedItem:e})}}componentDidMount(){this.validateFloorID(),this.isMounted=!0;const{api:e,locationID:t}=this.props;(0,_.isEnvOptions)(e.environment)?t?this.loadData():this.toggleErrorOverlay({open:!0,message:'createMap error: "options.locationID" is required'}):this.toggleErrorOverlay({open:!0,message:`API error: "${e.environment}" is not a valid environment`}),this.intervalAutoDestroy=setInterval((()=>{this.isMounted&&this.mapContainerRef.current&&!this.mapContainerRef.current.isConnected&&this.props.destroy()}),1e3),window.addEventListener("resize",this.debouncedResizeFn)}async loadData(){await this.initializeFloors()}componentDidUpdate(e){if(this.props.locationID!==e.locationID)return this.toggleAssetListOverlay({open:!1}),this.toggleErrorOverlay({open:!1}),this.toggleDetailsOverlay({open:!1}),this.toggleFloorOverlay({open:!1}),this.zoomToDefault(),this.freeMapImageURL(),this.setState({mapImageURL:void 0,allPlacemarkData:[]}),void this.loadData();this.props.loadTags&&this.props.showSearchControl&&!e.showSearchControl&&this.fetchAllTags({forceUpdate:!0}),e.floorID!==this.props.floorID?(this.zoomToDefault(),this.validateFloorID(),this.freeMapImageURL(),this.setState({mapImageURL:void 0}),this.fetchMapImageURL()):this.props.loadPlacemarks&&this.props.showSearchControl&&!e.showSearchControl&&this.fetchAllPlacemarks({forceUpdate:!0})}componentWillUnmount(){this.isMounted=!1,this.fetchAllTagsTimeout&&clearTimeout(this.fetchAllTagsTimeout),this.fetchAllPlacemarksTimeout&&clearTimeout(this.fetchAllPlacemarksTimeout),this.freeMapImageURL(),clearInterval(this.intervalAutoDestroy),window.removeEventListener("resize",this.debouncedResizeFn)}handleResize(){const e=this.mapContainerSize,t=this.getMapRefSize(),{width:n,height:r}=e||{},{width:o,height:i}=t;n===o&&r===i||(this.mapContainerSize=t,this.zoomToDefault())}freeMapImageURL(){this.state.mapImageURL&&URL.revokeObjectURL(this.state.mapImageURL)}async fetchMapImageURL(){const{api:e,locationID:t,floorID:n}=this.props,r=this.getMapData();if(!r)return;const o=await e.fetchSVG(r.svg_url);this.isMounted&&(n===this.props.floorID&&t===this.props.locationID?this.setState({mapImageURL:o}):URL.revokeObjectURL(o))}validateFloorID(){const{floorID:e}=this.props;e||this.toggleErrorOverlay({open:!0,message:'createMap error: "options.floorID" is required'})}fetchAllTags(e={forceUpdate:!1}){if(this.fetchAllTagsInitialized&&!e.forceUpdate)return;const t=async()=>{this.fetchAllTagsInitialized=!0;try{this.fetchAllTagsTimeout&&clearTimeout(this.fetchAllTagsTimeout);const{api:e,locationID:n}=this.props;this.setState({areTagsLoading:!0});let r=[];try{r=await e.fetchTagsByLocation(n)}catch(e){return void(0,_.logError)("Failed to load tags; use `loadTags: false` if this location does not have the tags paid feature")}if(!this.isMounted)return;if(n!==this.props.locationID||!this.props.loadTags)return;this.setState({allTagData:r}),this.fetchAllTagsTimeout=setTimeout(t,3e5)}finally{this.setState({areTagsLoading:!1})}};this.props.loadTags&&t()}showLoadingSpinner(){const{loadingSources:e}=this.state,t=Object.keys(e).some((t=>!0===e[t]));return this.props.onLoadingStateChange&&this.isLoaded!==t&&(this.isLoaded=t,(0,_.asyncClientCall)(this.props.onLoadingStateChange,t)),t}fetchAllPlacemarks(e={forceUpdate:!1}){if(this.fetchAllPlacemarksInitialized&&!e.forceUpdate)return;const t=async()=>{this.fetchAllPlacemarksInitialized=!0;try{this.fetchAllPlacemarksTimeout&&clearTimeout(this.fetchAllPlacemarksTimeout);const{locationID:e,api:n}=this.props;let r=[];this.setState({arePlacemarksLoading:!0});try{if(this.props.loadPlacemarks&&(r=await n.fetchPlacemarksByLocation(e)),!this.isMounted)return;this.setState({allPlacemarkData:r})}catch(e){return void(0,_.logError)("Failed to load placemark data")}this.fetchAllPlacemarksTimeout=setTimeout(t,6e5)}finally{this.setState({arePlacemarksLoading:!1})}};this.props.loadPlacemarks&&t()}async getFloors(){const{locationID:e,api:t}=this.props;let n;try{if(n=await t.fetchFloorsByLocation(e),!this.isMounted)return[]}catch(e){e.response&&e.response.data&&e.response.data.detail&&this.toggleErrorOverlay({open:!0,message:e.response.data.detail})}return n&&n.length||this.toggleErrorOverlay({open:!0,message:"Floor data could not be found."}),n}getMapData(){const{floorID:e}=this.props,{floors:t}=this.state;return t.find((t=>t.id===e))}async initializeFloors(){this.toggleLoadingSpinner({show:!0,source:"map"});const{onFloorsUpdate:e=(()=>{}),locationID:t}=this.props,n=await this.getFloors();this.isMounted&&t===this.props.locationID&&(n&&n.length>0&&this.setState({floors:n},(()=>{this.zoomD3||this.addZoomBehavior(),this.zoomToDefault(),(0,_.asyncClientCall)(e,n),this.fetchMapImageURL()})),this.toggleLoadingSpinner({show:!1,source:"map"}))}addZoomBehavior(){if(this.mapRef.current){const e=()=>{if(!this.mapRef.current)return;const{k:e,x:t,y:n}=(0,i.zoomTransform)(this.mapRef.current),r=`translate(${t}px, ${n}px) scale(${e})`;this.setState({mapTransform:r,mapZoomFactor:e,isPanningOrZooming:!0})},t=()=>{this.setState({isPanningOrZooming:!1})};this.zoomD3=(0,i.zoom)().filter((e=>!this.props.shouldMapPanZoom||this.props.shouldMapPanZoom(e))).duration(250).on("zoom",e).on("end.zoom",t),this.mapSelection=(0,o.select)(this.mapRef.current),this.mapSelection.call(this.zoomD3)}}resetExtents(){var e;null===(e=this.zoomD3)||void 0===e||e.scaleExtent([0,1/0]).translateExtent([[-1/0,-1/0],[1/0,1/0]])}setExtents(e,t){var n;const r=this.props.minZoomLevel,o=this.props.maxZoomLevel;if(this.mapRef.current){const{k:a}=(0,i.zoomTransform)(this.mapRef.current),s=this.getMapRefSize(),l=s.width/a/1.5,c=s.height/a/1.5,u=r&&"number"==typeof r?r:a,f=o&&"number"==typeof o?o:8;null===(n=this.zoomD3)||void 0===n||n.scaleExtent([u,f]).translateExtent([[-l,-c],[e+l,t+c]])}}zoomToDefault(){const e=this.getMapData(),t=this.getMapRefSize(),n=null==e?void 0:e.width,r=null==e?void 0:e.height;this.mapContainerSize=t,n&&r&&this.mapSelection&&this.zoomD3&&(this.resetExtents(),this.mapSelection.call(this.zoomD3.translateTo,n/2,r/2),this.mapSelection.call(this.zoomD3.scaleTo,Math.min(.7*t.width/n,.7*t.height/r)),this.setExtents(n,r))}getMapRefSize(){if(!this.mapRef.current)throw new Error("mapRef is not defined");return{width:this.mapRef.current.clientWidth,height:this.mapRef.current.clientHeight}}centerMap(){const e=this.getMapData(),t=null==e?void 0:e.width,n=null==e?void 0:e.height;t&&n&&this.mapSelection&&this.zoomD3&&this.mapSelection.call(this.zoomD3.translateTo,t/2,n/2)}shouldShowFloors(){const{showFloorsControl:e=!0}=this.props,{floors:t}=this.state;return e&&t.length>1}renderFloorLabel(){const e=this.getMapData();return e?(0,a.h)(f.default,{buildingName:e.group_name,floorName:e.name}):null}renderFloorOverlay(){const{floorID:e,api:t}=this.props,{isFloorOverlayOpen:n,floors:r}=this.state;return n?(0,a.h)(h.default,{currentFloorID:e,floors:r,sortDescending:Boolean(this.props.floorsControlSortDescending),toggleFloorOverlay:this.toggleFloorOverlay,selectFloorByID:this.selectFloorByID,language:t.language}):null}renderAssetListOverlay(){var e;const{floorID:t,loadTags:n,loadPlacemarks:r,tags:o,placemarks:i,api:s}=this.props,{isAssetListOverlayOpen:l,floors:c,allTagData:u,areTagsLoading:f,arePlacemarksLoading:h,allPlacemarkData:p}=this.state;return l&&Boolean(r||n)?(0,a.h)(y.default,{onTagClick:this.onTagClick,onPlacemarkClick:this.onPlacemarkClick,showControlTags:Boolean(null!==(e=null==o?void 0:o.showControlTags)&&void 0!==e&&e),floors:c,tagsLoading:f,placemarksLoading:h,tags:u,tagOptions:o,placemarkOptions:i,updateMap:this.updateMap,currentFloorID:t,toggleAssetListOverlay:this.toggleAssetListOverlay,showTags:Boolean(n),showPlacemarks:Boolean(r),placemarks:p,language:s.language}):null}renderDetailsOverlay(){const{isMapMarkerOverlayOpen:e,selectedItem:t}=this.state;return e&&t?(0,a.h)(l.default,{toggleDetailsOverlay:this.toggleDetailsOverlay,kind:"mac"in t?"tag":"placemark",item:t}):null}renderLoadingSpinner(){return this.showLoadingSpinner()?(0,a.h)(p.default,null):null}renderErrorOverlay(){return this.state.isErrorOverlayOpen?(0,a.h)(c.default,{toggleErrorOverlay:this.toggleErrorOverlay,messages:this.state.errors}):null}render(){const e=this.getMapData(),{mapImageURL:t,selectedItem:n,mapTransform:r,mapZoomFactor:o,isPanningOrZooming:i,errors:l}=this.state,{locationID:c,floorID:f,api:h,tags:p,placemarks:y,overlays:_=[],annotations:k=[],width:x="",height:C="",onTagsUpdate:A,onPlacemarksUpdate:E,showSearchControl:T,loadPlacemarks:P,loadTags:D}=this.props;return(0,a.h)("div",{className:(0,g.cx)("meridian-map-container",O),style:{width:x,height:C},"data-testid":"meridian--private--map-container",ref:e=>{this.mapContainerRef.current=e}},(0,a.h)(b.default,null),(0,a.h)(w.default,{onZoomIn:this.zoomIn,onZoomOut:this.zoomOut}),this.renderErrorOverlay(),this.renderDetailsOverlay(),this.renderFloorOverlay(),this.renderAssetListOverlay(),this.renderLoadingSpinner(),(0,a.h)(u.default,{showFloors:this.shouldShowFloors(),showSearch:Boolean(T&&(P||D)),toggleFloorOverlay:this.toggleFloorOverlay,toggleAssetListOverlay:this.toggleAssetListOverlay}),this.renderFloorLabel(),(0,a.h)("div",{ref:e=>{this.mapRef.current=e},className:(0,g.cx)("meridian-map-background",S),onClick:this.onClick,style:{width:x,height:C}},(0,a.h)("div",{style:{position:"relative",width:0,height:0,transform:r,transformOrigin:"0 0 0"}},(0,a.h)("img",{src:t,ref:this.mapImageref}),0===l.length&&e?(0,a.h)(a.Fragment,null,(0,a.h)(d.default,{mapZoomFactor:o,overlays:_}),this.props.loadPlacemarks?(0,a.h)(m.default,{selectedItem:n,isPanningOrZooming:i,mapZoomFactor:o,locationID:c,floorID:f,api:h,placemarkOptions:y,onPlacemarkClick:this.onPlacemarkClick,onUpdate:E,toggleLoadingSpinner:this.toggleLoadingSpinner,onInit:()=>{this.onPlacemarksInit()}}):null,this.props.loadTags?(0,a.h)(v.default,{selectedItem:n,isPanningOrZooming:i,mapZoomFactor:o,locationID:c,floorID:f,api:h,tagOptions:p,onTagClick:this.onTagClick,onUpdate:A,toggleLoadingSpinner:this.toggleLoadingSpinner,onInit:()=>{this.onTagsInit()}}):null,(0,a.h)(s.default,{mapZoomFactor:o,annotations:k})):null)))}}x.defaultProps={loadTags:!0,loadPlacemarks:!0,showSearchControl:!0,showFloorsControl:!0,floorsControlSortDescending:!1,shouldMapPanZoom:()=>!0,width:"100%",height:"400px",placemarks:{},tags:{},overlays:[],annotations:[],onTagsUpdate:()=>{},onFloorChange:()=>{},onLoadingStateChange:()=>{},onFloorsUpdate:()=>{}};const O=(0,g.css)({label:"map-container",display:"block",position:"relative",borderRadius:"inherit",background:"#fafafa",color:"#000",fontFamily:"inherit",textAlign:"left"}),S=(0,g.css)({label:"map-outer",borderRadius:"inherit",display:"block",overflow:"hidden"});t.default=x},8828:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=n(172),i=r(n(4145)),a=n(2785),s=(0,a.css)(a.mixins.shadow,a.mixins.rounded,{label:"details-overlay",overflow:"hidden",display:"flex",flexDirection:"column",background:a.theme.white,color:a.theme.textColor,fill:"#000",position:"absolute",margin:0,left:15,top:15,right:15,maxHeight:600,zIndex:2,maxWidth:400}),l=(0,a.css)(s,{marginRight:"auto"}),c=(0,a.css)(s,{marginLeft:"auto"}),u=(0,a.css)(a.mixins.buttonReset,a.mixins.buttonHoverActive,a.mixins.focusRing,{label:"details-overlay-close",cursor:"pointer",position:"absolute",zIndex:2,top:10,right:10,padding:4,width:32,height:32,fontSize:11,textAlign:"center",background:a.theme.white,color:a.theme.textColor,borderRadius:"100%",fontWeight:"bold",boxShadow:"0 0 2px rgba(0, 0, 0, 0.4)"});t.default=({position:e,onCloseClicked:t,children:n})=>(0,o.h)("div",{className:(0,a.cx)("meridian-details-overlay","left"===e?l:c),"data-testid":"meridian--private--map-overlay"},(0,o.h)("button",{className:u,onClick:t,"data-testid":"meridian--private--close-overlay"},(0,o.h)(i.default,null)),n)},7096:function(e,t,n){"use strict";var r=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o{var{defs:t=!1,id:n,className:a,style:s={},cx:l,cy:c,r:u,pathLength:f,fill:h="black",fillOpacity:p="1",stroke:d="none",strokeWidth:m=4,strokeLineJoin:g,strokeLineCap:v,strokeDasharray:y,strokeDashoffset:_,strokeOpacity:b,animate:w={},animateMotion:k={},mpath:x,data:O={},onClick:S,mapZoomFactor:C}=e,A=r(e,["defs","id","className","style","cx","cy","r","pathLength","fill","fillOpacity","stroke","strokeWidth","strokeLineJoin","strokeLineCap","strokeDasharray","strokeDashoffset","strokeOpacity","animate","animateMotion","mpath","data","onClick","mapZoomFactor"]);const E=1/C;let T=null,P=null;const D=Object.assign({transform:`scale(${E})`},s);Object.keys(k).length&&(P=x?(0,o.h)("animateMotion",Object.assign({},k),(0,o.h)("mpath",{xlinkHref:`#${x}`})):(0,o.h)("animateMotion",Object.assign({},k))),Object.keys(w).length&&(T=(0,o.h)("animate",Object.assign({},w)));const j=(0,o.h)("circle",Object.assign({id:n,className:a,style:D,cx:l,cy:c,r:u,"path-length":f,fill:h,"fill-opacity":p,stroke:d,"stroke-width":m/C,"stroke-linejoin":g,"stroke-linecap":v,"stroke-dasharray":y,"stroke-dashoffset":_,"stroke-opacity":b,onClick:S?()=>(0,i.asyncClientCall)(S,O):void 0,cursor:S?"pointer":void 0,"pointer-events":S?"all":void 0},A),T,P);return t?(0,o.h)("defs",null,j):j};a.displayName="OverlayCircle",t.default=a},2865:function(e,t,n){"use strict";var r=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o{var{defs:t=!1,id:n,className:a,style:s={},width:l,height:c,href:u,x:f,y:h,animate:p={},animateMotion:d={},mpath:m,mapZoomFactor:g,onClick:v,data:y={}}=e,_=r(e,["defs","id","className","style","width","height","href","x","y","animate","animateMotion","mpath","mapZoomFactor","onClick","data"]);const b=1/g;let w=null,k=null;const x=Object.assign({transform:`translate(-${l/g/2}px, -${c/g/2}px) scale(${b})`},s);Object.keys(d).length&&(k=m?(0,o.h)("animateMotion",Object.assign({},d),(0,o.h)("mpath",{xlinkHref:`#${m}`})):(0,o.h)("animateMotion",Object.assign({},d))),Object.keys(p).length&&(w=(0,o.h)("animate",Object.assign({},p)));const O=(0,o.h)("image",Object.assign({id:n,className:a,style:x,width:l,height:c,href:u,x:f,y:h,onClick:v?()=>(0,i.asyncClientCall)(v,y):void 0,cursor:v?"pointer":void 0,"pointer-events":v?"all":void 0},_),w,k);return t?(0,o.h)("defs",null,O):O};a.displayName="OverlayImage",t.default=a},6805:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=n(172),i=r(n(7096)),a=r(n(2865)),s=r(n(2578)),l=r(n(3861)),c=r(n(3496)),u=r(n(4012)),f=r(n(9159)),h=(0,n(2785).css)({label:"overlay-layer",position:"absolute",overflow:"visible",top:0,left:0,right:0,bottom:0});t.default=({mapZoomFactor:e,overlays:t})=>(0,o.h)("svg",{className:h,"data-testid":"meridian--private--overlay-layer"},t.map(((t,n)=>{switch(t.type){case"polygon":return(0,o.h)(c.default,Object.assign({key:n},t,{mapZoomFactor:e}));case"polyline":return(0,o.h)(u.default,Object.assign({key:n},t,{mapZoomFactor:e}));case"path":return(0,o.h)(l.default,Object.assign({key:n},t,{mapZoomFactor:e}));case"circle":return(0,o.h)(i.default,Object.assign({key:n},t,{mapZoomFactor:e}));case"image":return(0,o.h)(a.default,Object.assign({key:n},t,{mapZoomFactor:e}));case"marker":return(0,o.h)(s.default,Object.assign({key:n},t,{mapZoomFactor:e}));case"use":return(0,o.h)(f.default,Object.assign({key:n},t,{mapZoomFactor:e}));default:return null}})))},2578:function(e,t,n){"use strict";var r=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o{var{defs:t=!0,id:n,className:i,style:a,viewBox:s,refX:l,refY:c,markerWidth:u,markerHeight:f,orient:h,fill:p="none",fillOpacity:d,stroke:m="hsl(207, 65%, 46%)",strokeWidth:g,strokeLineJoin:v,strokeLineCap:y,strokeDasharray:_,strokeDashoffset:b,strokeOpacity:w,shapeElementType:k,shapeElementAttributes:x,mapZoomFactor:O}=e,S=r(e,["defs","id","className","style","viewBox","refX","refY","markerWidth","markerHeight","orient","fill","fillOpacity","stroke","strokeWidth","strokeLineJoin","strokeLineCap","strokeDasharray","strokeDashoffset","strokeOpacity","shapeElementType","shapeElementAttributes","mapZoomFactor"]);let C=null;if(Object.keys(x).length&&k)switch(k){case"path":C=(0,o.h)("path",Object.assign({},x));break;case"polyline":C=(0,o.h)("polyline",Object.assign({},x));break;case"polygon":C=(0,o.h)("polygon",Object.assign({},x));break;case"circle":C=(0,o.h)("circle",Object.assign({},x));break;case"image":C=(0,o.h)("image",Object.assign({},x))}const A=(0,o.h)("marker",Object.assign({id:n,className:i,style:a,viewBox:s,refX:l,refY:c,markerWidth:u,markerHeight:f,orient:h,fill:p,"fill-opacity":d,stroke:m,"stroke-width":g,"stroke-linejoin":v,"stroke-linecap":y,"stroke-dasharray":_,"stroke-dashoffset":b,"stroke-opacity":w},S),C);return t?(0,o.h)("defs",null,A):A};i.displayName="OverlayMarker",t.default=i},3861:function(e,t,n){"use strict";var r=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o{var{defs:t=!1,id:n,className:i,style:a={},shape:s,fill:l="none",stroke:c="hsl(207, 65%, 46%)",strokeWidth:u=2,strokeLineJoin:f="miter",strokeLineCap:h="butt",strokeDasharray:p,strokeDashoffset:d,strokeOpacity:m,markerStart:g,markerMid:v,markerEnd:y,animate:_={},animateMotion:b={},mpath:w,mapZoomFactor:k}=e,x=r(e,["defs","id","className","style","shape","fill","stroke","strokeWidth","strokeLineJoin","strokeLineCap","strokeDasharray","strokeDashoffset","strokeOpacity","markerStart","markerMid","markerEnd","animate","animateMotion","mpath","mapZoomFactor"]);let O=null,S=null;Object.keys(b).length&&(S=w?(0,o.h)("animateMotion",Object.assign({},b),(0,o.h)("mpath",{xlinkHref:`#${w}`})):(0,o.h)("animateMotion",Object.assign({},b))),Object.keys(_).length&&(O=(0,o.h)("animate",Object.assign({},_)));const C=(0,o.h)("path",Object.assign({id:n,className:i,style:a,d:s,fill:l,stroke:c,"stroke-width":u/k,"stroke-linejoin":f,"stroke-linecap":h,"stroke-dasharray":p,"stroke-dashoffset":d,"stroke-opacity":m,"marker-start":g,"marker-mid":v,"marker-end":y},x),O,S);return t?(0,o.h)("defs",null,C):C};i.displayName="OverlayPath",t.default=i},3496:function(e,t,n){"use strict";var r=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o{var{defs:t=!1,id:n,className:a,style:s,points:l,fill:c="hsla(207, 65%, 46%, 0.5)",fillOpacity:u,stroke:f="hsl(207, 65%, 46%)",strokeWidth:h=2,strokeLineJoin:p="miter",strokeDasharray:d,strokeDashoffset:m,strokeOpacity:g,markerStart:v,markerMid:y,markerEnd:_,mapZoomFactor:b,animate:w={},data:k={},onClick:x}=e,O=r(e,["defs","id","className","style","points","fill","fillOpacity","stroke","strokeWidth","strokeLineJoin","strokeDasharray","strokeDashoffset","strokeOpacity","markerStart","markerMid","markerEnd","mapZoomFactor","animate","data","onClick"]);let S=null;Object.keys(w).length&&(S=(0,o.h)("animate",Object.assign({},w)));const C=(0,o.h)("polygon",Object.assign({id:n,className:a,style:s,points:l.join(" "),fill:c,"fill-opacity":u,stroke:f,"stroke-width":h/b,"stroke-linejoin":p,"stroke-dasharray":d,"stroke-dashoffset":m,"stroke-opacity":g,"marker-start":v,"marker-mid":y,"marker-end":_,onClick:x?()=>(0,i.asyncClientCall)(x,k):void 0,cursor:x?"pointer":void 0,"pointer-events":x?"all":void 0},O),S);return t?(0,o.h)("defs",null,C):C};a.displayName="OverlayPolygon",t.default=a},4012:function(e,t,n){"use strict";var r=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o{var{defs:t=!1,id:n,className:i,style:a,points:s,fill:l="none",fillOpacity:c,stroke:u="hsl(207, 65%, 46%)",strokeWidth:f=2,strokeLineJoin:h="miter",strokeLineCap:p="butt",strokeDasharray:d,strokeDashoffset:m,strokeOpacity:g,markerStart:v,markerMid:y,markerEnd:_,animate:b={},mapZoomFactor:w}=e,k=r(e,["defs","id","className","style","points","fill","fillOpacity","stroke","strokeWidth","strokeLineJoin","strokeLineCap","strokeDasharray","strokeDashoffset","strokeOpacity","markerStart","markerMid","markerEnd","animate","mapZoomFactor"]);let x=null;Object.keys(b).length&&(x=(0,o.h)("animate",Object.assign({},b)));const O=(0,o.h)("polyline",Object.assign({id:n,className:i,style:a,points:s.join(" "),fill:l,"fill-opacity":c,stroke:u,"stroke-width":f/w,"stroke-linejoin":h,"stroke-linecap":p,"stroke-dasharray":d,"stroke-dashoffset":m,"stroke-opacity":g,"marker-start":v,"marker-mid":y,"marker-end":_},k),x);return t?(0,o.h)("defs",null,O):O};i.displayName="OverlayPolyline",t.default=i},6933:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(172),o=n(2785);class i extends r.Component{constructor(){super(...arguments),this.input=null}componentDidMount(){this.input&&this.input.focus()}render(){const{value:e,onChange:t,placeholder:n}=this.props;return(0,r.h)("div",{className:l},(0,r.h)("svg",{viewBox:"0 0 15 15",className:s},(0,r.h)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M13.2454 12.5741L9.55123 8.73956C10.2134 7.80246 10.5682 6.66953 10.5632 5.50756C10.5506 2.47441 8.18614 0.0175744 5.26286 5.57178e-05C3.8639 -0.00651157 2.52051 0.567712 1.53197 1.59481C0.543427 2.6219 -0.0081584 4.01655 9.12228e-05 5.46806C0.0127262 8.50148 2.37737 10.9585 5.30093 10.9761C6.42539 10.9811 7.52128 10.6088 8.42505 9.91456L8.4289 9.91156L12.1197 13.7431C12.3193 13.9603 12.6166 14.0482 12.8966 13.9728C13.1765 13.8973 13.395 13.6704 13.4675 13.3799C13.5399 13.0894 13.455 12.7809 13.2454 12.5741ZM5.29738 9.87819C2.95866 9.86423 1.06697 7.8988 1.05671 5.47219C1.0504 4.31114 1.4917 3.19564 2.28239 2.37403C3.07307 1.55242 4.14751 1.09287 5.26653 1.09769C7.60525 1.11165 9.49694 3.07709 9.5072 5.50369C9.51352 6.66475 9.07221 7.78024 8.28152 8.60186C7.49084 9.42347 6.4164 9.88302 5.29738 9.87819Z",transform:"translate(0.637695)"})),(0,r.h)("input",{"data-testid":"meridian--private--overlay-search",value:e,type:"text",placeholder:n,className:a,onInput:e=>{e.target instanceof HTMLInputElement&&t(e.target.value)},ref:e=>{this.input=e}}))}}const a=(0,o.css)(o.mixins.buttonReset,o.mixins.rounded,o.mixins.focusRing,{label:"overlay-search-input",flex:"1 1 auto",marginRight:42,fontSize:16,padding:"4px 8px",paddingLeft:30,background:o.theme.borderColor,color:o.theme.black,border:0,height:24,"&::placeholder":{color:o.theme.textColorBluishLightGrey}}),s=(0,o.css)({label:"overlay-search-icon",position:"absolute",zIndex:1,fill:o.theme.textColorBluish,width:16,height:16,top:18,left:18}),l=(0,o.css)({label:"overlay-search-bar",position:"relative",zIndex:1,flex:"0 0 auto",display:"flex",flexDirection:"column",padding:10,backgroundColor:"rgb(105, 146, 176)"});t.default=i},9159:function(e,t,n){"use strict";var r=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o{var{defs:t=!1,id:n,className:i,style:a={},width:s,height:l,href:c,x:u,y:f,fill:h="none",stroke:p="hsl(207, 65%, 46%)",strokeWidth:d=2,strokeLineJoin:m="miter",strokeLineCap:g="butt",strokeDasharray:v,strokeDashoffset:y,strokeOpacity:_,animate:b={},animateMotion:w={},mpath:k,mapZoomFactor:x}=e,O=r(e,["defs","id","className","style","width","height","href","x","y","fill","stroke","strokeWidth","strokeLineJoin","strokeLineCap","strokeDasharray","strokeDashoffset","strokeOpacity","animate","animateMotion","mpath","mapZoomFactor"]);const S=1/x;let C=null,A=null;const E=Object.assign({transform:`translate(-${s/x/2}px, -${l/x/2}px) scale(${S})`},a);Object.keys(w).length&&(A=k?(0,o.h)("animateMotion",Object.assign({},w),(0,o.h)("mpath",{xlinkHref:`#${k}`})):(0,o.h)("animateMotion",Object.assign({},w))),Object.keys(b).length&&(C=(0,o.h)("animate",Object.assign({},b)));const T=(0,o.h)("use",Object.assign({id:n,className:i,style:E,width:s,height:l,href:c,x:u,y:f,fill:h,stroke:p,"stroke-width":d/x,"stroke-linejoin":m,"stroke-linecap":g,"stroke-dasharray":v,"stroke-dashoffset":y,"stroke-opacity":_},O),C,A);return t?(0,o.h)("defs",null,T):T};i.displayName="OverlayUse",t.default=i},2858:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(172),o=n(2785),i=n(7746),a=n(4221),s=(0,o.css)(o.mixins.textStrokeWhite,{label:"placemark-label",marginLeft:"50%",position:"absolute",minWidth:55,maxWidth:120,fontSize:14,textAlign:"center",paddingTop:4,color:"#222",userSelect:"none",transform:"translate(-50%, 0)",fontWeight:"bold",visibility:"hidden",pointerEvents:"none","[data-meridian-placemark-label-mode='always'] > &":{visibility:"visible"},"[data-meridian-placemark-label-mode='never'] > &":{visibility:"hidden"},"[data-meridian-placemark-label-mode='hover']:hover > &":{visibility:"visible",background:"#333",color:"#eee",textShadow:"none",borderRadius:4,padding:4,bottom:30,maxWidth:240,width:"max-content",boxShadow:"0 0 1px 1px white"},"[data-meridian-placemark-label-mode='zoom'] > &[data-meridian-placemark-label-zoom-visible='false']":{visibility:"hidden"},"[data-meridian-placemark-label-mode='zoom'] > &[data-meridian-placemark-label-zoom-visible='true']":{visibility:"visible"}}),l=(0,o.css)({label:"placemark-labelOnly",textTransform:"uppercase",color:"#666",fontSize:16}),c=(0,o.css)({label:"placemark",position:"absolute","&[data-meridian-placemark-label-mode='hover']:hover":{zIndex:1}}),u=(0,o.css)(o.mixins.buttonReset,o.mixins.pointer,o.mixins.focusNone,{label:"placemark-icon","--meridian-placemark-backgroundColor":o.theme.brandBlue,transition:"width 80ms ease, height 80ms ease",display:"block",width:24,height:24,borderRadius:"100%",backgroundColor:"var(--meridian-placemark-backgroundColor)",backgroundImage:"var(--meridian-placemark-iconURL)",backgroundPosition:"center",backgroundRepeat:"no-repeat",backgroundSize:"cover",border:"2px solid transparent",overflow:"hidden",zIndex:1}),f=(0,o.css)(u,{zIndex:3,width:30,height:30,boxShadow:"0 0 4px black"});t.default=({isSelected:e,data:t,mapZoomFactor:n,onClick:h=(()=>{}),disabled:p=!1,labelMode:d,labelZoomLevel:m=.2})=>{const g=`meridian-placemark-type-${t.type}`,v=!t.type||0===t.type.indexOf("label_"),y=1/n,_=`#${t.color}`,b=(0,a.placemarkIconURL)(t.type),w=(t.id||"").split("_").pop(),k=e?(0,o.cx)("meridian-placemark-icon-selected","meridian-placemark-icon",g,f):(0,o.cx)("meridian-placemark-icon",g,u),x={left:t.x,top:t.y,transform:`translate(-50%, -50%) scale(${y})`};return v?(0,r.h)("div",{className:(0,o.cx)("meridian-placemark",c),"data-meridian-placemark-label-mode":"zoom",style:x},(0,r.h)("div",{className:(0,o.cx)(s,l,"meridian-label","meridian-label-only"),"data-meridian-placemark-id":w,"data-meridian-placemark-label-zoom-visible":String(n>=m)},t.name)):(0,r.h)("div",{"data-meridian-placemark-label-mode":d,className:(0,o.cx)("meridian-placemark",c),style:x},(0,r.h)("button",{disabled:p,className:(0,o.cx)((0,i.getPlacemarkCategories)(t).map((e=>`meridian-placemark-category-${e=e.replace(/ /g,"-").replace(/[^a-z0-9_-]/i,"").toLowerCase()}`)),k),"data-meridian-placemark-id":w,style:{"--meridian-placemark-iconURL":`url('${b}')`,"--meridian-placemark-borderColor":_,"--meridian-placemark-backgroundColor":_},onClick:e=>{e.target instanceof HTMLElement&&e.target.focus(),h(t)},onMouseDown:e=>{e.stopPropagation()}}),(0,r.h)("div",{className:(0,o.cx)("meridian-label",s),"data-meridian-placemark-label-zoom-visible":String(n>=m)},t.name))}},7387:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=n(172),i=r(n(2858)),a=n(7746);class s extends o.Component{constructor(){super(...arguments),this.state={fetchedPlacemarks:[]},this.isMounted=!1}componentDidMount(){this.isMounted=!0,this.fetchPlacemarks()}shouldComponentUpdate(e){return!(this.props.isPanningOrZooming&&e.mapZoomFactor===this.props.mapZoomFactor)}async componentDidUpdate(e,t){const{placemarkOptions:n,onUpdate:r}=this.props;if(e.floorID!==this.props.floorID&&await this.fetchPlacemarks(),r&&(t.fetchedPlacemarks!==this.state.fetchedPlacemarks||n!==e.placemarkOptions)){const e=this.state.fetchedPlacemarks;(0,a.asyncClientCall)(r,{allPlacemarks:e,filteredPlacemarks:this.getFilteredPlacemarks(e)})}}componentWillUnmount(){this.isMounted=!1}async fetchPlacemarks(){if(!this.isMounted)return;const{locationID:e,floorID:t,api:n,toggleLoadingSpinner:r,onInit:o}=this.props;r({show:!0,source:"placemarks"});const i=await n.fetchPlacemarksByFloor(e,t);this.setState({fetchedPlacemarks:i},(()=>{r({show:!1,source:"placemarks"})})),o()}getFilteredPlacemarks(e){var t;const{placemarkOptions:n,floorID:r}=this.props,o=null!==(t=null==n?void 0:n.filter)&&void 0!==t?t:()=>!0;return e.filter((e=>"exclusion_area"!==e.type&&e.map===r&&(!0===(null==n?void 0:n.showHiddenPlacemarks)||!e.hide_on_map))).filter(o)}render(){const e=this.getFilteredPlacemarks(this.state.fetchedPlacemarks);return(0,o.h)("div",{"data-testid":"meridian--private--placemark-layer"},e.map((e=>{var t,n,r,a;return(0,o.h)(i.default,{key:e.id,isSelected:!!this.props.selectedItem&&this.props.selectedItem.id===e.id,mapZoomFactor:this.props.mapZoomFactor,data:e,onClick:this.props.onPlacemarkClick,disabled:null===(t=this.props.placemarkOptions)||void 0===t?void 0:t.disabled,labelMode:null!==(r=null===(n=this.props.placemarkOptions)||void 0===n?void 0:n.labelMode)&&void 0!==r?r:"zoom",labelZoomLevel:null===(a=this.props.placemarkOptions)||void 0===a?void 0:a.labelZoomLevel})})))}}t.default=s},3996:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=n(172),i=r(n(192)),a=n(2785),s=n(7746),l=(0,a.css)(a.mixins.shadow,a.mixins.buttonReset,a.mixins.pointer,a.mixins.focusNone,{label:"tag",width:48,height:48,borderRadius:"100%",position:"absolute",backgroundColor:"white",backgroundPosition:"center",backgroundRepeat:"no-repeat",backgroundSize:"cover",border:"2px solid white",overflow:"hidden",transition:"\n width 80ms ease,\n height 80ms ease,\n top 500ms ease,\n left 500ms ease\n ",zIndex:2}),c=(0,a.css)(l,{width:60,height:60,zIndex:3,boxShadow:"0 0 0 2px white, 0 0 4px black"});t.default=({isSelected:e,data:t,mapZoomFactor:n,onClick:r=(()=>{}),disabled:u=!1})=>{const f=1/n/(n<.2?1.4:1),h=t.image_url||i.default;return(0,o.h)("button",{"data-meridian-tag-id":t.id,disabled:u,className:(0,a.cx)("meridian-tag",l,(0,s.getTagLabels)(t).map((e=>`meridian-tag-label-${e=e.replace(/ /g,"-").replace(/[^a-z0-9_-]/i,"")}`)),e&&["meridian-tag-selected",c],(0,a.css)({backgroundImage:`url('${h}')`})),style:{left:t.x,top:t.y,transform:`translate(-50%, -50%) scale(${f})`},onClick:e=>{e.target instanceof HTMLElement&&e.target.focus(),r(t)},onMouseDown:e=>{e.stopPropagation()}})}},8901:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(5858)),i=n(172),a=r(n(3996)),s=n(7746);class l extends i.Component{constructor(){var e;super(...arguments),this.state={tagsByMAC:{},connectionsByFloorID:{}},this.tagUpdates={},this.isMounted=!1,this.commitTagUpdates=(0,o.default)((()=>{this.isMounted&&this.setState((e=>({tagsByMAC:Object.assign(Object.assign({},e.tagsByMAC),this.tagUpdates)})),(()=>{this.tagUpdates={},this.onUpdate()}))}),(null===(e=this.props.tagOptions)||void 0===e?void 0:e.updateInterval)||5e3),this.onUpdate=()=>{const{tagsByMAC:e}=this.state,{onUpdate:t,tagOptions:n={}}=this.props,{filter:r=(()=>!0)}=n,o=this.filterControlTags(Object.values(e)),i=o.filter(r);t&&t({allTags:o,filteredTags:i})}}componentDidMount(){this.isMounted=!0;const{floorID:e}=this.props;e&&this.connect(e)}shouldComponentUpdate(e){return!(this.props.isPanningOrZooming&&e.mapZoomFactor===this.props.mapZoomFactor)}componentDidUpdate(e){e.floorID!==this.props.floorID&&(this.disconnect(e.floorID),this.connect(this.props.floorID))}componentWillUnmount(){this.isMounted=!1,this.disconnect(this.props.floorID)}connect(e){const{locationID:t,api:n,toggleLoadingSpinner:r,onInit:o}=this.props;r({show:!0,source:"tags"});const i=n.openStream({locationID:t,floorID:e,onInitialTags:t=>{e===this.props.floorID&&this.isMounted&&(this.setState({tagsByMAC:(0,s.keyBy)(t,(e=>e.mac))},(()=>{this.onUpdate(),this.props.toggleLoadingSpinner({show:!1,source:"tags"})})),o())},onTagUpdate:t=>{e===this.props.floorID&&this.isMounted&&(e!==t.map_id?this.setState((e=>({tagsByMAC:(0,s.objectWithoutKey)(e.tagsByMAC,t.mac)})),(()=>{this.onUpdate()})):(this.tagUpdates=Object.assign(Object.assign({},this.tagUpdates),{[t.mac]:t}),this.props.isPanningOrZooming||this.commitTagUpdates()))},onException:()=>{this.props.toggleLoadingSpinner({show:!1,source:"tags"})}});this.isMounted&&this.setState((t=>({connectionsByFloorID:Object.assign(Object.assign({},t.connectionsByFloorID),{[e]:i})})),(()=>{this.onUpdate()}))}disconnect(e){const t=this.state.connectionsByFloorID[e];t&&(this.props.toggleLoadingSpinner({show:!1,source:"tags"}),t.close()),this.tagUpdates={},this.isMounted&&this.setState((t=>({tagsByMAC:{},connectionsByFloorID:(0,s.objectWithoutKey)(t.connectionsByFloorID,e)})),(()=>{this.onUpdate()}))}filterControlTags(e){const{tagOptions:t}=this.props;return e.filter((e=>!0===(null==t?void 0:t.showControlTags)||!e.is_control_tag))}render(){const{selectedItem:e,tagOptions:t={},onTagClick:n,mapZoomFactor:r}=this.props,{tagsByMAC:o}=this.state,{filter:s=(()=>!0)}=t,l=Object.values(o);return(0,i.h)("div",{"data-testid":"meridian--private--tag-layer"},this.filterControlTags(l).filter(s).map((o=>(0,i.h)(a.default,{key:o.mac,isSelected:!!e&&e.mac===o.mac,mapZoomFactor:r,data:o,onClick:n,disabled:t.disabled}))))}}t.default=l},7866:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n={en:{tags:"Tags",placemarks:"Placemarks",floors:"Floors",search:"Search",search_tags:"Search Tags",search_placemarks:"Search Placemarks",search_floors:"Search Floors",no_results_found:"No results found",close:"Close"},ar:{tags:"العلامات",placemarks:" العلامات الموضعية",floors:" الطوابق",search:" بحث",search_tags:" بحث عن علامات",search_placemarks:" بحث عن علامات موضعية",search_floors:" بحث عن طوابق",no_results_found:" لم يتم العثور على نتائج",close:"إغلاق"},ca:{tags:"Etiquetes",placemarks:"Marques de posició",floors:"Pisos",search:"Cerca",search_tags:"Cerca etiquetes",search_placemarks:"Cerca marcadors de posició",search_floors:"Cerca pisos",no_results_found:"Sense resultats",close:"Tanca"},es:{tags:"Etiquetas",placemarks:"Marcas de posición",floors:"Pisos",search:"Buscar",search_tags:"Buscar etiquetas",search_placemarks:"Buscar marcas de posición",search_floors:"Buscar pisos",no_results_found:"No se han encontrado resultados",close:"Cerrar"},cs:{tags:"Tagy",placemarks:"Značky míst",floors:"Patra",search:"Hledat",search_tags:"Hledat tagy",search_placemarks:"Hledat značky míst",search_floors:"Hledat patra",no_results_found:"Nebyly nalezeny žádné výsledky",close:"Zavřít"},de:{tags:"Stichworte",placemarks:"Ortsmarken",floors:"Etagen",search:"Suche",search_tags:"Such-Tags",search_placemarks:"In den Ortsmarken (Räumen, Sälen) suchen",search_floors:"In den Stockwerken suchen",no_results_found:"Keine Ergebnisse gefunden",close:"Schließen"},fr:{tags:"Mots clés",placemarks:"Repères",floors:"Étages",search:"Rechercher",search_tags:"Rechercher des mots clés",search_placemarks:"Rechercher des repères",search_floors:"Rechercher des étages",no_results_found:"Aucun résultat trouvé",close:"Fermer"},it:{tags:"Tag",placemarks:"Segnaposto",floors:"Piani",search:"Cerca",search_tags:"Cerca tag",search_placemarks:"Cerca segnaposto",search_floors:"Cerca piani",no_results_found:"Nessun risultato trovato",close:"Chiudi"},iw:{tags:"תגים",placemarks:"סימני מקום",floors:"קומות",search:"חפש",search_tags:"חפש תגיות",search_placemarks:"חפש סימני מקום",search_floors:"חפש קומות",no_results_found:"לא נמצאו תוצאות",close:"סגור"},ja:{tags:"タグ",placemarks:"目印",floors:"フロア",search:"探す",search_tags:"検索タグ",search_placemarks:"目印を検索する",search_floors:"フロアを検索する",no_results_found:"結果が見つからない",close:"近い"},ko:{tags:"태그",placemarks:"장소표시<",floors:"바닥",search:"검색",search_tags:"태그검색<",search_placemarks:"장소표시 검색<",search_floors:"층수검색<",no_results_found:"검색결과가 없습니다<",close:"닫기"},nl:{tags:"Tags",placemarks:"Plaatsaanduidingen",floors:"Verdiepingen",search:"Zoeken",search_tags:"Zoek tags",search_placemarks:"Zoek plaatsaanduidingen",search_floors:"Zoek verdiepingen",no_results_found:"Geen resultaten gevonden",close:"Sluiten"},no:{tags:"Tagger",placemarks:"Stedsmarkeringer",floors:"Gulv",search:"Søk",search_tags:"Søk i etiketter",search_placemarks:"Søk i stedsmarkeringer",search_floors:"Søk i etasjer",no_results_found:"Ingen resultater",close:"Lukk"},pt:{tags:"Tags",placemarks:"Marcadores",floors:"Andares",search:"Procurar",search_tags:"Tags de pesquisa",search_placemarks:"Pesquisar marcadores",search_floors:"Pesquisar andares",no_results_found:"Nenhum resultado encontrado",close:"Perto"},ru:{tags:"Taggar",placemarks:"Platsmärken",floors:"Golv",search:"Sök",search_tags:"Sök taggar",search_placemarks:"Sök efter platsmärken",search_floors:"Sök Golv",no_results_found:"Inga resultat funna",close:"Stänga"},sv:{tags:"Taggar",placemarks:"Platsmärken",floors:"Golv",search:"Sök",search_tags:"Sök taggar",search_placemarks:"Sök efter platsmärken",search_floors:"Sök Golv",no_results_found:"Inga resultat funna",close:"Stänga"},uk:{tags:"Теги",placemarks:"Мітки",floors:"Поверхи",search:"Пошук",search_tags:"Пошук тегів",search_placemarks:"Пошук міток",search_floors:"Пошук поверхів",no_results_found:"Нічого не знайдено",close:"Закрити"},vi:{tags:"Thẻ",placemarks:"Dấu vị trí",floors:"Tầng",search:"Tìm kiếm ",search_tags:"Thẻ tìm kiếm",search_placemarks:"Dấu vị trí tìm kiếm",search_floors:"Tầng tìm kiếm",no_results_found:"Không có kết quả nào được tìm thấy",close:"Đóng"},"zh-cn":{tags:"标签",placemarks:"地标",floors:"楼层",search:"搜索",search_tags:"搜索标签",search_placemarks:"搜索地标",search_floors:"搜索楼层",no_results_found:"未找到结果",close:"关闭"},"zh-tw":{tags:"標籤",placemarks:"地標",floors:"樓層",search:"搜尋",search_tags:"搜尋標籤",search_placemarks:"搜尋地標",search_floors:"搜尋樓層",no_results_found:"未找到結果",close:"關閉"}};t.default={lookup:function(e,t){var r,o,i;const a=t||(navigator.languages&&navigator.languages[0]||navigator.language||"en").toLowerCase(),s=null!==(r=a.split("-").shift())&&void 0!==r?r:"en",l=n;return(null===(o=null==l?void 0:l[a])||void 0===o?void 0:o[e])||(null===(i=null==l?void 0:l[s])||void 0===i?void 0:i[e])||l.en[e]||e}}},1018:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(172),o=n(2785),i=(0,o.css)({label:"watermark",overflow:"hidden",position:"absolute",transform:"translate(-50%, 0)",opacity:.4,zIndex:1,left:"50%",top:0}),a=(0,o.css)({label:"watermark-logo",display:"block",fill:"black",width:70,height:30});t.default=()=>(0,r.h)("div",{className:i},(0,r.h)("svg",{className:a,viewBox:"0 0 196.07 71.15"},(0,r.h)("path",{d:"M93.4 55.8c-8.7-.2-15.5-7.5-15.3-16.1v-5.1c-.2.3-.4.5-.7.6-.2.1-.4.1-.6.1-.3 0-.7-.1-1-.4-1.2-1-2.7-1.6-4.3-1.6h-.1c-3.5 0-6.4 2.9-6.5 6.4V54c0 .8-.7 1.5-1.5 1.5h-6.8c-.6 0-1.2-.4-1.4-1-.1.2-.2.4-.4.6-.3.2-.6.4-1 .4h-.2c-.4-.1-3.8-.5-5.9-2.5-2.6 1.6-5.7 2.5-8.7 2.5h-.2c-8.8 0-16-7.1-16.1-15.9.1-8.8 7.4-16 16.1-16h.4c8 0 14.8 6 15.9 13.7V28c0-.4.2-.8.5-1.1.3-.3.6-.4 1-.4h.1c1.5.1 2.9.5 4.3 1.1 3-2.4 6.7-3.8 10.5-3.8 2 0 4 .4 5.9 1.1.6.2 1 .8 1 1.4v.4c.1-.2.2-.3.4-.5.3-.2.6-.3.9-.3h.4c2.7.7 7.9 3.7 8 10.3v4.1c.2 3.1 2.8 5.5 5.9 5.5h.4c3.2-.2 5.7-3 5.5-6.3v-7.1-.2c.4-6.5 5.6-8.8 7.3-9.6l.3-.1c.2-.1.4-.1.6-.1h.1c.7 0 1.3.5 1.5 1.1v-6.8c0-.8.7-1.5 1.5-1.5h.2c.2 0 .4 0 .6.1l.2.1c1.7.8 6.7 3.1 7.1 9.6 2.1-.9 4.3-1.4 6.7-1.4h.2c7.3 0 13.5 4.9 15.5 11.6 2-6.7 8.2-11.6 15.5-11.6h.4c8.8 0 16 7.1 16.1 15.9v14.4c0 .4-.2.8-.5 1.1-.3.2-.6.4-1 .4h-.2c-.4-.1-3.8-.5-5.9-2.5-2.6 1.6-5.7 2.5-8.7 2.5h-.2c-7.3 0-13.5-4.9-15.5-11.6-2 6.7-8.2 11.6-15.5 11.6h-.2c-3 0-5.9-.8-8.5-2.3-2.2 1.9-5.7 2.4-6.2 2.4h-.2c-.4 0-.7-.1-1-.4-.3-.3-.5-.7-.5-1.1V41.4c-.7 8.1-7.4 14.4-15.6 14.4h-.6zM39.1 33.2c-3.5 0-6.4 2.8-6.5 6.3-.1 3.6 2.7 6.6 6.3 6.7h.1c3.6 0 6.5-2.9 6.5-6.5 0-3.5-2.8-6.4-6.3-6.5h-.1zm86.9 0c-3.5 0-6.4 2.8-6.5 6.3-.1 3.6 2.7 6.6 6.3 6.7h.1c3.6 0 6.5-2.9 6.5-6.5 0-3.5-2.8-6.4-6.3-6.5h-.1zm31.4 0c-3.5 0-6.4 2.8-6.5 6.3-.1 3.6 2.7 6.6 6.3 6.7h.1c3.6-.1 6.5-3 6.6-6.5 0-3.5-2.8-6.4-6.3-6.5h-.2z"}),(0,r.h)("path",{d:"M111.1 16.9c1.3.6 6.2 2.6 6.5 8.6v2.2c2.4-1.6 5.3-2.4 8.1-2.4h.2c8 0 14.5 6.4 14.6 14.4-.1 8-6.6 14.4-14.6 14.4h-.2c-3.1 0-6.2-1-8.7-2.8-1.7 2.4-6.1 2.9-6.1 2.9V16.9h.2m14.8 30.8c4.4 0 8.1-3.6 8.1-8 0-4.3-3.5-7.9-7.8-8h-.2c-4.3 0-7.9 3.4-8 7.8-.1 4.4 3.4 8.1 7.8 8.2h.1M108 24v16.4c-.2 7.7-6.5 13.8-14.2 13.8h-.4c-7.8-.2-14-6.7-13.8-14.6V27.4s6.8 1.7 6.8 8.9v4.2c.2 3.9 3.5 6.9 7.4 6.9h.5c4.1-.3 7.2-3.8 6.9-7.8v-7c.3-6 5.4-7.9 6.7-8.6h.1m49 1.3h.4c8 0 14.5 6.4 14.6 14.4v14.4s-4.3-.5-5.8-3c-2.6 1.9-5.8 3-9 3h-.2c-8 0-14.5-6.4-14.6-14.4.1-8 6.6-14.4 14.6-14.4m.3 22.4c4.4 0 8.1-3.6 8.1-8 0-4.3-3.5-7.9-7.8-8h-.2c-4.3 0-7.9 3.4-8 7.8-.1 4.4 3.4 8.1 7.8 8.2h.1M38.7 25.3h.4c8 0 14.5 6.4 14.6 14.4v14.4s-4.3-.5-5.8-3c-2.6 1.9-5.8 3-9 3h-.2c-8 0-14.5-6.4-14.6-14.4.1-8 6.6-14.4 14.6-14.4m.3 22.4c4.4 0 8.1-3.6 8.1-8 0-4.3-3.5-7.9-7.8-8h-.2c-4.3 0-7.9 3.4-8 7.8-.1 4.4 3.4 8.1 7.8 8.2h.1m32.4-22.4s.1 0 0 0c1.9 0 3.6.4 5.3 1v7.6c-1.5-1.3-3.4-1.9-5.3-1.9h-.1c-4.4 0-7.9 3.5-8 7.9v14.3h-6.8V28c1.6.1 3.2.6 4.6 1.4 2.8-2.7 6.5-4.1 10.3-4.1m39.7-11.4h-.1c-1.7 0-3 1.3-3 3V21h-.1c-.5 0-.9.1-1.3.3l-.3.1c-5.1 2.4-7.9 6-8.1 10.9v7.4c.2 2.4-1.7 4.5-4.1 4.7h-.3c-2.3 0-4.2-1.8-4.4-4.1v-.6-3.5c-.1-7.6-6-11-9.1-11.8-.2-.1-.5-.1-.7-.1h-.5c-.3-.4-.8-.8-1.3-.9-2-.8-4.2-1.2-6.4-1.2h-.1c-3.9 0-7.7 1.2-10.8 3.5-1.3-.5-2.6-.8-4-.8h-.2c-.8 0-1.5.3-2.1.8-.6.6-.9 1.4-.9 2.2v1.9c-3.2-4.6-8.5-7.6-14.4-7.6h-.4c-9.6 0-17.5 7.8-17.6 17.4v.1c.1 9.6 8 17.4 17.6 17.4h.2c3 0 5.9-.8 8.6-2.2 2.4 1.7 5.4 2.1 5.9 2.2h.4c.5 0 1-.1 1.4-.4.4.2.9.4 1.4.4h6.8c1.7 0 3-1.3 3-3V39.8c0-2.7 2.3-4.9 5-4.9h.2c1.2 0 2.4.4 3.4 1.2.5.4 1.1.7 1.8.7v2.8c-.1 4.6 1.6 8.9 4.7 12.3 3.2 3.3 7.4 5.2 12 5.4h.5c5.9 0 11.1-2.9 14.1-7.4v4.3c0 .9.4 1.7 1 2.2.6.5 1.3.8 2 .8h.3c.7-.1 3.7-.5 6.2-2.1 2.6 1.3 5.4 2 8.3 2h.2c6.6 0 12.5-3.7 15.5-9.2 3 5.5 8.8 9.2 15.5 9.2h.3c3 0 5.9-.8 8.6-2.2 2.4 1.7 5.4 2.1 5.9 2.2h.4c.7 0 1.4-.3 2-.8.6-.6 1-1.4 1-2.2V39.7c-.1-9.6-8-17.4-17.6-17.4h-.4c-6.6 0-12.5 3.7-15.5 9.2-3-5.5-8.8-9.2-15.5-9.2h-.2c-1.8 0-3.7.3-5.4.8-.8-3.9-3.4-6.9-7.7-8.9l-.2-.1c-.6-.1-1-.2-1.5-.2zm46.3 30.8h-.2c-2.8-.1-4.9-2.4-4.9-5.1.1-2.7 2.3-4.9 5-4.9h.1c2.7.1 4.9 2.3 4.9 5 .1 2.7-2.2 4.9-4.9 5zm-31.3 0h-.2c-2.8-.1-4.9-2.4-4.9-5.1.1-2.7 2.3-4.9 5-4.9h.1c2.7.1 4.9 2.3 4.9 5s-2.2 4.9-4.9 5zm-87 0h-.2c-1.3 0-2.6-.6-3.5-1.6-.9-1-1.4-2.2-1.4-3.6.1-2.7 2.3-4.9 5-4.9h.1c2.7.1 4.9 2.3 4.9 5 .1 2.8-2.1 5-4.9 5.1z",fill:"#fff"})))},5481:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(172),o=n(2785),i=({onClick:e,dir:t})=>"in"===t?(0,r.h)("button",{className:(0,o.cx)("meridian-zoom-button","meridian-zoom-button-in",l),"data-testid":"meridian--private--zoom-button-in",onClick:e},(0,r.h)("svg",{viewBox:"0 0 36 36"},(0,r.h)("path",{d:"M26 17h-7v-7a1 1 0 0 0-2 0v7h-7a1 1 0 0 0 0 2h7v7a1 1 0 0 0 2 0v-7h7a1 1 0 0 0 0-2"}))):(0,r.h)("button",{className:(0,o.cx)("meridian-zoom-button","meridian-zoom-button-out",c),"data-testid":"meridian--private--zoom-button-out",onClick:e},(0,r.h)("svg",{viewBox:"0 0 36 36"},(0,r.h)("path",{d:"M26 19H10a1 1 0 0 1 0-2h16a1 1 0 0 1 0 2"}))),a=(0,o.css)(o.mixins.shadow,o.mixins.rounded,{position:"absolute",display:"flex",flexDirection:"column",zIndex:1,right:15,bottom:15}),s=(0,o.css)(o.mixins.buttonReset,o.mixins.focusRing,o.mixins.buttonHoverActive,o.mixins.rounded,{cursor:"pointer",padding:4,width:40,height:40,border:0,fontSize:20,fontWeight:200,fill:o.theme.brandBrightBlue,background:"white"}),l=(0,o.css)(s,{borderBottomLeftRadius:0,borderBottomRightRadius:0,borderBottom:`1px solid ${o.theme.buttonSeparatorColor}`}),c=(0,o.css)(s,{borderTopLeftRadius:0,borderTopRightRadius:0});t.default=({onZoomIn:e,onZoomOut:t})=>(0,r.h)("div",{className:(0,o.cx)("meridian-zoom-controls",a)},(0,r.h)(i,{onClick:e,dir:"in"}),(0,r.h)(i,{onClick:t,dir:"out"}))},5396:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.sendAnalyticsCodeEvent=void 0;const r=n(4221),o=window.devicePixelRatio||1,i=window.screen,a=`${i.width*o}x${i.height*o}`;t.sendAnalyticsCodeEvent=async function(e){if("Cypress"in window)return;const{action:t,locationID:n,onTagsUpdate:o=!1,tagsFilter:i=!1,placemarksFilter:s=!1,internalUpdate:l=!1}=e,c={session_id:n,v:"1",app_name:"MeridianSDK",data_src:"app",app_version:r.version,uid:n,cid:n,hit_type:"event",event_category:"code",event_action:t,event_value:1,event_label:l?"internal":"external",tag_update:o?1:0,tags_filter:i?1:0,placemarks_filter:s?1:0,language:navigator.language,screen_res:a,anonymize_ip:1,user_agent:window.navigator.userAgent,z:Math.random().toString(36).substring(7)};fetch("https://www.google-analytics.com/mp/collect?measurement_id=G-GCT86YZLFE&api_secret=1v79k_rPSLyvvcHpzSDqFQ",{method:"POST",body:JSON.stringify({client_id:n,events:[{name:"page_event",params:Object.assign({},c)}]})})}},2785:function(e,t,n){"use strict";var r,o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.css=t.keyframes=t.cx=t.mixins=t.theme=void 0;const i=o(n(2244));t.theme={fontSizeSmallest:"12px",fontSizeSmaller:"14px",fontSize:"16px",fontSizeBigger:"18px",black:"#000",white:"#fff",almostWhite:"#fafafa",textColor:"#1b1b1b",textColorBluishLightGrey:"#9fa8ae",textColorBluish:"hsl(208, 17%, 42%)",brandOrange:"#ff8300",brandBlue:"hsl(203, 100%, 23%)",brandBrightBlue:"hsl(207, 65%, 46%)",buttonActiveColor:"hsl(201, 55%, 94%)",buttonHoverColor:"hsl(200, 60%, 97%)",buttonSeparatorColor:"#f0f0f0",borderColor:"#ebeef2",borderColorDarker:"#dfe1e5",borderRadius:6,searchBarColor:"#297BC0"},t.mixins={flexRow:{display:"flex",flexDirection:"row"},flexColumn:{display:"flex",flexDirection:"column"},overflowEllipses:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},textStrokeWhite:{WebkitFontSmoothing:"antialiased",textShadow:["rgba(255, 255, 255, 0.5) 1px 1px 0","rgba(255, 255, 255, 0.5) -1px -1px 0","white 0 0 1px","white 0 0 2px","white 0 0 3px","white 0 0 4px"].join(", ")},buttonReset:{padding:0,margin:0,font:"inherit",border:0,borderRadius:0,background:"transparent",color:"inherit","&::-moz-focus-inner":{border:0}},buttonHoverActive:{"&:hover":{background:t.theme.buttonHoverColor},"&:active":{background:t.theme.buttonActiveColor}},borderBox:{boxSizing:"border-box"},focusRing:{"&:focus":{outline:0,boxShadow:`inset 0 0 0 1px ${t.theme.brandBrightBlue}`}},focusRingMenuItem:{"&:focus":{outline:0,boxShadow:`\n inset 0 0 0 1px white,\n inset 0 0 0 2px ${t.theme.brandBrightBlue}\n `}},focusOutline:{"&:focus":{outline:0,boxShadow:"0 0 0 2px currentcolor"}},focusDarken:{"&:focus":{outline:0,boxShadow:"inset 0 0 0 9999px rgba(0, 0, 0, 0.1)"}},focusNone:{"&:focus":{outline:"none"}},shadow:{boxShadow:"0 0 3px rgba(0, 0, 0, 0.25)"},rounded:{borderRadius:t.theme.borderRadius},maxRounded:{borderRadius:99999},paddingMedium:{padding:"20px"},pointer:{cursor:"pointer","&:disabled":{cursor:"default"}}},r=(0,i.default)({key:"meridian--private-"}),t.cx=r.cx,t.keyframes=r.keyframes,t.css=r.css},7746:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.debouncedPlacemarkSearch=t.placemarkSearchParams=t.cleanQuery=t.isEnvOptions=t.asyncClientCall=t.requiredParam=t.getPlacemarkCategories=t.getTagLabels=t.createSearchMatcher=t.keyBy=t.objectWithoutKey=t.uiText=t.logDeprecated=t.logError=t.logWarn=void 0;const n="[@meridian/web-sdk]";t.logWarn=console.warn.bind(console,n),t.logError=console.error.bind(console,n),t.logDeprecated=t.logWarn.bind(null,"[deprecated]"),t.uiText={enDash:"–",unnamedBuilding:"Unassigned"},t.objectWithoutKey=function(e,t){const n=Object.assign({},e);return delete n[t],n},t.keyBy=function(e,t){const n={};for(const r of e)n[t(r)]=r;return n},t.createSearchMatcher=function(e){return t=>t.toLowerCase().indexOf(e.toLowerCase().trim())>=0},t.getTagLabels=function(e){return(e.tags||[]).map((e=>e.name))},t.getPlacemarkCategories=function(e){return(e.categories||[]).map((e=>e.name))},t.requiredParam=function(e,n){(0,t.logError)(`${e}: argument \`${n}\` is required`)},t.asyncClientCall=function(e,...t){setTimeout(e,0,...t)},t.isEnvOptions=function(e){return"staging"===e||"production"===e||"eu"===e||"development"===e||"devCloud"===e},t.cleanQuery=function(e){return e.replace(/-/g," ").replace(/:/g," ").replace(/[\\)"(]/g," ").replace(/[ ]{2,}/g," ").trim()},t.placemarkSearchParams="is_map_published=true AND kind:placemark AND NOT is_searchable=false AND NOT type=exclusion_area",t.debouncedPlacemarkSearch=function e(t,n=0){let r,o,i;return function(...t){return o?(i=!0,new Promise((i=>{o=i,r=setTimeout(a.bind(e,t,i),n)}))):new Promise((i=>{o=i,r=setTimeout(a.bind(e,t,i),n)}))};function a(n,a){i&&a!==o?a(null):(t.apply(e,n).then(a).catch(a),i=!1,clearTimeout(r),r=o=null)}}},4221:function(e,t,n){"use strict";var r,o,i,a=this&&this.__classPrivateFieldGet||function(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.API=t.createAPI=t.createMap=t.init=t.mapPointToLatLng=t.latLngToMapPoint=t.restrictedPanZoom=t.version=t.pointsFromArea=t.placemarkIconURL=void 0;const l=s(n(6425)),c=s(n(7975)),u=n(172),f=s(n(5697)),h=s(n(9101)),p=n(5396),d=s(n(529)),m=n(7746),g=n(323),v=new Map;for(const e of g.keys()){const t=c.default.basename(e,".svg"),n=g(e).default;v.set(t,n)}t.placemarkIconURL=function(e){if(!e||e.startsWith("label_"))return h.default;return v.get(e)||((0,m.logError)(`placemarkIconURL: no such icon '${e}'`),h.default)},t.pointsFromArea=function(e){return e?e.split(",").map(Number):[]};const y=()=>n(3034);"complete"===document.readyState?setTimeout(y,0):document.addEventListener("DOMContentLoaded",y,!1);const _={api:void 0};t.version="1.22.3",t.restrictedPanZoom=function(e){return"wheel"===e.type?e.shiftKey||e.altKey||e.ctrlKey||e.metaKey:"touch"!==e.type||e.touches.length>=2},t.latLngToMapPoint=function(e,{lat:t,lng:n}){const r=t,o=n,i=[];e.gps_ref_points.split(",").forEach((e=>{i.push(Number(e))}));const a={lat:i[0],lng:i[1],x:i[4],y:i[5]},s={lat:i[2],lng:i[3],x:i[6],y:i[7]},l=6371;a.globalCoordinateX=l*a.lng*Math.cos((a.lat+s.lat)/2),a.globalCoordinateY=l*a.lat,s.globalCoordinateX=l*s.lng*Math.cos((a.lat+s.lat)/2),s.globalCoordinateY=l*s.lat;const c=l*r,u=(l*o*Math.cos((a.lat+s.lat)/2)-a.globalCoordinateX)/(s.globalCoordinateX-a.globalCoordinateX),f=(c-a.globalCoordinateY)/(s.globalCoordinateY-a.globalCoordinateY);return{x:a.x+(s.x-a.x)*u,y:a.y+(s.y-a.y)*f}},t.mapPointToLatLng=function(e,{x:t,y:n}){const r=[];e.gps_ref_points.split(",").forEach((e=>{r.push(Number(e))}));const o={lat:r[0],lng:r[1],x:r[4],y:r[5]},i={lat:r[2],lng:r[3],x:r[6],y:r[7]},a=o.lng,s=i.lng-a,l=function(){let e;return e=o.y{l.isDestroyed?(0,m.logError)("can't call update on a destroyed MeridianMap"):(l.isDestroyed=!0,(0,u.render)(null,e),t.onDestroy&&t.onDestroy())};let r=null;const o=e=>{r=e},i=(r,{internalUpdate:a=!0}={})=>{t=Object.assign(Object.assign({},t),r);const l=_.api||t.api;if(!l)throw(0,m.requiredParam)("createMap","options.api"),new Error("couldn't create MeridianMap");s=(0,u.render)((0,u.h)(d.default,Object.assign({api:l},t,{update:i,ref:o,destroy:n})),e,s),(0,p.sendAnalyticsCodeEvent)({action:"map.update",locationID:t.locationID,onTagsUpdate:Boolean(t.onTagsUpdate),tagsFilter:Boolean(t.tags&&t.tags.filter),placemarksFilter:Boolean(t.placemarks&&t.placemarks.filter),internalUpdate:a})},a=_.api||t.api;if(!a)throw(0,m.requiredParam)("createMap","options.api"),new Error("couldn't create MeridianMap");let s=(0,u.render)((0,u.h)(d.default,Object.assign({api:a},t,{update:i,ref:o,destroy:n})),e);(0,p.sendAnalyticsCodeEvent)({action:"createMap",locationID:t.locationID,onTagsUpdate:Boolean(t.onTagsUpdate),tagsFilter:Boolean(t.tags&&t.tags.filter),placemarksFilter:Boolean(t.placemarks&&t.placemarks.filter)});const l={destroy:n,isDestroyed:!1,update:e=>{l.isDestroyed?(0,m.logError)("can't call update on a destroyed MeridianMap"):i(e,{internalUpdate:!1})},zoomToDefault:()=>{l.isDestroyed?(0,m.logError)("can't call zoomToDefault on a destroyed MeridianMap"):null==r||r.zoomToDefault()},zoomToPoint:e=>{l.isDestroyed?(0,m.logError)("can't call update on a destroyed MeridianMap"):(e||(0,m.requiredParam)("map.zoomToPoint","options"),void 0===e.x&&(0,m.requiredParam)("map.zoomToPoint","options.x"),void 0===e.y&&(0,m.requiredParam)("map.zoomToPoint","options.y"),void 0===e.scale&&(0,m.requiredParam)("map.zoomToPoint","options.scale"),null==r||r.zoomToPoint(e.x,e.y,e.scale))},centerMap:()=>{l.isDestroyed?(0,m.logError)("can't call update on a destroyed MeridianMap"):null==r||r.centerMap()}};return l},t.createAPI=function(e){return(0,m.logDeprecated)("use `new MeridianSDK.API(options)` instead of `MeridianSDK.createAPI(options)`"),e||(0,m.requiredParam)("createAPI","options"),new b(e)};class b{constructor(e){var n;r.add(this),this.debouncedPlacemarkSearchBeta=(0,m.debouncedPlacemarkSearch)(a(this,r,"m",o).bind(this),600),e.token||(0,m.requiredParam)("API","token"),this.token=e.token,this.environment=("devcloud"===(n=e.environment)?"devCloud":n)||"production",this.language=e.language,this._placemarkSearchAbortController=null,this._localSearchAbortController=null;let i={};this.language&&(i={"accept-language":this.language}),this._axiosEditorAPI=l.default.create({baseURL:S[this.environment],headers:Object.assign({Authorization:`Token ${e.token}`,"Meridian-SDK":`WebSDK/${t.version}`},i)}),this._axiosTagsAPI=l.default.create({baseURL:k[this.environment],headers:{Authorization:`Token ${e.token}`}}),this._axiosTagDetailAPI=l.default.create({baseURL:x[this.environment],headers:{Authorization:`Token ${e.token}`}})}get axios(){return(0,m.logDeprecated)("axios is deprecated; use the MeridianSDK.API fetch methods"),this._axiosEditorAPI}async getDirections(e){e.locationID||(0,m.requiredParam)("getDirections","locationID"),e.startFloorID||(0,m.requiredParam)("getDirections","startFloorID"),e.startPlacemarkID||(0,m.requiredParam)("getDirections","startPlacemarkID"),e.endPlacemarkID||(0,m.requiredParam)("getDirections","endPlacemarkID");const t=new URLSearchParams({from_map_id:e.startFloorID,from_placemark_id:e.startPlacemarkID,to_placemark_ids:e.endPlacemarkID,transport_type:e.transportType||"normal"}),n=`/locations/${e.locationID}/directions?${t}`;return(await this._axiosEditorAPI.get(n)).data}async fetchTagsByFloor(e,t){return e||(0,m.requiredParam)("fetchTagsByFloor","locationID"),t||(0,m.requiredParam)("fetchTagsByFloor","floorID"),(await this._axiosTagsAPI.post("/assets",{floor_id:t,location_id:e})).data.asset_updates}async fetchTagsByLocation(e){return e||(0,m.requiredParam)("fetchTagsByLocation","locationID"),(await this._axiosTagsAPI.post("/assets",{location_id:e})).data.asset_updates}async fetchTagDetail(e){return e||(0,m.requiredParam)("fetchTagDetail","mac"),(await this._axiosTagDetailAPI.get(`/tagsinfo/detail/${e}`)).data}async fetchPlacemarksByLocation(e){return e||(0,m.requiredParam)("fetchPlacemarksByLocation","locationID"),await w((async e=>{const{data:t}=await this._axiosEditorAPI.get(e);return t}),`locations/${e}/placemarks`)}async fetchPlacemarksByFloor(e,t){return e||(0,m.requiredParam)("fetchPlacemarksByFloor","locationID"),t||(0,m.requiredParam)("fetchPlacemarksByFloor","floorID"),await w((async e=>{const{data:t}=await this._axiosEditorAPI.get(e);return t}),`locations/${e}/maps/${t}/placemarks`)}async fetchFloorsByLocation(e){return e||(0,m.requiredParam)("fetchFloorsByLocation","locationID"),await w((async e=>{const{data:t}=await this._axiosEditorAPI.get(e);return t}),`locations/${e}/maps`)}async fetchFloorData(e,t){e||(0,m.requiredParam)("fetchFloorData","locationID"),t||(0,m.requiredParam)("fetchFloorData","floorID");const n=`locations/${e}/maps/${t}`,{data:r}=await this._axiosEditorAPI.get(n);return r}async fetchSVG(e){e||(0,m.requiredParam)("fetchSVG","svgURL");const{data:t}=await this._axiosEditorAPI.get(e,{responseType:"blob"});return URL.createObjectURL(t)}openStream({locationID:e,floorID:t,resourceIDs:n,resourceType:r="FLOOR",onInitialTags:o=(()=>{}),onTagUpdate:i=(()=>{}),onException:a=(()=>{}),onClose:s=(()=>{}),onOpen:l=(()=>{})}){"FLOOR"===r&&t&&!n&&(n=[t]),"LOCATION"===r&&e&&!n&&(n=[e]),e||(0,m.requiredParam)("openStream","locationID"),"FLOOR"!==r||t||(0,m.requiredParam)("openStream","floorID"),n||(0,m.requiredParam)("openStream","resourceIDs");let c=!1;const u=new URLSearchParams({method:"POST",authorization:`Token ${this.token}`}),h=O[this.environment],p=new f.default(`${h}?${u}`),d={asset_requests:[{resource_type:r,location_id:e,resource_ids:n}]},g=()=>{c||(c=!0,(0,m.asyncClientCall)(s),p.close())};return p.addEventListener("open",(()=>{c||(l(),p.send(JSON.stringify(d)))})),p.addEventListener("message",(e=>{if(c)return;const t=JSON.parse(e.data);if(t.error)a(new Error(t.error.message));else{if(!t.result)throw new Error(`Unknown message: ${e.data}`);for(const e of t.result.asset_updates){const t=e.event_type;if("UPDATE"!==t)throw new Error(`Unknown event type: ${t}`);(0,m.asyncClientCall)(i,e)}}})),p.addEventListener("error",(()=>{c||a(new Error("MeridianSDK.openStream connection error"))})),p.addEventListener("close",(()=>{c||s()})),(async()=>{if(t&&"FLOOR"===r)try{const n=await this.fetchTagsByFloor(e,t);(0,m.asyncClientCall)(o,n)}catch(e){(0,m.asyncClientCall)(a,e),g()}else if(e&&"LOCATION"===r)try{const t=await this.fetchTagsByLocation(e);(0,m.asyncClientCall)(o,t)}catch(e){(0,m.asyncClientCall)(a,e),g()}else(0,m.asyncClientCall)(o,[])})(),{close:g}}}async function w(e,t){const n=await e(t),r=n.results;let o=n.next;for(;o;){const t=await e(o);r.push(...t.results),o=t.next}return r}t.API=b,r=new WeakSet,o=async function(e){const t=(0,m.cleanQuery)(e.searchStr);if(e.locationID||(0,m.requiredParam)("placemarkSearch","locationID"),this._placemarkSearchAbortController&&this._placemarkSearchAbortController.abort(),this._localSearchAbortController&&this._localSearchAbortController.abort(),!t)return[];this._placemarkSearchAbortController=new AbortController;const n=new URLSearchParams({q:`${t} AND (${m.placemarkSearchParams})`,page_size:"100"});try{return await this._axiosEditorAPI.get(`locations/${e.locationID}/search`,{signal:this._placemarkSearchAbortController.signal,params:n}).then((async n=>{const o=n.data.results;if(e.refPoint&&e.refFloorID&&o.length){const n=await a(this,r,"m",i).call(this,{locationID:e.locationID,searchStr:t,point:e.refPoint,mapID:e.refFloorID}),s=[],l=n.map((e=>e.id));return o.forEach((e=>{l.includes(e.id)||s.push(e)})),this._placemarkSearchAbortController=null,[...n,...s]}return this._placemarkSearchAbortController=null,o}))}catch(e){return"canceled"===e.message?null:(console.warn(e),[])}},i=async function(e){const t=(0,m.cleanQuery)(e.searchStr);if(this._localSearchAbortController&&this._localSearchAbortController.abort(),!t)return[];this._localSearchAbortController=new AbortController;const n=new URLSearchParams({q:`${t} AND (${m.placemarkSearchParams})`,limit:"10",appid:e.locationID,map_id:e.mapID,point:e.point});return this._axiosEditorAPI.get("search/local",{signal:this._localSearchAbortController.signal,params:n}).then((e=>(this._localSearchAbortController=null,e.data.results)))};const k={development:"http://localhost:8091/api/v1",devCloud:"https://dev-tags.meridianapps.com/api/v1",production:"https://tags.meridianapps.com/api/v1",eu:"https://tags-eu.meridianapps.com/api/v1",staging:"https://staging-tags.meridianapps.com/api/v1"},x={development:"http://localhost:8091/api",devCloud:"https://dev-tags.meridianapps.com/api",production:"https://tags.meridianapps.com/api",eu:"https://tags-eu.meridianapps.com/api",staging:"https://staging-tags.meridianapps.com/api"},O={development:"ws://localhost:8091/streams/v1/assets",devCloud:"wss://dev-tags.meridianapps.com/streams/v1/assets",production:"wss://tags.meridianapps.com/streams/v1/assets",eu:"wss://tags-eu.meridianapps.com/streams/v1/assets",staging:"wss://staging-tags.meridianapps.com/streams/v1/assets"},S={development:"http://localhost:8091/api",devCloud:"https://dev-edit.meridianapps.com/api",production:"https://edit.meridianapps.com/api",eu:"https://edit-eu.meridianapps.com/api",staging:"https://staging-edit.meridianapps.com/api"}},6425:function(e,t,n){"use strict";function r(e,t){return function(){return e.apply(t,arguments)}}const{toString:o}=Object.prototype,{getPrototypeOf:i}=Object,a=(s=Object.create(null),e=>{const t=o.call(e);return s[t]||(s[t]=t.slice(8,-1).toLowerCase())});var s;const l=e=>(e=e.toLowerCase(),t=>a(t)===e),c=e=>t=>typeof t===e,{isArray:u}=Array,f=c("undefined"),h=l("ArrayBuffer"),p=c("string"),d=c("function"),m=c("number"),g=e=>null!==e&&"object"==typeof e,v=e=>{if("object"!==a(e))return!1;const t=i(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},y=l("Date"),_=l("File"),b=l("Blob"),w=l("FileList"),k=l("URLSearchParams"),[x,O,S,C]=["ReadableStream","Request","Response","Headers"].map(l);function A(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let r,o;if("object"!=typeof e&&(e=[e]),u(e))for(r=0,o=e.length;r0;)if(r=n[o],t===r.toLowerCase())return r;return null}const T="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:n.g,P=e=>!f(e)&&e!==T,D=(j="undefined"!=typeof Uint8Array&&i(Uint8Array),e=>j&&e instanceof j);var j;const M=l("HTMLFormElement"),R=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),L=l("RegExp"),N=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};A(n,((n,o)=>{let i;!1!==(i=t(n,o,e))&&(r[o]=i||n)})),Object.defineProperties(e,r)},I="abcdefghijklmnopqrstuvwxyz",z="0123456789",F={DIGIT:z,ALPHA:I,ALPHA_DIGIT:I+I.toUpperCase()+z},B=l("AsyncFunction");var U={isArray:u,isArrayBuffer:h,isBuffer:function(e){return null!==e&&!f(e)&&null!==e.constructor&&!f(e.constructor)&&d(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||d(e.append)&&("formdata"===(t=a(e))||"object"===t&&d(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&h(e.buffer),t},isString:p,isNumber:m,isBoolean:e=>!0===e||!1===e,isObject:g,isPlainObject:v,isReadableStream:x,isRequest:O,isResponse:S,isHeaders:C,isUndefined:f,isDate:y,isFile:_,isBlob:b,isRegExp:L,isFunction:d,isStream:e=>g(e)&&d(e.pipe),isURLSearchParams:k,isTypedArray:D,isFileList:w,forEach:A,merge:function e(){const{caseless:t}=P(this)&&this||{},n={},r=(r,o)=>{const i=t&&E(n,o)||o;v(n[i])&&v(r)?n[i]=e(n[i],r):v(r)?n[i]=e({},r):u(r)?n[i]=r.slice():n[i]=r};for(let e=0,t=arguments.length;e(A(t,((t,o)=>{n&&d(t)?e[o]=r(t,n):e[o]=t}),{allOwnKeys:o}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,n,r)=>{let o,a,s;const l={};if(t=t||{},null==e)return t;do{for(o=Object.getOwnPropertyNames(e),a=o.length;a-- >0;)s=o[a],r&&!r(s,e,t)||l[s]||(t[s]=e[s],l[s]=!0);e=!1!==n&&i(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:a,kindOfTest:l,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return-1!==r&&r===n},toArray:e=>{if(!e)return null;if(u(e))return e;let t=e.length;if(!m(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[Symbol.iterator]).call(e);let r;for(;(r=n.next())&&!r.done;){const n=r.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const r=[];for(;null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:M,hasOwnProperty:R,hasOwnProp:R,reduceDescriptors:N,freezeMethods:e=>{N(e,((t,n)=>{if(d(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const r=e[n];d(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))}))},toObjectSet:(e,t)=>{const n={},r=e=>{e.forEach((e=>{n[e]=!0}))};return u(e)?r(e):r(String(e).split(t)),n},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,n){return t.toUpperCase()+n})),noop:()=>{},toFiniteNumber:(e,t)=>null!=e&&Number.isFinite(e=+e)?e:t,findKey:E,global:T,isContextDefined:P,ALPHABET:F,generateString:(e=16,t=F.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n},isSpecCompliantForm:function(e){return!!(e&&d(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),n=(e,r)=>{if(g(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[r]=e;const o=u(e)?[]:{};return A(e,((e,t)=>{const i=n(e,r+1);!f(i)&&(o[t]=i)})),t[r]=void 0,o}}return e};return n(e,0)},isAsyncFn:B,isThenable:e=>e&&(g(e)||d(e))&&d(e.then)&&d(e.catch)};function $(e,t,n,r,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),o&&(this.response=o)}U.inherits($,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:U.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const q=$.prototype,W={};function H(e){return U.isPlainObject(e)||U.isArray(e)}function Z(e){return U.endsWith(e,"[]")?e.slice(0,-2):e}function V(e,t,n){return e?e.concat(t).map((function(e,t){return e=Z(e),!n&&t?"["+e+"]":e})).join(n?".":""):t}["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{W[e]={value:e}})),Object.defineProperties($,W),Object.defineProperty(q,"isAxiosError",{value:!0}),$.from=(e,t,n,r,o,i)=>{const a=Object.create(q);return U.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),$.call(a,e.message,t,n,r,o),a.cause=e,a.name=e.name,i&&Object.assign(a,i),a};const G=U.toFlatObject(U,{},null,(function(e){return/^is[A-Z]/.test(e)}));function X(e,t,n){if(!U.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const r=(n=U.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!U.isUndefined(t[e])}))).metaTokens,o=n.visitor||c,i=n.dots,a=n.indexes,s=(n.Blob||"undefined"!=typeof Blob&&Blob)&&U.isSpecCompliantForm(t);if(!U.isFunction(o))throw new TypeError("visitor must be a function");function l(e){if(null===e)return"";if(U.isDate(e))return e.toISOString();if(!s&&U.isBlob(e))throw new $("Blob is not supported. Use a Buffer instead.");return U.isArrayBuffer(e)||U.isTypedArray(e)?s&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function c(e,n,o){let s=e;if(e&&!o&&"object"==typeof e)if(U.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(U.isArray(e)&&function(e){return U.isArray(e)&&!e.some(H)}(e)||(U.isFileList(e)||U.endsWith(n,"[]"))&&(s=U.toArray(e)))return n=Z(n),s.forEach((function(e,r){!U.isUndefined(e)&&null!==e&&t.append(!0===a?V([n],r,i):null===a?n:n+"[]",l(e))})),!1;return!!H(e)||(t.append(V(o,n,i),l(e)),!1)}const u=[],f=Object.assign(G,{defaultVisitor:c,convertValue:l,isVisitable:H});if(!U.isObject(e))throw new TypeError("data must be an object");return function e(n,r){if(!U.isUndefined(n)){if(-1!==u.indexOf(n))throw Error("Circular reference detected in "+r.join("."));u.push(n),U.forEach(n,(function(n,i){!0===(!(U.isUndefined(n)||null===n)&&o.call(t,n,U.isString(i)?i.trim():i,r,f))&&e(n,r?r.concat(i):[i])})),u.pop()}}(e),t}function J(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function Y(e,t){this._pairs=[],e&&X(e,this,t)}const K=Y.prototype;function Q(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function ee(e,t,n){if(!t)return e;const r=n&&n.encode||Q,o=n&&n.serialize;let i;if(i=o?o(t,n):U.isURLSearchParams(t)?t.toString():new Y(t,n).toString(r),i){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e}K.append=function(e,t){this._pairs.push([e,t])},K.toString=function(e){const t=e?function(t){return e.call(this,t,J)}:J;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var te=class{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){U.forEach(this.handlers,(function(t){null!==t&&e(t)}))}},ne={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},re={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:Y,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]};const oe="undefined"!=typeof window&&"undefined"!=typeof document,ie=(ae="undefined"!=typeof navigator&&navigator.product,oe&&["ReactNative","NativeScript","NS"].indexOf(ae)<0);var ae;const se="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,le=oe&&window.location.href||"http://localhost";var ce={...Object.freeze({__proto__:null,hasBrowserEnv:oe,hasStandardBrowserWebWorkerEnv:se,hasStandardBrowserEnv:ie,origin:le}),...re};function ue(e){function t(e,n,r,o){let i=e[o++];if("__proto__"===i)return!0;const a=Number.isFinite(+i),s=o>=e.length;return i=!i&&U.isArray(r)?r.length:i,s?(U.hasOwnProp(r,i)?r[i]=[r[i],n]:r[i]=n,!a):(r[i]&&U.isObject(r[i])||(r[i]=[]),t(e,n,r[i],o)&&U.isArray(r[i])&&(r[i]=function(e){const t={},n=Object.keys(e);let r;const o=n.length;let i;for(r=0;r{t(function(e){return U.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),r,n,0)})),n}return null}const fe={transitional:ne,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const n=t.getContentType()||"",r=n.indexOf("application/json")>-1,o=U.isObject(e);if(o&&U.isHTMLForm(e)&&(e=new FormData(e)),U.isFormData(e))return r?JSON.stringify(ue(e)):e;if(U.isArrayBuffer(e)||U.isBuffer(e)||U.isStream(e)||U.isFile(e)||U.isBlob(e)||U.isReadableStream(e))return e;if(U.isArrayBufferView(e))return e.buffer;if(U.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let i;if(o){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return X(e,new ce.classes.URLSearchParams,Object.assign({visitor:function(e,t,n,r){return ce.isNode&&U.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((i=U.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return X(i?{"files[]":e}:e,t&&new t,this.formSerializer)}}return o||r?(t.setContentType("application/json",!1),function(e,t,n){if(U.isString(e))try{return(0,JSON.parse)(e),U.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(0,JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||fe.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(U.isResponse(e)||U.isReadableStream(e))return e;if(e&&U.isString(e)&&(n&&!this.responseType||r)){const n=!(t&&t.silentJSONParsing)&&r;try{return JSON.parse(e)}catch(e){if(n){if("SyntaxError"===e.name)throw $.from(e,$.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ce.classes.FormData,Blob:ce.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};U.forEach(["delete","get","head","post","put","patch"],(e=>{fe.headers[e]={}}));var he=fe;const pe=U.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),de=Symbol("internals");function me(e){return e&&String(e).trim().toLowerCase()}function ge(e){return!1===e||null==e?e:U.isArray(e)?e.map(ge):String(e)}function ve(e,t,n,r,o){return U.isFunction(r)?r.call(this,t,n):(o&&(t=n),U.isString(t)?U.isString(r)?-1!==t.indexOf(r):U.isRegExp(r)?r.test(t):void 0:void 0)}class ye{constructor(e){e&&this.set(e)}set(e,t,n){const r=this;function o(e,t,n){const o=me(t);if(!o)throw new Error("header name must be a non-empty string");const i=U.findKey(r,o);(!i||void 0===r[i]||!0===n||void 0===n&&!1!==r[i])&&(r[i||t]=ge(e))}const i=(e,t)=>U.forEach(e,((e,n)=>o(e,n,t)));if(U.isPlainObject(e)||e instanceof this.constructor)i(e,t);else if(U.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))i((e=>{const t={};let n,r,o;return e&&e.split("\n").forEach((function(e){o=e.indexOf(":"),n=e.substring(0,o).trim().toLowerCase(),r=e.substring(o+1).trim(),!n||t[n]&&pe[n]||("set-cookie"===n?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)})),t})(e),t);else if(U.isHeaders(e))for(const[t,r]of e.entries())o(r,t,n);else null!=e&&o(t,e,n);return this}get(e,t){if(e=me(e)){const n=U.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}(e);if(U.isFunction(t))return t.call(this,e,n);if(U.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=me(e)){const n=U.findKey(this,e);return!(!n||void 0===this[n]||t&&!ve(0,this[n],n,t))}return!1}delete(e,t){const n=this;let r=!1;function o(e){if(e=me(e)){const o=U.findKey(n,e);!o||t&&!ve(0,n[o],o,t)||(delete n[o],r=!0)}}return U.isArray(e)?e.forEach(o):o(e),r}clear(e){const t=Object.keys(this);let n=t.length,r=!1;for(;n--;){const o=t[n];e&&!ve(0,this[o],o,e,!0)||(delete this[o],r=!0)}return r}normalize(e){const t=this,n={};return U.forEach(this,((r,o)=>{const i=U.findKey(n,o);if(i)return t[i]=ge(r),void delete t[o];const a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,n)=>t.toUpperCase()+n))}(o):String(o).trim();a!==o&&delete t[o],t[a]=ge(r),n[a]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return U.forEach(this,((n,r)=>{null!=n&&!1!==n&&(t[r]=e&&U.isArray(n)?n.join(", "):n)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach((e=>n.set(e))),n}static accessor(e){const t=(this[de]=this[de]={accessors:{}}).accessors,n=this.prototype;function r(e){const r=me(e);t[r]||(function(e,t){const n=U.toCamelCase(" "+t);["get","set","has"].forEach((r=>{Object.defineProperty(e,r+n,{value:function(e,n,o){return this[r].call(this,t,e,n,o)},configurable:!0})}))}(n,e),t[r]=!0)}return U.isArray(e)?e.forEach(r):r(e),this}}ye.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),U.reduceDescriptors(ye.prototype,(({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}})),U.freezeMethods(ye);var _e=ye;function be(e,t){const n=this||he,r=t||n,o=_e.from(r.headers);let i=r.data;return U.forEach(e,(function(e){i=e.call(n,i,o.normalize(),t?t.status:void 0)})),o.normalize(),i}function we(e){return!(!e||!e.__CANCEL__)}function ke(e,t,n){$.call(this,null==e?"canceled":e,$.ERR_CANCELED,t,n),this.name="CanceledError"}function xe(e,t,n){const r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new $("Request failed with status code "+n.status,[$.ERR_BAD_REQUEST,$.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}U.inherits(ke,$,{__CANCEL__:!0});var Oe=(e,t,n=3)=>{let r=0;const o=function(e,t){e=e||10;const n=new Array(e),r=new Array(e);let o,i=0,a=0;return t=void 0!==t?t:1e3,function(s){const l=Date.now(),c=r[a];o||(o=l),n[i]=s,r[i]=l;let u=a,f=0;for(;u!==i;)f+=n[u++],u%=e;if(i=(i+1)%e,i===a&&(a=(a+1)%e),l-or)return o&&(clearTimeout(o),o=null),n=i,e.apply(null,arguments);o||(o=setTimeout((()=>(o=null,n=Date.now(),e.apply(null,arguments))),r-(i-n)))}}((n=>{const i=n.loaded,a=n.lengthComputable?n.total:void 0,s=i-r,l=o(s);r=i;const c={loaded:i,total:a,progress:a?i/a:void 0,bytes:s,rate:l||void 0,estimated:l&&a&&i<=a?(a-i)/l:void 0,event:n,lengthComputable:null!=a};c[t?"download":"upload"]=!0,e(c)}),n)},Se=ce.hasStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let n;function r(n){let r=n;return e&&(t.setAttribute("href",r),r=t.href),t.setAttribute("href",r),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return n=r(window.location.href),function(e){const t=U.isString(e)?r(e):e;return t.protocol===n.protocol&&t.host===n.host}}():function(){return!0},Ce=ce.hasStandardBrowserEnv?{write(e,t,n,r,o,i){const a=[e+"="+encodeURIComponent(t)];U.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),U.isString(r)&&a.push("path="+r),U.isString(o)&&a.push("domain="+o),!0===i&&a.push("secure"),document.cookie=a.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function Ae(e,t){return e&&!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const Ee=e=>e instanceof _e?{...e}:e;function Te(e,t){t=t||{};const n={};function r(e,t,n){return U.isPlainObject(e)&&U.isPlainObject(t)?U.merge.call({caseless:n},e,t):U.isPlainObject(t)?U.merge({},t):U.isArray(t)?t.slice():t}function o(e,t,n){return U.isUndefined(t)?U.isUndefined(e)?void 0:r(void 0,e,n):r(e,t,n)}function i(e,t){if(!U.isUndefined(t))return r(void 0,t)}function a(e,t){return U.isUndefined(t)?U.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function s(n,o,i){return i in t?r(n,o):i in e?r(void 0,n):void 0}const l={url:i,method:i,data:i,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:s,headers:(e,t)=>o(Ee(e),Ee(t),!0)};return U.forEach(Object.keys(Object.assign({},e,t)),(function(r){const i=l[r]||o,a=i(e[r],t[r],r);U.isUndefined(a)&&i!==s||(n[r]=a)})),n}var Pe=e=>{const t=Te({},e);let n,{data:r,withXSRFToken:o,xsrfHeaderName:i,xsrfCookieName:a,headers:s,auth:l}=t;if(t.headers=s=_e.from(s),t.url=ee(Ae(t.baseURL,t.url),e.params,e.paramsSerializer),l&&s.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):""))),U.isFormData(r))if(ce.hasStandardBrowserEnv||ce.hasStandardBrowserWebWorkerEnv)s.setContentType(void 0);else if(!1!==(n=s.getContentType())){const[e,...t]=n?n.split(";").map((e=>e.trim())).filter(Boolean):[];s.setContentType([e||"multipart/form-data",...t].join("; "))}if(ce.hasStandardBrowserEnv&&(o&&U.isFunction(o)&&(o=o(t)),o||!1!==o&&Se(t.url))){const e=i&&a&&Ce.read(a);e&&s.set(i,e)}return t},De="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,n){const r=Pe(e);let o=r.data;const i=_e.from(r.headers).normalize();let a,{responseType:s}=r;function l(){r.cancelToken&&r.cancelToken.unsubscribe(a),r.signal&&r.signal.removeEventListener("abort",a)}let c=new XMLHttpRequest;function u(){if(!c)return;const r=_e.from("getAllResponseHeaders"in c&&c.getAllResponseHeaders());xe((function(e){t(e),l()}),(function(e){n(e),l()}),{data:s&&"text"!==s&&"json"!==s?c.response:c.responseText,status:c.status,statusText:c.statusText,headers:r,config:e,request:c}),c=null}c.open(r.method.toUpperCase(),r.url,!0),c.timeout=r.timeout,"onloadend"in c?c.onloadend=u:c.onreadystatechange=function(){c&&4===c.readyState&&(0!==c.status||c.responseURL&&0===c.responseURL.indexOf("file:"))&&setTimeout(u)},c.onabort=function(){c&&(n(new $("Request aborted",$.ECONNABORTED,r,c)),c=null)},c.onerror=function(){n(new $("Network Error",$.ERR_NETWORK,r,c)),c=null},c.ontimeout=function(){let e=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded";const t=r.transitional||ne;r.timeoutErrorMessage&&(e=r.timeoutErrorMessage),n(new $(e,t.clarifyTimeoutError?$.ETIMEDOUT:$.ECONNABORTED,r,c)),c=null},void 0===o&&i.setContentType(null),"setRequestHeader"in c&&U.forEach(i.toJSON(),(function(e,t){c.setRequestHeader(t,e)})),U.isUndefined(r.withCredentials)||(c.withCredentials=!!r.withCredentials),s&&"json"!==s&&(c.responseType=r.responseType),"function"==typeof r.onDownloadProgress&&c.addEventListener("progress",Oe(r.onDownloadProgress,!0)),"function"==typeof r.onUploadProgress&&c.upload&&c.upload.addEventListener("progress",Oe(r.onUploadProgress)),(r.cancelToken||r.signal)&&(a=t=>{c&&(n(!t||t.type?new ke(null,e,c):t),c.abort(),c=null)},r.cancelToken&&r.cancelToken.subscribe(a),r.signal&&(r.signal.aborted?a():r.signal.addEventListener("abort",a)));const f=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(r.url);f&&-1===ce.protocols.indexOf(f)?n(new $("Unsupported protocol "+f+":",$.ERR_BAD_REQUEST,e)):c.send(o||null)}))},je=(e,t)=>{let n,r=new AbortController;const o=function(e){if(!n){n=!0,a();const t=e instanceof Error?e:this.reason;r.abort(t instanceof $?t:new ke(t instanceof Error?t.message:t))}};let i=t&&setTimeout((()=>{o(new $(`timeout ${t} of ms exceeded`,$.ETIMEDOUT))}),t);const a=()=>{e&&(i&&clearTimeout(i),i=null,e.forEach((e=>{e&&(e.removeEventListener?e.removeEventListener("abort",o):e.unsubscribe(o))})),e=null)};e.forEach((e=>e&&e.addEventListener&&e.addEventListener("abort",o)));const{signal:s}=r;return s.unsubscribe=a,[s,()=>{i&&clearTimeout(i),i=null}]};const Me=function*(e,t){let n=e.byteLength;if(!t||n{const i=async function*(e,t,n){for await(const r of e)yield*Me(ArrayBuffer.isView(r)?r:await n(String(r)),t)}(e,t,o);let a=0;return new ReadableStream({type:"bytes",async pull(e){const{done:t,value:o}=await i.next();if(t)return e.close(),void r();let s=o.byteLength;n&&n(a+=s),e.enqueue(new Uint8Array(o))},cancel(e){return r(e),i.return()}},{highWaterMark:2})},Le=(e,t)=>{const n=null!=e;return r=>setTimeout((()=>t({lengthComputable:n,total:e,loaded:r})))},Ne="function"==typeof fetch&&"function"==typeof Request&&"function"==typeof Response,Ie=Ne&&"function"==typeof ReadableStream,ze=Ne&&("function"==typeof TextEncoder?(Fe=new TextEncoder,e=>Fe.encode(e)):async e=>new Uint8Array(await new Response(e).arrayBuffer()));var Fe;const Be=Ie&&(()=>{let e=!1;const t=new Request(ce.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t})(),Ue=Ie&&!!(()=>{try{return U.isReadableStream(new Response("").body)}catch(e){}})(),$e={stream:Ue&&(e=>e.body)};var qe;Ne&&(qe=new Response,["text","arrayBuffer","blob","formData","stream"].forEach((e=>{!$e[e]&&($e[e]=U.isFunction(qe[e])?t=>t[e]():(t,n)=>{throw new $(`Response type '${e}' is not supported`,$.ERR_NOT_SUPPORT,n)})})));const We={http:null,xhr:De,fetch:Ne&&(async e=>{let{url:t,method:n,data:r,signal:o,cancelToken:i,timeout:a,onDownloadProgress:s,onUploadProgress:l,responseType:c,headers:u,withCredentials:f="same-origin",fetchOptions:h}=Pe(e);c=c?(c+"").toLowerCase():"text";let p,d,[m,g]=o||i||a?je([o,i],a):[];const v=()=>{!p&&setTimeout((()=>{m&&m.unsubscribe()})),p=!0};let y;try{if(l&&Be&&"get"!==n&&"head"!==n&&0!==(y=await(async(e,t)=>{const n=U.toFiniteNumber(e.getContentLength());return null==n?(async e=>null==e?0:U.isBlob(e)?e.size:U.isSpecCompliantForm(e)?(await new Request(e).arrayBuffer()).byteLength:U.isArrayBufferView(e)?e.byteLength:(U.isURLSearchParams(e)&&(e+=""),U.isString(e)?(await ze(e)).byteLength:void 0))(t):n})(u,r))){let e,n=new Request(t,{method:"POST",body:r,duplex:"half"});U.isFormData(r)&&(e=n.headers.get("content-type"))&&u.setContentType(e),n.body&&(r=Re(n.body,65536,Le(y,Oe(l)),null,ze))}U.isString(f)||(f=f?"cors":"omit"),d=new Request(t,{...h,signal:m,method:n.toUpperCase(),headers:u.normalize().toJSON(),body:r,duplex:"half",withCredentials:f});let o=await fetch(d);const i=Ue&&("stream"===c||"response"===c);if(Ue&&(s||i)){const e={};["status","statusText","headers"].forEach((t=>{e[t]=o[t]}));const t=U.toFiniteNumber(o.headers.get("content-length"));o=new Response(Re(o.body,65536,s&&Le(t,Oe(s,!0)),i&&v,ze),e)}c=c||"text";let a=await $e[U.findKey($e,c)||"text"](o,e);return!i&&v(),g&&g(),await new Promise(((t,n)=>{xe(t,n,{data:a,headers:_e.from(o.headers),status:o.status,statusText:o.statusText,config:e,request:d})}))}catch(t){if(v(),t&&"TypeError"===t.name&&/fetch/i.test(t.message))throw Object.assign(new $("Network Error",$.ERR_NETWORK,e,d),{cause:t.cause||t});throw $.from(t,t&&t.code,e,d)}})};U.forEach(We,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const He=e=>`- ${e}`,Ze=e=>U.isFunction(e)||null===e||!1===e;var Ve=e=>{e=U.isArray(e)?e:[e];const{length:t}=e;let n,r;const o={};for(let i=0;i`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));throw new $("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(He).join("\n"):" "+He(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r};function Ge(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new ke(null,e)}function Xe(e){return Ge(e),e.headers=_e.from(e.headers),e.data=be.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Ve(e.adapter||he.adapter)(e).then((function(t){return Ge(e),t.data=be.call(e,e.transformResponse,t),t.headers=_e.from(t.headers),t}),(function(t){return we(t)||(Ge(e),t&&t.response&&(t.response.data=be.call(e,e.transformResponse,t.response),t.response.headers=_e.from(t.response.headers))),Promise.reject(t)}))}const Je={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{Je[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));const Ye={};Je.transitional=function(e,t,n){function r(e,t){return"[Axios v1.7.2] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,o,i)=>{if(!1===e)throw new $(r(o," has been removed"+(t?" in "+t:"")),$.ERR_DEPRECATED);return t&&!Ye[o]&&(Ye[o]=!0,console.warn(r(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,o,i)}};var Ke={assertOptions:function(e,t,n){if("object"!=typeof e)throw new $("options must be an object",$.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let o=r.length;for(;o-- >0;){const i=r[o],a=t[i];if(a){const t=e[i],n=void 0===t||a(t,i,e);if(!0!==n)throw new $("option "+i+" must be "+n,$.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new $("Unknown option "+i,$.ERR_BAD_OPTION)}},validators:Je};const Qe=Ke.validators;class et{constructor(e){this.defaults=e,this.interceptors={request:new te,response:new te}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t;Error.captureStackTrace?Error.captureStackTrace(t={}):t=new Error;const n=t.stack?t.stack.replace(/^.+\n/,""):"";try{e.stack?n&&!String(e.stack).endsWith(n.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+n):e.stack=n}catch(e){}}throw e}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Te(this.defaults,t);const{transitional:n,paramsSerializer:r,headers:o}=t;void 0!==n&&Ke.assertOptions(n,{silentJSONParsing:Qe.transitional(Qe.boolean),forcedJSONParsing:Qe.transitional(Qe.boolean),clarifyTimeoutError:Qe.transitional(Qe.boolean)},!1),null!=r&&(U.isFunction(r)?t.paramsSerializer={serialize:r}:Ke.assertOptions(r,{encode:Qe.function,serialize:Qe.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let i=o&&U.merge(o.common,o[t.method]);o&&U.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete o[e]})),t.headers=_e.concat(i,o);const a=[];let s=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(s=s&&e.synchronous,a.unshift(e.fulfilled,e.rejected))}));const l=[];let c;this.interceptors.response.forEach((function(e){l.push(e.fulfilled,e.rejected)}));let u,f=0;if(!s){const e=[Xe.bind(this),void 0];for(e.unshift.apply(e,a),e.push.apply(e,l),u=e.length,c=Promise.resolve(t);f{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null})),this.promise.then=e=>{let t;const r=new Promise((e=>{n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e,r,o){n.reason||(n.reason=new ke(e,r,o),t(n.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;return{token:new nt((function(t){e=t})),cancel:e}}}var rt=nt;const ot={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(ot).forEach((([e,t])=>{ot[t]=e}));var it=ot;const at=function e(t){const n=new tt(t),o=r(tt.prototype.request,n);return U.extend(o,tt.prototype,n,{allOwnKeys:!0}),U.extend(o,n,null,{allOwnKeys:!0}),o.create=function(n){return e(Te(t,n))},o}(he);at.Axios=tt,at.CanceledError=ke,at.CancelToken=rt,at.isCancel=we,at.VERSION="1.7.2",at.toFormData=X,at.AxiosError=$,at.Cancel=at.CanceledError,at.all=function(e){return Promise.all(e)},at.spread=function(e){return function(t){return e.apply(null,t)}},at.isAxiosError=function(e){return U.isObject(e)&&!0===e.isAxiosError},at.mergeConfig=Te,at.AxiosHeaders=_e,at.formToJSON=e=>ue(U.isHTMLForm(e)?new FormData(e):e),at.getAdapter=Ve,at.HttpStatusCode=it,at.default=at,e.exports=at},5478:function(e,t,n){"use strict";function r(e){return null==e?[]:Array.isArray(e)?e:Array.from(e)}n.d(t,{A:function(){return r}})},3663:function(e,t,n){"use strict";n.d(t,{A:function(){return s}});var r=n(7268),o=n(7947);function i(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===o.g&&t.documentElement.namespaceURI===o.g?t.createElement(e):t.createElementNS(n,e)}}function a(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function s(e){var t=(0,r.A)(e);return(t.local?a:i)(t)}},9062:function(e,t,n){"use strict";n.r(t),n.d(t,{create:function(){return i},creator:function(){return r.A},local:function(){return s},matcher:function(){return c.A},namespace:function(){return u.A},namespaces:function(){return f.A},pointer:function(){return h.A},pointers:function(){return d},select:function(){return o.A},selectAll:function(){return v},selection:function(){return g.Ay},selector:function(){return y.A},selectorAll:function(){return _.A},style:function(){return b.j},window:function(){return w.A}});var r=n(3663),o=n(183);function i(e){return(0,o.A)((0,r.A)(e).call(document.documentElement))}var a=0;function s(){return new l}function l(){this._="@"+(++a).toString(36)}l.prototype=s.prototype={constructor:l,get:function(e){for(var t=this._;!(t in e);)if(!(e=e.parentNode))return;return e[t]},set:function(e,t){return e[this._]=t},remove:function(e){return this._ in e&&delete e[this._]},toString:function(){return this._}};var c=n(6541),u=n(7268),f=n(7947),h=n(5970),p=n(2324);function d(e,t){return e.target&&(e=(0,p.A)(e),void 0===t&&(t=e.currentTarget),e=e.touches||[e]),Array.from(e,(e=>(0,h.A)(e,t)))}var m=n(5478),g=n(6452);function v(e){return"string"==typeof e?new g.LN([document.querySelectorAll(e)],[document.documentElement]):new g.LN([(0,m.A)(e)],g.zr)}var y=n(574),_=n(747),b=n(3683),w=n(6747)},6541:function(e,t,n){"use strict";function r(e){return function(){return this.matches(e)}}function o(e){return function(t){return t.matches(e)}}n.d(t,{A:function(){return r},j:function(){return o}})},7268:function(e,t,n){"use strict";n.d(t,{A:function(){return o}});var r=n(7947);function o(e){var t=e+="",n=t.indexOf(":");return n>=0&&"xmlns"!==(t=e.slice(0,n))&&(e=e.slice(n+1)),r.A.hasOwnProperty(t)?{space:r.A[t],local:e}:e}},7947:function(e,t,n){"use strict";n.d(t,{g:function(){return r}});var r="http://www.w3.org/1999/xhtml";t.A={svg:"http://www.w3.org/2000/svg",xhtml:r,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"}},5970:function(e,t,n){"use strict";n.d(t,{A:function(){return o}});var r=n(2324);function o(e,t){if(e=(0,r.A)(e),void 0===t&&(t=e.currentTarget),t){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var o=n.createSVGPoint();return o.x=e.clientX,o.y=e.clientY,[(o=o.matrixTransform(t.getScreenCTM().inverse())).x,o.y]}if(t.getBoundingClientRect){var i=t.getBoundingClientRect();return[e.clientX-i.left-t.clientLeft,e.clientY-i.top-t.clientTop]}}return[e.pageX,e.pageY]}},183:function(e,t,n){"use strict";n.d(t,{A:function(){return o}});var r=n(6452);function o(e){return"string"==typeof e?new r.LN([[document.querySelector(e)]],[document.documentElement]):new r.LN([[e]],r.zr)}},6452:function(e,t,n){"use strict";n.d(t,{LN:function(){return re},Ay:function(){return ie},zr:function(){return ne}});var r=n(574),o=n(5478),i=n(747),a=n(6541),s=Array.prototype.find;function l(){return this.firstElementChild}var c=Array.prototype.filter;function u(){return Array.from(this.children)}function f(e){return new Array(e.length)}function h(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}function p(e,t,n,r,o,i){for(var a,s=0,l=t.length,c=i.length;st?1:e>=t?0:NaN}h.prototype={constructor:h,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};var y=n(7268);function _(e){return function(){this.removeAttribute(e)}}function b(e){return function(){this.removeAttributeNS(e.space,e.local)}}function w(e,t){return function(){this.setAttribute(e,t)}}function k(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function x(e,t){return function(){var n=t.apply(this,arguments);null==n?this.removeAttribute(e):this.setAttribute(e,n)}}function O(e,t){return function(){var n=t.apply(this,arguments);null==n?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}var S=n(3683);function C(e){return function(){delete this[e]}}function A(e,t){return function(){this[e]=t}}function E(e,t){return function(){var n=t.apply(this,arguments);null==n?delete this[e]:this[e]=n}}function T(e){return e.trim().split(/^|\s+/)}function P(e){return e.classList||new D(e)}function D(e){this._node=e,this._names=T(e.getAttribute("class")||"")}function j(e,t){for(var n=P(e),r=-1,o=t.length;++r=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};var H=n(3663);function Z(){return null}function V(){var e=this.parentNode;e&&e.removeChild(this)}function G(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function X(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function J(e){return function(){var t=this.__on;if(t){for(var n,r=0,o=-1,i=t.length;r=S&&(S=O+1);!(x=w[S])&&++S<_;);k._next=x||null}}return(s=new re(s,o))._enter=l,s._exit=c,s},enter:function(){return new re(this._enter||this._groups.map(f),this._parents)},exit:function(){return new re(this._exit||this._groups.map(f),this._parents)},join:function(e,t,n){var r=this.enter(),o=this,i=this.exit();return"function"==typeof e?(r=e(r))&&(r=r.selection()):r=r.append(e+""),null!=t&&(o=t(o))&&(o=o.selection()),null==n?i.remove():n(i),r&&o?r.merge(o).order():o},merge:function(e){for(var t=e.selection?e.selection():e,n=this._groups,r=t._groups,o=n.length,i=r.length,a=Math.min(o,i),s=new Array(o),l=0;l=0;)(r=o[i])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(e){function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}e||(e=v);for(var n=this._groups,r=n.length,o=new Array(r),i=0;i1?this.each((null==t?C:"function"==typeof t?E:A)(e,t)):this.node()[e]},classed:function(e,t){var n=T(e+"");if(arguments.length<2){for(var r=P(this.node()),o=-1,i=n.length;++o=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}}))}(e+""),a=i.length;if(!(arguments.length<2)){for(s=t?Y:J,r=0;r1?this.each((null==t?o:"function"==typeof t?a:i)(e,t,null==n?"":n)):l(this.node(),e)}function l(e,t){return e.style.getPropertyValue(t)||(0,r.A)(e).getComputedStyle(e,null).getPropertyValue(t)}},574:function(e,t,n){"use strict";function r(){}function o(e){return null==e?r:function(){return this.querySelector(e)}}n.d(t,{A:function(){return o}})},747:function(e,t,n){"use strict";function r(){return[]}function o(e){return null==e?r:function(){return this.querySelectorAll(e)}}n.d(t,{A:function(){return o}})},2324:function(e,t,n){"use strict";function r(e){let t;for(;t=e.sourceEvent;)e=t;return e}n.d(t,{A:function(){return r}})},6747:function(e,t,n){"use strict";function r(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}n.d(t,{A:function(){return r}})},7662:function(e,t,n){"use strict";n.r(t),n.d(t,{active:function(){return ut},interrupt:function(){return N},transition:function(){return ot}});var r,o,i=n(6452),a=n(2996),s=0,l=0,c=0,u=1e3,f=0,h=0,p=0,d="object"==typeof performance&&performance.now?performance:Date,m="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function g(){return h||(m(v),h=d.now()+p)}function v(){h=0}function y(){this._call=this._time=this._next=null}function _(e,t,n){var r=new y;return r.restart(e,t,n),r}function b(){h=(f=d.now())+p,s=l=0;try{!function(){g(),++s;for(var e,t=r;t;)(e=h-t._time)>=0&&t._call.call(null,e),t=t._next;--s}()}finally{s=0,function(){for(var e,t,n=r,i=1/0;n;)n._call?(i>n._time&&(i=n._time),e=n,n=n._next):(t=n._next,n._next=null,n=e?e._next=t:r=t);o=e,k(i)}(),h=0}}function w(){var e=d.now(),t=e-f;t>u&&(p-=t,f=e)}function k(e){s||(l&&(l=clearTimeout(l)),e-h>24?(e<1/0&&(l=setTimeout(b,e-d.now()-p)),c&&(c=clearInterval(c))):(c||(f=d.now(),c=setInterval(w,u)),s=1,m(b)))}function x(e,t,n){var r=new y;return t=null==t?0:+t,r.restart((n=>{r.stop(),e(n+t)}),t,n),r}y.prototype=_.prototype={constructor:y,restart:function(e,t,n){if("function"!=typeof e)throw new TypeError("callback is not a function");n=(null==n?g():+n)+(null==t?0:+t),this._next||o===this||(o?o._next=this:r=this,o=this),this._call=e,this._time=n,k()},stop:function(){this._call&&(this._call=null,this._time=1/0,k())}};var O=(0,a.A)("start","end","cancel","interrupt"),S=[],C=0,A=1,E=2,T=3,P=5,D=6;function j(e,t,n,r,o,i){var a=e.__transition;if(a){if(n in a)return}else e.__transition={};!function(e,t,n){var r,o=e.__transition;function i(l){var c,u,f,h;if(n.state!==A)return s();for(c in o)if((h=o[c]).name===n.name){if(h.state===T)return x(i);4===h.state?(h.state=D,h.timer.stop(),h.on.call("interrupt",e,e.__data__,h.index,h.group),delete o[c]):+cC)throw new Error("too late; already scheduled");return n}function R(e,t){var n=L(e,t);if(n.state>T)throw new Error("too late; already running");return n}function L(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}function N(e,t){var n,r,o,i=e.__transition,a=!0;if(i){for(o in t=null==t?null:t+"",i)(n=i[o]).name===t?(r=n.state>E&&n.state180?t+=360:t-e>180&&(e+=360),i.push({i:n.push(o(n)+"rotate(",null,r)-2,x:I(e,t)})):t&&n.push(o(n)+"rotate("+t+r)}(i.rotate,a.rotate,s,l),function(e,t,n,i){e!==t?i.push({i:n.push(o(n)+"skewX(",null,r)-2,x:I(e,t)}):t&&n.push(o(n)+"skewX("+t+r)}(i.skewX,a.skewX,s,l),function(e,t,n,r,i,a){if(e!==n||t!==r){var s=i.push(o(i)+"scale(",null,",",null,")");a.push({i:s-4,x:I(e,n)},{i:s-2,x:I(t,r)})}else 1===n&&1===r||i.push(o(i)+"scale("+n+","+r+")")}(i.scaleX,i.scaleY,a.scaleX,a.scaleY,s,l),i=a=null,function(e){for(var t,n=-1,r=l.length;++n>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===n?me(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===n?me(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=oe.exec(e))?new ve(t[1],t[2],t[3],1):(t=ie.exec(e))?new ve(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=ae.exec(e))?me(t[1],t[2],t[3],t[4]):(t=se.exec(e))?me(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=le.exec(e))?xe(t[1],t[2]/100,t[3]/100,1):(t=ce.exec(e))?xe(t[1],t[2]/100,t[3]/100,t[4]):ue.hasOwnProperty(e)?de(ue[e]):"transparent"===e?new ve(NaN,NaN,NaN,0):null}function de(e){return new ve(e>>16&255,e>>8&255,255&e,1)}function me(e,t,n,r){return r<=0&&(e=t=n=NaN),new ve(e,t,n,r)}function ge(e,t,n,r){return 1===arguments.length?((o=e)instanceof Y||(o=pe(o)),o?new ve((o=o.rgb()).r,o.g,o.b,o.opacity):new ve):new ve(e,t,n,null==r?1:r);var o}function ve(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}function ye(){return`#${ke(this.r)}${ke(this.g)}${ke(this.b)}`}function _e(){const e=be(this.opacity);return`${1===e?"rgb(":"rgba("}${we(this.r)}, ${we(this.g)}, ${we(this.b)}${1===e?")":`, ${e})`}`}function be(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function we(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function ke(e){return((e=we(e))<16?"0":"")+e.toString(16)}function xe(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Se(e,t,n,r)}function Oe(e){if(e instanceof Se)return new Se(e.h,e.s,e.l,e.opacity);if(e instanceof Y||(e=pe(e)),!e)return new Se;if(e instanceof Se)return e;var t=(e=e.rgb()).r/255,n=e.g/255,r=e.b/255,o=Math.min(t,n,r),i=Math.max(t,n,r),a=NaN,s=i-o,l=(i+o)/2;return s?(a=t===i?(n-r)/s+6*(n0&&l<1?0:a,new Se(a,s,l,e.opacity)}function Se(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}function Ce(e){return(e=(e||0)%360)<0?e+360:e}function Ae(e){return Math.max(0,Math.min(1,e||0))}function Ee(e,t,n){return 255*(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)}function Te(e,t,n,r,o){var i=e*e,a=i*e;return((1-3*e+3*i-a)*t+(4-6*i+3*a)*n+(1+3*e+3*i-3*a)*r+a*o)/6}X(Y,pe,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:fe,formatHex:fe,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return Oe(this).formatHsl()},formatRgb:he,toString:he}),X(ve,ge,J(Y,{brighter(e){return e=null==e?Q:Math.pow(Q,e),new ve(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=null==e?K:Math.pow(K,e),new ve(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new ve(we(this.r),we(this.g),we(this.b),be(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:ye,formatHex:ye,formatHex8:function(){return`#${ke(this.r)}${ke(this.g)}${ke(this.b)}${ke(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:_e,toString:_e})),X(Se,(function(e,t,n,r){return 1===arguments.length?Oe(e):new Se(e,t,n,null==r?1:r)}),J(Y,{brighter(e){return e=null==e?Q:Math.pow(Q,e),new Se(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?K:Math.pow(K,e),new Se(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,o=2*n-r;return new ve(Ee(e>=240?e-240:e+120,o,r),Ee(e,o,r),Ee(e<120?e+240:e-120,o,r),this.opacity)},clamp(){return new Se(Ce(this.h),Ae(this.s),Ae(this.l),be(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=be(this.opacity);return`${1===e?"hsl(":"hsla("}${Ce(this.h)}, ${100*Ae(this.s)}%, ${100*Ae(this.l)}%${1===e?")":`, ${e})`}`}}));var Pe=e=>()=>e;function De(e,t){var n=t-e;return n?function(e,t){return function(n){return e+n*t}}(e,n):Pe(isNaN(e)?t:e)}var je=function e(t){var n=function(e){return 1==(e=+e)?De:function(t,n){return n-t?function(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}(t,n,e):Pe(isNaN(t)?n:t)}}(t);function r(e,t){var r=n((e=ge(e)).r,(t=ge(t)).r),o=n(e.g,t.g),i=n(e.b,t.b),a=De(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=o(t),e.b=i(t),e.opacity=a(t),e+""}}return r.gamma=e,r}(1);function Me(e){return function(t){var n,r,o=t.length,i=new Array(o),a=new Array(o),s=new Array(o);for(n=0;n=1?(n=1,t-1):Math.floor(n*t),o=e[r],i=e[r+1],a=r>0?e[r-1]:2*o-i,s=ri&&(o=t.slice(i,o),s[a]?s[a]+=o:s[++a]=o),(n=n[0])===(r=r[0])?s[a]?s[a]+=r:s[++a]=r:(s[++a]=null,l.push({i:a,x:I(n,r)})),i=Le.lastIndex;return i=0&&(e=e.slice(0,t)),!e||"start"===e}))}(t)?M:R;return function(){var a=i(this,e),s=a.on;s!==r&&(o=(r=s).copy()).on(t,n),a.on=o}}(n,e,t))},attr:function(e,t){var n=(0,H.A)(e),r="transform"===n?W:Ie;return this.attrTween(e,"function"==typeof t?(n.local?qe:$e)(n,r,G(this,"attr."+e,t)):null==t?(n.local?Fe:ze)(n):(n.local?Ue:Be)(n,r,t))},attrTween:function(e,t){var n="attr."+e;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==t)return this.tween(n,null);if("function"!=typeof t)throw new Error;var r=(0,H.A)(e);return this.tween(n,(r.local?We:He)(r,t))},style:function(e,t,n){var r="transform"==(e+="")?q:Ie;return null==t?this.styleTween(e,function(e,t){var n,r,o;return function(){var i=(0,et.j)(this,e),a=(this.style.removeProperty(e),(0,et.j)(this,e));return i===a?null:i===n&&a===r?o:o=t(n=i,r=a)}}(e,r)).on("end.style."+e,tt(e)):"function"==typeof t?this.styleTween(e,function(e,t,n){var r,o,i;return function(){var a=(0,et.j)(this,e),s=n(this),l=s+"";return null==s&&(this.style.removeProperty(e),l=s=(0,et.j)(this,e)),a===l?null:a===r&&l===o?i:(o=l,i=t(r=a,s))}}(e,r,G(this,"style."+e,t))).each(function(e,t){var n,r,o,i,a="style."+t,s="end."+a;return function(){var l=R(this,e),c=l.on,u=null==l.value[a]?i||(i=tt(t)):void 0;c===n&&o===u||(r=(n=c).copy()).on(s,o=u),l.on=r}}(this._id,e)):this.styleTween(e,function(e,t,n){var r,o,i=n+"";return function(){var a=(0,et.j)(this,e);return a===i?null:a===r?o:o=t(r=a,n)}}(e,r,t),n).on("end.style."+e,null)},styleTween:function(e,t,n){var r="style."+(e+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==t)return this.tween(r,null);if("function"!=typeof t)throw new Error;return this.tween(r,function(e,t,n){var r,o;function i(){var i=t.apply(this,arguments);return i!==o&&(r=(o=i)&&function(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}(e,i,n)),r}return i._value=t,i}(e,t,null==n?"":n))},text:function(e){return this.tween("text","function"==typeof e?function(e){return function(){var t=e(this);this.textContent=null==t?"":t}}(G(this,"text",e)):function(e){return function(){this.textContent=e}}(null==e?"":e+""))},textTween:function(e){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(null==e)return this.tween(t,null);if("function"!=typeof e)throw new Error;return this.tween(t,function(e){var t,n;function r(){var r=e.apply(this,arguments);return r!==n&&(t=(n=r)&&function(e){return function(t){this.textContent=e.call(this,t)}}(r)),t}return r._value=e,r}(e))},remove:function(){return this.on("end.remove",function(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}(this._id))},tween:function(e,t){var n=this._id;if(e+="",arguments.length<2){for(var r,o=L(this.node(),n).tween,i=0,a=o.length;iA&&n.name===t)return new rt([[e]],ct,t,+r);return null}},9529:function(e,t,n){"use strict";n.r(t),n.d(t,{ZoomTransform:function(){return be},zoom:function(){return De},zoomIdentity:function(){return we},zoomTransform:function(){return ke}});var r=n(2996);function o(){}function i(e){return null==e?o:function(){return this.querySelector(e)}}function a(e){return"object"==typeof e&&"length"in e?e:Array.from(e)}function s(){return[]}function l(e){return function(t){return t.matches(e)}}var c=Array.prototype.find;function u(){return this.firstElementChild}var f=Array.prototype.filter;function h(){return this.children}function p(e){return new Array(e.length)}function d(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}function m(e,t,n,r,o,i){for(var a,s=0,l=t.length,c=i.length;st?1:e>=t?0:NaN}d.prototype={constructor:d,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};var _="http://www.w3.org/1999/xhtml",b={svg:"http://www.w3.org/2000/svg",xhtml:_,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function w(e){var t=e+="",n=t.indexOf(":");return n>=0&&"xmlns"!==(t=e.slice(0,n))&&(e=e.slice(n+1)),b.hasOwnProperty(t)?{space:b[t],local:e}:e}function k(e){return function(){this.removeAttribute(e)}}function x(e){return function(){this.removeAttributeNS(e.space,e.local)}}function O(e,t){return function(){this.setAttribute(e,t)}}function S(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function C(e,t){return function(){var n=t.apply(this,arguments);null==n?this.removeAttribute(e):this.setAttribute(e,n)}}function A(e,t){return function(){var n=t.apply(this,arguments);null==n?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}function E(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function T(e){return function(){this.style.removeProperty(e)}}function P(e,t,n){return function(){this.style.setProperty(e,t,n)}}function D(e,t,n){return function(){var r=t.apply(this,arguments);null==r?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function j(e){return function(){delete this[e]}}function M(e,t){return function(){this[e]=t}}function R(e,t){return function(){var n=t.apply(this,arguments);null==n?delete this[e]:this[e]=n}}function L(e){return e.trim().split(/^|\s+/)}function N(e){return e.classList||new I(e)}function I(e){this._node=e,this._names=L(e.getAttribute("class")||"")}function z(e,t){for(var n=N(e),r=-1,o=t.length;++r=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};var ce=[null];function ue(e,t){this._groups=e,this._parents=t}function fe(e){return"string"==typeof e?new ue([[document.querySelector(e)]],[document.documentElement]):new ue([[e]],ce)}function he(e){e.preventDefault(),e.stopImmediatePropagation()}function pe(e){return((e=Math.exp(e))+1/e)/2}ue.prototype=function(){return new ue([[document.documentElement]],ce)}.prototype={constructor:ue,select:function(e){"function"!=typeof e&&(e=i(e));for(var t=this._groups,n=t.length,r=new Array(n),o=0;o=S&&(S=O+1);!(x=w[S])&&++S<_;);k._next=x||null}}return(l=new ue(l,o))._enter=c,l._exit=u,l},enter:function(){return new ue(this._enter||this._groups.map(p),this._parents)},exit:function(){return new ue(this._exit||this._groups.map(p),this._parents)},join:function(e,t,n){var r=this.enter(),o=this,i=this.exit();return r="function"==typeof e?e(r):r.append(e+""),null!=t&&(o=t(o)),null==n?i.remove():n(i),r&&o?r.merge(o).order():o},merge:function(e){if(!(e instanceof ue))throw new Error("invalid merge");for(var t=this._groups,n=e._groups,r=t.length,o=n.length,i=Math.min(r,o),a=new Array(r),s=0;s=0;)(r=o[i])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(e){function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}e||(e=y);for(var n=this._groups,r=n.length,o=new Array(r),i=0;i1?this.each((null==t?T:"function"==typeof t?D:P)(e,t,null==n?"":n)):function(e,t){return e.style.getPropertyValue(t)||E(e).getComputedStyle(e,null).getPropertyValue(t)}(this.node(),e)},property:function(e,t){return arguments.length>1?this.each((null==t?j:"function"==typeof t?R:M)(e,t)):this.node()[e]},classed:function(e,t){var n=L(e+"");if(arguments.length<2){for(var r=N(this.node()),o=-1,i=n.length;++o=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}}))}(e+""),a=i.length;if(!(arguments.length<2)){for(s=t?ie:oe,r=0;r()=>e;function _e(e,{sourceEvent:t,target:n,transform:r,dispatch:o}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:o}})}function be(e,t,n){this.k=e,this.x=t,this.y=n}be.prototype={constructor:be,scale:function(e){return 1===e?this:new be(this.k*e,this.x,this.y)},translate:function(e,t){return 0===e&0===t?this:new be(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var we=new be(1,0,0);function ke(e){for(;!e.__zoom;)if(!(e=e.parentNode))return we;return e.__zoom}function xe(e){e.stopImmediatePropagation()}function Oe(e){e.preventDefault(),e.stopImmediatePropagation()}function Se(e){return!(e.ctrlKey&&"wheel"!==e.type||e.button)}function Ce(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e).hasAttribute("viewBox")?[[(e=e.viewBox.baseVal).x,e.y],[e.x+e.width,e.y+e.height]]:[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]:[[0,0],[e.clientWidth,e.clientHeight]]}function Ae(){return this.__zoom||we}function Ee(e){return-e.deltaY*(1===e.deltaMode?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function Te(){return navigator.maxTouchPoints||"ontouchstart"in this}function Pe(e,t,n){var r=e.invertX(t[0][0])-n[0][0],o=e.invertX(t[1][0])-n[1][0],i=e.invertY(t[0][1])-n[0][1],a=e.invertY(t[1][1])-n[1][1];return e.translate(o>r?(r+o)/2:Math.min(0,r)||Math.max(0,o),a>i?(i+a)/2:Math.min(0,i)||Math.max(0,a))}function De(){var e,t,n,o=Se,i=Ce,a=Pe,s=Ee,l=Te,c=[0,1/0],u=[[-1/0,-1/0],[1/0,1/0]],f=250,h=de,p=(0,r.A)("start","zoom","end"),d=500,m=150,g=0,v=10;function y(e){e.property("__zoom",Ae).on("wheel.zoom",S,{passive:!1}).on("mousedown.zoom",C).on("dblclick.zoom",A).filter(l).on("touchstart.zoom",E).on("touchmove.zoom",T).on("touchend.zoom touchcancel.zoom",P).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function _(e,t){return(t=Math.max(c[0],Math.min(c[1],t)))===e.k?e:new be(t,e.x,e.y)}function b(e,t,n){var r=t[0]-n[0]*e.k,o=t[1]-n[1]*e.k;return r===e.x&&o===e.y?e:new be(e.k,r,o)}function w(e){return[(+e[0][0]+ +e[1][0])/2,(+e[0][1]+ +e[1][1])/2]}function k(e,t,n,r){e.on("start.zoom",(function(){x(this,arguments).event(r).start()})).on("interrupt.zoom end.zoom",(function(){x(this,arguments).event(r).end()})).tween("zoom",(function(){var e=this,o=arguments,a=x(e,o).event(r),s=i.apply(e,o),l=null==n?w(s):"function"==typeof n?n.apply(e,o):n,c=Math.max(s[1][0]-s[0][0],s[1][1]-s[0][1]),u=e.__zoom,f="function"==typeof t?t.apply(e,o):t,p=h(u.invert(l).concat(c/u.k),f.invert(l).concat(c/f.k));return function(e){if(1===e)e=f;else{var t=p(e),n=c/t[2];e=new be(n,l[0]-t[0]*n,l[1]-t[1]*n)}a.zoom(null,e)}}))}function x(e,t,n){return!n&&e.__zooming||new O(e,t)}function O(e,t){this.that=e,this.args=t,this.active=0,this.sourceEvent=null,this.extent=i.apply(e,t),this.taps=0}function S(e,...t){if(o.apply(this,arguments)){var n=x(this,t).event(e),r=this.__zoom,i=Math.max(c[0],Math.min(c[1],r.k*Math.pow(2,s.apply(this,arguments)))),l=(0,ge.A)(e);if(n.wheel)n.mouse[0][0]===l[0]&&n.mouse[0][1]===l[1]||(n.mouse[1]=r.invert(n.mouse[0]=l)),clearTimeout(n.wheel);else{if(r.k===i)return;n.mouse=[l,r.invert(l)],(0,ve.interrupt)(this),n.start()}Oe(e),n.wheel=setTimeout((function(){n.wheel=null,n.end()}),m),n.zoom("mouse",a(b(_(r,i),n.mouse[0],n.mouse[1]),n.extent,u))}}function C(e,...t){if(!n&&o.apply(this,arguments)){var r=e.currentTarget,i=x(this,t,!0).event(e),s=(0,me.A)(e.view).on("mousemove.zoom",(function(e){if(Oe(e),!i.moved){var t=e.clientX-c,n=e.clientY-f;i.moved=t*t+n*n>g}i.event(e).zoom("mouse",a(b(i.that.__zoom,i.mouse[0]=(0,ge.A)(e,r),i.mouse[1]),i.extent,u))}),!0).on("mouseup.zoom",(function(e){s.on("mousemove.zoom mouseup.zoom",null),function(e,t){var n=e.document.documentElement,r=fe(e).on("dragstart.drag",null);t&&(r.on("click.drag",he,!0),setTimeout((function(){r.on("click.drag",null)}),0)),"onselectstart"in n?r.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}(e.view,i.moved),Oe(e),i.event(e).end()}),!0),l=(0,ge.A)(e,r),c=e.clientX,f=e.clientY;!function(e){var t=e.document.documentElement,n=fe(e).on("dragstart.drag",he,!0);"onselectstart"in t?n.on("selectstart.drag",he,!0):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect="none")}(e.view),xe(e),i.mouse=[l,this.__zoom.invert(l)],(0,ve.interrupt)(this),i.start()}}function A(e,...t){if(o.apply(this,arguments)){var n=this.__zoom,r=(0,ge.A)(e.changedTouches?e.changedTouches[0]:e,this),s=n.invert(r),l=n.k*(e.shiftKey?.5:2),c=a(b(_(n,l),r,s),i.apply(this,t),u);Oe(e),f>0?(0,me.A)(this).transition().duration(f).call(k,c,r,e):(0,me.A)(this).call(y.transform,c,r,e)}}function E(n,...r){if(o.apply(this,arguments)){var i,a,s,l,c=n.touches,u=c.length,f=x(this,r,n.changedTouches.length===u).event(n);for(xe(n),a=0;a + + + + + Min Zoom Level (minZoomLevel) | Meridian Web SDK + + + + + + + + + + + + + +

+
+

+ This demo shows the result of specifying a minimum zoom level + (minZoomLevel) of 0.01. By zooming out you see how this + affects the map. The default value is dynamically calculated and matches + the initial map scale (further zooming out is not allowed). +

+
+ + + + + diff --git a/examples/openStream/index.html b/examples/openStream/index.html new file mode 100644 index 00000000..c54ded21 --- /dev/null +++ b/examples/openStream/index.html @@ -0,0 +1,72 @@ + + + + + + + api.openStream(), All Tags on a single Floor | Meridian Web SDK + + + + + + + + + + + + + + +
+

+ This is a standalone socket example. You can see the output in your Dev + Tools console and the code by clicking the "Code" button on the lower + left. +

+
+ + + + + diff --git a/examples/openStreamLocation/index.html b/examples/openStreamLocation/index.html new file mode 100644 index 00000000..45127c3f --- /dev/null +++ b/examples/openStreamLocation/index.html @@ -0,0 +1,69 @@ + + + + + + api.openStream(), All Tags at a Location | Meridian Web SDK + + + + + + + + + + + + + +
+

+ This is a standalone socket example. You can see the output in your Dev + Tools console and the code by clicking the "Code" button on the lower + left. +

+
+ + + + + diff --git a/examples/openStreamTag/index.html b/examples/openStreamTag/index.html new file mode 100644 index 00000000..8f2dfed4 --- /dev/null +++ b/examples/openStreamTag/index.html @@ -0,0 +1,66 @@ + + + + + + api.openStream(), Single Tag example | Meridian Web SDK + + + + + + + + + + + + + +
+

+ This is a standalone socket example. You can see the output in your Dev + Tools console and the code by clicking the "Code" button on the lower + left. +

+
+ + + + + diff --git a/examples/openStreamTagLabel/index.html b/examples/openStreamTagLabel/index.html new file mode 100644 index 00000000..9c8d394a --- /dev/null +++ b/examples/openStreamTagLabel/index.html @@ -0,0 +1,66 @@ + + + + + + api.openStream(), Tag label | Meridian Web SDK + + + + + + + + + + + + + +
+

+ This is a standalone socket example. You can see the output in your Dev + Tools console and the code by clicking the "Code" button on the lower + left. +

+
+ + + + + diff --git a/examples/openStreamZone/index.html b/examples/openStreamZone/index.html new file mode 100644 index 00000000..275ec239 --- /dev/null +++ b/examples/openStreamZone/index.html @@ -0,0 +1,66 @@ + + + + + + api.openStream(), Tag Zone example | Meridian Web SDK + + + + + + + + + + + + + +
+

+ This is a standalone socket example. You can see the output in your Dev + Tools console and the code by clicking the "Code" button on the lower + left. +

+
+ + + + + diff --git a/examples/option-toggles/index.html b/examples/option-toggles/index.html new file mode 100644 index 00000000..ae73f970 --- /dev/null +++ b/examples/option-toggles/index.html @@ -0,0 +1,320 @@ + + + + + + Option Toggles | Meridian Web SDK + + + + + + + + + + + + + +
+
+ +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + + + +
+
+ +
+ + + + + diff --git a/examples/option-toggles/style.css b/examples/option-toggles/style.css new file mode 100644 index 00000000..afd3e7af --- /dev/null +++ b/examples/option-toggles/style.css @@ -0,0 +1,78 @@ +body { + font-family: sans-serif; +} + +.container { + width: 900px; + margin: 0 auto; +} + +.map { + position: fixed; + top: 0; + left: 0; + width: calc(100vw - 400px); + height: 100vh; + border: 0; + max-width: 100%; +} + +.controls-container { + box-sizing: border-box; + box-shadow: -1px 0 0 0 rgba(0, 0, 0, 0.1), 0 0 4px rgba(0, 0, 0, 0.2); + background: hsl(210, 30%, 92%); + position: fixed; + top: 0; + right: 0; + width: 400px; + height: 100vh; + padding: 20px; + overflow-y: auto; +} + +.controls { + margin-bottom: 20px; + background: hsl(210, 50%, 98%); + color: hsl(210, 80%, 30%); + border: 1px solid hsl(210, 30%, 80%); + border-radius: 4px; + overflow: hidden; +} + +.controls__item { + display: flex; + padding: 16px 8px; + user-select: none; + align-items: baseline; +} + +.controls__item > span { + margin-left: 10px; +} + +.controls__item + .controls__item { + border-top: 1px solid hsl(210, 30%, 90%); +} + +.controls__item:hover { + background: hsl(210, 50%, 95%); +} + +@media only screen and (max-width: 900px) { + .container { + max-width: 340px; + width: auto; + margin: 0 auto; + } + .controls-container { + float: none; + margin: 10px 0 0 0; + width: 100%; + max-width: auto; + } + + .map { + float: none; + width: 100%; + } +} diff --git a/examples/overlay-area/index.html b/examples/overlay-area/index.html new file mode 100644 index 00000000..4b37eace --- /dev/null +++ b/examples/overlay-area/index.html @@ -0,0 +1,73 @@ + + + + + + Overlay Area | Meridian Web SDK + + + + + + + + + + + + + +
+ + + + + diff --git a/examples/overlay-path-image-circle/car.png b/examples/overlay-path-image-circle/car.png new file mode 100644 index 0000000000000000000000000000000000000000..4c0c8d8bf6937db32a511feed72854c8f66d7e1d GIT binary patch literal 1109 zcmV-b1giUqP)Px(4@pEpRA@u(mrtlwRTRd5LV`hw4T=nMP-p`oA)ydU1Pu!m3=C{gQUi^m6cja3 zR2--!6d^*1ikc)S8vTJH|0LC*20=jvib@0~IuKGSutEG}ZP@R;bG`SSedYP!oXNZQ z-Lv;z-?zTC_P0hc!kZ%^&yby@lKN4E?^IE zrb&Ht17PqTxDuEdtRDk50B5rU1-LyJUJiWOB^WdC3a|*cKgf6o_^ku@j@#V~fU)~&`zXLVHq^P9 zdOGy1wDJzriNRDKX7Ikqgf(Fcz7lQtzxZ4y%RvK;tXq&XfEOd6CekcjW3ayj34Z=L z8pNQkm1m&JdT9{-USHd_5`er|mBH=$2x36jN&qGU?+&A6hC-N<`aJHVGXju(d;H#^ z>@v*n3c`-KOaLQ^{hYT`wp{_(ZAKFN34~erSO5kuh`PsqoO_YQRA6Vg%aXv;T5nhlqH?yWyat>I0+UhHs^rfNf(4*qdp{(R4(r-@}nX>Q()?CT% zQ-G35oBI2-*whrKd&3%0W=$WPf@f)|Z}j!p$XfG$`X+P4X2uK5?sGBf@@$48R)2!pUAJLF zB!Z9(TXf#{J<9_B0$5eIcejz!%`Bv6qbAg!Qc5f}jJI}KI!h4B#~QQ~-t??)0Mbcj z#EB`NgZmkLb+4Y!>lMJQ47O + + + + + + Overlay SVG path, image and circle elements | Meridian Web SDK + + + + + + + + + + + + + + +
+ + + + + diff --git a/examples/overlay-polygon/index.html b/examples/overlay-polygon/index.html new file mode 100644 index 00000000..6ff43b09 --- /dev/null +++ b/examples/overlay-polygon/index.html @@ -0,0 +1,120 @@ + + + + + + Overlay Polygon | Meridian Web SDK + + + + + + + + + + + + + +
+ + + + + diff --git a/examples/overlay-polyline/index.html b/examples/overlay-polyline/index.html new file mode 100644 index 00000000..6df2e8cc --- /dev/null +++ b/examples/overlay-polyline/index.html @@ -0,0 +1,76 @@ + + + + + + Overlay Polyline | Meridian Web SDK + + + + + + + + + + + + + +
+ + + + + diff --git a/examples/placemark-customization/heart.png b/examples/placemark-customization/heart.png new file mode 100644 index 0000000000000000000000000000000000000000..ac52fb1564b583d86b38ded3e24da0040fd8554c GIT binary patch literal 208 zcmV;>05AWEP)6v8wRg~Heyj6f-@fl(-pg}?AC!M)G2h2g*cOaQvi{s0eJa7Y=Ozjnz00000< KMNUMnLSTYUSyYJt literal 0 HcmV?d00001 diff --git a/examples/placemark-customization/index.html b/examples/placemark-customization/index.html new file mode 100644 index 00000000..1797f767 --- /dev/null +++ b/examples/placemark-customization/index.html @@ -0,0 +1,140 @@ + + + + + + Placemark Customization | Meridian Web SDK + + + + + + + + + + + + + +
+
+
+ + Styling by ID:
+

+ + .meridian-placemark-icon[data-meridian-placemark-id="5750085036015616"] { + + width: 50px;
+ height: 50px;
+ border-color: red;
+ background-color: red;
+ background-image: url("./heart.png");
+ animation: pulsing 5s infinite;
+
+ } +
+

+
+ + Styling by Category:
+

+ + body .meridian-placemark-category-dolbywidescreen + + border-color: green;
+ background-color: green;
+ width: 50px;
+ height: 50px;
+
+ } +
+

+
+ +

Note: Categories with special characters need to be targeted accordingly. Spaces and most special characters (with the exception of underscores and dashes) are removed. Capitalized letters are also turned lower case.

+

Example: For the placemark category “Dolby/Widescreen”, target "meridian-placemark-category-dolbywidescreen".

+
+
+
+ + + + + diff --git a/examples/placemark-label-zoom-level/index.html b/examples/placemark-label-zoom-level/index.html new file mode 100644 index 00000000..abfc2c39 --- /dev/null +++ b/examples/placemark-label-zoom-level/index.html @@ -0,0 +1,58 @@ + + + + + + Placemark Label Zoom Level | Meridian Web SDK + + + + + + + + + + + + + + +
+
+
+ This example shows the result of setting the Placemark Label Zoom Level + to 0.9. +
+
+ + + + diff --git a/examples/restricted-pan-zoom/index.html b/examples/restricted-pan-zoom/index.html new file mode 100644 index 00000000..808a2f1c --- /dev/null +++ b/examples/restricted-pan-zoom/index.html @@ -0,0 +1,177 @@ + + + + + + Restricted Pan Zoom | Meridian Web SDK + + + + + + + + + + + + + +

Keep Scrolling

+

+ If you keep scrolling around this long page, you might notice that you + accidentally scroll the map between paragraphs on desktop, or pan the map + on mobile. +

+

+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Architecto ullam + vero quos modi repellendus quasi aperiam libero praesentium ipsum officiis + eaque, maiores, iure asperiores quae atque veritatis eveniet fugit harum! +

+

+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Architecto ullam + vero quos modi repellendus quasi aperiam libero praesentium ipsum officiis + eaque, maiores, iure asperiores quae atque veritatis eveniet fugit harum! +

+

+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Architecto ullam + vero quos modi repellendus quasi aperiam libero praesentium ipsum officiis + eaque, maiores, iure asperiores quae atque veritatis eveniet fugit harum! +

+
+

+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Architecto ullam + vero quos modi repellendus quasi aperiam libero praesentium ipsum officiis + eaque, maiores, iure asperiores quae atque veritatis eveniet fugit harum! +

+ +

About The Next Map

+

+ The next map has + restrictedPanZoom on it, which prevents desktop zooming + unless holding Shift, as well as preventing mobile/touch + panning unless using two fingers. See + createMap + for more information. +

+

+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Architecto ullam + vero quos modi repellendus quasi aperiam libero praesentium ipsum officiis + eaque, maiores, iure asperiores quae atque veritatis eveniet fugit harum! +

+

+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Architecto ullam + vero quos modi repellendus quasi aperiam libero praesentium ipsum officiis + eaque, maiores, iure asperiores quae atque veritatis eveniet fugit harum! +

+

+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Architecto ullam + vero quos modi repellendus quasi aperiam libero praesentium ipsum officiis + eaque, maiores, iure asperiores quae atque veritatis eveniet fugit harum! +

+

+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Architecto ullam + vero quos modi repellendus quasi aperiam libero praesentium ipsum officiis + eaque, maiores, iure asperiores quae atque veritatis eveniet fugit harum! +

+
+

+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Architecto ullam + vero quos modi repellendus quasi aperiam libero praesentium ipsum officiis + eaque, maiores, iure asperiores quae atque veritatis eveniet fugit harum! +

+

+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Architecto ullam + vero quos modi repellendus quasi aperiam libero praesentium ipsum officiis + eaque, maiores, iure asperiores quae atque veritatis eveniet fugit harum! +

+ +

+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Architecto ullam + vero quos modi repellendus quasi aperiam libero praesentium ipsum officiis + eaque, maiores, iure asperiores quae atque veritatis eveniet fugit harum! +

+

+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Architecto ullam + vero quos modi repellendus quasi aperiam libero praesentium ipsum officiis + eaque, maiores, iure asperiores quae atque veritatis eveniet fugit harum! +

+ + + + + diff --git a/examples/search-control/index.html b/examples/search-control/index.html new file mode 100644 index 00000000..5f71a614 --- /dev/null +++ b/examples/search-control/index.html @@ -0,0 +1,63 @@ + + + + + + Search Control | Meridian Web SDK + + + + + + + + + + + + + +
+
+
+ Pass "showSearchControl: false" to the createMap function or use the + "update" method to hide the search control. +
+
+ + + + diff --git a/examples/shared.css b/examples/shared.css new file mode 100644 index 00000000..ee9aa6e4 --- /dev/null +++ b/examples/shared.css @@ -0,0 +1,197 @@ +body { + font-family: sans-serif; +} + +.map { + border: 1px solid #ccc; + margin: auto; + max-width: 700px; +} + +.flex { + display: flex; +} + +.flex-column { + flex-direction: column; +} + +.flex-center { + align-items: center; + justify-content: center; +} + +.flex-auto { + flex: 1 1 auto; +} + +.flex-0 { + flex: 0 0 0; +} + +.dialog { + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + background: #222; + color: #eee; + z-index: 2; + overflow-y: auto; + font-size: 16px; + font-family: sans-serif; +} + +.dialog .heading { + padding-right: 16px; + font-size: 24px; + font-weight: bold; +} + +.dialog .section { + padding: 32px 16px; +} + +.dialog .top-bar { + z-index: 1; + box-shadow: 0 0 32px black; +} + +.dialog pre { + margin: 0; + font-family: Input, Menlo, Consolas, monospace; + overflow: auto; +} + +.dialog .close { + padding: 8px 16px; + box-sizing: border-box; + font-family: inherit; + font-size: inherit; + color: inherit; + border-radius: 4px; + background: #ccc; + border: 0; + color: #000; + width: 100%; + font-weight: bold; +} + +.dialog .close:hover { + background: #fff; +} + +.dialog .close:focus { + box-shadow: 0 0 0 2px black, 0 0 0 4px white; + background: #eee; + outline: 0; +} + +.back { + font-size: 16px; + position: fixed; + display: flex; + box-shadow: 0 0 3px rgba(0, 0, 0, 0.25); + text-decoration: none; + border-radius: 6px; + bottom: 15px; + left: 15px; + background: white; + color: hsl(240, 100%, 60%); + font-family: sans-serif; + z-index: 1; + overflow: hidden; +} + +.back > a { + text-decoration: none; + color: inherit; +} + +.back > button { + flex: 1 1 auto; + padding: 6px 12px; + margin: 0; + border: 0; + border-radius: 0; + color: inherit; + background: transparent; + font-family: inherit; + font-size: inherit; +} + +.back > button:hover { + background: #f8f8f8; +} + +.back > button:active { + background: #f0f0f0; +} + +.back > button:focus { + outline: 0; +} + +.back > .separator { + border-left: 1px solid rgba(0, 0, 0, 0.1); +} + +.button { + --color: hsl(240, 80%, 60%); + background: var(--color); + color: white; + border: 0; + font: inherit; + padding: 0.5rem 1rem; + border-radius: 0.25rem; + text-shadow: 0 1px 1px black; + border-bottom: 2px solid rgba(0, 0, 0, 0.4); +} + +.button:hover { + background-image: linear-gradient( + to bottom, + rgba(0, 0, 0, 0.1), + rgba(0, 0, 0, 0.1) + ); +} + +.button:active { + transform: scale(0.98); +} + +.button-red { + --color: hsl(0, 100%, 40%); +} + +.gap { + --size: 1rem; + width: 1rem; + height: 1rem; + display: block; +} + +select { + font-size: 18px; +} + +body { + font-family: sans-serif; + background: #fdfdfd; + color: #222; +} + +.container { + width: 700px; + margin: 0 auto; +} + +.description { + margin-bottom: 10px; + margin-top: 20px; + background: hsl(210, 50%, 98%); + color: hsl(210, 80%, 30%); + border: 1px solid hsl(210, 30%, 80%); + padding: 15px; +} diff --git a/examples/shared.js b/examples/shared.js new file mode 100644 index 00000000..3eb85e0f --- /dev/null +++ b/examples/shared.js @@ -0,0 +1,76 @@ +/* global $ */ +/* global hljs */ +/* global MeridianSDK */ + +import { mockAPI } from "./cypress/utils/mock-api.js"; + +if (MeridianSDK) { + if (document.documentElement.dataset.fakeApi !== "false") { + // Enable live updates for demo usage + mockAPI._live = true; + // This uses a regular function, not an arrow function, so that we can safely + // use `new` with it. + MeridianSDK.API = function () { + return mockAPI; + }; + } +} else { + // eslint-disable-next-line no-console + console.error("Failed to monkey patch fakeAPI into MeridianSDK"); +} + +// Take code from a script tag and strip bad whitespace +function trimIndent(str) { + const match = str.match(/^[ \t]*(?=\S)/gm); + if (!match) { + return str; + } + const lengths = match.map((x) => x.length); + const indent = Math.min(...lengths); + const re = new RegExp(`^[ \\t]{${indent}}`, "gm"); + const s = indent > 0 ? str.replace(re, "") : str; + return s.trim(); +} + +// Show the code dialog +function showTheCode() { + $("#meridian-map").hide(); + const dialog = $("
").addClass("dialog flex flex-column"); + const heading = $("
") + .addClass("flex flex-center section top-bar") + .appendTo(dialog); + $("
") + .text(`Meridian SDK ${MeridianSDK.version}`) + .addClass("heading flex-auto") + .appendTo(heading); + $(" +

+ +
+

zoomToPoint

+

Pan to x/y coordinate and scale to a given zoom factor.

+

+ meridianMap.zoomToPoint({x: 6825.5830078125, y: + 478.98833499103785, scale: 1}) + +

+
+
+

centerMap

+

Center the map while retaining the current scale.

+

+ meridianMap.centerMap() + +

+
+
+
+ + + + diff --git a/examples/zoom-to-point/index.html b/examples/zoom-to-point/index.html new file mode 100644 index 00000000..152e2a62 --- /dev/null +++ b/examples/zoom-to-point/index.html @@ -0,0 +1,106 @@ + + + + + + Zoom to point | Meridian Web SDK + + + + + + + + + + + + + + +
+
+
+
+

zoomToPoint

+

Pan to x/y coordinate and scale to a given zoom factor.

+

+ meridianMap.zoomToPoint({x: 6825.5830078125, y: + 478.98833499103785, scale: 1}) + +

+
+
+

centerMap

+

Center the map while retaining the current scale.

+

+ meridianMap.centerMap() + +

+
+
+

zoomToDefault

+

+ Set zoom to the default level and pan to the default position. +

+

+ meridianMap.zoomToDefault() + +

+
+
+
+ + + + diff --git a/functions/createAPI.html b/functions/createAPI.html new file mode 100644 index 00000000..b6e92166 --- /dev/null +++ b/functions/createAPI.html @@ -0,0 +1,3 @@ +createAPI | @meridian/web-sdk

Function createAPI

  • Parameters

    Returns API

    Deprecated

    Deprecated function used to create an instance of API. Instead of +createAPI(options) you should now use new API(options).

    +
\ No newline at end of file diff --git a/functions/createMap.html b/functions/createMap.html new file mode 100644 index 00000000..bbb7f117 --- /dev/null +++ b/functions/createMap.html @@ -0,0 +1,6 @@ +createMap | @meridian/web-sdk

Function createMap

  • Creates and returns a map object mounted at the given HTML element. If you +are using the tags.filter or onTagClick or onTagsUpdate functions, refer to +https://tags.meridianapps.com/docs/track for the schema.

    +
    const api = new MeridianSDK.API({ token: "<TOKEN>" });
    const map = MeridianSDK.createMap(
    document.querySelector("#map-container"),
    {
    api: api,
    locationID: "<location ID>",
    floorID: "<floor ID>",
    height: "500px"
    }
    ); +
    +

    Parameters

    Returns MeridianMap

\ No newline at end of file diff --git a/functions/init.html b/functions/init.html new file mode 100644 index 00000000..96fa47fc --- /dev/null +++ b/functions/init.html @@ -0,0 +1,6 @@ +init | @meridian/web-sdk
  • Initializes a share MeridianSDK API instance for use across all calls to +createMap. You can either call this function or pass your API +instance directly to createMap.

    +
    const api = new MeridianSDK.API({
    token: "<TOKEN GOES HERE>"
    });

    MeridianSDK.init({ api: api }); +
    +

    Parameters

    • options: {
          api: API;
      }

    Returns void

\ No newline at end of file diff --git a/functions/latLngToMapPoint.html b/functions/latLngToMapPoint.html new file mode 100644 index 00000000..93b800cd --- /dev/null +++ b/functions/latLngToMapPoint.html @@ -0,0 +1,5 @@ +latLngToMapPoint | @meridian/web-sdk

Function latLngToMapPoint

  • Convert from latitude and longitude to a point on a referenced map. Uses equirectangular projection.

    +

    The basic formula to achieve this is as follows:

    +

    x = radius(longitude - central meridian of map) * cos(standard parallels with scale)

    +

    y = radius(latitude - central parallel of map)

    +

    Parameters

    • floorData: Partial<FloorData>
    • __namedParameters: {
          lat: number;
          lng: number;
      }
      • lat: number
      • lng: number

    Returns {
        x: number;
        y: number;
    }

    • x: number
    • y: number
\ No newline at end of file diff --git a/functions/mapPointToLatLng.html b/functions/mapPointToLatLng.html new file mode 100644 index 00000000..b94ebd49 --- /dev/null +++ b/functions/mapPointToLatLng.html @@ -0,0 +1,5 @@ +mapPointToLatLng | @meridian/web-sdk

Function mapPointToLatLng

  • Convert from a point on a referenced map to latitude and longitude. Uses mercator projection.

    +

    The basic formula to achieve this is as follows:

    +

    latitute = 2(tan^-1)[exp(y / radius)] +longitude = central parallel of map + (x / radius) - PI / 2

    +

    Parameters

    • floorData: Partial<FloorData>
    • __namedParameters: {
          x: number;
          y: number;
      }
      • x: number
      • y: number

    Returns {
        lat: number;
        lng: number;
    }

    • lat: number
    • lng: number
\ No newline at end of file diff --git a/functions/placemarkIconURL.html b/functions/placemarkIconURL.html new file mode 100644 index 00000000..57b35e92 --- /dev/null +++ b/functions/placemarkIconURL.html @@ -0,0 +1,4 @@ +placemarkIconURL | @meridian/web-sdk

Function placemarkIconURL

  • Takes a placemark type and returns a URL to a white SVG icon representing it

    +

    Parameters

    • type: string

    Returns string

    Example

    function onPlacemarkClick(placemark) {
    const url = MeridianSDK.placemarkIconURL(placemark.type);
    console.log(url);
    } +
    +
\ No newline at end of file diff --git a/functions/pointsFromArea.html b/functions/pointsFromArea.html new file mode 100644 index 00000000..da241f2b --- /dev/null +++ b/functions/pointsFromArea.html @@ -0,0 +1,2 @@ +pointsFromArea | @meridian/web-sdk

Function pointsFromArea

  • Returns an array of points (numbers) based on a placemarks's area property

    +

    Parameters

    • area: undefined | null | string

    Returns number[]

\ No newline at end of file diff --git a/functions/restrictedPanZoom.html b/functions/restrictedPanZoom.html new file mode 100644 index 00000000..66f21d3d --- /dev/null +++ b/functions/restrictedPanZoom.html @@ -0,0 +1,9 @@ +restrictedPanZoom | @meridian/web-sdk

Function restrictedPanZoom

  • This function can be used to restrict pan/zoom events unless the user is +holding down a modifier key (Control, Alt, Command, Shift) on their keyboard. +This prevents accidental map interactions in pages with lots of scrolling +content.

    +

    Pass this to shouldMapPanZoom in createMap if you would like the user +to use two fingers or hold down a modifier key in order to zoom the map.

    +
    const api = new MeridianSDK.API({ token: "<TOKEN>" });

    const map = MeridianSDK.createMap(
    document.querySelector("#map-container"),
    {
    api,
    locationID: "<location ID>",
    floorID: "<floor ID>",
    height: "500px",
    shouldMapPanZoom: MeridianSDK.restrictedPanZoom,
    }
    ) +
    +

    Parameters

    • event: any

    Returns boolean

\ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 00000000..66a6e20f --- /dev/null +++ b/index.html @@ -0,0 +1,51 @@ +@meridian/web-sdk

@meridian/web-sdk

The Meridian Web SDK officially supports evergreen versions of Firefox, Google Chrome, Microsoft Edge, and Safari browsers.

+

Overview

The Meridian Web SDK is a JavaScript library you can use to add dynamically updating and interactive Meridian maps to your site.

+

Installation

Install from npm:

+
npm install @meridian/web-sdk
+
+

And then for CommonJS imports use:

+
const MeridianSDK = require("@meridian/web-sdk");
+
+

Or for ES modules imports:

+
import * as MeridianSDK from "@meridian/web-sdk";
+
+

If you would like a standalone JS file with all dependencies bundled that you can use from a script tag, download the latest version and include it:

+
<script src="meridian-sdk.js"></script>
+
+

Which will make a global object called MeridianSDK.

+

Get Started

Before you can use the Meridian Web SDK, you'll need to obtain a read-only API token from the Meridian Editor.

+

You can find the location and floor IDs for a specific map by opening that map in the Meridian Editor. The URL for the floor page contains the IDs you'll need:

+

https://edit.meridianapps.com/w/location/Location-ID/floor/Floor-ID

+

Examples

You can check out our examples to see example applications of the Web SDK.

+

Web SDK Theming

Meridian Web SDK theming is done with Cascading Style Sheets (CSS).

+

Meridian external hook CSS classes are prefixed with meridian-.

+

Styles prefixed with meridian--private-- are minified internal styles that you shouldn't use.

+

Given the complexity of CSS style interactions, Meridian can't guarantee style customizations won't be affected between minor version upgrades, but we'll make an effort to keep the external CSS hooks available for any necessary minor style tweaks.

+

Target All Maps

To target all Meridian maps on one page, you'll want to use something like:

+
body .meridian-map-container {
border: 1px solid black;
} +
+

Target a Specific Map

To target a specific map, you can put a CSS class on the container element and target that:

+
.my-map .meridian-map-container {
border: 2px solid gray;
} +
+

Alter Backgrounds and Borders

To alter background styles, use:

+
.meridian-map-background
+
+

To alter border styles, use:

+
.meridian-map-container
+
+

Target Map Buttons

You can also style the top level and floor name buttons.

+

Style Placemarks

You can style placemarks by placemark type using:

+
.meridian-placemark-type-{PLACEMARK-TYPE-NAME}
+
+

Style Tags

You can style Tags with specific labels using:

+
.meridian-tag-label-{LABEL-NAME}
+
+

Requirements for Using d3

If you have multiple packages that use d3 on your site, you may need to utilize webpack resolve.

+

for example, to use d3-selection in your project, you will need to import in the following way:

+
import { selection } from "d3-selection";
+
+

and write the following in your webpack.config;

+
module.exports = {
//...
resolve: {
alias: {
"d3-selection": require.resolve("d3-selection"),
},
},
}; +
+

Please refer to the docs for webpack require.resolve

+
\ No newline at end of file diff --git a/interfaces/APIOptions.html b/interfaces/APIOptions.html new file mode 100644 index 00000000..c3baf80f --- /dev/null +++ b/interfaces/APIOptions.html @@ -0,0 +1,7 @@ +APIOptions | @meridian/web-sdk

Interface APIOptions

Options passed to createAPI.

+
const api = new MeridianSDK.API({
environment: "production", // or "eu"
token: "<token>",
language: "<languageCode>" // optional, defaults to "en"
}); +
+
interface APIOptions {
    environment?: EnvOptions;
    language?: "no" | "en" | "ar" | "ca" | "es" | "cs" | "de" | "fr" | "it" | "iw" | "ja" | "ko" | "nl" | "pt" | "ru" | "sv" | "uk" | "vi" | "zh-cn" | "zh-tw";
    token: string;
}

Properties

environment?: EnvOptions
language?: "no" | "en" | "ar" | "ca" | "es" | "cs" | "de" | "fr" | "it" | "iw" | "ja" | "ko" | "nl" | "pt" | "ru" | "sv" | "uk" | "vi" | "zh-cn" | "zh-tw"
token: string
\ No newline at end of file diff --git a/interfaces/CreateMapOptions.html b/interfaces/CreateMapOptions.html new file mode 100644 index 00000000..8c8f0994 --- /dev/null +++ b/interfaces/CreateMapOptions.html @@ -0,0 +1,70 @@ +CreateMapOptions | @meridian/web-sdk

Interface CreateMapOptions

Options passed to createMap.

+
interface CreateMapOptions {
    annotations?: CustomAnnotationPoint[];
    api?: API;
    floorID: string;
    floorsControlSortDescending?: boolean;
    height?: string;
    loadPlacemarks?: boolean;
    loadTags?: boolean;
    locationID: string;
    maxZoomLevel?: number;
    minZoomLevel?: number;
    onDestroy?: (() => void);
    onFloorChange?: ((floor) => void);
    onFloorsUpdate?: ((floors) => void);
    onLoadingStateChange?: ((isLoading) => void);
    onMapClick?: (() => void);
    onPlacemarkClick?: ((placemark, event) => void);
    onPlacemarksUpdate?: ((placemarks) => void);
    onTagClick?: ((tag, event) => void);
    onTagsUpdate?: ((tags) => void);
    overlays?: CustomOverlay[];
    placemarks?: CreateMapPlacemarksOptions;
    shouldMapPanZoom?: ((event) => boolean);
    showFloorsControl?: boolean;
    showSearchControl?: boolean;
    tags?: CreateMapTagsOptions;
    width?: string;
}

Properties

annotations?: CustomAnnotationPoint[]

An array of custom annotations to draw on the map.

+
api?: API

An API instance. Defaults to the one passed to init.

+
floorID: string

Meridian floor ID.

+
floorsControlSortDescending?: boolean

Sort the floors in the Floor Switcher UI descending in order. +Defaults to false (ascending in order).

+
height?: string

Height of the map (e.g. "100%" or "200px")

+
loadPlacemarks?: boolean

Set to false to disable loading placemarks. Defaults to true.

+
loadTags?: boolean

Set to false to disable loading tags. Defaults to true. +This is required for locations without a TAGS SKU license

+
locationID: string

Meridian location ID.

+
maxZoomLevel?: number

Maximum zoom level. Default value is 8 which equals eight times the +actual scale of the map.

+
minZoomLevel?: number

Minimum zoom level. Default value is dynamically calculated and matches +the initial map scale (further zooming out is not allowed

+
onDestroy?: (() => void)

Called when the map has been destroyed, either by manually calling +map.destroy() or by being automatically destroyed when its DOM is tampered +with.

+

Type declaration

    • (): void
    • Returns void

onFloorChange?: ((floor) => void)

Called after the floor is changed.

+

Type declaration

    • (floor): void
    • Parameters

      Returns void

onFloorsUpdate?: ((floors) => void)

Called after the floors list is updated.

+

Type declaration

    • (floors): void
    • Parameters

      Returns void

onLoadingStateChange?: ((isLoading) => void)

Called when the loading state changes.

+

Type declaration

    • (isLoading): void
    • Parameters

      • isLoading: boolean

      Returns void

onMapClick?: (() => void)

Called when the user clicks on the map. This is mostly useful as a way of +knowing that the user has potentially unfocused a tag or placemark. This is +NOT called when the user pans or zooms the map.

+

Type declaration

    • (): void
    • Returns void

onPlacemarkClick?: ((placemark, event) => void)

Called when a placemark is clicked. Use event.preventDefault() to prevent +the default dialog from appearing.

+

Type declaration

onPlacemarksUpdate?: ((placemarks) => void)

Called when tags on the current floor are updated. allPlacemarks is every +placemark on the current floor, even ones not shown on the map. +filteredPlacemarks is only the tags shown on the map (i.e. it respects +showHiddenPlacemarks and filter).

+

Type declaration

onTagClick?: ((tag, event) => void)

Called when a tag is clicked. Use event.preventDefault() to prevent the +default dialog from appearing.

+

Type declaration

onTagsUpdate?: ((tags) => void)

Called when tags on the current floor are updated. allTags is every tag +on the current floor, even ones not shown on the map. filteredTags is +only the tags shown on the map (i.e. it respects showControlTags and +filter).

+

Type declaration

    • (tags): void
    • Parameters

      Returns void

overlays?: CustomOverlay[]

An array of custom overlays to draw on the map.

+

Options related to placemarks.

+
shouldMapPanZoom?: ((event) => boolean)

Type declaration

    • (event): boolean
    • Parameters

      • event: any

      Returns boolean

showFloorsControl?: boolean

Should we show the floor switcher UI control? Defaults to true.

+
showSearchControl?: boolean

Should we show the Search UI control? Defaults to true.

+

Options related to tags.

+
width?: string

Width of the map (e.g. "100%" or "300px").

+
\ No newline at end of file diff --git a/interfaces/CreateMapPlacemarksOptions.html b/interfaces/CreateMapPlacemarksOptions.html new file mode 100644 index 00000000..68f79a71 --- /dev/null +++ b/interfaces/CreateMapPlacemarksOptions.html @@ -0,0 +1,18 @@ +CreateMapPlacemarksOptions | @meridian/web-sdk

Interface CreateMapPlacemarksOptions

interface CreateMapPlacemarksOptions {
    disabled?: boolean;
    filter?: ((placemark) => boolean);
    labelMode?: "always" | "never" | "zoom" | "hover";
    labelZoomLevel?: number;
    showHiddenPlacemarks?: boolean;
}

Properties

disabled?: boolean

Disable clicking placemarks when true. Defaults to false.

+
filter?: ((placemark) => boolean)

Filter function used to hide placemarks. Return false to hide a +placemark. Defaults to () => true.

+

Type declaration

    • (placemark): boolean
    • Parameters

      Returns boolean

labelMode?: "always" | "never" | "zoom" | "hover"

Which mode should we use for displaying placemark labels

+
    +
  • always: shown at all times regardless of zoom level
  • +
  • never: never shown
  • +
  • hover: only shown when the placemark is hovered
  • +
  • zoom: [default] only shown when a certain zoom level is reached
  • +
+
labelZoomLevel?: number

Zoom level at which placemark lables appear when label mode is "zoom"

+
showHiddenPlacemarks?: boolean

Should we show hidden placemarks? Defaults to false.

+
\ No newline at end of file diff --git a/interfaces/CreateMapTagsOptions.html b/interfaces/CreateMapTagsOptions.html new file mode 100644 index 00000000..881cdb8f --- /dev/null +++ b/interfaces/CreateMapTagsOptions.html @@ -0,0 +1,10 @@ +CreateMapTagsOptions | @meridian/web-sdk

Interface CreateMapTagsOptions

interface CreateMapTagsOptions {
    disabled?: boolean;
    filter?: ((tag) => boolean);
    showControlTags?: boolean;
    updateInterval?: number;
}

Properties

disabled?: boolean

Disable clicking tags when true. Defaults to false.

+
filter?: ((tag) => boolean)

Filter function used to hide tags. Return false to hide a tag. Defaults +to () => true.

+

Type declaration

    • (tag): boolean
    • Parameters

      Returns boolean

showControlTags?: boolean

Should we show control tags? Defaults to false.

+
updateInterval?: number

Update interval in milliseconds, defaults to 5000

+
\ No newline at end of file diff --git a/interfaces/CustomAnnotationPoint.html b/interfaces/CustomAnnotationPoint.html new file mode 100644 index 00000000..87380c43 --- /dev/null +++ b/interfaces/CustomAnnotationPoint.html @@ -0,0 +1,13 @@ +CustomAnnotationPoint | @meridian/web-sdk

Interface CustomAnnotationPoint

Object describing a point annotation drawn on the map

+
interface CustomAnnotationPoint {
    backgroundColor?: string;
    backgroundImage?: string;
    backgroundSize?: string;
    data?: Record<string, any>;
    onClick?: ((data) => void);
    size?: number;
    title?: string;
    type: "point";
    x: number;
    y: number;
}

Properties

backgroundColor?: string
backgroundImage?: string
backgroundSize?: string
data?: Record<string, any>

Arbitrary data for use with onClick handler

+
onClick?: ((data) => void)

Type declaration

    • (data): void
    • Parameters

      • data: Record<string, any>

      Returns void

size?: number
title?: string
type: "point"
x: number
y: number
\ No newline at end of file diff --git a/interfaces/CustomOverlayCircle.html b/interfaces/CustomOverlayCircle.html new file mode 100644 index 00000000..a11f73b0 --- /dev/null +++ b/interfaces/CustomOverlayCircle.html @@ -0,0 +1,29 @@ +CustomOverlayCircle | @meridian/web-sdk

Interface CustomOverlayCircle

Object describing an SVG <circle> element drawn on the map

+

https://developer.mozilla.org/en-US/docs/Web/SVG/Element/circle

+
interface CustomOverlayCircle {
    animate?: SVGAttributes<SVGAnimateElement>;
    animateMotion?: SVGAttributes<SVGAnimateMotionElement>;
    className?: string;
    cx: string;
    cy: string;
    data?: Record<string, any>;
    defs?: boolean;
    fill?: string;
    fillOpacity?: string | number;
    id?: string;
    mpath?: SVGMPathElement;
    onClick?: ((data) => void);
    pathLength: number;
    r: string;
    stroke?: string;
    strokeDasharray?: string | number;
    strokeDashoffset?: string | number;
    strokeLineCap?: "square" | "butt" | "round";
    strokeLineJoin?: "round" | "miter";
    strokeOpacity?: string | number;
    strokeWidth?: number;
    style?: CSSProperties;
    type: "circle";
}

Properties

animate?: SVGAttributes<SVGAnimateElement>
animateMotion?: SVGAttributes<SVGAnimateMotionElement>
className?: string
cx: string
cy: string
data?: Record<string, any>

Arbitrary data for use with onClick handler

+
defs?: boolean

true will result in the element being wrapped in a <defs> (default: false)

+

https://developer.mozilla.org/en-US/docs/Web/SVG/Element/defs

+
fill?: string
fillOpacity?: string | number
id?: string
mpath?: SVGMPathElement
onClick?: ((data) => void)

Type declaration

    • (data): void
    • Parameters

      • data: Record<string, any>

      Returns void

pathLength: number
r: string
stroke?: string
strokeDasharray?: string | number
strokeDashoffset?: string | number
strokeLineCap?: "square" | "butt" | "round"
strokeLineJoin?: "round" | "miter"
strokeOpacity?: string | number
strokeWidth?: number
style?: CSSProperties
type: "circle"
\ No newline at end of file diff --git a/interfaces/CustomOverlayImage.html b/interfaces/CustomOverlayImage.html new file mode 100644 index 00000000..6a3d28af --- /dev/null +++ b/interfaces/CustomOverlayImage.html @@ -0,0 +1,21 @@ +CustomOverlayImage | @meridian/web-sdk

Interface CustomOverlayImage

Object describing an SVG <image> element drawn on the map

+

https://developer.mozilla.org/en-US/docs/Web/SVG/Element/image

+
interface CustomOverlayImage {
    animate?: SVGAttributes<SVGAnimateElement>;
    animateMotion?: SVGAttributes<SVGAnimateMotionElement>;
    className?: string;
    data?: Record<string, any>;
    defs?: boolean;
    height: number;
    href: string;
    id?: string;
    mpath?: SVGMPathElement;
    onClick?: ((data) => void);
    style?: CSSProperties;
    type: "image";
    width: number;
    x?: number;
    y?: number;
}

Properties

animate?: SVGAttributes<SVGAnimateElement>
animateMotion?: SVGAttributes<SVGAnimateMotionElement>
className?: string
data?: Record<string, any>

Arbitrary data for use with onClick handler

+
defs?: boolean

true will result in the element being wrapped in a <defs> (default: false)

+

https://developer.mozilla.org/en-US/docs/Web/SVG/Element/defs

+
height: number
href: string
id?: string
mpath?: SVGMPathElement
onClick?: ((data) => void)

Type declaration

    • (data): void
    • Parameters

      • data: Record<string, any>

      Returns void

style?: CSSProperties
type: "image"
width: number
x?: number
y?: number
\ No newline at end of file diff --git a/interfaces/CustomOverlayMarker.html b/interfaces/CustomOverlayMarker.html new file mode 100644 index 00000000..e4d1637c --- /dev/null +++ b/interfaces/CustomOverlayMarker.html @@ -0,0 +1,27 @@ +CustomOverlayMarker | @meridian/web-sdk

Interface CustomOverlayMarker

Object describing an SVG <marker> element drawn on the map

+

https://developer.mozilla.org/en-US/docs/Web/SVG/Element/marker

+
interface CustomOverlayMarker {
    className?: string;
    defs?: boolean;
    fill?: string;
    fillOpacity?: string | number;
    id?: string;
    markerHeight: number;
    markerWidth: number;
    orient: string;
    refX: string;
    refY: string;
    shapeElementAttributes: Record<string, any>;
    shapeElementType: "circle" | "image" | "path" | "polygon" | "polyline";
    stroke?: string;
    strokeDasharray?: string | number;
    strokeDashoffset?: string | number;
    strokeLineCap?: "square" | "butt" | "round";
    strokeLineJoin?: "round" | "miter";
    strokeOpacity?: string | number;
    strokeWidth?: number;
    style?: CSSProperties;
    type: "marker";
    viewBox: string;
}

Properties

className?: string
defs?: boolean

true will result in the element being wrapped in a <defs> (default: false)

+

https://developer.mozilla.org/en-US/docs/Web/SVG/Element/defs

+
fill?: string
fillOpacity?: string | number
id?: string
markerHeight: number
markerWidth: number
orient: string
refX: string
refY: string
shapeElementAttributes: Record<string, any>
shapeElementType: "circle" | "image" | "path" | "polygon" | "polyline"
stroke?: string
strokeDasharray?: string | number
strokeDashoffset?: string | number
strokeLineCap?: "square" | "butt" | "round"
strokeLineJoin?: "round" | "miter"
strokeOpacity?: string | number
strokeWidth?: number
style?: CSSProperties
type: "marker"
viewBox: string
\ No newline at end of file diff --git a/interfaces/CustomOverlayPath.html b/interfaces/CustomOverlayPath.html new file mode 100644 index 00000000..53f1dc0b --- /dev/null +++ b/interfaces/CustomOverlayPath.html @@ -0,0 +1,25 @@ +CustomOverlayPath | @meridian/web-sdk

Interface CustomOverlayPath

Object describing an SVG <path> element drawn on the map

+

https://developer.mozilla.org/en-US/docs/Web/SVG/Element/path

+
interface CustomOverlayPath {
    animate?: SVGAttributes<SVGAnimateElement>;
    animateMotion?: SVGAttributes<SVGAnimateMotionElement>;
    className?: string;
    defs?: boolean;
    fill?: string;
    id?: string;
    markerEnd: string;
    markerMid: string;
    markerStart: string;
    mpath?: SVGMPathElement;
    shape: string;
    stroke?: string;
    strokeDasharray?: string | number;
    strokeDashoffset?: string | number;
    strokeLineCap?: "square" | "butt" | "round";
    strokeLineJoin?: "round" | "miter";
    strokeOpacity?: string | number;
    strokeWidth?: number;
    style?: CSSProperties;
    type: "path";
}

Properties

animate?: SVGAttributes<SVGAnimateElement>
animateMotion?: SVGAttributes<SVGAnimateMotionElement>
className?: string
defs?: boolean

true will result in the element being wrapped in a <defs> (default: false)

+

https://developer.mozilla.org/en-US/docs/Web/SVG/Element/defs

+
fill?: string
id?: string
markerEnd: string
markerMid: string
markerStart: string
mpath?: SVGMPathElement
shape: string
stroke?: string
strokeDasharray?: string | number
strokeDashoffset?: string | number
strokeLineCap?: "square" | "butt" | "round"
strokeLineJoin?: "round" | "miter"
strokeOpacity?: string | number
strokeWidth?: number
style?: CSSProperties
type: "path"
\ No newline at end of file diff --git a/interfaces/CustomOverlayPolygon.html b/interfaces/CustomOverlayPolygon.html new file mode 100644 index 00000000..5c83d5f6 --- /dev/null +++ b/interfaces/CustomOverlayPolygon.html @@ -0,0 +1,26 @@ +CustomOverlayPolygon | @meridian/web-sdk

Interface CustomOverlayPolygon

Object describing an SVG <polygon> element drawn on the map

+

https://developer.mozilla.org/en-US/docs/Web/SVG/Element/polygon

+
interface CustomOverlayPolygon {
    animate?: SVGAttributes<SVGAnimateElement>;
    className?: string;
    data?: Record<string, any>;
    defs?: boolean;
    fill?: string;
    fillOpacity?: string | number;
    id?: string;
    markerEnd: string;
    markerMid: string;
    markerStart: string;
    onClick?: ((data) => void);
    points: number[];
    stroke?: string;
    strokeDasharray?: string | number;
    strokeDashoffset?: string | number;
    strokeLineJoin?: "round" | "miter";
    strokeOpacity?: string | number;
    strokeWidth?: number;
    style?: CSSProperties;
    type: "polygon";
}

Properties

animate?: SVGAttributes<SVGAnimateElement>
className?: string
data?: Record<string, any>

Arbitrary data for use with onClick handler

+
defs?: boolean

true will result in the element being wrapped in a <defs> (default: false)

+

https://developer.mozilla.org/en-US/docs/Web/SVG/Element/defs

+
fill?: string
fillOpacity?: string | number
id?: string
markerEnd: string
markerMid: string
markerStart: string
onClick?: ((data) => void)

Type declaration

    • (data): void
    • Parameters

      • data: Record<string, any>

      Returns void

points: number[]
stroke?: string
strokeDasharray?: string | number
strokeDashoffset?: string | number
strokeLineJoin?: "round" | "miter"
strokeOpacity?: string | number
strokeWidth?: number
style?: CSSProperties
type: "polygon"
\ No newline at end of file diff --git a/interfaces/CustomOverlayPolyline.html b/interfaces/CustomOverlayPolyline.html new file mode 100644 index 00000000..5df9ac0e --- /dev/null +++ b/interfaces/CustomOverlayPolyline.html @@ -0,0 +1,24 @@ +CustomOverlayPolyline | @meridian/web-sdk

Interface CustomOverlayPolyline

Object describing an SVG <polyline> element drawn on the map

+

https://developer.mozilla.org/en-US/docs/Web/SVG/Element/polyline

+
interface CustomOverlayPolyline {
    animate?: SVGAttributes<SVGAnimateElement>;
    className?: string;
    defs?: boolean;
    fill?: string;
    fillOpacity?: string | number;
    id?: string;
    markerEnd: string;
    markerMid: string;
    markerStart: string;
    points: number[];
    stroke?: string;
    strokeDasharray?: string | number;
    strokeDashoffset?: string | number;
    strokeLineCap?: "square" | "butt" | "round";
    strokeLineJoin?: "round" | "miter";
    strokeOpacity?: string | number;
    strokeWidth?: number;
    style?: CSSProperties;
    type: "polyline";
}

Properties

animate?: SVGAttributes<SVGAnimateElement>
className?: string
defs?: boolean

true will result in the element being wrapped in a <defs> (default: false)

+

https://developer.mozilla.org/en-US/docs/Web/SVG/Element/defs

+
fill?: string
fillOpacity?: string | number
id?: string
markerEnd: string
markerMid: string
markerStart: string
points: number[]
stroke?: string
strokeDasharray?: string | number
strokeDashoffset?: string | number
strokeLineCap?: "square" | "butt" | "round"
strokeLineJoin?: "round" | "miter"
strokeOpacity?: string | number
strokeWidth?: number
style?: CSSProperties
type: "polyline"
\ No newline at end of file diff --git a/interfaces/CustomOverlayUse.html b/interfaces/CustomOverlayUse.html new file mode 100644 index 00000000..99839b20 --- /dev/null +++ b/interfaces/CustomOverlayUse.html @@ -0,0 +1,26 @@ +CustomOverlayUse | @meridian/web-sdk

Interface CustomOverlayUse

Object describing an SVG <use> element drawn on the map.

+

https://developer.mozilla.org/en-US/docs/Web/SVG/Element/use

+
interface CustomOverlayUse {
    animate?: SVGAttributes<SVGAnimateElement>;
    animateMotion?: SVGAttributes<SVGAnimateMotionElement>;
    className?: string;
    defs?: boolean;
    fill?: string;
    height: number;
    href: string;
    id?: string;
    mpath?: SVGMPathElement;
    stroke?: string;
    strokeDasharray?: string | number;
    strokeDashoffset?: string | number;
    strokeLineCap?: "square" | "butt" | "round";
    strokeLineJoin?: "round" | "miter";
    strokeOpacity?: string | number;
    strokeWidth?: number;
    style?: CSSProperties;
    type: "use";
    width: number;
    x?: number;
    y?: number;
}

Properties

animate?: SVGAttributes<SVGAnimateElement>
animateMotion?: SVGAttributes<SVGAnimateMotionElement>
className?: string
defs?: boolean

true will result in the element being wrapped in a <defs> (default: false)

+

https://developer.mozilla.org/en-US/docs/Web/SVG/Element/defs

+
fill?: string
height: number
href: string
id?: string
mpath?: SVGMPathElement
stroke?: string
strokeDasharray?: string | number
strokeDashoffset?: string | number
strokeLineCap?: "square" | "butt" | "round"
strokeLineJoin?: "round" | "miter"
strokeOpacity?: string | number
strokeWidth?: number
style?: CSSProperties
type: "use"
width: number
x?: number
y?: number
\ No newline at end of file diff --git a/interfaces/FloorData.html b/interfaces/FloorData.html new file mode 100644 index 00000000..b628f6a9 --- /dev/null +++ b/interfaces/FloorData.html @@ -0,0 +1,4 @@ +FloorData | @meridian/web-sdk

Interface FloorData

Meridian Floor data

+
interface FloorData {
    id: string;
    [key: string]: any;
}

Indexable

[key: string]: any

Properties

id +

Properties

id: string

Floor ID

+
\ No newline at end of file diff --git a/interfaces/LocationData.html b/interfaces/LocationData.html new file mode 100644 index 00000000..0f030870 --- /dev/null +++ b/interfaces/LocationData.html @@ -0,0 +1,4 @@ +LocationData | @meridian/web-sdk

Interface LocationData

Meridian Location data

+
interface LocationData {
    id: string;
    [key: string]: any;
}

Indexable

[key: string]: any

Properties

id +

Properties

id: string

Location ID

+
\ No newline at end of file diff --git a/interfaces/MeridianEvent.html b/interfaces/MeridianEvent.html new file mode 100644 index 00000000..297e8537 --- /dev/null +++ b/interfaces/MeridianEvent.html @@ -0,0 +1,4 @@ +MeridianEvent | @meridian/web-sdk

Interface MeridianEvent

MeridanSDK specific event object, used to preventDefault when overriding a +handler.

+
interface MeridianEvent {
    preventDefault: (() => void);
}

Properties

Properties

preventDefault: (() => void)

Type declaration

    • (): void
    • Returns void

\ No newline at end of file diff --git a/interfaces/MeridianMap.html b/interfaces/MeridianMap.html new file mode 100644 index 00000000..716d0024 --- /dev/null +++ b/interfaces/MeridianMap.html @@ -0,0 +1,19 @@ +MeridianMap | @meridian/web-sdk

Interface MeridianMap

Returned from createMap, this object allows you to manipulate a map that +has already been created in the page.

+
interface MeridianMap {
    centerMap: (() => void);
    destroy: (() => void);
    isDestroyed: boolean;
    update: ((updatedOptions) => void);
    zoomToDefault: (() => void);
    zoomToPoint: ((options) => void);
}

Properties

centerMap: (() => void)

Center the map while retaining the current scale.

+

Type declaration

    • (): void
    • Returns void

destroy: (() => void)

Remove the Meridian Map from the DOM and clean up all ongoing network +connections.

+

If you are writing a single page app you MUST use this call before hiding +the Meridian Map, or you will having network connections that keep going in +the background.

+

Type declaration

    • (): void
    • Returns void

isDestroyed: boolean

Has this map been destroyed

+
update: ((updatedOptions) => void)

Update the Meridian map to have new options.

+

Type declaration

    • (updatedOptions): void
    • Parameters

      Returns void

zoomToDefault: (() => void)

Set zoom to the default level and pan to the default position.

+

Type declaration

    • (): void
    • Returns void

zoomToPoint: ((options) => void)

Pan to x/y coordinate and scale to a given zoom factor.

+

Type declaration

    • (options): void
    • Parameters

      • options: {
            scale: number;
            x: number;
            y: number;
        }
        • scale: number
        • x: number
        • y: number

      Returns void

\ No newline at end of file diff --git a/interfaces/OpenStreamOptions.html b/interfaces/OpenStreamOptions.html new file mode 100644 index 00000000..f4456599 --- /dev/null +++ b/interfaces/OpenStreamOptions.html @@ -0,0 +1,22 @@ +OpenStreamOptions | @meridian/web-sdk

Interface OpenStreamOptions

Options passed to API.openStream.

+
interface OpenStreamOptions {
    floorID?: string;
    locationID: string;
    onClose?: (() => void);
    onException?: ((error) => void);
    onInitialTags?: ((tags) => void);
    onOpen?: (() => void);
    onTagUpdate?: ((tag) => void);
    resourceIDs?: string[];
    resourceType?: "LOCATION" | "TAG" | "FLOOR" | "LABEL" | "ZONE";
}

Properties

floorID?: string

Meridian floor ID

+
locationID: string

Meridian location ID

+
onClose?: (() => void)

Called when the stream closes

+

Type declaration

    • (): void
    • Returns void

onException?: ((error) => void)

Called when an error happens

+

Type declaration

    • (error): void
    • Parameters

      • error: Error

      Returns void

onInitialTags?: ((tags) => void)

Called with ALL tags on first load

+

Type declaration

    • (tags): void
    • Parameters

      Returns void

onOpen?: (() => void)

Called when the stream opens

+

Type declaration

    • (): void
    • Returns void

onTagUpdate?: ((tag) => void)

Called when a tag location updates

+

Type declaration

    • (tag): void
    • Parameters

      Returns void

resourceIDs?: string[]

Default: [floorID] if resourceType === "FLOOR" OR [locationID] if resourceType === "LOCATION", +Valid values: [locationID | floorIDs | tagIDs | tagLabelIDs | zoneIDs]

+
resourceType?: "LOCATION" | "TAG" | "FLOOR" | "LABEL" | "ZONE"

Default: "FLOOR" if floorID is defined +Valid values: "LOCATION" | "TAG" | "FLOOR" | "LABEL" | "ZONE"

+
\ No newline at end of file diff --git a/interfaces/PlacemarkData.html b/interfaces/PlacemarkData.html new file mode 100644 index 00000000..44c5b9db --- /dev/null +++ b/interfaces/PlacemarkData.html @@ -0,0 +1,4 @@ +PlacemarkData | @meridian/web-sdk

Interface PlacemarkData

Meridian Placemark data

+
interface PlacemarkData {
    id: string;
    [key: string]: any;
}

Indexable

[key: string]: any

Properties

id +

Properties

id: string

Placemark ID

+
\ No newline at end of file diff --git a/interfaces/Stream.html b/interfaces/Stream.html new file mode 100644 index 00000000..e237b960 --- /dev/null +++ b/interfaces/Stream.html @@ -0,0 +1,5 @@ +Stream | @meridian/web-sdk

Interface Stream

An open tag stream that can be closed. Returned by API.openStream.

+
const api = new MeridianSDK.API({
// ...
});

const stream = api.openStream({
// ...
});

stream.close(); +
+
interface Stream {
    close: (() => void);
}

Properties

Properties

close: (() => void)

Type declaration

    • (): void
    • Returns void

\ No newline at end of file diff --git a/interfaces/TagData.html b/interfaces/TagData.html new file mode 100644 index 00000000..7f70681e --- /dev/null +++ b/interfaces/TagData.html @@ -0,0 +1,4 @@ +TagData | @meridian/web-sdk

Interface TagData

Meridian Tag data

+
interface TagData {
    mac: string;
    [key: string]: any;
}

Indexable

[key: string]: any

Properties

mac +

Properties

mac: string

Tag MAC address (uppercase, no punctuation)

+
\ No newline at end of file diff --git a/interfaces/getDirectionsOptions.html b/interfaces/getDirectionsOptions.html new file mode 100644 index 00000000..a21f89e9 --- /dev/null +++ b/interfaces/getDirectionsOptions.html @@ -0,0 +1,12 @@ +getDirectionsOptions | @meridian/web-sdk

Interface getDirectionsOptions

Options passed to API.getDirections.

+
interface getDirectionsOptions {
    endPlacemarkID: string;
    locationID: string;
    startFloorID: string;
    startPlacemarkID: string;
    transportType?: string;
}

Properties

endPlacemarkID: string

Meridian end Placemark ID

+
locationID: string

Meridian Location ID

+
startFloorID: string

Meridian start Floor ID

+
startPlacemarkID: string

Meridian start Placemark ID

+
transportType?: string

Transport Type ("accessible" or undefined). Default is undefined

+
\ No newline at end of file diff --git a/interfaces/placemarkSearchOptions.html b/interfaces/placemarkSearchOptions.html new file mode 100644 index 00000000..fea319d2 --- /dev/null +++ b/interfaces/placemarkSearchOptions.html @@ -0,0 +1,12 @@ +placemarkSearchOptions | @meridian/web-sdk

Interface placemarkSearchOptions

interface placemarkSearchOptions {
    locationID: string;
    refFloorID?: string;
    refPoint?: string;
    searchStr: string;
}

Properties

locationID: string

Location ID

+
refFloorID?: string

Floor ID to be used in combination with refPoint +See API.debouncedPlacemarkSearchBeta

+
refPoint?: string

Map Point X/Y to be used in combination with refFloorID +See API.debouncedPlacemarkSearchBeta

+
searchStr: string

Search String

+
\ No newline at end of file diff --git a/modules.html b/modules.html new file mode 100644 index 00000000..1be0df8c --- /dev/null +++ b/modules.html @@ -0,0 +1,36 @@ +@meridian/web-sdk
\ No newline at end of file diff --git a/types/CustomAnnotation.html b/types/CustomAnnotation.html new file mode 100644 index 00000000..46de1152 --- /dev/null +++ b/types/CustomAnnotation.html @@ -0,0 +1,2 @@ +CustomAnnotation | @meridian/web-sdk

Type alias CustomAnnotation

CustomAnnotation: CustomAnnotationPoint

Object describing a custom annotation

+
\ No newline at end of file diff --git a/types/CustomOverlay.html b/types/CustomOverlay.html new file mode 100644 index 00000000..40ab9479 --- /dev/null +++ b/types/CustomOverlay.html @@ -0,0 +1,2 @@ +CustomOverlay | @meridian/web-sdk
\ No newline at end of file diff --git a/types/EnvOptions.html b/types/EnvOptions.html new file mode 100644 index 00000000..f1b96545 --- /dev/null +++ b/types/EnvOptions.html @@ -0,0 +1,2 @@ +EnvOptions | @meridian/web-sdk

Type alias EnvOptions

EnvOptions: "production" | "staging" | "eu" | "development" | "devCloud"

Environment name used in APIOptions. If unsure, use "production".

+
\ No newline at end of file diff --git a/variables/version.html b/variables/version.html new file mode 100644 index 00000000..3cf6ac11 --- /dev/null +++ b/variables/version.html @@ -0,0 +1,5 @@ +version | @meridian/web-sdk

Variable versionConst

version: string = GLOBAL_VERSION

The current version of the Meridian Web SDK. Useful for checking which +version is running.

+
console.log(MeridianSDK.version);
+
+
\ No newline at end of file