@digitransit-component/digitransit-component-autosuggest-panel 3.0.2 → 3.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("classnames"),require("prop-types"),require("react"),require("react-sortablejs"),require("i18next"),require("@digitransit-component/digitransit-component-autosuggest"),require("@digitransit-component/digitransit-component-icon"),require("lodash/isEmpty"),require("react-autosuggest")):"function"==typeof define&&define.amd?define(["exports","classnames","prop-types","react","react-sortablejs","i18next","@digitransit-component/digitransit-component-autosuggest","@digitransit-component/digitransit-component-icon","lodash/isEmpty","react-autosuggest"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-autosuggest-panel"]={},e.cx,e.PropTypes,e.React,e.reactSortablejs,e.i18next,e.DTAutosuggest,e.Icon,e.isEmpty,e.Autosuggest)}(this,(function(e,t,n,i,o,s,a,l,r,c){"use strict";function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=p(t),u=p(n),_=p(i),h=p(s),g=p(a),f=p(l),y=p(r),v=p(c);function m(e,t){if(null==e)return{};var n,i,o={},s=Object.keys(e);for(i=0;i<s.length;i++)n=s[i],t.indexOf(n)>=0||(o[n]=e[n]);return o}function b(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var x={"combobox-container":"select_combobox-container__0lRpm","left-column":"select_left-column__cSrMR","combobox-label":"select_combobox-label__F9Ayd",container:"select_container__yrA-N",suggestion:"select_suggestion__b05iD",suggestionHighlighted:"select_suggestionHighlighted__ZFPWo",suggestionsContainerOpen:"select_suggestionsContainerOpen__9wcJ5",input:"select_input__pK5vk"};b(".select_combobox-container__0lRpm {\n background-color: #fff;\n border: solid #888888 1px;\n display: flex;\n align-items: center;\n border-radius: 5px;\n height: 50px;\n justify-content: space-between;\n flex-grow: 1; }\n .select_combobox-container__0lRpm:focus-within {\n border-color: #007ac9; }\n .select_combobox-container__0lRpm .select_left-column__cSrMR {\n display: flex;\n flex-direction: column;\n width: 100%; }\n\n.select_combobox-label__F9Ayd {\n font-size: 12px;\n line-height: 20px;\n color: #666666;\n letter-spacing: -0.48px;\n margin-left: 12px;\n margin-top: 4px; }\n\n.select_container__yrA-N {\n position: relative; }\n .select_container__yrA-N .select_suggestion__b05iD {\n font-size: 15px;\n line-height: 49px;\n height: 50px;\n padding: 0 0 0 12px;\n letter-spacing: -0.6px;\n color: #333333;\n font-weight: 500; }\n .select_container__yrA-N .select_suggestionHighlighted__ZFPWo {\n font-size: 15px;\n font-weight: 500;\n background: #F4F4F5; }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 {\n position: absolute;\n background-color: #fff;\n z-index: 20;\n max-height: 250px;\n overflow-x: hidden;\n overflow-y: scroll;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid;\n top: 35px;\n width: calc(100% + 45px); }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 ul {\n padding: 0;\n margin: 0; }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 li:not(:last-child) {\n border-bottom: 1px solid #ddd; }\n .select_container__yrA-N .select_input__pK5vk {\n -webkit-appearance: none;\n appearance: none;\n margin: -4px 0 0 0;\n padding-left: 12px;\n border: none;\n height: 26px;\n background: #fff;\n font-weight: 500;\n box-shadow: none;\n font-size: 15px;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.6px;\n color: #333333; }\n .select_container__yrA-N .select_input__pK5vk:focus {\n outline: none;\n border: none;\n box-shadow: none;\n background: #fff; }\n .select_container__yrA-N .select_input__pK5vk:read-only {\n cursor: pointer;\n background: #fff; }\n");const k=["ref"],S=({value:e,getDisplay:t,options:n,onSlackTimeSelected:o,viaPointIndex:s,id:a,label:l,icon:r})=>{const[c,p]=i.useState(t(e)),[d,u]=i.useState(!1);i.useEffect((()=>p(t(e))),[e]);const h=i.useRef(null),g=Math.floor(e/600);i.useLayoutEffect((()=>{d&&h.current&&(h.current.scrollTop=50*g)}),[e,d]);const f=`${a}-input`,y=`${a}-label`;return _.default.createElement(_.default.Fragment,null,_.default.createElement("label",{className:x["combobox-container"],htmlFor:f},_.default.createElement("span",{className:x["left-column"]},_.default.createElement("span",{className:x["combobox-label"],id:y},l),_.default.createElement(v.default,{id:a,suggestions:n,getSuggestionValue:e=>e.value,renderSuggestion:e=>e.displayName,onSuggestionsFetchRequested:()=>null,shouldRenderSuggestions:()=>!0,focusInputOnSuggestionClick:!1,onSuggestionsClearRequested:()=>null,inputProps:{value:c,onChange:(t,{newValue:n,method:i})=>{switch(i){case"enter":case"click":o(n,s);break;case"escape":p(e)}},onFocus:()=>{u(!0)},onBlur:()=>{u(!1)},id:f,"aria-labelledby":y,"aria-autocomplete":"none",readOnly:!0},renderSuggestionsContainer:({containerProps:e,children:t})=>{const{ref:n}=e,i=m(e,k);return _.default.createElement("div",Object.assign({tabIndex:"-1"},i,{ref:e=>{e&&(h.current=e,n(e))}}),t)},theme:x})),r))};"production"!==process.env.NODE_ENV&&(S.propTypes={value:u.default.number.isRequired,onSlackTimeSelected:u.default.func.isRequired,getDisplay:u.default.func.isRequired,options:u.default.arrayOf(u.default.shape({displayName:u.default.string.isRequired,value:u.default.number.isRequired}).isRequired).isRequired,id:u.default.string.isRequired,label:u.default.node.isRequired,icon:u.default.node.isRequired,viaPointIndex:u.default.number.isRequired});const w={de:{"add-via-button-label":"Füge Zwischenziel hinzu","add-via-duration-button-label":"Setze Umsteigezeit für Zwischenziel {{index}}","add-via-duration-button-label-close":"Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}","add-via-duration-button-label-open":"Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}","minute-short":"min","remove-via-button-label":"Entferne Zwischenziel {{index}}","swap-order-button-label":"Tausche Start mit Ziel","via-point":"Zwischenziel","via-point-index":"Zwischenziel {{index}}","viapoint-slack-amount":"Umsteigezeit"},en:{"add-via-button-label":"Add via point","add-via-duration-button-label":"Set stop duration at via point {{index}}","add-via-duration-button-label-close":"Close stop duration selector at via point {{index}}","add-via-duration-button-label-open":"Open stop duration selector at via point {{index}}","minute-short":"min","remove-via-button-label":"Remove via point {{index}}","swap-order-button-label":"Reverse origin and destination","via-point":"Via point","via-point-index":"Via point {{index}}","viapoint-slack-amount":"Stop duration"},fi:{"add-via-button-label":"Lisää välipiste","add-via-duration-button-label":"Aseta välipisteelle {{index}} pysähdyksen kesto","add-via-duration-button-label-close":"Avaa välipisteen {{index}} pysähdyksen kesto valitsin","add-via-duration-button-label-open":"Sulje välipisteen {{index}} pysähdyksen kesto valitsin","minute-short":"min","remove-via-button-label":"Poista välipiste {{index}}","swap-order-button-label":"Käännä reitin suunta vastakkaiseksi","via-point":"Välipiste","via-point-index":"Välipiste {{index}}","viapoint-slack-amount":"Pysähdyksen kesto"},sv:{"add-via-button-label":"Lägg till viapunkt","add-via-duration-button-label":"Ställ in varaktighet för viapunkten {{index}}","add-via-duration-button-label-close":"Stäng väljaren för varaktighet vid via-punkten {{index}}","add-via-duration-button-label-open":"Öppna väljaren för varaktighet vid via-punkten {{index}}","minute-short":"min","remove-via-button-label":"Ta bort viapunkt {{index}}","swap-order-button-label":"Sväng ruttens riktning till den motsatta","via-point":"Via punkt","via-point-index":"Via punkt {{index}}","viapoint-slack-amount":"Stoppets varaktighet"}};var E={"autosuggest-panel":"styles_autosuggest-panel__meNwd","autosuggest-searchpanel-text":"styles_autosuggest-searchpanel-text__-VQTg","origin-input-container":"styles_origin-input-container__p4Qik","destination-input-container":"styles_destination-input-container__jBY4I",row:"styles_row__1GhCD","viapoints-container":"styles_viapoints-container__FYp7K","viapoint-container":"styles_viapoint-container__8yh1M","light-gray-background":"styles_light-gray-background__4fyZs","viapoint-before":"styles_viapoint-before__t4saF","viapoint-input-container":"styles_viapoint-input-container__uZx95","viapoint-1":"styles_viapoint-1__8Mna8",viapoint:"styles_viapoint__vUO9L","viapoint-2":"styles_viapoint-2__-OoUa","viapoint-3":"styles_viapoint-3__vvivE","viapoint-4":"styles_viapoint-4__jS9k1","viapoint-5":"styles_viapoint-5__J4V5N","viapoint-slack-time":"styles_viapoint-slack-time__Xpo0G","select-wrapper":"styles_select-wrapper__1usZw","via-point-button-container":"styles_via-point-button-container__cI2JI","input-viapoint-slack-container":"styles_input-viapoint-slack-container__TNgVy","itinerary-search-control":"styles_itinerary-search-control__cEL1X",opposite:"styles_opposite__zQQhd","add-via-point":"styles_add-via-point__E-gGB","add-via-point-slack":"styles_add-via-point-slack__GKjFf","remove-via-point":"styles_remove-via-point__e9DMQ","combobox-icon":"styles_combobox-icon__d3k1e","time-input-icon":"styles_time-input-icon__M8dmw","rectangle-container":"styles_rectangle-container__AdbAA",rectangle:"styles_rectangle__1IO7E","search-panel-whitespace":"styles_search-panel-whitespace__Luhwx"};b("/* stylelint-disable */\n.styles_autosuggest-panel__meNwd {\n width: 100%; }\n\n.styles_autosuggest-searchpanel-text__-VQTg {\n font-size: 24px;\n font-weight: var(--font-weight-medium);\n letter-spacing: -0.8px;\n color: #333333;\n line-height: 1;\n margin-bottom: 17px;\n margin-top: unset; }\n @media screen and (min-width: 768px) {\n .styles_autosuggest-searchpanel-text__-VQTg {\n letter-spacing: -0.8px;\n line-height: 27px;\n margin-bottom: 21px; } }\n\n.styles_origin-input-container__p4Qik,\n.styles_destination-input-container__jBY4I {\n display: flex;\n flex: 1 0 100%; }\n .styles_origin-input-container__p4Qik input[type='text'],\n .styles_destination-input-container__jBY4I input[type='text'] {\n margin: 0; }\n\n.styles_row__1GhCD {\n display: flex;\n flex-direction: row; }\n\n.styles_viapoints-container__FYp7K {\n display: flex;\n flex-direction: column; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M {\n display: flex;\n flex: 1 0 100%;\n min-height: 50px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:first-child {\n margin-top: 6px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:not(:first-child) {\n margin-top: 3px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:last-child {\n margin-bottom: 6px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs {\n display: flex;\n padding: 3px 0;\n flex-direction: column;\n background: #f4f4f5;\n border-radius: 5px;\n width: 100%; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF {\n display: flex;\n min-width: 27px;\n justify-content: center;\n align-items: center; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF svg {\n fill: #888;\n height: 20px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 {\n display: flex;\n align-items: center;\n width: 100%; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 input[type='text'] {\n margin: 0; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-1__8Mna8 > div.styles_viapoint__vUO9L {\n z-index: 15; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-2__-OoUa > div.styles_viapoint__vUO9L {\n z-index: 14; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-3__vvivE > div.styles_viapoint__vUO9L {\n z-index: 13; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-4__jS9k1 > div.styles_viapoint__vUO9L {\n z-index: 12; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-5__J4V5N > div.styles_viapoint__vUO9L {\n z-index: 11; }\n\n.styles_viapoint-slack-time__Xpo0G {\n font-size: 13px;\n font-weight: normal;\n letter-spacing: -0.36px;\n color: #333333;\n padding-left: 27px;\n padding-top: 12px;\n padding-bottom: 10px; }\n\n.styles_select-wrapper__1usZw {\n display: flex;\n height: 50px;\n margin-top: 9px;\n padding-left: 27px;\n padding-right: 47px; }\n\n.styles_via-point-button-container__cI2JI {\n display: flex; }\n .styles_via-point-button-container__cI2JI > div:nth-child(1) {\n order: 1;\n border-left: none; }\n .styles_via-point-button-container__cI2JI > div:nth-child(2) {\n order: 2;\n border-left: 1px solid rgba(151, 151, 151, 0.2); }\n\n.styles_input-viapoint-slack-container__TNgVy {\n display: flex;\n flex-direction: column; }\n\n.styles_itinerary-search-control__cEL1X {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n max-height: 50px;\n min-width: var(--width); }\n .styles_itinerary-search-control__cEL1X + .styles_itinerary-search-control__cEL1X {\n border-left: 1px solid rgba(151, 151, 151, 0.2); }\n .styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd svg {\n width: 19px;\n height: 17px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB svg {\n width: 20px;\n height: 22px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 47px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf svg {\n width: 18px;\n height: 19px; }\n .styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n max-height: 44px;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ svg {\n width: 14px;\n height: 14px; }\n\n.styles_combobox-icon__d3k1e {\n color: var(--color);\n border-left: solid #888888 1px;\n height: 35px; }\n .styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw {\n padding: 9px 13px 0 13px; }\n .styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw svg {\n width: 18px;\n height: 19px; }\n\n.styles_rectangle-container__AdbAA {\n display: block;\n position: relative;\n height: 9px;\n z-index: 19; }\n .styles_rectangle-container__AdbAA .styles_rectangle__1IO7E {\n position: absolute;\n width: 4px;\n height: 21px;\n border-radius: 2px;\n background-color: #dddddd;\n margin-left: 25px;\n margin-top: -5px; }\n\n.styles_search-panel-whitespace__Luhwx {\n min-width: 40px; }\n");const C=["children","className","enabled","onClick","onKeyPress","wide"];h.default.init({lng:"fi",fallbackLng:"fi",defaultNS:"translation",interpolation:{escapeValue:!1}});const P=()=>({}),N=e=>{if(void 0===e||y.default(e))return!0;const t=Object.keys(e);return 1===t.length||2===t.length&&t.includes("locationSlack")},V=e=>{let{children:t,className:n,enabled:i,onClick:o,onKeyPress:s,wide:a}=e,l=m(e,C);return _.default.createElement("div",{className:E["itinerary-search-control"],style:{"--width":a?"47px":"40px"}},o&&i&&_.default.createElement("div",Object.assign({},l,{className:n,onClick:o,onKeyPress:s,role:"button",tabIndex:"0"}),t))};"production"!==process.env.NODE_ENV&&(V.propTypes={children:u.default.node,className:u.default.string.isRequired,enabled:u.default.bool.isRequired,onClick:u.default.func.isRequired,onKeyPress:u.default.func.isRequired,wide:u.default.bool});class A extends _.default.Component{constructor(e){super(e),this.componentDidMount=()=>{h.default.changeLanguage(this.props.lang)},this.componentDidUpdate=()=>{h.default.language!==this.props.lang&&h.default.changeLanguage(this.props.lang)},this.getSlackTimeOptions=()=>{const e=[];for(let t=0;t<=9;t++){const n=10*t;e.push({displayName:`${n} ${h.default.t("minute-short")}`,value:60*n})}return e},this.setDraggableViaPointRef=(e,t)=>{this.draggableViaPoints[t]=e},this.storeReference=e=>{this.setState((t=>({refs:[...t.refs,e]})))},this.handleFocusChange=()=>{const{destination:e}=this.props;e&&e.set||this.state.refs[1].focus()},this.isKeyboardSelectionEvent=e=>{const t=e&&(e.key||e.which||e.keyCode)||"";return!(!t||![13," ","Spacebar"].concat([32,"Enter"]).includes(t))&&(e.preventDefault(),!0)},this.value=e=>e&&e.address||e&&e.gps&&e.ready&&"Nykyinen sijainti"||"",this.class=e=>e&&!0===e.gps?"position":"location",this.updateViaPoints=e=>{0!==e.length?this.props.updateViaPoints(e.filter((e=>!N(e)))):this.props.updateViaPoints([])},this.updateViaPointSlack=(e,t,n=!1)=>{const i=e.indexOf(t);return i>-1&&e.splice(i,1),n?e.map((e=>e>t?e-1:e)):e},this.handleToggleViaPointSlackClick=e=>{const{activeSlackInputs:t}=this.state;this.setState({activeSlackInputs:t.includes(e)?this.updateViaPointSlack(t,e):t.concat([e])})},this.handleViaPointSlackTimeSelected=(e,t)=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"EditViaPointStopDuration",category:"ItinerarySettings",name:e/60});const{viaPoints:n}=this.props;n[t].locationSlack=Number.parseInt(e,10),this.updateViaPoints(n)},this.handleViaPointLocationSelected=(e,t)=>{this.props.handleViaPointLocationSelected(e,t)},this.handleRemoveViaPointClick=e=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"RemoveJourneyViaPoint",category:"ItinerarySettings",name:null});const{activeSlackInputs:t}=this.state,{viaPoints:n}=this.props;n.splice(e,1),this.setState({activeSlackInputs:this.updateViaPointSlack(t,e,!0)},(()=>this.updateViaPoints(n)))},this.handleAddViaPointClick=()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"AddJourneyViaPoint",category:"ItinerarySettings",name:"QuickSettingsButton"});const{viaPoints:e}=this.props;e.push({}),this.setState(this.state)},this.handleSwapOrderClick=()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"SwitchJourneyStartAndEndPointOrder",category:"ItinerarySettings",name:null});const{viaPoints:e}=this.props;e.reverse(),this.props.swapOrder()},this.getSlackDisplay=e=>`${e/60} ${h.default.t("minute-short")}`,this.render=()=>{const{origin:e,searchPanelText:t,searchContext:n,disableAutoFocus:i,viaPoints:s,originMobileLabel:a,destinationMobileLabel:l,fontWeights:r,onFocusChange:c,showSwapControl:p,showViapointControl:u}=this.props,{activeSlackInputs:y}=this.state,v=this.getSlackTimeOptions(),m=(e,t=0)=>e&&e.locationSlack||t,b=e=>y.includes(e);return _.default.createElement("div",{className:d.default(E["autosuggest-panel"],this.props.isMobile&&"small"),style:{"--color":`${this.props.color}`,"--font-weight-medium":r.medium}}," ",t?_.default.createElement("div",null,_.default.createElement("h1",{className:E["autosuggest-searchpanel-text"]}," ",t)):null,_.default.createElement("div",{className:E["origin-input-container"]},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"origin",autoFocus:!0!==i&&(!this.props.isMobile&&!e.lat),storeRef:this.storeReference,refPoint:this.props.refPoint,className:this.class(e),placeholder:this.props.originPlaceHolder,value:this.value(e),searchContext:n,getAutoSuggestIcons:this.props.getAutoSuggestIcons,onSelect:this.props.onSelect,onClear:this.props.onClear,focusChange:c||this.handleFocusChange,lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,mobileLabel:a,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(p||u)&&_.default.createElement(V,{className:E.opposite,enabled:p,onClick:()=>this.handleSwapOrderClick(),onKeyPress:e=>this.isKeyboardSelectionEvent(e)&&this.handleSwapOrderClick(),"aria-label":h.default.t("swap-order-button-label")},_.default.createElement(f.default,{img:"opposite",color:this.props.color}))),0===s.length&&_.default.createElement("div",{className:E["rectangle-container"]},_.default.createElement("div",{className:E.rectangle})),_.default.createElement(o.ReactSortable,{className:E["viapoints-container"],list:s,handle:`.${E["viapoint-before"]}`,animation:200,setList:e=>{const t=e.filter((e=>!N(e)));t.length>0&&this.props.updateViaPoints(t)}},s.map(((e,t)=>_.default.createElement("div",{className:d.default(E["viapoint-container"]),key:`viapoint-${t}`},_.default.createElement("div",{className:E["light-gray-background"]},_.default.createElement("div",{className:E.row},_.default.createElement("div",{className:E["viapoint-before"],style:{cursor:"move"}},_.default.createElement(f.default,{img:"ellipsis",rotate:90,color:this.props.color})),_.default.createElement("div",{className:`${E["viapoint-input-container"]} ${E[`viapoint-${t+1}`]}`},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker-via",id:"via-point",ariaLabel:h.default.t("via-point-index",{index:t+1}),autoFocus:!0!==i&&!this.props.isMobile,placeholder:"via-point",className:"viapoint",searchContext:n,refPoint:this.props.refPoint,value:e&&e.address||"",onSelect:this.props.onSelect,onClear:this.props.onClear,handleViaPoints:e=>this.handleViaPointLocationSelected(e,t),lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,getAutoSuggestIcons:this.props.getAutoSuggestIcons,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll})),_.default.createElement(V,{className:E["add-via-point-slack"],enabled:this.props.showViapointControl,onClick:()=>this.handleToggleViaPointSlackClick(t),onKeyPress:e=>this.isKeyboardSelectionEvent(e)&&this.handleToggleViaPointSlackClick(t),"aria-label":h.default.t(b(t)?"add-via-duration-button-label-open":"add-via-duration-button-label-close",{index:t+1}),wide:!0},_.default.createElement(f.default,{img:"time",color:this.props.color}))),!b(t)&&s[t]&&s[t].locationSlack>0&&_.default.createElement("span",{className:E["viapoint-slack-time"]},`${h.default.t("viapoint-slack-amount")}: ${this.getSlackDisplay(s[t].locationSlack)}`),_.default.createElement("div",{className:d.default(E["input-viapoint-slack-container"],!b(t)&&"collapsed")},_.default.createElement("div",{className:E["select-wrapper"]},_.default.createElement(S,{id:`viapoint-slack-${t}`,label:h.default.t("viapoint-slack-amount"),options:v,value:m(s[t]),getDisplay:this.getSlackDisplay,viaPointIndex:t,icon:_.default.createElement("span",{className:`${E["combobox-icon"]} ${E["time-input-icon"]}`},_.default.createElement(f.default,{img:"time",color:this.props.color})),onSlackTimeSelected:this.handleViaPointSlackTimeSelected})))),_.default.createElement(V,{className:E["remove-via-point"],enabled:this.props.showViapointControl,onClick:()=>this.handleRemoveViaPointClick(t),onKeyPress:e=>this.isKeyboardSelectionEvent(e)&&this.handleRemoveViaPointClick(t),"aria-label":h.default.t("remove-via-button-label",{index:t+1})},_.default.createElement(f.default,{img:"close",color:this.props.color})))))),_.default.createElement("div",{className:E["destination-input-container"]},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"destination",autoFocus:!0!==i&&(!this.props.isMobile&&!Number.isNaN(e.lat)),storeRef:this.storeReference,placeholder:this.props.destinationPlaceHolder,className:this.class(this.props.destination),getAutoSuggestIcons:this.props.getAutoSuggestIcons,searchContext:n,onSelect:this.props.onSelect,onClear:this.props.onClear,refPoint:this.props.refPoint,value:this.value(this.props.destination),lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,mobileLabel:l,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(p||u)&&_.default.createElement(V,{className:d.default(E["add-via-point"],E.more,s.length>4&&"collapsed"),enabled:u,onClick:()=>this.handleAddViaPointClick(),onKeyPress:e=>this.isKeyboardSelectionEvent(e)&&this.handleAddViaPointClick(),"aria-label":h.default.t("add-via-button-label")},_.default.createElement(f.default,{img:"viapoint",width:1.25,height:1.375,color:this.props.color}))))},this.draggableViaPoints=[],this.state={activeSlackInputs:[],refs:[]},Object.keys(w).forEach((e=>{h.default.addResourceBundle(e,"translation",w[e])}))}}A.defaultProps={viaPoints:[],originPlaceHolder:"give-origin",destinationPlaceHolder:"give-destination",swapOrder:void 0,updateViaPoints:()=>{},lang:"fi",sources:[],targets:[],filterResults:void 0,disableAutoFocus:!1,isMobile:!1,handleViaPointLocationSelected:void 0,color:"#007ac9",hoverColor:"#0062a1",originMobileLabel:null,destinationMobileLabel:null,modeSet:void 0,modeIconColors:void 0,fontWeights:{medium:500},showScroll:!1,onFocusChange:void 0,isEmbedded:!1,showSwapControl:!1,showViapointControl:!1},"production"!==process.env.NODE_ENV&&(A.propTypes={appElement:u.default.string.isRequired,origin:u.default.object.isRequired,destination:u.default.object.isRequired,originPlaceHolder:u.default.string,destinationPlaceHolder:u.default.string,viaPoints:u.default.arrayOf(u.default.object),updateViaPoints:u.default.func,handleViaPointLocationSelected:u.default.func,swapOrder:u.default.func,searchPanelText:u.default.string,searchContext:u.default.any.isRequired,onSelect:u.default.func,onClear:u.default.func,addAnalyticsEvent:u.default.func,lang:u.default.string,disableAutoFocus:u.default.bool,sources:u.default.arrayOf(u.default.string),targets:u.default.arrayOf(u.default.string),filterResults:u.default.func,isMobile:u.default.bool,color:u.default.string,hoverColor:u.default.string,originMobileLabel:u.default.string,destinationMobileLabel:u.default.string,refPoint:u.default.object,modeSet:u.default.string,modeIconColors:u.default.object,getAutoSuggestIcons:u.default.object,fontWeights:u.default.shape({medium:u.default.number}),showScroll:u.default.bool,onFocusChange:u.default.func,isEmbedded:u.default.bool,showSwapControl:u.default.bool,showViapointControl:u.default.bool}),e.default=A,e.getEmptyViaPointPlaceHolder=P,Object.defineProperty(e,"__esModule",{value:!0})}));
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZGV2ZWxvcG1lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWluamVjdC9kaXN0L3N0eWxlLWluamVjdC5lcy5qcyIsIi4uL3NyYy9oZWxwZXJzL1NlbGVjdC5qcyIsIi4uL3NyYy9oZWxwZXJzL3RyYW5zbGF0aW9ucy5qcyIsIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7XG4gIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9O1xuICB2YXIgdGFyZ2V0ID0ge307XG4gIHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgdmFyIGtleSwgaTtcbiAgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBrZXkgPSBzb3VyY2VLZXlzW2ldO1xuICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7XG4gICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufSIsImZ1bmN0aW9uIHN0eWxlSW5qZWN0KGNzcywgcmVmKSB7XG4gIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSB7fTtcbiAgdmFyIGluc2VydEF0ID0gcmVmLmluc2VydEF0O1xuXG4gIGlmICghY3NzIHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHsgcmV0dXJuOyB9XG5cbiAgdmFyIGhlYWQgPSBkb2N1bWVudC5oZWFkIHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4gIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHN0eWxlLnR5cGUgPSAndGV4dC9jc3MnO1xuXG4gIGlmIChpbnNlcnRBdCA9PT0gJ3RvcCcpIHtcbiAgICBpZiAoaGVhZC5maXJzdENoaWxkKSB7XG4gICAgICBoZWFkLmluc2VydEJlZm9yZShzdHlsZSwgaGVhZC5maXJzdENoaWxkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICB9XG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgc3R5bGVJbmplY3Q7XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IEF1dG9zdWdnZXN0IGZyb20gJ3JlYWN0LWF1dG9zdWdnZXN0JztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zZWxlY3Quc2Nzcyc7XG5cbmNvbnN0IFNlbGVjdCA9ICh7XG4gIHZhbHVlLFxuICBnZXREaXNwbGF5LFxuICBvcHRpb25zLFxuICBvblNsYWNrVGltZVNlbGVjdGVkLFxuICB2aWFQb2ludEluZGV4LFxuICBpZCxcbiAgbGFiZWwsXG4gIGljb24sXG59KSA9PiB7XG4gIGNvbnN0IFtkaXNwbGF5VmFsdWUsIGNoYW5nZURpc3BsYXlWYWx1ZV0gPSB1c2VTdGF0ZShnZXREaXNwbGF5KHZhbHVlKSk7XG4gIGNvbnN0IFtvcGVuLCBjaGFuZ2VPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgdXNlRWZmZWN0KCgpID0+IGNoYW5nZURpc3BsYXlWYWx1ZShnZXREaXNwbGF5KHZhbHVlKSksIFt2YWx1ZV0pO1xuICBjb25zdCBzY3JvbGxSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IHNjcm9sbEluZGV4ID0gTWF0aC5mbG9vcih2YWx1ZSAvIDYwMCk7XG4gIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSA1MDtcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAob3BlbiAmJiBzY3JvbGxSZWYuY3VycmVudCkge1xuICAgICAgc2Nyb2xsUmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gZWxlbWVudEhlaWdodCAqIHNjcm9sbEluZGV4O1xuICAgIH1cbiAgfSwgW3ZhbHVlLCBvcGVuXSk7XG5cbiAgY29uc3QgaW5wdXRJZCA9IGAke2lkfS1pbnB1dGA7XG4gIGNvbnN0IGxhYmVsSWQgPSBgJHtpZH0tbGFiZWxgO1xuXG4gIGNvbnN0IG9uSW5wdXRDaGFuZ2UgPSAoXywgeyBuZXdWYWx1ZSwgbWV0aG9kIH0pID0+IHtcbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgICAgY2FzZSAnZW50ZXInOlxuICAgICAgY2FzZSAnY2xpY2snOlxuICAgICAgICBvblNsYWNrVGltZVNlbGVjdGVkKG5ld1ZhbHVlLCB2aWFQb2ludEluZGV4KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdlc2NhcGUnOlxuICAgICAgICBjaGFuZ2VEaXNwbGF5VmFsdWUodmFsdWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3VwJzpcbiAgICAgIGNhc2UgJ2Rvd24nOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9O1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8bGFiZWwgY2xhc3NOYW1lPXtzdHlsZXNbJ2NvbWJvYm94LWNvbnRhaW5lciddfSBodG1sRm9yPXtpbnB1dElkfT5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ2xlZnQtY29sdW1uJ119PlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzWydjb21ib2JveC1sYWJlbCddfSBpZD17bGFiZWxJZH0+XG4gICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxBdXRvc3VnZ2VzdFxuICAgICAgICAgICAgaWQ9e2lkfVxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM9e29wdGlvbnN9XG4gICAgICAgICAgICBnZXRTdWdnZXN0aW9uVmFsdWU9e3MgPT4gcy52YWx1ZX1cbiAgICAgICAgICAgIHJlbmRlclN1Z2dlc3Rpb249e3MgPT4gcy5kaXNwbGF5TmFtZX1cbiAgICAgICAgICAgIG9uU3VnZ2VzdGlvbnNGZXRjaFJlcXVlc3RlZD17KCkgPT4gbnVsbH1cbiAgICAgICAgICAgIHNob3VsZFJlbmRlclN1Z2dlc3Rpb25zPXsoKSA9PiB0cnVlfVxuICAgICAgICAgICAgZm9jdXNJbnB1dE9uU3VnZ2VzdGlvbkNsaWNrPXtmYWxzZX1cbiAgICAgICAgICAgIG9uU3VnZ2VzdGlvbnNDbGVhclJlcXVlc3RlZD17KCkgPT4gbnVsbH1cbiAgICAgICAgICAgIGlucHV0UHJvcHM9e3tcbiAgICAgICAgICAgICAgdmFsdWU6IGRpc3BsYXlWYWx1ZSxcbiAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uSW5wdXRDaGFuZ2UsXG4gICAgICAgICAgICAgIG9uRm9jdXM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VPcGVuKHRydWUpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvbkJsdXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaWQ6IGlucHV0SWQsXG4gICAgICAgICAgICAgICdhcmlhLWxhYmVsbGVkYnknOiBsYWJlbElkLFxuICAgICAgICAgICAgICAnYXJpYS1hdXRvY29tcGxldGUnOiAnbm9uZScsXG4gICAgICAgICAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHJlbmRlclN1Z2dlc3Rpb25zQ29udGFpbmVyPXsoeyBjb250YWluZXJQcm9wcywgY2hpbGRyZW4gfSkgPT4ge1xuICAgICAgICAgICAgICAvLyBzZXQgcmVmcyBmb3IgYXV0b3N1Z2dlc3QgbGlicmFyeSBhbmQgc2Nyb2xsYmFyIHBvc2l0aW9uaW5nXG4gICAgICAgICAgICAgIGNvbnN0IHsgcmVmLCAuLi5vdGhlclJlZnMgfSA9IGNvbnRhaW5lclByb3BzO1xuICAgICAgICAgICAgICBjb25zdCBjb250YWluZXJSZWYgPSBlbGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbSkge1xuICAgICAgICAgICAgICAgICAgc2Nyb2xsUmVmLmN1cnJlbnQgPSBlbGVtO1xuICAgICAgICAgICAgICAgICAgcmVmKGVsZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8ZGl2IHRhYkluZGV4PVwiLTFcIiB7Li4ub3RoZXJSZWZzfSByZWY9e2NvbnRhaW5lclJlZn0+XG4gICAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgdGhlbWU9e3N0eWxlc31cbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtpY29ufVxuICAgICAgPC9sYWJlbD5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblNlbGVjdC5wcm9wVHlwZXMgPSB7XG4gIHZhbHVlOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIG9uU2xhY2tUaW1lU2VsZWN0ZWQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGdldERpc3BsYXk6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9wdGlvbnM6IFByb3BUeXBlcy5hcnJheU9mKFxuICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBkaXNwbGF5TmFtZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgdmFsdWU6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICB9KS5pc1JlcXVpcmVkLFxuICApLmlzUmVxdWlyZWQsXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGxhYmVsOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICBpY29uOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkLFxuICB2aWFQb2ludEluZGV4OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZWxlY3Q7XG4iLCJjb25zdCB0cmFuc2xhdGlvbnMgPSB7XG4gIGRlOiB7XG4gICAgJ2FkZC12aWEtYnV0dG9uLWxhYmVsJzogJ0bDvGdlIFp3aXNjaGVuemllbCBoaW56dScsXG4gICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsJzpcbiAgICAgICdTZXR6ZSBVbXN0ZWlnZXplaXQgZsO8ciBad2lzY2hlbnppZWwge3tpbmRleH19JyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtY2xvc2UnOlxuICAgICAgJ1NjaGxpZcOfZSBVbXN0ZWlnZXplaXQtQXVzd2FobCBmw7xyIFp3aXNjaGVuemllbCB7e2luZGV4fX0nLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1vcGVuJzpcbiAgICAgICfDlmZmbmUgVW1zdGVpZ2V6ZWl0LUF1c3dhaGwgZsO8ciBad2lzY2hlbnppZWwge3tpbmRleH19JyxcbiAgICAnbWludXRlLXNob3J0JzogJ21pbicsXG4gICAgJ3JlbW92ZS12aWEtYnV0dG9uLWxhYmVsJzogJ0VudGZlcm5lIFp3aXNjaGVuemllbCB7e2luZGV4fX0nLFxuICAgICdzd2FwLW9yZGVyLWJ1dHRvbi1sYWJlbCc6ICdUYXVzY2hlIFN0YXJ0IG1pdCBaaWVsJyxcbiAgICAndmlhLXBvaW50JzogJ1p3aXNjaGVuemllbCcsXG4gICAgJ3ZpYS1wb2ludC1pbmRleCc6ICdad2lzY2hlbnppZWwge3tpbmRleH19JyxcbiAgICAndmlhcG9pbnQtc2xhY2stYW1vdW50JzogJ1Vtc3RlaWdlemVpdCcsXG4gIH0sXG4gIGVuOiB7XG4gICAgJ2FkZC12aWEtYnV0dG9uLWxhYmVsJzogJ0FkZCB2aWEgcG9pbnQnLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbCc6ICdTZXQgc3RvcCBkdXJhdGlvbiBhdCB2aWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtY2xvc2UnOlxuICAgICAgJ0Nsb3NlIHN0b3AgZHVyYXRpb24gc2VsZWN0b3IgYXQgdmlhIHBvaW50IHt7aW5kZXh9fScsXG4gICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLW9wZW4nOlxuICAgICAgJ09wZW4gc3RvcCBkdXJhdGlvbiBzZWxlY3RvciBhdCB2aWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAnbWludXRlLXNob3J0JzogJ21pbicsXG4gICAgJ3JlbW92ZS12aWEtYnV0dG9uLWxhYmVsJzogJ1JlbW92ZSB2aWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAnc3dhcC1vcmRlci1idXR0b24tbGFiZWwnOiAnUmV2ZXJzZSBvcmlnaW4gYW5kIGRlc3RpbmF0aW9uJyxcbiAgICAndmlhLXBvaW50JzogJ1ZpYSBwb2ludCcsXG4gICAgJ3ZpYS1wb2ludC1pbmRleCc6ICdWaWEgcG9pbnQge3tpbmRleH19JyxcbiAgICAndmlhcG9pbnQtc2xhY2stYW1vdW50JzogJ1N0b3AgZHVyYXRpb24nLFxuICB9LFxuICBmaToge1xuICAgICdhZGQtdmlhLWJ1dHRvbi1sYWJlbCc6ICdMaXPDpMOkIHbDpGxpcGlzdGUnLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbCc6XG4gICAgICAnQXNldGEgdsOkbGlwaXN0ZWVsbGUge3tpbmRleH19IHB5c8OkaGR5a3NlbiBrZXN0bycsXG4gICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLWNsb3NlJzpcbiAgICAgICdBdmFhIHbDpGxpcGlzdGVlbiB7e2luZGV4fX0gcHlzw6RoZHlrc2VuIGtlc3RvIHZhbGl0c2luJyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtb3Blbic6XG4gICAgICAnU3VsamUgdsOkbGlwaXN0ZWVuIHt7aW5kZXh9fSBweXPDpGhkeWtzZW4ga2VzdG8gdmFsaXRzaW4nLFxuICAgICdtaW51dGUtc2hvcnQnOiAnbWluJyxcbiAgICAncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnOiAnUG9pc3RhIHbDpGxpcGlzdGUge3tpbmRleH19JyxcbiAgICAnc3dhcC1vcmRlci1idXR0b24tbGFiZWwnOiAnS8Okw6RubsOkIHJlaXRpbiBzdXVudGEgdmFzdGFra2Fpc2Vrc2knLFxuICAgICd2aWEtcG9pbnQnOiAnVsOkbGlwaXN0ZScsXG4gICAgJ3ZpYS1wb2ludC1pbmRleCc6ICdWw6RsaXBpc3RlIHt7aW5kZXh9fScsXG4gICAgJ3ZpYXBvaW50LXNsYWNrLWFtb3VudCc6ICdQeXPDpGhkeWtzZW4ga2VzdG8nLFxuICB9LFxuICBzdjoge1xuICAgICdhZGQtdmlhLWJ1dHRvbi1sYWJlbCc6ICdMw6RnZyB0aWxsIHZpYXB1bmt0JyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwnOlxuICAgICAgJ1N0w6RsbCBpbiB2YXJha3RpZ2hldCBmw7ZyIHZpYXB1bmt0ZW4ge3tpbmRleH19JyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtY2xvc2UnOlxuICAgICAgJ1N0w6RuZyB2w6RsamFyZW4gZsO2ciB2YXJha3RpZ2hldCB2aWQgdmlhLXB1bmt0ZW4ge3tpbmRleH19JyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtb3Blbic6XG4gICAgICAnw5ZwcG5hIHbDpGxqYXJlbiBmw7ZyIHZhcmFrdGlnaGV0IHZpZCB2aWEtcHVua3RlbiB7e2luZGV4fX0nLFxuICAgICdtaW51dGUtc2hvcnQnOiAnbWluJyxcbiAgICAncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnOiAnVGEgYm9ydCB2aWFwdW5rdCB7e2luZGV4fX0nLFxuICAgICdzd2FwLW9yZGVyLWJ1dHRvbi1sYWJlbCc6ICdTdsOkbmcgcnV0dGVucyByaWt0bmluZyB0aWxsIGRlbiBtb3RzYXR0YScsXG4gICAgJ3ZpYS1wb2ludCc6ICdWaWEgcHVua3QnLFxuICAgICd2aWEtcG9pbnQtaW5kZXgnOiAnVmlhIHB1bmt0IHt7aW5kZXh9fScsXG4gICAgJ3ZpYXBvaW50LXNsYWNrLWFtb3VudCc6ICdTdG9wcGV0cyB2YXJha3RpZ2hldCcsXG4gIH0sXG59O1xuXG5leHBvcnQgZGVmYXVsdCB0cmFuc2xhdGlvbnM7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgUmVhY3RTb3J0YWJsZSB9IGZyb20gJ3JlYWN0LXNvcnRhYmxlanMnO1xuaW1wb3J0IGkxOG5leHQgZnJvbSAnaTE4bmV4dCc7XG5pbXBvcnQgRFRBdXRvU3VnZ2VzdCBmcm9tICdAZGlnaXRyYW5zaXQtY29tcG9uZW50L2RpZ2l0cmFuc2l0LWNvbXBvbmVudC1hdXRvc3VnZ2VzdCc7XG5pbXBvcnQgSWNvbiBmcm9tICdAZGlnaXRyYW5zaXQtY29tcG9uZW50L2RpZ2l0cmFuc2l0LWNvbXBvbmVudC1pY29uJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcbmltcG9ydCBTZWxlY3QgZnJvbSAnLi9oZWxwZXJzL1NlbGVjdCc7XG5pbXBvcnQgdHJhbnNsYXRpb25zIGZyb20gJy4vaGVscGVycy90cmFuc2xhdGlvbnMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL2hlbHBlcnMvc3R5bGVzLnNjc3MnO1xuXG5pMThuZXh0LmluaXQoe1xuICBsbmc6ICdmaScsXG4gIGZhbGxiYWNrTG5nOiAnZmknLFxuICBkZWZhdWx0TlM6ICd0cmFuc2xhdGlvbicsXG4gIGludGVycG9sYXRpb246IHtcbiAgICBlc2NhcGVWYWx1ZTogZmFsc2UsIC8vIG5vdCBuZWVkZWQgZm9yIHJlYWN0IGFzIGl0IGVzY2FwZXMgYnkgZGVmYXVsdFxuICB9LFxufSk7XG5cbmV4cG9ydCBjb25zdCBnZXRFbXB0eVZpYVBvaW50UGxhY2VIb2xkZXIgPSAoKSA9PiAoe30pO1xuXG5jb25zdCBpc1ZpYVBvaW50RW1wdHkgPSB2aWFQb2ludCA9PiB7XG4gIGlmICh2aWFQb2ludCA9PT0gdW5kZWZpbmVkIHx8IGlzRW1wdHkodmlhUG9pbnQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHZpYVBvaW50KTtcbiAgcmV0dXJuIChcbiAgICBrZXlzLmxlbmd0aCA9PT0gMSB8fCAoa2V5cy5sZW5ndGggPT09IDIgJiYga2V5cy5pbmNsdWRlcygnbG9jYXRpb25TbGFjaycpKVxuICApO1xufTtcblxuY29uc3QgSXRpbmVyYXJ5U2VhcmNoQ29udHJvbCA9ICh7XG4gIGNoaWxkcmVuLFxuICBjbGFzc05hbWUsXG4gIGVuYWJsZWQsXG4gIG9uQ2xpY2ssXG4gIG9uS2V5UHJlc3MsXG4gIHdpZGUsXG4gIC4uLnJlc3Rcbn0pID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT17c3R5bGVzWydpdGluZXJhcnktc2VhcmNoLWNvbnRyb2wnXX1cbiAgICBzdHlsZT17eyAnLS13aWR0aCc6IHdpZGUgPyAnNDdweCcgOiAnNDBweCcgfX1cbiAgPlxuICAgIHtvbkNsaWNrICYmIGVuYWJsZWQgJiYgKFxuICAgICAgPGRpdlxuICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgIG9uS2V5UHJlc3M9e29uS2V5UHJlc3N9XG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICB0YWJJbmRleD1cIjBcIlxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L2Rpdj5cbiAgICApfVxuICA8L2Rpdj5cbik7XG5cbkl0aW5lcmFyeVNlYXJjaENvbnRyb2wucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBlbmFibGVkOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbktleVByZXNzOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICB3aWRlOiBQcm9wVHlwZXMuYm9vbCxcbn07XG5cbi8qKlxuICogUGFuZWwgdGhhdCByZW5kZXJzIHR3byBEVEF1dG9zdWdnZXN0IHNlYXJjaCBmaWVsZHMsIGluY2x1ZGluZyB2aWFwb2ludCBoYW5kbGluZ1xuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBzZWFyY2hDb250ZXh0ID0ge1xuICogICBpc1BlbGlhc0xvY2F0aW9uQXdhcmU6IGZhbHNlIC8vIHRydWUgLyBmYWxzZSBkb2VzIExldCBQZWxpYXMgc3VnZ2VzdCBiYXNlZCBvbiBjdXJyZW50IHVzZXIgbG9jYXRpb25cbiAqICAgbWluaW1hbFJlZ2V4cDogdW5kZWZpbmVkIC8vIHVzZWQgZm9yIHRlc3RpbmcgbWluLiByZWdleHAuIEZvciBleGFtcGxlOiBuZXcgUmVnRXhwKCcuezIsfScpLFxuICogICBsaW5lUmVnZXhwOiB1bmRlZmluZWQgLy8gIGlkZW50aWZ5IHNlYXJjaGVzIGZvciByb3V0ZSBudW1iZXJzL2xhYmVsczogYnVzIHwgdHJhaW4gfCBtZXRyby4gRm9yIGV4YW1wbGU6IG5ldyBSZWdFeHAoXG4gKiAgICAvLyAgICcoXlswLTldK1thLXpdPyR8Xlt5dWxlYXBpbmtydGR6XSR8KF5tWzEyXT9iPyQpKScsXG4gKiAgICAvLyAgJ2knLFxuICogICAgLy8gICksXG4gKiAgIFVSTF9QRUxJQVM6ICcnIC8vIHVybCBmb3IgcGVsaWFzIHNlYXJjaGVzXG4gKiAgIGZlZWRJRHM6IFsnSFNMJywgJ0hTTExhdXR0YSddIC8vIEZlZWRJZCdzIGxpa2UgIFtIU0wsIEhTTExhdXR0YV1cbiAqICAgZ2VvY29kaW5nU291cmNlczogWydvYScsJ29zbScsJ25sc2ZpJ10gIC8vIHNvdXJjZXMgZm9yIGdlb2NvZGluZ1xuICogICBnZW9jb2RpbmdTZWFyY2hQYXJhbXM7IHt9ICAvLyBTZWFyY2hwYXJtYXMgZnJvIGdlb2NvZGluZ1xuICogICBnZXRGYXZvdXJpdGVMb2NhdGlvbnM6ICgpID0+ICh7fSksICAgIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhcnJheSBvZiBmYXZvdXJpdGUgbG9jYXRpb25zLlxuICogICBnZXRGYXZvdXJpdGVTdG9wczogKCkgPT4gKHt9KSwgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhcnJheSBvZiBmYXZvdXJpdGUgc3RvcHMuXG4gKiAgIGdldExhbmd1YWdlOiAoKSA9PiAoe30pLCAgICAgICAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIGN1cnJlbnQgbGFuZ3VhZ2UuXG4gKiAgIGdldEZhdm91cml0ZVJvdXRlczogKCkgPT4gKHt9KSwgICAgICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIGFycmF5IG9mIGZhdm91cml0ZSByb3V0ZXMuXG4gKiAgIGdldFBvc2l0aW9uczogKCkgPT4gKHt9KSwgICAgICAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIHVzZXIncyBnZW9sb2NhdGlvbi5cbiAqICAgZ2V0Um91dGVzUXVlcnk6ICgpID0+ICh7fSksICAgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgcXVlcnkgZm9yIGZldGNoaW5nIHJvdXRlcy5cbiAqICAgZ2V0U3RvcEFuZFN0YXRpb25zUXVlcnk6ICgpID0+ICh7fSksICAvLyBGdW5jdGlvbiB0aGF0IGZldGNoZXMgZmF2b3VyaXRlIHN0b3BzIGFuZCBzdGF0aW9ucyBmcm9tIGdyYXBocWwgQVBJLlxuICogICBnZXRGYXZvdXJpdGVSb3V0ZXNRdWVyeTogKCkgPT4gKHt9KSwgIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBxdWVyeSBmb3IgZmV0Y2hpbmcgZmF2b3VyaXRlIHJvdXRlcy5cbiAqICAgZ2V0RmF2b3VyaXRlVmVoaWNsZVJlbnRhbFN0YXRpb25zOiAoKSA9PiAoe30pLCAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIGZhdm91cml0ZSBiaWtlIHJlbnRhbCBzdGF0aW9uLlxuICogICBnZXRGYXZvdXJpdGVWZWhpY2xlUmVudGFsU3RhdGlvbnNRdWVyeTogKCkgPT4gKHt9KSwgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIHF1ZXJ5IGZvciBmZXRjaGluZyBmYXZvdXJpdGUgYmlrZSByZW50YWwgc3RhdGlvbnMuXG4gKiAgIHN0YXJ0TG9jYXRpb25XYXRjaDogKCkgPT4gKHt9KSwgICAgICAgLy8gRnVuY3Rpb24gdGhhdCBsb2NhdGVzIHVzZXJzIGdlb2xvY2F0aW9uLlxuICogICBzYXZlU2VhcmNoOiAoKSA9PiAoe30pLCAgICAgICAgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgc2F2ZXMgc2VhcmNoIHRvIG9sZCBzZWFyY2hlcyBzdG9yZS5cbiAqICAgY2xlYXJPbGRTZWFyY2hlczogKCkgPT4gKHt9KSwgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IGNsZWFycyBvbGQgc2VhcmNoZXMgc3RvcmUuXG4gKiAgIGdldEZ1dHVyZVJvdXRlczogKCkgPT4gKHt9KSwgICAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm4gZnV0dXJlIHJvdXRlc1xuICogICBzYXZlRnV0dXJlUm91dGU6ICgpID0+ICh7fSksICAgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgc2F2ZXMgYSBmdXR1cmUgcm91dGVcbiAqICAgY2xlYXJGdXR1cmVSb3V0ZXM6ICgpID0+ICh7fSksICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IGNsZWFycyBmdXR1cmUgcm91dGVzXG4gKiB9O1xuICpcbiAqIGNvbnN0IG9yaWdpbiA9IHtcbiAqICBsYXQ6IDYwLjE2OTE5NixcbiAqICBsb246IDI0Ljk1NzY3NCxcbiAqICBhZGRyZXNzOiAnQWxla3NhbnRlcmlua2F0dSwgSGVsc2lua2knLFxuICogIHNldDogdHJ1ZSxcbiAqICByZWFkeTogdHJ1ZSxcbiAqIH1cbiAqXG4gKiBjb25zdCBkZXN0aW5hdGlvbiA9IHtcbiAqICAgbGF0OiA2MC4xOTkwOTMsXG4gKiAgIGxvbjogMjQuOTQwNTM2LFxuICogICBhZGRyZXNzOiAnT3Bhc3RpbnNpbHRhIDYsIEhlbHNpbmtpJyxcbiAqICAgc2V0OiB0cnVlLFxuICogICByZWFkeTogdHJ1ZSxcbiAqIH1cbiAqIG9uU2VsZWN0KGl0ZW0sIGlkKSB7XG4gKiAgcmV0dXJuIG51bGw7ICAvLyBEZWZpbmUgd2hhdCB0byBkbyB3aGVuIGEgc3VnZ2VzdGlvbiBpcyBiZWluZyBzZWxlY3RlZC4gTm9uZSBieSBkZWZhdWx0LlxuICogIH1cbiAqIG9uQ2xlYXIoaWQpIHtcbiAqICByZXR1cm4gbnVsbDsgIC8vIERlZmluZSB3aGF0IHRvIGRvIHdoZW4gYSBzdWdnZXN0aW9uIGlzIGJlaW5nIHNlbGVjdGVkLiBOb25lIGJ5IGRlZmF1bHQuXG4gKiB9XG4gKiBjb25zdCBnZXRBdXRvU3VnZ2VzdEljb25zOiB7XG4gKiAgIC8vIENhbGxlZCBmb3IgZXZlcnkgY2l0eSBiaWtlIHN0YXRpb24gcmVuZGVyZWQgYXMgYSBzZWFyY2ggc3VnZ2VzdGlvbi4gU2hvdWxkIHJldHVybiB0aGUgaWNvbiBhbmRcbiAqICAgLy8gY29sb3IgdXNlZCBmb3IgdGhhdCBzdGF0aW9uLiBUd28gaWNvbnMgYXJlIGF2YWlsYWJsZSwgJ2NpdHliaWtlLXN0b3AtZGlnaXRyYW5zaXQnIGFuZGl0eWJpa2Utc3RvcC1kaWdpdHJhbnNpdC1zZWNvbmRhcnknLlxuICogICBjaXR5YmlrZXM6IHN0YXRpb24gPT4ge1xuICogICAgICByZXR1cm4gWydjaXR5YmlrZS1zdG9wLWRpZ2l0cmFuc2l0JywgJyNmMmI2MmQnXTtcbiAqICAgfVxuICogfVxuICogY29uc3QgdGFyZ2V0cyA9IFsnTG9jYXRpb25zJywgJ1N0b3BzJywgJ1JvdXRlcyddOyAvLyBEZWZpbmVzIHdoYXQgeW91IGFyZSBzZWFyY2hpbmcuIGFsbCBhdmFpbGFibGUgb3B0aW9ucyBhcmUgTG9jYXRpb25zLCBTdG9wcywgUm91dGVzLCBWZWhpY2xlUmVudGFsU3RhdGlvbnMsIEZ1dHVyZVJvdXRlcywgTWFwUG9zaXRpb24gYW5kIEN1cnJlbnRQb3NpdGlvbi4gTGVhdmUgZW1wdHkgdG8gc2VhcmNoIGFsbCB0YXJnZXRzLlxuICogY29uc3Qgc291cmNlcyA9IFsnRmF2b3VyaXRlJywgJ0hpc3RvcnknLCAnRGF0YXNvdXJjZSddIC8vIERlZmluZXMgd2hlcmUgeW91IGFyZSBzZWFyY2hpbmcuIGFsbCBhdmFpbGFibGUgYXJlOiBGYXZvdXJpdGUsIEhpc3RvcnkgKHByZXZpb3VzbHkgc2VhcmNoZWQgc2VhcmNoZXMpLCBhbmQgRGF0YXNvdXJjZS4gTGVhdmUgZW1wdHkgdG8gdXNlIGFsbCBzb3VyY2VzLlxuICogPERUQXV0b3N1Z2dlc3RQYW5lbFxuICogICAgYXBwRWxlbWVudD17YXBwRWxlbWVudH0gLy8gUmVxdWlyZWQuIFJvb3QgZWxlbWVudCdzIGlkLiBOZWVkZWQgZm9yIHJlYWN0LW1vZGFsIGNvbXBvbmVudC5cbiAqICAgIG9yaWdpbj17b3JpZ2lufSAvLyBTZWxlY3RlZCBvcmlnaW4gcG9pbnRcbiAqICAgIGRlc3RpbmF0aW9uPXtkZXN0aW5hdGlvbn0gLy8gU2VsZWN0ZWQgZGVzdGluYXRpb24gcG9pbnRcbiAqICAgIG9yaWdpblBsYWNlSG9sZGVyPXsnR2l2ZSBvcmlnaW4nfSAvLyBPcHRpb25hbCBHaXZlIHN0cmluZyBzaG93biBpbml0aWFsbHkgaW5zaWRlIG9yaWdpbiBzZWFyY2ggZmllbGRcbiAqICAgIGRlc3RpbmF0aW9uUGxhY2VIb2xkZXI9eydHaXZlIGRlc3RpbmF0aW9uJ30gLy8gT3B0aW9uYWwgR2l2ZSBzdHJpbmcgc2hvd24gaW5pdGFsbHkgaW5zaWRlIGRlc3RpbmF0aW9uIHNlYXJjaCBmaWVsZFxuICogICAgaW5pdGlhbFZpYVBvaW50cz17W119IC8vIE9wdGlvbmFsLiAgSWYgc2hvd1ZpYXBvaW50Q29udHJvbCBpcyBzZXQgdG8gdHJ1ZSwgcGFzcyBpbml0aWFsIHZpYSBwb2ludHMgdG8gdGhlIHBhbmVsLiBDdXJyZW50bHkgbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpcyBnaXZlbi5cbiAqICAgIHVwZGF0ZVZpYVBvaW50cz17KCkgPT4gcmV0dXJuIFtdfSAvLyBPcHRpb25hbC4gSWYgc2hvd1ZpYXBvaW50Q29udHJvbCBpcyBzZXQgdG8gdHJ1ZSwgZGVmaW5lIGhvdyB0byB1cGRhdGUgeW91ciB2aWEgcG9pbnQgbGlzdCB3aXRoIHRoaXMgZnVuY3Rpb24uIEN1cnJlbmx0eSBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGdpdmVuLlxuICogICAgc3dhcE9yZGVyPXsoKSA9PiByZXR1cm4gbnVsbH0gLy8gT3B0aW9uYWwuIElmIHNob3dTd2FwQ29udHJvbCBpcyBzZXQgdG8gdHJ1ZSwgZGVmaW5lIGhvdyB0byBzd2FwIG9yZGVyIG9mIHlvdXIgcG9pbnRzIChvcmlnaW4sIGRlc3RpbmF0aW9uLCB2aWFwb2ludHMpLiBDdXJyZW50bHkgbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpcyBnaXZlbi5cbiAqICAgIHNlYXJjaENvbnRleHQ9e3NlYXJjaENvbnRleHR9XG4gKiAgICBnZXRBdXRvU3VnZ2VzdEljb25zPXtnZXRBdXRvU3VnZ2VzdEljb25zfVxuICogICAgb25TZWxlY3Q9e3RoaXMub25TZWxlY3R9XG4gKiAgICBvbkNsZWFyPXt0aGlzLm9uQ2xlYXJ9XG4gKiAgICBsYW5nPVwiZmlcIiAvLyBEZWZpbmUgbGFuZ3VhZ2UgZmkgc3Ygb3IgZW4uXG4gKiAgICBhZGRBbmFseXRpY3NFdmVudD17bnVsbH0gLy8gT3B0aW9uYWwuIHlvdSBjYW4gcmVjb3JkIGFuIGFuYWx5dGljcyBldmVudCBpZiB5b3Ugd2lzaC4gaWYgcGFzc2VkLCBjb21wb25lbnQgd2lsbCBwYXNzIGFuIGNhdGVnb3J5LCBhY3Rpb24sIG5hbWUgcGFyYW1ldGVycyB0byBhZGRBbmFseXRpY3NFdmVudFxuICogICAgZGlzYWJsZUF1dG9Gb2N1cz17ZmFsc2V9IC8vIE9wdGlvbmFsLiB1c2UgdGhpcyB0byBkaXNhYmxlIGF1dG9mb2N1cyBjb21wbGV0ZWx5IGZyb20gRFRBdXRvc3VnZ2VzdFBhbmVsXG4gKiAgICBzb3VyY2VzPXtzb3VyY2VzfVxuICogICAgdGFyZ2V0cz17dGFyZ2V0c31cbiAqICAgIGlzTW9iaWxlICAvLyBPcHRpb25hbC4gRGVmYXVsdHMgdG8gZmFsc2UuIFdoZXRoZXIgdG8gdXNlIG1vYmlsZSBzZWFyY2guXG4gKiAgICBvcmlnaW5Nb2JpbGVMYWJlbD1cIk9yaWdpbiBsYWJlbFwiIC8vIE9wdGlvbmFsLiBDdXN0b20gbGFiZWwgdGV4dCBmb3Igb3JpZ2luIGZpZWxkIG9uIG1vYmlsZS5cbiAqICAgIGRlc3RpbmF0aW9uTW9iaWxlTGFiZWw9XCJEZXN0aW5hdGlvbiBsYWJlbFwiIC8vIE9wdGlvbmFsLiBDdXN0b20gbGFiZWwgdGV4dCBmb3IgZGVzdGluYXRpb24gZmllbGQgb24gbW9iaWxlLlxuICogICAgaGFuZGxlRm9jdXNDaGFuZ2U9eygpID0+IHt9fSAvLyBPcHRpb25hbC4gSWYgZGVmaW5lZCBvdmVycmlkZXMgZGVmYXVsdCBvbkZvY3VzQ2hhbmdlIGJlaGF2aW91clxuICogICAgc2hvd1N3YXBDb250cm9sPXtmYWxzZX0gLy8gT3B0aW9uYWwuXG4gKiAgICBzaG93VmlhcG9pbnRDb250cm9sPXtmYWxzZX0gLy8gT3B0aW9uYWwuXG4gKi9cbmNsYXNzIERUQXV0b3N1Z2dlc3RQYW5lbCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgYXBwRWxlbWVudDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIG9yaWdpbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGRlc3RpbmF0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgb3JpZ2luUGxhY2VIb2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGVzdGluYXRpb25QbGFjZUhvbGRlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB2aWFQb2ludHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vYmplY3QpLFxuICAgIHVwZGF0ZVZpYVBvaW50czogUHJvcFR5cGVzLmZ1bmMsXG4gICAgaGFuZGxlVmlhUG9pbnRMb2NhdGlvblNlbGVjdGVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBzd2FwT3JkZXI6IFByb3BUeXBlcy5mdW5jLFxuICAgIHNlYXJjaFBhbmVsVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBzZWFyY2hDb250ZXh0OiBQcm9wVHlwZXMuYW55LmlzUmVxdWlyZWQsXG4gICAgb25TZWxlY3Q6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uQ2xlYXI6IFByb3BUeXBlcy5mdW5jLFxuICAgIGFkZEFuYWx5dGljc0V2ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBsYW5nOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRpc2FibGVBdXRvRm9jdXM6IFByb3BUeXBlcy5ib29sLFxuICAgIHNvdXJjZXM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpLFxuICAgIHRhcmdldHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpLFxuICAgIGZpbHRlclJlc3VsdHM6IFByb3BUeXBlcy5mdW5jLFxuICAgIGlzTW9iaWxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBjb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBob3ZlckNvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG9yaWdpbk1vYmlsZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRlc3RpbmF0aW9uTW9iaWxlTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgcmVmUG9pbnQ6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgbW9kZVNldDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBtb2RlSWNvbkNvbG9yczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBnZXRBdXRvU3VnZ2VzdEljb25zOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGZvbnRXZWlnaHRzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgbWVkaXVtOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIH0pLFxuICAgIHNob3dTY3JvbGw6IFByb3BUeXBlcy5ib29sLFxuICAgIG9uRm9jdXNDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAgIGlzRW1iZWRkZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIHNob3dTd2FwQ29udHJvbDogUHJvcFR5cGVzLmJvb2wsXG4gICAgc2hvd1ZpYXBvaW50Q29udHJvbDogUHJvcFR5cGVzLmJvb2wsXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICB2aWFQb2ludHM6IFtdLFxuICAgIG9yaWdpblBsYWNlSG9sZGVyOiAnZ2l2ZS1vcmlnaW4nLFxuICAgIGRlc3RpbmF0aW9uUGxhY2VIb2xkZXI6ICdnaXZlLWRlc3RpbmF0aW9uJyxcbiAgICBzd2FwT3JkZXI6IHVuZGVmaW5lZCxcbiAgICB1cGRhdGVWaWFQb2ludHM6ICgpID0+IHt9LFxuICAgIGxhbmc6ICdmaScsXG4gICAgc291cmNlczogW10sXG4gICAgdGFyZ2V0czogW10sXG4gICAgZmlsdGVyUmVzdWx0czogdW5kZWZpbmVkLFxuICAgIGRpc2FibGVBdXRvRm9jdXM6IGZhbHNlLFxuICAgIGlzTW9iaWxlOiBmYWxzZSxcbiAgICBoYW5kbGVWaWFQb2ludExvY2F0aW9uU2VsZWN0ZWQ6IHVuZGVmaW5lZCxcbiAgICBjb2xvcjogJyMwMDdhYzknLFxuICAgIGhvdmVyQ29sb3I6ICcjMDA2MmExJyxcbiAgICBvcmlnaW5Nb2JpbGVMYWJlbDogbnVsbCxcbiAgICBkZXN0aW5hdGlvbk1vYmlsZUxhYmVsOiBudWxsLFxuICAgIG1vZGVTZXQ6IHVuZGVmaW5lZCxcbiAgICBtb2RlSWNvbkNvbG9yczogdW5kZWZpbmVkLFxuICAgIGZvbnRXZWlnaHRzOiB7XG4gICAgICBtZWRpdW06IDUwMCxcbiAgICB9LFxuICAgIHNob3dTY3JvbGw6IGZhbHNlLFxuICAgIG9uRm9jdXNDaGFuZ2U6IHVuZGVmaW5lZCxcbiAgICBpc0VtYmVkZGVkOiBmYWxzZSxcbiAgICBzaG93U3dhcENvbnRyb2w6IGZhbHNlLFxuICAgIHNob3dWaWFwb2ludENvbnRyb2w6IGZhbHNlLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuZHJhZ2dhYmxlVmlhUG9pbnRzID0gW107XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGFjdGl2ZVNsYWNrSW5wdXRzOiBbXSxcbiAgICAgIHJlZnM6IFtdLFxuICAgIH07XG4gICAgT2JqZWN0LmtleXModHJhbnNsYXRpb25zKS5mb3JFYWNoKGxhbmcgPT4ge1xuICAgICAgaTE4bmV4dC5hZGRSZXNvdXJjZUJ1bmRsZShsYW5nLCAndHJhbnNsYXRpb24nLCB0cmFuc2xhdGlvbnNbbGFuZ10pO1xuICAgIH0pO1xuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQgPSAoKSA9PiB7XG4gICAgaTE4bmV4dC5jaGFuZ2VMYW5ndWFnZSh0aGlzLnByb3BzLmxhbmcpO1xuICB9O1xuXG4gIGNvbXBvbmVudERpZFVwZGF0ZSA9ICgpID0+IHtcbiAgICBpZiAoaTE4bmV4dC5sYW5ndWFnZSAhPT0gdGhpcy5wcm9wcy5sYW5nKSB7XG4gICAgICBpMThuZXh0LmNoYW5nZUxhbmd1YWdlKHRoaXMucHJvcHMubGFuZyk7XG4gICAgfVxuICB9O1xuXG4gIGdldFNsYWNrVGltZU9wdGlvbnMgPSAoKSA9PiB7XG4gICAgY29uc3QgdGltZU9wdGlvbnMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSA5OyBpKyspIHtcbiAgICAgIGNvbnN0IHZhbHVlSW5NaW51dGVzID0gaSAqIDEwO1xuICAgICAgdGltZU9wdGlvbnMucHVzaCh7XG4gICAgICAgIGRpc3BsYXlOYW1lOiBgJHt2YWx1ZUluTWludXRlc30gJHtpMThuZXh0LnQoJ21pbnV0ZS1zaG9ydCcpfWAsXG4gICAgICAgIHZhbHVlOiB2YWx1ZUluTWludXRlcyAqIDYwLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aW1lT3B0aW9ucztcbiAgfTtcblxuICBzZXREcmFnZ2FibGVWaWFQb2ludFJlZiA9IChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgIHRoaXMuZHJhZ2dhYmxlVmlhUG9pbnRzW2luZGV4XSA9IGVsZW1lbnQ7XG4gIH07XG5cbiAgc3RvcmVSZWZlcmVuY2UgPSByZWYgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUocHJldlN0YXRlID0+ICh7IHJlZnM6IFsuLi5wcmV2U3RhdGUucmVmcywgcmVmXSB9KSk7XG4gIH07XG5cbiAgaGFuZGxlRm9jdXNDaGFuZ2UgPSAoKSA9PiB7XG4gICAgY29uc3QgeyBkZXN0aW5hdGlvbiB9ID0gdGhpcy5wcm9wcztcbiAgICBpZiAoIWRlc3RpbmF0aW9uIHx8ICFkZXN0aW5hdGlvbi5zZXQpIHtcbiAgICAgIHRoaXMuc3RhdGUucmVmc1sxXS5mb2N1cygpO1xuICAgIH1cbiAgfTtcblxuICBpc0tleWJvYXJkU2VsZWN0aW9uRXZlbnQgPSBldmVudCA9PiB7XG4gICAgY29uc3Qgc3BhY2UgPSBbMTMsICcgJywgJ1NwYWNlYmFyJ107XG4gICAgY29uc3QgZW50ZXIgPSBbMzIsICdFbnRlciddO1xuICAgIGNvbnN0IGtleSA9IChldmVudCAmJiAoZXZlbnQua2V5IHx8IGV2ZW50LndoaWNoIHx8IGV2ZW50LmtleUNvZGUpKSB8fCAnJztcbiAgICBpZiAoIWtleSB8fCAhc3BhY2UuY29uY2F0KGVudGVyKS5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgdmFsdWUgPSBsb2NhdGlvbiA9PlxuICAgIChsb2NhdGlvbiAmJiBsb2NhdGlvbi5hZGRyZXNzKSB8fFxuICAgIChsb2NhdGlvbiAmJiBsb2NhdGlvbi5ncHMgJiYgbG9jYXRpb24ucmVhZHkgJiYgJ055a3lpbmVuIHNpamFpbnRpJykgfHxcbiAgICAnJztcblxuICBjbGFzcyA9IGxvY2F0aW9uID0+XG4gICAgbG9jYXRpb24gJiYgbG9jYXRpb24uZ3BzID09PSB0cnVlID8gJ3Bvc2l0aW9uJyA6ICdsb2NhdGlvbic7XG5cbiAgdXBkYXRlVmlhUG9pbnRzID0gdmlhUG9pbnRzID0+IHtcbiAgICBpZiAodmlhUG9pbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5wcm9wcy51cGRhdGVWaWFQb2ludHMoW10pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnByb3BzLnVwZGF0ZVZpYVBvaW50cyh2aWFQb2ludHMuZmlsdGVyKHZwID0+ICFpc1ZpYVBvaW50RW1wdHkodnApKSk7XG4gIH07XG5cbiAgdXBkYXRlVmlhUG9pbnRTbGFjayA9IChcbiAgICBhY3RpdmVWaWFQb2ludFNsYWNrcyxcbiAgICB1cGRhdGVkVmlhUG9pbnRJbmRleCxcbiAgICB2aWFQb2ludFJlbW92ZWQgPSBmYWxzZSxcbiAgKSA9PiB7XG4gICAgY29uc3QgZm91bmRBdEluZGV4ID0gYWN0aXZlVmlhUG9pbnRTbGFja3MuaW5kZXhPZih1cGRhdGVkVmlhUG9pbnRJbmRleCk7XG4gICAgaWYgKGZvdW5kQXRJbmRleCA+IC0xKSB7XG4gICAgICBhY3RpdmVWaWFQb2ludFNsYWNrcy5zcGxpY2UoZm91bmRBdEluZGV4LCAxKTtcbiAgICB9XG4gICAgcmV0dXJuIHZpYVBvaW50UmVtb3ZlZFxuICAgICAgPyBhY3RpdmVWaWFQb2ludFNsYWNrcy5tYXAodmFsdWUgPT5cbiAgICAgICAgICB2YWx1ZSA+IHVwZGF0ZWRWaWFQb2ludEluZGV4ID8gdmFsdWUgLSAxIDogdmFsdWUsXG4gICAgICAgIClcbiAgICAgIDogYWN0aXZlVmlhUG9pbnRTbGFja3M7XG4gIH07XG5cbiAgaGFuZGxlVG9nZ2xlVmlhUG9pbnRTbGFja0NsaWNrID0gdmlhUG9pbnRJbmRleCA9PiB7XG4gICAgY29uc3QgeyBhY3RpdmVTbGFja0lucHV0cyB9ID0gdGhpcy5zdGF0ZTtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGFjdGl2ZVNsYWNrSW5wdXRzOiBhY3RpdmVTbGFja0lucHV0cy5pbmNsdWRlcyh2aWFQb2ludEluZGV4KVxuICAgICAgICA/IHRoaXMudXBkYXRlVmlhUG9pbnRTbGFjayhhY3RpdmVTbGFja0lucHV0cywgdmlhUG9pbnRJbmRleClcbiAgICAgICAgOiBhY3RpdmVTbGFja0lucHV0cy5jb25jYXQoW3ZpYVBvaW50SW5kZXhdKSxcbiAgICB9KTtcbiAgfTtcblxuICBoYW5kbGVWaWFQb2ludFNsYWNrVGltZVNlbGVjdGVkID0gKHNsYWNrVGltZUluU2Vjb25kcywgaSkgPT4ge1xuICAgIGlmICh0aGlzLnByb3BzLmFkZEFuYWx5dGljc0V2ZW50KSB7XG4gICAgICB0aGlzLnByb3BzLmFkZEFuYWx5dGljc0V2ZW50KHtcbiAgICAgICAgYWN0aW9uOiAnRWRpdFZpYVBvaW50U3RvcER1cmF0aW9uJyxcbiAgICAgICAgY2F0ZWdvcnk6ICdJdGluZXJhcnlTZXR0aW5ncycsXG4gICAgICAgIG5hbWU6IHNsYWNrVGltZUluU2Vjb25kcyAvIDYwLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHsgdmlhUG9pbnRzIH0gPSB0aGlzLnByb3BzO1xuICAgIHZpYVBvaW50c1tpXS5sb2NhdGlvblNsYWNrID0gTnVtYmVyLnBhcnNlSW50KHNsYWNrVGltZUluU2Vjb25kcywgMTApO1xuICAgIHRoaXMudXBkYXRlVmlhUG9pbnRzKHZpYVBvaW50cyk7XG4gIH07XG5cbiAgaGFuZGxlVmlhUG9pbnRMb2NhdGlvblNlbGVjdGVkID0gKHZpYVBvaW50TG9jYXRpb24sIGkpID0+IHtcbiAgICB0aGlzLnByb3BzLmhhbmRsZVZpYVBvaW50TG9jYXRpb25TZWxlY3RlZCh2aWFQb2ludExvY2F0aW9uLCBpKTtcbiAgfTtcblxuICBoYW5kbGVSZW1vdmVWaWFQb2ludENsaWNrID0gdmlhUG9pbnRJbmRleCA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQpIHtcbiAgICAgIHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQoe1xuICAgICAgICBhY3Rpb246ICdSZW1vdmVKb3VybmV5VmlhUG9pbnQnLFxuICAgICAgICBjYXRlZ29yeTogJ0l0aW5lcmFyeVNldHRpbmdzJyxcbiAgICAgICAgbmFtZTogbnVsbCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCB7IGFjdGl2ZVNsYWNrSW5wdXRzIH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHsgdmlhUG9pbnRzIH0gPSB0aGlzLnByb3BzO1xuICAgIHZpYVBvaW50cy5zcGxpY2UodmlhUG9pbnRJbmRleCwgMSk7XG4gICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgIHtcbiAgICAgICAgYWN0aXZlU2xhY2tJbnB1dHM6IHRoaXMudXBkYXRlVmlhUG9pbnRTbGFjayhcbiAgICAgICAgICBhY3RpdmVTbGFja0lucHV0cyxcbiAgICAgICAgICB2aWFQb2ludEluZGV4LFxuICAgICAgICAgIHRydWUsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgKCkgPT4gdGhpcy51cGRhdGVWaWFQb2ludHModmlhUG9pbnRzKSxcbiAgICApO1xuICB9O1xuXG4gIGhhbmRsZUFkZFZpYVBvaW50Q2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQpIHtcbiAgICAgIHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQoe1xuICAgICAgICBhY3Rpb246ICdBZGRKb3VybmV5VmlhUG9pbnQnLFxuICAgICAgICBjYXRlZ29yeTogJ0l0aW5lcmFyeVNldHRpbmdzJyxcbiAgICAgICAgbmFtZTogJ1F1aWNrU2V0dGluZ3NCdXR0b24nLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHsgdmlhUG9pbnRzIH0gPSB0aGlzLnByb3BzO1xuICAgIHZpYVBvaW50cy5wdXNoKGdldEVtcHR5VmlhUG9pbnRQbGFjZUhvbGRlcigpKTtcbiAgICAvLyBXZSBuZWVkIHRvIHVwZGF0ZSB0aGUgc3RhdGUgc28gdGhhdCBwbGFjZUhvbGRlciB3aWxsIHNob3cgdXAgaW4gcGFuZWwuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFjY2Vzcy1zdGF0ZS1pbi1zZXRzdGF0ZVxuICAgIHRoaXMuc2V0U3RhdGUodGhpcy5zdGF0ZSk7XG4gIH07XG5cbiAgaGFuZGxlU3dhcE9yZGVyQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQpIHtcbiAgICAgIHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQoe1xuICAgICAgICBhY3Rpb246ICdTd2l0Y2hKb3VybmV5U3RhcnRBbmRFbmRQb2ludE9yZGVyJyxcbiAgICAgICAgY2F0ZWdvcnk6ICdJdGluZXJhcnlTZXR0aW5ncycsXG4gICAgICAgIG5hbWU6IG51bGwsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgeyB2aWFQb2ludHMgfSA9IHRoaXMucHJvcHM7XG4gICAgdmlhUG9pbnRzLnJldmVyc2UoKTtcbiAgICB0aGlzLnByb3BzLnN3YXBPcmRlcigpO1xuICB9O1xuXG4gIGdldFNsYWNrRGlzcGxheSA9IHNsYWNrSW5TZWNvbmRzID0+IHtcbiAgICByZXR1cm4gYCR7c2xhY2tJblNlY29uZHMgLyA2MH0gJHtpMThuZXh0LnQoJ21pbnV0ZS1zaG9ydCcpfWA7XG4gIH07XG5cbiAgcmVuZGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG9yaWdpbixcbiAgICAgIHNlYXJjaFBhbmVsVGV4dCxcbiAgICAgIHNlYXJjaENvbnRleHQsXG4gICAgICBkaXNhYmxlQXV0b0ZvY3VzLFxuICAgICAgdmlhUG9pbnRzLFxuICAgICAgb3JpZ2luTW9iaWxlTGFiZWwsXG4gICAgICBkZXN0aW5hdGlvbk1vYmlsZUxhYmVsLFxuICAgICAgZm9udFdlaWdodHMsXG4gICAgICBvbkZvY3VzQ2hhbmdlLFxuICAgICAgc2hvd1N3YXBDb250cm9sLFxuICAgICAgc2hvd1ZpYXBvaW50Q29udHJvbCxcbiAgICB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7IGFjdGl2ZVNsYWNrSW5wdXRzIH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHNsYWNrVGltZSA9IHRoaXMuZ2V0U2xhY2tUaW1lT3B0aW9ucygpO1xuICAgIGNvbnN0IGRlZmF1bHRTbGFja1RpbWVWYWx1ZSA9IDA7XG4gICAgY29uc3QgZ2V0VmlhUG9pbnRTbGFja1RpbWVPckRlZmF1bHQgPSAoXG4gICAgICB2aWFQb2ludCxcbiAgICAgIGRlZmF1bHRWYWx1ZSA9IGRlZmF1bHRTbGFja1RpbWVWYWx1ZSxcbiAgICApID0+ICh2aWFQb2ludCAmJiB2aWFQb2ludC5sb2NhdGlvblNsYWNrKSB8fCBkZWZhdWx0VmFsdWU7XG4gICAgY29uc3QgaXNWaWFQb2ludFNsYWNrVGltZUlucHV0QWN0aXZlID0gaW5kZXggPT5cbiAgICAgIGFjdGl2ZVNsYWNrSW5wdXRzLmluY2x1ZGVzKGluZGV4KTtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2N4KFtcbiAgICAgICAgICBzdHlsZXNbJ2F1dG9zdWdnZXN0LXBhbmVsJ10sXG4gICAgICAgICAge1xuICAgICAgICAgICAgc21hbGw6IHRoaXMucHJvcHMuaXNNb2JpbGUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSl9XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgJy0tY29sb3InOiBgJHt0aGlzLnByb3BzLmNvbG9yfWAsXG4gICAgICAgICAgJy0tZm9udC13ZWlnaHQtbWVkaXVtJzogZm9udFdlaWdodHMubWVkaXVtLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7JyAnfVxuICAgICAgICB7c2VhcmNoUGFuZWxUZXh0ID8gKFxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8aDEgY2xhc3NOYW1lPXtzdHlsZXNbJ2F1dG9zdWdnZXN0LXNlYXJjaHBhbmVsLXRleHQnXX0+XG4gICAgICAgICAgICAgIHsnICd9XG4gICAgICAgICAgICAgIHtzZWFyY2hQYW5lbFRleHR9XG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snb3JpZ2luLWlucHV0LWNvbnRhaW5lciddfT5cbiAgICAgICAgICA8RFRBdXRvU3VnZ2VzdFxuICAgICAgICAgICAgYXBwRWxlbWVudD17dGhpcy5wcm9wcy5hcHBFbGVtZW50fVxuICAgICAgICAgICAgaWNvbj1cIm1hcE1hcmtlclwiXG4gICAgICAgICAgICBpZD1cIm9yaWdpblwiXG4gICAgICAgICAgICBhdXRvRm9jdXM9e1xuICAgICAgICAgICAgICBkaXNhYmxlQXV0b0ZvY3VzID09PSB0cnVlXG4gICAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICAgIDogIXRoaXMucHJvcHMuaXNNb2JpbGUgJiYgIW9yaWdpbi5sYXRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0b3JlUmVmPXt0aGlzLnN0b3JlUmVmZXJlbmNlfVxuICAgICAgICAgICAgcmVmUG9pbnQ9e3RoaXMucHJvcHMucmVmUG9pbnR9XG4gICAgICAgICAgICBjbGFzc05hbWU9e3RoaXMuY2xhc3Mob3JpZ2luKX1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0aGlzLnByb3BzLm9yaWdpblBsYWNlSG9sZGVyfVxuICAgICAgICAgICAgdmFsdWU9e3RoaXMudmFsdWUob3JpZ2luKX1cbiAgICAgICAgICAgIHNlYXJjaENvbnRleHQ9e3NlYXJjaENvbnRleHR9XG4gICAgICAgICAgICBnZXRBdXRvU3VnZ2VzdEljb25zPXt0aGlzLnByb3BzLmdldEF1dG9TdWdnZXN0SWNvbnN9XG4gICAgICAgICAgICBvblNlbGVjdD17dGhpcy5wcm9wcy5vblNlbGVjdH1cbiAgICAgICAgICAgIG9uQ2xlYXI9e3RoaXMucHJvcHMub25DbGVhcn1cbiAgICAgICAgICAgIGZvY3VzQ2hhbmdlPXtvbkZvY3VzQ2hhbmdlIHx8IHRoaXMuaGFuZGxlRm9jdXNDaGFuZ2V9XG4gICAgICAgICAgICBsYW5nPXt0aGlzLnByb3BzLmxhbmd9XG4gICAgICAgICAgICBzb3VyY2VzPXt0aGlzLnByb3BzLnNvdXJjZXN9XG4gICAgICAgICAgICB0YXJnZXRzPXt0aGlzLnByb3BzLnRhcmdldHN9XG4gICAgICAgICAgICBmaWx0ZXJSZXN1bHRzPXt0aGlzLnByb3BzLmZpbHRlclJlc3VsdHN9XG4gICAgICAgICAgICBpc01vYmlsZT17dGhpcy5wcm9wcy5pc01vYmlsZX1cbiAgICAgICAgICAgIGNvbG9yPXt0aGlzLnByb3BzLmNvbG9yfVxuICAgICAgICAgICAgaG92ZXJDb2xvcj17dGhpcy5wcm9wcy5ob3ZlckNvbG9yfVxuICAgICAgICAgICAgbW9iaWxlTGFiZWw9e29yaWdpbk1vYmlsZUxhYmVsfVxuICAgICAgICAgICAgZm9udFdlaWdodHM9e3RoaXMucHJvcHMuZm9udFdlaWdodHN9XG4gICAgICAgICAgICBtb2RlU2V0PXt0aGlzLnByb3BzLm1vZGVTZXR9XG4gICAgICAgICAgICBtb2RlSWNvbkNvbG9ycz17dGhpcy5wcm9wcy5tb2RlSWNvbkNvbG9yc31cbiAgICAgICAgICAgIHNob3dTY3JvbGw9e3RoaXMucHJvcHMuc2hvd1Njcm9sbH1cbiAgICAgICAgICAgIGlzRW1iZWRkZWQ9e3RoaXMucHJvcHMuaXNFbWJlZGRlZH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHsoc2hvd1N3YXBDb250cm9sIHx8IHNob3dWaWFwb2ludENvbnRyb2wpICYmIChcbiAgICAgICAgICAgIDxJdGluZXJhcnlTZWFyY2hDb250cm9sXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9wcG9zaXRlfVxuICAgICAgICAgICAgICBlbmFibGVkPXtzaG93U3dhcENvbnRyb2x9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRoaXMuaGFuZGxlU3dhcE9yZGVyQ2xpY2soKX1cbiAgICAgICAgICAgICAgb25LZXlQcmVzcz17ZSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuaXNLZXlib2FyZFNlbGVjdGlvbkV2ZW50KGUpICYmIHRoaXMuaGFuZGxlU3dhcE9yZGVyQ2xpY2soKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2kxOG5leHQudCgnc3dhcC1vcmRlci1idXR0b24tbGFiZWwnKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEljb24gaW1nPVwib3Bwb3NpdGVcIiBjb2xvcj17dGhpcy5wcm9wcy5jb2xvcn0gLz5cbiAgICAgICAgICAgIDwvSXRpbmVyYXJ5U2VhcmNoQ29udHJvbD5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3ZpYVBvaW50cy5sZW5ndGggPT09IDAgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ3JlY3RhbmdsZS1jb250YWluZXInXX0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnJlY3RhbmdsZX0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgICAgPFJlYWN0U29ydGFibGVcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sndmlhcG9pbnRzLWNvbnRhaW5lciddfVxuICAgICAgICAgIGxpc3Q9e3ZpYVBvaW50c31cbiAgICAgICAgICBoYW5kbGU9e2AuJHtzdHlsZXNbJ3ZpYXBvaW50LWJlZm9yZSddfWB9XG4gICAgICAgICAgYW5pbWF0aW9uPXsyMDB9XG4gICAgICAgICAgc2V0TGlzdD17aXRlbXMgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3VmlhUG9pbnRzID0gaXRlbXMuZmlsdGVyKHZwID0+ICFpc1ZpYVBvaW50RW1wdHkodnApKTtcbiAgICAgICAgICAgIGlmIChuZXdWaWFQb2ludHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICB0aGlzLnByb3BzLnVwZGF0ZVZpYVBvaW50cyhuZXdWaWFQb2ludHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7dmlhUG9pbnRzLm1hcCgobywgaSkgPT4gKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2N4KHN0eWxlc1sndmlhcG9pbnQtY29udGFpbmVyJ10pfVxuICAgICAgICAgICAgICBrZXk9e2B2aWFwb2ludC0ke2l9YH0gLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydsaWdodC1ncmF5LWJhY2tncm91bmQnXX0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5yb3d9PlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sndmlhcG9pbnQtYmVmb3JlJ119XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogJ21vdmUnIH19XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxJY29uIGltZz1cImVsbGlwc2lzXCIgcm90YXRlPXs5MH0gY29sb3I9e3RoaXMucHJvcHMuY29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAgICAgICAgICAgICAgICBgJHtzdHlsZXNbJ3ZpYXBvaW50LWlucHV0LWNvbnRhaW5lciddfSAke1xuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzW2B2aWFwb2ludC0ke2kgKyAxfWBdXG4gICAgICAgICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxEVEF1dG9TdWdnZXN0XG4gICAgICAgICAgICAgICAgICAgICAgYXBwRWxlbWVudD17dGhpcy5wcm9wcy5hcHBFbGVtZW50fVxuICAgICAgICAgICAgICAgICAgICAgIGljb249XCJtYXBNYXJrZXItdmlhXCJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cInZpYS1wb2ludFwiXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYUxhYmVsPXtpMThuZXh0LnQoJ3ZpYS1wb2ludC1pbmRleCcsIHsgaW5kZXg6IGkgKyAxIH0pfVxuICAgICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1cz17XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlQXV0b0ZvY3VzID09PSB0cnVlID8gZmFsc2UgOiAhdGhpcy5wcm9wcy5pc01vYmlsZVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInZpYS1wb2ludFwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidmlhcG9pbnRcIlxuICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaENvbnRleHQ9e3NlYXJjaENvbnRleHR9XG4gICAgICAgICAgICAgICAgICAgICAgcmVmUG9pbnQ9e3RoaXMucHJvcHMucmVmUG9pbnR9XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9eyhvICYmIG8uYWRkcmVzcykgfHwgJyd9XG4gICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMucHJvcHMub25TZWxlY3R9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGVhcj17dGhpcy5wcm9wcy5vbkNsZWFyfVxuICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVZpYVBvaW50cz17aXRlbSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVWaWFQb2ludExvY2F0aW9uU2VsZWN0ZWQoaXRlbSwgaSlcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgbGFuZz17dGhpcy5wcm9wcy5sYW5nfVxuICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZXM9e3RoaXMucHJvcHMuc291cmNlc31cbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRzPXt0aGlzLnByb3BzLnRhcmdldHN9XG4gICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUmVzdWx0cz17dGhpcy5wcm9wcy5maWx0ZXJSZXN1bHRzfVxuICAgICAgICAgICAgICAgICAgICAgIGdldEF1dG9TdWdnZXN0SWNvbnM9e3RoaXMucHJvcHMuZ2V0QXV0b1N1Z2dlc3RJY29uc31cbiAgICAgICAgICAgICAgICAgICAgICBpc01vYmlsZT17dGhpcy5wcm9wcy5pc01vYmlsZX1cbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17dGhpcy5wcm9wcy5jb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICBob3ZlckNvbG9yPXt0aGlzLnByb3BzLmhvdmVyQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodHM9e3RoaXMucHJvcHMuZm9udFdlaWdodHN9XG4gICAgICAgICAgICAgICAgICAgICAgbW9kZVNldD17dGhpcy5wcm9wcy5tb2RlU2V0fVxuICAgICAgICAgICAgICAgICAgICAgIG1vZGVJY29uQ29sb3JzPXt0aGlzLnByb3BzLm1vZGVJY29uQ29sb3JzfVxuICAgICAgICAgICAgICAgICAgICAgIHNob3dTY3JvbGw9e3RoaXMucHJvcHMuc2hvd1Njcm9sbH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPEl0aW5lcmFyeVNlYXJjaENvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2FkZC12aWEtcG9pbnQtc2xhY2snXX1cbiAgICAgICAgICAgICAgICAgICAgZW5hYmxlZD17dGhpcy5wcm9wcy5zaG93VmlhcG9pbnRDb250cm9sfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLmhhbmRsZVRvZ2dsZVZpYVBvaW50U2xhY2tDbGljayhpKX1cbiAgICAgICAgICAgICAgICAgICAgb25LZXlQcmVzcz17ZSA9PlxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNLZXlib2FyZFNlbGVjdGlvbkV2ZW50KGUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVUb2dnbGVWaWFQb2ludFNsYWNrQ2xpY2soaSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtpMThuZXh0LnQoXG4gICAgICAgICAgICAgICAgICAgICAgaXNWaWFQb2ludFNsYWNrVGltZUlucHV0QWN0aXZlKGkpXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1vcGVuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtY2xvc2UnLFxuICAgICAgICAgICAgICAgICAgICAgIHsgaW5kZXg6IGkgKyAxIH0sXG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIHdpZGVcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEljb24gaW1nPVwidGltZVwiIGNvbG9yPXt0aGlzLnByb3BzLmNvbG9yfSAvPlxuICAgICAgICAgICAgICAgICAgPC9JdGluZXJhcnlTZWFyY2hDb250cm9sPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIHshaXNWaWFQb2ludFNsYWNrVGltZUlucHV0QWN0aXZlKGkpICYmXG4gICAgICAgICAgICAgICAgICB2aWFQb2ludHNbaV0gJiZcbiAgICAgICAgICAgICAgICAgIHZpYVBvaW50c1tpXS5sb2NhdGlvblNsYWNrID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3ZpYXBvaW50LXNsYWNrLXRpbWUnXX1cbiAgICAgICAgICAgICAgICAgICAgPntgJHtpMThuZXh0LnQoXG4gICAgICAgICAgICAgICAgICAgICAgJ3ZpYXBvaW50LXNsYWNrLWFtb3VudCcsXG4gICAgICAgICAgICAgICAgICAgICl9OiAke3RoaXMuZ2V0U2xhY2tEaXNwbGF5KFxuICAgICAgICAgICAgICAgICAgICAgIHZpYVBvaW50c1tpXS5sb2NhdGlvblNsYWNrLFxuICAgICAgICAgICAgICAgICAgICApfWB9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2N4KHN0eWxlc1snaW5wdXQtdmlhcG9pbnQtc2xhY2stY29udGFpbmVyJ10sIHtcbiAgICAgICAgICAgICAgICAgICAgY29sbGFwc2VkOiAhaXNWaWFQb2ludFNsYWNrVGltZUlucHV0QWN0aXZlKGkpLFxuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snc2VsZWN0LXdyYXBwZXInXX0+XG4gICAgICAgICAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICBpZD17YHZpYXBvaW50LXNsYWNrLSR7aX1gfVxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtpMThuZXh0LnQoJ3ZpYXBvaW50LXNsYWNrLWFtb3VudCcpfVxuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e3NsYWNrVGltZX1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Z2V0VmlhUG9pbnRTbGFja1RpbWVPckRlZmF1bHQodmlhUG9pbnRzW2ldKX1cbiAgICAgICAgICAgICAgICAgICAgICBnZXREaXNwbGF5PXt0aGlzLmdldFNsYWNrRGlzcGxheX1cbiAgICAgICAgICAgICAgICAgICAgICB2aWFQb2ludEluZGV4PXtpfVxuICAgICAgICAgICAgICAgICAgICAgIGljb249e1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXNbJ2NvbWJvYm94LWljb24nXX0gJHtzdHlsZXNbJ3RpbWUtaW5wdXQtaWNvbiddfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGltZz1cInRpbWVcIiBjb2xvcj17dGhpcy5wcm9wcy5jb2xvcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgb25TbGFja1RpbWVTZWxlY3RlZD17dGhpcy5oYW5kbGVWaWFQb2ludFNsYWNrVGltZVNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8SXRpbmVyYXJ5U2VhcmNoQ29udHJvbFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydyZW1vdmUtdmlhLXBvaW50J119XG4gICAgICAgICAgICAgICAgZW5hYmxlZD17dGhpcy5wcm9wcy5zaG93VmlhcG9pbnRDb250cm9sfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRoaXMuaGFuZGxlUmVtb3ZlVmlhUG9pbnRDbGljayhpKX1cbiAgICAgICAgICAgICAgICBvbktleVByZXNzPXtlID0+XG4gICAgICAgICAgICAgICAgICB0aGlzLmlzS2V5Ym9hcmRTZWxlY3Rpb25FdmVudChlKSAmJlxuICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVSZW1vdmVWaWFQb2ludENsaWNrKGkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2kxOG5leHQudCgncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnLCB7XG4gICAgICAgICAgICAgICAgICBpbmRleDogaSArIDEsXG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJjbG9zZVwiIGNvbG9yPXt0aGlzLnByb3BzLmNvbG9yfSAvPlxuICAgICAgICAgICAgICA8L0l0aW5lcmFyeVNlYXJjaENvbnRyb2w+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9SZWFjdFNvcnRhYmxlPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydkZXN0aW5hdGlvbi1pbnB1dC1jb250YWluZXInXX0+XG4gICAgICAgICAgPERUQXV0b1N1Z2dlc3RcbiAgICAgICAgICAgIGFwcEVsZW1lbnQ9e3RoaXMucHJvcHMuYXBwRWxlbWVudH1cbiAgICAgICAgICAgIGljb249XCJtYXBNYXJrZXJcIlxuICAgICAgICAgICAgaWQ9XCJkZXN0aW5hdGlvblwiXG4gICAgICAgICAgICBhdXRvRm9jdXM9e1xuICAgICAgICAgICAgICBkaXNhYmxlQXV0b0ZvY3VzID09PSB0cnVlXG4gICAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICAgIDogIXRoaXMucHJvcHMuaXNNb2JpbGUgJiYgIU51bWJlci5pc05hTihvcmlnaW4ubGF0KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RvcmVSZWY9e3RoaXMuc3RvcmVSZWZlcmVuY2V9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5kZXN0aW5hdGlvblBsYWNlSG9sZGVyfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXt0aGlzLmNsYXNzKHRoaXMucHJvcHMuZGVzdGluYXRpb24pfVxuICAgICAgICAgICAgZ2V0QXV0b1N1Z2dlc3RJY29ucz17dGhpcy5wcm9wcy5nZXRBdXRvU3VnZ2VzdEljb25zfVxuICAgICAgICAgICAgc2VhcmNoQ29udGV4dD17c2VhcmNoQ29udGV4dH1cbiAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLnByb3BzLm9uU2VsZWN0fVxuICAgICAgICAgICAgb25DbGVhcj17dGhpcy5wcm9wcy5vbkNsZWFyfVxuICAgICAgICAgICAgcmVmUG9pbnQ9e3RoaXMucHJvcHMucmVmUG9pbnR9XG4gICAgICAgICAgICB2YWx1ZT17dGhpcy52YWx1ZSh0aGlzLnByb3BzLmRlc3RpbmF0aW9uKX1cbiAgICAgICAgICAgIGxhbmc9e3RoaXMucHJvcHMubGFuZ31cbiAgICAgICAgICAgIHNvdXJjZXM9e3RoaXMucHJvcHMuc291cmNlc31cbiAgICAgICAgICAgIHRhcmdldHM9e3RoaXMucHJvcHMudGFyZ2V0c31cbiAgICAgICAgICAgIGZpbHRlclJlc3VsdHM9e3RoaXMucHJvcHMuZmlsdGVyUmVzdWx0c31cbiAgICAgICAgICAgIGlzTW9iaWxlPXt0aGlzLnByb3BzLmlzTW9iaWxlfVxuICAgICAgICAgICAgY29sb3I9e3RoaXMucHJvcHMuY29sb3J9XG4gICAgICAgICAgICBob3ZlckNvbG9yPXt0aGlzLnByb3BzLmhvdmVyQ29sb3J9XG4gICAgICAgICAgICBtb2JpbGVMYWJlbD17ZGVzdGluYXRpb25Nb2JpbGVMYWJlbH1cbiAgICAgICAgICAgIGZvbnRXZWlnaHRzPXt0aGlzLnByb3BzLmZvbnRXZWlnaHRzfVxuICAgICAgICAgICAgbW9kZVNldD17dGhpcy5wcm9wcy5tb2RlU2V0fVxuICAgICAgICAgICAgbW9kZUljb25Db2xvcnM9e3RoaXMucHJvcHMubW9kZUljb25Db2xvcnN9XG4gICAgICAgICAgICBzaG93U2Nyb2xsPXt0aGlzLnByb3BzLnNob3dTY3JvbGx9XG4gICAgICAgICAgICBpc0VtYmVkZGVkPXt0aGlzLnByb3BzLmlzRW1iZWRkZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7KHNob3dTd2FwQ29udHJvbCB8fCBzaG93VmlhcG9pbnRDb250cm9sKSAmJiAoXG4gICAgICAgICAgICA8SXRpbmVyYXJ5U2VhcmNoQ29udHJvbFxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2N4KHN0eWxlc1snYWRkLXZpYS1wb2ludCddLCBzdHlsZXMubW9yZSwge1xuICAgICAgICAgICAgICAgIGNvbGxhcHNlZDogdmlhUG9pbnRzLmxlbmd0aCA+IDQsXG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICBlbmFibGVkPXtzaG93VmlhcG9pbnRDb250cm9sfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLmhhbmRsZUFkZFZpYVBvaW50Q2xpY2soKX1cbiAgICAgICAgICAgICAgb25LZXlQcmVzcz17ZSA9PlxuICAgICAgICAgICAgICAgIHRoaXMuaXNLZXlib2FyZFNlbGVjdGlvbkV2ZW50KGUpICYmXG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVBZGRWaWFQb2ludENsaWNrKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtpMThuZXh0LnQoJ2FkZC12aWEtYnV0dG9uLWxhYmVsJyl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxJY29uXG4gICAgICAgICAgICAgICAgaW1nPVwidmlhcG9pbnRcIlxuICAgICAgICAgICAgICAgIHdpZHRoPXsxLjI1fVxuICAgICAgICAgICAgICAgIGhlaWdodD17MS4zNzV9XG4gICAgICAgICAgICAgICAgY29sb3I9e3RoaXMucHJvcHMuY29sb3J9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0l0aW5lcmFyeVNlYXJjaENvbnRyb2w+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBEVEF1dG9zdWdnZXN0UGFuZWw7XG4iXSwibmFtZXMiOlsiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJzb3VyY2UiLCJleGNsdWRlZCIsImtleSIsImkiLCJ0YXJnZXQiLCJzb3VyY2VLZXlzIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsImluZGV4T2YiLCJzdHlsZUluamVjdCIsImNzcyIsInJlZiIsImluc2VydEF0IiwiZG9jdW1lbnQiLCJoZWFkIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJzdHlsZSIsImNyZWF0ZUVsZW1lbnQiLCJ0eXBlIiwiZmlyc3RDaGlsZCIsImluc2VydEJlZm9yZSIsImFwcGVuZENoaWxkIiwic3R5bGVTaGVldCIsImNzc1RleHQiLCJjcmVhdGVUZXh0Tm9kZSIsIlNlbGVjdCIsInZhbHVlIiwiZ2V0RGlzcGxheSIsIm9wdGlvbnMiLCJvblNsYWNrVGltZVNlbGVjdGVkIiwidmlhUG9pbnRJbmRleCIsImlkIiwibGFiZWwiLCJpY29uIiwiZGlzcGxheVZhbHVlIiwiY2hhbmdlRGlzcGxheVZhbHVlIiwidXNlU3RhdGUiLCJvcGVuIiwiY2hhbmdlT3BlbiIsInVzZUVmZmVjdCIsInNjcm9sbFJlZiIsInVzZVJlZiIsInNjcm9sbEluZGV4IiwiTWF0aCIsImZsb29yIiwidXNlTGF5b3V0RWZmZWN0IiwiY3VycmVudCIsInNjcm9sbFRvcCIsImlucHV0SWQiLCJsYWJlbElkIiwiUmVhY3QiLCJGcmFnbWVudCIsImNsYXNzTmFtZSIsInN0eWxlcyIsImh0bWxGb3IiLCJBdXRvc3VnZ2VzdCIsInN1Z2dlc3Rpb25zIiwiZ2V0U3VnZ2VzdGlvblZhbHVlIiwicyIsInJlbmRlclN1Z2dlc3Rpb24iLCJkaXNwbGF5TmFtZSIsIm9uU3VnZ2VzdGlvbnNGZXRjaFJlcXVlc3RlZCIsInNob3VsZFJlbmRlclN1Z2dlc3Rpb25zIiwiZm9jdXNJbnB1dE9uU3VnZ2VzdGlvbkNsaWNrIiwib25TdWdnZXN0aW9uc0NsZWFyUmVxdWVzdGVkIiwiaW5wdXRQcm9wcyIsIm9uQ2hhbmdlIiwib25JbnB1dENoYW5nZSIsIl8iLCJuZXdWYWx1ZSIsIm1ldGhvZCIsIm9uRm9jdXMiLCJvbkJsdXIiLCJyZWFkT25seSIsInJlbmRlclN1Z2dlc3Rpb25zQ29udGFpbmVyIiwiY29udGFpbmVyUHJvcHMiLCJjaGlsZHJlbiIsIm90aGVyUmVmcyIsIl9leGNsdWRlZCIsImFzc2lnbiIsInRhYkluZGV4IiwiZWxlbSIsInRoZW1lIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwibnVtYmVyIiwiaXNSZXF1aXJlZCIsImZ1bmMiLCJhcnJheU9mIiwic2hhcGUiLCJzdHJpbmciLCJub2RlIiwidHJhbnNsYXRpb25zIiwiZGUiLCJlbiIsImZpIiwic3YiLCJpbml0IiwibG5nIiwiZmFsbGJhY2tMbmciLCJkZWZhdWx0TlMiLCJpbnRlcnBvbGF0aW9uIiwiZXNjYXBlVmFsdWUiLCJnZXRFbXB0eVZpYVBvaW50UGxhY2VIb2xkZXIiLCJpc1ZpYVBvaW50RW1wdHkiLCJ2aWFQb2ludCIsInVuZGVmaW5lZCIsImlzRW1wdHkiLCJpbmNsdWRlcyIsIkl0aW5lcmFyeVNlYXJjaENvbnRyb2wiLCJfcmVmIiwiZW5hYmxlZCIsIm9uQ2xpY2siLCJvbktleVByZXNzIiwid2lkZSIsInJlc3QiLCJyb2xlIiwiYm9vbCIsIkRUQXV0b3N1Z2dlc3RQYW5lbCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJzdXBlciIsInRoaXMiLCJjb21wb25lbnREaWRNb3VudCIsImkxOG5leHQiLCJjaGFuZ2VMYW5ndWFnZSIsImxhbmciLCJjb21wb25lbnREaWRVcGRhdGUiLCJsYW5ndWFnZSIsImdldFNsYWNrVGltZU9wdGlvbnMiLCJ0aW1lT3B0aW9ucyIsInZhbHVlSW5NaW51dGVzIiwicHVzaCIsInQiLCJzZXREcmFnZ2FibGVWaWFQb2ludFJlZiIsImVsZW1lbnQiLCJpbmRleCIsImRyYWdnYWJsZVZpYVBvaW50cyIsInN0b3JlUmVmZXJlbmNlIiwic2V0U3RhdGUiLCJwcmV2U3RhdGUiLCJyZWZzIiwiaGFuZGxlRm9jdXNDaGFuZ2UiLCJkZXN0aW5hdGlvbiIsInNldCIsInN0YXRlIiwiZm9jdXMiLCJpc0tleWJvYXJkU2VsZWN0aW9uRXZlbnQiLCJldmVudCIsIndoaWNoIiwia2V5Q29kZSIsImNvbmNhdCIsInByZXZlbnREZWZhdWx0IiwibG9jYXRpb24iLCJhZGRyZXNzIiwiZ3BzIiwicmVhZHkiLCJjbGFzcyIsInVwZGF0ZVZpYVBvaW50cyIsInZpYVBvaW50cyIsImZpbHRlciIsInZwIiwidXBkYXRlVmlhUG9pbnRTbGFjayIsImFjdGl2ZVZpYVBvaW50U2xhY2tzIiwidXBkYXRlZFZpYVBvaW50SW5kZXgiLCJ2aWFQb2ludFJlbW92ZWQiLCJmb3VuZEF0SW5kZXgiLCJzcGxpY2UiLCJtYXAiLCJoYW5kbGVUb2dnbGVWaWFQb2ludFNsYWNrQ2xpY2siLCJhY3RpdmVTbGFja0lucHV0cyIsImhhbmRsZVZpYVBvaW50U2xhY2tUaW1lU2VsZWN0ZWQiLCJzbGFja1RpbWVJblNlY29uZHMiLCJhZGRBbmFseXRpY3NFdmVudCIsImFjdGlvbiIsImNhdGVnb3J5IiwibmFtZSIsImxvY2F0aW9uU2xhY2siLCJOdW1iZXIiLCJwYXJzZUludCIsImhhbmRsZVZpYVBvaW50TG9jYXRpb25TZWxlY3RlZCIsInZpYVBvaW50TG9jYXRpb24iLCJoYW5kbGVSZW1vdmVWaWFQb2ludENsaWNrIiwiaGFuZGxlQWRkVmlhUG9pbnRDbGljayIsImhhbmRsZVN3YXBPcmRlckNsaWNrIiwicmV2ZXJzZSIsInN3YXBPcmRlciIsImdldFNsYWNrRGlzcGxheSIsInNsYWNrSW5TZWNvbmRzIiwicmVuZGVyIiwib3JpZ2luIiwic2VhcmNoUGFuZWxUZXh0Iiwic2VhcmNoQ29udGV4dCIsImRpc2FibGVBdXRvRm9jdXMiLCJvcmlnaW5Nb2JpbGVMYWJlbCIsImRlc3RpbmF0aW9uTW9iaWxlTGFiZWwiLCJmb250V2VpZ2h0cyIsIm9uRm9jdXNDaGFuZ2UiLCJzaG93U3dhcENvbnRyb2wiLCJzaG93VmlhcG9pbnRDb250cm9sIiwic2xhY2tUaW1lIiwiZ2V0VmlhUG9pbnRTbGFja1RpbWVPckRlZmF1bHQiLCJkZWZhdWx0VmFsdWUiLCJpc1ZpYVBvaW50U2xhY2tUaW1lSW5wdXRBY3RpdmUiLCJjeCIsImlzTW9iaWxlIiwiY29sb3IiLCJtZWRpdW0iLCJEVEF1dG9TdWdnZXN0IiwiYXBwRWxlbWVudCIsImF1dG9Gb2N1cyIsImxhdCIsInN0b3JlUmVmIiwicmVmUG9pbnQiLCJwbGFjZWhvbGRlciIsIm9yaWdpblBsYWNlSG9sZGVyIiwiZ2V0QXV0b1N1Z2dlc3RJY29ucyIsIm9uU2VsZWN0Iiwib25DbGVhciIsImZvY3VzQ2hhbmdlIiwic291cmNlcyIsInRhcmdldHMiLCJmaWx0ZXJSZXN1bHRzIiwiaG92ZXJDb2xvciIsIm1vYmlsZUxhYmVsIiwibW9kZVNldCIsIm1vZGVJY29uQ29sb3JzIiwic2hvd1Njcm9sbCIsImlzRW1iZWRkZWQiLCJvcHBvc2l0ZSIsImUiLCJJY29uIiwiaW1nIiwicmVjdGFuZ2xlIiwiUmVhY3RTb3J0YWJsZSIsImxpc3QiLCJoYW5kbGUiLCJhbmltYXRpb24iLCJzZXRMaXN0IiwiaXRlbXMiLCJuZXdWaWFQb2ludHMiLCJvIiwicm93IiwiY3Vyc29yIiwicm90YXRlIiwiYXJpYUxhYmVsIiwiaGFuZGxlVmlhUG9pbnRzIiwiaXRlbSIsImlzTmFOIiwiZGVzdGluYXRpb25QbGFjZUhvbGRlciIsIm1vcmUiLCJ3aWR0aCIsImhlaWdodCIsImZvckVhY2giLCJhZGRSZXNvdXJjZUJ1bmRsZSIsImRlZmF1bHRQcm9wcyIsIm9iamVj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
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("classnames"),require("prop-types"),require("react"),require("react-sortablejs"),require("i18next"),require("@digitransit-component/digitransit-component-autosuggest"),require("@digitransit-component/digitransit-component-icon"),require("lodash/isEmpty"),require("react-autosuggest")):"function"==typeof define&&define.amd?define(["exports","classnames","prop-types","react","react-sortablejs","i18next","@digitransit-component/digitransit-component-autosuggest","@digitransit-component/digitransit-component-icon","lodash/isEmpty","react-autosuggest"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-autosuggest-panel"]={},e.cx,e.PropTypes,e.React,e.reactSortablejs,e.i18next,e.DTAutosuggest,e.Icon,e.isEmpty,e.Autosuggest)}(this,(function(e,t,n,i,o,s,a,l,r,c){"use strict";function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=p(t),u=p(n),_=p(i),h=p(s),g=p(a),f=p(l),y=p(r),v=p(c);function m(e,t){if(null==e)return{};var n,i,o={},s=Object.keys(e);for(i=0;i<s.length;i++)n=s[i],t.indexOf(n)>=0||(o[n]=e[n]);return o}function b(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var x={"combobox-container":"select_combobox-container__0lRpm","left-column":"select_left-column__cSrMR","combobox-label":"select_combobox-label__F9Ayd",container:"select_container__yrA-N",suggestion:"select_suggestion__b05iD",suggestionHighlighted:"select_suggestionHighlighted__ZFPWo",suggestionsContainerOpen:"select_suggestionsContainerOpen__9wcJ5",input:"select_input__pK5vk"};b(".select_combobox-container__0lRpm {\n background-color: #fff;\n border: solid #888 1px;\n display: flex;\n align-items: center;\n border-radius: 5px;\n height: 50px;\n justify-content: space-between;\n flex-grow: 1; }\n .select_combobox-container__0lRpm:focus-within {\n border-color: #007ac9; }\n .select_combobox-container__0lRpm .select_left-column__cSrMR {\n display: flex;\n flex-direction: column;\n width: 100%; }\n\n.select_combobox-label__F9Ayd {\n font-size: 12px;\n line-height: 20px;\n color: #666;\n letter-spacing: -0.48px;\n margin-left: 12px;\n margin-top: 4px; }\n\n.select_container__yrA-N {\n position: relative; }\n .select_container__yrA-N .select_suggestion__b05iD {\n font-size: 15px;\n line-height: 49px;\n height: 50px;\n padding: 0 0 0 12px;\n letter-spacing: -0.6px;\n color: #333;\n font-weight: 500; }\n .select_container__yrA-N .select_suggestionHighlighted__ZFPWo {\n font-size: 15px;\n font-weight: 500;\n background: #f4f4f5; }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 {\n position: absolute;\n background-color: #fff;\n z-index: 20;\n max-height: 250px;\n overflow-x: hidden;\n overflow-y: scroll;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid;\n top: 35px;\n width: calc(100% + 45px); }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 ul {\n padding: 0;\n margin: 0; }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 li:not(:last-child) {\n border-bottom: 1px solid #ddd; }\n .select_container__yrA-N .select_input__pK5vk {\n -webkit-appearance: none;\n appearance: none;\n margin: -4px 0 0 0;\n padding-left: 12px;\n border: none;\n height: 26px;\n background: #fff;\n font-weight: 500;\n box-shadow: none;\n font-size: 15px;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.6px;\n color: #333; }\n .select_container__yrA-N .select_input__pK5vk:focus {\n outline: none;\n border: none;\n box-shadow: none;\n background: #fff; }\n .select_container__yrA-N .select_input__pK5vk:read-only {\n cursor: pointer;\n background: #fff; }\n");const k=["ref"],w=({value:e,getDisplay:t,options:n,onSlackTimeSelected:o,viaPointIndex:s,id:a,label:l,icon:r})=>{const[c,p]=i.useState(t(e)),[d,u]=i.useState(!1);i.useEffect((()=>p(t(e))),[e]);const h=i.useRef(null),g=Math.floor(e/600);i.useLayoutEffect((()=>{d&&h.current&&(h.current.scrollTop=50*g)}),[e,d]);const f=`${a}-input`,y=`${a}-label`;return _.default.createElement("label",{className:x["combobox-container"],htmlFor:f},_.default.createElement("span",{className:x["left-column"]},_.default.createElement("span",{className:x["combobox-label"],id:y},l),_.default.createElement(v.default,{id:a,suggestions:n,getSuggestionValue:e=>e.value,renderSuggestion:e=>e.displayName,onSuggestionsFetchRequested:()=>null,shouldRenderSuggestions:()=>!0,focusInputOnSuggestionClick:!1,onSuggestionsClearRequested:()=>null,inputProps:{value:c,onChange:(t,{newValue:n,method:i})=>{switch(i){case"enter":case"click":o(n,s);break;case"escape":p(e)}},onFocus:()=>{u(!0)},onBlur:()=>{u(!1)},id:f,"aria-labelledby":y,"aria-autocomplete":"none",readOnly:!0},renderSuggestionsContainer:({containerProps:e,children:t})=>{const{ref:n}=e,i=m(e,k);return _.default.createElement("div",Object.assign({tabIndex:"-1"},i,{ref:e=>{e&&(h.current=e,n(e))}}),t)},theme:x})),r)};"production"!==process.env.NODE_ENV&&(w.propTypes={value:u.default.number.isRequired,onSlackTimeSelected:u.default.func.isRequired,getDisplay:u.default.func.isRequired,options:u.default.arrayOf(u.default.shape({displayName:u.default.string.isRequired,value:u.default.number.isRequired}).isRequired).isRequired,id:u.default.string.isRequired,label:u.default.node.isRequired,icon:u.default.node.isRequired,viaPointIndex:u.default.number.isRequired});const S={de:{"add-via-button-label":"Füge Zwischenziel hinzu","add-via-duration-button-label":"Setze Umsteigezeit für Zwischenziel {{index}}","add-via-duration-button-label-close":"Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}","add-via-duration-button-label-open":"Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}","minute-short":"min","remove-via-button-label":"Entferne Zwischenziel {{index}}","swap-order-button-label":"Tausche Start mit Ziel","via-point":"Zwischenziel","via-point-index":"Zwischenziel {{index}}","viapoint-slack-amount":"Umsteigezeit"},en:{"add-via-button-label":"Add via point","add-via-duration-button-label":"Set stop duration at via point {{index}}","add-via-duration-button-label-close":"Close stop duration selector at via point {{index}}","add-via-duration-button-label-open":"Open stop duration selector at via point {{index}}","minute-short":"min","remove-via-button-label":"Remove via point {{index}}","swap-order-button-label":"Reverse origin and destination","via-point":"Via point","via-point-index":"Via point {{index}}","viapoint-slack-amount":"Stop duration"},fi:{"add-via-button-label":"Lisää välipiste","add-via-duration-button-label":"Aseta välipisteelle {{index}} pysähdyksen kesto","add-via-duration-button-label-close":"Avaa välipisteen {{index}} pysähdyksen kesto valitsin","add-via-duration-button-label-open":"Sulje välipisteen {{index}} pysähdyksen kesto valitsin","minute-short":"min","remove-via-button-label":"Poista välipiste {{index}}","swap-order-button-label":"Käännä reitin suunta vastakkaiseksi","via-point":"Välipiste","via-point-index":"Välipiste {{index}}","viapoint-slack-amount":"Pysähdyksen kesto"},sv:{"add-via-button-label":"Lägg till viapunkt","add-via-duration-button-label":"Ställ in varaktighet för viapunkten {{index}}","add-via-duration-button-label-close":"Stäng väljaren för varaktighet vid via-punkten {{index}}","add-via-duration-button-label-open":"Öppna väljaren för varaktighet vid via-punkten {{index}}","minute-short":"min","remove-via-button-label":"Ta bort viapunkt {{index}}","swap-order-button-label":"Sväng ruttens riktning till den motsatta","via-point":"Via punkt","via-point-index":"Via punkt {{index}}","viapoint-slack-amount":"Stoppets varaktighet"}};var E={"autosuggest-panel":"styles_autosuggest-panel__meNwd","autosuggest-searchpanel-text":"styles_autosuggest-searchpanel-text__-VQTg","origin-input-container":"styles_origin-input-container__p4Qik","destination-input-container":"styles_destination-input-container__jBY4I",row:"styles_row__1GhCD","viapoints-container":"styles_viapoints-container__FYp7K","viapoint-container":"styles_viapoint-container__8yh1M","light-gray-background":"styles_light-gray-background__4fyZs","viapoint-before":"styles_viapoint-before__t4saF","viapoint-input-container":"styles_viapoint-input-container__uZx95","viapoint-1":"styles_viapoint-1__8Mna8",viapoint:"styles_viapoint__vUO9L","viapoint-2":"styles_viapoint-2__-OoUa","viapoint-3":"styles_viapoint-3__vvivE","viapoint-4":"styles_viapoint-4__jS9k1","viapoint-5":"styles_viapoint-5__J4V5N","viapoint-slack-time":"styles_viapoint-slack-time__Xpo0G","select-wrapper":"styles_select-wrapper__1usZw","via-point-button-container":"styles_via-point-button-container__cI2JI","input-viapoint-slack-container":"styles_input-viapoint-slack-container__TNgVy","itinerary-search-control":"styles_itinerary-search-control__cEL1X",opposite:"styles_opposite__zQQhd","add-via-point":"styles_add-via-point__E-gGB","add-via-point-slack":"styles_add-via-point-slack__GKjFf","remove-via-point":"styles_remove-via-point__e9DMQ","combobox-icon":"styles_combobox-icon__d3k1e","time-input-icon":"styles_time-input-icon__M8dmw","rectangle-container":"styles_rectangle-container__AdbAA",rectangle:"styles_rectangle__1IO7E","search-panel-whitespace":"styles_search-panel-whitespace__Luhwx"};b(".styles_autosuggest-panel__meNwd {\n width: 100%; }\n\n.styles_autosuggest-searchpanel-text__-VQTg {\n font-size: 24px;\n font-weight: var(--font-weight-medium);\n letter-spacing: -0.8px;\n color: #333;\n line-height: 1;\n margin-bottom: 17px;\n margin-top: unset; }\n @media screen and (min-width: 768px) {\n .styles_autosuggest-searchpanel-text__-VQTg {\n letter-spacing: -0.8px;\n line-height: 27px;\n margin-bottom: 21px; } }\n\n.styles_origin-input-container__p4Qik,\n.styles_destination-input-container__jBY4I {\n display: flex;\n flex: 1 0 100%; }\n .styles_origin-input-container__p4Qik input[type='text'],\n .styles_destination-input-container__jBY4I input[type='text'] {\n margin: 0; }\n\n.styles_row__1GhCD {\n display: flex;\n flex-direction: row; }\n\n.styles_viapoints-container__FYp7K {\n display: flex;\n flex-direction: column; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M {\n display: flex;\n flex: 1 0 100%;\n min-height: 50px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:first-child {\n margin-top: 6px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:not(:first-child) {\n margin-top: 3px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:last-child {\n margin-bottom: 6px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs {\n display: flex;\n padding: 3px 0;\n flex-direction: column;\n background: #f4f4f5;\n border-radius: 5px;\n width: 100%; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF {\n display: flex;\n min-width: 27px;\n justify-content: center;\n align-items: center; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF svg {\n fill: #888;\n height: 20px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 {\n display: flex;\n align-items: center;\n width: 100%; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 input[type='text'] {\n margin: 0; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-1__8Mna8 > div.styles_viapoint__vUO9L {\n z-index: 15; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-2__-OoUa > div.styles_viapoint__vUO9L {\n z-index: 14; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-3__vvivE > div.styles_viapoint__vUO9L {\n z-index: 13; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-4__jS9k1 > div.styles_viapoint__vUO9L {\n z-index: 12; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-5__J4V5N > div.styles_viapoint__vUO9L {\n z-index: 11; }\n\n.styles_viapoint-slack-time__Xpo0G {\n font-size: 13px;\n font-weight: normal;\n letter-spacing: -0.36px;\n color: #333;\n padding-left: 27px;\n padding-top: 12px;\n padding-bottom: 10px; }\n\n.styles_select-wrapper__1usZw {\n display: flex;\n height: 50px;\n margin-top: 9px;\n padding-left: 27px;\n padding-right: 47px; }\n\n.styles_via-point-button-container__cI2JI {\n display: flex; }\n .styles_via-point-button-container__cI2JI > div:nth-child(1) {\n order: 1;\n border-left: none; }\n .styles_via-point-button-container__cI2JI > div:nth-child(2) {\n order: 2;\n border-left: 1px solid rgba(151, 151, 151, 0.2); }\n\n.styles_input-viapoint-slack-container__TNgVy {\n display: flex;\n flex-direction: column; }\n\n.styles_itinerary-search-control__cEL1X {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n max-height: 50px;\n min-width: var(--width); }\n .styles_itinerary-search-control__cEL1X + .styles_itinerary-search-control__cEL1X {\n border-left: 1px solid rgba(151, 151, 151, 0.2); }\n .styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd svg {\n width: 19px;\n height: 17px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB svg {\n width: 20px;\n height: 22px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 47px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf svg {\n width: 18px;\n height: 19px; }\n .styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n max-height: 44px;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ svg {\n width: 14px;\n height: 14px; }\n\n.styles_combobox-icon__d3k1e {\n color: var(--color);\n border-left: solid #888 1px;\n height: 35px; }\n .styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw {\n padding: 9px 13px 0 13px; }\n .styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw svg {\n width: 18px;\n height: 19px; }\n\n.styles_rectangle-container__AdbAA {\n display: block;\n position: relative;\n height: 9px;\n z-index: 19; }\n .styles_rectangle-container__AdbAA .styles_rectangle__1IO7E {\n position: absolute;\n width: 4px;\n height: 21px;\n border-radius: 2px;\n background-color: #ddd;\n margin-left: 25px;\n margin-top: -5px; }\n\n.styles_search-panel-whitespace__Luhwx {\n min-width: 40px; }\n");const C=["children","className","enabled","onClick","onKeyPress","wide"];h.default.init({lng:"fi",fallbackLng:"fi",defaultNS:"translation",interpolation:{escapeValue:!1}});const P=()=>({}),N=e=>{if(void 0===e||y.default(e))return!0;const t=Object.keys(e);return 1===t.length||2===t.length&&t.includes("locationSlack")},A=e=>{let{children:t,className:n,enabled:i,onClick:o,onKeyPress:s,wide:a}=e,l=m(e,C);return _.default.createElement("div",{className:E["itinerary-search-control"],style:{"--width":a?"47px":"40px"}},o&&i&&_.default.createElement("div",Object.assign({},l,{className:n,onClick:o,onKeyPress:s,role:"button",tabIndex:"0"}),t))},V=e=>`${e/60} ${h.default.t("minute-short")}`,R=(e,t,n=!1)=>{const i=e.indexOf(t);return i>-1&&e.splice(i,1),n?e.map((e=>e>t?e-1:e)):e},M=e=>{const t=e&&(e.key||e.which||e.keyCode)||"";return!(!t||![13," ","Spacebar"].concat([32,"Enter"]).includes(t))&&(e.preventDefault(),!0)},I=e=>e&&e.address||e&&e.gps&&e.ready&&"Nykyinen sijainti"||"",F=e=>e&&!0===e.gps?"position":"location";"production"!==process.env.NODE_ENV&&(A.propTypes={children:u.default.node,className:u.default.string.isRequired,enabled:u.default.bool.isRequired,onClick:u.default.func.isRequired,onKeyPress:u.default.func.isRequired,wide:u.default.bool});class L extends _.default.Component{constructor(e){super(e),this.storeReference=e=>{this.setState((t=>({refs:[...t.refs,e]})))},this.handleFocusChange=()=>{const{destination:e}=this.props;e&&e.set||this.state.refs[1].focus()},this.updateViaPoints=e=>{0!==e.length?this.props.updateViaPoints(e.filter((e=>!N(e)))):this.props.updateViaPoints([])},this.handleToggleViaPointSlackClick=e=>{const{activeSlackInputs:t}=this.state;this.setState({activeSlackInputs:t.includes(e)?R(t,e):t.concat([e])})},this.handleViaPointSlackTimeSelected=(e,t)=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"EditViaPointStopDuration",category:"ItinerarySettings",name:e/60});const{viaPoints:n}=this.props;n[t].locationSlack=Number.parseInt(e,10),this.updateViaPoints(n)},this.handleViaPointLocationSelected=(e,t)=>{this.props.handleViaPointLocationSelected(e,t)},this.handleRemoveViaPointClick=e=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"RemoveJourneyViaPoint",category:"ItinerarySettings",name:null});const{activeSlackInputs:t}=this.state,{viaPoints:n}=this.props;n.splice(e,1),this.setState({activeSlackInputs:R(t,e,!0)},(()=>this.updateViaPoints(n)))},this.handleAddViaPointClick=()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"AddJourneyViaPoint",category:"ItinerarySettings",name:"QuickSettingsButton"});const{viaPoints:e}=this.props;e.push({}),this.setState(this.state)},this.handleSwapOrderClick=()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"SwitchJourneyStartAndEndPointOrder",category:"ItinerarySettings",name:null});const{viaPoints:e}=this.props;e.reverse(),this.props.swapOrder()},this.state={activeSlackInputs:[],refs:[]},Object.keys(S).forEach((e=>{h.default.addResourceBundle(e,"translation",S[e])}))}componentDidMount(){h.default.changeLanguage(this.props.lang)}componentDidUpdate(){h.default.language!==this.props.lang&&h.default.changeLanguage(this.props.lang)}render(){const{origin:e,searchPanelText:t,searchContext:n,disableAutoFocus:i,viaPoints:s,originMobileLabel:a,destinationMobileLabel:l,fontWeights:r,onFocusChange:c,showSwapControl:p,showViapointControl:u}=this.props,{activeSlackInputs:y}=this.state,v=(()=>{const e=[];for(let t=0;t<=9;t++){const n=10*t;e.push({displayName:`${n} ${h.default.t("minute-short")}`,value:60*n})}return e})(),m=(e,t=0)=>e&&e.locationSlack||t,b=e=>y.includes(e);return _.default.createElement("div",{className:d.default(E["autosuggest-panel"],this.props.isMobile&&"small"),style:{"--color":`${this.props.color}`,"--font-weight-medium":r.medium}}," ",t?_.default.createElement("div",null,_.default.createElement("h1",{className:E["autosuggest-searchpanel-text"]}," ",t)):null,_.default.createElement("div",{className:E["origin-input-container"]},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"origin",autoFocus:!0!==i&&(!this.props.isMobile&&!e.lat),storeRef:this.storeReference,refPoint:this.props.refPoint,className:F(e),placeholder:this.props.originPlaceHolder,value:I(e),searchContext:n,getAutoSuggestIcons:this.props.getAutoSuggestIcons,onSelect:this.props.onSelect,onClear:this.props.onClear,focusChange:c||this.handleFocusChange,lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,mobileLabel:a,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(p||u)&&_.default.createElement(A,{className:E.opposite,enabled:p,onClick:()=>this.handleSwapOrderClick(),onKeyPress:e=>M(e)&&this.handleSwapOrderClick(),"aria-label":h.default.t("swap-order-button-label")},_.default.createElement(f.default,{img:"opposite",color:this.props.color}))),0===s.length&&_.default.createElement("div",{className:E["rectangle-container"]},_.default.createElement("div",{className:E.rectangle})),_.default.createElement(o.ReactSortable,{className:E["viapoints-container"],list:s,handle:`.${E["viapoint-before"]}`,animation:200,setList:e=>{const t=e.filter((e=>!N(e)));t.length>0&&this.props.updateViaPoints(t)}},s.map(((e,t)=>_.default.createElement("div",{className:d.default(E["viapoint-container"]),key:`viapoint-${t}`},_.default.createElement("div",{className:E["light-gray-background"]},_.default.createElement("div",{className:E.row},_.default.createElement("div",{className:E["viapoint-before"],style:{cursor:"move"}},_.default.createElement(f.default,{img:"ellipsis",rotate:90,color:this.props.color})),_.default.createElement("div",{className:`${E["viapoint-input-container"]} ${E[`viapoint-${t+1}`]}`},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker-via",id:"via-point",ariaLabel:h.default.t("via-point-index",{index:t+1}),autoFocus:!0!==i&&!this.props.isMobile,placeholder:"via-point",className:"viapoint",searchContext:n,refPoint:this.props.refPoint,value:e&&e.address||"",onSelect:this.props.onSelect,onClear:this.props.onClear,handleViaPoints:e=>this.handleViaPointLocationSelected(e,t),lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,getAutoSuggestIcons:this.props.getAutoSuggestIcons,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll})),_.default.createElement(A,{className:E["add-via-point-slack"],enabled:this.props.showViapointControl,onClick:()=>this.handleToggleViaPointSlackClick(t),onKeyPress:e=>M(e)&&this.handleToggleViaPointSlackClick(t),"aria-label":h.default.t(b(t)?"add-via-duration-button-label-open":"add-via-duration-button-label-close",{index:t+1}),wide:!0},_.default.createElement(f.default,{img:"time",color:this.props.color}))),!b(t)&&s[t]&&s[t].locationSlack>0&&_.default.createElement("span",{className:E["viapoint-slack-time"]},`${h.default.t("viapoint-slack-amount")}: ${V(s[t].locationSlack)}`),_.default.createElement("div",{className:d.default(E["input-viapoint-slack-container"],!b(t)&&"collapsed")},_.default.createElement("div",{className:E["select-wrapper"]},_.default.createElement(w,{id:`viapoint-slack-${t}`,label:h.default.t("viapoint-slack-amount"),options:v,value:m(s[t]),getDisplay:V,viaPointIndex:t,icon:_.default.createElement("span",{className:`${E["combobox-icon"]} ${E["time-input-icon"]}`},_.default.createElement(f.default,{img:"time",color:this.props.color})),onSlackTimeSelected:this.handleViaPointSlackTimeSelected})))),_.default.createElement(A,{className:E["remove-via-point"],enabled:this.props.showViapointControl,onClick:()=>this.handleRemoveViaPointClick(t),onKeyPress:e=>M(e)&&this.handleRemoveViaPointClick(t),"aria-label":h.default.t("remove-via-button-label",{index:t+1})},_.default.createElement(f.default,{img:"close",color:this.props.color})))))),_.default.createElement("div",{className:E["destination-input-container"]},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"destination",autoFocus:!0!==i&&(!this.props.isMobile&&!Number.isNaN(e.lat)),storeRef:this.storeReference,placeholder:this.props.destinationPlaceHolder,className:F(this.props.destination),getAutoSuggestIcons:this.props.getAutoSuggestIcons,searchContext:n,onSelect:this.props.onSelect,onClear:this.props.onClear,refPoint:this.props.refPoint,value:I(this.props.destination),lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,mobileLabel:l,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(p||u)&&_.default.createElement(A,{className:d.default(E["add-via-point"],E.more,s.length>4&&"collapsed"),enabled:u,onClick:()=>this.handleAddViaPointClick(),onKeyPress:e=>M(e)&&this.handleAddViaPointClick(),"aria-label":h.default.t("add-via-button-label")},_.default.createElement(f.default,{img:"viapoint",width:1.25,height:1.375,color:this.props.color}))))}}L.defaultProps={viaPoints:[],originPlaceHolder:"give-origin",destinationPlaceHolder:"give-destination",swapOrder:void 0,updateViaPoints:()=>{},lang:"fi",sources:[],targets:[],filterResults:void 0,disableAutoFocus:!1,isMobile:!1,handleViaPointLocationSelected:void 0,color:"#007ac9",hoverColor:"#0062a1",originMobileLabel:null,destinationMobileLabel:null,modeSet:void 0,modeIconColors:void 0,fontWeights:{medium:500},showScroll:!1,onFocusChange:void 0,isEmbedded:!1,showSwapControl:!1,showViapointControl:!1},"production"!==process.env.NODE_ENV&&(L.propTypes={appElement:u.default.string.isRequired,origin:u.default.object.isRequired,destination:u.default.object.isRequired,originPlaceHolder:u.default.string,destinationPlaceHolder:u.default.string,viaPoints:u.default.arrayOf(u.default.object),updateViaPoints:u.default.func,handleViaPointLocationSelected:u.default.func,swapOrder:u.default.func,searchPanelText:u.default.string,searchContext:u.default.any.isRequired,onSelect:u.default.func,onClear:u.default.func,addAnalyticsEvent:u.default.func,lang:u.default.string,disableAutoFocus:u.default.bool,sources:u.default.arrayOf(u.default.string),targets:u.default.arrayOf(u.default.string),filterResults:u.default.func,isMobile:u.default.bool,color:u.default.string,hoverColor:u.default.string,originMobileLabel:u.default.string,destinationMobileLabel:u.default.string,refPoint:u.default.object,modeSet:u.default.string,modeIconColors:u.default.object,getAutoSuggestIcons:u.default.object,fontWeights:u.default.shape({medium:u.default.number}),showScroll:u.default.bool,onFocusChange:u.default.func,isEmbedded:u.default.bool,showSwapControl:u.default.bool,showViapointControl:u.default.bool}),e.default=L,e.getEmptyViaPointPlaceHolder=P,Object.defineProperty(e,"__esModule",{value:!0})}));
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZGV2ZWxvcG1lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWluamVjdC9kaXN0L3N0eWxlLWluamVjdC5lcy5qcyIsIi4uL3NyYy9oZWxwZXJzL1NlbGVjdC5qcyIsIi4uL3NyYy9oZWxwZXJzL3RyYW5zbGF0aW9ucy5qcyIsIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7XG4gIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9O1xuICB2YXIgdGFyZ2V0ID0ge307XG4gIHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgdmFyIGtleSwgaTtcbiAgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBrZXkgPSBzb3VyY2VLZXlzW2ldO1xuICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7XG4gICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufSIsImZ1bmN0aW9uIHN0eWxlSW5qZWN0KGNzcywgcmVmKSB7XG4gIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSB7fTtcbiAgdmFyIGluc2VydEF0ID0gcmVmLmluc2VydEF0O1xuXG4gIGlmICghY3NzIHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHsgcmV0dXJuOyB9XG5cbiAgdmFyIGhlYWQgPSBkb2N1bWVudC5oZWFkIHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4gIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHN0eWxlLnR5cGUgPSAndGV4dC9jc3MnO1xuXG4gIGlmIChpbnNlcnRBdCA9PT0gJ3RvcCcpIHtcbiAgICBpZiAoaGVhZC5maXJzdENoaWxkKSB7XG4gICAgICBoZWFkLmluc2VydEJlZm9yZShzdHlsZSwgaGVhZC5maXJzdENoaWxkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICB9XG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgc3R5bGVJbmplY3Q7XG4iLCJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IEF1dG9zdWdnZXN0IGZyb20gJ3JlYWN0LWF1dG9zdWdnZXN0JztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zZWxlY3Quc2Nzcyc7XG5cbmNvbnN0IFNlbGVjdCA9ICh7XG4gIHZhbHVlLFxuICBnZXREaXNwbGF5LFxuICBvcHRpb25zLFxuICBvblNsYWNrVGltZVNlbGVjdGVkLFxuICB2aWFQb2ludEluZGV4LFxuICBpZCxcbiAgbGFiZWwsXG4gIGljb24sXG59KSA9PiB7XG4gIGNvbnN0IFtkaXNwbGF5VmFsdWUsIGNoYW5nZURpc3BsYXlWYWx1ZV0gPSB1c2VTdGF0ZShnZXREaXNwbGF5KHZhbHVlKSk7XG4gIGNvbnN0IFtvcGVuLCBjaGFuZ2VPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgdXNlRWZmZWN0KCgpID0+IGNoYW5nZURpc3BsYXlWYWx1ZShnZXREaXNwbGF5KHZhbHVlKSksIFt2YWx1ZV0pO1xuICBjb25zdCBzY3JvbGxSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IHNjcm9sbEluZGV4ID0gTWF0aC5mbG9vcih2YWx1ZSAvIDYwMCk7XG4gIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSA1MDtcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAob3BlbiAmJiBzY3JvbGxSZWYuY3VycmVudCkge1xuICAgICAgc2Nyb2xsUmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gZWxlbWVudEhlaWdodCAqIHNjcm9sbEluZGV4O1xuICAgIH1cbiAgfSwgW3ZhbHVlLCBvcGVuXSk7XG5cbiAgY29uc3QgaW5wdXRJZCA9IGAke2lkfS1pbnB1dGA7XG4gIGNvbnN0IGxhYmVsSWQgPSBgJHtpZH0tbGFiZWxgO1xuXG4gIGNvbnN0IG9uSW5wdXRDaGFuZ2UgPSAoXywgeyBuZXdWYWx1ZSwgbWV0aG9kIH0pID0+IHtcbiAgICBzd2l0Y2ggKG1ldGhvZCkge1xuICAgICAgY2FzZSAnZW50ZXInOlxuICAgICAgY2FzZSAnY2xpY2snOlxuICAgICAgICBvblNsYWNrVGltZVNlbGVjdGVkKG5ld1ZhbHVlLCB2aWFQb2ludEluZGV4KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdlc2NhcGUnOlxuICAgICAgICBjaGFuZ2VEaXNwbGF5VmFsdWUodmFsdWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3VwJzpcbiAgICAgIGNhc2UgJ2Rvd24nOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9O1xuICByZXR1cm4gKFxuICAgIDxsYWJlbCBjbGFzc05hbWU9e3N0eWxlc1snY29tYm9ib3gtY29udGFpbmVyJ119IGh0bWxGb3I9e2lucHV0SWR9PlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXNbJ2xlZnQtY29sdW1uJ119PlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlc1snY29tYm9ib3gtbGFiZWwnXX0gaWQ9e2xhYmVsSWR9PlxuICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8QXV0b3N1Z2dlc3RcbiAgICAgICAgICBpZD17aWR9XG4gICAgICAgICAgc3VnZ2VzdGlvbnM9e29wdGlvbnN9XG4gICAgICAgICAgZ2V0U3VnZ2VzdGlvblZhbHVlPXtzID0+IHMudmFsdWV9XG4gICAgICAgICAgcmVuZGVyU3VnZ2VzdGlvbj17cyA9PiBzLmRpc3BsYXlOYW1lfVxuICAgICAgICAgIG9uU3VnZ2VzdGlvbnNGZXRjaFJlcXVlc3RlZD17KCkgPT4gbnVsbH1cbiAgICAgICAgICBzaG91bGRSZW5kZXJTdWdnZXN0aW9ucz17KCkgPT4gdHJ1ZX1cbiAgICAgICAgICBmb2N1c0lucHV0T25TdWdnZXN0aW9uQ2xpY2s9e2ZhbHNlfVxuICAgICAgICAgIG9uU3VnZ2VzdGlvbnNDbGVhclJlcXVlc3RlZD17KCkgPT4gbnVsbH1cbiAgICAgICAgICBpbnB1dFByb3BzPXt7XG4gICAgICAgICAgICB2YWx1ZTogZGlzcGxheVZhbHVlLFxuICAgICAgICAgICAgb25DaGFuZ2U6IG9uSW5wdXRDaGFuZ2UsXG4gICAgICAgICAgICBvbkZvY3VzOiAoKSA9PiB7XG4gICAgICAgICAgICAgIGNoYW5nZU9wZW4odHJ1ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgIGNoYW5nZU9wZW4oZmFsc2UpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlkOiBpbnB1dElkLFxuICAgICAgICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IGxhYmVsSWQsXG4gICAgICAgICAgICAnYXJpYS1hdXRvY29tcGxldGUnOiAnbm9uZScsXG4gICAgICAgICAgICByZWFkT25seTogdHJ1ZSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIHJlbmRlclN1Z2dlc3Rpb25zQ29udGFpbmVyPXsoeyBjb250YWluZXJQcm9wcywgY2hpbGRyZW4gfSkgPT4ge1xuICAgICAgICAgICAgLy8gc2V0IHJlZnMgZm9yIGF1dG9zdWdnZXN0IGxpYnJhcnkgYW5kIHNjcm9sbGJhciBwb3NpdGlvbmluZ1xuICAgICAgICAgICAgY29uc3QgeyByZWYsIC4uLm90aGVyUmVmcyB9ID0gY29udGFpbmVyUHJvcHM7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXJSZWYgPSBlbGVtID0+IHtcbiAgICAgICAgICAgICAgaWYgKGVsZW0pIHtcbiAgICAgICAgICAgICAgICBzY3JvbGxSZWYuY3VycmVudCA9IGVsZW07XG4gICAgICAgICAgICAgICAgcmVmKGVsZW0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPGRpdiB0YWJJbmRleD1cIi0xXCIgey4uLm90aGVyUmVmc30gcmVmPXtjb250YWluZXJSZWZ9PlxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH19XG4gICAgICAgICAgdGhlbWU9e3N0eWxlc31cbiAgICAgICAgLz5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtpY29ufVxuICAgIDwvbGFiZWw+XG4gICk7XG59O1xuXG5TZWxlY3QucHJvcFR5cGVzID0ge1xuICB2YWx1ZTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBvblNsYWNrVGltZVNlbGVjdGVkOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBnZXREaXNwbGF5OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvcHRpb25zOiBQcm9wVHlwZXMuYXJyYXlPZihcbiAgICBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgZGlzcGxheU5hbWU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIHZhbHVlOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gICAgfSkuaXNSZXF1aXJlZCxcbiAgKS5pc1JlcXVpcmVkLFxuICBpZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBsYWJlbDogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZCxcbiAgaWNvbjogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZCxcbiAgdmlhUG9pbnRJbmRleDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgU2VsZWN0O1xuIiwiY29uc3QgdHJhbnNsYXRpb25zID0ge1xuICBkZToge1xuICAgICdhZGQtdmlhLWJ1dHRvbi1sYWJlbCc6ICdGw7xnZSBad2lzY2hlbnppZWwgaGluenUnLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbCc6XG4gICAgICAnU2V0emUgVW1zdGVpZ2V6ZWl0IGbDvHIgWndpc2NoZW56aWVsIHt7aW5kZXh9fScsXG4gICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLWNsb3NlJzpcbiAgICAgICdTY2hsaWXDn2UgVW1zdGVpZ2V6ZWl0LUF1c3dhaGwgZsO8ciBad2lzY2hlbnppZWwge3tpbmRleH19JyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwtb3Blbic6XG4gICAgICAnw5ZmZm5lIFVtc3RlaWdlemVpdC1BdXN3YWhsIGbDvHIgWndpc2NoZW56aWVsIHt7aW5kZXh9fScsXG4gICAgJ21pbnV0ZS1zaG9ydCc6ICdtaW4nLFxuICAgICdyZW1vdmUtdmlhLWJ1dHRvbi1sYWJlbCc6ICdFbnRmZXJuZSBad2lzY2hlbnppZWwge3tpbmRleH19JyxcbiAgICAnc3dhcC1vcmRlci1idXR0b24tbGFiZWwnOiAnVGF1c2NoZSBTdGFydCBtaXQgWmllbCcsXG4gICAgJ3ZpYS1wb2ludCc6ICdad2lzY2hlbnppZWwnLFxuICAgICd2aWEtcG9pbnQtaW5kZXgnOiAnWndpc2NoZW56aWVsIHt7aW5kZXh9fScsXG4gICAgJ3ZpYXBvaW50LXNsYWNrLWFtb3VudCc6ICdVbXN0ZWlnZXplaXQnLFxuICB9LFxuICBlbjoge1xuICAgICdhZGQtdmlhLWJ1dHRvbi1sYWJlbCc6ICdBZGQgdmlhIHBvaW50JyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwnOiAnU2V0IHN0b3AgZHVyYXRpb24gYXQgdmlhIHBvaW50IHt7aW5kZXh9fScsXG4gICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLWNsb3NlJzpcbiAgICAgICdDbG9zZSBzdG9wIGR1cmF0aW9uIHNlbGVjdG9yIGF0IHZpYSBwb2ludCB7e2luZGV4fX0nLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1vcGVuJzpcbiAgICAgICdPcGVuIHN0b3AgZHVyYXRpb24gc2VsZWN0b3IgYXQgdmlhIHBvaW50IHt7aW5kZXh9fScsXG4gICAgJ21pbnV0ZS1zaG9ydCc6ICdtaW4nLFxuICAgICdyZW1vdmUtdmlhLWJ1dHRvbi1sYWJlbCc6ICdSZW1vdmUgdmlhIHBvaW50IHt7aW5kZXh9fScsXG4gICAgJ3N3YXAtb3JkZXItYnV0dG9uLWxhYmVsJzogJ1JldmVyc2Ugb3JpZ2luIGFuZCBkZXN0aW5hdGlvbicsXG4gICAgJ3ZpYS1wb2ludCc6ICdWaWEgcG9pbnQnLFxuICAgICd2aWEtcG9pbnQtaW5kZXgnOiAnVmlhIHBvaW50IHt7aW5kZXh9fScsXG4gICAgJ3ZpYXBvaW50LXNsYWNrLWFtb3VudCc6ICdTdG9wIGR1cmF0aW9uJyxcbiAgfSxcbiAgZmk6IHtcbiAgICAnYWRkLXZpYS1idXR0b24tbGFiZWwnOiAnTGlzw6TDpCB2w6RsaXBpc3RlJyxcbiAgICAnYWRkLXZpYS1kdXJhdGlvbi1idXR0b24tbGFiZWwnOlxuICAgICAgJ0FzZXRhIHbDpGxpcGlzdGVlbGxlIHt7aW5kZXh9fSBweXPDpGhkeWtzZW4ga2VzdG8nLFxuICAgICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1jbG9zZSc6XG4gICAgICAnQXZhYSB2w6RsaXBpc3RlZW4ge3tpbmRleH19IHB5c8OkaGR5a3NlbiBrZXN0byB2YWxpdHNpbicsXG4gICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLW9wZW4nOlxuICAgICAgJ1N1bGplIHbDpGxpcGlzdGVlbiB7e2luZGV4fX0gcHlzw6RoZHlrc2VuIGtlc3RvIHZhbGl0c2luJyxcbiAgICAnbWludXRlLXNob3J0JzogJ21pbicsXG4gICAgJ3JlbW92ZS12aWEtYnV0dG9uLWxhYmVsJzogJ1BvaXN0YSB2w6RsaXBpc3RlIHt7aW5kZXh9fScsXG4gICAgJ3N3YXAtb3JkZXItYnV0dG9uLWxhYmVsJzogJ0vDpMOkbm7DpCByZWl0aW4gc3V1bnRhIHZhc3Rha2thaXNla3NpJyxcbiAgICAndmlhLXBvaW50JzogJ1bDpGxpcGlzdGUnLFxuICAgICd2aWEtcG9pbnQtaW5kZXgnOiAnVsOkbGlwaXN0ZSB7e2luZGV4fX0nLFxuICAgICd2aWFwb2ludC1zbGFjay1hbW91bnQnOiAnUHlzw6RoZHlrc2VuIGtlc3RvJyxcbiAgfSxcbiAgc3Y6IHtcbiAgICAnYWRkLXZpYS1idXR0b24tbGFiZWwnOiAnTMOkZ2cgdGlsbCB2aWFwdW5rdCcsXG4gICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsJzpcbiAgICAgICdTdMOkbGwgaW4gdmFyYWt0aWdoZXQgZsO2ciB2aWFwdW5rdGVuIHt7aW5kZXh9fScsXG4gICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLWNsb3NlJzpcbiAgICAgICdTdMOkbmcgdsOkbGphcmVuIGbDtnIgdmFyYWt0aWdoZXQgdmlkIHZpYS1wdW5rdGVuIHt7aW5kZXh9fScsXG4gICAgJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLW9wZW4nOlxuICAgICAgJ8OWcHBuYSB2w6RsamFyZW4gZsO2ciB2YXJha3RpZ2hldCB2aWQgdmlhLXB1bmt0ZW4ge3tpbmRleH19JyxcbiAgICAnbWludXRlLXNob3J0JzogJ21pbicsXG4gICAgJ3JlbW92ZS12aWEtYnV0dG9uLWxhYmVsJzogJ1RhIGJvcnQgdmlhcHVua3Qge3tpbmRleH19JyxcbiAgICAnc3dhcC1vcmRlci1idXR0b24tbGFiZWwnOiAnU3bDpG5nIHJ1dHRlbnMgcmlrdG5pbmcgdGlsbCBkZW4gbW90c2F0dGEnLFxuICAgICd2aWEtcG9pbnQnOiAnVmlhIHB1bmt0JyxcbiAgICAndmlhLXBvaW50LWluZGV4JzogJ1ZpYSBwdW5rdCB7e2luZGV4fX0nLFxuICAgICd2aWFwb2ludC1zbGFjay1hbW91bnQnOiAnU3RvcHBldHMgdmFyYWt0aWdoZXQnLFxuICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgdHJhbnNsYXRpb25zO1xuIiwiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG5pbXBvcnQgY3ggZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFJlYWN0U29ydGFibGUgfSBmcm9tICdyZWFjdC1zb3J0YWJsZWpzJztcbmltcG9ydCBpMThuZXh0IGZyb20gJ2kxOG5leHQnO1xuaW1wb3J0IERUQXV0b1N1Z2dlc3QgZnJvbSAnQGRpZ2l0cmFuc2l0LWNvbXBvbmVudC9kaWdpdHJhbnNpdC1jb21wb25lbnQtYXV0b3N1Z2dlc3QnO1xuaW1wb3J0IEljb24gZnJvbSAnQGRpZ2l0cmFuc2l0LWNvbXBvbmVudC9kaWdpdHJhbnNpdC1jb21wb25lbnQtaWNvbic7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5pbXBvcnQgU2VsZWN0IGZyb20gJy4vaGVscGVycy9TZWxlY3QnO1xuaW1wb3J0IHRyYW5zbGF0aW9ucyBmcm9tICcuL2hlbHBlcnMvdHJhbnNsYXRpb25zJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9oZWxwZXJzL3N0eWxlcy5zY3NzJztcblxuaTE4bmV4dC5pbml0KHtcbiAgbG5nOiAnZmknLFxuICBmYWxsYmFja0xuZzogJ2ZpJyxcbiAgZGVmYXVsdE5TOiAndHJhbnNsYXRpb24nLFxuICBpbnRlcnBvbGF0aW9uOiB7XG4gICAgZXNjYXBlVmFsdWU6IGZhbHNlLCAvLyBub3QgbmVlZGVkIGZvciByZWFjdCBhcyBpdCBlc2NhcGVzIGJ5IGRlZmF1bHRcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgZ2V0RW1wdHlWaWFQb2ludFBsYWNlSG9sZGVyID0gKCkgPT4gKHt9KTtcblxuY29uc3QgaXNWaWFQb2ludEVtcHR5ID0gdmlhUG9pbnQgPT4ge1xuICBpZiAodmlhUG9pbnQgPT09IHVuZGVmaW5lZCB8fCBpc0VtcHR5KHZpYVBvaW50KSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh2aWFQb2ludCk7XG4gIHJldHVybiAoXG4gICAga2V5cy5sZW5ndGggPT09IDEgfHwgKGtleXMubGVuZ3RoID09PSAyICYmIGtleXMuaW5jbHVkZXMoJ2xvY2F0aW9uU2xhY2snKSlcbiAgKTtcbn07XG5cbmNvbnN0IEl0aW5lcmFyeVNlYXJjaENvbnRyb2wgPSAoe1xuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBlbmFibGVkLFxuICBvbkNsaWNrLFxuICBvbktleVByZXNzLFxuICB3aWRlLFxuICAuLi5yZXN0XG59KSA9PiAoXG4gIDxkaXZcbiAgICBjbGFzc05hbWU9e3N0eWxlc1snaXRpbmVyYXJ5LXNlYXJjaC1jb250cm9sJ119XG4gICAgc3R5bGU9e3sgJy0td2lkdGgnOiB3aWRlID8gJzQ3cHgnIDogJzQwcHgnIH19XG4gID5cbiAgICB7b25DbGljayAmJiBlbmFibGVkICYmIChcbiAgICAgIDxkaXZcbiAgICAgICAgey4uLnJlc3R9XG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICBvbktleVByZXNzPXtvbktleVByZXNzfVxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgdGFiSW5kZXg9XCIwXCJcbiAgICAgID5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9kaXY+XG4gICAgKX1cbiAgPC9kaXY+XG4pO1xuXG5jb25zdCBnZXRTbGFja0Rpc3BsYXkgPSBzbGFja0luU2Vjb25kcyA9PiB7XG4gIHJldHVybiBgJHtzbGFja0luU2Vjb25kcyAvIDYwfSAke2kxOG5leHQudCgnbWludXRlLXNob3J0Jyl9YDtcbn07XG5cbmNvbnN0IHVwZGF0ZVZpYVBvaW50U2xhY2sgPSAoXG4gIGFjdGl2ZVZpYVBvaW50U2xhY2tzLFxuICB1cGRhdGVkVmlhUG9pbnRJbmRleCxcbiAgdmlhUG9pbnRSZW1vdmVkID0gZmFsc2UsXG4pID0+IHtcbiAgY29uc3QgZm91bmRBdEluZGV4ID0gYWN0aXZlVmlhUG9pbnRTbGFja3MuaW5kZXhPZih1cGRhdGVkVmlhUG9pbnRJbmRleCk7XG4gIGlmIChmb3VuZEF0SW5kZXggPiAtMSkge1xuICAgIGFjdGl2ZVZpYVBvaW50U2xhY2tzLnNwbGljZShmb3VuZEF0SW5kZXgsIDEpO1xuICB9XG4gIHJldHVybiB2aWFQb2ludFJlbW92ZWRcbiAgICA/IGFjdGl2ZVZpYVBvaW50U2xhY2tzLm1hcCh2YWx1ZSA9PlxuICAgICAgICB2YWx1ZSA+IHVwZGF0ZWRWaWFQb2ludEluZGV4ID8gdmFsdWUgLSAxIDogdmFsdWUsXG4gICAgICApXG4gICAgOiBhY3RpdmVWaWFQb2ludFNsYWNrcztcbn07XG5cbmNvbnN0IGlzS2V5Ym9hcmRTZWxlY3Rpb25FdmVudCA9IGV2ZW50ID0+IHtcbiAgY29uc3Qgc3BhY2UgPSBbMTMsICcgJywgJ1NwYWNlYmFyJ107XG4gIGNvbnN0IGVudGVyID0gWzMyLCAnRW50ZXInXTtcbiAgY29uc3Qga2V5ID0gKGV2ZW50ICYmIChldmVudC5rZXkgfHwgZXZlbnQud2hpY2ggfHwgZXZlbnQua2V5Q29kZSkpIHx8ICcnO1xuICBpZiAoIWtleSB8fCAhc3BhY2UuY29uY2F0KGVudGVyKS5pbmNsdWRlcyhrZXkpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIHJldHVybiB0cnVlO1xufTtcblxuY29uc3QgdmFsdWUgPSBsb2NhdGlvbiA9PlxuICAobG9jYXRpb24gJiYgbG9jYXRpb24uYWRkcmVzcykgfHxcbiAgKGxvY2F0aW9uICYmIGxvY2F0aW9uLmdwcyAmJiBsb2NhdGlvbi5yZWFkeSAmJiAnTnlreWluZW4gc2lqYWludGknKSB8fFxuICAnJztcblxuY29uc3QgZ2V0TG9jYXRpb25UeXBlID0gbG9jYXRpb24gPT5cbiAgbG9jYXRpb24gJiYgbG9jYXRpb24uZ3BzID09PSB0cnVlID8gJ3Bvc2l0aW9uJyA6ICdsb2NhdGlvbic7XG5cbmNvbnN0IGdldFNsYWNrVGltZU9wdGlvbnMgPSAoKSA9PiB7XG4gIGNvbnN0IHRpbWVPcHRpb25zID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDw9IDk7IGkrKykge1xuICAgIGNvbnN0IHZhbHVlSW5NaW51dGVzID0gaSAqIDEwO1xuICAgIHRpbWVPcHRpb25zLnB1c2goe1xuICAgICAgZGlzcGxheU5hbWU6IGAke3ZhbHVlSW5NaW51dGVzfSAke2kxOG5leHQudCgnbWludXRlLXNob3J0Jyl9YCxcbiAgICAgIHZhbHVlOiB2YWx1ZUluTWludXRlcyAqIDYwLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiB0aW1lT3B0aW9ucztcbn07XG5cbkl0aW5lcmFyeVNlYXJjaENvbnRyb2wucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBlbmFibGVkOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbktleVByZXNzOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICB3aWRlOiBQcm9wVHlwZXMuYm9vbCxcbn07XG5cbi8qKlxuICogUGFuZWwgdGhhdCByZW5kZXJzIHR3byBEVEF1dG9zdWdnZXN0IHNlYXJjaCBmaWVsZHMsIGluY2x1ZGluZyB2aWFwb2ludCBoYW5kbGluZ1xuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBzZWFyY2hDb250ZXh0ID0ge1xuICogICBpc1BlbGlhc0xvY2F0aW9uQXdhcmU6IGZhbHNlIC8vIHRydWUgLyBmYWxzZSBkb2VzIExldCBQZWxpYXMgc3VnZ2VzdCBiYXNlZCBvbiBjdXJyZW50IHVzZXIgbG9jYXRpb25cbiAqICAgbWluaW1hbFJlZ2V4cDogdW5kZWZpbmVkIC8vIHVzZWQgZm9yIHRlc3RpbmcgbWluLiByZWdleHAuIEZvciBleGFtcGxlOiBuZXcgUmVnRXhwKCcuezIsfScpLFxuICogICBsaW5lUmVnZXhwOiB1bmRlZmluZWQgLy8gIGlkZW50aWZ5IHNlYXJjaGVzIGZvciByb3V0ZSBudW1iZXJzL2xhYmVsczogYnVzIHwgdHJhaW4gfCBtZXRyby4gRm9yIGV4YW1wbGU6IG5ldyBSZWdFeHAoXG4gKiAgICAvLyAgICcoXlswLTldK1thLXpdPyR8Xlt5dWxlYXBpbmtydGR6XSR8KF5tWzEyXT9iPyQpKScsXG4gKiAgICAvLyAgJ2knLFxuICogICAgLy8gICksXG4gKiAgIFVSTF9QRUxJQVM6ICcnIC8vIHVybCBmb3IgcGVsaWFzIHNlYXJjaGVzXG4gKiAgIGZlZWRJRHM6IFsnSFNMJywgJ0hTTExhdXR0YSddIC8vIEZlZWRJZCdzIGxpa2UgIFtIU0wsIEhTTExhdXR0YV1cbiAqICAgZ2VvY29kaW5nU291cmNlczogWydvYScsJ29zbScsJ25sc2ZpJ10gIC8vIHNvdXJjZXMgZm9yIGdlb2NvZGluZ1xuICogICBnZW9jb2RpbmdTZWFyY2hQYXJhbXM7IHt9ICAvLyBTZWFyY2hwYXJtYXMgZnJvIGdlb2NvZGluZ1xuICogICBnZXRGYXZvdXJpdGVMb2NhdGlvbnM6ICgpID0+ICh7fSksICAgIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhcnJheSBvZiBmYXZvdXJpdGUgbG9jYXRpb25zLlxuICogICBnZXRGYXZvdXJpdGVTdG9wczogKCkgPT4gKHt9KSwgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhcnJheSBvZiBmYXZvdXJpdGUgc3RvcHMuXG4gKiAgIGdldExhbmd1YWdlOiAoKSA9PiAoe30pLCAgICAgICAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIGN1cnJlbnQgbGFuZ3VhZ2UuXG4gKiAgIGdldEZhdm91cml0ZVJvdXRlczogKCkgPT4gKHt9KSwgICAgICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIGFycmF5IG9mIGZhdm91cml0ZSByb3V0ZXMuXG4gKiAgIGdldFBvc2l0aW9uczogKCkgPT4gKHt9KSwgICAgICAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIHVzZXIncyBnZW9sb2NhdGlvbi5cbiAqICAgZ2V0Um91dGVzUXVlcnk6ICgpID0+ICh7fSksICAgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IHJldHVybnMgcXVlcnkgZm9yIGZldGNoaW5nIHJvdXRlcy5cbiAqICAgZ2V0U3RvcEFuZFN0YXRpb25zUXVlcnk6ICgpID0+ICh7fSksICAvLyBGdW5jdGlvbiB0aGF0IGZldGNoZXMgZmF2b3VyaXRlIHN0b3BzIGFuZCBzdGF0aW9ucyBmcm9tIGdyYXBocWwgQVBJLlxuICogICBnZXRGYXZvdXJpdGVSb3V0ZXNRdWVyeTogKCkgPT4gKHt9KSwgIC8vIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBxdWVyeSBmb3IgZmV0Y2hpbmcgZmF2b3VyaXRlIHJvdXRlcy5cbiAqICAgZ2V0RmF2b3VyaXRlVmVoaWNsZVJlbnRhbFN0YXRpb25zOiAoKSA9PiAoe30pLCAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIGZhdm91cml0ZSBiaWtlIHJlbnRhbCBzdGF0aW9uLlxuICogICBnZXRGYXZvdXJpdGVWZWhpY2xlUmVudGFsU3RhdGlvbnNRdWVyeTogKCkgPT4gKHt9KSwgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm5zIHF1ZXJ5IGZvciBmZXRjaGluZyBmYXZvdXJpdGUgYmlrZSByZW50YWwgc3RhdGlvbnMuXG4gKiAgIHN0YXJ0TG9jYXRpb25XYXRjaDogKCkgPT4gKHt9KSwgICAgICAgLy8gRnVuY3Rpb24gdGhhdCBsb2NhdGVzIHVzZXJzIGdlb2xvY2F0aW9uLlxuICogICBzYXZlU2VhcmNoOiAoKSA9PiAoe30pLCAgICAgICAgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgc2F2ZXMgc2VhcmNoIHRvIG9sZCBzZWFyY2hlcyBzdG9yZS5cbiAqICAgY2xlYXJPbGRTZWFyY2hlczogKCkgPT4gKHt9KSwgICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IGNsZWFycyBvbGQgc2VhcmNoZXMgc3RvcmUuXG4gKiAgIGdldEZ1dHVyZVJvdXRlczogKCkgPT4gKHt9KSwgICAgICAgICAgLy8gRnVuY3Rpb24gdGhhdCByZXR1cm4gZnV0dXJlIHJvdXRlc1xuICogICBzYXZlRnV0dXJlUm91dGU6ICgpID0+ICh7fSksICAgICAgICAgIC8vIEZ1bmN0aW9uIHRoYXQgc2F2ZXMgYSBmdXR1cmUgcm91dGVcbiAqICAgY2xlYXJGdXR1cmVSb3V0ZXM6ICgpID0+ICh7fSksICAgICAgICAvLyBGdW5jdGlvbiB0aGF0IGNsZWFycyBmdXR1cmUgcm91dGVzXG4gKiB9O1xuICpcbiAqIGNvbnN0IG9yaWdpbiA9IHtcbiAqICBsYXQ6IDYwLjE2OTE5NixcbiAqICBsb246IDI0Ljk1NzY3NCxcbiAqICBhZGRyZXNzOiAnQWxla3NhbnRlcmlua2F0dSwgSGVsc2lua2knLFxuICogIHNldDogdHJ1ZSxcbiAqICByZWFkeTogdHJ1ZSxcbiAqIH1cbiAqXG4gKiBjb25zdCBkZXN0aW5hdGlvbiA9IHtcbiAqICAgbGF0OiA2MC4xOTkwOTMsXG4gKiAgIGxvbjogMjQuOTQwNTM2LFxuICogICBhZGRyZXNzOiAnT3Bhc3RpbnNpbHRhIDYsIEhlbHNpbmtpJyxcbiAqICAgc2V0OiB0cnVlLFxuICogICByZWFkeTogdHJ1ZSxcbiAqIH1cbiAqIG9uU2VsZWN0KGl0ZW0sIGlkKSB7XG4gKiAgcmV0dXJuIG51bGw7ICAvLyBEZWZpbmUgd2hhdCB0byBkbyB3aGVuIGEgc3VnZ2VzdGlvbiBpcyBiZWluZyBzZWxlY3RlZC4gTm9uZSBieSBkZWZhdWx0LlxuICogIH1cbiAqIG9uQ2xlYXIoaWQpIHtcbiAqICByZXR1cm4gbnVsbDsgIC8vIERlZmluZSB3aGF0IHRvIGRvIHdoZW4gYSBzdWdnZXN0aW9uIGlzIGJlaW5nIHNlbGVjdGVkLiBOb25lIGJ5IGRlZmF1bHQuXG4gKiB9XG4gKiBjb25zdCBnZXRBdXRvU3VnZ2VzdEljb25zOiB7XG4gKiAgIC8vIENhbGxlZCBmb3IgZXZlcnkgY2l0eSBiaWtlIHN0YXRpb24gcmVuZGVyZWQgYXMgYSBzZWFyY2ggc3VnZ2VzdGlvbi4gU2hvdWxkIHJldHVybiB0aGUgaWNvbiBhbmRcbiAqICAgLy8gY29sb3IgdXNlZCBmb3IgdGhhdCBzdGF0aW9uLiBUd28gaWNvbnMgYXJlIGF2YWlsYWJsZSwgJ2NpdHliaWtlLXN0b3AtZGlnaXRyYW5zaXQnIGFuZGl0eWJpa2Utc3RvcC1kaWdpdHJhbnNpdC1zZWNvbmRhcnknLlxuICogICBjaXR5YmlrZXM6IHN0YXRpb24gPT4ge1xuICogICAgICByZXR1cm4gWydjaXR5YmlrZS1zdG9wLWRpZ2l0cmFuc2l0JywgJyNmMmI2MmQnXTtcbiAqICAgfVxuICogfVxuICogY29uc3QgdGFyZ2V0cyA9IFsnTG9jYXRpb25zJywgJ1N0b3BzJywgJ1JvdXRlcyddOyAvLyBEZWZpbmVzIHdoYXQgeW91IGFyZSBzZWFyY2hpbmcuIGFsbCBhdmFpbGFibGUgb3B0aW9ucyBhcmUgTG9jYXRpb25zLCBTdG9wcywgUm91dGVzLCBWZWhpY2xlUmVudGFsU3RhdGlvbnMsIEZ1dHVyZVJvdXRlcywgTWFwUG9zaXRpb24gYW5kIEN1cnJlbnRQb3NpdGlvbi4gTGVhdmUgZW1wdHkgdG8gc2VhcmNoIGFsbCB0YXJnZXRzLlxuICogY29uc3Qgc291cmNlcyA9IFsnRmF2b3VyaXRlJywgJ0hpc3RvcnknLCAnRGF0YXNvdXJjZSddIC8vIERlZmluZXMgd2hlcmUgeW91IGFyZSBzZWFyY2hpbmcuIGFsbCBhdmFpbGFibGUgYXJlOiBGYXZvdXJpdGUsIEhpc3RvcnkgKHByZXZpb3VzbHkgc2VhcmNoZWQgc2VhcmNoZXMpLCBhbmQgRGF0YXNvdXJjZS4gTGVhdmUgZW1wdHkgdG8gdXNlIGFsbCBzb3VyY2VzLlxuICogPERUQXV0b3N1Z2dlc3RQYW5lbFxuICogICAgYXBwRWxlbWVudD17YXBwRWxlbWVudH0gLy8gUmVxdWlyZWQuIFJvb3QgZWxlbWVudCdzIGlkLiBOZWVkZWQgZm9yIHJlYWN0LW1vZGFsIGNvbXBvbmVudC5cbiAqICAgIG9yaWdpbj17b3JpZ2lufSAvLyBTZWxlY3RlZCBvcmlnaW4gcG9pbnRcbiAqICAgIGRlc3RpbmF0aW9uPXtkZXN0aW5hdGlvbn0gLy8gU2VsZWN0ZWQgZGVzdGluYXRpb24gcG9pbnRcbiAqICAgIG9yaWdpblBsYWNlSG9sZGVyPXsnR2l2ZSBvcmlnaW4nfSAvLyBPcHRpb25hbCBHaXZlIHN0cmluZyBzaG93biBpbml0aWFsbHkgaW5zaWRlIG9yaWdpbiBzZWFyY2ggZmllbGRcbiAqICAgIGRlc3RpbmF0aW9uUGxhY2VIb2xkZXI9eydHaXZlIGRlc3RpbmF0aW9uJ30gLy8gT3B0aW9uYWwgR2l2ZSBzdHJpbmcgc2hvd24gaW5pdGFsbHkgaW5zaWRlIGRlc3RpbmF0aW9uIHNlYXJjaCBmaWVsZFxuICogICAgaW5pdGlhbFZpYVBvaW50cz17W119IC8vIE9wdGlvbmFsLiAgSWYgc2hvd1ZpYXBvaW50Q29udHJvbCBpcyBzZXQgdG8gdHJ1ZSwgcGFzcyBpbml0aWFsIHZpYSBwb2ludHMgdG8gdGhlIHBhbmVsLiBDdXJyZW50bHkgbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpcyBnaXZlbi5cbiAqICAgIHVwZGF0ZVZpYVBvaW50cz17KCkgPT4gcmV0dXJuIFtdfSAvLyBPcHRpb25hbC4gSWYgc2hvd1ZpYXBvaW50Q29udHJvbCBpcyBzZXQgdG8gdHJ1ZSwgZGVmaW5lIGhvdyB0byB1cGRhdGUgeW91ciB2aWEgcG9pbnQgbGlzdCB3aXRoIHRoaXMgZnVuY3Rpb24uIEN1cnJlbmx0eSBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGdpdmVuLlxuICogICAgc3dhcE9yZGVyPXsoKSA9PiByZXR1cm4gbnVsbH0gLy8gT3B0aW9uYWwuIElmIHNob3dTd2FwQ29udHJvbCBpcyBzZXQgdG8gdHJ1ZSwgZGVmaW5lIGhvdyB0byBzd2FwIG9yZGVyIG9mIHlvdXIgcG9pbnRzIChvcmlnaW4sIGRlc3RpbmF0aW9uLCB2aWFwb2ludHMpLiBDdXJyZW50bHkgbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpcyBnaXZlbi5cbiAqICAgIHNlYXJjaENvbnRleHQ9e3NlYXJjaENvbnRleHR9XG4gKiAgICBnZXRBdXRvU3VnZ2VzdEljb25zPXtnZXRBdXRvU3VnZ2VzdEljb25zfVxuICogICAgb25TZWxlY3Q9e3RoaXMub25TZWxlY3R9XG4gKiAgICBvbkNsZWFyPXt0aGlzLm9uQ2xlYXJ9XG4gKiAgICBsYW5nPVwiZmlcIiAvLyBEZWZpbmUgbGFuZ3VhZ2UgZmkgc3Ygb3IgZW4uXG4gKiAgICBhZGRBbmFseXRpY3NFdmVudD17bnVsbH0gLy8gT3B0aW9uYWwuIHlvdSBjYW4gcmVjb3JkIGFuIGFuYWx5dGljcyBldmVudCBpZiB5b3Ugd2lzaC4gaWYgcGFzc2VkLCBjb21wb25lbnQgd2lsbCBwYXNzIGFuIGNhdGVnb3J5LCBhY3Rpb24sIG5hbWUgcGFyYW1ldGVycyB0byBhZGRBbmFseXRpY3NFdmVudFxuICogICAgZGlzYWJsZUF1dG9Gb2N1cz17ZmFsc2V9IC8vIE9wdGlvbmFsLiB1c2UgdGhpcyB0byBkaXNhYmxlIGF1dG9mb2N1cyBjb21wbGV0ZWx5IGZyb20gRFRBdXRvc3VnZ2VzdFBhbmVsXG4gKiAgICBzb3VyY2VzPXtzb3VyY2VzfVxuICogICAgdGFyZ2V0cz17dGFyZ2V0c31cbiAqICAgIGlzTW9iaWxlICAvLyBPcHRpb25hbC4gRGVmYXVsdHMgdG8gZmFsc2UuIFdoZXRoZXIgdG8gdXNlIG1vYmlsZSBzZWFyY2guXG4gKiAgICBvcmlnaW5Nb2JpbGVMYWJlbD1cIk9yaWdpbiBsYWJlbFwiIC8vIE9wdGlvbmFsLiBDdXN0b20gbGFiZWwgdGV4dCBmb3Igb3JpZ2luIGZpZWxkIG9uIG1vYmlsZS5cbiAqICAgIGRlc3RpbmF0aW9uTW9iaWxlTGFiZWw9XCJEZXN0aW5hdGlvbiBsYWJlbFwiIC8vIE9wdGlvbmFsLiBDdXN0b20gbGFiZWwgdGV4dCBmb3IgZGVzdGluYXRpb24gZmllbGQgb24gbW9iaWxlLlxuICogICAgaGFuZGxlRm9jdXNDaGFuZ2U9eygpID0+IHt9fSAvLyBPcHRpb25hbC4gSWYgZGVmaW5lZCBvdmVycmlkZXMgZGVmYXVsdCBvbkZvY3VzQ2hhbmdlIGJlaGF2aW91clxuICogICAgc2hvd1N3YXBDb250cm9sPXtmYWxzZX0gLy8gT3B0aW9uYWwuXG4gKiAgICBzaG93VmlhcG9pbnRDb250cm9sPXtmYWxzZX0gLy8gT3B0aW9uYWwuXG4gKi9cbmNsYXNzIERUQXV0b3N1Z2dlc3RQYW5lbCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgYXBwRWxlbWVudDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIG9yaWdpbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGRlc3RpbmF0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgb3JpZ2luUGxhY2VIb2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGVzdGluYXRpb25QbGFjZUhvbGRlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB2aWFQb2ludHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vYmplY3QpLFxuICAgIHVwZGF0ZVZpYVBvaW50czogUHJvcFR5cGVzLmZ1bmMsXG4gICAgaGFuZGxlVmlhUG9pbnRMb2NhdGlvblNlbGVjdGVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBzd2FwT3JkZXI6IFByb3BUeXBlcy5mdW5jLFxuICAgIHNlYXJjaFBhbmVsVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBzZWFyY2hDb250ZXh0OiBQcm9wVHlwZXMuYW55LmlzUmVxdWlyZWQsXG4gICAgb25TZWxlY3Q6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uQ2xlYXI6IFByb3BUeXBlcy5mdW5jLFxuICAgIGFkZEFuYWx5dGljc0V2ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBsYW5nOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRpc2FibGVBdXRvRm9jdXM6IFByb3BUeXBlcy5ib29sLFxuICAgIHNvdXJjZXM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpLFxuICAgIHRhcmdldHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpLFxuICAgIGZpbHRlclJlc3VsdHM6IFByb3BUeXBlcy5mdW5jLFxuICAgIGlzTW9iaWxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBjb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBob3ZlckNvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG9yaWdpbk1vYmlsZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRlc3RpbmF0aW9uTW9iaWxlTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgcmVmUG9pbnQ6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgbW9kZVNldDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBtb2RlSWNvbkNvbG9yczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBnZXRBdXRvU3VnZ2VzdEljb25zOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGZvbnRXZWlnaHRzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgbWVkaXVtOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIH0pLFxuICAgIHNob3dTY3JvbGw6IFByb3BUeXBlcy5ib29sLFxuICAgIG9uRm9jdXNDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAgIGlzRW1iZWRkZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIHNob3dTd2FwQ29udHJvbDogUHJvcFR5cGVzLmJvb2wsXG4gICAgc2hvd1ZpYXBvaW50Q29udHJvbDogUHJvcFR5cGVzLmJvb2wsXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICB2aWFQb2ludHM6IFtdLFxuICAgIG9yaWdpblBsYWNlSG9sZGVyOiAnZ2l2ZS1vcmlnaW4nLFxuICAgIGRlc3RpbmF0aW9uUGxhY2VIb2xkZXI6ICdnaXZlLWRlc3RpbmF0aW9uJyxcbiAgICBzd2FwT3JkZXI6IHVuZGVmaW5lZCxcbiAgICB1cGRhdGVWaWFQb2ludHM6ICgpID0+IHt9LFxuICAgIGxhbmc6ICdmaScsXG4gICAgc291cmNlczogW10sXG4gICAgdGFyZ2V0czogW10sXG4gICAgZmlsdGVyUmVzdWx0czogdW5kZWZpbmVkLFxuICAgIGRpc2FibGVBdXRvRm9jdXM6IGZhbHNlLFxuICAgIGlzTW9iaWxlOiBmYWxzZSxcbiAgICBoYW5kbGVWaWFQb2ludExvY2F0aW9uU2VsZWN0ZWQ6IHVuZGVmaW5lZCxcbiAgICBjb2xvcjogJyMwMDdhYzknLFxuICAgIGhvdmVyQ29sb3I6ICcjMDA2MmExJyxcbiAgICBvcmlnaW5Nb2JpbGVMYWJlbDogbnVsbCxcbiAgICBkZXN0aW5hdGlvbk1vYmlsZUxhYmVsOiBudWxsLFxuICAgIG1vZGVTZXQ6IHVuZGVmaW5lZCxcbiAgICBtb2RlSWNvbkNvbG9yczogdW5kZWZpbmVkLFxuICAgIGZvbnRXZWlnaHRzOiB7XG4gICAgICBtZWRpdW06IDUwMCxcbiAgICB9LFxuICAgIHNob3dTY3JvbGw6IGZhbHNlLFxuICAgIG9uRm9jdXNDaGFuZ2U6IHVuZGVmaW5lZCxcbiAgICBpc0VtYmVkZGVkOiBmYWxzZSxcbiAgICBzaG93U3dhcENvbnRyb2w6IGZhbHNlLFxuICAgIHNob3dWaWFwb2ludENvbnRyb2w6IGZhbHNlLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBhY3RpdmVTbGFja0lucHV0czogW10sXG4gICAgICByZWZzOiBbXSxcbiAgICB9O1xuICAgIE9iamVjdC5rZXlzKHRyYW5zbGF0aW9ucykuZm9yRWFjaChsYW5nID0+IHtcbiAgICAgIGkxOG5leHQuYWRkUmVzb3VyY2VCdW5kbGUobGFuZywgJ3RyYW5zbGF0aW9uJywgdHJhbnNsYXRpb25zW2xhbmddKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIGkxOG5leHQuY2hhbmdlTGFuZ3VhZ2UodGhpcy5wcm9wcy5sYW5nKTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICBpZiAoaTE4bmV4dC5sYW5ndWFnZSAhPT0gdGhpcy5wcm9wcy5sYW5nKSB7XG4gICAgICBpMThuZXh0LmNoYW5nZUxhbmd1YWdlKHRoaXMucHJvcHMubGFuZyk7XG4gICAgfVxuICB9XG5cbiAgc3RvcmVSZWZlcmVuY2UgPSByZWYgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUocHJldlN0YXRlID0+ICh7IHJlZnM6IFsuLi5wcmV2U3RhdGUucmVmcywgcmVmXSB9KSk7XG4gIH07XG5cbiAgaGFuZGxlRm9jdXNDaGFuZ2UgPSAoKSA9PiB7XG4gICAgY29uc3QgeyBkZXN0aW5hdGlvbiB9ID0gdGhpcy5wcm9wcztcbiAgICBpZiAoIWRlc3RpbmF0aW9uIHx8ICFkZXN0aW5hdGlvbi5zZXQpIHtcbiAgICAgIHRoaXMuc3RhdGUucmVmc1sxXS5mb2N1cygpO1xuICAgIH1cbiAgfTtcblxuICB1cGRhdGVWaWFQb2ludHMgPSB2aWFQb2ludHMgPT4ge1xuICAgIGlmICh2aWFQb2ludHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnByb3BzLnVwZGF0ZVZpYVBvaW50cyhbXSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucHJvcHMudXBkYXRlVmlhUG9pbnRzKHZpYVBvaW50cy5maWx0ZXIodnAgPT4gIWlzVmlhUG9pbnRFbXB0eSh2cCkpKTtcbiAgfTtcblxuICBoYW5kbGVUb2dnbGVWaWFQb2ludFNsYWNrQ2xpY2sgPSB2aWFQb2ludEluZGV4ID0+IHtcbiAgICBjb25zdCB7IGFjdGl2ZVNsYWNrSW5wdXRzIH0gPSB0aGlzLnN0YXRlO1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgYWN0aXZlU2xhY2tJbnB1dHM6IGFjdGl2ZVNsYWNrSW5wdXRzLmluY2x1ZGVzKHZpYVBvaW50SW5kZXgpXG4gICAgICAgID8gdXBkYXRlVmlhUG9pbnRTbGFjayhhY3RpdmVTbGFja0lucHV0cywgdmlhUG9pbnRJbmRleClcbiAgICAgICAgOiBhY3RpdmVTbGFja0lucHV0cy5jb25jYXQoW3ZpYVBvaW50SW5kZXhdKSxcbiAgICB9KTtcbiAgfTtcblxuICBoYW5kbGVWaWFQb2ludFNsYWNrVGltZVNlbGVjdGVkID0gKHNsYWNrVGltZUluU2Vjb25kcywgaSkgPT4ge1xuICAgIGlmICh0aGlzLnByb3BzLmFkZEFuYWx5dGljc0V2ZW50KSB7XG4gICAgICB0aGlzLnByb3BzLmFkZEFuYWx5dGljc0V2ZW50KHtcbiAgICAgICAgYWN0aW9uOiAnRWRpdFZpYVBvaW50U3RvcER1cmF0aW9uJyxcbiAgICAgICAgY2F0ZWdvcnk6ICdJdGluZXJhcnlTZXR0aW5ncycsXG4gICAgICAgIG5hbWU6IHNsYWNrVGltZUluU2Vjb25kcyAvIDYwLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHsgdmlhUG9pbnRzIH0gPSB0aGlzLnByb3BzO1xuICAgIHZpYVBvaW50c1tpXS5sb2NhdGlvblNsYWNrID0gTnVtYmVyLnBhcnNlSW50KHNsYWNrVGltZUluU2Vjb25kcywgMTApO1xuICAgIHRoaXMudXBkYXRlVmlhUG9pbnRzKHZpYVBvaW50cyk7XG4gIH07XG5cbiAgaGFuZGxlVmlhUG9pbnRMb2NhdGlvblNlbGVjdGVkID0gKHZpYVBvaW50TG9jYXRpb24sIGkpID0+IHtcbiAgICB0aGlzLnByb3BzLmhhbmRsZVZpYVBvaW50TG9jYXRpb25TZWxlY3RlZCh2aWFQb2ludExvY2F0aW9uLCBpKTtcbiAgfTtcblxuICBoYW5kbGVSZW1vdmVWaWFQb2ludENsaWNrID0gdmlhUG9pbnRJbmRleCA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQpIHtcbiAgICAgIHRoaXMucHJvcHMuYWRkQW5hbHl0aWNzRXZlbnQoe1xuICAgICAgICBhY3Rpb246ICdSZW1vdmVKb3VybmV5VmlhUG9pbnQnLFxuICAgICAgICBjYXRlZ29yeTogJ0l0aW5lcmFyeVNldHRpbmdzJyxcbiAgICAgICAgbmFtZTogbnVsbCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCB7IGFjdGl2ZVNsYWNrSW5wdXRzIH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHsgdmlhUG9pbnRzIH0gPSB0aGlzLnByb3BzO1xuICAgIHZpYVBvaW50cy5zcGxpY2UodmlhUG9pbnRJbmRleCwgMSk7XG4gICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgIHtcbiAgICAgICAgYWN0aXZlU2xhY2tJbnB1dHM6IHVwZGF0ZVZpYVBvaW50U2xhY2soXG4gICAgICAgICAgYWN0aXZlU2xhY2tJbnB1dHMsXG4gICAgICAgICAgdmlhUG9pbnRJbmRleCxcbiAgICAgICAgICB0cnVlLFxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgICgpID0+IHRoaXMudXBkYXRlVmlhUG9pbnRzKHZpYVBvaW50cyksXG4gICAgKTtcbiAgfTtcblxuICBoYW5kbGVBZGRWaWFQb2ludENsaWNrID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLnByb3BzLmFkZEFuYWx5dGljc0V2ZW50KSB7XG4gICAgICB0aGlzLnByb3BzLmFkZEFuYWx5dGljc0V2ZW50KHtcbiAgICAgICAgYWN0aW9uOiAnQWRkSm91cm5leVZpYVBvaW50JyxcbiAgICAgICAgY2F0ZWdvcnk6ICdJdGluZXJhcnlTZXR0aW5ncycsXG4gICAgICAgIG5hbWU6ICdRdWlja1NldHRpbmdzQnV0dG9uJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCB7IHZpYVBvaW50cyB9ID0gdGhpcy5wcm9wcztcbiAgICB2aWFQb2ludHMucHVzaChnZXRFbXB0eVZpYVBvaW50UGxhY2VIb2xkZXIoKSk7XG4gICAgLy8gV2UgbmVlZCB0byB1cGRhdGUgdGhlIHN0YXRlIHNvIHRoYXQgcGxhY2VIb2xkZXIgd2lsbCBzaG93IHVwIGluIHBhbmVsLlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hY2Nlc3Mtc3RhdGUtaW4tc2V0c3RhdGVcbiAgICB0aGlzLnNldFN0YXRlKHRoaXMuc3RhdGUpO1xuICB9O1xuXG4gIGhhbmRsZVN3YXBPcmRlckNsaWNrID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLnByb3BzLmFkZEFuYWx5dGljc0V2ZW50KSB7XG4gICAgICB0aGlzLnByb3BzLmFkZEFuYWx5dGljc0V2ZW50KHtcbiAgICAgICAgYWN0aW9uOiAnU3dpdGNoSm91cm5leVN0YXJ0QW5kRW5kUG9pbnRPcmRlcicsXG4gICAgICAgIGNhdGVnb3J5OiAnSXRpbmVyYXJ5U2V0dGluZ3MnLFxuICAgICAgICBuYW1lOiBudWxsLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHsgdmlhUG9pbnRzIH0gPSB0aGlzLnByb3BzO1xuICAgIHZpYVBvaW50cy5yZXZlcnNlKCk7XG4gICAgdGhpcy5wcm9wcy5zd2FwT3JkZXIoKTtcbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgb3JpZ2luLFxuICAgICAgc2VhcmNoUGFuZWxUZXh0LFxuICAgICAgc2VhcmNoQ29udGV4dCxcbiAgICAgIGRpc2FibGVBdXRvRm9jdXMsXG4gICAgICB2aWFQb2ludHMsXG4gICAgICBvcmlnaW5Nb2JpbGVMYWJlbCxcbiAgICAgIGRlc3RpbmF0aW9uTW9iaWxlTGFiZWwsXG4gICAgICBmb250V2VpZ2h0cyxcbiAgICAgIG9uRm9jdXNDaGFuZ2UsXG4gICAgICBzaG93U3dhcENvbnRyb2wsXG4gICAgICBzaG93VmlhcG9pbnRDb250cm9sLFxuICAgIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHsgYWN0aXZlU2xhY2tJbnB1dHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3Qgc2xhY2tUaW1lID0gZ2V0U2xhY2tUaW1lT3B0aW9ucygpO1xuICAgIGNvbnN0IGRlZmF1bHRTbGFja1RpbWVWYWx1ZSA9IDA7XG4gICAgY29uc3QgZ2V0VmlhUG9pbnRTbGFja1RpbWVPckRlZmF1bHQgPSAoXG4gICAgICB2aWFQb2ludCxcbiAgICAgIGRlZmF1bHRWYWx1ZSA9IGRlZmF1bHRTbGFja1RpbWVWYWx1ZSxcbiAgICApID0+ICh2aWFQb2ludCAmJiB2aWFQb2ludC5sb2NhdGlvblNsYWNrKSB8fCBkZWZhdWx0VmFsdWU7XG4gICAgY29uc3QgaXNWaWFQb2ludFNsYWNrVGltZUlucHV0QWN0aXZlID0gaW5kZXggPT5cbiAgICAgIGFjdGl2ZVNsYWNrSW5wdXRzLmluY2x1ZGVzKGluZGV4KTtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2N4KFtcbiAgICAgICAgICBzdHlsZXNbJ2F1dG9zdWdnZXN0LXBhbmVsJ10sXG4gICAgICAgICAge1xuICAgICAgICAgICAgc21hbGw6IHRoaXMucHJvcHMuaXNNb2JpbGUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSl9XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgJy0tY29sb3InOiBgJHt0aGlzLnByb3BzLmNvbG9yfWAsXG4gICAgICAgICAgJy0tZm9udC13ZWlnaHQtbWVkaXVtJzogZm9udFdlaWdodHMubWVkaXVtLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7JyAnfVxuICAgICAgICB7c2VhcmNoUGFuZWxUZXh0ID8gKFxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8aDEgY2xhc3NOYW1lPXtzdHlsZXNbJ2F1dG9zdWdnZXN0LXNlYXJjaHBhbmVsLXRleHQnXX0+XG4gICAgICAgICAgICAgIHsnICd9XG4gICAgICAgICAgICAgIHtzZWFyY2hQYW5lbFRleHR9XG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snb3JpZ2luLWlucHV0LWNvbnRhaW5lciddfT5cbiAgICAgICAgICA8RFRBdXRvU3VnZ2VzdFxuICAgICAgICAgICAgYXBwRWxlbWVudD17dGhpcy5wcm9wcy5hcHBFbGVtZW50fVxuICAgICAgICAgICAgaWNvbj1cIm1hcE1hcmtlclwiXG4gICAgICAgICAgICBpZD1cIm9yaWdpblwiXG4gICAgICAgICAgICBhdXRvRm9jdXM9e1xuICAgICAgICAgICAgICBkaXNhYmxlQXV0b0ZvY3VzID09PSB0cnVlXG4gICAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICAgIDogIXRoaXMucHJvcHMuaXNNb2JpbGUgJiYgIW9yaWdpbi5sYXRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0b3JlUmVmPXt0aGlzLnN0b3JlUmVmZXJlbmNlfVxuICAgICAgICAgICAgcmVmUG9pbnQ9e3RoaXMucHJvcHMucmVmUG9pbnR9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2dldExvY2F0aW9uVHlwZShvcmlnaW4pfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3RoaXMucHJvcHMub3JpZ2luUGxhY2VIb2xkZXJ9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWUob3JpZ2luKX1cbiAgICAgICAgICAgIHNlYXJjaENvbnRleHQ9e3NlYXJjaENvbnRleHR9XG4gICAgICAgICAgICBnZXRBdXRvU3VnZ2VzdEljb25zPXt0aGlzLnByb3BzLmdldEF1dG9TdWdnZXN0SWNvbnN9XG4gICAgICAgICAgICBvblNlbGVjdD17dGhpcy5wcm9wcy5vblNlbGVjdH1cbiAgICAgICAgICAgIG9uQ2xlYXI9e3RoaXMucHJvcHMub25DbGVhcn1cbiAgICAgICAgICAgIGZvY3VzQ2hhbmdlPXtvbkZvY3VzQ2hhbmdlIHx8IHRoaXMuaGFuZGxlRm9jdXNDaGFuZ2V9XG4gICAgICAgICAgICBsYW5nPXt0aGlzLnByb3BzLmxhbmd9XG4gICAgICAgICAgICBzb3VyY2VzPXt0aGlzLnByb3BzLnNvdXJjZXN9XG4gICAgICAgICAgICB0YXJnZXRzPXt0aGlzLnByb3BzLnRhcmdldHN9XG4gICAgICAgICAgICBmaWx0ZXJSZXN1bHRzPXt0aGlzLnByb3BzLmZpbHRlclJlc3VsdHN9XG4gICAgICAgICAgICBpc01vYmlsZT17dGhpcy5wcm9wcy5pc01vYmlsZX1cbiAgICAgICAgICAgIGNvbG9yPXt0aGlzLnByb3BzLmNvbG9yfVxuICAgICAgICAgICAgaG92ZXJDb2xvcj17dGhpcy5wcm9wcy5ob3ZlckNvbG9yfVxuICAgICAgICAgICAgbW9iaWxlTGFiZWw9e29yaWdpbk1vYmlsZUxhYmVsfVxuICAgICAgICAgICAgZm9udFdlaWdodHM9e3RoaXMucHJvcHMuZm9udFdlaWdodHN9XG4gICAgICAgICAgICBtb2RlU2V0PXt0aGlzLnByb3BzLm1vZGVTZXR9XG4gICAgICAgICAgICBtb2RlSWNvbkNvbG9ycz17dGhpcy5wcm9wcy5tb2RlSWNvbkNvbG9yc31cbiAgICAgICAgICAgIHNob3dTY3JvbGw9e3RoaXMucHJvcHMuc2hvd1Njcm9sbH1cbiAgICAgICAgICAgIGlzRW1iZWRkZWQ9e3RoaXMucHJvcHMuaXNFbWJlZGRlZH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHsoc2hvd1N3YXBDb250cm9sIHx8IHNob3dWaWFwb2ludENvbnRyb2wpICYmIChcbiAgICAgICAgICAgIDxJdGluZXJhcnlTZWFyY2hDb250cm9sXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9wcG9zaXRlfVxuICAgICAgICAgICAgICBlbmFibGVkPXtzaG93U3dhcENvbnRyb2x9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHRoaXMuaGFuZGxlU3dhcE9yZGVyQ2xpY2soKX1cbiAgICAgICAgICAgICAgb25LZXlQcmVzcz17ZSA9PlxuICAgICAgICAgICAgICAgIGlzS2V5Ym9hcmRTZWxlY3Rpb25FdmVudChlKSAmJiB0aGlzLmhhbmRsZVN3YXBPcmRlckNsaWNrKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtpMThuZXh0LnQoJ3N3YXAtb3JkZXItYnV0dG9uLWxhYmVsJyl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxJY29uIGltZz1cIm9wcG9zaXRlXCIgY29sb3I9e3RoaXMucHJvcHMuY29sb3J9IC8+XG4gICAgICAgICAgICA8L0l0aW5lcmFyeVNlYXJjaENvbnRyb2w+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHt2aWFQb2ludHMubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydyZWN0YW5nbGUtY29udGFpbmVyJ119PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5yZWN0YW5nbGV9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICAgIDxSZWFjdFNvcnRhYmxlXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3ZpYXBvaW50cy1jb250YWluZXInXX1cbiAgICAgICAgICBsaXN0PXt2aWFQb2ludHN9XG4gICAgICAgICAgaGFuZGxlPXtgLiR7c3R5bGVzWyd2aWFwb2ludC1iZWZvcmUnXX1gfVxuICAgICAgICAgIGFuaW1hdGlvbj17MjAwfVxuICAgICAgICAgIHNldExpc3Q9e2l0ZW1zID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZpYVBvaW50cyA9IGl0ZW1zLmZpbHRlcih2cCA9PiAhaXNWaWFQb2ludEVtcHR5KHZwKSk7XG4gICAgICAgICAgICBpZiAobmV3VmlhUG9pbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgdGhpcy5wcm9wcy51cGRhdGVWaWFQb2ludHMobmV3VmlhUG9pbnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge3ZpYVBvaW50cy5tYXAoKG8sIGkpID0+IChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjeChzdHlsZXNbJ3ZpYXBvaW50LWNvbnRhaW5lciddKX1cbiAgICAgICAgICAgICAga2V5PXtgdmlhcG9pbnQtJHtpfWB9IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snbGlnaHQtZ3JheS1iYWNrZ3JvdW5kJ119PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMucm93fT5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3ZpYXBvaW50LWJlZm9yZSddfVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6ICdtb3ZlJyB9fVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJlbGxpcHNpc1wiIHJvdGF0ZT17OTB9IGNvbG9yPXt0aGlzLnByb3BzLmNvbG9yfSAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgICAgICAgICAgICAgICAgYCR7c3R5bGVzWyd2aWFwb2ludC1pbnB1dC1jb250YWluZXInXX0gJHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlc1tgdmlhcG9pbnQtJHtpICsgMX1gXVxuICAgICAgICAgICAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8RFRBdXRvU3VnZ2VzdFxuICAgICAgICAgICAgICAgICAgICAgIGFwcEVsZW1lbnQ9e3RoaXMucHJvcHMuYXBwRWxlbWVudH1cbiAgICAgICAgICAgICAgICAgICAgICBpY29uPVwibWFwTWFya2VyLXZpYVwiXG4gICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ2aWEtcG9pbnRcIlxuICAgICAgICAgICAgICAgICAgICAgIGFyaWFMYWJlbD17aTE4bmV4dC50KCd2aWEtcG9pbnQtaW5kZXgnLCB7IGluZGV4OiBpICsgMSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXM9e1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZUF1dG9Gb2N1cyA9PT0gdHJ1ZSA/IGZhbHNlIDogIXRoaXMucHJvcHMuaXNNb2JpbGVcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ2aWEtcG9pbnRcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInZpYXBvaW50XCJcbiAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hDb250ZXh0PXtzZWFyY2hDb250ZXh0fVxuICAgICAgICAgICAgICAgICAgICAgIHJlZlBvaW50PXt0aGlzLnByb3BzLnJlZlBvaW50fVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXsobyAmJiBvLmFkZHJlc3MpIHx8ICcnfVxuICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLnByb3BzLm9uU2VsZWN0fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xlYXI9e3RoaXMucHJvcHMub25DbGVhcn1cbiAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVWaWFQb2ludHM9e2l0ZW0gPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlVmlhUG9pbnRMb2NhdGlvblNlbGVjdGVkKGl0ZW0sIGkpXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGxhbmc9e3RoaXMucHJvcHMubGFuZ31cbiAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VzPXt0aGlzLnByb3BzLnNvdXJjZXN9XG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cz17dGhpcy5wcm9wcy50YXJnZXRzfVxuICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclJlc3VsdHM9e3RoaXMucHJvcHMuZmlsdGVyUmVzdWx0c31cbiAgICAgICAgICAgICAgICAgICAgICBnZXRBdXRvU3VnZ2VzdEljb25zPXt0aGlzLnByb3BzLmdldEF1dG9TdWdnZXN0SWNvbnN9XG4gICAgICAgICAgICAgICAgICAgICAgaXNNb2JpbGU9e3RoaXMucHJvcHMuaXNNb2JpbGV9XG4gICAgICAgICAgICAgICAgICAgICAgY29sb3I9e3RoaXMucHJvcHMuY29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgaG92ZXJDb2xvcj17dGhpcy5wcm9wcy5ob3ZlckNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHRzPXt0aGlzLnByb3BzLmZvbnRXZWlnaHRzfVxuICAgICAgICAgICAgICAgICAgICAgIG1vZGVTZXQ9e3RoaXMucHJvcHMubW9kZVNldH1cbiAgICAgICAgICAgICAgICAgICAgICBtb2RlSWNvbkNvbG9ycz17dGhpcy5wcm9wcy5tb2RlSWNvbkNvbG9yc31cbiAgICAgICAgICAgICAgICAgICAgICBzaG93U2Nyb2xsPXt0aGlzLnByb3BzLnNob3dTY3JvbGx9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxJdGluZXJhcnlTZWFyY2hDb250cm9sXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydhZGQtdmlhLXBvaW50LXNsYWNrJ119XG4gICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ9e3RoaXMucHJvcHMuc2hvd1ZpYXBvaW50Q29udHJvbH1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5oYW5kbGVUb2dnbGVWaWFQb2ludFNsYWNrQ2xpY2soaSl9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5UHJlc3M9e2UgPT5cbiAgICAgICAgICAgICAgICAgICAgICBpc0tleWJvYXJkU2VsZWN0aW9uRXZlbnQoZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVRvZ2dsZVZpYVBvaW50U2xhY2tDbGljayhpKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2kxOG5leHQudChcbiAgICAgICAgICAgICAgICAgICAgICBpc1ZpYVBvaW50U2xhY2tUaW1lSW5wdXRBY3RpdmUoaSlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ2FkZC12aWEtZHVyYXRpb24tYnV0dG9uLWxhYmVsLW9wZW4nXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdhZGQtdmlhLWR1cmF0aW9uLWJ1dHRvbi1sYWJlbC1jbG9zZScsXG4gICAgICAgICAgICAgICAgICAgICAgeyBpbmRleDogaSArIDEgfSxcbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgd2lkZVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJ0aW1lXCIgY29sb3I9e3RoaXMucHJvcHMuY29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICA8L0l0aW5lcmFyeVNlYXJjaENvbnRyb2w+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgeyFpc1ZpYVBvaW50U2xhY2tUaW1lSW5wdXRBY3RpdmUoaSkgJiZcbiAgICAgICAgICAgICAgICAgIHZpYVBvaW50c1tpXSAmJlxuICAgICAgICAgICAgICAgICAgdmlhUG9pbnRzW2ldLmxvY2F0aW9uU2xhY2sgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sndmlhcG9pbnQtc2xhY2stdGltZSddfVxuICAgICAgICAgICAgICAgICAgICA+e2Ake2kxOG5leHQudCgndmlhcG9pbnQtc2xhY2stYW1vdW50Jyl9OiAke2dldFNsYWNrRGlzcGxheShcbiAgICAgICAgICAgICAgICAgICAgICB2aWFQb2ludHNbaV0ubG9jYXRpb25TbGFjayxcbiAgICAgICAgICAgICAgICAgICAgKX1gfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjeChzdHlsZXNbJ2lucHV0LXZpYXBvaW50LXNsYWNrLWNvbnRhaW5lciddLCB7XG4gICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZDogIWlzVmlhUG9pbnRTbGFja1RpbWVJbnB1dEFjdGl2ZShpKSxcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ3NlbGVjdC13cmFwcGVyJ119PlxuICAgICAgICAgICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgaWQ9e2B2aWFwb2ludC1zbGFjay0ke2l9YH1cbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17aTE4bmV4dC50KCd2aWFwb2ludC1zbGFjay1hbW91bnQnKX1cbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPXtzbGFja1RpbWV9XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dldFZpYVBvaW50U2xhY2tUaW1lT3JEZWZhdWx0KHZpYVBvaW50c1tpXSl9XG4gICAgICAgICAgICAgICAgICAgICAgZ2V0RGlzcGxheT17Z2V0U2xhY2tEaXNwbGF5fVxuICAgICAgICAgICAgICAgICAgICAgIHZpYVBvaW50SW5kZXg9e2l9XG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj17XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlc1snY29tYm9ib3gtaWNvbiddfSAke3N0eWxlc1sndGltZS1pbnB1dC1pY29uJ119YH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb24gaW1nPVwidGltZVwiIGNvbG9yPXt0aGlzLnByb3BzLmNvbG9yfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvblNsYWNrVGltZVNlbGVjdGVkPXt0aGlzLmhhbmRsZVZpYVBvaW50U2xhY2tUaW1lU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxJdGluZXJhcnlTZWFyY2hDb250cm9sXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3JlbW92ZS12aWEtcG9pbnQnXX1cbiAgICAgICAgICAgICAgICBlbmFibGVkPXt0aGlzLnByb3BzLnNob3dWaWFwb2ludENvbnRyb2x9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5oYW5kbGVSZW1vdmVWaWFQb2ludENsaWNrKGkpfVxuICAgICAgICAgICAgICAgIG9uS2V5UHJlc3M9e2UgPT5cbiAgICAgICAgICAgICAgICAgIGlzS2V5Ym9hcmRTZWxlY3Rpb25FdmVudChlKSAmJlxuICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVSZW1vdmVWaWFQb2ludENsaWNrKGkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2kxOG5leHQudCgncmVtb3ZlLXZpYS1idXR0b24tbGFiZWwnLCB7XG4gICAgICAgICAgICAgICAgICBpbmRleDogaSArIDEsXG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8SWNvbiBpbWc9XCJjbG9zZVwiIGNvbG9yPXt0aGlzLnByb3BzLmNvbG9yfSAvPlxuICAgICAgICAgICAgICA8L0l0aW5lcmFyeVNlYXJjaENvbnRyb2w+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9SZWFjdFNvcnRhYmxlPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydkZXN0aW5hdGlvbi1pbnB1dC1jb250YWluZXInXX0+XG4gICAgICAgICAgPERUQXV0b1N1Z2dlc3RcbiAgICAgICAgICAgIGFwcEVsZW1lbnQ9e3RoaXMucHJvcHMuYXBwRWxlbWVudH1cbiAgICAgICAgICAgIGljb249XCJtYXBNYXJrZXJcIlxuICAgICAgICAgICAgaWQ9XCJkZXN0aW5hdGlvblwiXG4gICAgICAgICAgICBhdXRvRm9jdXM9e1xuICAgICAgICAgICAgICBkaXNhYmxlQXV0b0ZvY3VzID09PSB0cnVlXG4gICAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICAgIDogIXRoaXMucHJvcHMuaXNNb2JpbGUgJiYgIU51bWJlci5pc05hTihvcmlnaW4ubGF0KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RvcmVSZWY9e3RoaXMuc3RvcmVSZWZlcmVuY2V9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5kZXN0aW5hdGlvblBsYWNlSG9sZGVyfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMb2NhdGlvblR5cGUodGhpcy5wcm9wcy5kZXN0aW5hdGlvbil9XG4gICAgICAgICAgICBnZXRBdXRvU3VnZ2VzdEljb25zPXt0aGlzLnByb3BzLmdldEF1dG9TdWdnZXN0SWNvbnN9XG4gICAgICAgICAgICBzZWFyY2hDb250ZXh0PXtzZWFyY2hDb250ZXh0fVxuICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMucHJvcHMub25TZWxlY3R9XG4gICAgICAgICAgICBvbkNsZWFyPXt0aGlzLnByb3BzLm9uQ2xlYXJ9XG4gICAgICAgICAgICByZWZQb2ludD17dGhpcy5wcm9wcy5yZWZQb2ludH1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZSh0aGlzLnByb3BzLmRlc3RpbmF0aW9uKX1cbiAgICAgICAgICAgIGxhbmc9e3RoaXMucHJvcHMubGFuZ31cbiAgICAgICAgICAgIHNvdXJjZXM9e3RoaXMucHJvcHMuc291cmNlc31cbiAgICAgICAgICAgIHRhcmdldHM9e3RoaXMucHJvcHMudGFyZ2V0c31cbiAgICAgICAgICAgIGZpbHRlclJlc3VsdHM9e3RoaXMucHJvcHMuZmlsdGVyUmVzdWx0c31cbiAgICAgICAgICAgIGlzTW9iaWxlPXt0aGlzLnByb3BzLmlzTW9iaWxlfVxuICAgICAgICAgICAgY29sb3I9e3RoaXMucHJvcHMuY29sb3J9XG4gICAgICAgICAgICBob3ZlckNvbG9yPXt0aGlzLnByb3BzLmhvdmVyQ29sb3J9XG4gICAgICAgICAgICBtb2JpbGVMYWJlbD17ZGVzdGluYXRpb25Nb2JpbGVMYWJlbH1cbiAgICAgICAgICAgIGZvbnRXZWlnaHRzPXt0aGlzLnByb3BzLmZvbnRXZWlnaHRzfVxuICAgICAgICAgICAgbW9kZVNldD17dGhpcy5wcm9wcy5tb2RlU2V0fVxuICAgICAgICAgICAgbW9kZUljb25Db2xvcnM9e3RoaXMucHJvcHMubW9kZUljb25Db2xvcnN9XG4gICAgICAgICAgICBzaG93U2Nyb2xsPXt0aGlzLnByb3BzLnNob3dTY3JvbGx9XG4gICAgICAgICAgICBpc0VtYmVkZGVkPXt0aGlzLnByb3BzLmlzRW1iZWRkZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7KHNob3dTd2FwQ29udHJvbCB8fCBzaG93VmlhcG9pbnRDb250cm9sKSAmJiAoXG4gICAgICAgICAgICA8SXRpbmVyYXJ5U2VhcmNoQ29udHJvbFxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2N4KHN0eWxlc1snYWRkLXZpYS1wb2ludCddLCBzdHlsZXMubW9yZSwge1xuICAgICAgICAgICAgICAgIGNvbGxhcHNlZDogdmlhUG9pbnRzLmxlbmd0aCA+IDQsXG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICBlbmFibGVkPXtzaG93VmlhcG9pbnRDb250cm9sfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLmhhbmRsZUFkZFZpYVBvaW50Q2xpY2soKX1cbiAgICAgICAgICAgICAgb25LZXlQcmVzcz17ZSA9PlxuICAgICAgICAgICAgICAgIGlzS2V5Ym9hcmRTZWxlY3Rpb25FdmVudChlKSAmJiB0aGlzLmhhbmRsZUFkZFZpYVBvaW50Q2xpY2soKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2kxOG5leHQudCgnYWRkLXZpYS1idXR0b24tbGFiZWwnKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEljb25cbiAgICAgICAgICAgICAgICBpbWc9XCJ2aWFwb2ludFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9ezEuMjV9XG4gICAgICAgICAgICAgICAgaGVpZ2h0PXsxLjM3NX1cbiAgICAgICAgICAgICAgICBjb2xvcj17dGhpcy5wcm9wcy5jb2xvcn1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvSXRpbmVyYXJ5U2VhcmNoQ29udHJvbD5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRFRBdXRvc3VnZ2VzdFBhbmVsO1xuIl0sIm5hbWVzIjpbIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwic291cmNlIiwiZXhjbHVkZWQiLCJrZXkiLCJpIiwidGFyZ2V0Iiwic291cmNlS2V5cyIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJpbmRleE9mIiwic3R5bGVJbmplY3QiLCJjc3MiLCJyZWYiLCJpbnNlcnRBdCIsImRvY3VtZW50IiwiaGVhZCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwic3R5bGUiLCJjcmVhdGVFbGVtZW50IiwidHlwZSIsImZpcnN0Q2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJhcHBlbmRDaGlsZCIsInN0eWxlU2hlZXQiLCJjc3NUZXh0IiwiY3JlYXRlVGV4dE5vZGUiLCJTZWxlY3QiLCJ2YWx1ZSIsImdldERpc3BsYXkiLCJvcHRpb25zIiwib25TbGFja1RpbWVTZWxlY3RlZCIsInZpYVBvaW50SW5kZXgiLCJpZCIsImxhYmVsIiwiaWNvbiIsImRpc3BsYXlWYWx1ZSIsImNoYW5nZURpc3BsYXlWYWx1ZSIsInVzZVN0YXRlIiwib3BlbiIsImNoYW5nZU9wZW4iLCJ1c2VFZmZlY3QiLCJzY3JvbGxSZWYiLCJ1c2VSZWYiLCJzY3JvbGxJbmRleCIsIk1hdGgiLCJmbG9vciIsInVzZUxheW91dEVmZmVjdCIsImN1cnJlbnQiLCJzY3JvbGxUb3AiLCJpbnB1dElkIiwibGFiZWxJZCIsIlJlYWN0IiwiY2xhc3NOYW1lIiwic3R5bGVzIiwiaHRtbEZvciIsIkF1dG9zdWdnZXN0Iiwic3VnZ2VzdGlvbnMiLCJnZXRTdWdnZXN0aW9uVmFsdWUiLCJzIiwicmVuZGVyU3VnZ2VzdGlvbiIsImRpc3BsYXlOYW1lIiwib25TdWdnZXN0aW9uc0ZldGNoUmVxdWVzdGVkIiwic2hvdWxkUmVuZGVyU3VnZ2VzdGlvbnMiLCJmb2N1c0lucHV0T25TdWdnZXN0aW9uQ2xpY2siLCJvblN1Z2dlc3Rpb25zQ2xlYXJSZXF1ZXN0ZWQiLCJpbnB1dFByb3BzIiwib25DaGFuZ2UiLCJvbklucHV0Q2hhbmdlIiwiXyIsIm5ld1ZhbHVlIiwibWV0aG9kIiwib25Gb2N1cyIsIm9uQmx1ciIsInJlYWRPbmx5IiwicmVuZGVyU3VnZ2VzdGlvbnNDb250YWluZXIiLCJjb250YWluZXJQcm9wcyIsImNoaWxkcmVuIiwib3RoZXJSZWZzIiwiX2V4Y2x1ZGVkIiwiYXNzaWduIiwidGFiSW5kZXgiLCJlbGVtIiwidGhlbWUiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJudW1iZXIiLCJpc1JlcXVpcmVkIiwiZnVuYyIsImFycmF5T2YiLCJzaGFwZSIsInN0cmluZyIsIm5vZGUiLCJ0cmFuc2xhdGlvbnMiLCJkZSIsImVuIiwiZmkiLCJzdiIsImluaXQiLCJsbmciLCJmYWxsYmFja0xuZyIsImRlZmF1bHROUyIsImludGVycG9sYXRpb24iLCJlc2NhcGVWYWx1ZSIsImdldEVtcHR5VmlhUG9pbnRQbGFjZUhvbGRlciIsImlzVmlhUG9pbnRFbXB0eSIsInZpYVBvaW50IiwidW5kZWZpbmVkIiwiaXNFbXB0eSIsImluY2x1ZGVzIiwiSXRpbmVyYXJ5U2VhcmNoQ29udHJvbCIsIl9yZWYiLCJlbmFibGVkIiwib25DbGljayIsIm9uS2V5UHJlc3MiLCJ3aWRlIiwicmVzdCIsInJvbGUiLCJnZXRTbGFja0Rpc3BsYXkiLCJzbGFja0luU2Vjb25kcyIsImkxOG5leHQiLCJ0IiwidXBkYXRlVmlhUG9pbnRTbGFjayIsImFjdGl2ZVZpYVBvaW50U2xhY2tzIiwidXBkYXRlZFZpYVBvaW50SW5kZXgiLCJ2aWFQb2ludFJlbW92ZWQiLCJmb3VuZEF0SW5kZXgiLCJzcGxpY2UiLCJtYXAiLCJpc0tleWJvYXJkU2VsZWN0aW9uRXZlbnQiLCJldmVudCIsIndoaWNoIiwia2V5Q29kZSIsImNvbmNhdCIsInByZXZlbnREZWZhdWx0IiwibG9jYXRpb24iLCJhZGRyZXNzIiwiZ3BzIiwicmVhZHkiLCJnZXRMb2NhdGlvblR5cGUiLCJib29sIiwiRFRBdXRvc3VnZ2VzdFBhbmVsIiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN1cGVyIiwidGhpcyIsInN0b3JlUmVmZXJlbmNlIiwic2V0U3RhdGUiLCJwcmV2U3RhdGUiLCJyZWZzIiwiaGFuZGxlRm9jdXNDaGFuZ2UiLCJkZXN0aW5hdGlvbiIsInNldCIsInN0YXRlIiwiZm9jdXMiLCJ1cGRhdGVWaWFQb2ludHMiLCJ2aWFQb2ludHMiLCJmaWx0ZXIiLCJ2cCIsImhhbmRsZVRvZ2dsZVZpYVBvaW50U2xhY2tDbGljayIsImFjdGl2ZVNsYWNrSW5wdXRzIiwiaGFuZGxlVmlhUG9pbnRTbGFja1RpbWVTZWxlY3RlZCIsInNsYWNrVGltZUluU2Vjb25kcyIsImFkZEFuYWx5dGljc0V2ZW50IiwiYWN0aW9uIiwiY2F0ZWdvcnkiLCJuYW1lIiwibG9jYXRpb25TbGFjayIsIk51bWJlciIsInBhcnNlSW50IiwiaGFuZGxlVmlhUG9pbnRMb2NhdGlvblNlbGVjdGVkIiwidmlhUG9pbnRMb2NhdGlvbiIsImhhbmRsZVJlbW92ZVZpYVBvaW50Q2xpY2siLCJoYW5kbGVBZGRWaWFQb2ludENsaWNrIiwicHVzaCIsImhhbmRsZVN3YXBPcmRlckNsaWNrIiwicmV2ZXJzZSIsInN3YXBPcmRlciIsImZvckVhY2giLCJsYW5nIiwiYWRkUmVzb3VyY2VCdW5kbGUiLCJjb21wb25lbnREaWRNb3VudCIsImNoYW5nZUxhbmd1YWdlIiwiY29tcG9uZW50RGlkVXBkYXRlIiwibGFuZ3VhZ2UiLCJyZW5kZXIiLCJvcmlnaW4iLCJzZWFyY2hQYW5lbFRleHQiLCJzZWFyY2hDb250ZXh0IiwiZGlzYWJsZUF1dG9Gb2N1cyIsIm9yaWdpbk1vYmlsZUxhYmVsIiwiZGVzdGluYXRpb25Nb2JpbGVMYWJlbCIsImZvbnRXZWlnaHRzIiwib25Gb2N1c0NoYW5nZSIsInNob3dTd2FwQ29udHJvbCIsInNob3dWaWFwb2ludENvbnRyb2wiLCJzbGFja1RpbWUiLCJnZXRTbGFja1RpbWVPcHRpb25zIiwidGltZU9wdGlvbnMiLCJ2YWx1ZUluTWludXRlcyIsImdldFZpYVBvaW50U2xhY2tUaW1lT3JEZWZhdWx0IiwiZGVmYXVsdFZhbHVlIiwiaXNWaWFQb2ludFNsYWNrVGltZUlucHV0QWN0aXZlIiwiaW5kZXgiLCJjeCIsImlzTW9iaWxlIiwiY29sb3IiLCJtZWRpdW0iLCJEVEF1dG9TdWdnZXN0IiwiYXBwRWxlbWVudCIsImF1dG9Gb2N1cyIsImxhdCIsInN0b3JlUmVmIiwicmVmUG9pbnQiLCJwbGFjZWhvbGRlciIsIm9yaWdpblBsYWNlSG9sZGVyIiwiZ2V0QXV0b1N1Z2dlc3RJY29ucyIsIm9uU2VsZWN0Iiwib25DbGVhciIsImZvY3VzQ2hhbmdlIiwic291cmNlcyIsInRhcmdldHMiLCJmaWx0ZXJSZXN1bHRzIiwiaG92ZXJDb2xvciIsIm1vYmlsZUxhYmVsIiwibW9kZVNldCIsIm1vZGVJY29uQ29sb3JzIiwic2hvd1Njcm9sbCIsImlzRW1iZWRkZWQiLCJvcHBvc2l0ZSIsImUiLCJJY29uIiwiaW1nIiwicmVjdGFuZ2xlIiwiUmVhY3RTb3J0YWJsZSIsImxpc3QiLCJoYW5kbGUiLCJhbmltYXRpb24iLCJzZXRMaXN0IiwiaXRlbXMiLCJuZXdWaWFQb2ludHMiLCJvIiwicm93IiwiY3Vyc29yIiwicm90YXRlIiwiYXJpYUxhYmVsIiwiaGFuZGxlVmlhUG9pbnRzIiwiaXRlbSIsImlzTmFOIiwiZGVzdGluYXRpb25QbGFjZUhvbGRlciIsIm1vcmUiLCJ3aWR0aCIsImhlaWdodCIsImRlZmF1bHRQcm9wcyIsIm9iamVjdCIsImFueSJdLCJtYXBwaW5ncyI6IjBoQ0FBZSxTQUFTQSxFQUE4QkMsRUFBUUMsR0FDNUQsR0FBYyxNQUFWRCxFQUFnQixNQUFPLEdBQzNCLElBRUlFLEVBQUtDLEVBRkxDLEVBQVMsR0FDVEMsRUFBYUMsT0FBT0MsS0FBS1AsR0FFN0IsSUFBS0csRUFBSSxFQUFHQSxFQUFJRSxFQUFXRyxPQUFRTCxJQUNqQ0QsRUFBTUcsRUFBV0YsR0FDYkYsRUFBU1EsUUFBUVAsSUFBUSxJQUM3QkUsRUFBT0YsR0FBT0YsRUFBT0UsSUFFdkIsT0FBT0UsQ0FDVCxDQ1hBLFNBQVNNLEVBQVlDLEVBQUtDLFFBQ1gsSUFBUkEsSUFBaUJBLEVBQU0sSUFDNUIsSUFBSUMsRUFBV0QsRUFBSUMsU0FFbkIsR0FBS0YsR0FBMkIsb0JBQWJHLFNBQW5CLENBRUEsSUFBSUMsRUFBT0QsU0FBU0MsTUFBUUQsU0FBU0UscUJBQXFCLFFBQVEsR0FDOURDLEVBQVFILFNBQVNJLGNBQWMsU0FDbkNELEVBQU1FLEtBQU8sV0FFSSxRQUFiTixHQUNFRSxFQUFLSyxXQUNQTCxFQUFLTSxhQUFhSixF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
package/lib/index.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("classnames"),require("prop-types"),require("react"),require("react-sortablejs"),require("i18next"),require("@digitransit-component/digitransit-component-autosuggest"),require("@digitransit-component/digitransit-component-icon"),require("lodash/isEmpty"),require("react-autosuggest")):"function"==typeof define&&define.amd?define(["exports","classnames","prop-types","react","react-sortablejs","i18next","@digitransit-component/digitransit-component-autosuggest","@digitransit-component/digitransit-component-icon","lodash/isEmpty","react-autosuggest"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-autosuggest-panel"]={},e.cx,e.PropTypes,e.React,e.reactSortablejs,e.i18next,e.DTAutosuggest,e.Icon,e.isEmpty,e.Autosuggest)}(this,(function(e,t,n,i,o,s,a,l,r,c){"use strict";function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=p(t),u=p(n),_=p(i),h=p(s),g=p(a),f=p(l),y=p(r),v=p(c);function m(e,t){if(null==e)return{};var n,i,o={},s=Object.keys(e);for(i=0;i<s.length;i++)n=s[i],t.indexOf(n)>=0||(o[n]=e[n]);return o}function b(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var x={"combobox-container":"select_combobox-container__0lRpm","left-column":"select_left-column__cSrMR","combobox-label":"select_combobox-label__F9Ayd",container:"select_container__yrA-N",suggestion:"select_suggestion__b05iD",suggestionHighlighted:"select_suggestionHighlighted__ZFPWo",suggestionsContainerOpen:"select_suggestionsContainerOpen__9wcJ5",input:"select_input__pK5vk"};b(".select_combobox-container__0lRpm {\n background-color: #fff;\n border: solid #888888 1px;\n display: flex;\n align-items: center;\n border-radius: 5px;\n height: 50px;\n justify-content: space-between;\n flex-grow: 1; }\n .select_combobox-container__0lRpm:focus-within {\n border-color: #007ac9; }\n .select_combobox-container__0lRpm .select_left-column__cSrMR {\n display: flex;\n flex-direction: column;\n width: 100%; }\n\n.select_combobox-label__F9Ayd {\n font-size: 12px;\n line-height: 20px;\n color: #666666;\n letter-spacing: -0.48px;\n margin-left: 12px;\n margin-top: 4px; }\n\n.select_container__yrA-N {\n position: relative; }\n .select_container__yrA-N .select_suggestion__b05iD {\n font-size: 15px;\n line-height: 49px;\n height: 50px;\n padding: 0 0 0 12px;\n letter-spacing: -0.6px;\n color: #333333;\n font-weight: 500; }\n .select_container__yrA-N .select_suggestionHighlighted__ZFPWo {\n font-size: 15px;\n font-weight: 500;\n background: #F4F4F5; }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 {\n position: absolute;\n background-color: #fff;\n z-index: 20;\n max-height: 250px;\n overflow-x: hidden;\n overflow-y: scroll;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid;\n top: 35px;\n width: calc(100% + 45px); }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 ul {\n padding: 0;\n margin: 0; }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 li:not(:last-child) {\n border-bottom: 1px solid #ddd; }\n .select_container__yrA-N .select_input__pK5vk {\n -webkit-appearance: none;\n appearance: none;\n margin: -4px 0 0 0;\n padding-left: 12px;\n border: none;\n height: 26px;\n background: #fff;\n font-weight: 500;\n box-shadow: none;\n font-size: 15px;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.6px;\n color: #333333; }\n .select_container__yrA-N .select_input__pK5vk:focus {\n outline: none;\n border: none;\n box-shadow: none;\n background: #fff; }\n .select_container__yrA-N .select_input__pK5vk:read-only {\n cursor: pointer;\n background: #fff; }\n");const k=["ref"],S=({value:e,getDisplay:t,options:n,onSlackTimeSelected:o,viaPointIndex:s,id:a,label:l,icon:r})=>{const[c,p]=i.useState(t(e)),[d,u]=i.useState(!1);i.useEffect((()=>p(t(e))),[e]);const h=i.useRef(null),g=Math.floor(e/600);i.useLayoutEffect((()=>{d&&h.current&&(h.current.scrollTop=50*g)}),[e,d]);const f=`${a}-input`,y=`${a}-label`;return _.default.createElement(_.default.Fragment,null,_.default.createElement("label",{className:x["combobox-container"],htmlFor:f},_.default.createElement("span",{className:x["left-column"]},_.default.createElement("span",{className:x["combobox-label"],id:y},l),_.default.createElement(v.default,{id:a,suggestions:n,getSuggestionValue:e=>e.value,renderSuggestion:e=>e.displayName,onSuggestionsFetchRequested:()=>null,shouldRenderSuggestions:()=>!0,focusInputOnSuggestionClick:!1,onSuggestionsClearRequested:()=>null,inputProps:{value:c,onChange:(t,{newValue:n,method:i})=>{switch(i){case"enter":case"click":o(n,s);break;case"escape":p(e)}},onFocus:()=>{u(!0)},onBlur:()=>{u(!1)},id:f,"aria-labelledby":y,"aria-autocomplete":"none",readOnly:!0},renderSuggestionsContainer:({containerProps:e,children:t})=>{const{ref:n}=e,i=m(e,k);return _.default.createElement("div",Object.assign({tabIndex:"-1"},i,{ref:e=>{e&&(h.current=e,n(e))}}),t)},theme:x})),r))};"production"!==process.env.NODE_ENV&&(S.propTypes={value:u.default.number.isRequired,onSlackTimeSelected:u.default.func.isRequired,getDisplay:u.default.func.isRequired,options:u.default.arrayOf(u.default.shape({displayName:u.default.string.isRequired,value:u.default.number.isRequired}).isRequired).isRequired,id:u.default.string.isRequired,label:u.default.node.isRequired,icon:u.default.node.isRequired,viaPointIndex:u.default.number.isRequired});const w={de:{"add-via-button-label":"Füge Zwischenziel hinzu","add-via-duration-button-label":"Setze Umsteigezeit für Zwischenziel {{index}}","add-via-duration-button-label-close":"Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}","add-via-duration-button-label-open":"Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}","minute-short":"min","remove-via-button-label":"Entferne Zwischenziel {{index}}","swap-order-button-label":"Tausche Start mit Ziel","via-point":"Zwischenziel","via-point-index":"Zwischenziel {{index}}","viapoint-slack-amount":"Umsteigezeit"},en:{"add-via-button-label":"Add via point","add-via-duration-button-label":"Set stop duration at via point {{index}}","add-via-duration-button-label-close":"Close stop duration selector at via point {{index}}","add-via-duration-button-label-open":"Open stop duration selector at via point {{index}}","minute-short":"min","remove-via-button-label":"Remove via point {{index}}","swap-order-button-label":"Reverse origin and destination","via-point":"Via point","via-point-index":"Via point {{index}}","viapoint-slack-amount":"Stop duration"},fi:{"add-via-button-label":"Lisää välipiste","add-via-duration-button-label":"Aseta välipisteelle {{index}} pysähdyksen kesto","add-via-duration-button-label-close":"Avaa välipisteen {{index}} pysähdyksen kesto valitsin","add-via-duration-button-label-open":"Sulje välipisteen {{index}} pysähdyksen kesto valitsin","minute-short":"min","remove-via-button-label":"Poista välipiste {{index}}","swap-order-button-label":"Käännä reitin suunta vastakkaiseksi","via-point":"Välipiste","via-point-index":"Välipiste {{index}}","viapoint-slack-amount":"Pysähdyksen kesto"},sv:{"add-via-button-label":"Lägg till viapunkt","add-via-duration-button-label":"Ställ in varaktighet för viapunkten {{index}}","add-via-duration-button-label-close":"Stäng väljaren för varaktighet vid via-punkten {{index}}","add-via-duration-button-label-open":"Öppna väljaren för varaktighet vid via-punkten {{index}}","minute-short":"min","remove-via-button-label":"Ta bort viapunkt {{index}}","swap-order-button-label":"Sväng ruttens riktning till den motsatta","via-point":"Via punkt","via-point-index":"Via punkt {{index}}","viapoint-slack-amount":"Stoppets varaktighet"}};var E={"autosuggest-panel":"styles_autosuggest-panel__meNwd","autosuggest-searchpanel-text":"styles_autosuggest-searchpanel-text__-VQTg","origin-input-container":"styles_origin-input-container__p4Qik","destination-input-container":"styles_destination-input-container__jBY4I",row:"styles_row__1GhCD","viapoints-container":"styles_viapoints-container__FYp7K","viapoint-container":"styles_viapoint-container__8yh1M","light-gray-background":"styles_light-gray-background__4fyZs","viapoint-before":"styles_viapoint-before__t4saF","viapoint-input-container":"styles_viapoint-input-container__uZx95","viapoint-1":"styles_viapoint-1__8Mna8",viapoint:"styles_viapoint__vUO9L","viapoint-2":"styles_viapoint-2__-OoUa","viapoint-3":"styles_viapoint-3__vvivE","viapoint-4":"styles_viapoint-4__jS9k1","viapoint-5":"styles_viapoint-5__J4V5N","viapoint-slack-time":"styles_viapoint-slack-time__Xpo0G","select-wrapper":"styles_select-wrapper__1usZw","via-point-button-container":"styles_via-point-button-container__cI2JI","input-viapoint-slack-container":"styles_input-viapoint-slack-container__TNgVy","itinerary-search-control":"styles_itinerary-search-control__cEL1X",opposite:"styles_opposite__zQQhd","add-via-point":"styles_add-via-point__E-gGB","add-via-point-slack":"styles_add-via-point-slack__GKjFf","remove-via-point":"styles_remove-via-point__e9DMQ","combobox-icon":"styles_combobox-icon__d3k1e","time-input-icon":"styles_time-input-icon__M8dmw","rectangle-container":"styles_rectangle-container__AdbAA",rectangle:"styles_rectangle__1IO7E","search-panel-whitespace":"styles_search-panel-whitespace__Luhwx"};b("/* stylelint-disable */\n.styles_autosuggest-panel__meNwd {\n width: 100%; }\n\n.styles_autosuggest-searchpanel-text__-VQTg {\n font-size: 24px;\n font-weight: var(--font-weight-medium);\n letter-spacing: -0.8px;\n color: #333333;\n line-height: 1;\n margin-bottom: 17px;\n margin-top: unset; }\n @media screen and (min-width: 768px) {\n .styles_autosuggest-searchpanel-text__-VQTg {\n letter-spacing: -0.8px;\n line-height: 27px;\n margin-bottom: 21px; } }\n\n.styles_origin-input-container__p4Qik,\n.styles_destination-input-container__jBY4I {\n display: flex;\n flex: 1 0 100%; }\n .styles_origin-input-container__p4Qik input[type='text'],\n .styles_destination-input-container__jBY4I input[type='text'] {\n margin: 0; }\n\n.styles_row__1GhCD {\n display: flex;\n flex-direction: row; }\n\n.styles_viapoints-container__FYp7K {\n display: flex;\n flex-direction: column; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M {\n display: flex;\n flex: 1 0 100%;\n min-height: 50px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:first-child {\n margin-top: 6px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:not(:first-child) {\n margin-top: 3px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:last-child {\n margin-bottom: 6px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs {\n display: flex;\n padding: 3px 0;\n flex-direction: column;\n background: #f4f4f5;\n border-radius: 5px;\n width: 100%; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF {\n display: flex;\n min-width: 27px;\n justify-content: center;\n align-items: center; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF svg {\n fill: #888;\n height: 20px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 {\n display: flex;\n align-items: center;\n width: 100%; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 input[type='text'] {\n margin: 0; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-1__8Mna8 > div.styles_viapoint__vUO9L {\n z-index: 15; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-2__-OoUa > div.styles_viapoint__vUO9L {\n z-index: 14; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-3__vvivE > div.styles_viapoint__vUO9L {\n z-index: 13; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-4__jS9k1 > div.styles_viapoint__vUO9L {\n z-index: 12; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-5__J4V5N > div.styles_viapoint__vUO9L {\n z-index: 11; }\n\n.styles_viapoint-slack-time__Xpo0G {\n font-size: 13px;\n font-weight: normal;\n letter-spacing: -0.36px;\n color: #333333;\n padding-left: 27px;\n padding-top: 12px;\n padding-bottom: 10px; }\n\n.styles_select-wrapper__1usZw {\n display: flex;\n height: 50px;\n margin-top: 9px;\n padding-left: 27px;\n padding-right: 47px; }\n\n.styles_via-point-button-container__cI2JI {\n display: flex; }\n .styles_via-point-button-container__cI2JI > div:nth-child(1) {\n order: 1;\n border-left: none; }\n .styles_via-point-button-container__cI2JI > div:nth-child(2) {\n order: 2;\n border-left: 1px solid rgba(151, 151, 151, 0.2); }\n\n.styles_input-viapoint-slack-container__TNgVy {\n display: flex;\n flex-direction: column; }\n\n.styles_itinerary-search-control__cEL1X {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n max-height: 50px;\n min-width: var(--width); }\n .styles_itinerary-search-control__cEL1X + .styles_itinerary-search-control__cEL1X {\n border-left: 1px solid rgba(151, 151, 151, 0.2); }\n .styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd svg {\n width: 19px;\n height: 17px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB svg {\n width: 20px;\n height: 22px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 47px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf svg {\n width: 18px;\n height: 19px; }\n .styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n max-height: 44px;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ svg {\n width: 14px;\n height: 14px; }\n\n.styles_combobox-icon__d3k1e {\n color: var(--color);\n border-left: solid #888888 1px;\n height: 35px; }\n .styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw {\n padding: 9px 13px 0 13px; }\n .styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw svg {\n width: 18px;\n height: 19px; }\n\n.styles_rectangle-container__AdbAA {\n display: block;\n position: relative;\n height: 9px;\n z-index: 19; }\n .styles_rectangle-container__AdbAA .styles_rectangle__1IO7E {\n position: absolute;\n width: 4px;\n height: 21px;\n border-radius: 2px;\n background-color: #dddddd;\n margin-left: 25px;\n margin-top: -5px; }\n\n.styles_search-panel-whitespace__Luhwx {\n min-width: 40px; }\n");const C=["children","className","enabled","onClick","onKeyPress","wide"];h.default.init({lng:"fi",fallbackLng:"fi",defaultNS:"translation",interpolation:{escapeValue:!1}});const P=()=>({}),N=e=>{if(void 0===e||y.default(e))return!0;const t=Object.keys(e);return 1===t.length||2===t.length&&t.includes("locationSlack")},V=e=>{let{children:t,className:n,enabled:i,onClick:o,onKeyPress:s,wide:a}=e,l=m(e,C);return _.default.createElement("div",{className:E["itinerary-search-control"],style:{"--width":a?"47px":"40px"}},o&&i&&_.default.createElement("div",Object.assign({},l,{className:n,onClick:o,onKeyPress:s,role:"button",tabIndex:"0"}),t))};"production"!==process.env.NODE_ENV&&(V.propTypes={children:u.default.node,className:u.default.string.isRequired,enabled:u.default.bool.isRequired,onClick:u.default.func.isRequired,onKeyPress:u.default.func.isRequired,wide:u.default.bool});class A extends _.default.Component{constructor(e){super(e),this.componentDidMount=()=>{h.default.changeLanguage(this.props.lang)},this.componentDidUpdate=()=>{h.default.language!==this.props.lang&&h.default.changeLanguage(this.props.lang)},this.getSlackTimeOptions=()=>{const e=[];for(let t=0;t<=9;t++){const n=10*t;e.push({displayName:`${n} ${h.default.t("minute-short")}`,value:60*n})}return e},this.setDraggableViaPointRef=(e,t)=>{this.draggableViaPoints[t]=e},this.storeReference=e=>{this.setState((t=>({refs:[...t.refs,e]})))},this.handleFocusChange=()=>{const{destination:e}=this.props;e&&e.set||this.state.refs[1].focus()},this.isKeyboardSelectionEvent=e=>{const t=e&&(e.key||e.which||e.keyCode)||"";return!(!t||![13," ","Spacebar"].concat([32,"Enter"]).includes(t))&&(e.preventDefault(),!0)},this.value=e=>e&&e.address||e&&e.gps&&e.ready&&"Nykyinen sijainti"||"",this.class=e=>e&&!0===e.gps?"position":"location",this.updateViaPoints=e=>{0!==e.length?this.props.updateViaPoints(e.filter((e=>!N(e)))):this.props.updateViaPoints([])},this.updateViaPointSlack=(e,t,n=!1)=>{const i=e.indexOf(t);return i>-1&&e.splice(i,1),n?e.map((e=>e>t?e-1:e)):e},this.handleToggleViaPointSlackClick=e=>{const{activeSlackInputs:t}=this.state;this.setState({activeSlackInputs:t.includes(e)?this.updateViaPointSlack(t,e):t.concat([e])})},this.handleViaPointSlackTimeSelected=(e,t)=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"EditViaPointStopDuration",category:"ItinerarySettings",name:e/60});const{viaPoints:n}=this.props;n[t].locationSlack=Number.parseInt(e,10),this.updateViaPoints(n)},this.handleViaPointLocationSelected=(e,t)=>{this.props.handleViaPointLocationSelected(e,t)},this.handleRemoveViaPointClick=e=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"RemoveJourneyViaPoint",category:"ItinerarySettings",name:null});const{activeSlackInputs:t}=this.state,{viaPoints:n}=this.props;n.splice(e,1),this.setState({activeSlackInputs:this.updateViaPointSlack(t,e,!0)},(()=>this.updateViaPoints(n)))},this.handleAddViaPointClick=()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"AddJourneyViaPoint",category:"ItinerarySettings",name:"QuickSettingsButton"});const{viaPoints:e}=this.props;e.push({}),this.setState(this.state)},this.handleSwapOrderClick=()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"SwitchJourneyStartAndEndPointOrder",category:"ItinerarySettings",name:null});const{viaPoints:e}=this.props;e.reverse(),this.props.swapOrder()},this.getSlackDisplay=e=>`${e/60} ${h.default.t("minute-short")}`,this.render=()=>{const{origin:e,searchPanelText:t,searchContext:n,disableAutoFocus:i,viaPoints:s,originMobileLabel:a,destinationMobileLabel:l,fontWeights:r,onFocusChange:c,showSwapControl:p,showViapointControl:u}=this.props,{activeSlackInputs:y}=this.state,v=this.getSlackTimeOptions(),m=(e,t=0)=>e&&e.locationSlack||t,b=e=>y.includes(e);return _.default.createElement("div",{className:d.default(E["autosuggest-panel"],this.props.isMobile&&"small"),style:{"--color":`${this.props.color}`,"--font-weight-medium":r.medium}}," ",t?_.default.createElement("div",null,_.default.createElement("h1",{className:E["autosuggest-searchpanel-text"]}," ",t)):null,_.default.createElement("div",{className:E["origin-input-container"]},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"origin",autoFocus:!0!==i&&(!this.props.isMobile&&!e.lat),storeRef:this.storeReference,refPoint:this.props.refPoint,className:this.class(e),placeholder:this.props.originPlaceHolder,value:this.value(e),searchContext:n,getAutoSuggestIcons:this.props.getAutoSuggestIcons,onSelect:this.props.onSelect,onClear:this.props.onClear,focusChange:c||this.handleFocusChange,lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,mobileLabel:a,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(p||u)&&_.default.createElement(V,{className:E.opposite,enabled:p,onClick:()=>this.handleSwapOrderClick(),onKeyPress:e=>this.isKeyboardSelectionEvent(e)&&this.handleSwapOrderClick(),"aria-label":h.default.t("swap-order-button-label")},_.default.createElement(f.default,{img:"opposite",color:this.props.color}))),0===s.length&&_.default.createElement("div",{className:E["rectangle-container"]},_.default.createElement("div",{className:E.rectangle})),_.default.createElement(o.ReactSortable,{className:E["viapoints-container"],list:s,handle:`.${E["viapoint-before"]}`,animation:200,setList:e=>{const t=e.filter((e=>!N(e)));t.length>0&&this.props.updateViaPoints(t)}},s.map(((e,t)=>_.default.createElement("div",{className:d.default(E["viapoint-container"]),key:`viapoint-${t}`},_.default.createElement("div",{className:E["light-gray-background"]},_.default.createElement("div",{className:E.row},_.default.createElement("div",{className:E["viapoint-before"],style:{cursor:"move"}},_.default.createElement(f.default,{img:"ellipsis",rotate:90,color:this.props.color})),_.default.createElement("div",{className:`${E["viapoint-input-container"]} ${E[`viapoint-${t+1}`]}`},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker-via",id:"via-point",ariaLabel:h.default.t("via-point-index",{index:t+1}),autoFocus:!0!==i&&!this.props.isMobile,placeholder:"via-point",className:"viapoint",searchContext:n,refPoint:this.props.refPoint,value:e&&e.address||"",onSelect:this.props.onSelect,onClear:this.props.onClear,handleViaPoints:e=>this.handleViaPointLocationSelected(e,t),lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,getAutoSuggestIcons:this.props.getAutoSuggestIcons,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll})),_.default.createElement(V,{className:E["add-via-point-slack"],enabled:this.props.showViapointControl,onClick:()=>this.handleToggleViaPointSlackClick(t),onKeyPress:e=>this.isKeyboardSelectionEvent(e)&&this.handleToggleViaPointSlackClick(t),"aria-label":h.default.t(b(t)?"add-via-duration-button-label-open":"add-via-duration-button-label-close",{index:t+1}),wide:!0},_.default.createElement(f.default,{img:"time",color:this.props.color}))),!b(t)&&s[t]&&s[t].locationSlack>0&&_.default.createElement("span",{className:E["viapoint-slack-time"]},`${h.default.t("viapoint-slack-amount")}: ${this.getSlackDisplay(s[t].locationSlack)}`),_.default.createElement("div",{className:d.default(E["input-viapoint-slack-container"],!b(t)&&"collapsed")},_.default.createElement("div",{className:E["select-wrapper"]},_.default.createElement(S,{id:`viapoint-slack-${t}`,label:h.default.t("viapoint-slack-amount"),options:v,value:m(s[t]),getDisplay:this.getSlackDisplay,viaPointIndex:t,icon:_.default.createElement("span",{className:`${E["combobox-icon"]} ${E["time-input-icon"]}`},_.default.createElement(f.default,{img:"time",color:this.props.color})),onSlackTimeSelected:this.handleViaPointSlackTimeSelected})))),_.default.createElement(V,{className:E["remove-via-point"],enabled:this.props.showViapointControl,onClick:()=>this.handleRemoveViaPointClick(t),onKeyPress:e=>this.isKeyboardSelectionEvent(e)&&this.handleRemoveViaPointClick(t),"aria-label":h.default.t("remove-via-button-label",{index:t+1})},_.default.createElement(f.default,{img:"close",color:this.props.color})))))),_.default.createElement("div",{className:E["destination-input-container"]},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"destination",autoFocus:!0!==i&&(!this.props.isMobile&&!Number.isNaN(e.lat)),storeRef:this.storeReference,placeholder:this.props.destinationPlaceHolder,className:this.class(this.props.destination),getAutoSuggestIcons:this.props.getAutoSuggestIcons,searchContext:n,onSelect:this.props.onSelect,onClear:this.props.onClear,refPoint:this.props.refPoint,value:this.value(this.props.destination),lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,mobileLabel:l,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(p||u)&&_.default.createElement(V,{className:d.default(E["add-via-point"],E.more,s.length>4&&"collapsed"),enabled:u,onClick:()=>this.handleAddViaPointClick(),onKeyPress:e=>this.isKeyboardSelectionEvent(e)&&this.handleAddViaPointClick(),"aria-label":h.default.t("add-via-button-label")},_.default.createElement(f.default,{img:"viapoint",width:1.25,height:1.375,color:this.props.color}))))},this.draggableViaPoints=[],this.state={activeSlackInputs:[],refs:[]},Object.keys(w).forEach((e=>{h.default.addResourceBundle(e,"translation",w[e])}))}}A.defaultProps={viaPoints:[],originPlaceHolder:"give-origin",destinationPlaceHolder:"give-destination",swapOrder:void 0,updateViaPoints:()=>{},lang:"fi",sources:[],targets:[],filterResults:void 0,disableAutoFocus:!1,isMobile:!1,handleViaPointLocationSelected:void 0,color:"#007ac9",hoverColor:"#0062a1",originMobileLabel:null,destinationMobileLabel:null,modeSet:void 0,modeIconColors:void 0,fontWeights:{medium:500},showScroll:!1,onFocusChange:void 0,isEmbedded:!1,showSwapControl:!1,showViapointControl:!1},"production"!==process.env.NODE_ENV&&(A.propTypes={appElement:u.default.string.isRequired,origin:u.default.object.isRequired,destination:u.default.object.isRequired,originPlaceHolder:u.default.string,destinationPlaceHolder:u.default.string,viaPoints:u.default.arrayOf(u.default.object),updateViaPoints:u.default.func,handleViaPointLocationSelected:u.default.func,swapOrder:u.default.func,searchPanelText:u.default.string,searchContext:u.default.any.isRequired,onSelect:u.default.func,onClear:u.default.func,addAnalyticsEvent:u.default.func,lang:u.default.string,disableAutoFocus:u.default.bool,sources:u.default.arrayOf(u.default.string),targets:u.default.arrayOf(u.default.string),filterResults:u.default.func,isMobile:u.default.bool,color:u.default.string,hoverColor:u.default.string,originMobileLabel:u.default.string,destinationMobileLabel:u.default.string,refPoint:u.default.object,modeSet:u.default.string,modeIconColors:u.default.object,getAutoSuggestIcons:u.default.object,fontWeights:u.default.shape({medium:u.default.number}),showScroll:u.default.bool,onFocusChange:u.default.func,isEmbedded:u.default.bool,showSwapControl:u.default.bool,showViapointControl:u.default.bool}),e.default=A,e.getEmptyViaPointPlaceHolder=P,Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("classnames"),require("prop-types"),require("react"),require("react-sortablejs"),require("i18next"),require("@digitransit-component/digitransit-component-autosuggest"),require("@digitransit-component/digitransit-component-icon"),require("lodash/isEmpty"),require("react-autosuggest")):"function"==typeof define&&define.amd?define(["exports","classnames","prop-types","react","react-sortablejs","i18next","@digitransit-component/digitransit-component-autosuggest","@digitransit-component/digitransit-component-icon","lodash/isEmpty","react-autosuggest"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@digitransit-component/digitransit-component-autosuggest-panel"]={},e.cx,e.PropTypes,e.React,e.reactSortablejs,e.i18next,e.DTAutosuggest,e.Icon,e.isEmpty,e.Autosuggest)}(this,(function(e,t,n,i,o,s,a,l,r,c){"use strict";function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=p(t),u=p(n),_=p(i),h=p(s),g=p(a),f=p(l),y=p(r),v=p(c);function m(e,t){if(null==e)return{};var n,i,o={},s=Object.keys(e);for(i=0;i<s.length;i++)n=s[i],t.indexOf(n)>=0||(o[n]=e[n]);return o}function b(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&i.firstChild?i.insertBefore(o,i.firstChild):i.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var x={"combobox-container":"select_combobox-container__0lRpm","left-column":"select_left-column__cSrMR","combobox-label":"select_combobox-label__F9Ayd",container:"select_container__yrA-N",suggestion:"select_suggestion__b05iD",suggestionHighlighted:"select_suggestionHighlighted__ZFPWo",suggestionsContainerOpen:"select_suggestionsContainerOpen__9wcJ5",input:"select_input__pK5vk"};b(".select_combobox-container__0lRpm {\n background-color: #fff;\n border: solid #888 1px;\n display: flex;\n align-items: center;\n border-radius: 5px;\n height: 50px;\n justify-content: space-between;\n flex-grow: 1; }\n .select_combobox-container__0lRpm:focus-within {\n border-color: #007ac9; }\n .select_combobox-container__0lRpm .select_left-column__cSrMR {\n display: flex;\n flex-direction: column;\n width: 100%; }\n\n.select_combobox-label__F9Ayd {\n font-size: 12px;\n line-height: 20px;\n color: #666;\n letter-spacing: -0.48px;\n margin-left: 12px;\n margin-top: 4px; }\n\n.select_container__yrA-N {\n position: relative; }\n .select_container__yrA-N .select_suggestion__b05iD {\n font-size: 15px;\n line-height: 49px;\n height: 50px;\n padding: 0 0 0 12px;\n letter-spacing: -0.6px;\n color: #333;\n font-weight: 500; }\n .select_container__yrA-N .select_suggestionHighlighted__ZFPWo {\n font-size: 15px;\n font-weight: 500;\n background: #f4f4f5; }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 {\n position: absolute;\n background-color: #fff;\n z-index: 20;\n max-height: 250px;\n overflow-x: hidden;\n overflow-y: scroll;\n border-radius: 5px;\n box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.06);\n border: 1px rgba(0, 0, 0, 0.1) solid;\n top: 35px;\n width: calc(100% + 45px); }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 ul {\n padding: 0;\n margin: 0; }\n .select_container__yrA-N .select_suggestionsContainerOpen__9wcJ5 li:not(:last-child) {\n border-bottom: 1px solid #ddd; }\n .select_container__yrA-N .select_input__pK5vk {\n -webkit-appearance: none;\n appearance: none;\n margin: -4px 0 0 0;\n padding-left: 12px;\n border: none;\n height: 26px;\n background: #fff;\n font-weight: 500;\n box-shadow: none;\n font-size: 15px;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: -0.6px;\n color: #333; }\n .select_container__yrA-N .select_input__pK5vk:focus {\n outline: none;\n border: none;\n box-shadow: none;\n background: #fff; }\n .select_container__yrA-N .select_input__pK5vk:read-only {\n cursor: pointer;\n background: #fff; }\n");const k=["ref"],w=({value:e,getDisplay:t,options:n,onSlackTimeSelected:o,viaPointIndex:s,id:a,label:l,icon:r})=>{const[c,p]=i.useState(t(e)),[d,u]=i.useState(!1);i.useEffect((()=>p(t(e))),[e]);const h=i.useRef(null),g=Math.floor(e/600);i.useLayoutEffect((()=>{d&&h.current&&(h.current.scrollTop=50*g)}),[e,d]);const f=`${a}-input`,y=`${a}-label`;return _.default.createElement("label",{className:x["combobox-container"],htmlFor:f},_.default.createElement("span",{className:x["left-column"]},_.default.createElement("span",{className:x["combobox-label"],id:y},l),_.default.createElement(v.default,{id:a,suggestions:n,getSuggestionValue:e=>e.value,renderSuggestion:e=>e.displayName,onSuggestionsFetchRequested:()=>null,shouldRenderSuggestions:()=>!0,focusInputOnSuggestionClick:!1,onSuggestionsClearRequested:()=>null,inputProps:{value:c,onChange:(t,{newValue:n,method:i})=>{switch(i){case"enter":case"click":o(n,s);break;case"escape":p(e)}},onFocus:()=>{u(!0)},onBlur:()=>{u(!1)},id:f,"aria-labelledby":y,"aria-autocomplete":"none",readOnly:!0},renderSuggestionsContainer:({containerProps:e,children:t})=>{const{ref:n}=e,i=m(e,k);return _.default.createElement("div",Object.assign({tabIndex:"-1"},i,{ref:e=>{e&&(h.current=e,n(e))}}),t)},theme:x})),r)};"production"!==process.env.NODE_ENV&&(w.propTypes={value:u.default.number.isRequired,onSlackTimeSelected:u.default.func.isRequired,getDisplay:u.default.func.isRequired,options:u.default.arrayOf(u.default.shape({displayName:u.default.string.isRequired,value:u.default.number.isRequired}).isRequired).isRequired,id:u.default.string.isRequired,label:u.default.node.isRequired,icon:u.default.node.isRequired,viaPointIndex:u.default.number.isRequired});const S={de:{"add-via-button-label":"Füge Zwischenziel hinzu","add-via-duration-button-label":"Setze Umsteigezeit für Zwischenziel {{index}}","add-via-duration-button-label-close":"Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}","add-via-duration-button-label-open":"Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}","minute-short":"min","remove-via-button-label":"Entferne Zwischenziel {{index}}","swap-order-button-label":"Tausche Start mit Ziel","via-point":"Zwischenziel","via-point-index":"Zwischenziel {{index}}","viapoint-slack-amount":"Umsteigezeit"},en:{"add-via-button-label":"Add via point","add-via-duration-button-label":"Set stop duration at via point {{index}}","add-via-duration-button-label-close":"Close stop duration selector at via point {{index}}","add-via-duration-button-label-open":"Open stop duration selector at via point {{index}}","minute-short":"min","remove-via-button-label":"Remove via point {{index}}","swap-order-button-label":"Reverse origin and destination","via-point":"Via point","via-point-index":"Via point {{index}}","viapoint-slack-amount":"Stop duration"},fi:{"add-via-button-label":"Lisää välipiste","add-via-duration-button-label":"Aseta välipisteelle {{index}} pysähdyksen kesto","add-via-duration-button-label-close":"Avaa välipisteen {{index}} pysähdyksen kesto valitsin","add-via-duration-button-label-open":"Sulje välipisteen {{index}} pysähdyksen kesto valitsin","minute-short":"min","remove-via-button-label":"Poista välipiste {{index}}","swap-order-button-label":"Käännä reitin suunta vastakkaiseksi","via-point":"Välipiste","via-point-index":"Välipiste {{index}}","viapoint-slack-amount":"Pysähdyksen kesto"},sv:{"add-via-button-label":"Lägg till viapunkt","add-via-duration-button-label":"Ställ in varaktighet för viapunkten {{index}}","add-via-duration-button-label-close":"Stäng väljaren för varaktighet vid via-punkten {{index}}","add-via-duration-button-label-open":"Öppna väljaren för varaktighet vid via-punkten {{index}}","minute-short":"min","remove-via-button-label":"Ta bort viapunkt {{index}}","swap-order-button-label":"Sväng ruttens riktning till den motsatta","via-point":"Via punkt","via-point-index":"Via punkt {{index}}","viapoint-slack-amount":"Stoppets varaktighet"}};var E={"autosuggest-panel":"styles_autosuggest-panel__meNwd","autosuggest-searchpanel-text":"styles_autosuggest-searchpanel-text__-VQTg","origin-input-container":"styles_origin-input-container__p4Qik","destination-input-container":"styles_destination-input-container__jBY4I",row:"styles_row__1GhCD","viapoints-container":"styles_viapoints-container__FYp7K","viapoint-container":"styles_viapoint-container__8yh1M","light-gray-background":"styles_light-gray-background__4fyZs","viapoint-before":"styles_viapoint-before__t4saF","viapoint-input-container":"styles_viapoint-input-container__uZx95","viapoint-1":"styles_viapoint-1__8Mna8",viapoint:"styles_viapoint__vUO9L","viapoint-2":"styles_viapoint-2__-OoUa","viapoint-3":"styles_viapoint-3__vvivE","viapoint-4":"styles_viapoint-4__jS9k1","viapoint-5":"styles_viapoint-5__J4V5N","viapoint-slack-time":"styles_viapoint-slack-time__Xpo0G","select-wrapper":"styles_select-wrapper__1usZw","via-point-button-container":"styles_via-point-button-container__cI2JI","input-viapoint-slack-container":"styles_input-viapoint-slack-container__TNgVy","itinerary-search-control":"styles_itinerary-search-control__cEL1X",opposite:"styles_opposite__zQQhd","add-via-point":"styles_add-via-point__E-gGB","add-via-point-slack":"styles_add-via-point-slack__GKjFf","remove-via-point":"styles_remove-via-point__e9DMQ","combobox-icon":"styles_combobox-icon__d3k1e","time-input-icon":"styles_time-input-icon__M8dmw","rectangle-container":"styles_rectangle-container__AdbAA",rectangle:"styles_rectangle__1IO7E","search-panel-whitespace":"styles_search-panel-whitespace__Luhwx"};b(".styles_autosuggest-panel__meNwd {\n width: 100%; }\n\n.styles_autosuggest-searchpanel-text__-VQTg {\n font-size: 24px;\n font-weight: var(--font-weight-medium);\n letter-spacing: -0.8px;\n color: #333;\n line-height: 1;\n margin-bottom: 17px;\n margin-top: unset; }\n @media screen and (min-width: 768px) {\n .styles_autosuggest-searchpanel-text__-VQTg {\n letter-spacing: -0.8px;\n line-height: 27px;\n margin-bottom: 21px; } }\n\n.styles_origin-input-container__p4Qik,\n.styles_destination-input-container__jBY4I {\n display: flex;\n flex: 1 0 100%; }\n .styles_origin-input-container__p4Qik input[type='text'],\n .styles_destination-input-container__jBY4I input[type='text'] {\n margin: 0; }\n\n.styles_row__1GhCD {\n display: flex;\n flex-direction: row; }\n\n.styles_viapoints-container__FYp7K {\n display: flex;\n flex-direction: column; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M {\n display: flex;\n flex: 1 0 100%;\n min-height: 50px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:first-child {\n margin-top: 6px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:not(:first-child) {\n margin-top: 3px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M:last-child {\n margin-bottom: 6px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs {\n display: flex;\n padding: 3px 0;\n flex-direction: column;\n background: #f4f4f5;\n border-radius: 5px;\n width: 100%; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF {\n display: flex;\n min-width: 27px;\n justify-content: center;\n align-items: center; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-before__t4saF svg {\n fill: #888;\n height: 20px; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 {\n display: flex;\n align-items: center;\n width: 100%; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95 input[type='text'] {\n margin: 0; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-1__8Mna8 > div.styles_viapoint__vUO9L {\n z-index: 15; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-2__-OoUa > div.styles_viapoint__vUO9L {\n z-index: 14; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-3__vvivE > div.styles_viapoint__vUO9L {\n z-index: 13; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-4__jS9k1 > div.styles_viapoint__vUO9L {\n z-index: 12; }\n .styles_viapoints-container__FYp7K .styles_viapoint-container__8yh1M .styles_light-gray-background__4fyZs .styles_viapoint-input-container__uZx95.styles_viapoint-5__J4V5N > div.styles_viapoint__vUO9L {\n z-index: 11; }\n\n.styles_viapoint-slack-time__Xpo0G {\n font-size: 13px;\n font-weight: normal;\n letter-spacing: -0.36px;\n color: #333;\n padding-left: 27px;\n padding-top: 12px;\n padding-bottom: 10px; }\n\n.styles_select-wrapper__1usZw {\n display: flex;\n height: 50px;\n margin-top: 9px;\n padding-left: 27px;\n padding-right: 47px; }\n\n.styles_via-point-button-container__cI2JI {\n display: flex; }\n .styles_via-point-button-container__cI2JI > div:nth-child(1) {\n order: 1;\n border-left: none; }\n .styles_via-point-button-container__cI2JI > div:nth-child(2) {\n order: 2;\n border-left: 1px solid rgba(151, 151, 151, 0.2); }\n\n.styles_input-viapoint-slack-container__TNgVy {\n display: flex;\n flex-direction: column; }\n\n.styles_itinerary-search-control__cEL1X {\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n max-height: 50px;\n min-width: var(--width); }\n .styles_itinerary-search-control__cEL1X + .styles_itinerary-search-control__cEL1X {\n border-left: 1px solid rgba(151, 151, 151, 0.2); }\n .styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_opposite__zQQhd svg {\n width: 19px;\n height: 17px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point__E-gGB svg {\n width: 20px;\n height: 22px; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-width: 47px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_add-via-point-slack__GKjFf svg {\n width: 18px;\n height: 19px; }\n .styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n max-height: 44px;\n min-width: 40px;\n cursor: pointer; }\n .styles_itinerary-search-control__cEL1X .styles_remove-via-point__e9DMQ svg {\n width: 14px;\n height: 14px; }\n\n.styles_combobox-icon__d3k1e {\n color: var(--color);\n border-left: solid #888 1px;\n height: 35px; }\n .styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw {\n padding: 9px 13px 0 13px; }\n .styles_combobox-icon__d3k1e.styles_time-input-icon__M8dmw svg {\n width: 18px;\n height: 19px; }\n\n.styles_rectangle-container__AdbAA {\n display: block;\n position: relative;\n height: 9px;\n z-index: 19; }\n .styles_rectangle-container__AdbAA .styles_rectangle__1IO7E {\n position: absolute;\n width: 4px;\n height: 21px;\n border-radius: 2px;\n background-color: #ddd;\n margin-left: 25px;\n margin-top: -5px; }\n\n.styles_search-panel-whitespace__Luhwx {\n min-width: 40px; }\n");const C=["children","className","enabled","onClick","onKeyPress","wide"];h.default.init({lng:"fi",fallbackLng:"fi",defaultNS:"translation",interpolation:{escapeValue:!1}});const P=()=>({}),N=e=>{if(void 0===e||y.default(e))return!0;const t=Object.keys(e);return 1===t.length||2===t.length&&t.includes("locationSlack")},A=e=>{let{children:t,className:n,enabled:i,onClick:o,onKeyPress:s,wide:a}=e,l=m(e,C);return _.default.createElement("div",{className:E["itinerary-search-control"],style:{"--width":a?"47px":"40px"}},o&&i&&_.default.createElement("div",Object.assign({},l,{className:n,onClick:o,onKeyPress:s,role:"button",tabIndex:"0"}),t))},V=e=>`${e/60} ${h.default.t("minute-short")}`,R=(e,t,n=!1)=>{const i=e.indexOf(t);return i>-1&&e.splice(i,1),n?e.map((e=>e>t?e-1:e)):e},M=e=>{const t=e&&(e.key||e.which||e.keyCode)||"";return!(!t||![13," ","Spacebar"].concat([32,"Enter"]).includes(t))&&(e.preventDefault(),!0)},I=e=>e&&e.address||e&&e.gps&&e.ready&&"Nykyinen sijainti"||"",F=e=>e&&!0===e.gps?"position":"location";"production"!==process.env.NODE_ENV&&(A.propTypes={children:u.default.node,className:u.default.string.isRequired,enabled:u.default.bool.isRequired,onClick:u.default.func.isRequired,onKeyPress:u.default.func.isRequired,wide:u.default.bool});class L extends _.default.Component{constructor(e){super(e),this.storeReference=e=>{this.setState((t=>({refs:[...t.refs,e]})))},this.handleFocusChange=()=>{const{destination:e}=this.props;e&&e.set||this.state.refs[1].focus()},this.updateViaPoints=e=>{0!==e.length?this.props.updateViaPoints(e.filter((e=>!N(e)))):this.props.updateViaPoints([])},this.handleToggleViaPointSlackClick=e=>{const{activeSlackInputs:t}=this.state;this.setState({activeSlackInputs:t.includes(e)?R(t,e):t.concat([e])})},this.handleViaPointSlackTimeSelected=(e,t)=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"EditViaPointStopDuration",category:"ItinerarySettings",name:e/60});const{viaPoints:n}=this.props;n[t].locationSlack=Number.parseInt(e,10),this.updateViaPoints(n)},this.handleViaPointLocationSelected=(e,t)=>{this.props.handleViaPointLocationSelected(e,t)},this.handleRemoveViaPointClick=e=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"RemoveJourneyViaPoint",category:"ItinerarySettings",name:null});const{activeSlackInputs:t}=this.state,{viaPoints:n}=this.props;n.splice(e,1),this.setState({activeSlackInputs:R(t,e,!0)},(()=>this.updateViaPoints(n)))},this.handleAddViaPointClick=()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"AddJourneyViaPoint",category:"ItinerarySettings",name:"QuickSettingsButton"});const{viaPoints:e}=this.props;e.push({}),this.setState(this.state)},this.handleSwapOrderClick=()=>{this.props.addAnalyticsEvent&&this.props.addAnalyticsEvent({action:"SwitchJourneyStartAndEndPointOrder",category:"ItinerarySettings",name:null});const{viaPoints:e}=this.props;e.reverse(),this.props.swapOrder()},this.state={activeSlackInputs:[],refs:[]},Object.keys(S).forEach((e=>{h.default.addResourceBundle(e,"translation",S[e])}))}componentDidMount(){h.default.changeLanguage(this.props.lang)}componentDidUpdate(){h.default.language!==this.props.lang&&h.default.changeLanguage(this.props.lang)}render(){const{origin:e,searchPanelText:t,searchContext:n,disableAutoFocus:i,viaPoints:s,originMobileLabel:a,destinationMobileLabel:l,fontWeights:r,onFocusChange:c,showSwapControl:p,showViapointControl:u}=this.props,{activeSlackInputs:y}=this.state,v=(()=>{const e=[];for(let t=0;t<=9;t++){const n=10*t;e.push({displayName:`${n} ${h.default.t("minute-short")}`,value:60*n})}return e})(),m=(e,t=0)=>e&&e.locationSlack||t,b=e=>y.includes(e);return _.default.createElement("div",{className:d.default(E["autosuggest-panel"],this.props.isMobile&&"small"),style:{"--color":`${this.props.color}`,"--font-weight-medium":r.medium}}," ",t?_.default.createElement("div",null,_.default.createElement("h1",{className:E["autosuggest-searchpanel-text"]}," ",t)):null,_.default.createElement("div",{className:E["origin-input-container"]},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"origin",autoFocus:!0!==i&&(!this.props.isMobile&&!e.lat),storeRef:this.storeReference,refPoint:this.props.refPoint,className:F(e),placeholder:this.props.originPlaceHolder,value:I(e),searchContext:n,getAutoSuggestIcons:this.props.getAutoSuggestIcons,onSelect:this.props.onSelect,onClear:this.props.onClear,focusChange:c||this.handleFocusChange,lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,mobileLabel:a,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(p||u)&&_.default.createElement(A,{className:E.opposite,enabled:p,onClick:()=>this.handleSwapOrderClick(),onKeyPress:e=>M(e)&&this.handleSwapOrderClick(),"aria-label":h.default.t("swap-order-button-label")},_.default.createElement(f.default,{img:"opposite",color:this.props.color}))),0===s.length&&_.default.createElement("div",{className:E["rectangle-container"]},_.default.createElement("div",{className:E.rectangle})),_.default.createElement(o.ReactSortable,{className:E["viapoints-container"],list:s,handle:`.${E["viapoint-before"]}`,animation:200,setList:e=>{const t=e.filter((e=>!N(e)));t.length>0&&this.props.updateViaPoints(t)}},s.map(((e,t)=>_.default.createElement("div",{className:d.default(E["viapoint-container"]),key:`viapoint-${t}`},_.default.createElement("div",{className:E["light-gray-background"]},_.default.createElement("div",{className:E.row},_.default.createElement("div",{className:E["viapoint-before"],style:{cursor:"move"}},_.default.createElement(f.default,{img:"ellipsis",rotate:90,color:this.props.color})),_.default.createElement("div",{className:`${E["viapoint-input-container"]} ${E[`viapoint-${t+1}`]}`},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker-via",id:"via-point",ariaLabel:h.default.t("via-point-index",{index:t+1}),autoFocus:!0!==i&&!this.props.isMobile,placeholder:"via-point",className:"viapoint",searchContext:n,refPoint:this.props.refPoint,value:e&&e.address||"",onSelect:this.props.onSelect,onClear:this.props.onClear,handleViaPoints:e=>this.handleViaPointLocationSelected(e,t),lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,getAutoSuggestIcons:this.props.getAutoSuggestIcons,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll})),_.default.createElement(A,{className:E["add-via-point-slack"],enabled:this.props.showViapointControl,onClick:()=>this.handleToggleViaPointSlackClick(t),onKeyPress:e=>M(e)&&this.handleToggleViaPointSlackClick(t),"aria-label":h.default.t(b(t)?"add-via-duration-button-label-open":"add-via-duration-button-label-close",{index:t+1}),wide:!0},_.default.createElement(f.default,{img:"time",color:this.props.color}))),!b(t)&&s[t]&&s[t].locationSlack>0&&_.default.createElement("span",{className:E["viapoint-slack-time"]},`${h.default.t("viapoint-slack-amount")}: ${V(s[t].locationSlack)}`),_.default.createElement("div",{className:d.default(E["input-viapoint-slack-container"],!b(t)&&"collapsed")},_.default.createElement("div",{className:E["select-wrapper"]},_.default.createElement(w,{id:`viapoint-slack-${t}`,label:h.default.t("viapoint-slack-amount"),options:v,value:m(s[t]),getDisplay:V,viaPointIndex:t,icon:_.default.createElement("span",{className:`${E["combobox-icon"]} ${E["time-input-icon"]}`},_.default.createElement(f.default,{img:"time",color:this.props.color})),onSlackTimeSelected:this.handleViaPointSlackTimeSelected})))),_.default.createElement(A,{className:E["remove-via-point"],enabled:this.props.showViapointControl,onClick:()=>this.handleRemoveViaPointClick(t),onKeyPress:e=>M(e)&&this.handleRemoveViaPointClick(t),"aria-label":h.default.t("remove-via-button-label",{index:t+1})},_.default.createElement(f.default,{img:"close",color:this.props.color})))))),_.default.createElement("div",{className:E["destination-input-container"]},_.default.createElement(g.default,{appElement:this.props.appElement,icon:"mapMarker",id:"destination",autoFocus:!0!==i&&(!this.props.isMobile&&!Number.isNaN(e.lat)),storeRef:this.storeReference,placeholder:this.props.destinationPlaceHolder,className:F(this.props.destination),getAutoSuggestIcons:this.props.getAutoSuggestIcons,searchContext:n,onSelect:this.props.onSelect,onClear:this.props.onClear,refPoint:this.props.refPoint,value:I(this.props.destination),lang:this.props.lang,sources:this.props.sources,targets:this.props.targets,filterResults:this.props.filterResults,isMobile:this.props.isMobile,color:this.props.color,hoverColor:this.props.hoverColor,mobileLabel:l,fontWeights:this.props.fontWeights,modeSet:this.props.modeSet,modeIconColors:this.props.modeIconColors,showScroll:this.props.showScroll,isEmbedded:this.props.isEmbedded}),(p||u)&&_.default.createElement(A,{className:d.default(E["add-via-point"],E.more,s.length>4&&"collapsed"),enabled:u,onClick:()=>this.handleAddViaPointClick(),onKeyPress:e=>M(e)&&this.handleAddViaPointClick(),"aria-label":h.default.t("add-via-button-label")},_.default.createElement(f.default,{img:"viapoint",width:1.25,height:1.375,color:this.props.color}))))}}L.defaultProps={viaPoints:[],originPlaceHolder:"give-origin",destinationPlaceHolder:"give-destination",swapOrder:void 0,updateViaPoints:()=>{},lang:"fi",sources:[],targets:[],filterResults:void 0,disableAutoFocus:!1,isMobile:!1,handleViaPointLocationSelected:void 0,color:"#007ac9",hoverColor:"#0062a1",originMobileLabel:null,destinationMobileLabel:null,modeSet:void 0,modeIconColors:void 0,fontWeights:{medium:500},showScroll:!1,onFocusChange:void 0,isEmbedded:!1,showSwapControl:!1,showViapointControl:!1},"production"!==process.env.NODE_ENV&&(L.propTypes={appElement:u.default.string.isRequired,origin:u.default.object.isRequired,destination:u.default.object.isRequired,originPlaceHolder:u.default.string,destinationPlaceHolder:u.default.string,viaPoints:u.default.arrayOf(u.default.object),updateViaPoints:u.default.func,handleViaPointLocationSelected:u.default.func,swapOrder:u.default.func,searchPanelText:u.default.string,searchContext:u.default.any.isRequired,onSelect:u.default.func,onClear:u.default.func,addAnalyticsEvent:u.default.func,lang:u.default.string,disableAutoFocus:u.default.bool,sources:u.default.arrayOf(u.default.string),targets:u.default.arrayOf(u.default.string),filterResults:u.default.func,isMobile:u.default.bool,color:u.default.string,hoverColor:u.default.string,originMobileLabel:u.default.string,destinationMobileLabel:u.default.string,refPoint:u.default.object,modeSet:u.default.string,modeIconColors:u.default.object,getAutoSuggestIcons:u.default.object,fontWeights:u.default.shape({medium:u.default.number}),showScroll:u.default.bool,onFocusChange:u.default.func,isEmbedded:u.default.bool,showSwapControl:u.default.bool,showViapointControl:u.default.bool}),e.default=L,e.getEmptyViaPointPlaceHolder=P,Object.defineProperty(e,"__esModule",{value:!0})}));
2
2
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../../node_modules/style-inject/dist/style-inject.es.js","../src/helpers/Select.js","../src/helpers/translations.js","../src/index.js"],"sourcesContent":["export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import PropTypes from 'prop-types';\nimport React, { useState, useEffect, useRef, useLayoutEffect } from 'react';\nimport Autosuggest from 'react-autosuggest';\nimport styles from './select.scss';\n\nconst Select = ({\n value,\n getDisplay,\n options,\n onSlackTimeSelected,\n viaPointIndex,\n id,\n label,\n icon,\n}) => {\n const [displayValue, changeDisplayValue] = useState(getDisplay(value));\n const [open, changeOpen] = useState(false);\n useEffect(() => changeDisplayValue(getDisplay(value)), [value]);\n const scrollRef = useRef(null);\n const scrollIndex = Math.floor(value / 600);\n const elementHeight = 50;\n useLayoutEffect(() => {\n if (open && scrollRef.current) {\n scrollRef.current.scrollTop = elementHeight * scrollIndex;\n }\n }, [value, open]);\n\n const inputId = `${id}-input`;\n const labelId = `${id}-label`;\n\n const onInputChange = (_, { newValue, method }) => {\n switch (method) {\n case 'enter':\n case 'click':\n onSlackTimeSelected(newValue, viaPointIndex);\n break;\n case 'escape':\n changeDisplayValue(value);\n break;\n case 'up':\n case 'down':\n default:\n break;\n }\n };\n return (\n <>\n <label className={styles['combobox-container']} htmlFor={inputId}>\n <span className={styles['left-column']}>\n <span className={styles['combobox-label']} id={labelId}>\n {label}\n </span>\n <Autosuggest\n id={id}\n suggestions={options}\n getSuggestionValue={s => s.value}\n renderSuggestion={s => s.displayName}\n onSuggestionsFetchRequested={() => null}\n shouldRenderSuggestions={() => true}\n focusInputOnSuggestionClick={false}\n onSuggestionsClearRequested={() => null}\n inputProps={{\n value: displayValue,\n onChange: onInputChange,\n onFocus: () => {\n changeOpen(true);\n },\n onBlur: () => {\n changeOpen(false);\n },\n id: inputId,\n 'aria-labelledby': labelId,\n 'aria-autocomplete': 'none',\n readOnly: true,\n }}\n renderSuggestionsContainer={({ containerProps, children }) => {\n // set refs for autosuggest library and scrollbar positioning\n const { ref, ...otherRefs } = containerProps;\n const containerRef = elem => {\n if (elem) {\n scrollRef.current = elem;\n ref(elem);\n }\n };\n return (\n <div tabIndex=\"-1\" {...otherRefs} ref={containerRef}>\n {children}\n </div>\n );\n }}\n theme={styles}\n />\n </span>\n {icon}\n </label>\n </>\n );\n};\n\nSelect.propTypes = {\n value: PropTypes.number.isRequired,\n onSlackTimeSelected: PropTypes.func.isRequired,\n getDisplay: PropTypes.func.isRequired,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n displayName: PropTypes.string.isRequired,\n value: PropTypes.number.isRequired,\n }).isRequired,\n ).isRequired,\n id: PropTypes.string.isRequired,\n label: PropTypes.node.isRequired,\n icon: PropTypes.node.isRequired,\n viaPointIndex: PropTypes.number.isRequired,\n};\n\nexport default Select;\n","const translations = {\n de: {\n 'add-via-button-label': 'Füge Zwischenziel hinzu',\n 'add-via-duration-button-label':\n 'Setze Umsteigezeit für Zwischenziel {{index}}',\n 'add-via-duration-button-label-close':\n 'Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}',\n 'add-via-duration-button-label-open':\n 'Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Entferne Zwischenziel {{index}}',\n 'swap-order-button-label': 'Tausche Start mit Ziel',\n 'via-point': 'Zwischenziel',\n 'via-point-index': 'Zwischenziel {{index}}',\n 'viapoint-slack-amount': 'Umsteigezeit',\n },\n en: {\n 'add-via-button-label': 'Add via point',\n 'add-via-duration-button-label': 'Set stop duration at via point {{index}}',\n 'add-via-duration-button-label-close':\n 'Close stop duration selector at via point {{index}}',\n 'add-via-duration-button-label-open':\n 'Open stop duration selector at via point {{index}}',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Remove via point {{index}}',\n 'swap-order-button-label': 'Reverse origin and destination',\n 'via-point': 'Via point',\n 'via-point-index': 'Via point {{index}}',\n 'viapoint-slack-amount': 'Stop duration',\n },\n fi: {\n 'add-via-button-label': 'Lisää välipiste',\n 'add-via-duration-button-label':\n 'Aseta välipisteelle {{index}} pysähdyksen kesto',\n 'add-via-duration-button-label-close':\n 'Avaa välipisteen {{index}} pysähdyksen kesto valitsin',\n 'add-via-duration-button-label-open':\n 'Sulje välipisteen {{index}} pysähdyksen kesto valitsin',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Poista välipiste {{index}}',\n 'swap-order-button-label': 'Käännä reitin suunta vastakkaiseksi',\n 'via-point': 'Välipiste',\n 'via-point-index': 'Välipiste {{index}}',\n 'viapoint-slack-amount': 'Pysähdyksen kesto',\n },\n sv: {\n 'add-via-button-label': 'Lägg till viapunkt',\n 'add-via-duration-button-label':\n 'Ställ in varaktighet för viapunkten {{index}}',\n 'add-via-duration-button-label-close':\n 'Stäng väljaren för varaktighet vid via-punkten {{index}}',\n 'add-via-duration-button-label-open':\n 'Öppna väljaren för varaktighet vid via-punkten {{index}}',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Ta bort viapunkt {{index}}',\n 'swap-order-button-label': 'Sväng ruttens riktning till den motsatta',\n 'via-point': 'Via punkt',\n 'via-point-index': 'Via punkt {{index}}',\n 'viapoint-slack-amount': 'Stoppets varaktighet',\n },\n};\n\nexport default translations;\n","/* eslint-disable import/no-extraneous-dependencies */\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { ReactSortable } from 'react-sortablejs';\nimport i18next from 'i18next';\nimport DTAutoSuggest from '@digitransit-component/digitransit-component-autosuggest';\nimport Icon from '@digitransit-component/digitransit-component-icon';\nimport isEmpty from 'lodash/isEmpty';\nimport Select from './helpers/Select';\nimport translations from './helpers/translations';\nimport styles from './helpers/styles.scss';\n\ni18next.init({\n lng: 'fi',\n fallbackLng: 'fi',\n defaultNS: 'translation',\n interpolation: {\n escapeValue: false, // not needed for react as it escapes by default\n },\n});\n\nexport const getEmptyViaPointPlaceHolder = () => ({});\n\nconst isViaPointEmpty = viaPoint => {\n if (viaPoint === undefined || isEmpty(viaPoint)) {\n return true;\n }\n const keys = Object.keys(viaPoint);\n return (\n keys.length === 1 || (keys.length === 2 && keys.includes('locationSlack'))\n );\n};\n\nconst ItinerarySearchControl = ({\n children,\n className,\n enabled,\n onClick,\n onKeyPress,\n wide,\n ...rest\n}) => (\n <div\n className={styles['itinerary-search-control']}\n style={{ '--width': wide ? '47px' : '40px' }}\n >\n {onClick && enabled && (\n <div\n {...rest}\n className={className}\n onClick={onClick}\n onKeyPress={onKeyPress}\n role=\"button\"\n tabIndex=\"0\"\n >\n {children}\n </div>\n )}\n </div>\n);\n\nItinerarySearchControl.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string.isRequired,\n enabled: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n onKeyPress: PropTypes.func.isRequired,\n wide: PropTypes.bool,\n};\n\n/**\n * Panel that renders two DTAutosuggest search fields, including viapoint handling\n *\n * @example\n * const searchContext = {\n * isPeliasLocationAware: false // true / false does Let Pelias suggest based on current user location\n * minimalRegexp: undefined // used for testing min. regexp. For example: new RegExp('.{2,}'),\n * lineRegexp: undefined // identify searches for route numbers/labels: bus | train | metro. For example: new RegExp(\n * // '(^[0-9]+[a-z]?$|^[yuleapinkrtdz]$|(^m[12]?b?$))',\n * // 'i',\n * // ),\n * URL_PELIAS: '' // url for pelias searches\n * feedIDs: ['HSL', 'HSLLautta'] // FeedId's like [HSL, HSLLautta]\n * geocodingSources: ['oa','osm','nlsfi'] // sources for geocoding\n * geocodingSearchParams; {} // Searchparmas fro geocoding\n * getFavouriteLocations: () => ({}), // Function that returns array of favourite locations.\n * getFavouriteStops: () => ({}), // Function that returns array of favourite stops.\n * getLanguage: () => ({}), // Function that returns current language.\n * getFavouriteRoutes: () => ({}), // Function that returns array of favourite routes.\n * getPositions: () => ({}), // Function that returns user's geolocation.\n * getRoutesQuery: () => ({}), // Function that returns query for fetching routes.\n * getStopAndStationsQuery: () => ({}), // Function that fetches favourite stops and stations from graphql API.\n * getFavouriteRoutesQuery: () => ({}), // Function that returns query for fetching favourite routes.\n * getFavouriteVehicleRentalStations: () => ({}), // Function that returns favourite bike rental station.\n * getFavouriteVehicleRentalStationsQuery: () => ({}), // Function that returns query for fetching favourite bike rental stations.\n * startLocationWatch: () => ({}), // Function that locates users geolocation.\n * saveSearch: () => ({}), // Function that saves search to old searches store.\n * clearOldSearches: () => ({}), // Function that clears old searches store.\n * getFutureRoutes: () => ({}), // Function that return future routes\n * saveFutureRoute: () => ({}), // Function that saves a future route\n * clearFutureRoutes: () => ({}), // Function that clears future routes\n * };\n *\n * const origin = {\n * lat: 60.169196,\n * lon: 24.957674,\n * address: 'Aleksanterinkatu, Helsinki',\n * set: true,\n * ready: true,\n * }\n *\n * const destination = {\n * lat: 60.199093,\n * lon: 24.940536,\n * address: 'Opastinsilta 6, Helsinki',\n * set: true,\n * ready: true,\n * }\n * onSelect(item, id) {\n * return null; // Define what to do when a suggestion is being selected. None by default.\n * }\n * onClear(id) {\n * return null; // Define what to do when a suggestion is being selected. None by default.\n * }\n * const getAutoSuggestIcons: {\n * // Called for every city bike station rendered as a search suggestion. Should return the icon and\n * // color used for that station. Two icons are available, 'citybike-stop-digitransit' anditybike-stop-digitransit-secondary'.\n * citybikes: station => {\n * return ['citybike-stop-digitransit', '#f2b62d'];\n * }\n * }\n * const targets = ['Locations', 'Stops', 'Routes']; // Defines what you are searching. all available options are Locations, Stops, Routes, VehicleRentalStations, FutureRoutes, MapPosition and CurrentPosition. Leave empty to search all targets.\n * const sources = ['Favourite', 'History', 'Datasource'] // Defines where you are searching. all available are: Favourite, History (previously searched searches), and Datasource. Leave empty to use all sources.\n * <DTAutosuggestPanel\n * appElement={appElement} // Required. Root element's id. Needed for react-modal component.\n * origin={origin} // Selected origin point\n * destination={destination} // Selected destination point\n * originPlaceHolder={'Give origin'} // Optional Give string shown initially inside origin search field\n * destinationPlaceHolder={'Give destination'} // Optional Give string shown initally inside destination search field\n * initialViaPoints={[]} // Optional. If showViapointControl is set to true, pass initial via points to the panel. Currently no default implementation is given.\n * updateViaPoints={() => return []} // Optional. If showViapointControl is set to true, define how to update your via point list with this function. Currenlty no default implementation is given.\n * swapOrder={() => return null} // Optional. If showSwapControl is set to true, define how to swap order of your points (origin, destination, viapoints). Currently no default implementation is given.\n * searchContext={searchContext}\n * getAutoSuggestIcons={getAutoSuggestIcons}\n * onSelect={this.onSelect}\n * onClear={this.onClear}\n * lang=\"fi\" // Define language fi sv or en.\n * addAnalyticsEvent={null} // Optional. you can record an analytics event if you wish. if passed, component will pass an category, action, name parameters to addAnalyticsEvent\n * disableAutoFocus={false} // Optional. use this to disable autofocus completely from DTAutosuggestPanel\n * sources={sources}\n * targets={targets}\n * isMobile // Optional. Defaults to false. Whether to use mobile search.\n * originMobileLabel=\"Origin label\" // Optional. Custom label text for origin field on mobile.\n * destinationMobileLabel=\"Destination label\" // Optional. Custom label text for destination field on mobile.\n * handleFocusChange={() => {}} // Optional. If defined overrides default onFocusChange behaviour\n * showSwapControl={false} // Optional.\n * showViapointControl={false} // Optional.\n */\nclass DTAutosuggestPanel extends React.Component {\n static propTypes = {\n appElement: PropTypes.string.isRequired,\n origin: PropTypes.object.isRequired,\n destination: PropTypes.object.isRequired,\n originPlaceHolder: PropTypes.string,\n destinationPlaceHolder: PropTypes.string,\n viaPoints: PropTypes.arrayOf(PropTypes.object),\n updateViaPoints: PropTypes.func,\n handleViaPointLocationSelected: PropTypes.func,\n swapOrder: PropTypes.func,\n searchPanelText: PropTypes.string,\n searchContext: PropTypes.any.isRequired,\n onSelect: PropTypes.func,\n onClear: PropTypes.func,\n addAnalyticsEvent: PropTypes.func,\n lang: PropTypes.string,\n disableAutoFocus: PropTypes.bool,\n sources: PropTypes.arrayOf(PropTypes.string),\n targets: PropTypes.arrayOf(PropTypes.string),\n filterResults: PropTypes.func,\n isMobile: PropTypes.bool,\n color: PropTypes.string,\n hoverColor: PropTypes.string,\n originMobileLabel: PropTypes.string,\n destinationMobileLabel: PropTypes.string,\n refPoint: PropTypes.object,\n modeSet: PropTypes.string,\n modeIconColors: PropTypes.object,\n getAutoSuggestIcons: PropTypes.object,\n fontWeights: PropTypes.shape({\n medium: PropTypes.number,\n }),\n showScroll: PropTypes.bool,\n onFocusChange: PropTypes.func,\n isEmbedded: PropTypes.bool,\n showSwapControl: PropTypes.bool,\n showViapointControl: PropTypes.bool,\n };\n\n static defaultProps = {\n viaPoints: [],\n originPlaceHolder: 'give-origin',\n destinationPlaceHolder: 'give-destination',\n swapOrder: undefined,\n updateViaPoints: () => {},\n lang: 'fi',\n sources: [],\n targets: [],\n filterResults: undefined,\n disableAutoFocus: false,\n isMobile: false,\n handleViaPointLocationSelected: undefined,\n color: '#007ac9',\n hoverColor: '#0062a1',\n originMobileLabel: null,\n destinationMobileLabel: null,\n modeSet: undefined,\n modeIconColors: undefined,\n fontWeights: {\n medium: 500,\n },\n showScroll: false,\n onFocusChange: undefined,\n isEmbedded: false,\n showSwapControl: false,\n showViapointControl: false,\n };\n\n constructor(props) {\n super(props);\n this.draggableViaPoints = [];\n this.state = {\n activeSlackInputs: [],\n refs: [],\n };\n Object.keys(translations).forEach(lang => {\n i18next.addResourceBundle(lang, 'translation', translations[lang]);\n });\n }\n\n componentDidMount = () => {\n i18next.changeLanguage(this.props.lang);\n };\n\n componentDidUpdate = () => {\n if (i18next.language !== this.props.lang) {\n i18next.changeLanguage(this.props.lang);\n }\n };\n\n getSlackTimeOptions = () => {\n const timeOptions = [];\n for (let i = 0; i <= 9; i++) {\n const valueInMinutes = i * 10;\n timeOptions.push({\n displayName: `${valueInMinutes} ${i18next.t('minute-short')}`,\n value: valueInMinutes * 60,\n });\n }\n return timeOptions;\n };\n\n setDraggableViaPointRef = (element, index) => {\n this.draggableViaPoints[index] = element;\n };\n\n storeReference = ref => {\n this.setState(prevState => ({ refs: [...prevState.refs, ref] }));\n };\n\n handleFocusChange = () => {\n const { destination } = this.props;\n if (!destination || !destination.set) {\n this.state.refs[1].focus();\n }\n };\n\n isKeyboardSelectionEvent = event => {\n const space = [13, ' ', 'Spacebar'];\n const enter = [32, 'Enter'];\n const key = (event && (event.key || event.which || event.keyCode)) || '';\n if (!key || !space.concat(enter).includes(key)) {\n return false;\n }\n event.preventDefault();\n return true;\n };\n\n value = location =>\n (location && location.address) ||\n (location && location.gps && location.ready && 'Nykyinen sijainti') ||\n '';\n\n class = location =>\n location && location.gps === true ? 'position' : 'location';\n\n updateViaPoints = viaPoints => {\n if (viaPoints.length === 0) {\n this.props.updateViaPoints([]);\n return;\n }\n this.props.updateViaPoints(viaPoints.filter(vp => !isViaPointEmpty(vp)));\n };\n\n updateViaPointSlack = (\n activeViaPointSlacks,\n updatedViaPointIndex,\n viaPointRemoved = false,\n ) => {\n const foundAtIndex = activeViaPointSlacks.indexOf(updatedViaPointIndex);\n if (foundAtIndex > -1) {\n activeViaPointSlacks.splice(foundAtIndex, 1);\n }\n return viaPointRemoved\n ? activeViaPointSlacks.map(value =>\n value > updatedViaPointIndex ? value - 1 : value,\n )\n : activeViaPointSlacks;\n };\n\n handleToggleViaPointSlackClick = viaPointIndex => {\n const { activeSlackInputs } = this.state;\n this.setState({\n activeSlackInputs: activeSlackInputs.includes(viaPointIndex)\n ? this.updateViaPointSlack(activeSlackInputs, viaPointIndex)\n : activeSlackInputs.concat([viaPointIndex]),\n });\n };\n\n handleViaPointSlackTimeSelected = (slackTimeInSeconds, i) => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'EditViaPointStopDuration',\n category: 'ItinerarySettings',\n name: slackTimeInSeconds / 60,\n });\n }\n const { viaPoints } = this.props;\n viaPoints[i].locationSlack = Number.parseInt(slackTimeInSeconds, 10);\n this.updateViaPoints(viaPoints);\n };\n\n handleViaPointLocationSelected = (viaPointLocation, i) => {\n this.props.handleViaPointLocationSelected(viaPointLocation, i);\n };\n\n handleRemoveViaPointClick = viaPointIndex => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'RemoveJourneyViaPoint',\n category: 'ItinerarySettings',\n name: null,\n });\n }\n const { activeSlackInputs } = this.state;\n const { viaPoints } = this.props;\n viaPoints.splice(viaPointIndex, 1);\n this.setState(\n {\n activeSlackInputs: this.updateViaPointSlack(\n activeSlackInputs,\n viaPointIndex,\n true,\n ),\n },\n () => this.updateViaPoints(viaPoints),\n );\n };\n\n handleAddViaPointClick = () => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'AddJourneyViaPoint',\n category: 'ItinerarySettings',\n name: 'QuickSettingsButton',\n });\n }\n const { viaPoints } = this.props;\n viaPoints.push(getEmptyViaPointPlaceHolder());\n // We need to update the state so that placeHolder will show up in panel.\n // eslint-disable-next-line react/no-access-state-in-setstate\n this.setState(this.state);\n };\n\n handleSwapOrderClick = () => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'SwitchJourneyStartAndEndPointOrder',\n category: 'ItinerarySettings',\n name: null,\n });\n }\n const { viaPoints } = this.props;\n viaPoints.reverse();\n this.props.swapOrder();\n };\n\n getSlackDisplay = slackInSeconds => {\n return `${slackInSeconds / 60} ${i18next.t('minute-short')}`;\n };\n\n render = () => {\n const {\n origin,\n searchPanelText,\n searchContext,\n disableAutoFocus,\n viaPoints,\n originMobileLabel,\n destinationMobileLabel,\n fontWeights,\n onFocusChange,\n showSwapControl,\n showViapointControl,\n } = this.props;\n const { activeSlackInputs } = this.state;\n const slackTime = this.getSlackTimeOptions();\n const defaultSlackTimeValue = 0;\n const getViaPointSlackTimeOrDefault = (\n viaPoint,\n defaultValue = defaultSlackTimeValue,\n ) => (viaPoint && viaPoint.locationSlack) || defaultValue;\n const isViaPointSlackTimeInputActive = index =>\n activeSlackInputs.includes(index);\n return (\n <div\n className={cx([\n styles['autosuggest-panel'],\n {\n small: this.props.isMobile,\n },\n ])}\n style={{\n '--color': `${this.props.color}`,\n '--font-weight-medium': fontWeights.medium,\n }}\n >\n {' '}\n {searchPanelText ? (\n <div>\n <h1 className={styles['autosuggest-searchpanel-text']}>\n {' '}\n {searchPanelText}\n </h1>\n </div>\n ) : null}\n <div className={styles['origin-input-container']}>\n <DTAutoSuggest\n appElement={this.props.appElement}\n icon=\"mapMarker\"\n id=\"origin\"\n autoFocus={\n disableAutoFocus === true\n ? false\n : !this.props.isMobile && !origin.lat\n }\n storeRef={this.storeReference}\n refPoint={this.props.refPoint}\n className={this.class(origin)}\n placeholder={this.props.originPlaceHolder}\n value={this.value(origin)}\n searchContext={searchContext}\n getAutoSuggestIcons={this.props.getAutoSuggestIcons}\n onSelect={this.props.onSelect}\n onClear={this.props.onClear}\n focusChange={onFocusChange || this.handleFocusChange}\n lang={this.props.lang}\n sources={this.props.sources}\n targets={this.props.targets}\n filterResults={this.props.filterResults}\n isMobile={this.props.isMobile}\n color={this.props.color}\n hoverColor={this.props.hoverColor}\n mobileLabel={originMobileLabel}\n fontWeights={this.props.fontWeights}\n modeSet={this.props.modeSet}\n modeIconColors={this.props.modeIconColors}\n showScroll={this.props.showScroll}\n isEmbedded={this.props.isEmbedded}\n />\n {(showSwapControl || showViapointControl) && (\n <ItinerarySearchControl\n className={styles.opposite}\n enabled={showSwapControl}\n onClick={() => this.handleSwapOrderClick()}\n onKeyPress={e =>\n this.isKeyboardSelectionEvent(e) && this.handleSwapOrderClick()\n }\n aria-label={i18next.t('swap-order-button-label')}\n >\n <Icon img=\"opposite\" color={this.props.color} />\n </ItinerarySearchControl>\n )}\n </div>\n {viaPoints.length === 0 && (\n <div className={styles['rectangle-container']}>\n <div className={styles.rectangle} />\n </div>\n )}\n <ReactSortable\n className={styles['viapoints-container']}\n list={viaPoints}\n handle={`.${styles['viapoint-before']}`}\n animation={200}\n setList={items => {\n const newViaPoints = items.filter(vp => !isViaPointEmpty(vp));\n if (newViaPoints.length > 0) {\n this.props.updateViaPoints(newViaPoints);\n }\n }}\n >\n {viaPoints.map((o, i) => (\n <div\n className={cx(styles['viapoint-container'])}\n key={`viapoint-${i}`} // eslint-disable-line\n >\n <div className={styles['light-gray-background']}>\n <div className={styles.row}>\n <div\n className={styles['viapoint-before']}\n style={{ cursor: 'move' }}\n >\n <Icon img=\"ellipsis\" rotate={90} color={this.props.color} />\n </div>\n <div\n className={cx(\n `${styles['viapoint-input-container']} ${\n styles[`viapoint-${i + 1}`]\n }`,\n )}\n >\n <DTAutoSuggest\n appElement={this.props.appElement}\n icon=\"mapMarker-via\"\n id=\"via-point\"\n ariaLabel={i18next.t('via-point-index', { index: i + 1 })}\n autoFocus={\n disableAutoFocus === true ? false : !this.props.isMobile\n }\n placeholder=\"via-point\"\n className=\"viapoint\"\n searchContext={searchContext}\n refPoint={this.props.refPoint}\n value={(o && o.address) || ''}\n onSelect={this.props.onSelect}\n onClear={this.props.onClear}\n handleViaPoints={item =>\n this.handleViaPointLocationSelected(item, i)\n }\n lang={this.props.lang}\n sources={this.props.sources}\n targets={this.props.targets}\n filterResults={this.props.filterResults}\n getAutoSuggestIcons={this.props.getAutoSuggestIcons}\n isMobile={this.props.isMobile}\n color={this.props.color}\n hoverColor={this.props.hoverColor}\n fontWeights={this.props.fontWeights}\n modeSet={this.props.modeSet}\n modeIconColors={this.props.modeIconColors}\n showScroll={this.props.showScroll}\n />\n </div>\n <ItinerarySearchControl\n className={styles['add-via-point-slack']}\n enabled={this.props.showViapointControl}\n onClick={() => this.handleToggleViaPointSlackClick(i)}\n onKeyPress={e =>\n this.isKeyboardSelectionEvent(e) &&\n this.handleToggleViaPointSlackClick(i)\n }\n aria-label={i18next.t(\n isViaPointSlackTimeInputActive(i)\n ? 'add-via-duration-button-label-open'\n : 'add-via-duration-button-label-close',\n { index: i + 1 },\n )}\n wide\n >\n <Icon img=\"time\" color={this.props.color} />\n </ItinerarySearchControl>\n </div>\n {!isViaPointSlackTimeInputActive(i) &&\n viaPoints[i] &&\n viaPoints[i].locationSlack > 0 && (\n <span\n className={styles['viapoint-slack-time']}\n >{`${i18next.t(\n 'viapoint-slack-amount',\n )}: ${this.getSlackDisplay(\n viaPoints[i].locationSlack,\n )}`}</span>\n )}\n <div\n className={cx(styles['input-viapoint-slack-container'], {\n collapsed: !isViaPointSlackTimeInputActive(i),\n })}\n >\n <div className={styles['select-wrapper']}>\n <Select\n id={`viapoint-slack-${i}`}\n label={i18next.t('viapoint-slack-amount')}\n options={slackTime}\n value={getViaPointSlackTimeOrDefault(viaPoints[i])}\n getDisplay={this.getSlackDisplay}\n viaPointIndex={i}\n icon={\n <span\n className={`${styles['combobox-icon']} ${styles['time-input-icon']}`}\n >\n <Icon img=\"time\" color={this.props.color} />\n </span>\n }\n onSlackTimeSelected={this.handleViaPointSlackTimeSelected}\n />\n </div>\n </div>\n </div>\n <ItinerarySearchControl\n className={styles['remove-via-point']}\n enabled={this.props.showViapointControl}\n onClick={() => this.handleRemoveViaPointClick(i)}\n onKeyPress={e =>\n this.isKeyboardSelectionEvent(e) &&\n this.handleRemoveViaPointClick(i)\n }\n aria-label={i18next.t('remove-via-button-label', {\n index: i + 1,\n })}\n >\n <Icon img=\"close\" color={this.props.color} />\n </ItinerarySearchControl>\n </div>\n ))}\n </ReactSortable>\n <div className={styles['destination-input-container']}>\n <DTAutoSuggest\n appElement={this.props.appElement}\n icon=\"mapMarker\"\n id=\"destination\"\n autoFocus={\n disableAutoFocus === true\n ? false\n : !this.props.isMobile && !Number.isNaN(origin.lat)\n }\n storeRef={this.storeReference}\n placeholder={this.props.destinationPlaceHolder}\n className={this.class(this.props.destination)}\n getAutoSuggestIcons={this.props.getAutoSuggestIcons}\n searchContext={searchContext}\n onSelect={this.props.onSelect}\n onClear={this.props.onClear}\n refPoint={this.props.refPoint}\n value={this.value(this.props.destination)}\n lang={this.props.lang}\n sources={this.props.sources}\n targets={this.props.targets}\n filterResults={this.props.filterResults}\n isMobile={this.props.isMobile}\n color={this.props.color}\n hoverColor={this.props.hoverColor}\n mobileLabel={destinationMobileLabel}\n fontWeights={this.props.fontWeights}\n modeSet={this.props.modeSet}\n modeIconColors={this.props.modeIconColors}\n showScroll={this.props.showScroll}\n isEmbedded={this.props.isEmbedded}\n />\n {(showSwapControl || showViapointControl) && (\n <ItinerarySearchControl\n className={cx(styles['add-via-point'], styles.more, {\n collapsed: viaPoints.length > 4,\n })}\n enabled={showViapointControl}\n onClick={() => this.handleAddViaPointClick()}\n onKeyPress={e =>\n this.isKeyboardSelectionEvent(e) &&\n this.handleAddViaPointClick()\n }\n aria-label={i18next.t('add-via-button-label')}\n >\n <Icon\n img=\"viapoint\"\n width={1.25}\n height={1.375}\n color={this.props.color}\n />\n </ItinerarySearchControl>\n )}\n </div>\n </div>\n );\n };\n}\n\nexport default DTAutosuggestPanel;\n"],"names":["_objectWithoutPropertiesLoose","source","excluded","key","i","target","sourceKeys","Object","keys","length","indexOf","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","Select","value","getDisplay","options","onSlackTimeSelected","viaPointIndex","id","label","icon","displayValue","changeDisplayValue","useState","open","changeOpen","useEffect","scrollRef","useRef","scrollIndex","Math","floor","useLayoutEffect","current","scrollTop","inputId","labelId","React","Fragment","className","styles","htmlFor","Autosuggest","suggestions","getSuggestionValue","s","renderSuggestion","displayName","onSuggestionsFetchRequested","shouldRenderSuggestions","focusInputOnSuggestionClick","onSuggestionsClearRequested","inputProps","onChange","onInputChange","_","newValue","method","onFocus","onBlur","readOnly","renderSuggestionsContainer","containerProps","children","otherRefs","_excluded","assign","tabIndex","elem","theme","process","env","NODE_ENV","propTypes","PropTypes","number","isRequired","func","arrayOf","shape","string","node","translations","de","en","fi","sv","init","lng","fallbackLng","defaultNS","interpolation","escapeValue","getEmptyViaPointPlaceHolder","isViaPointEmpty","viaPoint","undefined","isEmpty","includes","ItinerarySearchControl","_ref","enabled","onClick","onKeyPress","wide","rest","role","bool","DTAutosuggestPanel","Component","constructor","props","super","this","componentDidMount","i18next","changeLanguage","lang","componentDidUpdate","language","getSlackTimeOptions","timeOptions","valueInMinutes","push","t","setDraggableViaPointRef","element","index","draggableViaPoints","storeReference","setState","prevState","refs","handleFocusChange","destination","set","state","focus","isKeyboardSelectionEvent","event","which","keyCode","concat","preventDefault","location","address","gps","ready","class","updateViaPoints","viaPoints","filter","vp","updateViaPointSlack","activeViaPointSlacks","updatedViaPointIndex","viaPointRemoved","foundAtIndex","splice","map","handleToggleViaPointSlackClick","activeSlackInputs","handleViaPointSlackTimeSelected","slackTimeInSeconds","addAnalyticsEvent","action","category","name","locationSlack","Number","parseInt","handleViaPointLocationSelected","viaPointLocation","handleRemoveViaPointClick","handleAddViaPointClick","handleSwapOrderClick","reverse","swapOrder","getSlackDisplay","slackInSeconds","render","origin","searchPanelText","searchContext","disableAutoFocus","originMobileLabel","destinationMobileLabel","fontWeights","onFocusChange","showSwapControl","showViapointControl","slackTime","getViaPointSlackTimeOrDefault","defaultValue","isViaPointSlackTimeInputActive","cx","isMobile","color","medium","DTAutoSuggest","appElement","autoFocus","lat","storeRef","refPoint","placeholder","originPlaceHolder","getAutoSuggestIcons","onSelect","onClear","focusChange","sources","targets","filterResults","hoverColor","mobileLabel","modeSet","modeIconColors","showScroll","isEmbedded","opposite","e","Icon","img","rectangle","ReactSortable","list","handle","animation","setList","items","newViaPoints","o","row","cursor","rotate","ariaLabel","handleViaPoints","item","isNaN","destinationPlaceHolder","more","width","height","forEach","addResourceBundle","defaultProps","object","any"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../../node_modules/style-inject/dist/style-inject.es.js","../src/helpers/Select.js","../src/helpers/translations.js","../src/index.js"],"sourcesContent":["export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import PropTypes from 'prop-types';\nimport React, { useState, useEffect, useRef, useLayoutEffect } from 'react';\nimport Autosuggest from 'react-autosuggest';\nimport styles from './select.scss';\n\nconst Select = ({\n value,\n getDisplay,\n options,\n onSlackTimeSelected,\n viaPointIndex,\n id,\n label,\n icon,\n}) => {\n const [displayValue, changeDisplayValue] = useState(getDisplay(value));\n const [open, changeOpen] = useState(false);\n useEffect(() => changeDisplayValue(getDisplay(value)), [value]);\n const scrollRef = useRef(null);\n const scrollIndex = Math.floor(value / 600);\n const elementHeight = 50;\n useLayoutEffect(() => {\n if (open && scrollRef.current) {\n scrollRef.current.scrollTop = elementHeight * scrollIndex;\n }\n }, [value, open]);\n\n const inputId = `${id}-input`;\n const labelId = `${id}-label`;\n\n const onInputChange = (_, { newValue, method }) => {\n switch (method) {\n case 'enter':\n case 'click':\n onSlackTimeSelected(newValue, viaPointIndex);\n break;\n case 'escape':\n changeDisplayValue(value);\n break;\n case 'up':\n case 'down':\n default:\n break;\n }\n };\n return (\n <label className={styles['combobox-container']} htmlFor={inputId}>\n <span className={styles['left-column']}>\n <span className={styles['combobox-label']} id={labelId}>\n {label}\n </span>\n <Autosuggest\n id={id}\n suggestions={options}\n getSuggestionValue={s => s.value}\n renderSuggestion={s => s.displayName}\n onSuggestionsFetchRequested={() => null}\n shouldRenderSuggestions={() => true}\n focusInputOnSuggestionClick={false}\n onSuggestionsClearRequested={() => null}\n inputProps={{\n value: displayValue,\n onChange: onInputChange,\n onFocus: () => {\n changeOpen(true);\n },\n onBlur: () => {\n changeOpen(false);\n },\n id: inputId,\n 'aria-labelledby': labelId,\n 'aria-autocomplete': 'none',\n readOnly: true,\n }}\n renderSuggestionsContainer={({ containerProps, children }) => {\n // set refs for autosuggest library and scrollbar positioning\n const { ref, ...otherRefs } = containerProps;\n const containerRef = elem => {\n if (elem) {\n scrollRef.current = elem;\n ref(elem);\n }\n };\n return (\n <div tabIndex=\"-1\" {...otherRefs} ref={containerRef}>\n {children}\n </div>\n );\n }}\n theme={styles}\n />\n </span>\n {icon}\n </label>\n );\n};\n\nSelect.propTypes = {\n value: PropTypes.number.isRequired,\n onSlackTimeSelected: PropTypes.func.isRequired,\n getDisplay: PropTypes.func.isRequired,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n displayName: PropTypes.string.isRequired,\n value: PropTypes.number.isRequired,\n }).isRequired,\n ).isRequired,\n id: PropTypes.string.isRequired,\n label: PropTypes.node.isRequired,\n icon: PropTypes.node.isRequired,\n viaPointIndex: PropTypes.number.isRequired,\n};\n\nexport default Select;\n","const translations = {\n de: {\n 'add-via-button-label': 'Füge Zwischenziel hinzu',\n 'add-via-duration-button-label':\n 'Setze Umsteigezeit für Zwischenziel {{index}}',\n 'add-via-duration-button-label-close':\n 'Schließe Umsteigezeit-Auswahl für Zwischenziel {{index}}',\n 'add-via-duration-button-label-open':\n 'Öffne Umsteigezeit-Auswahl für Zwischenziel {{index}}',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Entferne Zwischenziel {{index}}',\n 'swap-order-button-label': 'Tausche Start mit Ziel',\n 'via-point': 'Zwischenziel',\n 'via-point-index': 'Zwischenziel {{index}}',\n 'viapoint-slack-amount': 'Umsteigezeit',\n },\n en: {\n 'add-via-button-label': 'Add via point',\n 'add-via-duration-button-label': 'Set stop duration at via point {{index}}',\n 'add-via-duration-button-label-close':\n 'Close stop duration selector at via point {{index}}',\n 'add-via-duration-button-label-open':\n 'Open stop duration selector at via point {{index}}',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Remove via point {{index}}',\n 'swap-order-button-label': 'Reverse origin and destination',\n 'via-point': 'Via point',\n 'via-point-index': 'Via point {{index}}',\n 'viapoint-slack-amount': 'Stop duration',\n },\n fi: {\n 'add-via-button-label': 'Lisää välipiste',\n 'add-via-duration-button-label':\n 'Aseta välipisteelle {{index}} pysähdyksen kesto',\n 'add-via-duration-button-label-close':\n 'Avaa välipisteen {{index}} pysähdyksen kesto valitsin',\n 'add-via-duration-button-label-open':\n 'Sulje välipisteen {{index}} pysähdyksen kesto valitsin',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Poista välipiste {{index}}',\n 'swap-order-button-label': 'Käännä reitin suunta vastakkaiseksi',\n 'via-point': 'Välipiste',\n 'via-point-index': 'Välipiste {{index}}',\n 'viapoint-slack-amount': 'Pysähdyksen kesto',\n },\n sv: {\n 'add-via-button-label': 'Lägg till viapunkt',\n 'add-via-duration-button-label':\n 'Ställ in varaktighet för viapunkten {{index}}',\n 'add-via-duration-button-label-close':\n 'Stäng väljaren för varaktighet vid via-punkten {{index}}',\n 'add-via-duration-button-label-open':\n 'Öppna väljaren för varaktighet vid via-punkten {{index}}',\n 'minute-short': 'min',\n 'remove-via-button-label': 'Ta bort viapunkt {{index}}',\n 'swap-order-button-label': 'Sväng ruttens riktning till den motsatta',\n 'via-point': 'Via punkt',\n 'via-point-index': 'Via punkt {{index}}',\n 'viapoint-slack-amount': 'Stoppets varaktighet',\n },\n};\n\nexport default translations;\n","/* eslint-disable import/no-extraneous-dependencies */\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { ReactSortable } from 'react-sortablejs';\nimport i18next from 'i18next';\nimport DTAutoSuggest from '@digitransit-component/digitransit-component-autosuggest';\nimport Icon from '@digitransit-component/digitransit-component-icon';\nimport isEmpty from 'lodash/isEmpty';\nimport Select from './helpers/Select';\nimport translations from './helpers/translations';\nimport styles from './helpers/styles.scss';\n\ni18next.init({\n lng: 'fi',\n fallbackLng: 'fi',\n defaultNS: 'translation',\n interpolation: {\n escapeValue: false, // not needed for react as it escapes by default\n },\n});\n\nexport const getEmptyViaPointPlaceHolder = () => ({});\n\nconst isViaPointEmpty = viaPoint => {\n if (viaPoint === undefined || isEmpty(viaPoint)) {\n return true;\n }\n const keys = Object.keys(viaPoint);\n return (\n keys.length === 1 || (keys.length === 2 && keys.includes('locationSlack'))\n );\n};\n\nconst ItinerarySearchControl = ({\n children,\n className,\n enabled,\n onClick,\n onKeyPress,\n wide,\n ...rest\n}) => (\n <div\n className={styles['itinerary-search-control']}\n style={{ '--width': wide ? '47px' : '40px' }}\n >\n {onClick && enabled && (\n <div\n {...rest}\n className={className}\n onClick={onClick}\n onKeyPress={onKeyPress}\n role=\"button\"\n tabIndex=\"0\"\n >\n {children}\n </div>\n )}\n </div>\n);\n\nconst getSlackDisplay = slackInSeconds => {\n return `${slackInSeconds / 60} ${i18next.t('minute-short')}`;\n};\n\nconst updateViaPointSlack = (\n activeViaPointSlacks,\n updatedViaPointIndex,\n viaPointRemoved = false,\n) => {\n const foundAtIndex = activeViaPointSlacks.indexOf(updatedViaPointIndex);\n if (foundAtIndex > -1) {\n activeViaPointSlacks.splice(foundAtIndex, 1);\n }\n return viaPointRemoved\n ? activeViaPointSlacks.map(value =>\n value > updatedViaPointIndex ? value - 1 : value,\n )\n : activeViaPointSlacks;\n};\n\nconst isKeyboardSelectionEvent = event => {\n const space = [13, ' ', 'Spacebar'];\n const enter = [32, 'Enter'];\n const key = (event && (event.key || event.which || event.keyCode)) || '';\n if (!key || !space.concat(enter).includes(key)) {\n return false;\n }\n event.preventDefault();\n return true;\n};\n\nconst value = location =>\n (location && location.address) ||\n (location && location.gps && location.ready && 'Nykyinen sijainti') ||\n '';\n\nconst getLocationType = location =>\n location && location.gps === true ? 'position' : 'location';\n\nconst getSlackTimeOptions = () => {\n const timeOptions = [];\n for (let i = 0; i <= 9; i++) {\n const valueInMinutes = i * 10;\n timeOptions.push({\n displayName: `${valueInMinutes} ${i18next.t('minute-short')}`,\n value: valueInMinutes * 60,\n });\n }\n return timeOptions;\n};\n\nItinerarySearchControl.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string.isRequired,\n enabled: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n onKeyPress: PropTypes.func.isRequired,\n wide: PropTypes.bool,\n};\n\n/**\n * Panel that renders two DTAutosuggest search fields, including viapoint handling\n *\n * @example\n * const searchContext = {\n * isPeliasLocationAware: false // true / false does Let Pelias suggest based on current user location\n * minimalRegexp: undefined // used for testing min. regexp. For example: new RegExp('.{2,}'),\n * lineRegexp: undefined // identify searches for route numbers/labels: bus | train | metro. For example: new RegExp(\n * // '(^[0-9]+[a-z]?$|^[yuleapinkrtdz]$|(^m[12]?b?$))',\n * // 'i',\n * // ),\n * URL_PELIAS: '' // url for pelias searches\n * feedIDs: ['HSL', 'HSLLautta'] // FeedId's like [HSL, HSLLautta]\n * geocodingSources: ['oa','osm','nlsfi'] // sources for geocoding\n * geocodingSearchParams; {} // Searchparmas fro geocoding\n * getFavouriteLocations: () => ({}), // Function that returns array of favourite locations.\n * getFavouriteStops: () => ({}), // Function that returns array of favourite stops.\n * getLanguage: () => ({}), // Function that returns current language.\n * getFavouriteRoutes: () => ({}), // Function that returns array of favourite routes.\n * getPositions: () => ({}), // Function that returns user's geolocation.\n * getRoutesQuery: () => ({}), // Function that returns query for fetching routes.\n * getStopAndStationsQuery: () => ({}), // Function that fetches favourite stops and stations from graphql API.\n * getFavouriteRoutesQuery: () => ({}), // Function that returns query for fetching favourite routes.\n * getFavouriteVehicleRentalStations: () => ({}), // Function that returns favourite bike rental station.\n * getFavouriteVehicleRentalStationsQuery: () => ({}), // Function that returns query for fetching favourite bike rental stations.\n * startLocationWatch: () => ({}), // Function that locates users geolocation.\n * saveSearch: () => ({}), // Function that saves search to old searches store.\n * clearOldSearches: () => ({}), // Function that clears old searches store.\n * getFutureRoutes: () => ({}), // Function that return future routes\n * saveFutureRoute: () => ({}), // Function that saves a future route\n * clearFutureRoutes: () => ({}), // Function that clears future routes\n * };\n *\n * const origin = {\n * lat: 60.169196,\n * lon: 24.957674,\n * address: 'Aleksanterinkatu, Helsinki',\n * set: true,\n * ready: true,\n * }\n *\n * const destination = {\n * lat: 60.199093,\n * lon: 24.940536,\n * address: 'Opastinsilta 6, Helsinki',\n * set: true,\n * ready: true,\n * }\n * onSelect(item, id) {\n * return null; // Define what to do when a suggestion is being selected. None by default.\n * }\n * onClear(id) {\n * return null; // Define what to do when a suggestion is being selected. None by default.\n * }\n * const getAutoSuggestIcons: {\n * // Called for every city bike station rendered as a search suggestion. Should return the icon and\n * // color used for that station. Two icons are available, 'citybike-stop-digitransit' anditybike-stop-digitransit-secondary'.\n * citybikes: station => {\n * return ['citybike-stop-digitransit', '#f2b62d'];\n * }\n * }\n * const targets = ['Locations', 'Stops', 'Routes']; // Defines what you are searching. all available options are Locations, Stops, Routes, VehicleRentalStations, FutureRoutes, MapPosition and CurrentPosition. Leave empty to search all targets.\n * const sources = ['Favourite', 'History', 'Datasource'] // Defines where you are searching. all available are: Favourite, History (previously searched searches), and Datasource. Leave empty to use all sources.\n * <DTAutosuggestPanel\n * appElement={appElement} // Required. Root element's id. Needed for react-modal component.\n * origin={origin} // Selected origin point\n * destination={destination} // Selected destination point\n * originPlaceHolder={'Give origin'} // Optional Give string shown initially inside origin search field\n * destinationPlaceHolder={'Give destination'} // Optional Give string shown initally inside destination search field\n * initialViaPoints={[]} // Optional. If showViapointControl is set to true, pass initial via points to the panel. Currently no default implementation is given.\n * updateViaPoints={() => return []} // Optional. If showViapointControl is set to true, define how to update your via point list with this function. Currenlty no default implementation is given.\n * swapOrder={() => return null} // Optional. If showSwapControl is set to true, define how to swap order of your points (origin, destination, viapoints). Currently no default implementation is given.\n * searchContext={searchContext}\n * getAutoSuggestIcons={getAutoSuggestIcons}\n * onSelect={this.onSelect}\n * onClear={this.onClear}\n * lang=\"fi\" // Define language fi sv or en.\n * addAnalyticsEvent={null} // Optional. you can record an analytics event if you wish. if passed, component will pass an category, action, name parameters to addAnalyticsEvent\n * disableAutoFocus={false} // Optional. use this to disable autofocus completely from DTAutosuggestPanel\n * sources={sources}\n * targets={targets}\n * isMobile // Optional. Defaults to false. Whether to use mobile search.\n * originMobileLabel=\"Origin label\" // Optional. Custom label text for origin field on mobile.\n * destinationMobileLabel=\"Destination label\" // Optional. Custom label text for destination field on mobile.\n * handleFocusChange={() => {}} // Optional. If defined overrides default onFocusChange behaviour\n * showSwapControl={false} // Optional.\n * showViapointControl={false} // Optional.\n */\nclass DTAutosuggestPanel extends React.Component {\n static propTypes = {\n appElement: PropTypes.string.isRequired,\n origin: PropTypes.object.isRequired,\n destination: PropTypes.object.isRequired,\n originPlaceHolder: PropTypes.string,\n destinationPlaceHolder: PropTypes.string,\n viaPoints: PropTypes.arrayOf(PropTypes.object),\n updateViaPoints: PropTypes.func,\n handleViaPointLocationSelected: PropTypes.func,\n swapOrder: PropTypes.func,\n searchPanelText: PropTypes.string,\n searchContext: PropTypes.any.isRequired,\n onSelect: PropTypes.func,\n onClear: PropTypes.func,\n addAnalyticsEvent: PropTypes.func,\n lang: PropTypes.string,\n disableAutoFocus: PropTypes.bool,\n sources: PropTypes.arrayOf(PropTypes.string),\n targets: PropTypes.arrayOf(PropTypes.string),\n filterResults: PropTypes.func,\n isMobile: PropTypes.bool,\n color: PropTypes.string,\n hoverColor: PropTypes.string,\n originMobileLabel: PropTypes.string,\n destinationMobileLabel: PropTypes.string,\n refPoint: PropTypes.object,\n modeSet: PropTypes.string,\n modeIconColors: PropTypes.object,\n getAutoSuggestIcons: PropTypes.object,\n fontWeights: PropTypes.shape({\n medium: PropTypes.number,\n }),\n showScroll: PropTypes.bool,\n onFocusChange: PropTypes.func,\n isEmbedded: PropTypes.bool,\n showSwapControl: PropTypes.bool,\n showViapointControl: PropTypes.bool,\n };\n\n static defaultProps = {\n viaPoints: [],\n originPlaceHolder: 'give-origin',\n destinationPlaceHolder: 'give-destination',\n swapOrder: undefined,\n updateViaPoints: () => {},\n lang: 'fi',\n sources: [],\n targets: [],\n filterResults: undefined,\n disableAutoFocus: false,\n isMobile: false,\n handleViaPointLocationSelected: undefined,\n color: '#007ac9',\n hoverColor: '#0062a1',\n originMobileLabel: null,\n destinationMobileLabel: null,\n modeSet: undefined,\n modeIconColors: undefined,\n fontWeights: {\n medium: 500,\n },\n showScroll: false,\n onFocusChange: undefined,\n isEmbedded: false,\n showSwapControl: false,\n showViapointControl: false,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n activeSlackInputs: [],\n refs: [],\n };\n Object.keys(translations).forEach(lang => {\n i18next.addResourceBundle(lang, 'translation', translations[lang]);\n });\n }\n\n componentDidMount() {\n i18next.changeLanguage(this.props.lang);\n }\n\n componentDidUpdate() {\n if (i18next.language !== this.props.lang) {\n i18next.changeLanguage(this.props.lang);\n }\n }\n\n storeReference = ref => {\n this.setState(prevState => ({ refs: [...prevState.refs, ref] }));\n };\n\n handleFocusChange = () => {\n const { destination } = this.props;\n if (!destination || !destination.set) {\n this.state.refs[1].focus();\n }\n };\n\n updateViaPoints = viaPoints => {\n if (viaPoints.length === 0) {\n this.props.updateViaPoints([]);\n return;\n }\n this.props.updateViaPoints(viaPoints.filter(vp => !isViaPointEmpty(vp)));\n };\n\n handleToggleViaPointSlackClick = viaPointIndex => {\n const { activeSlackInputs } = this.state;\n this.setState({\n activeSlackInputs: activeSlackInputs.includes(viaPointIndex)\n ? updateViaPointSlack(activeSlackInputs, viaPointIndex)\n : activeSlackInputs.concat([viaPointIndex]),\n });\n };\n\n handleViaPointSlackTimeSelected = (slackTimeInSeconds, i) => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'EditViaPointStopDuration',\n category: 'ItinerarySettings',\n name: slackTimeInSeconds / 60,\n });\n }\n const { viaPoints } = this.props;\n viaPoints[i].locationSlack = Number.parseInt(slackTimeInSeconds, 10);\n this.updateViaPoints(viaPoints);\n };\n\n handleViaPointLocationSelected = (viaPointLocation, i) => {\n this.props.handleViaPointLocationSelected(viaPointLocation, i);\n };\n\n handleRemoveViaPointClick = viaPointIndex => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'RemoveJourneyViaPoint',\n category: 'ItinerarySettings',\n name: null,\n });\n }\n const { activeSlackInputs } = this.state;\n const { viaPoints } = this.props;\n viaPoints.splice(viaPointIndex, 1);\n this.setState(\n {\n activeSlackInputs: updateViaPointSlack(\n activeSlackInputs,\n viaPointIndex,\n true,\n ),\n },\n () => this.updateViaPoints(viaPoints),\n );\n };\n\n handleAddViaPointClick = () => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'AddJourneyViaPoint',\n category: 'ItinerarySettings',\n name: 'QuickSettingsButton',\n });\n }\n const { viaPoints } = this.props;\n viaPoints.push(getEmptyViaPointPlaceHolder());\n // We need to update the state so that placeHolder will show up in panel.\n // eslint-disable-next-line react/no-access-state-in-setstate\n this.setState(this.state);\n };\n\n handleSwapOrderClick = () => {\n if (this.props.addAnalyticsEvent) {\n this.props.addAnalyticsEvent({\n action: 'SwitchJourneyStartAndEndPointOrder',\n category: 'ItinerarySettings',\n name: null,\n });\n }\n const { viaPoints } = this.props;\n viaPoints.reverse();\n this.props.swapOrder();\n };\n\n render() {\n const {\n origin,\n searchPanelText,\n searchContext,\n disableAutoFocus,\n viaPoints,\n originMobileLabel,\n destinationMobileLabel,\n fontWeights,\n onFocusChange,\n showSwapControl,\n showViapointControl,\n } = this.props;\n const { activeSlackInputs } = this.state;\n const slackTime = getSlackTimeOptions();\n const defaultSlackTimeValue = 0;\n const getViaPointSlackTimeOrDefault = (\n viaPoint,\n defaultValue = defaultSlackTimeValue,\n ) => (viaPoint && viaPoint.locationSlack) || defaultValue;\n const isViaPointSlackTimeInputActive = index =>\n activeSlackInputs.includes(index);\n return (\n <div\n className={cx([\n styles['autosuggest-panel'],\n {\n small: this.props.isMobile,\n },\n ])}\n style={{\n '--color': `${this.props.color}`,\n '--font-weight-medium': fontWeights.medium,\n }}\n >\n {' '}\n {searchPanelText ? (\n <div>\n <h1 className={styles['autosuggest-searchpanel-text']}>\n {' '}\n {searchPanelText}\n </h1>\n </div>\n ) : null}\n <div className={styles['origin-input-container']}>\n <DTAutoSuggest\n appElement={this.props.appElement}\n icon=\"mapMarker\"\n id=\"origin\"\n autoFocus={\n disableAutoFocus === true\n ? false\n : !this.props.isMobile && !origin.lat\n }\n storeRef={this.storeReference}\n refPoint={this.props.refPoint}\n className={getLocationType(origin)}\n placeholder={this.props.originPlaceHolder}\n value={value(origin)}\n searchContext={searchContext}\n getAutoSuggestIcons={this.props.getAutoSuggestIcons}\n onSelect={this.props.onSelect}\n onClear={this.props.onClear}\n focusChange={onFocusChange || this.handleFocusChange}\n lang={this.props.lang}\n sources={this.props.sources}\n targets={this.props.targets}\n filterResults={this.props.filterResults}\n isMobile={this.props.isMobile}\n color={this.props.color}\n hoverColor={this.props.hoverColor}\n mobileLabel={originMobileLabel}\n fontWeights={this.props.fontWeights}\n modeSet={this.props.modeSet}\n modeIconColors={this.props.modeIconColors}\n showScroll={this.props.showScroll}\n isEmbedded={this.props.isEmbedded}\n />\n {(showSwapControl || showViapointControl) && (\n <ItinerarySearchControl\n className={styles.opposite}\n enabled={showSwapControl}\n onClick={() => this.handleSwapOrderClick()}\n onKeyPress={e =>\n isKeyboardSelectionEvent(e) && this.handleSwapOrderClick()\n }\n aria-label={i18next.t('swap-order-button-label')}\n >\n <Icon img=\"opposite\" color={this.props.color} />\n </ItinerarySearchControl>\n )}\n </div>\n {viaPoints.length === 0 && (\n <div className={styles['rectangle-container']}>\n <div className={styles.rectangle} />\n </div>\n )}\n <ReactSortable\n className={styles['viapoints-container']}\n list={viaPoints}\n handle={`.${styles['viapoint-before']}`}\n animation={200}\n setList={items => {\n const newViaPoints = items.filter(vp => !isViaPointEmpty(vp));\n if (newViaPoints.length > 0) {\n this.props.updateViaPoints(newViaPoints);\n }\n }}\n >\n {viaPoints.map((o, i) => (\n <div\n className={cx(styles['viapoint-container'])}\n key={`viapoint-${i}`} // eslint-disable-line\n >\n <div className={styles['light-gray-background']}>\n <div className={styles.row}>\n <div\n className={styles['viapoint-before']}\n style={{ cursor: 'move' }}\n >\n <Icon img=\"ellipsis\" rotate={90} color={this.props.color} />\n </div>\n <div\n className={cx(\n `${styles['viapoint-input-container']} ${\n styles[`viapoint-${i + 1}`]\n }`,\n )}\n >\n <DTAutoSuggest\n appElement={this.props.appElement}\n icon=\"mapMarker-via\"\n id=\"via-point\"\n ariaLabel={i18next.t('via-point-index', { index: i + 1 })}\n autoFocus={\n disableAutoFocus === true ? false : !this.props.isMobile\n }\n placeholder=\"via-point\"\n className=\"viapoint\"\n searchContext={searchContext}\n refPoint={this.props.refPoint}\n value={(o && o.address) || ''}\n onSelect={this.props.onSelect}\n onClear={this.props.onClear}\n handleViaPoints={item =>\n this.handleViaPointLocationSelected(item, i)\n }\n lang={this.props.lang}\n sources={this.props.sources}\n targets={this.props.targets}\n filterResults={this.props.filterResults}\n getAutoSuggestIcons={this.props.getAutoSuggestIcons}\n isMobile={this.props.isMobile}\n color={this.props.color}\n hoverColor={this.props.hoverColor}\n fontWeights={this.props.fontWeights}\n modeSet={this.props.modeSet}\n modeIconColors={this.props.modeIconColors}\n showScroll={this.props.showScroll}\n />\n </div>\n <ItinerarySearchControl\n className={styles['add-via-point-slack']}\n enabled={this.props.showViapointControl}\n onClick={() => this.handleToggleViaPointSlackClick(i)}\n onKeyPress={e =>\n isKeyboardSelectionEvent(e) &&\n this.handleToggleViaPointSlackClick(i)\n }\n aria-label={i18next.t(\n isViaPointSlackTimeInputActive(i)\n ? 'add-via-duration-button-label-open'\n : 'add-via-duration-button-label-close',\n { index: i + 1 },\n )}\n wide\n >\n <Icon img=\"time\" color={this.props.color} />\n </ItinerarySearchControl>\n </div>\n {!isViaPointSlackTimeInputActive(i) &&\n viaPoints[i] &&\n viaPoints[i].locationSlack > 0 && (\n <span\n className={styles['viapoint-slack-time']}\n >{`${i18next.t('viapoint-slack-amount')}: ${getSlackDisplay(\n viaPoints[i].locationSlack,\n )}`}</span>\n )}\n <div\n className={cx(styles['input-viapoint-slack-container'], {\n collapsed: !isViaPointSlackTimeInputActive(i),\n })}\n >\n <div className={styles['select-wrapper']}>\n <Select\n id={`viapoint-slack-${i}`}\n label={i18next.t('viapoint-slack-amount')}\n options={slackTime}\n value={getViaPointSlackTimeOrDefault(viaPoints[i])}\n getDisplay={getSlackDisplay}\n viaPointIndex={i}\n icon={\n <span\n className={`${styles['combobox-icon']} ${styles['time-input-icon']}`}\n >\n <Icon img=\"time\" color={this.props.color} />\n </span>\n }\n onSlackTimeSelected={this.handleViaPointSlackTimeSelected}\n />\n </div>\n </div>\n </div>\n <ItinerarySearchControl\n className={styles['remove-via-point']}\n enabled={this.props.showViapointControl}\n onClick={() => this.handleRemoveViaPointClick(i)}\n onKeyPress={e =>\n isKeyboardSelectionEvent(e) &&\n this.handleRemoveViaPointClick(i)\n }\n aria-label={i18next.t('remove-via-button-label', {\n index: i + 1,\n })}\n >\n <Icon img=\"close\" color={this.props.color} />\n </ItinerarySearchControl>\n </div>\n ))}\n </ReactSortable>\n <div className={styles['destination-input-container']}>\n <DTAutoSuggest\n appElement={this.props.appElement}\n icon=\"mapMarker\"\n id=\"destination\"\n autoFocus={\n disableAutoFocus === true\n ? false\n : !this.props.isMobile && !Number.isNaN(origin.lat)\n }\n storeRef={this.storeReference}\n placeholder={this.props.destinationPlaceHolder}\n className={getLocationType(this.props.destination)}\n getAutoSuggestIcons={this.props.getAutoSuggestIcons}\n searchContext={searchContext}\n onSelect={this.props.onSelect}\n onClear={this.props.onClear}\n refPoint={this.props.refPoint}\n value={value(this.props.destination)}\n lang={this.props.lang}\n sources={this.props.sources}\n targets={this.props.targets}\n filterResults={this.props.filterResults}\n isMobile={this.props.isMobile}\n color={this.props.color}\n hoverColor={this.props.hoverColor}\n mobileLabel={destinationMobileLabel}\n fontWeights={this.props.fontWeights}\n modeSet={this.props.modeSet}\n modeIconColors={this.props.modeIconColors}\n showScroll={this.props.showScroll}\n isEmbedded={this.props.isEmbedded}\n />\n {(showSwapControl || showViapointControl) && (\n <ItinerarySearchControl\n className={cx(styles['add-via-point'], styles.more, {\n collapsed: viaPoints.length > 4,\n })}\n enabled={showViapointControl}\n onClick={() => this.handleAddViaPointClick()}\n onKeyPress={e =>\n isKeyboardSelectionEvent(e) && this.handleAddViaPointClick()\n }\n aria-label={i18next.t('add-via-button-label')}\n >\n <Icon\n img=\"viapoint\"\n width={1.25}\n height={1.375}\n color={this.props.color}\n />\n </ItinerarySearchControl>\n )}\n </div>\n </div>\n );\n }\n}\n\nexport default DTAutosuggestPanel;\n"],"names":["_objectWithoutPropertiesLoose","source","excluded","key","i","target","sourceKeys","Object","keys","length","indexOf","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","Select","value","getDisplay","options","onSlackTimeSelected","viaPointIndex","id","label","icon","displayValue","changeDisplayValue","useState","open","changeOpen","useEffect","scrollRef","useRef","scrollIndex","Math","floor","useLayoutEffect","current","scrollTop","inputId","labelId","React","className","styles","htmlFor","Autosuggest","suggestions","getSuggestionValue","s","renderSuggestion","displayName","onSuggestionsFetchRequested","shouldRenderSuggestions","focusInputOnSuggestionClick","onSuggestionsClearRequested","inputProps","onChange","onInputChange","_","newValue","method","onFocus","onBlur","readOnly","renderSuggestionsContainer","containerProps","children","otherRefs","_excluded","assign","tabIndex","elem","theme","process","env","NODE_ENV","propTypes","PropTypes","number","isRequired","func","arrayOf","shape","string","node","translations","de","en","fi","sv","init","lng","fallbackLng","defaultNS","interpolation","escapeValue","getEmptyViaPointPlaceHolder","isViaPointEmpty","viaPoint","undefined","isEmpty","includes","ItinerarySearchControl","_ref","enabled","onClick","onKeyPress","wide","rest","role","getSlackDisplay","slackInSeconds","i18next","t","updateViaPointSlack","activeViaPointSlacks","updatedViaPointIndex","viaPointRemoved","foundAtIndex","splice","map","isKeyboardSelectionEvent","event","which","keyCode","concat","preventDefault","location","address","gps","ready","getLocationType","bool","DTAutosuggestPanel","Component","constructor","props","super","this","storeReference","setState","prevState","refs","handleFocusChange","destination","set","state","focus","updateViaPoints","viaPoints","filter","vp","handleToggleViaPointSlackClick","activeSlackInputs","handleViaPointSlackTimeSelected","slackTimeInSeconds","addAnalyticsEvent","action","category","name","locationSlack","Number","parseInt","handleViaPointLocationSelected","viaPointLocation","handleRemoveViaPointClick","handleAddViaPointClick","push","handleSwapOrderClick","reverse","swapOrder","forEach","lang","addResourceBundle","componentDidMount","changeLanguage","componentDidUpdate","language","render","origin","searchPanelText","searchContext","disableAutoFocus","originMobileLabel","destinationMobileLabel","fontWeights","onFocusChange","showSwapControl","showViapointControl","slackTime","getSlackTimeOptions","timeOptions","valueInMinutes","getViaPointSlackTimeOrDefault","defaultValue","isViaPointSlackTimeInputActive","index","cx","isMobile","color","medium","DTAutoSuggest","appElement","autoFocus","lat","storeRef","refPoint","placeholder","originPlaceHolder","getAutoSuggestIcons","onSelect","onClear","focusChange","sources","targets","filterResults","hoverColor","mobileLabel","modeSet","modeIconColors","showScroll","isEmbedded","opposite","e","Icon","img","rectangle","ReactSortable","list","handle","animation","setList","items","newViaPoints","o","row","cursor","rotate","ariaLabel","handleViaPoints","item","isNaN","destinationPlaceHolder","more","width","height","defaultProps","object","any"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digitransit-component/digitransit-component-autosuggest-panel",
3
- "version": "3.0.2",
3
+ "version": "3.0.4",
4
4
  "description": "digitransit-component autosuggest-panel module",
5
5
  "main": "index.js",
6
6
  "files": [
@@ -28,7 +28,7 @@
28
28
  "author": "Digitransit Authors",
29
29
  "license": "(AGPL-3.0 OR EUPL-1.2)",
30
30
  "peerDependencies": {
31
- "@digitransit-component/digitransit-component-autosuggest": "^2.0.2",
31
+ "@digitransit-component/digitransit-component-autosuggest": "^2.0.4",
32
32
  "@digitransit-component/digitransit-component-icon": "^1.0.1",
33
33
  "@hsl-fi/sass": "^0.2.0",
34
34
  "classnames": "2.2.6",
@@ -42,5 +42,5 @@
42
42
  "react-sortablejs": "2.0.11",
43
43
  "recompose": "0.30.0"
44
44
  },
45
- "gitHead": "3f846fdd91a5cf5eccbe9ffcf51e245b671c341c"
45
+ "gitHead": "db4cde808d5580e6669ac00360d4a467e17481c3"
46
46
  }