@entur-partner/common 9.0.0 → 9.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/UserMenu/components/CookieSettingsMenuItem.d.ts +9 -0
- package/dist/UserMenu/index.d.ts +3 -0
- package/dist/common.cjs.development.js +26 -1
- package/dist/common.cjs.development.js.map +1 -1
- package/dist/common.cjs.production.min.js +1 -1
- package/dist/common.cjs.production.min.js.map +1 -1
- package/dist/common.esm.js +27 -2
- package/dist/common.esm.js.map +1 -1
- package/dist/styles.css +182 -182
- package/package.json +2 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("classnames"),n=require("@entur/typography"),a=require("@entur/icons"),r=require("@entur/button"),l=require("react-router-dom"),o=require("@entur/dropdown"),i=require("@entur/form"),u=require("@entur-partner/util"),s=require("@entur/expand"),c=require("@entur/alert"),m=require("@entur/modal"),d=require("@entur/menu"),p=require("react-helmet-async");function f(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var v=f(e),g=f(t);function h(){return h=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},h.apply(this,arguments)}function E(e,t){return E=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},E(e,t)}function b(e,t){if(null==e)return{};var n,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)t.indexOf(n=l[a])>=0||(r[n]=e[n]);return r}var x=["as","children","contrast","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","padding","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","margin","display","justifyContent","alignItems","maxWidth","width","background","color","flexDirection","flexWrap","className"];function N(e,t){if(Array.isArray(t)){var n=[];return t[0]&&n.push(e+t[0]),t[1]&&n.push(""+e+t[1]+"-lg"),t[2]&&n.push(""+e+t[2]+"-xl"),n}return[e+t]}var y,C,L,w=function(e){var t=e.as,n=void 0===t?"div":t,a=e.children,r=e.contrast,l=e.paddingTop,o=e.paddingRight,i=e.paddingBottom,u=e.paddingLeft,s=e.paddingX,c=e.paddingY,m=e.padding,d=e.marginTop,p=e.marginRight,f=e.marginBottom,E=e.marginLeft,y=e.marginX,C=e.marginY,L=e.margin,w=e.display,P=e.justifyContent,k=e.alignItems,_=e.maxWidth,B=e.width,O=e.background,I=e.color,S=e.flexDirection,F=e.flexWrap,z=e.className,D=b(e,x),M=[],T=l||c||m,V=i||c||m,A=u||s||m,j=o||s||m,q=d||C||L,R=f||C||L,H=E||y||L,U=p||y||L;r&&M.push("eds-contrast"),T&&M.push.apply(M,N("eps-pt-",T)),V&&M.push.apply(M,N("eps-pb-",V)),A&&M.push.apply(M,N("eps-pl-",A)),j&&M.push.apply(M,N("eps-pr-",j)),q&&M.push.apply(M,N("eps-mt-",q)),R&&M.push.apply(M,N("eps-mb-",R)),H&&M.push.apply(M,N("eps-ml-",H)),U&&M.push.apply(M,N("eps-mr-",U)),w&&M.push.apply(M,N("eps-",w)),P&&M.push.apply(M,N("eps-justify-",P)),k&&M.push.apply(M,N("eps-items-",k)),_&&M.push.apply(M,N("eps-max-w-",_)),B&&M.push.apply(M,N("eps-w-",B)),I&&M.push("eps-color-"+I),O&&M.push("eps-bg-"+O),S&&M.push.apply(M,N("eps-flex-",S)),F&&M.push.apply(M,N("eps-flex-wrap-",F));var W=g.default(M,z);return v.default.createElement(n,h({className:W},D),a)},P=function(t){var n=t.space,a=t.className,r=e.Children.toArray(t.children);return r.length<=1?v.default.createElement(v.default.Fragment,null,r):v.default.createElement("div",{className:a},r.map((function(e,t){return t===r.length-1?v.default.createElement("div",{key:t},e):v.default.createElement(w,{paddingBottom:n,key:t},e)})))},k=["children","className"];function _(e){var t,n;return"true"===(void 0)["VITE_APP_"+e]||"true"===(null==(t=window.localStorage)?void 0:t.getItem(e))||"true"===(null==(n=window.localStorage)?void 0:n.getItem("VITE_APP_"+e))}function B(e){return _(e)}exports.Environment=void 0,(L=exports.Environment||(exports.Environment={})).Local="local",L.Development="dev",L.Staging="staging",L.Production="prod";var O=((y={})[exports.Environment.Local]="#B482FB",y[exports.Environment.Development]="#5AC39A",y[exports.Environment.Staging]="#FFCA28",y),I=function(e){return O[e]},S=((C={})[exports.Environment.Local]="Local",C[exports.Environment.Development]="Dev",C[exports.Environment.Staging]="Staging",C[exports.Environment.Production]="Prod",C),F=function(e){return S[e]},z=["title","accentColor"],D=function(e){var t=e.title,n=e.accentColor,a=void 0===n?"#FF5959":n,r=b(e,z);return v.default.createElement("svg",h({width:257,height:37,viewBox:"0 0 257 37"},r),v.default.createElement("title",null,t),v.default.createElement("g",{fill:"none",fillRule:"evenodd"},v.default.createElement("path",{fill:"#FFF",d:"M0 .231V25.72h18.745v-4.318H4.869v-6.163h12.31v-4.318H4.87V4.55h13.876V.231z"}),v.default.createElement("path",{fill:a,d:"M0 36.408h45.253v-4.32H0z"}),v.default.createElement("path",{fill:"#FFF",d:"M40.384.231v15.425L23.656.231h-.521V25.72h4.869V10.573L44.732 25.72h.521V.23zM69.25 15.238h-7.267v21.17h-4.87v-21.17H49.81V10.92h19.44zM83.863 36.86c-1.646 0-3.142-.255-4.486-.765-1.345-.51-2.493-1.23-3.443-2.159-.95-.928-1.687-2.054-2.208-3.378-.522-1.323-.783-2.797-.783-4.422V10.92h4.869v15.216c0 1.277.209 2.333.626 3.169.417.836.933 1.497 1.548 1.985a5.346 5.346 0 001.982 1.01c.707.186 1.339.278 1.895.278.557 0 1.188-.092 1.896-.279a5.35 5.35 0 001.982-1.01c.614-.487 1.13-1.148 1.548-1.984.417-.836.625-1.892.625-3.169V10.92h4.87v15.216c0 1.625-.256 3.1-.766 4.422-.51 1.324-1.24 2.45-2.19 3.378-.952.929-2.1 1.648-3.444 2.159-1.344.51-2.851.766-4.52.766M104.21 24.047h5.546c1.016 0 1.854-.127 2.513-.383.658-.255 1.179-.592 1.56-1.01.381-.418.641-.888.78-1.41.138-.522.208-1.05.208-1.584 0-.627-.099-1.207-.295-1.741a3.718 3.718 0 00-.901-1.393c-.405-.394-.924-.708-1.56-.94-.636-.232-1.404-.348-2.305-.348h-5.546v8.81zm0 4.248v8.113h-4.87V10.92h11.567c1.3 0 2.49.215 3.57.644 1.08.43 2.004 1.033 2.77 1.81a8.287 8.287 0 011.794 2.787c.43 1.079.645 2.257.645 3.534 0 .952-.128 1.874-.383 2.768-.256.894-.61 1.7-1.063 2.42a7.32 7.32 0 01-1.672 1.863 5.929 5.929 0 01-2.178 1.096l6.339 8.566h-5.808l-5.893-8.113h-4.818z"}),v.default.createElement("g",{fill:a},v.default.createElement("path",{d:"M141.051 23.448h5.628c4.185 0 5.989-1.984 5.989-4.942 0-2.742-1.515-4.618-5.989-4.618h-5.628v9.56zm0 3.067v9.776h-3.571V10.75h9.632c6.674 0 9.127 3.211 9.127 7.54 0 4.979-3.102 8.226-9.2 8.226h-5.988zM169.695 28.715c-1.371-.288-2.958-.505-4.401-.505-2.85 0-4.041 1.263-4.041 3.139s1.407 2.706 3.463 2.706c2.49 0 4.979-1.443 4.979-4.221v-1.119zm-4.293-2.958c1.551 0 3.174.253 4.293.469v-.83c0-2.525-1.154-3.896-4.33-3.896-2.164 0-3.824.866-4.942 2.092l-2.02-2.272c1.732-1.66 3.644-2.598 7.07-2.598 5.052 0 7.469 1.876 7.469 7.215v10.354h-3.211V34.02h-.108c-1.082 1.767-3.211 2.705-5.592 2.705-3.32 0-6.241-1.66-6.241-5.303 0-3.103 1.912-5.664 7.612-5.664zM178.965 19.191h3.211v2.886h.108c.938-1.984 2.922-3.355 5.231-3.355.47 0 .938.036 1.335.144l-.144 3.14a6.77 6.77 0 00-1.552-.181c-3.246 0-4.798 2.633-4.798 5.483v8.983h-3.39v-17.1zM199.961 36.291h-1.912c-4.004 0-5.988-.938-5.988-5.772v-8.55h-2.778V19.19h2.778v-4.654h3.355v4.654h4.473v2.778h-4.473v7.973c0 3.427 1.587 3.535 3.319 3.535h1.226v2.814zM219.767 36.291h-3.391V26.84c0-2.778-1.083-5.375-4.257-5.375-3.14 0-5.268 2.597-5.268 6.169v8.658h-3.391v-17.1h3.32v2.814h.143c.794-1.623 3.067-3.283 5.99-3.283 4.941 0 6.854 3.644 6.854 8.081v9.488zM227.847 26.262h10.57c0-2.597-2.272-4.726-5.087-4.726-2.922 0-5.014 1.948-5.483 4.726zm-.036 2.453c.397 3.355 2.633 5.195 5.844 5.195 2.778 0 4.618-1.623 5.484-2.67l2.164 1.804c-1.37 1.913-4.365 3.716-8.045 3.716-4.942 0-8.73-3.535-8.73-8.55 0-5.195 3.752-9.488 8.983-9.488 5.303 0 8.009 4.365 8.009 8.19 0 .649-.036 1.226-.072 1.803H227.81zM246.245 19.191h3.21v2.886h.109c.938-1.984 2.922-3.355 5.231-3.355.469 0 .938.036 1.335.144l-.145 3.14a6.77 6.77 0 00-1.551-.181c-3.247 0-4.798 2.633-4.798 5.483v8.983h-3.391v-17.1z"}))))};function M(e,t){return!(!e||!(e.contains(t.target)||t.composed&&t.composedPath&&t.composedPath().find((function(t){return t!==window&&e.contains(t)}))))}var T=["className","children","userName","open","onOpenChange","environment"],V=function(e){var t,l,o,i=e.className,u=e.children,s=e.userName,c=e.open,m=e.onOpenChange,d=e.environment,p=b(e,T),f=g.default("eps-overflow-menu__group",{"eps-overflow-menu__group--open":c}),E=v.default.useRef(null),x=v.default.useRef(null);return v.default.useEffect((function(){var e=function(e){M(t.current,e)||M(l.current,e)||o()};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),function(){document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[t=E,l=x,o=function(){return m(!1)}]),v.default.createElement("div",null,v.default.createElement(r.SecondaryButton,h({className:g.default("eps-overflow-menu__button",i),onClick:function(){return m(!c)},"aria-haspopup":!0,role:"button","aria-expanded":c,ref:x},p),v.default.createElement("div",{className:"eps-overflow-menu__button-contents"},v.default.createElement("span",{className:"eds-overflow-menu__user-icon"},v.default.createElement(a.UserIcon,{inline:!0})),v.default.createElement(n.Heading6,{margin:"none",as:"span"},s,void 0!==d&&d!==exports.Environment.Production&&v.default.createElement("span",{style:{color:I(d)}}," ","(",F(d),")")),v.default.createElement("span",{className:"eps-arrow-icon"},v.default.createElement(a.DownArrowIcon,{inline:!0})))),c&&v.default.createElement("div",{className:f,role:"menu",ref:E},u))},A=function(e){return v.default.createElement("button",h({className:g.default(e.className,"eps-overflow-menu__item"),role:"menuitem"},e))},j=function(e){var t=e.language,n=e.onLanguageChange,r=e.setOpen,l=e.name,o=B("USE_BCP-47_LANGUAGE_KEY"),i=o?"nb-NO":"nb",u=o?"en-GB":"en";return v.default.createElement(v.default.Fragment,null,t===u?v.default.createElement(A,{onClick:function(){n(i),r(!1)},className:"eps-overflow-menu__item"},v.default.createElement("span",{"aria-hidden":!0,className:"eps-overflow-menu__icon-margin"},v.default.createElement(a.NorwayIcon,{size:"1rem",inline:!0})),l):v.default.createElement(A,{onClick:function(){n(u),r(!1)},className:"eps-overflow-menu__item"},v.default.createElement("span",{"aria-hidden":!0,className:"eps-overflow-menu__icon-margin"},v.default.createElement(a.UKIcon,{size:"1rem",inline:!0})),l))},q=function(e){var t=e.title,n=e.setOpen,r=l.useNavigate();return v.default.createElement(A,{onClick:function(){r("/app-version"),n(!1)},className:"eps-overflow-menu__item"},v.default.createElement("span",{"aria-hidden":!0},v.default.createElement(a.ChannelsIcon,{className:"eps-version-icon",size:"1rem",inline:!0})),t)},R=function(e){var t=e.name,n=e.setOpen,r=e.onNavigateToMyProfile;return v.default.createElement(l.Link,{to:"/permission-admin/my-profile",style:{textDecoration:"none"}},v.default.createElement(A,{onClick:function(){n(!1),r()},className:"eps-overflow-menu__item"},v.default.createElement("span",{"aria-hidden":!0},v.default.createElement(a.UserIcon,{size:"1rem",inline:!0})),t))},H=function(e){var t=e.name,n=e.setOpen,r=e.onLogout;return v.default.createElement(A,{onClick:function(){r(),n(!1)},"data-testid":"user-menu-logout",className:"eps-overflow-menu__item"},v.default.createElement("span",{"aria-hidden":!0},v.default.createElement(a.LogOutIcon,{size:"1rem",inline:!0})),t)},U=["label","organisations","onChange","selectedOrganisationId"],W=["language","options","className","onChange"],G=function(e){var t=e.language,n=e.options,a=e.className,r=e.onChange,l=b(e,W),o=g.default("eps-language-select",a);return v.default.createElement("div",h({},l,{className:o}),v.default.createElement(i.SegmentedControl,{onChange:function(e){u.assertIsDefined(e),r(e)},selectedValue:t},n.map((function(e){return v.default.createElement(i.SegmentedChoice,{key:e.value,value:e.value},e.label,e.required&&v.default.createElement("span",{className:"asterisk-margin"},"*"))}))))},Y=["title","inputComponent","languages","values","onChange","name","variant","feedback"],X=["className","inputComponent","alertLabel","alertLevel","name","languages","values","onChange","defaultLanguage","label","onBlur"],K=["children","className"],J=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={error:null},n}var n,a;a=e,(n=t).prototype=Object.create(a.prototype),n.prototype.constructor=n,E(n,a),t.getDerivedStateFromError=function(e){return{error:e}};var r=t.prototype;return r.componentDidCatch=function(e,t){var n,a;null==(n=(a=this.props).handleError)||n.call(a,e,t)},r.render=function(){var e,t=this,n=this.state.error,a=this.props,r=a.fallback,l=a.children;return n?(e=r)&&"[object Function]"==={}.toString.call(e)?r({retry:function(){return t.setState({error:null})},error:n}):"NotFoundError"===n.name&&"Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node."===n.message?v.default.createElement(Z,null):r:l},t}(e.Component),Q="EP::locale";function Z(){var e="nb"===localStorage.getItem(Q);return v.default.createElement(w,{maxWidth:"large"},v.default.createElement(c.BannerAlertBox,{variant:"info",title:e?"En ny versjon av nettsiden er tilgjengelig.":"A new version of the website is available."},v.default.createElement(w,{paddingBottom:"medium"},v.default.createElement(n.Paragraph,{margin:"none"},e?"Vennligst oppdater.":"Please refresh.")),v.default.createElement(r.PrimaryButton,{onClick:function(){return window.location.reload()}},e?"Oppdater":"Refresh")))}var $=["date","locale","as","hideTime"],ee=function(e){var t=e.date,n=e.locale,a=e.as,r=void 0===a?"main":a,l=e.hideTime,o=b(e,$);return v.default.createElement(r,h({},o),l?u.localeDate(t,n):u.localeDateTime(t,n))},te=["amount","as"],ne=["items","locale","className"],ae=["isOpen","children","message","size","buttons","onConfirm","messages","onClose","onDismiss"],re=function(e){var t=e.isOpen,a=void 0!==t&&t,l=e.children,o=e.message,i=e.size,s=void 0===i?"medium":i,c=e.buttons,d=e.onConfirm,p=e.messages,f=e.onClose,g=e.onDismiss,E=b(e,ae),x=l||o,N=f||g;return v.default.createElement(m.Modal,h({size:s,open:a,onDismiss:N},E),u.isString(x)?v.default.createElement(n.Paragraph,null,x):v.default.createElement(w,{paddingBottom:"medium"},x),v.default.createElement(r.ButtonGroup,null,d?v.default.createElement(v.default.Fragment,null,v.default.createElement(r.SecondaryButton,{onClick:N,"data-testid":"cancel-modal-button"},p.cancel),v.default.createElement(r.PrimaryButton,{onClick:d,"data-testid":"confirm-modal-button"},p.confirm)):c))},le=["children","shouldBlockNavigation"],oe=["as","children","fontSize","color","lineHeight","fontWeight","className"];exports.ActionBar=function(e){var t=e.children;return v.default.createElement(v.default.Fragment,null,v.default.createElement("div",{className:"eps-action-bar-padding"}),v.default.createElement("div",{className:"eps-action-bar"},t))},exports.ActionBarLeft=function(e){return v.default.createElement("div",{className:"eps-action-bar-left"},e.children)},exports.ActionBarRight=function(e){return v.default.createElement("div",{className:"eps-action-bar-right"},e.children)},exports.AuditInfo=function(e){var t=e.items,n=e.locale,a=e.className,r=b(e,ne),l=g.default("ep-audit-info",a);return v.default.createElement("div",h({className:l},r),t.map((function(e,t){var a=e.value;return v.default.createElement(P,{space:"small",key:t},v.default.createElement("div",{className:"ep-audit-info-label"},e.label),v.default.createElement("div",null,u.isDate(a)||u.isDateString(a)?v.default.createElement(ee,{date:a,locale:n}):v.default.createElement("span",null,a)))})))},exports.Box=w,exports.Breadcrumbs=function(e){var t=e.prependBreadcrumbItem,n=e.onBreadcrumbLookup,a=u.splitUrlPath(e.pathname).map((function(e){return{title:n(e),path:e}})).filter((function(e){return void 0!==e.title})),r=a.map((function(e,t){var n=e.path;return v.default.createElement(d.BreadcrumbItem,t===a.length-1?{key:n,as:"span"}:{key:n,as:l.Link,to:n},e.title)}));return v.default.createElement(d.BreadcrumbNavigation,null,t?[t].concat(r):r)},exports.ConfirmModal=re,exports.Content=function(e){var t=e.as,n=void 0===t?"main":t,a=e.children,r=g.default(["eps-content",e.className]);return v.default.createElement(n,{className:r},a)},exports.EnturPartnerLogo=function(e){var t=e.as,n=void 0===t?"nav":t,a=e.altText,r=e.environment,l=g.default(["eps-logo-wrapper",e.className]);return v.default.createElement(n,{className:l},v.default.createElement(D,{title:a,className:"logo",accentColor:void 0!==r&&r!==exports.Environment.Production?I(r):void 0}))},exports.EnturPartnerLogoSvg=D,exports.ErrorBoundary=J,exports.ExpandableMultiLanguageInput=function(e){var t=e.title,n=e.inputComponent,a=e.languages,r=e.values,l=e.onChange,o=e.name,i=e.variant,u=e.feedback,c=b(e,Y);return v.default.createElement(s.ExpandablePanel,{title:t,defaultOpen:!0,contentStyle:{padding:"4px 4px 4px 4px",marginTop:"16px",marginBottom:"16px"}},v.default.createElement(P,{space:"medium"},a.map((function(e){var a=e.value,s=e.label;return v.default.createElement(n,h({"data-testid":"multi-lang-input-"+o+"-"+a,key:t+a,label:e.required?s+"*":s,variant:i&&i(a),feedback:u&&u(a),name:o,onChange:function(e){var t,n,o;t=a,n=e.target.value,o=h({},r),""!==n&&n?o[t]=n:delete o[t],l(o)},value:r[a]||""},c))}))))},exports.FeatureToggle=function(e){var t=e.children;return B(e.flag)?v.default.createElement(v.default.Fragment,null,t):null},exports.FormatCurrencyAmount=function(e){var t=e.amount,n=e.as,a=void 0===n?"span":n,r=b(e,te),l=Number(t)||0,o=new Intl.NumberFormat("nb-NO",{maximumFractionDigits:2,minimumFractionDigits:2}).format(l);return v.default.createElement(a,h({},r),o)},exports.FormatDateTime=ee,exports.LanguageSelect=G,exports.Link=function(e){return v.default.createElement(n.Link,h({},e,{as:l.Link}),e.children)},exports.LinkButton=function(e){var t=e.children,a=e.className,r=b(e,k);return v.default.createElement(n.Link,h({},r,{as:"button",className:g.default("eps-link-button",a)}),t)},exports.Menu=function(e){var t=e.as,n=void 0===t?"nav":t,a=e.children,r=g.default(["eds-contrast","eps-menu",e.className]);return v.default.createElement(n,{className:r},a)},exports.MultiLanguageInput=function(t){var n=t.className,a=t.inputComponent,r=t.alertLabel,l=t.alertLevel,o=t.name,i=t.languages,u=t.values,s=t.onChange,c=t.defaultLanguage,m=void 0===c?"nob":c,d=t.label,p=void 0===d?"":d,f=t.onBlur,E=void 0===f?function(){}:f,x=b(t,X),N=e.useState(m),y=N[0],C=N[1],L=g.default("multi-language-input",n),w=u[y];return v.default.createElement("div",{className:L,tabIndex:0,onBlur:function(e){e.persist();var t=e.currentTarget;setTimeout((function(){t&&!t.contains(document.activeElement)&&E(e)}),0)},"data-testid":"multi-lang-input-"+o},v.default.createElement(P,{space:"extraSmall"},v.default.createElement(G,{language:y,options:i,onChange:function(e){return function(e){C(e)}(e)}}),v.default.createElement(a,h({label:p,variant:l,feedback:r,name:o,className:"language-item",onChange:function(e){return t=e.target.value,n=Object.assign({},u),""!==t&&t?n[y]=t:delete n[y],void s(n);var t,n},value:w||""},x))))},exports.OrganisationDropDown=function(t){var n=t.label,a=t.organisations,r=t.onChange,l=t.selectedOrganisationId,i=b(t,U),u=e.useState(),s=u[0],c=u[1];return e.useEffect((function(){c(a.find((function(e){return e.organisationId===l})))}),[l]),v.default.createElement(o.SearchableDropdown,h({label:n,items:[].concat(a.sort((function(e,t){return e.tradingName.localeCompare(t.tradingName,"nb")})).map((function(e){return{value:e.organisationId,label:e.tradingName}}))),selectedItem:s?{value:s.organisationId,label:s.tradingName}:null,onChange:function(e){e&&r(e.value)},clearable:!1},i))},exports.PageTitle=function(e){var t=e.onBreadcrumbLookup,n=u.splitUrlPath(e.pathname).map((function(e){return{title:t(e),path:e}})).filter((function(e){return void 0!==e.title})).map((function(e){return e.title})).reverse().join(" | ");return v.default.createElement(p.Helmet,null,v.default.createElement("title",null,n," | Entur Partner"))},exports.Pager=function(e){var t=e.onPageChange,n=e.currentPage,a=Math.ceil(e.collectionSize/e.pageSize);return v.default.createElement(d.Pagination,{pageCount:a,currentPage:n,onPageChange:function(e){t(e)}})},exports.PermissionCheck=function(e){var t=e.children,n=e.fallback,a=void 0===n?null:n,r=e.permissions,l=e.oneOf,o=void 0===l?[]:l,i=e.all,s=u.hasAllPermissions(void 0===i?[]:i,r),c=u.hasOneOfPermissions(o,r);return v.default.createElement(v.default.Fragment,null,s&&c?t:a)},exports.RouteLeavingGuard=function(e){var t=e.children,n=e.shouldBlockNavigation,a=b(e,le);u.assertIsDefined(!!l.useInRouterContext()||void 0,"RouteLeavingGuard must be used within a data router.");var r=l.useBlocker((function(e){var t=e.nextLocation;return e.currentLocation.pathname!==t.pathname&&n(t)}));return v.default.createElement(re,h({onDismiss:function(){"blocked"===r.state&&r.reset()},open:"blocked"===r.state,onConfirm:function(){"blocked"===r.state&&r.proceed()}},a),t)},exports.Stack=P,exports.StatusLabel=function(e){var t=e.active,n=e.label,a=void 0===n?"":n,r=e.showBullet,l=e.center,o=g.default("eps-status-label__bullet",{active:void 0!==t&&t,aggressive:e.aggressiveInactive}),i=g.default("eps-status-label",{center:l});return v.default.createElement("div",{className:i},r&&v.default.createElement("div",{className:o}),v.default.createElement("div",null,a))},exports.Text=function(e){var t=e.as,n=void 0===t?"span":t,a=e.children,r=e.fontSize,l=e.color,o=e.lineHeight,i=e.fontWeight,u=e.className,s=b(e,oe),c=[];r&&c.push.apply(c,N("eps-font-size-",r)),o&&c.push.apply(c,N("eps-line-height-",o)),i&&c.push("eps-font-weight-"+i);var m=g.default(c,u);return v.default.createElement(w,h({as:n,color:l,className:m},s),a)},exports.Unbutton=function(e){var t=e.children,n=e.className,a=b(e,K);return v.default.createElement(r.Button,h({variant:"primary"},a,{className:g.default("eps-unbutton",n)}),t)},exports.UserMenu=function(t){var n=t.messages,a=t.onLogout,r=t.onLanguageChange,l=t.userName,o=t.language,i=t.environment,u=t.showVersionItem,s=t.showMyProfileItem,c=t.onNavigateToMyProfile,m=g.default(["eps-user-menu__trigger-button",t.className]),d=e.useState(!1),p=d[1];return v.default.createElement("div",{id:"eps-user-menu"},v.default.createElement(V,{open:d[0],onOpenChange:p,className:m,userName:l,environment:i},v.default.createElement("div",{id:"eps-overflow-menu"},v.default.createElement(j,{name:n.switchLanguage,language:o,onLanguageChange:r,setOpen:p}),u&&n.appVersion&&v.default.createElement(q,{title:n.appVersion,setOpen:p}),s&&n.myProfile&&v.default.createElement(R,{name:n.myProfile,setOpen:p,onNavigateToMyProfile:c}),v.default.createElement(H,{name:n.logout,setOpen:p,onLogout:a}))))},exports.featureFlag=_,exports.getColorForEnvironment=I,exports.getHumanReadableEnvironment=F,exports.responsiveProp=N,exports.useEventListener=function(t,n,a){void 0===a&&(a=window);var r=e.useRef();e.useEffect((function(){r.current=n}),[n]),e.useEffect((function(){if(a&&a.addEventListener){var e=function(e){return null==r.current?void 0:r.current(e)};return a.addEventListener(t,e),function(){a.removeEventListener(t,e)}}}),[t,a])},exports.useFeatureToggle=B;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("classnames"),n=require("@entur/typography"),a=require("@entur/icons"),r=require("@entur/button"),l=require("react-router-dom"),o=require("@entur/dropdown"),i=require("@entur/form"),u=require("@entur-partner/util"),s=require("@entur/expand"),c=require("@entur/alert"),m=require("@entur/modal"),d=require("@entur/menu"),p=require("react-helmet-async");function f(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var v=f(e),g=f(t);function h(){return h=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},h.apply(this,arguments)}function E(e,t){return E=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},E(e,t)}function b(e,t){if(null==e)return{};var n,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)t.indexOf(n=l[a])>=0||(r[n]=e[n]);return r}var x=["as","children","contrast","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","padding","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","margin","display","justifyContent","alignItems","maxWidth","width","background","color","flexDirection","flexWrap","className"];function N(e,t){if(Array.isArray(t)){var n=[];return t[0]&&n.push(e+t[0]),t[1]&&n.push(""+e+t[1]+"-lg"),t[2]&&n.push(""+e+t[2]+"-xl"),n}return[e+t]}var C,y,w,L=function(e){var t=e.as,n=void 0===t?"div":t,a=e.children,r=e.contrast,l=e.paddingTop,o=e.paddingRight,i=e.paddingBottom,u=e.paddingLeft,s=e.paddingX,c=e.paddingY,m=e.padding,d=e.marginTop,p=e.marginRight,f=e.marginBottom,E=e.marginLeft,C=e.marginX,y=e.marginY,w=e.margin,L=e.display,k=e.justifyContent,P=e.alignItems,_=e.maxWidth,O=e.width,B=e.background,S=e.color,I=e.flexDirection,z=e.flexWrap,F=e.className,D=b(e,x),M=[],T=l||c||m,V=i||c||m,A=u||s||m,j=o||s||m,q=d||y||w,R=f||y||w,H=E||C||w,U=p||C||w;r&&M.push("eds-contrast"),T&&M.push.apply(M,N("eps-pt-",T)),V&&M.push.apply(M,N("eps-pb-",V)),A&&M.push.apply(M,N("eps-pl-",A)),j&&M.push.apply(M,N("eps-pr-",j)),q&&M.push.apply(M,N("eps-mt-",q)),R&&M.push.apply(M,N("eps-mb-",R)),H&&M.push.apply(M,N("eps-ml-",H)),U&&M.push.apply(M,N("eps-mr-",U)),L&&M.push.apply(M,N("eps-",L)),k&&M.push.apply(M,N("eps-justify-",k)),P&&M.push.apply(M,N("eps-items-",P)),_&&M.push.apply(M,N("eps-max-w-",_)),O&&M.push.apply(M,N("eps-w-",O)),S&&M.push("eps-color-"+S),B&&M.push("eps-bg-"+B),I&&M.push.apply(M,N("eps-flex-",I)),z&&M.push.apply(M,N("eps-flex-wrap-",z));var W=g.default(M,F);return v.default.createElement(n,h({className:W},D),a)},k=function(t){var n=t.space,a=t.className,r=e.Children.toArray(t.children);return r.length<=1?v.default.createElement(v.default.Fragment,null,r):v.default.createElement("div",{className:a},r.map((function(e,t){return t===r.length-1?v.default.createElement("div",{key:t},e):v.default.createElement(L,{paddingBottom:n,key:t},e)})))},P=["children","className"];function _(e){var t,n;return"true"===(void 0)["VITE_APP_"+e]||"true"===(null==(t=window.localStorage)?void 0:t.getItem(e))||"true"===(null==(n=window.localStorage)?void 0:n.getItem("VITE_APP_"+e))}function O(e){return _(e)}exports.Environment=void 0,(w=exports.Environment||(exports.Environment={})).Local="local",w.Development="dev",w.Staging="staging",w.Production="prod";var B=((C={})[exports.Environment.Local]="#B482FB",C[exports.Environment.Development]="#5AC39A",C[exports.Environment.Staging]="#FFCA28",C),S=function(e){return B[e]},I=((y={})[exports.Environment.Local]="Local",y[exports.Environment.Development]="Dev",y[exports.Environment.Staging]="Staging",y[exports.Environment.Production]="Prod",y),z=function(e){return I[e]},F=["title","accentColor"],D=function(e){var t=e.title,n=e.accentColor,a=void 0===n?"#FF5959":n,r=b(e,F);return v.default.createElement("svg",h({width:257,height:37,viewBox:"0 0 257 37"},r),v.default.createElement("title",null,t),v.default.createElement("g",{fill:"none",fillRule:"evenodd"},v.default.createElement("path",{fill:"#FFF",d:"M0 .231V25.72h18.745v-4.318H4.869v-6.163h12.31v-4.318H4.87V4.55h13.876V.231z"}),v.default.createElement("path",{fill:a,d:"M0 36.408h45.253v-4.32H0z"}),v.default.createElement("path",{fill:"#FFF",d:"M40.384.231v15.425L23.656.231h-.521V25.72h4.869V10.573L44.732 25.72h.521V.23zM69.25 15.238h-7.267v21.17h-4.87v-21.17H49.81V10.92h19.44zM83.863 36.86c-1.646 0-3.142-.255-4.486-.765-1.345-.51-2.493-1.23-3.443-2.159-.95-.928-1.687-2.054-2.208-3.378-.522-1.323-.783-2.797-.783-4.422V10.92h4.869v15.216c0 1.277.209 2.333.626 3.169.417.836.933 1.497 1.548 1.985a5.346 5.346 0 001.982 1.01c.707.186 1.339.278 1.895.278.557 0 1.188-.092 1.896-.279a5.35 5.35 0 001.982-1.01c.614-.487 1.13-1.148 1.548-1.984.417-.836.625-1.892.625-3.169V10.92h4.87v15.216c0 1.625-.256 3.1-.766 4.422-.51 1.324-1.24 2.45-2.19 3.378-.952.929-2.1 1.648-3.444 2.159-1.344.51-2.851.766-4.52.766M104.21 24.047h5.546c1.016 0 1.854-.127 2.513-.383.658-.255 1.179-.592 1.56-1.01.381-.418.641-.888.78-1.41.138-.522.208-1.05.208-1.584 0-.627-.099-1.207-.295-1.741a3.718 3.718 0 00-.901-1.393c-.405-.394-.924-.708-1.56-.94-.636-.232-1.404-.348-2.305-.348h-5.546v8.81zm0 4.248v8.113h-4.87V10.92h11.567c1.3 0 2.49.215 3.57.644 1.08.43 2.004 1.033 2.77 1.81a8.287 8.287 0 011.794 2.787c.43 1.079.645 2.257.645 3.534 0 .952-.128 1.874-.383 2.768-.256.894-.61 1.7-1.063 2.42a7.32 7.32 0 01-1.672 1.863 5.929 5.929 0 01-2.178 1.096l6.339 8.566h-5.808l-5.893-8.113h-4.818z"}),v.default.createElement("g",{fill:a},v.default.createElement("path",{d:"M141.051 23.448h5.628c4.185 0 5.989-1.984 5.989-4.942 0-2.742-1.515-4.618-5.989-4.618h-5.628v9.56zm0 3.067v9.776h-3.571V10.75h9.632c6.674 0 9.127 3.211 9.127 7.54 0 4.979-3.102 8.226-9.2 8.226h-5.988zM169.695 28.715c-1.371-.288-2.958-.505-4.401-.505-2.85 0-4.041 1.263-4.041 3.139s1.407 2.706 3.463 2.706c2.49 0 4.979-1.443 4.979-4.221v-1.119zm-4.293-2.958c1.551 0 3.174.253 4.293.469v-.83c0-2.525-1.154-3.896-4.33-3.896-2.164 0-3.824.866-4.942 2.092l-2.02-2.272c1.732-1.66 3.644-2.598 7.07-2.598 5.052 0 7.469 1.876 7.469 7.215v10.354h-3.211V34.02h-.108c-1.082 1.767-3.211 2.705-5.592 2.705-3.32 0-6.241-1.66-6.241-5.303 0-3.103 1.912-5.664 7.612-5.664zM178.965 19.191h3.211v2.886h.108c.938-1.984 2.922-3.355 5.231-3.355.47 0 .938.036 1.335.144l-.144 3.14a6.77 6.77 0 00-1.552-.181c-3.246 0-4.798 2.633-4.798 5.483v8.983h-3.39v-17.1zM199.961 36.291h-1.912c-4.004 0-5.988-.938-5.988-5.772v-8.55h-2.778V19.19h2.778v-4.654h3.355v4.654h4.473v2.778h-4.473v7.973c0 3.427 1.587 3.535 3.319 3.535h1.226v2.814zM219.767 36.291h-3.391V26.84c0-2.778-1.083-5.375-4.257-5.375-3.14 0-5.268 2.597-5.268 6.169v8.658h-3.391v-17.1h3.32v2.814h.143c.794-1.623 3.067-3.283 5.99-3.283 4.941 0 6.854 3.644 6.854 8.081v9.488zM227.847 26.262h10.57c0-2.597-2.272-4.726-5.087-4.726-2.922 0-5.014 1.948-5.483 4.726zm-.036 2.453c.397 3.355 2.633 5.195 5.844 5.195 2.778 0 4.618-1.623 5.484-2.67l2.164 1.804c-1.37 1.913-4.365 3.716-8.045 3.716-4.942 0-8.73-3.535-8.73-8.55 0-5.195 3.752-9.488 8.983-9.488 5.303 0 8.009 4.365 8.009 8.19 0 .649-.036 1.226-.072 1.803H227.81zM246.245 19.191h3.21v2.886h.109c.938-1.984 2.922-3.355 5.231-3.355.469 0 .938.036 1.335.144l-.145 3.14a6.77 6.77 0 00-1.551-.181c-3.247 0-4.798 2.633-4.798 5.483v8.983h-3.391v-17.1z"}))))};function M(e,t){return!(!e||!(e.contains(t.target)||t.composed&&t.composedPath&&t.composedPath().find((function(t){return t!==window&&e.contains(t)}))))}var T=["className","children","userName","open","onOpenChange","environment"],V=function(e){var t,l,o,i=e.className,u=e.children,s=e.userName,c=e.open,m=e.onOpenChange,d=e.environment,p=b(e,T),f=g.default("eps-overflow-menu__group",{"eps-overflow-menu__group--open":c}),E=v.default.useRef(null),x=v.default.useRef(null);return v.default.useEffect((function(){var e=function(e){M(t.current,e)||M(l.current,e)||o()};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),function(){document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[t=E,l=x,o=function(){return m(!1)}]),v.default.createElement("div",null,v.default.createElement(r.SecondaryButton,h({className:g.default("eps-overflow-menu__button",i),onClick:function(){return m(!c)},"aria-haspopup":!0,role:"button","aria-expanded":c,ref:x},p),v.default.createElement("div",{className:"eps-overflow-menu__button-contents"},v.default.createElement("span",{className:"eds-overflow-menu__user-icon"},v.default.createElement(a.UserIcon,{inline:!0})),v.default.createElement(n.Heading6,{margin:"none",as:"span"},s,void 0!==d&&d!==exports.Environment.Production&&v.default.createElement("span",{style:{color:S(d)}}," ","(",z(d),")")),v.default.createElement("span",{className:"eps-arrow-icon"},v.default.createElement(a.DownArrowIcon,{inline:!0})))),c&&v.default.createElement("div",{className:f,role:"menu",ref:E},u))},A=function(e){return v.default.createElement("button",h({className:g.default(e.className,"eps-overflow-menu__item"),role:"menuitem"},e))},j=function(e){var t=e.language,n=e.onLanguageChange,r=e.setOpen,l=e.name,o=O("USE_BCP-47_LANGUAGE_KEY"),i=o?"nb-NO":"nb",u=o?"en-GB":"en";return v.default.createElement(v.default.Fragment,null,t===u?v.default.createElement(A,{onClick:function(){n(i),r(!1)},className:"eps-overflow-menu__item"},v.default.createElement("span",{"aria-hidden":!0,className:"eps-overflow-menu__icon-margin"},v.default.createElement(a.NorwayIcon,{size:"1rem",inline:!0})),l):v.default.createElement(A,{onClick:function(){n(u),r(!1)},className:"eps-overflow-menu__item"},v.default.createElement("span",{"aria-hidden":!0,className:"eps-overflow-menu__icon-margin"},v.default.createElement(a.UKIcon,{size:"1rem",inline:!0})),l))},q=function(e){var t=e.title,n=e.setOpen,r=l.useNavigate();return v.default.createElement(A,{onClick:function(){r("/app-version"),n(!1)},className:"eps-overflow-menu__item"},v.default.createElement("span",{"aria-hidden":!0},v.default.createElement(a.ChannelsIcon,{className:"eps-version-icon",size:"1rem",inline:!0})),t)},R=function(e){var t=e.name,n=e.setOpen,r=e.onNavigateToMyProfile;return v.default.createElement(l.Link,{to:"/permission-admin/my-profile",style:{textDecoration:"none"}},v.default.createElement(A,{onClick:function(){n(!1),r()},className:"eps-overflow-menu__item"},v.default.createElement("span",{"aria-hidden":!0},v.default.createElement(a.UserIcon,{size:"1rem",inline:!0})),t))},H=function(e){var t=e.name,n=e.setOpen,r=e.onLogout;return v.default.createElement(A,{onClick:function(){r(),n(!1)},"data-testid":"user-menu-logout",className:"eps-overflow-menu__item"},v.default.createElement("span",{"aria-hidden":!0},v.default.createElement(a.LogOutIcon,{size:"1rem",inline:!0})),t)},U=function(e){var t=e.name,n=e.setOpen,r=e.onCookieSettingsOpen;return v.default.createElement(A,{onClick:function(){r(),n(!1)},className:"eps-overflow-menu__item"},v.default.createElement("span",{"aria-hidden":!0},v.default.createElement(a.CookieIcon,{size:"1rem",inline:!0})),t)},W=["label","organisations","onChange","selectedOrganisationId"],G=["language","options","className","onChange"],Y=function(e){var t=e.language,n=e.options,a=e.className,r=e.onChange,l=b(e,G),o=g.default("eps-language-select",a);return v.default.createElement("div",h({},l,{className:o}),v.default.createElement(i.SegmentedControl,{onChange:function(e){u.assertIsDefined(e),r(e)},selectedValue:t},n.map((function(e){return v.default.createElement(i.SegmentedChoice,{key:e.value,value:e.value},e.label,e.required&&v.default.createElement("span",{className:"asterisk-margin"},"*"))}))))},X=["title","inputComponent","languages","values","onChange","name","variant","feedback"],K=["className","inputComponent","alertLabel","alertLevel","name","languages","values","onChange","defaultLanguage","label","onBlur"],J=["children","className"],Q=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={error:null},n}var n,a;a=e,(n=t).prototype=Object.create(a.prototype),n.prototype.constructor=n,E(n,a),t.getDerivedStateFromError=function(e){return{error:e}};var r=t.prototype;return r.componentDidCatch=function(e,t){var n,a;null==(n=(a=this.props).handleError)||n.call(a,e,t)},r.render=function(){var e,t=this,n=this.state.error,a=this.props,r=a.fallback,l=a.children;return n?(e=r)&&"[object Function]"==={}.toString.call(e)?r({retry:function(){return t.setState({error:null})},error:n}):"NotFoundError"===n.name&&"Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node."===n.message?v.default.createElement($,null):r:l},t}(e.Component),Z="EP::locale";function $(){var e="nb"===localStorage.getItem(Z);return v.default.createElement(L,{maxWidth:"large"},v.default.createElement(c.BannerAlertBox,{variant:"info",title:e?"En ny versjon av nettsiden er tilgjengelig.":"A new version of the website is available."},v.default.createElement(L,{paddingBottom:"medium"},v.default.createElement(n.Paragraph,{margin:"none"},e?"Vennligst oppdater.":"Please refresh.")),v.default.createElement(r.PrimaryButton,{onClick:function(){return window.location.reload()}},e?"Oppdater":"Refresh")))}var ee=["date","locale","as","hideTime"],te=function(e){var t=e.date,n=e.locale,a=e.as,r=void 0===a?"main":a,l=e.hideTime,o=b(e,ee);return v.default.createElement(r,h({},o),l?u.localeDate(t,n):u.localeDateTime(t,n))},ne=["amount","as"],ae=["items","locale","className"],re=["isOpen","children","message","size","buttons","onConfirm","messages","onClose","onDismiss"],le=function(e){var t=e.isOpen,a=void 0!==t&&t,l=e.children,o=e.message,i=e.size,s=void 0===i?"medium":i,c=e.buttons,d=e.onConfirm,p=e.messages,f=e.onClose,g=e.onDismiss,E=b(e,re),x=l||o,N=f||g;return v.default.createElement(m.Modal,h({size:s,open:a,onDismiss:N},E),u.isString(x)?v.default.createElement(n.Paragraph,null,x):v.default.createElement(L,{paddingBottom:"medium"},x),v.default.createElement(r.ButtonGroup,null,d?v.default.createElement(v.default.Fragment,null,v.default.createElement(r.SecondaryButton,{onClick:N,"data-testid":"cancel-modal-button"},p.cancel),v.default.createElement(r.PrimaryButton,{onClick:d,"data-testid":"confirm-modal-button"},p.confirm)):c))},oe=["children","shouldBlockNavigation"],ie=["as","children","fontSize","color","lineHeight","fontWeight","className"];exports.ActionBar=function(e){var t=e.children;return v.default.createElement(v.default.Fragment,null,v.default.createElement("div",{className:"eps-action-bar-padding"}),v.default.createElement("div",{className:"eps-action-bar"},t))},exports.ActionBarLeft=function(e){return v.default.createElement("div",{className:"eps-action-bar-left"},e.children)},exports.ActionBarRight=function(e){return v.default.createElement("div",{className:"eps-action-bar-right"},e.children)},exports.AuditInfo=function(e){var t=e.items,n=e.locale,a=e.className,r=b(e,ae),l=g.default("ep-audit-info",a);return v.default.createElement("div",h({className:l},r),t.map((function(e,t){var a=e.value;return v.default.createElement(k,{space:"small",key:t},v.default.createElement("div",{className:"ep-audit-info-label"},e.label),v.default.createElement("div",null,u.isDate(a)||u.isDateString(a)?v.default.createElement(te,{date:a,locale:n}):v.default.createElement("span",null,a)))})))},exports.Box=L,exports.Breadcrumbs=function(e){var t=e.prependBreadcrumbItem,n=e.onBreadcrumbLookup,a=u.splitUrlPath(e.pathname).map((function(e){return{title:n(e),path:e}})).filter((function(e){return void 0!==e.title})),r=a.map((function(e,t){var n=e.path;return v.default.createElement(d.BreadcrumbItem,t===a.length-1?{key:n,as:"span"}:{key:n,as:l.Link,to:n},e.title)}));return v.default.createElement(d.BreadcrumbNavigation,null,t?[t].concat(r):r)},exports.ConfirmModal=le,exports.Content=function(e){var t=e.as,n=void 0===t?"main":t,a=e.children,r=g.default(["eps-content",e.className]);return v.default.createElement(n,{className:r},a)},exports.EnturPartnerLogo=function(e){var t=e.as,n=void 0===t?"nav":t,a=e.altText,r=e.environment,l=g.default(["eps-logo-wrapper",e.className]);return v.default.createElement(n,{className:l},v.default.createElement(D,{title:a,className:"logo",accentColor:void 0!==r&&r!==exports.Environment.Production?S(r):void 0}))},exports.EnturPartnerLogoSvg=D,exports.ErrorBoundary=Q,exports.ExpandableMultiLanguageInput=function(e){var t=e.title,n=e.inputComponent,a=e.languages,r=e.values,l=e.onChange,o=e.name,i=e.variant,u=e.feedback,c=b(e,X);return v.default.createElement(s.ExpandablePanel,{title:t,defaultOpen:!0,contentStyle:{padding:"4px 4px 4px 4px",marginTop:"16px",marginBottom:"16px"}},v.default.createElement(k,{space:"medium"},a.map((function(e){var a=e.value,s=e.label;return v.default.createElement(n,h({"data-testid":"multi-lang-input-"+o+"-"+a,key:t+a,label:e.required?s+"*":s,variant:i&&i(a),feedback:u&&u(a),name:o,onChange:function(e){var t,n,o;t=a,n=e.target.value,o=h({},r),""!==n&&n?o[t]=n:delete o[t],l(o)},value:r[a]||""},c))}))))},exports.FeatureToggle=function(e){var t=e.children;return O(e.flag)?v.default.createElement(v.default.Fragment,null,t):null},exports.FormatCurrencyAmount=function(e){var t=e.amount,n=e.as,a=void 0===n?"span":n,r=b(e,ne),l=Number(t)||0,o=new Intl.NumberFormat("nb-NO",{maximumFractionDigits:2,minimumFractionDigits:2}).format(l);return v.default.createElement(a,h({},r),o)},exports.FormatDateTime=te,exports.LanguageSelect=Y,exports.Link=function(e){return v.default.createElement(n.Link,h({},e,{as:l.Link}),e.children)},exports.LinkButton=function(e){var t=e.children,a=e.className,r=b(e,P);return v.default.createElement(n.Link,h({},r,{as:"button",className:g.default("eps-link-button",a)}),t)},exports.Menu=function(e){var t=e.as,n=void 0===t?"nav":t,a=e.children,r=g.default(["eds-contrast","eps-menu",e.className]);return v.default.createElement(n,{className:r},a)},exports.MultiLanguageInput=function(t){var n=t.className,a=t.inputComponent,r=t.alertLabel,l=t.alertLevel,o=t.name,i=t.languages,u=t.values,s=t.onChange,c=t.defaultLanguage,m=void 0===c?"nob":c,d=t.label,p=void 0===d?"":d,f=t.onBlur,E=void 0===f?function(){}:f,x=b(t,K),N=e.useState(m),C=N[0],y=N[1],w=g.default("multi-language-input",n),L=u[C];return v.default.createElement("div",{className:w,tabIndex:0,onBlur:function(e){e.persist();var t=e.currentTarget;setTimeout((function(){t&&!t.contains(document.activeElement)&&E(e)}),0)},"data-testid":"multi-lang-input-"+o},v.default.createElement(k,{space:"extraSmall"},v.default.createElement(Y,{language:C,options:i,onChange:function(e){return function(e){y(e)}(e)}}),v.default.createElement(a,h({label:p,variant:l,feedback:r,name:o,className:"language-item",onChange:function(e){return t=e.target.value,n=Object.assign({},u),""!==t&&t?n[C]=t:delete n[C],void s(n);var t,n},value:L||""},x))))},exports.OrganisationDropDown=function(t){var n=t.label,a=t.organisations,r=t.onChange,l=t.selectedOrganisationId,i=b(t,W),u=e.useState(),s=u[0],c=u[1];return e.useEffect((function(){c(a.find((function(e){return e.organisationId===l})))}),[l]),v.default.createElement(o.SearchableDropdown,h({label:n,items:[].concat(a.sort((function(e,t){return e.tradingName.localeCompare(t.tradingName,"nb")})).map((function(e){return{value:e.organisationId,label:e.tradingName}}))),selectedItem:s?{value:s.organisationId,label:s.tradingName}:null,onChange:function(e){e&&r(e.value)},clearable:!1},i))},exports.PageTitle=function(e){var t=e.onBreadcrumbLookup,n=u.splitUrlPath(e.pathname).map((function(e){return{title:t(e),path:e}})).filter((function(e){return void 0!==e.title})).map((function(e){return e.title})).reverse().join(" | ");return v.default.createElement(p.Helmet,null,v.default.createElement("title",null,n," | Entur Partner"))},exports.Pager=function(e){var t=e.onPageChange,n=e.currentPage,a=Math.ceil(e.collectionSize/e.pageSize);return v.default.createElement(d.Pagination,{pageCount:a,currentPage:n,onPageChange:function(e){t(e)}})},exports.PermissionCheck=function(e){var t=e.children,n=e.fallback,a=void 0===n?null:n,r=e.permissions,l=e.oneOf,o=void 0===l?[]:l,i=e.all,s=u.hasAllPermissions(void 0===i?[]:i,r),c=u.hasOneOfPermissions(o,r);return v.default.createElement(v.default.Fragment,null,s&&c?t:a)},exports.RouteLeavingGuard=function(e){var t=e.children,n=e.shouldBlockNavigation,a=b(e,oe);u.assertIsDefined(!!l.useInRouterContext()||void 0,"RouteLeavingGuard must be used within a data router.");var r=l.useBlocker((function(e){var t=e.nextLocation;return e.currentLocation.pathname!==t.pathname&&n(t)}));return v.default.createElement(le,h({onDismiss:function(){"blocked"===r.state&&r.reset()},open:"blocked"===r.state,onConfirm:function(){"blocked"===r.state&&r.proceed()}},a),t)},exports.Stack=k,exports.StatusLabel=function(e){var t=e.active,n=e.label,a=void 0===n?"":n,r=e.showBullet,l=e.center,o=g.default("eps-status-label__bullet",{active:void 0!==t&&t,aggressive:e.aggressiveInactive}),i=g.default("eps-status-label",{center:l});return v.default.createElement("div",{className:i},r&&v.default.createElement("div",{className:o}),v.default.createElement("div",null,a))},exports.Text=function(e){var t=e.as,n=void 0===t?"span":t,a=e.children,r=e.fontSize,l=e.color,o=e.lineHeight,i=e.fontWeight,u=e.className,s=b(e,ie),c=[];r&&c.push.apply(c,N("eps-font-size-",r)),o&&c.push.apply(c,N("eps-line-height-",o)),i&&c.push("eps-font-weight-"+i);var m=g.default(c,u);return v.default.createElement(L,h({as:n,color:l,className:m},s),a)},exports.Unbutton=function(e){var t=e.children,n=e.className,a=b(e,J);return v.default.createElement(r.Button,h({variant:"primary"},a,{className:g.default("eps-unbutton",n)}),t)},exports.UserMenu=function(t){var n=t.messages,a=t.onLogout,r=t.onLanguageChange,l=t.userName,o=t.language,i=t.environment,u=t.showVersionItem,s=t.showMyProfileItem,c=t.showCookieSettingsItem,m=t.onNavigateToMyProfile,d=t.onCookieSettingsOpen,p=void 0===d?function(){}:d,f=g.default(["eps-user-menu__trigger-button",t.className]),h=e.useState(!1),E=h[1];return v.default.createElement("div",{id:"eps-user-menu"},v.default.createElement(V,{open:h[0],onOpenChange:E,className:f,userName:l,environment:i},v.default.createElement("div",{id:"eps-overflow-menu"},v.default.createElement(j,{name:n.switchLanguage,language:o,onLanguageChange:r,setOpen:E}),u&&n.appVersion&&v.default.createElement(q,{title:n.appVersion,setOpen:E}),s&&n.myProfile&&v.default.createElement(R,{name:n.myProfile,setOpen:E,onNavigateToMyProfile:m}),c&&n.cookieSettings&&v.default.createElement(U,{name:n.cookieSettings,setOpen:E,onCookieSettingsOpen:p}),v.default.createElement(H,{name:n.logout,setOpen:E,onLogout:a}))))},exports.featureFlag=_,exports.getColorForEnvironment=S,exports.getHumanReadableEnvironment=z,exports.responsiveProp=N,exports.useEventListener=function(t,n,a){void 0===a&&(a=window);var r=e.useRef();e.useEffect((function(){r.current=n}),[n]),e.useEffect((function(){if(a&&a.addEventListener){var e=function(e){return null==r.current?void 0:r.current(e)};return a.addEventListener(t,e),function(){a.removeEventListener(t,e)}}}),[t,a])},exports.useFeatureToggle=O;
|
|
2
2
|
//# sourceMappingURL=common.cjs.production.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.cjs.production.min.js","sources":["../src/Box.tsx","../src/environment.ts","../src/Stack.tsx","../src/FeatureToggle.tsx","../src/EnturPartnerLogo.tsx","../src/UserMenu/useOutsideClick.ts","../src/UserMenu/components/CustomOverflowMenu.tsx","../src/UserMenu/components/CustomOverflowMenuItem.tsx","../src/UserMenu/components/LanguageSwitchMenuItem.tsx","../src/UserMenu/components/VersionMenuItem.tsx","../src/UserMenu/components/UserMenuItem.tsx","../src/UserMenu/components/LogOutMenuItem.tsx","../src/LanguageSelect.tsx","../src/ErrorBoundary.tsx","../src/helpers.ts","../src/FormatDateTime.tsx","../src/ConfirmModal.tsx","../src/ActionBar.tsx","../src/AuditInfo.tsx","../src/Breadcrumbs.tsx","../src/Content.tsx","../src/ExpandableMultiLanguageInput.tsx","../src/FormatCurrencyAmount.tsx","../src/Link.tsx","../src/LinkButton.tsx","../src/Menu.tsx","../src/MultiLanguageInput.tsx","../src/OrganisationDropdown.tsx","../src/PageTitle.tsx","../src/Pager.tsx","../src/PermissionCheck.tsx","../src/RouteLeavingGuard.tsx","../src/StatusLabel.tsx","../src/Text.tsx","../src/Unbutton.tsx","../src/UserMenu/index.tsx","../src/useEventListener.ts"],"sourcesContent":["import './Box.scss';\n\nimport React, { ReactNode } from 'react';\nimport cx from 'classnames';\n\ntype StyleSpacing =\n | 'none'\n | 'extraSmall2'\n | 'extraSmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'extraLarge'\n | 'extraLarge2'\n | 'extraLarge3'\n | 'extraLarge4'\n | 'extraLarge5'\n | 'extraLarge6'\n | 'extraLarge7'\n | 'extraLarge8'\n | 'extraLarge9';\n\ntype StyleMargin = StyleSpacing | 'auto';\n\ntype StyleDisplay = 'block' | 'flex' | 'inline' | 'inline-block';\ntype StyleJustifyContent = 'center' | 'space-between' | 'start' | 'end';\ntype StyleAlignItems = 'center' | 'start' | 'end' | 'stretch' | 'baseline';\n\ntype StyleMaxWidth =\n | 'none'\n | 'extraSmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'extraLarge'\n | 'extraLarge2'\n | 'extraLarge3'\n | 'extraLarge4'\n | 'extraLarge5'\n | 'extraLarge6'\n | 'full';\ntype StyleWidth = 'auto' | 'full';\n\nexport type StyleBackground = 'blue' | 'lavender' | 'white' | 'blue70';\nexport type StyleColor = 'blue' | 'lavender' | 'white' | 'black';\n\ntype StyleFlexDirection = 'row' | 'column' | 'row-reverse' | 'column-reverse';\ntype StyleFlexWrap = 'wrap' | 'nowrap' | 'wrap-reverse';\n\nexport type ResponsiveStyleSpacing =\n | StyleSpacing\n | [StyleSpacing?, StyleSpacing?, StyleSpacing?];\nexport type ResponsiveStyleMargin =\n | StyleMargin\n | [StyleMargin?, StyleMargin?, StyleMargin?];\n\nexport type ResponsiveStyleDisplay =\n | StyleDisplay\n | [StyleDisplay?, StyleDisplay?, StyleDisplay?];\nexport type ResponsiveStyleJustifyContent =\n | StyleJustifyContent\n | [StyleJustifyContent?, StyleJustifyContent?, StyleJustifyContent?];\nexport type ResponsiveStyleAlignItems =\n | StyleAlignItems\n | [StyleAlignItems?, StyleAlignItems?, StyleAlignItems?];\n\nexport type ResponsiveStyleMaxWidth =\n | StyleMaxWidth\n | [StyleMaxWidth?, StyleMaxWidth?, StyleMaxWidth?];\nexport type ResponsiveStyleWidth =\n | StyleWidth\n | [StyleWidth?, StyleWidth?, StyleWidth?];\n\nexport type ResponsiveStyleFlexDirection =\n | StyleFlexDirection\n | [StyleFlexDirection?, StyleFlexDirection?, StyleFlexDirection?];\nexport type ResponsiveStyleFlexWrap =\n | StyleFlexWrap\n | [StyleFlexWrap?, StyleFlexWrap?, StyleFlexWrap?];\n\nexport interface BoxProps {\n className?: string;\n as?: React.ElementType;\n [key: string]: any;\n children: ReactNode;\n\n contrast?: boolean;\n\n paddingTop?: ResponsiveStyleSpacing;\n paddingRight?: ResponsiveStyleSpacing;\n paddingBottom?: ResponsiveStyleSpacing;\n paddingLeft?: ResponsiveStyleSpacing;\n paddingX?: ResponsiveStyleSpacing;\n paddingY?: ResponsiveStyleSpacing;\n padding?: ResponsiveStyleSpacing;\n\n marginTop?: ResponsiveStyleMargin;\n marginRight?: ResponsiveStyleMargin;\n marginBottom?: ResponsiveStyleMargin;\n marginLeft?: ResponsiveStyleMargin;\n marginX?: ResponsiveStyleMargin;\n marginY?: ResponsiveStyleMargin;\n margin?: ResponsiveStyleMargin;\n\n display?: ResponsiveStyleDisplay;\n justifyContent?: ResponsiveStyleJustifyContent;\n alignItems?: ResponsiveStyleAlignItems;\n\n maxWidth?: ResponsiveStyleMaxWidth;\n width?: ResponsiveStyleWidth;\n background?: StyleBackground;\n color?: StyleColor;\n\n flexDirection?: ResponsiveStyleFlexDirection;\n flexWrap?: ResponsiveStyleFlexWrap;\n}\n\ntype ResponsiveProp = string | [string?, string?, string?];\n\nexport function responsiveProp(prefix: string, prop: ResponsiveProp): string[] {\n if (Array.isArray(prop)) {\n const classes = [];\n prop[0] && classes.push(prefix + prop[0]);\n prop[1] && classes.push(`${prefix}${prop[1]}-lg`);\n prop[2] && classes.push(`${prefix}${prop[2]}-xl`);\n return classes;\n }\n return [prefix + prop];\n}\n\nexport const Box = ({\n as: Component = 'div',\n children,\n contrast,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n paddingX,\n paddingY,\n padding,\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n marginX,\n marginY,\n margin,\n display,\n justifyContent,\n alignItems,\n maxWidth,\n width,\n background,\n color,\n flexDirection,\n flexWrap,\n className,\n ...rest\n}: BoxProps) => {\n const classes = [];\n const resolvedPaddingTop = paddingTop || paddingY || padding;\n const resolvedPaddingBottom = paddingBottom || paddingY || padding;\n const resolvedPaddingLeft = paddingLeft || paddingX || padding;\n const resolvedPaddingRight = paddingRight || paddingX || padding;\n\n const resolvedMarginTop = marginTop || marginY || margin;\n const resolvedMarginBottom = marginBottom || marginY || margin;\n const resolvedMarginLeft = marginLeft || marginX || margin;\n const resolvedMarginRight = marginRight || marginX || margin;\n\n contrast && classes.push('eds-contrast');\n resolvedPaddingTop &&\n classes.push(...responsiveProp('eps-pt-', resolvedPaddingTop));\n resolvedPaddingBottom &&\n classes.push(...responsiveProp('eps-pb-', resolvedPaddingBottom));\n resolvedPaddingLeft &&\n classes.push(...responsiveProp('eps-pl-', resolvedPaddingLeft));\n resolvedPaddingRight &&\n classes.push(...responsiveProp('eps-pr-', resolvedPaddingRight));\n resolvedMarginTop &&\n classes.push(...responsiveProp('eps-mt-', resolvedMarginTop));\n resolvedMarginBottom &&\n classes.push(...responsiveProp('eps-mb-', resolvedMarginBottom));\n resolvedMarginLeft &&\n classes.push(...responsiveProp('eps-ml-', resolvedMarginLeft));\n resolvedMarginRight &&\n classes.push(...responsiveProp('eps-mr-', resolvedMarginRight));\n\n display && classes.push(...responsiveProp('eps-', display));\n justifyContent &&\n classes.push(...responsiveProp('eps-justify-', justifyContent));\n if (alignItems) {\n classes.push(...responsiveProp('eps-items-', alignItems));\n }\n\n maxWidth && classes.push(...responsiveProp('eps-max-w-', maxWidth));\n width && classes.push(...responsiveProp('eps-w-', width));\n\n color && classes.push(`eps-color-${color}`);\n background && classes.push(`eps-bg-${background}`);\n\n flexDirection && classes.push(...responsiveProp('eps-flex-', flexDirection));\n flexWrap && classes.push(...responsiveProp('eps-flex-wrap-', flexWrap));\n\n const classList = cx(classes, className);\n\n return (\n <Component className={classList} {...rest}>\n {children}\n </Component>\n );\n};\n","export enum Environment {\n Local = 'local',\n Development = 'dev',\n Staging = 'staging',\n Production = 'prod',\n}\n\nconst environmentColors: Record<\n Exclude<Environment, Environment.Production>,\n string\n> = {\n [Environment.Local]: '#B482FB',\n [Environment.Development]: '#5AC39A',\n [Environment.Staging]: '#FFCA28',\n};\n\n/**\n * Gets the color for the given environment. This is the color used for the environment\n * indicator. There is no color for production as it should not have any special environment\n * indication.\n */\nexport const getColorForEnvironment = (\n environment: Exclude<Environment, Environment.Production>\n) => environmentColors[environment];\n\nconst humanReadableEnvironment: Record<Environment, string> = {\n [Environment.Local]: 'Local',\n [Environment.Development]: 'Dev',\n [Environment.Staging]: 'Staging',\n [Environment.Production]: 'Prod',\n};\n\nexport const getHumanReadableEnvironment = (environment: Environment) =>\n humanReadableEnvironment[environment];\n","import React, { ReactNode, Children } from 'react';\n\nimport { ResponsiveStyleSpacing, Box } from './Box';\n\nexport interface StackProps {\n className?: string;\n children: ReactNode;\n space: ResponsiveStyleSpacing;\n}\n\nexport const Stack = ({ children, space, className }: StackProps) => {\n const stackItems = Children.toArray(children);\n if (stackItems.length <= 1) {\n return <>{stackItems}</>;\n }\n\n return (\n <div className={className}>\n {stackItems.map((child, index) =>\n index === stackItems.length - 1 ? (\n <div key={index}>{child}</div>\n ) : (\n <Box paddingBottom={space} key={index}>\n {child}\n </Box>\n )\n )}\n </div>\n );\n};\n","/// <reference types=\"vite/client\" />\nimport React, { ReactNode } from 'react';\n\n/**\n * Returns true if the provided flag exist in localStorage\n * or is set as an environment variable.\n *\n * @param flag case sensitive flag. If it is an environment variable\n * you can drop the VITE_APP_ prefix.\n */\nexport function featureFlag(flag: string): boolean {\n return (\n import.meta.env[`VITE_APP_${flag}`] === 'true' ||\n window.localStorage?.getItem(flag) === 'true' ||\n window.localStorage?.getItem(`VITE_APP_${flag}`) === 'true'\n );\n}\n\n/**\n * Returns true if the provided flag exist in localStorage\n * or is set as an environment variable.\n *\n * @param flag case sensitive flag. If it is an environment variable\n * you can drop the VITE_APP_ prefix.\n */\nexport function useFeatureToggle(flag: string): boolean {\n return featureFlag(flag);\n}\n\nexport interface FeatureToggleProps {\n /** Visible if flag exist, hidden if not.*/\n children: ReactNode;\n /** Case sensitive flag. If it is an environment variable\n * you can drop the VITE_APP_ prefix. */\n flag: string;\n}\n\nexport const FeatureToggle = ({ children, flag }: FeatureToggleProps) => {\n const feature = useFeatureToggle(flag);\n if (feature) {\n return <>{children}</>;\n }\n return null;\n};\n","import './EnturPartnerLogo.scss';\n\nimport React, { FC } from 'react';\nimport classnames from 'classnames';\n\nimport { Environment, getColorForEnvironment } from './environment';\n\ninterface LogoProps {\n title: string;\n className?: string;\n accentColor?: string;\n [key: string]: any;\n}\n\nexport const EnturPartnerLogoSvg: FC<LogoProps> = ({\n title,\n accentColor = '#FF5959',\n ...rest\n}) => {\n return (\n <svg width={257} height={37} viewBox=\"0 0 257 37\" {...rest}>\n <title>{title}</title>\n <g fill=\"none\" fillRule=\"evenodd\">\n <path\n fill=\"#FFF\"\n d=\"M0 .231V25.72h18.745v-4.318H4.869v-6.163h12.31v-4.318H4.87V4.55h13.876V.231z\"\n />\n <path fill={accentColor} d=\"M0 36.408h45.253v-4.32H0z\" />\n <path\n fill=\"#FFF\"\n d=\"M40.384.231v15.425L23.656.231h-.521V25.72h4.869V10.573L44.732 25.72h.521V.23zM69.25 15.238h-7.267v21.17h-4.87v-21.17H49.81V10.92h19.44zM83.863 36.86c-1.646 0-3.142-.255-4.486-.765-1.345-.51-2.493-1.23-3.443-2.159-.95-.928-1.687-2.054-2.208-3.378-.522-1.323-.783-2.797-.783-4.422V10.92h4.869v15.216c0 1.277.209 2.333.626 3.169.417.836.933 1.497 1.548 1.985a5.346 5.346 0 001.982 1.01c.707.186 1.339.278 1.895.278.557 0 1.188-.092 1.896-.279a5.35 5.35 0 001.982-1.01c.614-.487 1.13-1.148 1.548-1.984.417-.836.625-1.892.625-3.169V10.92h4.87v15.216c0 1.625-.256 3.1-.766 4.422-.51 1.324-1.24 2.45-2.19 3.378-.952.929-2.1 1.648-3.444 2.159-1.344.51-2.851.766-4.52.766M104.21 24.047h5.546c1.016 0 1.854-.127 2.513-.383.658-.255 1.179-.592 1.56-1.01.381-.418.641-.888.78-1.41.138-.522.208-1.05.208-1.584 0-.627-.099-1.207-.295-1.741a3.718 3.718 0 00-.901-1.393c-.405-.394-.924-.708-1.56-.94-.636-.232-1.404-.348-2.305-.348h-5.546v8.81zm0 4.248v8.113h-4.87V10.92h11.567c1.3 0 2.49.215 3.57.644 1.08.43 2.004 1.033 2.77 1.81a8.287 8.287 0 011.794 2.787c.43 1.079.645 2.257.645 3.534 0 .952-.128 1.874-.383 2.768-.256.894-.61 1.7-1.063 2.42a7.32 7.32 0 01-1.672 1.863 5.929 5.929 0 01-2.178 1.096l6.339 8.566h-5.808l-5.893-8.113h-4.818z\"\n />\n <g fill={accentColor}>\n <path d=\"M141.051 23.448h5.628c4.185 0 5.989-1.984 5.989-4.942 0-2.742-1.515-4.618-5.989-4.618h-5.628v9.56zm0 3.067v9.776h-3.571V10.75h9.632c6.674 0 9.127 3.211 9.127 7.54 0 4.979-3.102 8.226-9.2 8.226h-5.988zM169.695 28.715c-1.371-.288-2.958-.505-4.401-.505-2.85 0-4.041 1.263-4.041 3.139s1.407 2.706 3.463 2.706c2.49 0 4.979-1.443 4.979-4.221v-1.119zm-4.293-2.958c1.551 0 3.174.253 4.293.469v-.83c0-2.525-1.154-3.896-4.33-3.896-2.164 0-3.824.866-4.942 2.092l-2.02-2.272c1.732-1.66 3.644-2.598 7.07-2.598 5.052 0 7.469 1.876 7.469 7.215v10.354h-3.211V34.02h-.108c-1.082 1.767-3.211 2.705-5.592 2.705-3.32 0-6.241-1.66-6.241-5.303 0-3.103 1.912-5.664 7.612-5.664zM178.965 19.191h3.211v2.886h.108c.938-1.984 2.922-3.355 5.231-3.355.47 0 .938.036 1.335.144l-.144 3.14a6.77 6.77 0 00-1.552-.181c-3.246 0-4.798 2.633-4.798 5.483v8.983h-3.39v-17.1zM199.961 36.291h-1.912c-4.004 0-5.988-.938-5.988-5.772v-8.55h-2.778V19.19h2.778v-4.654h3.355v4.654h4.473v2.778h-4.473v7.973c0 3.427 1.587 3.535 3.319 3.535h1.226v2.814zM219.767 36.291h-3.391V26.84c0-2.778-1.083-5.375-4.257-5.375-3.14 0-5.268 2.597-5.268 6.169v8.658h-3.391v-17.1h3.32v2.814h.143c.794-1.623 3.067-3.283 5.99-3.283 4.941 0 6.854 3.644 6.854 8.081v9.488zM227.847 26.262h10.57c0-2.597-2.272-4.726-5.087-4.726-2.922 0-5.014 1.948-5.483 4.726zm-.036 2.453c.397 3.355 2.633 5.195 5.844 5.195 2.778 0 4.618-1.623 5.484-2.67l2.164 1.804c-1.37 1.913-4.365 3.716-8.045 3.716-4.942 0-8.73-3.535-8.73-8.55 0-5.195 3.752-9.488 8.983-9.488 5.303 0 8.009 4.365 8.009 8.19 0 .649-.036 1.226-.072 1.803H227.81zM246.245 19.191h3.21v2.886h.109c.938-1.984 2.922-3.355 5.231-3.355.469 0 .938.036 1.335.144l-.145 3.14a6.77 6.77 0 00-1.551-.181c-3.247 0-4.798 2.633-4.798 5.483v8.983h-3.391v-17.1z\" />\n </g>\n </g>\n </svg>\n );\n};\n\ninterface EnturPartnerLogoProps {\n altText: string;\n as?: 'div' | React.ElementType;\n className?: string;\n environment?: Environment;\n}\n\nexport const EnturPartnerLogo: FC<EnturPartnerLogoProps> = ({\n as: Component = 'nav',\n className,\n altText,\n environment,\n}) => {\n const classList = classnames(['eps-logo-wrapper', className]);\n\n return (\n <Component className={classList}>\n <EnturPartnerLogoSvg\n title={altText}\n className=\"logo\"\n accentColor={\n environment !== undefined && environment !== Environment.Production\n ? getColorForEnvironment(environment)\n : undefined\n }\n />\n </Component>\n );\n};\n","import React from 'react';\n\nexport function useOutsideClick(\n ref: React.RefObject<HTMLDivElement>,\n buttonRef: React.RefObject<HTMLButtonElement>,\n handler: () => void\n) {\n React.useEffect(() => {\n const listener = (event: Event) => {\n if (\n elementContainsEventTarget(ref.current, event) ||\n elementContainsEventTarget(buttonRef.current, event)\n ) {\n return;\n }\n\n handler();\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [ref, buttonRef, handler]);\n}\n\nfunction elementContainsEventTarget(element: HTMLElement | null, event: Event) {\n if (!element) {\n return false;\n }\n\n if (element.contains(event.target as Node)) {\n return true;\n }\n\n // For elements inside a Shadow DOM we need to check the composedPath\n if (event.composed && event.composedPath) {\n const contains = event.composedPath().find((target) => {\n if (target === window) {\n return false;\n }\n return element.contains(target as Node);\n });\n return !!contains;\n }\n\n return false;\n}\n","import '../index.scss';\n\nimport React from 'react';\nimport cx from 'classnames';\nimport { DownArrowIcon, UserIcon } from '@entur/icons';\nimport { SecondaryButton } from '@entur/button';\nimport { Heading6 } from '@entur/typography';\n\nimport {\n Environment,\n getColorForEnvironment,\n getHumanReadableEnvironment,\n} from '../../environment';\nimport { useOutsideClick } from '../useOutsideClick';\n\nexport const CustomOverflowMenu: React.FC<{\n className?: string;\n children: React.ReactNode;\n userName: string;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n environment?: Environment;\n}> = ({\n className,\n children,\n userName,\n open,\n onOpenChange,\n environment,\n ...rest\n}) => {\n const overflowItemsClasses = cx('eps-overflow-menu__group', {\n 'eps-overflow-menu__group--open': open,\n });\n const overflowContentRef = React.useRef<HTMLDivElement>(null);\n const overflowMenuTriggerRef = React.useRef<HTMLButtonElement>(null);\n useOutsideClick(overflowContentRef, overflowMenuTriggerRef, () =>\n onOpenChange(false)\n );\n return (\n <div>\n <SecondaryButton\n className={cx('eps-overflow-menu__button', className)}\n onClick={() => onOpenChange(open ? false : true)}\n aria-haspopup={true}\n role=\"button\"\n aria-expanded={open}\n ref={overflowMenuTriggerRef}\n {...rest}\n >\n <div className=\"eps-overflow-menu__button-contents\">\n <span className=\"eds-overflow-menu__user-icon\">\n <UserIcon inline />\n </span>\n <Heading6 margin=\"none\" as=\"span\">\n {userName}\n {environment !== undefined &&\n environment !== Environment.Production && (\n <span style={{ color: getColorForEnvironment(environment) }}>\n {' '}\n ({getHumanReadableEnvironment(environment)})\n </span>\n )}\n </Heading6>\n <span className=\"eps-arrow-icon\">\n <DownArrowIcon inline />\n </span>\n </div>\n </SecondaryButton>\n {open && (\n <div\n className={overflowItemsClasses}\n role=\"menu\"\n ref={overflowContentRef}\n >\n {children}\n </div>\n )}\n </div>\n );\n};\n","import '../index.scss';\n\nimport React from 'react';\nimport cx from 'classnames';\n\nexport const CustomOverflowMenuItem: React.FC<\n React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >\n> = (props) => {\n return (\n <button\n className={cx(props.className, 'eps-overflow-menu__item')}\n role=\"menuitem\"\n {...props}\n />\n );\n};\n","import '../index.scss';\n\nimport React from 'react';\nimport { NorwayIcon, UKIcon } from '@entur/icons';\n\nimport { useFeatureToggle } from '../../FeatureToggle';\nimport { CustomOverflowMenuItem } from './CustomOverflowMenuItem';\n\ntype Props = {\n language: string;\n onLanguageChange: (language: string) => void;\n setOpen: (open: boolean) => void;\n name: string;\n};\n\nexport const LanguageSwitchMenuItem = ({\n language,\n onLanguageChange,\n setOpen,\n name,\n}: Props) => {\n const useB47LanguageKey = useFeatureToggle('USE_BCP-47_LANGUAGE_KEY');\n const norwegianLanguageKey = useB47LanguageKey ? 'nb-NO' : 'nb';\n const englishLanguageKey = useB47LanguageKey ? 'en-GB' : 'en';\n\n return (\n <>\n {language === englishLanguageKey ? (\n <CustomOverflowMenuItem\n onClick={() => {\n onLanguageChange(norwegianLanguageKey);\n setOpen(false);\n }}\n className=\"eps-overflow-menu__item\"\n >\n <span aria-hidden className=\"eps-overflow-menu__icon-margin\">\n <NorwayIcon size=\"1rem\" inline />\n </span>\n {name}\n </CustomOverflowMenuItem>\n ) : (\n <CustomOverflowMenuItem\n onClick={() => {\n onLanguageChange(englishLanguageKey);\n setOpen(false);\n }}\n className=\"eps-overflow-menu__item\"\n >\n <span aria-hidden className=\"eps-overflow-menu__icon-margin\">\n <UKIcon size=\"1rem\" inline />\n </span>\n {name}\n </CustomOverflowMenuItem>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { ChannelsIcon } from '@entur/icons';\n\nimport { CustomOverflowMenuItem } from './CustomOverflowMenuItem';\n\nexport const VersionMenuItem: React.FC<{\n title: string;\n setOpen: (isOpen: boolean) => void;\n}> = ({ title, setOpen }) => {\n const navigate = useNavigate(); // Hide useNavigate from standalone micro-frontends because it is not under RouterProvider\n return (\n <CustomOverflowMenuItem\n onClick={() => {\n navigate('/app-version');\n setOpen(false);\n }}\n className=\"eps-overflow-menu__item\"\n >\n <span aria-hidden>\n <ChannelsIcon className=\"eps-version-icon\" size=\"1rem\" inline />\n </span>\n {title}\n </CustomOverflowMenuItem>\n );\n};\n","import '../index.scss';\n\nimport React from 'react';\nimport { UserIcon } from '@entur/icons';\nimport { Link } from 'react-router-dom';\n\nimport { CustomOverflowMenuItem } from './CustomOverflowMenuItem';\n\ntype Props = {\n name: string;\n setOpen: (open: boolean) => void;\n onNavigateToMyProfile: () => void;\n};\n\nexport const UserMenuItem = ({\n name,\n setOpen,\n onNavigateToMyProfile,\n}: Props) => {\n return (\n <Link to=\"/permission-admin/my-profile\" style={{ textDecoration: 'none' }}>\n <CustomOverflowMenuItem\n onClick={() => {\n setOpen(false);\n onNavigateToMyProfile();\n }}\n className=\"eps-overflow-menu__item\"\n >\n <span aria-hidden>\n <UserIcon size=\"1rem\" inline />\n </span>\n {name}\n </CustomOverflowMenuItem>\n </Link>\n );\n};\n","import '../index.scss';\n\nimport React from 'react';\nimport { LogOutIcon } from '@entur/icons';\n\nimport { CustomOverflowMenuItem } from './CustomOverflowMenuItem';\n\ntype Props = {\n name: string;\n setOpen: (open: boolean) => void;\n onLogout: () => void;\n};\n\nexport const LogOutMenuItem = ({ name, setOpen, onLogout }: Props) => {\n return (\n <CustomOverflowMenuItem\n onClick={() => {\n onLogout();\n setOpen(false);\n }}\n data-testid=\"user-menu-logout\"\n className=\"eps-overflow-menu__item\"\n >\n <span aria-hidden>\n <LogOutIcon size=\"1rem\" inline />\n </span>\n {name}\n </CustomOverflowMenuItem>\n );\n};\n","import './LanguageSelect.scss';\n\nimport React, { FC } from 'react';\nimport { SegmentedControl, SegmentedChoice } from '@entur/form';\nimport cx from 'classnames';\nimport { assertIsDefined } from '@entur-partner/util';\n\nexport type LanguageKey = 'nob' | 'nno' | 'eng';\n\nexport interface LanguageOption {\n value: LanguageKey;\n label: string;\n required: boolean;\n}\n\nexport interface LanguageSelectProps {\n language: string;\n options: LanguageOption[];\n className?: string;\n onChange: (language: string) => void;\n [key: string]: any;\n}\n\nexport const LanguageSelect: FC<LanguageSelectProps> = ({\n language,\n options,\n className,\n onChange,\n ...rest\n}) => {\n const classNames = cx('eps-language-select', className);\n return (\n <div {...rest} className={classNames}>\n <SegmentedControl\n onChange={(language) => {\n assertIsDefined(language);\n onChange(language);\n }}\n selectedValue={language}\n >\n {options.map((option) => (\n <SegmentedChoice key={option.value} value={option.value}>\n {option.label}\n {option.required && <span className=\"asterisk-margin\">{'*'}</span>}\n </SegmentedChoice>\n ))}\n </SegmentedControl>\n </div>\n );\n};\n","import React, { ReactNode, Component, ErrorInfo } from 'react';\nimport { BannerAlertBox } from '@entur/alert';\nimport { PrimaryButton } from '@entur/button';\nimport { Paragraph } from '@entur/typography';\n\nimport { isFunction } from './helpers';\nimport { Box } from './Box';\n\ntype FallbackOptions = {\n retry: () => void;\n error: Error;\n};\n\ntype RenderProp = (options: FallbackOptions) => ReactNode;\n\ntype Props = {\n handleError?: (error: Error, errorInfo: ErrorInfo) => void;\n fallback: ReactNode | RenderProp;\n children: ReactNode;\n};\n\ntype State = {\n error: null | Error;\n};\n\nconst newAppVersionErrorMessage =\n \"Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.\";\n\nexport class ErrorBoundary extends Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = { error: null };\n }\n\n static getDerivedStateFromError(error: Error): State {\n return {\n error,\n };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n // React always logs in development\n this.props.handleError?.(error, errorInfo);\n }\n\n render() {\n const { error } = this.state;\n const { fallback, children } = this.props;\n\n if (error) {\n if (isFunction<RenderProp>(fallback)) {\n return fallback({ retry: () => this.setState({ error: null }), error });\n } else if (\n error.name === 'NotFoundError' &&\n error.message === newAppVersionErrorMessage\n ) {\n return <RefreshBannerInfo />;\n }\n\n return fallback;\n }\n\n return children;\n }\n}\n\nexport const LANGUAGE_STORAGE_KEY = 'EP::locale';\n\nfunction RefreshBannerInfo() {\n // Taken from ./app-shell/src/storage.ts\n const language = localStorage.getItem(LANGUAGE_STORAGE_KEY);\n const isNorwegian = language === 'nb';\n return (\n <Box maxWidth=\"large\">\n <BannerAlertBox\n variant=\"info\"\n title={\n isNorwegian\n ? 'En ny versjon av nettsiden er tilgjengelig.'\n : 'A new version of the website is available.'\n }\n >\n <Box paddingBottom=\"medium\">\n <Paragraph margin=\"none\">\n {isNorwegian ? 'Vennligst oppdater.' : 'Please refresh.'}\n </Paragraph>\n </Box>\n <PrimaryButton onClick={() => window.location.reload()}>\n {isNorwegian ? 'Oppdater' : 'Refresh'}\n </PrimaryButton>\n </BannerAlertBox>\n </Box>\n );\n}\n","export function isFunction<T>(functionToCheck: any): functionToCheck is T {\n return (\n functionToCheck && {}.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","import React, { FC } from 'react';\nimport { localeDate, localeDateTime } from '@entur-partner/util';\n\nexport interface FormatDateTimeProps {\n date: string | Date;\n locale: string;\n [key: string]: any;\n}\n\nexport const FormatDateTime: FC<FormatDateTimeProps> = ({\n date,\n locale,\n as: Component = 'main',\n hideTime,\n ...rest\n}) => {\n return (\n <Component {...rest}>\n {hideTime ? localeDate(date, locale) : localeDateTime(date, locale)}\n </Component>\n );\n};\n","import './ConfirmModal.scss';\n\nimport React, { ReactNode, FC } from 'react';\nimport { Modal, ModalProps } from '@entur/modal';\nimport { Paragraph } from '@entur/typography';\nimport { isString } from '@entur-partner/util';\nimport { ButtonGroup, SecondaryButton, PrimaryButton } from '@entur/button';\n\nimport { Box } from './Box';\n\nexport interface BaseConfirmModalProps extends Partial<ModalProps> {\n title: string;\n children: React.ReactNode;\n closeLabel: string;\n\n /** Deprecated use children prop */\n message?: ReactNode;\n /** Deprecated use open prop */\n isOpen?: boolean;\n /** Deprecated use onDismiss prop */\n onClose?: () => void;\n}\n\ninterface CustomConfirmModalButtons extends BaseConfirmModalProps {\n buttons: ReactNode[];\n}\n\ninterface DefaultConfirmModalHandler extends BaseConfirmModalProps {\n onConfirm: () => void;\n messages: {\n confirm: string;\n cancel: string;\n };\n}\n\nexport type ConfirmModalProps =\n | CustomConfirmModalButtons\n | DefaultConfirmModalHandler;\n\nexport const ConfirmModal: FC<ConfirmModalProps> = ({\n isOpen = false,\n children,\n message,\n size = 'medium',\n buttons,\n onConfirm,\n messages,\n onClose,\n onDismiss,\n ...rest\n}) => {\n const childrenToRender = children ? children : message;\n const handleDismiss = onClose ? onClose : onDismiss;\n return (\n <Modal size={size} open={isOpen} onDismiss={handleDismiss} {...rest}>\n {isString(childrenToRender) ? (\n <Paragraph>{childrenToRender}</Paragraph>\n ) : (\n <Box paddingBottom=\"medium\">{childrenToRender}</Box>\n )}\n\n <ButtonGroup>\n {onConfirm ? (\n <>\n <SecondaryButton\n onClick={handleDismiss}\n data-testid=\"cancel-modal-button\"\n >\n {messages.cancel}\n </SecondaryButton>\n <PrimaryButton\n onClick={onConfirm}\n data-testid=\"confirm-modal-button\"\n >\n {messages.confirm}\n </PrimaryButton>\n </>\n ) : (\n buttons\n )}\n </ButtonGroup>\n </Modal>\n );\n};\n","import './ActionBar.scss';\nimport React, { ReactNode } from 'react';\n\nexport interface ActionBarProps {\n children: ReactNode;\n}\n\nconst ActionBarLeft = ({ children }: ActionBarProps) => {\n return <div className=\"eps-action-bar-left\">{children}</div>;\n};\n\nconst ActionBarRight = ({ children }: ActionBarProps) => {\n return <div className=\"eps-action-bar-right\">{children}</div>;\n};\n\nconst ActionBar = ({ children }: ActionBarProps) => {\n return (\n <>\n <div className=\"eps-action-bar-padding\" />\n <div className=\"eps-action-bar\">{children}</div>\n </>\n );\n};\n\nexport { ActionBar, ActionBarLeft, ActionBarRight };\n","import './AuditInfo.scss';\n\nimport React, { FC } from 'react';\nimport cx from 'classnames';\nimport { isDateString, isDate } from '@entur-partner/util';\n\nimport { FormatDateTime } from './FormatDateTime';\nimport { Stack } from './Stack';\n\ninterface Item {\n label: string;\n value: Date | string;\n}\n\nexport interface AuditInfoProps {\n items: Item[];\n locale: string;\n className?: string;\n [key: string]: any;\n}\n\nexport const AuditInfo: FC<AuditInfoProps> = ({\n items,\n locale,\n className,\n ...rest\n}) => {\n const classNames = cx('ep-audit-info', className);\n return (\n <div className={classNames} {...rest}>\n {items.map(({ label, value }, i) => (\n <Stack space=\"small\" key={i}>\n <div className=\"ep-audit-info-label\">{label}</div>\n <div>\n {isDate(value) || isDateString(value) ? (\n <FormatDateTime date={value} locale={locale} />\n ) : (\n <span>{value}</span>\n )}\n </div>\n </Stack>\n ))}\n </div>\n );\n};\n","import './Breadcrumbs.scss';\nimport React, { FC, ReactElement } from 'react';\nimport { Link } from 'react-router-dom';\nimport { BreadcrumbNavigation, BreadcrumbItem } from '@entur/menu';\nimport { splitUrlPath } from '@entur-partner/util';\n\nexport interface BreadcrumbsProps {\n pathname: string;\n onBreadcrumbLookup: (path: string) => string | undefined;\n prependBreadcrumbItem?: ReactElement;\n}\n\nexport const Breadcrumbs: FC<BreadcrumbsProps> = ({\n prependBreadcrumbItem,\n pathname,\n onBreadcrumbLookup,\n}) => {\n const paths: string[] = splitUrlPath(pathname);\n\n const breadcrumbs = paths\n .map((path) => ({ title: onBreadcrumbLookup(path), path }))\n .filter(({ title }) => title !== undefined);\n\n const breadcrumbElements = breadcrumbs.map(({ title, path }, i) => {\n const isLast = i === breadcrumbs.length - 1;\n if (isLast) {\n return (\n <BreadcrumbItem key={path} as={'span'}>\n {title}\n </BreadcrumbItem>\n );\n }\n return (\n <BreadcrumbItem key={path} as={Link} to={path}>\n {title}\n </BreadcrumbItem>\n );\n });\n\n if (prependBreadcrumbItem) {\n return (\n <BreadcrumbNavigation>\n {[prependBreadcrumbItem, ...breadcrumbElements]}\n </BreadcrumbNavigation>\n );\n }\n\n return <BreadcrumbNavigation>{breadcrumbElements}</BreadcrumbNavigation>;\n};\n","import './Content.scss';\n\nimport React, { FC, ReactNode } from 'react';\nimport classnames from 'classnames';\n\ninterface ContentProps {\n children: ReactNode;\n as?: 'main' | React.ElementType;\n className?: string;\n}\nexport const Content: FC<ContentProps> = ({\n as: Component = 'main',\n className,\n children,\n}) => {\n const classList = classnames(['eps-content', className]);\n\n return <Component className={classList}>{children}</Component>;\n};\n","import React, { ChangeEvent } from 'react';\nimport { VariantType } from '@entur/form';\nimport { ExpandablePanel } from '@entur/expand';\n\nimport { LanguageKey, LanguageOption } from './LanguageSelect';\nimport { Stack } from './Stack';\n\nexport type MultiLanguageValues = Record<LanguageKey, string>;\n\ntype ExpandableMultiLanguageInputProps = {\n title: string;\n inputComponent: React.ElementType;\n languages: LanguageOption[];\n values: MultiLanguageValues;\n onChange: (values: MultiLanguageValues) => void;\n name: string;\n variant?: (lang: LanguageKey) => VariantType;\n feedback?: (lang: LanguageKey) => string;\n [key: string]: any;\n};\n\nexport const ExpandableMultiLanguageInput = ({\n title,\n inputComponent: InputComponent,\n languages,\n values,\n onChange,\n name,\n variant,\n feedback,\n ...rest\n}: ExpandableMultiLanguageInputProps) => {\n const handleOnChange = (language: LanguageKey, value?: string) => {\n const changes = { ...values };\n if (value === '' || !value) {\n delete changes[language];\n } else {\n changes[language] = value;\n }\n onChange(changes);\n };\n\n return (\n <ExpandablePanel\n title={title}\n defaultOpen\n contentStyle={{\n padding: '4px 4px 4px 4px',\n marginTop: '16px',\n marginBottom: '16px',\n }}\n >\n <Stack space=\"medium\">\n {languages.map(({ value: langKey, label, required }) => (\n <InputComponent\n data-testid={`multi-lang-input-${name}-${langKey}`}\n key={title + langKey}\n label={required ? label + '*' : label}\n variant={variant && variant(langKey)}\n feedback={feedback && feedback(langKey)}\n name={name}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n handleOnChange(langKey, e.target.value);\n }}\n value={values[langKey] || ''}\n {...rest}\n />\n ))}\n </Stack>\n </ExpandablePanel>\n );\n};\n","import React, { FC } from 'react';\n\nexport interface FormatCurrencyAmountProps {\n amount: number | string;\n as?: 'span' | React.ElementType;\n [key: string]: any;\n}\n\nexport const FormatCurrencyAmount: FC<FormatCurrencyAmountProps> = ({\n amount,\n as: Component = 'span',\n ...rest\n}) => {\n const parsedAmount = Number(amount) || 0;\n\n const formattedAmount = new Intl.NumberFormat('nb-NO', {\n maximumFractionDigits: 2,\n minimumFractionDigits: 2,\n }).format(parsedAmount);\n\n return <Component {...rest}>{formattedAmount}</Component>;\n};\n","import React, { FC } from 'react';\nimport { Link as RouterLink, LinkProps } from 'react-router-dom';\nimport { Link as A } from '@entur/typography';\n\ninterface Props extends LinkProps {}\n\nexport const Link: FC<Props> = (props) => {\n return (\n <A {...props} as={RouterLink}>\n {props.children}\n </A>\n );\n};\n","import './LinkButton.scss';\n\nimport React, { ReactNode } from 'react';\nimport { Link } from '@entur/typography';\nimport cx from 'classnames';\n\nexport interface LinkButtonProps {\n children: ReactNode;\n className?: string;\n [key: string]: any;\n}\n\nexport const LinkButton = ({\n children,\n className,\n ...rest\n}: LinkButtonProps) => (\n <Link {...rest} as=\"button\" className={cx('eps-link-button', className)}>\n {children}\n </Link>\n);\n","import './Menu.scss';\n\nimport React, { FC, ReactNode } from 'react';\nimport classnames from 'classnames';\n\ninterface MenuProps {\n children: ReactNode;\n as?: 'div' | React.ElementType;\n className?: string;\n}\nexport const Menu: FC<MenuProps> = ({\n as: Component = 'nav',\n className,\n children,\n}) => {\n const classList = classnames(['eds-contrast', 'eps-menu', className]);\n\n return <Component className={classList}>{children}</Component>;\n};\n","import './MultiLanguageInput.scss';\n\nimport React, { FC, useState, ChangeEvent, FocusEvent } from 'react';\nimport cx from 'classnames';\nimport { VariantType } from '@entur/form';\n\nimport { Stack } from './Stack';\nimport { LanguageSelect, LanguageOption } from './LanguageSelect';\n\ntype Values = { [key: string]: string };\n\nexport interface MultiLanguageInputProps {\n className?: string;\n onBlur?: (e: FocusEvent<HTMLDivElement>) => void;\n inputComponent: React.ElementType;\n values: { [key: string]: string };\n languages: LanguageOption[];\n onChange: (values: Values) => void;\n name: string;\n alertLevel?: VariantType;\n alertLabel?: string;\n label?: string;\n defaultLanguage?: string;\n [key: string]: any;\n}\n/**\n * @deprecated use ExpandableMultiLanguageInput\n */\nexport const MultiLanguageInput: FC<MultiLanguageInputProps> = ({\n className,\n inputComponent: InputComponent,\n alertLabel,\n alertLevel,\n name,\n languages,\n values,\n onChange,\n defaultLanguage = 'nob',\n label = '',\n onBlur = () => {},\n ...rest\n}) => {\n const [language, setLanguage] = useState(defaultLanguage);\n const classNames = cx('multi-language-input', className);\n const currentValue = values[language];\n\n const handleOnBlur = (e: FocusEvent<HTMLDivElement>) => {\n e.persist();\n const currentTarget = e.currentTarget;\n setTimeout(() => {\n if (currentTarget && !currentTarget.contains(document.activeElement)) {\n onBlur(e);\n }\n }, 0);\n };\n\n const handleLanguageChange = (language: string) => {\n setLanguage(language);\n };\n\n const handleOnChange = (value?: string) => {\n const changes = Object.assign({}, values);\n if (value === '' || !value) {\n delete changes[language];\n } else {\n changes[language] = value;\n }\n onChange(changes);\n };\n\n return (\n <div\n className={classNames}\n tabIndex={0}\n onBlur={handleOnBlur}\n data-testid={`multi-lang-input-${name}`}\n >\n <Stack space=\"extraSmall\">\n <LanguageSelect\n language={language}\n options={languages}\n onChange={(lang) => handleLanguageChange(lang)}\n />\n <InputComponent\n label={label}\n variant={alertLevel}\n feedback={alertLabel}\n name={name}\n className=\"language-item\"\n onChange={(e: ChangeEvent<HTMLInputElement>) =>\n handleOnChange(e.target.value)\n }\n value={currentValue || ''}\n {...rest}\n />\n </Stack>\n </div>\n );\n};\n","import React, { FC, useEffect, useState } from 'react';\nimport { SearchableDropdown } from '@entur/dropdown';\n\ninterface OrganisationV3 {\n organisationId: number;\n tradingName: string;\n}\n\ninterface OrganisationDropDownProps {\n label: string;\n onChange: (organisationId: number) => void;\n organisations: OrganisationV3[];\n selectedOrganisationId?: number;\n [key: string]: any;\n}\n\nexport const OrganisationDropDown: FC<OrganisationDropDownProps> = ({\n label,\n organisations,\n onChange: handleChange,\n selectedOrganisationId,\n ...rest\n}) => {\n const [selectedOrganisation, setSelectedOrganisation] =\n useState<OrganisationV3>();\n\n useEffect(() => {\n setSelectedOrganisation(\n organisations.find((org) => org.organisationId === selectedOrganisationId)\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedOrganisationId]);\n\n return (\n <SearchableDropdown\n label={label}\n items={[\n ...organisations\n .sort((a, b) => a.tradingName.localeCompare(b.tradingName, 'nb'))\n .map((organisation) => {\n return {\n value: organisation.organisationId,\n label: organisation.tradingName,\n };\n }),\n ]}\n selectedItem={\n selectedOrganisation\n ? {\n value: selectedOrganisation.organisationId,\n label: selectedOrganisation.tradingName,\n }\n : null\n }\n onChange={(selectedValue) => {\n if (selectedValue) {\n handleChange(selectedValue.value);\n }\n }}\n clearable={false}\n {...rest}\n />\n );\n};\n","import React from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { splitUrlPath } from '@entur-partner/util';\n\ntype Props = {\n readonly pathname: string;\n readonly onBreadcrumbLookup: (path: string) => string | undefined;\n};\n\n/**\n * This component changes page title by using helmet and current path. It will translate subpaths, join them with a dash\n * and display it on browser tab.\n *\n * @param Props.pathname - The current path from react-router-dom.useLocation()\n * @param Props.onBreadcrumbLookup - A function that takes a path and returns a i18n translated string or undefined\n * @returns A Helmet component with updated title\n */\nexport function PageTitle({ pathname, onBreadcrumbLookup }: Props) {\n const paths: string[] = splitUrlPath(pathname);\n\n const pageTitles = paths\n .map((path) => ({ title: onBreadcrumbLookup(path), path }))\n .filter(({ title }) => title !== undefined)\n .map(({ title }) => title)\n .reverse()\n .join(' | ');\n\n return (\n <Helmet>\n <title>{pageTitles} | Entur Partner</title>\n </Helmet>\n );\n}\n","import React, { FC } from 'react';\nimport { Pagination } from '@entur/menu';\n\nexport interface PagerProps {\n currentPage: number;\n collectionSize: number;\n pageSize: number;\n onPageChange: (page: number) => void;\n}\n\nexport const Pager: FC<PagerProps> = ({\n collectionSize,\n pageSize,\n onPageChange,\n currentPage,\n}) => {\n const pageCount = Math.ceil(collectionSize / pageSize);\n return (\n <Pagination\n pageCount={pageCount}\n currentPage={currentPage}\n onPageChange={(page) => {\n onPageChange(page);\n }}\n />\n );\n};\n","import React, { ReactNode, FC } from 'react';\nimport { BusinessCapability } from '@entur-partner/permission-client-node';\nimport { hasAllPermissions, hasOneOfPermissions } from '@entur-partner/util';\n\n/**\n * Note: We use BusinessCapability here, not because we only want to check\n * BusinessCapabilities but because it represents a minimal subset of what we\n * need to check.\n */\nexport interface PermissionCheckProps {\n children: ReactNode;\n /** User permissions to check */\n permissions: BusinessCapability[];\n /** Check that at least one of the permissions is present */\n oneOf?: BusinessCapability[];\n /** Check that all of the permissions is present */\n all?: BusinessCapability[] | BusinessCapability;\n /** Rendered if check fails. Defaults to null */\n fallback?: ReactNode;\n}\n\n/**\n * Note: This component uses BusinessCapability, not because we only want to\n * check BusinessCapabilities but because it represents a minimal subset of\n * what we need to check.\n */\nexport const PermissionCheck: FC<PermissionCheckProps> = ({\n children,\n fallback = null,\n permissions,\n oneOf = [],\n all = [],\n}) => {\n const allIsAllowed = hasAllPermissions(all, permissions);\n\n const oneOfIsAllowed = hasOneOfPermissions(oneOf, permissions);\n\n const allowed = allIsAllowed && oneOfIsAllowed;\n return <>{allowed ? children : fallback}</>;\n};\n","import React, { FC, ReactNode } from 'react';\nimport { useBlocker, useInRouterContext } from 'react-router-dom';\nimport { Location } from 'history';\nimport { ModalProps } from '@entur/modal';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { ConfirmModal } from './ConfirmModal';\n\nexport interface RouteLeavingGuardProps extends Partial<ModalProps> {\n title: string;\n closeLabel: string;\n messages: {\n cancel: string;\n confirm: string;\n };\n children: ReactNode;\n shouldBlockNavigation: (location: Location) => boolean;\n}\n\nexport const RouteLeavingGuard: FC<RouteLeavingGuardProps> = ({\n children,\n shouldBlockNavigation,\n ...rest\n}) => {\n assertIsDefined(\n useInRouterContext() ? true : undefined,\n `RouteLeavingGuard must be used within a data router.`\n );\n\n const blocker = useBlocker(\n ({ currentLocation, nextLocation }) =>\n currentLocation.pathname !== nextLocation.pathname &&\n shouldBlockNavigation(nextLocation)\n );\n\n return (\n <ConfirmModal\n onDismiss={() => {\n if (blocker.state === 'blocked') {\n blocker.reset();\n }\n }}\n open={blocker.state === 'blocked'}\n onConfirm={() => {\n if (blocker.state === 'blocked') {\n blocker.proceed();\n }\n }}\n {...rest}\n >\n {children}\n </ConfirmModal>\n );\n};\n","import './StatusLabel.scss';\n\nimport React, { FC } from 'react';\nimport cx from 'classnames';\n\ninterface StatusLabelProps {\n label: string;\n active: boolean;\n aggressiveInactive?: boolean;\n showBullet?: boolean;\n center?: boolean;\n}\nexport const StatusLabel: FC<StatusLabelProps> = ({\n active = false,\n label = '',\n aggressiveInactive,\n showBullet,\n center,\n}) => {\n const bulletClassNames = cx('eps-status-label__bullet', {\n active,\n aggressive: aggressiveInactive,\n });\n const statusLabelClassNames = cx('eps-status-label', {\n center,\n });\n return (\n <div className={statusLabelClassNames}>\n {showBullet && <div className={bulletClassNames} />}\n <div>{label}</div>\n </div>\n );\n};\n","import './Text.scss';\n\nimport React, { ReactNode } from 'react';\nimport cx from 'classnames';\n\nimport { StyleColor, responsiveProp, Box } from './Box';\n\ntype StyleFontSize =\n | 'extraSmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'extraLarge'\n | 'extraLarge2'\n | 'extraLarge3'\n | 'extraLarge4';\n\ntype StyleFontWeight = 'body' | 'heading';\n\ntype StyleLineHeight =\n | 'extraSmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'extraLarge'\n | 'extraLarge2'\n | 'extraLarge3'\n | 'extraLarge4'\n | 'extraLarge5'\n | 'extraLarge6'\n | 'extraLarge7';\n\nexport type ResponsiveStyleFontSize =\n | StyleFontSize\n | [StyleFontSize?, StyleFontSize?, StyleFontSize?];\n\nexport type ResponsiveStyleLineHeight =\n | StyleLineHeight\n | [StyleLineHeight?, StyleLineHeight?, StyleLineHeight?];\n\nexport interface TextProps {\n className?: string;\n as?: React.ElementType;\n children: ReactNode;\n\n fontSize?: ResponsiveStyleFontSize;\n lineHeight?: ResponsiveStyleLineHeight;\n color?: StyleColor;\n fontWeight?: StyleFontWeight;\n\n [key: string]: any;\n}\n\nexport const Text = ({\n as: component = 'span',\n children,\n fontSize,\n color,\n lineHeight,\n fontWeight,\n className,\n ...rest\n}: TextProps) => {\n const classes = [];\n\n fontSize && classes.push(...responsiveProp('eps-font-size-', fontSize));\n lineHeight && classes.push(...responsiveProp('eps-line-height-', lineHeight));\n fontWeight && classes.push('eps-font-weight-' + fontWeight);\n\n const classList = cx(classes, className);\n\n return (\n <Box as={component} color={color} className={classList} {...rest}>\n {children}\n </Box>\n );\n};\n","import './Unbutton.scss';\n\nimport React, { FC } from 'react';\nimport { Button, ButtonProps } from '@entur/button';\nimport cx from 'classnames';\n\ninterface UnbuttonProps extends Omit<ButtonProps<any>, 'variant'> {}\n\nexport const Unbutton: FC<UnbuttonProps> = ({\n children,\n className,\n ...rest\n}) => (\n <Button variant=\"primary\" {...rest} className={cx('eps-unbutton', className)}>\n {children}\n </Button>\n);\n","import './index.scss';\n\nimport React, { FC, useState } from 'react';\nimport cx from 'classnames';\n\nimport { Environment } from '../environment';\nimport { CustomOverflowMenu } from './components/CustomOverflowMenu';\nimport { LanguageSwitchMenuItem } from './components/LanguageSwitchMenuItem';\nimport { VersionMenuItem } from './components/VersionMenuItem';\nimport { UserMenuItem } from './components/UserMenuItem';\nimport { LogOutMenuItem } from './components/LogOutMenuItem';\n\ninterface UserMenuProps {\n userName: string;\n messages: {\n logout: string;\n switchLanguage: string;\n appVersion?: string;\n myProfile?: string;\n };\n onLogout: () => void;\n onLanguageChange: (language: string) => void;\n language: string;\n className?: string;\n environment?: Environment;\n showVersionItem?: boolean;\n showMyProfileItem?: boolean;\n onNavigateToMyProfile: () => void;\n}\n\nexport const UserMenu: FC<UserMenuProps> = ({\n className,\n messages,\n onLogout,\n onLanguageChange,\n userName,\n language,\n environment,\n showVersionItem,\n showMyProfileItem,\n onNavigateToMyProfile,\n}) => {\n const triggerClassList = cx(['eps-user-menu__trigger-button', className]);\n const [open, setOpen] = useState(false);\n\n return (\n <div id=\"eps-user-menu\">\n <CustomOverflowMenu\n open={open}\n onOpenChange={setOpen}\n className={triggerClassList}\n userName={userName}\n environment={environment}\n >\n <div id=\"eps-overflow-menu\">\n <LanguageSwitchMenuItem\n name={messages.switchLanguage}\n language={language}\n onLanguageChange={onLanguageChange}\n setOpen={setOpen}\n />\n {showVersionItem && messages.appVersion && (\n <VersionMenuItem title={messages.appVersion} setOpen={setOpen} />\n )}\n {showMyProfileItem && messages.myProfile && (\n <UserMenuItem\n name={messages.myProfile}\n setOpen={setOpen}\n onNavigateToMyProfile={onNavigateToMyProfile}\n />\n )}\n <LogOutMenuItem\n name={messages.logout}\n setOpen={setOpen}\n onLogout={onLogout}\n />\n </div>\n </CustomOverflowMenu>\n </div>\n );\n};\n","/*global EventListener WindowEventHandlers*/\nimport { useEffect, useRef } from 'react';\n\ninterface TypedEventListener<T extends Event> {\n (evt: T): void;\n}\n\nexport function useEventListener<T extends Event = Event>(\n eventName: string,\n handler: TypedEventListener<T>,\n element: WindowEventHandlers = window\n) {\n const savedHandler = useRef<TypedEventListener<T>>();\n\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n const isSupported = element && element.addEventListener;\n if (!isSupported) return;\n\n const eventListener = ((event: T): void =>\n savedHandler.current?.(event)) as EventListener;\n\n element.addEventListener(eventName, eventListener);\n\n return () => {\n element.removeEventListener(eventName, eventListener);\n };\n }, [eventName, element]);\n}\n"],"names":["responsiveProp","prefix","prop","Array","isArray","classes","push","Environment","Box","_ref","_ref$as","as","Component","children","contrast","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","padding","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","margin","display","justifyContent","alignItems","maxWidth","width","background","color","flexDirection","flexWrap","className","rest","_objectWithoutPropertiesLoose","_excluded","resolvedPaddingTop","resolvedPaddingBottom","resolvedPaddingLeft","resolvedPaddingRight","resolvedMarginTop","resolvedMarginBottom","resolvedMarginLeft","resolvedMarginRight","apply","classList","cx","React","createElement","_extends","Stack","space","stackItems","Children","toArray","length","Fragment","map","child","index","key","featureFlag","flag","_window$localStorage","_window$localStorage2","import","window","localStorage","getItem","useFeatureToggle","environmentColors","_environmentColors","Local","Development","Staging","getColorForEnvironment","environment","humanReadableEnvironment","_humanReadableEnviron","Production","getHumanReadableEnvironment","EnturPartnerLogoSvg","title","_ref$accentColor","accentColor","height","viewBox","fill","fillRule","d","elementContainsEventTarget","element","event","contains","target","composed","composedPath","find","CustomOverflowMenu","ref","buttonRef","handler","userName","open","onOpenChange","overflowItemsClasses","overflowContentRef","useRef","overflowMenuTriggerRef","useEffect","listener","current","document","addEventListener","removeEventListener","SecondaryButton","onClick","role","UserIcon","inline","Heading6","undefined","style","DownArrowIcon","CustomOverflowMenuItem","props","LanguageSwitchMenuItem","language","onLanguageChange","setOpen","name","useB47LanguageKey","norwegianLanguageKey","englishLanguageKey","NorwayIcon","size","UKIcon","VersionMenuItem","navigate","useNavigate","ChannelsIcon","UserMenuItem","onNavigateToMyProfile","Link","to","textDecoration","LogOutMenuItem","onLogout","LogOutIcon","LanguageSelect","options","onChange","classNames","SegmentedControl","assertIsDefined","selectedValue","option","SegmentedChoice","value","label","required","ErrorBoundary","_Component","_this","call","this","state","error","getDerivedStateFromError","_proto","prototype","componentDidCatch","errorInfo","_this$props$handleErr","_this$props","handleError","render","functionToCheck","_this2","_this$props2","fallback","toString","retry","setState","message","RefreshBannerInfo","LANGUAGE_STORAGE_KEY","isNorwegian","BannerAlertBox","variant","Paragraph","PrimaryButton","location","reload","FormatDateTime","date","locale","hideTime","localeDate","localeDateTime","ConfirmModal","_ref$isOpen","isOpen","_ref$size","buttons","onConfirm","messages","onClose","onDismiss","childrenToRender","handleDismiss","Modal","isString","ButtonGroup","cancel","confirm","_ref3","_ref2","items","i","isDate","isDateString","prependBreadcrumbItem","onBreadcrumbLookup","breadcrumbs","splitUrlPath","pathname","path","filter","breadcrumbElements","BreadcrumbItem","BreadcrumbNavigation","concat","classnames","_ref2$as","altText","InputComponent","inputComponent","languages","values","feedback","ExpandablePanel","defaultOpen","contentStyle","langKey","e","changes","amount","parsedAmount","Number","formattedAmount","Intl","NumberFormat","maximumFractionDigits","minimumFractionDigits","format","A","RouterLink","alertLabel","alertLevel","_ref$defaultLanguage","defaultLanguage","_ref$label","_ref$onBlur","onBlur","_useState","useState","setLanguage","currentValue","tabIndex","persist","currentTarget","setTimeout","activeElement","lang","handleLanguageChange","Object","assign","organisations","handleChange","selectedOrganisationId","selectedOrganisation","setSelectedOrganisation","org","organisationId","SearchableDropdown","sort","a","b","tradingName","localeCompare","organisation","selectedItem","clearable","pageTitles","reverse","join","Helmet","onPageChange","currentPage","pageCount","Math","ceil","collectionSize","pageSize","Pagination","page","_ref$fallback","permissions","_ref$oneOf","oneOf","_ref$all","all","allIsAllowed","hasAllPermissions","oneOfIsAllowed","hasOneOfPermissions","shouldBlockNavigation","useInRouterContext","blocker","useBlocker","nextLocation","currentLocation","reset","proceed","_ref$active","active","showBullet","center","bulletClassNames","aggressive","aggressiveInactive","statusLabelClassNames","component","fontSize","lineHeight","fontWeight","Button","showVersionItem","showMyProfileItem","triggerClassList","id","switchLanguage","appVersion","myProfile","logout","eventName","savedHandler","eventListener"],"mappings":"s0CAuHgB,SAAAA,EAAeC,EAAgBC,GAC7C,GAAIC,MAAMC,QAAQF,GAAO,CACvB,IAAMG,EAAU,GAIhB,OAHAH,EAAK,IAAMG,EAAQC,KAAKL,EAASC,EAAK,IACtCA,EAAK,IAAMG,EAAQC,KAAQL,GAAAA,EAASC,EAAK,UACzCA,EAAK,IAAMG,EAAQC,KAAQL,GAAAA,EAASC,EAAK,UAClCG,CACR,CACD,MAAO,CAACJ,EAASC,EACnB,SChIYK,EDkICC,EAAM,SAAHC,GA6BD,IAAAC,EAAAD,EA5BbE,GAAIC,OAAY,IAAHF,EAAG,MAAKA,EACrBG,EAAQJ,EAARI,SACAC,EAAQL,EAARK,SACAC,EAAUN,EAAVM,WACAC,EAAYP,EAAZO,aACAC,EAAaR,EAAbQ,cACAC,EAAWT,EAAXS,YACAC,EAAQV,EAARU,SACAC,EAAQX,EAARW,SACAC,EAAOZ,EAAPY,QACAC,EAASb,EAATa,UACAC,EAAWd,EAAXc,YACAC,EAAYf,EAAZe,aACAC,EAAUhB,EAAVgB,WACAC,EAAOjB,EAAPiB,QACAC,EAAOlB,EAAPkB,QACAC,EAAMnB,EAANmB,OACAC,EAAOpB,EAAPoB,QACAC,EAAcrB,EAAdqB,eACAC,EAAUtB,EAAVsB,WACAC,EAAQvB,EAARuB,SACAC,EAAKxB,EAALwB,MACAC,EAAUzB,EAAVyB,WACAC,EAAK1B,EAAL0B,MACAC,EAAa3B,EAAb2B,cACAC,EAAQ5B,EAAR4B,SACAC,EAAS7B,EAAT6B,UACGC,EAAIC,EAAA/B,EAAAgC,GAEDpC,EAAU,GACVqC,EAAqB3B,GAAcK,GAAYC,EAC/CsB,EAAwB1B,GAAiBG,GAAYC,EACrDuB,EAAsB1B,GAAeC,GAAYE,EACjDwB,EAAuB7B,GAAgBG,GAAYE,EAEnDyB,EAAoBxB,GAAaK,GAAWC,EAC5CmB,EAAuBvB,GAAgBG,GAAWC,EAClDoB,EAAqBvB,GAAcC,GAAWE,EAC9CqB,EAAsB1B,GAAeG,GAAWE,EAEtDd,GAAYT,EAAQC,KAAK,gBACzBoC,GACErC,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,UAAW0C,IAC5CC,GACEtC,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,UAAW2C,IAC5CC,GACEvC,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,UAAW4C,IAC5CC,GACExC,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,UAAW6C,IAC5CC,GACEzC,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,UAAW8C,IAC5CC,GACE1C,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,UAAW+C,IAC5CC,GACE3C,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,UAAWgD,IAC5CC,GACE5C,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,UAAWiD,IAE5CpB,GAAWxB,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,OAAQ6B,IAClDC,GACEzB,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,eAAgB8B,IAC7CC,GACF1B,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,aAAc+B,IAG/CC,GAAY3B,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,aAAcgC,IACzDC,GAAS5B,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,SAAUiC,IAElDE,GAAS9B,EAAQC,KAAI,aAAc6B,GACnCD,GAAc7B,EAAQC,KAAI,UAAW4B,GAErCE,GAAiB/B,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,YAAaoC,IAC7DC,GAAYhC,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,iBAAkBqC,IAE7D,IAAMc,EAAYC,EAAAA,QAAG/C,EAASiC,GAE9B,OACEe,UAAAC,cAAC1C,EAAS2C,EAAA,CAACjB,UAAWa,GAAeZ,GAClC1B,EAGP,EE1Ma2C,EAAQ,SAAH/C,GAAkD,IAAlCgD,EAAKhD,EAALgD,MAAOnB,EAAS7B,EAAT6B,UACjCoB,EAAaC,EAAAA,SAASC,QADEnD,EAARI,UAEtB,OAAI6C,EAAWG,QAAU,EAChBR,EAAAA,QAAAC,cAAAD,EAAAA,QAAAS,SAAA,KAAGJ,GAIVL,EAAK,QAAAC,cAAA,MAAA,CAAAhB,UAAWA,GACboB,EAAWK,KAAI,SAACC,EAAOC,GAAK,OAC3BA,IAAUP,EAAWG,OAAS,EAC5BR,+BAAKa,IAAKD,GAAQD,GAElBX,UAAAC,cAAC9C,EAAG,CAACS,cAAewC,EAAOS,IAAKD,GAC7BD,EAEJ,IAIT,6BCnBM,SAAUG,EAAYC,GAAY,IAAAC,EAAAC,EACtC,MAC0C,eAAxCC,GAAe,YAAaH,IACW,iBAAvCC,EAAAG,OAAOC,qBAAPJ,EAAqBK,QAAQN,KACwB,UAAlC,OAAnBE,EAAAE,OAAOC,mBAAY,EAAnBH,EAAqBI,oBAAoBN,GAE7C,CASM,SAAUO,EAAiBP,GAC/B,OAAOD,EAAYC,EACrB,CF3BY7D,QAKXA,iBAAA,GALWA,EAAAA,sBAAAA,QAAAA,YAKX,CAAA,IAJC,MAAA,QACAA,EAAA,YAAA,MACAA,EAAA,QAAA,UACAA,EAAA,WAAA,OAGF,IAAMqE,IAAiBC,EAAA,IAIpBtE,QAAAA,YAAYuE,OAAQ,UAASD,EAC7BtE,QAAWA,YAACwE,aAAc,UAASF,EACnCtE,QAAAA,YAAYyE,SAAU,UAASH,GAQrBI,EAAyB,SACpCC,GAAyD,OACtDN,EAAkBM,EAAY,EAE7BC,IAAwBC,EAAAA,IAC3B7E,QAAWA,YAACuE,OAAQ,QAAOM,EAC3B7E,QAAWA,YAACwE,aAAc,MAAKK,EAC/B7E,QAAWA,YAACyE,SAAU,UAASI,EAC/B7E,QAAWA,YAAC8E,YAAa,OAAMD,GAGrBE,EAA8B,SAACJ,GAAwB,OAClEC,EAAyBD,EAAY,4BGnB1BK,EAAqC,SAAlB9E,GAI3B,IAHH+E,EAAK/E,EAAL+E,MAAKC,EAAAhF,EACLiF,YAAAA,OAAc,IAAHD,EAAG,UAASA,EACpBlD,EAAIC,EAAA/B,EAAAgC,GAEP,OACEY,UAAAC,cAAA,MAAAC,EAAA,CAAKtB,MAAO,IAAK0D,OAAQ,GAAIC,QAAQ,cAAiBrD,GACpDc,UAAAC,cAAA,QAAA,KAAQkC,GACRnC,EAAAA,QAAAC,cAAA,IAAA,CAAGuC,KAAK,OAAOC,SAAS,WACtBzC,EAAA,QAAAC,cAAA,OAAA,CACEuC,KAAK,OACLE,EAAE,iFAEJ1C,EAAAA,QAAAC,cAAA,OAAA,CAAMuC,KAAMH,EAAaK,EAAE,8BAC3B1C,EAAAA,QAAAC,cAAA,OAAA,CACEuC,KAAK,OACLE,EAAE,+sCAEJ1C,EAAAA,QAAGC,cAAA,IAAA,CAAAuC,KAAMH,GACPrC,EAAM,QAAAC,cAAA,OAAA,CAAAyC,EAAE,ksDAKlB,ECTA,SAASC,EAA2BC,EAA6BC,GAC/D,SAAKD,KAIDA,EAAQE,SAASD,EAAME,SAKvBF,EAAMG,UAAYH,EAAMI,cACTJ,EAAMI,eAAeC,MAAK,SAACH,GAC1C,OAAIA,IAAW5B,QAGRyB,EAAQE,SAASC,EAC1B,KAKJ,+ECnCaI,EAOR,SAP0B/F,GAe1B,ID3BHgG,EACAC,EACAC,ECkBArE,EAAS7B,EAAT6B,UACAzB,EAAQJ,EAARI,SACA+F,EAAQnG,EAARmG,SACAC,EAAIpG,EAAJoG,KACAC,EAAYrG,EAAZqG,aACA5B,EAAWzE,EAAXyE,YACG3C,EAAIC,EAAA/B,EAAAgC,GAEDsE,EAAuB3D,EAAE,QAAC,2BAA4B,CAC1D,iCAAkCyD,IAE9BG,EAAqB3D,EAAAA,QAAM4D,OAAuB,MAClDC,EAAyB7D,EAAAA,QAAM4D,OAA0B,MAI/D,ODhCA5D,EAAK,QAAC8D,WAAU,WACd,IAAMC,EAAW,SAAClB,GAEdF,EAA2BS,EAAIY,QAASnB,IACxCF,EAA2BU,EAAUW,QAASnB,IAKhDS,KAMF,OAHAW,SAASC,iBAAiB,YAAaH,GACvCE,SAASC,iBAAiB,aAAcH,GAEjC,WACLE,SAASE,oBAAoB,YAAaJ,GAC1CE,SAASE,oBAAoB,aAAcJ,GAE9C,GAAE,CAvBHX,ECiCgBO,EDhChBN,ECgCoCQ,ED/BpCP,EC+B4D,WAAA,OAC1DG,GAAa,MAGbzD,EAAA,QAAAC,cAAA,MAAA,KACED,EAAAA,QAAAC,cAACmE,EAAeA,gBAAAlE,EAAA,CACdjB,UAAWc,EAAAA,QAAG,4BAA6Bd,GAC3CoF,QAAS,WAAF,OAAQZ,GAAaD,EAAoB,mBACjC,EACfc,KAAK,yBACUd,EACfJ,IAAKS,GACD3E,GAEJc,UAAKC,cAAA,MAAA,CAAAhB,UAAU,sCACbe,EAAM,QAAAC,cAAA,OAAA,CAAAhB,UAAU,gCACde,EAAA,QAAAC,cAACsE,WAAQ,CAACC,QAAM,KAElBxE,EAAAA,QAACC,cAAAwE,YAASlG,OAAO,OAAOjB,GAAG,QACxBiG,OACgBmB,IAAhB7C,GACCA,IAAgB3E,QAAWA,YAAC8E,YAC1BhC,EAAAA,QAAMC,cAAA,OAAA,CAAA0E,MAAO,CAAE7F,MAAO8C,EAAuBC,KAC1C,QACCI,EAA4BJ,GACzB,MAGb7B,EAAAA,QAAMC,cAAA,OAAA,CAAAhB,UAAU,kBACde,EAAA,QAAAC,cAAC2E,gBAAc,CAAAJ,QAAS,OAI7BhB,GACCxD,EAAAA,QACEC,cAAA,MAAA,CAAAhB,UAAWyE,EACXY,KAAK,OACLlB,IAAKO,GAEJnG,GAKX,EC3EaqH,EAKT,SAACC,GACH,OACE9E,oCACEf,UAAWc,EAAE,QAAC+E,EAAM7F,UAAW,2BAC/BqF,KAAK,YACDQ,GAGV,ECHaC,EAAyB,SAAH3H,GAKvB,IAJV4H,EAAQ5H,EAAR4H,SACAC,EAAgB7H,EAAhB6H,iBACAC,EAAO9H,EAAP8H,QACAC,EAAI/H,EAAJ+H,KAEMC,EAAoB9D,EAAiB,2BACrC+D,EAAuBD,EAAoB,QAAU,KACrDE,EAAqBF,EAAoB,QAAU,KAEzD,OACEpF,UAAAC,cAAAD,EAAA,QAAAS,SAAA,KACGuE,IAAaM,EACZtF,EAAAA,sBAAC6E,EAAsB,CACrBR,QAAS,WACPY,EAAiBI,GACjBH,GAAQ,EACT,EACDjG,UAAU,2BAEVe,EAAkB,QAAAC,cAAA,OAAA,CAAA,eAAA,EAAAhB,UAAU,kCAC1Be,EAAC,QAAAC,cAAAsF,cAAWC,KAAK,OAAOhB,aAEzBW,GAGHnF,EAAAA,QAACC,cAAA4E,EACC,CAAAR,QAAS,WACPY,EAAiBK,GACjBJ,GAAQ,EACT,EACDjG,UAAU,2BAEVe,EAAkB,QAAAC,cAAA,OAAA,CAAA,eAAA,EAAAhB,UAAU,kCAC1Be,EAAC,QAAAC,cAAAwF,UAAOD,KAAK,OAAOhB,aAErBW,GAKX,EClDaO,EAGR,SAHuBtI,GAGA,IAApB+E,EAAK/E,EAAL+E,MAAO+C,EAAO9H,EAAP8H,QACPS,EAAWC,EAAAA,cACjB,OACE5F,EAAC,QAAAC,cAAA4E,GACCR,QAAS,WACPsB,EAAS,gBACTT,GAAQ,EACT,EACDjG,UAAU,2BAEVe,EAAA,QAAAC,cAAA,OAAA,CAAA,eAAA,GACED,EAAA,QAAAC,cAAC4F,eAAY,CAAC5G,UAAU,mBAAmBuG,KAAK,OAAOhB,QAAM,KAE9DrC,EAGP,ECXa2D,EAAe,SAAH1I,GAIb,IAHV+H,EAAI/H,EAAJ+H,KACAD,EAAO9H,EAAP8H,QACAa,EAAqB3I,EAArB2I,sBAEA,OACE/F,EAAA,QAAAC,cAAC+F,OAAI,CAACC,GAAG,+BAA+BtB,MAAO,CAAEuB,eAAgB,SAC/DlG,EAAA,QAAAC,cAAC4E,EAAsB,CACrBR,QAAS,WACPa,GAAQ,GACRa,GACD,EACD9G,UAAU,2BAEVe,EAAA,QAAAC,cAAA,OAAA,CAAA,eAAA,GACED,EAAC,QAAAC,cAAAsE,YAASiB,KAAK,OAAOhB,aAEvBW,GAIT,ECtBagB,EAAiB,SAAH/I,GAA0C,IAApC+H,EAAI/H,EAAJ+H,KAAMD,EAAO9H,EAAP8H,QAASkB,EAAQhJ,EAARgJ,SAC9C,OACEpG,EAAC,QAAAC,cAAA4E,GACCR,QAAS,WACP+B,IACAlB,GAAQ,EACT,EACW,cAAA,mBACZjG,UAAU,2BAEVe,EAAA,QAAAC,cAAA,OAAA,CAAA,eAAA,GACED,EAAC,QAAAC,cAAAoG,cAAWb,KAAK,OAAOhB,aAEzBW,EAGP,kHCNamB,EAA0C,SAA5BlJ,GAMtB,IALH4H,EAAQ5H,EAAR4H,SACAuB,EAAOnJ,EAAPmJ,QACAtH,EAAS7B,EAAT6B,UACAuH,EAAQpJ,EAARoJ,SACGtH,EAAIC,EAAA/B,EAAAgC,GAEDqH,EAAa1G,EAAAA,QAAG,sBAAuBd,GAC7C,OACEe,EAAAA,QAASC,cAAA,MAAAC,KAAAhB,EAAI,CAAED,UAAWwH,IACxBzG,EAAAA,QAAAC,cAACyG,mBACC,CAAAF,SAAU,SAACxB,GACT2B,EAAeA,gBAAC3B,GAChBwB,EAASxB,EACV,EACD4B,cAAe5B,GAEduB,EAAQ7F,KAAI,SAACmG,GAAM,OAClB7G,EAAA,QAAAC,cAAC6G,kBAAe,CAACjG,IAAKgG,EAAOE,MAAOA,MAAOF,EAAOE,OAC/CF,EAAOG,MACPH,EAAOI,UAAYjH,EAAM,QAAAC,cAAA,OAAA,CAAAhB,UAAU,mBAAmB,KAE1D,KAIT,2PCrBaiI,WAAcC,GACzB,SAAAD,EAAYpC,GAAY,IAAAsC,EAEO,OAD7BA,EAAAD,EAAAE,KAAAC,KAAMxC,IAAMwC,MACPC,MAAQ,CAAEC,MAAO,MAAOJ,CAC/B,WAACD,KAAAD,yEAAAA,EAEMO,yBAAP,SAAgCD,GAC9B,MAAO,CACLA,MAAAA,IAEH,IAAAE,EAAAR,EAAAS,UAyBA,OAzBAD,EAEDE,kBAAA,SAAkBJ,EAAcK,GAAoB,IAAAC,EAAAC,EAE5B,OAAtBD,GAAAC,OAAKjD,OAAMkD,cAAXF,EAAAT,KAAAU,EAAyBP,EAAOK,IACjCH,EAEDO,OAAA,WAAM,IC7CsBC,ED6CtBC,EAAAb,KACIE,EAAUF,KAAKC,MAAfC,MACRY,EAA+Bd,KAAKxC,MAA5BuD,EAAQD,EAARC,SAAU7K,EAAQ4K,EAAR5K,SAElB,OAAIgK,GCjDsBU,EDkDGG,IChD4B,sBAAtC,CAAA,EAAGC,SAASjB,KAAKa,GDiDzBG,EAAS,CAAEE,MAAO,WAAF,OAAQJ,EAAKK,SAAS,CAAEhB,MAAO,MAAO,EAAEA,MAAAA,IAEhD,kBAAfA,EAAMrC,MA3BZ,mGA4BMqC,EAAMiB,QAECzI,UAAAC,cAACyI,EAAiB,MAGpBL,EAGF7K,GACR0J,CAAA,EAnCgC3J,aAsCtBoL,EAAuB,aAEpC,SAASD,IAEP,IACME,EAA2B,OADhBxH,aAAaC,QAAQsH,GAEtC,OACE3I,EAAC,QAAAC,cAAA9C,EAAI,CAAAwB,SAAS,SACZqB,EAAC,QAAAC,cAAA4I,kBACCC,QAAQ,OACR3G,MACEyG,EACI,8CACA,8CAGN5I,EAAA,QAAAC,cAAC9C,EAAG,CAACS,cAAc,UACjBoC,EAAA,QAAAC,cAAC8I,YAAU,CAAAxK,OAAO,QACfqK,EAAc,sBAAwB,oBAG3C5I,EAAC,QAAAC,cAAA+I,gBAAc,CAAA3E,QAAS,WAAF,OAAQlD,OAAO8H,SAASC,QAAQ,GACnDN,EAAc,WAAa,YAKtC,yCEpFaO,GAA0C,SAA5B/L,GAMtB,IALHgM,EAAIhM,EAAJgM,KACAC,EAAMjM,EAANiM,OAAMhM,EAAAD,EACNE,GAAIC,OAAY,IAAHF,EAAG,OAAMA,EACtBiM,EAAQlM,EAARkM,SACGpK,EAAIC,EAAA/B,EAAAgC,GAEP,OACEY,EAAAA,QAACC,cAAA1C,EAAS2C,EAAA,CAAA,EAAKhB,GACZoK,EAAWC,EAAAA,WAAWH,EAAMC,GAAUG,EAAcA,eAACJ,EAAMC,GAGlE,wJCkBaI,GAAsC,SAA1BrM,GAWpB,IAAAsM,EAAAtM,EAVHuM,OAAAA,OAAS,IAAHD,GAAQA,EACdlM,EAAQJ,EAARI,SACAiL,EAAOrL,EAAPqL,QAAOmB,EAAAxM,EACPoI,KAAAA,OAAO,IAAHoE,EAAG,SAAQA,EACfC,EAAOzM,EAAPyM,QACAC,EAAS1M,EAAT0M,UACAC,EAAQ3M,EAAR2M,SACAC,EAAO5M,EAAP4M,QACAC,EAAS7M,EAAT6M,UACG/K,EAAIC,EAAA/B,EAAAgC,IAED8K,EAAmB1M,GAAsBiL,EACzC0B,EAAgBH,GAAoBC,EAC1C,OACEjK,UAACC,cAAAmK,EAAKA,MAAAlK,EAAA,CAACsF,KAAMA,EAAMhC,KAAMmG,EAAQM,UAAWE,GAAmBjL,GAC5DmL,EAAAA,SAASH,GACRlK,EAAAA,QAACC,cAAA8I,EAASA,UAAE,KAAAmB,GAEZlK,EAAAA,QAAAC,cAAC9C,EAAG,CAACS,cAAc,UAAUsM,GAG/BlK,EAAA,QAAAC,cAACqK,EAAWA,YACT,KAAAR,EACC9J,EAAA,QAAAC,cAAAD,EAAA,QAAAS,SAAA,KACET,EAAC,QAAAC,cAAAmE,kBACC,CAAAC,QAAS8F,EACG,cAAA,uBAEXJ,EAASQ,QAEZvK,EAAAA,QAACC,cAAA+I,EAAAA,eACC3E,QAASyF,EACG,cAAA,wBAEXC,EAASS,UAIdX,GAKV,0ICpEkB,SAAHY,GAAoC,IAA9BjN,EAAQiN,EAARjN,SACnB,OACEwC,EAAA,QAAAC,cAAAD,UAAAS,SAAA,KACET,EAAK,QAAAC,cAAA,MAAA,CAAAhB,UAAU,2BACfe,EAAAA,QAAKC,cAAA,MAAA,CAAAhB,UAAU,kBAAkBzB,GAGvC,wBAfsB,SAAHJ,GACjB,OAAO4C,+BAAKf,UAAU,uBADS7B,EAARI,SAEzB,yBAEuB,SAAHkN,GAClB,OAAO1K,+BAAKf,UAAU,wBADUyL,EAARlN,SAE1B,oBCQ6C,SAAvBJ,GAKjB,IAJHuN,EAAKvN,EAALuN,MACAtB,EAAMjM,EAANiM,OACApK,EAAS7B,EAAT6B,UACGC,EAAIC,EAAA/B,EAAAgC,IAEDqH,EAAa1G,EAAAA,QAAG,gBAAiBd,GACvC,OACEe,UAAAC,cAAA,MAAAC,EAAA,CAAKjB,UAAWwH,GAAgBvH,GAC7ByL,EAAMjK,KAAI,SAAAgK,EAAmBE,GAAC,IAAV7D,EAAK2D,EAAL3D,MAAK,OACxB/G,EAAA,QAAAC,cAACE,EAAK,CAACC,MAAM,QAAQS,IAAK+J,GACxB5K,EAAA,QAAAC,cAAA,MAAA,CAAKhB,UAAU,uBAFAyL,EAAL1D,OAGVhH,EAAAA,QAAAC,cAAA,MAAA,KACG4K,EAAAA,OAAO9D,IAAU+D,EAAYA,aAAC/D,GAC7B/G,EAAAA,sBAACmJ,GAAc,CAACC,KAAMrC,EAAOsC,OAAQA,IAErCrJ,EAAA,QAAAC,cAAA,OAAA,KAAO8G,IAId,IAGP,oCChCiD,SAAzB3J,GAInB,IAHH2N,EAAqB3N,EAArB2N,sBAEAC,EAAkB5N,EAAlB4N,mBAIMC,EAFkBC,eAHhB9N,EAAR+N,UAMGzK,KAAI,SAAC0K,GAAI,MAAM,CAAEjJ,MAAO6I,EAAmBI,GAAOA,KAAAA,EAAM,IACxDC,QAAO,SAAAX,GAAQ,YAAiBhG,IAAjBgG,EAALvI,SAEPmJ,EAAqBL,EAAYvK,KAAI,SAAA+J,EAAkBG,GAAK,IAAbQ,EAAIX,EAAJW,KAEnD,OAEIpL,EAAA,QAAAC,cAACsL,iBAHUX,IAAMK,EAAYzK,OAAS,EAGvB,CAACK,IAAKuK,EAAM9N,GAAI,SAMjBuD,IAAKuK,EAAM9N,GAAI0I,EAAIA,KAAEC,GAAImF,GAVMX,EAALtI,MAc9C,IAEA,OAEInC,EAAA,QAAAC,cAACuL,EAAAA,qBAAoB,KAFrBT,EAGIA,CAAAA,GAAqBU,OAAKH,GAKJA,EAChC,0CCtCyC,SAArBlO,GAIf,IAAAC,EAAAD,EAHHE,GAAIC,OAAY,IAAHF,EAAG,OAAMA,EAEtBG,EAAQJ,EAARI,SAEMsC,EAAY4L,EAAU,QAAC,CAAC,cAHrBtO,EAAT6B,YAKA,OAAOe,EAAA,QAAAC,cAAC1C,EAAU,CAAA0B,UAAWa,GAAYtC,EAC3C,2BhB6B2D,SAA9BkN,GAKxB,IAAAiB,EAAAjB,EAJHpN,GAAIC,OAAY,IAAHoO,EAAG,MAAKA,EAErBC,EAAOlB,EAAPkB,QACA/J,EAAW6I,EAAX7I,YAEM/B,EAAY4L,EAAU,QAAC,CAAC,mBAJrBhB,EAATzL,YAMA,OACEe,EAAC,QAAAC,cAAA1C,EAAU,CAAA0B,UAAWa,GACpBE,EAAC,QAAAC,cAAAiC,GACCC,MAAOyJ,EACP3M,UAAU,OACVoD,iBACkBqC,IAAhB7C,GAA6BA,IAAgB3E,QAAWA,YAAC8E,WACrDJ,EAAuBC,QACvB6C,IAKd,6FiB/C4C,SAAHtH,GAUD,IATtC+E,EAAK/E,EAAL+E,MACgB0J,EAAczO,EAA9B0O,eACAC,EAAS3O,EAAT2O,UACAC,EAAM5O,EAAN4O,OACAxF,EAAQpJ,EAARoJ,SACArB,EAAI/H,EAAJ+H,KACA2D,EAAO1L,EAAP0L,QACAmD,EAAQ7O,EAAR6O,SACG/M,EAAIC,EAAA/B,EAAAgC,GAYP,OACEY,EAAC,QAAAC,cAAAiM,kBACC,CAAA/J,MAAOA,EACPgK,aACA,EAAAC,aAAc,CACZpO,QAAS,kBACTC,UAAW,OACXE,aAAc,SAGhB6B,EAAA,QAAAC,cAACE,EAAM,CAAAC,MAAM,UACV2L,EAAUrL,KAAI,SAAAgK,GAAA,IAAU2B,EAAO3B,EAAd3D,MAAgBC,EAAK0D,EAAL1D,MAAe,OAC/ChH,UAACC,cAAA4L,EAAc3L,EAAA,mCACoBiF,EAAI,IAAIkH,EACzCxL,IAAKsB,EAAQkK,EACbrF,MAJ6C0D,EAARzD,SAInBD,EAAQ,IAAMA,EAChC8B,QAASA,GAAWA,EAAQuD,GAC5BJ,SAAUA,GAAYA,EAASI,GAC/BlH,KAAMA,EACNqB,SAAU,SAAC8F,GA7BE,IAACtH,EAAuB+B,EACvCwF,EADgBvH,EA8BGqH,EA9BoBtF,EA8BXuF,EAAEvJ,OAAOgE,MA7BrCwF,EAAOrM,EAAA,CAAA,EAAQ8L,GACP,KAAVjF,GAAiBA,EAGnBwF,EAAQvH,GAAY+B,SAFbwF,EAAQvH,GAIjBwB,EAAS+F,EAwBA,EACDxF,MAAOiF,EAAOK,IAAY,IACtBnN,GAEP,KAIT,wBlBlC6B,SAAH9B,GAA8C,IAAxCI,EAAQJ,EAARI,SAE9B,OADgB8D,EAD4BlE,EAAJ2D,MAG/Bf,EAAAA,QAAAC,cAAAD,EAAAA,QAAAS,SAAA,KAAGjD,GAEL,IACT,+BmBnCmE,SAAlCJ,GAI5B,IAHHoP,EAAMpP,EAANoP,OAAMnP,EAAAD,EACNE,GAAIC,OAAY,IAAHF,EAAG,OAAMA,EACnB6B,EAAIC,EAAA/B,EAAAgC,IAEDqN,EAAeC,OAAOF,IAAW,EAEjCG,EAAkB,IAAIC,KAAKC,aAAa,QAAS,CACrDC,sBAAuB,EACvBC,sBAAuB,IACtBC,OAAOP,GAEV,OAAOzM,wBAACzC,EAAS2C,EAAKhB,CAAAA,EAAAA,GAAOyN,EAC/B,kECf+B,SAAC7H,GAC9B,OACE9E,EAAAA,QAAAC,cAACgN,EAAAA,KAAC/M,KAAK4E,EAAK,CAAExH,GAAI4P,EAAAA,OACfpI,EAAMtH,SAGb,qBCA0B,SAAHJ,GAAA,IACrBI,EAAQJ,EAARI,SACAyB,EAAS7B,EAAT6B,UACGC,EAAIC,EAAA/B,EAAAgC,GAAA,OAEPY,EAAAA,QAACC,cAAA+F,EAAAA,KAAI9F,KAAKhB,EAAI,CAAE5B,GAAG,SAAS2B,UAAWc,EAAAA,QAAG,kBAAmBd,KAC1DzB,EACI,eCT0B,SAAlBJ,GAIZ,IAAAC,EAAAD,EAHHE,GAAIC,OAAY,IAAHF,EAAG,MAAKA,EAErBG,EAAQJ,EAARI,SAEMsC,EAAY4L,EAAAA,QAAW,CAAC,eAAgB,WAHrCtO,EAAT6B,YAKA,OAAOe,EAAA,QAAAC,cAAC1C,EAAU,CAAA0B,UAAWa,GAAYtC,EAC3C,6BCU+D,SAAhCJ,GAa1B,IAZH6B,EAAS7B,EAAT6B,UACgB4M,EAAczO,EAA9B0O,eACAqB,EAAU/P,EAAV+P,WACAC,EAAUhQ,EAAVgQ,WACAjI,EAAI/H,EAAJ+H,KACA4G,EAAS3O,EAAT2O,UACAC,EAAM5O,EAAN4O,OACAxF,EAAQpJ,EAARoJ,SAAQ6G,EAAAjQ,EACRkQ,gBAAAA,OAAkB,IAAHD,EAAG,MAAKA,EAAAE,EAAAnQ,EACvB4J,MAAAA,OAAQ,IAAHuG,EAAG,GAAEA,EAAAC,EAAApQ,EACVqQ,OAAAA,OAAM,IAAAD,EAAG,WAAQ,EAAAA,EACdtO,EAAIC,EAAA/B,EAAAgC,GAEPsO,EAAgCC,EAAQA,SAACL,GAAlCtI,EAAQ0I,EAAA,GAAEE,EAAWF,EAAA,GACtBjH,EAAa1G,EAAAA,QAAG,uBAAwBd,GACxC4O,EAAe7B,EAAOhH,GA0B5B,OACEhF,EACE,QAAAC,cAAA,MAAA,CAAAhB,UAAWwH,EACXqH,SAAU,EACVL,OA5BiB,SAACnB,GACpBA,EAAEyB,UACF,IAAMC,EAAgB1B,EAAE0B,cACxBC,YAAW,WACLD,IAAkBA,EAAclL,SAASmB,SAASiK,gBACpDT,EAAOnB,EAEV,GAAE,IAsBY,cAAoBnH,oBAAAA,GAEjCnF,EAAA,QAAAC,cAACE,EAAK,CAACC,MAAM,cACXJ,EAAC,QAAAC,cAAAqG,GACCtB,SAAUA,EACVuB,QAASwF,EACTvF,SAAU,SAAC2H,GAAI,OAzBM,SAACnJ,GAC5B4I,EAAY5I,GAwBcoJ,CAAqBD,EAAK,IAEhDnO,EAAC,QAAAC,cAAA4L,EAAc3L,EAAA,CACb8G,MAAOA,EACP8B,QAASsE,EACTnB,SAAUkB,EACVhI,KAAMA,EACNlG,UAAU,gBACVuH,SAAU,SAAC8F,GAAgC,OA7B3BvF,EA8BCuF,EAAEvJ,OAAOgE,MA7B1BwF,EAAU8B,OAAOC,OAAO,CAAE,EAAEtC,GACpB,KAAVjF,GAAiBA,EAGnBwF,EAAQvH,GAAY+B,SAFbwF,EAAQvH,QAIjBwB,EAAS+F,GAPY,IAACxF,EAChBwF,CA6BgC,EAEhCxF,MAAO8G,GAAgB,IACnB3O,KAKd,+BClFmE,SAAlC9B,GAM5B,IALH4J,EAAK5J,EAAL4J,MACAuH,EAAanR,EAAbmR,cACUC,EAAYpR,EAAtBoJ,SACAiI,EAAsBrR,EAAtBqR,uBACGvP,EAAIC,EAAA/B,EAAAgC,GAEPsO,EACEC,EAAAA,WADKe,EAAoBhB,EAAA,GAAEiB,EAAuBjB,EAAA,GAUpD,OAPA5J,EAAAA,WAAU,WACR6K,EACEJ,EAAcrL,MAAK,SAAC0L,GAAG,OAAKA,EAAIC,iBAAmBJ,CAAsB,IAG7E,GAAG,CAACA,IAGFzO,wBAAC8O,EAAkBA,mBAAA5O,EAAA,CACjB8G,MAAOA,EACP2D,MAAK,GAAAc,OACA8C,EACAQ,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAEE,YAAYC,cAAcF,EAAEC,YAAa,KAAK,IAC/DxO,KAAI,SAAC0O,GACJ,MAAO,CACLrI,MAAOqI,EAAaP,eACpB7H,MAAOoI,EAAaF,YAExB,KAEJG,aACEX,EACI,CACE3H,MAAO2H,EAAqBG,eAC5B7H,MAAO0H,EAAqBQ,aAE9B,KAEN1I,SAAU,SAACI,GACLA,GACF4H,EAAa5H,EAAcG,MAE9B,EACDuI,WAAW,GACPpQ,GAGV,6BC9CyB9B,GAAwC,IAA3B4N,EAAkB5N,EAAlB4N,mBAG9BuE,EAFkBrE,eADU9N,EAAR+N,UAIvBzK,KAAI,SAAC0K,GAAI,MAAM,CAAEjJ,MAAO6I,EAAmBI,GAAOA,KAAAA,EAAM,IACxDC,QAAO,SAAAX,GAAQ,YAAiBhG,IAAjBgG,EAALvI,KAA+B,IACzCzB,KAAI,SAAA+J,GAAQ,OAAAA,EAALtI,KAAkB,IACzBqN,UACAC,KAAK,OAER,OACEzP,wBAAC0P,EAAMA,OAAA,KACL1P,EAAA,QAAAC,cAAA,QAAA,KAAQsP,EAAmC,oBAGjD,gBCtBqC,SAAnBnS,GAKb,IAFHuS,EAAYvS,EAAZuS,aACAC,EAAWxS,EAAXwS,YAEMC,EAAYC,KAAKC,KALT3S,EAAd4S,eACQ5S,EAAR6S,UAKA,OACEjQ,EAAC,QAAAC,cAAAiQ,aACC,CAAAL,UAAWA,EACXD,YAAaA,EACbD,aAAc,SAACQ,GACbR,EAAaQ,EACf,GAGN,0BCAyD,SAA7B/S,GAMvB,IALHI,EAAQJ,EAARI,SAAQ4S,EAAAhT,EACRiL,SAAAA,OAAW,IAAH+H,EAAG,KAAIA,EACfC,EAAWjT,EAAXiT,YAAWC,EAAAlT,EACXmT,MAAAA,OAAQ,IAAHD,EAAG,GAAEA,EAAAE,EAAApT,EACVqT,IAEMC,EAAeC,EAAAA,uBAFf,IAAHH,EAAG,GAAEA,EAEoCH,GAEtCO,EAAiBC,EAAAA,oBAAoBN,EAAOF,GAGlD,OAAOrQ,EAAA,QAAAC,cAAAD,UAAAS,SAAA,KADSiQ,GAAgBE,EACZpT,EAAW6K,EACjC,4BCpB6D,SAA/BjL,GAIzB,IAHHI,EAAQJ,EAARI,SACAsT,EAAqB1T,EAArB0T,sBACG5R,EAAIC,EAAA/B,EAAAgC,IAEPuH,EAAAA,kBACEoK,EAAAA,2BAA8BrM,EAAS,wDAIzC,IAAMsM,EAAUC,cACd,SAAAvG,GAAA,IAAoBwG,EAAYxG,EAAZwG,aAAY,OAAdxG,EAAfyG,gBACehG,WAAa+F,EAAa/F,UAC1C2F,EAAsBI,MAG1B,OACElR,UAACC,cAAAwJ,GAAYvJ,EAAA,CACX+J,UAAW,WACa,YAAlB+G,EAAQzJ,OACVyJ,EAAQI,OAEX,EACD5N,KAAwB,YAAlBwN,EAAQzJ,MACduC,UAAW,WACa,YAAlBkH,EAAQzJ,OACVyJ,EAAQK,SAEZ,GACInS,GAEH1B,EAGP,sCCzCiD,SAAzBJ,GAMnB,IAAAkU,EAAAlU,EALHmU,OAAchE,EAAAnQ,EACd4J,MAAAA,OAAQ,IAAHuG,EAAG,GAAEA,EAEViE,EAAUpU,EAAVoU,WACAC,EAAMrU,EAANqU,OAEMC,EAAmB3R,EAAE,QAAC,2BAA4B,CACtDwR,YAPO,IAAHD,GAAQA,EAQZK,WANgBvU,EAAlBwU,qBAQMC,EAAwB9R,EAAE,QAAC,mBAAoB,CACnD0R,OAAAA,IAEF,OACEzR,EAAA,QAAAC,cAAA,MAAA,CAAKhB,UAAW4S,GACbL,GAAcxR,EAAAA,QAAAC,cAAA,MAAA,CAAKhB,UAAWyS,IAC/B1R,EAAA,QAAAC,cAAA,MAAA,KAAM+G,GAGZ,eCqBoB,SAAH5J,GASD,IAAAC,EAAAD,EARdE,GAAIwU,OAAY,IAAHzU,EAAG,OAAMA,EACtBG,EAAQJ,EAARI,SACAuU,EAAQ3U,EAAR2U,SACAjT,EAAK1B,EAAL0B,MACAkT,EAAU5U,EAAV4U,WACAC,EAAU7U,EAAV6U,WACAhT,EAAS7B,EAAT6B,UACGC,EAAIC,EAAA/B,EAAAgC,IAEDpC,EAAU,GAEhB+U,GAAY/U,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,iBAAkBoV,IAC7DC,GAAchV,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,mBAAoBqV,IACjEC,GAAcjV,EAAQC,KAAK,mBAAqBgV,GAEhD,IAAMnS,EAAYC,EAAAA,QAAG/C,EAASiC,GAE9B,OACEe,wBAAC7C,EAAG+C,EAAA,CAAC5C,GAAIwU,EAAWhT,MAAOA,EAAOG,UAAWa,GAAeZ,GACzD1B,EAGP,mBCpE2C,SAAtBJ,GAAA,IACnBI,EAAQJ,EAARI,SACAyB,EAAS7B,EAAT6B,UACGC,EAAIC,EAAA/B,EAAAgC,GAAA,OAEPY,UAACC,cAAAiS,EAAMA,OAAAhS,EAAA,CAAC4I,QAAQ,WAAc5J,EAAI,CAAED,UAAWc,EAAAA,QAAG,eAAgBd,KAC/DzB,EACM,mBCegC,SAAtBJ,GAWhB,IATH2M,EAAQ3M,EAAR2M,SACA3D,EAAQhJ,EAARgJ,SACAnB,EAAgB7H,EAAhB6H,iBACA1B,EAAQnG,EAARmG,SACAyB,EAAQ5H,EAAR4H,SACAnD,EAAWzE,EAAXyE,YACAsQ,EAAe/U,EAAf+U,gBACAC,EAAiBhV,EAAjBgV,kBACArM,EAAqB3I,EAArB2I,sBAEMsM,EAAmBtS,EAAE,QAAC,CAAC,gCAXpB3C,EAAT6B,YAYAyO,EAAwBC,EAAQA,UAAC,GAApBzI,EAAOwI,EAAA,GAEpB,OACE1N,EAAA,QAAAC,cAAA,MAAA,CAAKqS,GAAG,iBACNtS,EAAC,QAAAC,cAAAkD,GACCK,KALKkK,EAAA,GAMLjK,aAAcyB,EACdjG,UAAWoT,EACX9O,SAAUA,EACV1B,YAAaA,GAEb7B,EAAK,QAAAC,cAAA,MAAA,CAAAqS,GAAG,qBACNtS,EAAA,QAAAC,cAAC8E,EACC,CAAAI,KAAM4E,EAASwI,eACfvN,SAAUA,EACVC,iBAAkBA,EAClBC,QAASA,IAEViN,GAAmBpI,EAASyI,YAC3BxS,wBAAC0F,EAAe,CAACvD,MAAO4H,EAASyI,WAAYtN,QAASA,IAEvDkN,GAAqBrI,EAAS0I,WAC7BzS,EAAA,QAAAC,cAAC6F,EAAY,CACXX,KAAM4E,EAAS0I,UACfvN,QAASA,EACTa,sBAAuBA,IAG3B/F,EAAAA,QAACC,cAAAkG,GACChB,KAAM4E,EAAS2I,OACfxN,QAASA,EACTkB,SAAUA,MAMtB,iJCzEM,SACJuM,EACArP,EACAV,YAAAA,IAAAA,EAA+BzB,QAE/B,IAAMyR,EAAehP,EAAAA,SAErBE,EAAAA,WAAU,WACR8O,EAAa5O,QAAUV,CACzB,GAAG,CAACA,IAEJQ,EAAAA,WAAU,WAER,GADoBlB,GAAWA,EAAQsB,iBACvC,CAEA,IAAM2O,EAAiB,SAAChQ,GAAQ,OACV,MAApB+P,EAAa5O,aAAO,EAApB4O,EAAa5O,QAAUnB,IAIzB,OAFAD,EAAQsB,iBAAiByO,EAAWE,GAE7B,WACLjQ,EAAQuB,oBAAoBwO,EAAWE,GARvB,CAUpB,GAAG,CAACF,EAAW/P,GACjB"}
|
|
1
|
+
{"version":3,"file":"common.cjs.production.min.js","sources":["../src/Box.tsx","../src/environment.ts","../src/Stack.tsx","../src/FeatureToggle.tsx","../src/EnturPartnerLogo.tsx","../src/UserMenu/useOutsideClick.ts","../src/UserMenu/components/CustomOverflowMenu.tsx","../src/UserMenu/components/CustomOverflowMenuItem.tsx","../src/UserMenu/components/LanguageSwitchMenuItem.tsx","../src/UserMenu/components/VersionMenuItem.tsx","../src/UserMenu/components/UserMenuItem.tsx","../src/UserMenu/components/LogOutMenuItem.tsx","../src/UserMenu/components/CookieSettingsMenuItem.tsx","../src/LanguageSelect.tsx","../src/ErrorBoundary.tsx","../src/helpers.ts","../src/FormatDateTime.tsx","../src/ConfirmModal.tsx","../src/ActionBar.tsx","../src/AuditInfo.tsx","../src/Breadcrumbs.tsx","../src/Content.tsx","../src/ExpandableMultiLanguageInput.tsx","../src/FormatCurrencyAmount.tsx","../src/Link.tsx","../src/LinkButton.tsx","../src/Menu.tsx","../src/MultiLanguageInput.tsx","../src/OrganisationDropdown.tsx","../src/PageTitle.tsx","../src/Pager.tsx","../src/PermissionCheck.tsx","../src/RouteLeavingGuard.tsx","../src/StatusLabel.tsx","../src/Text.tsx","../src/Unbutton.tsx","../src/UserMenu/index.tsx","../src/useEventListener.ts"],"sourcesContent":["import './Box.scss';\n\nimport React, { ReactNode } from 'react';\nimport cx from 'classnames';\n\ntype StyleSpacing =\n | 'none'\n | 'extraSmall2'\n | 'extraSmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'extraLarge'\n | 'extraLarge2'\n | 'extraLarge3'\n | 'extraLarge4'\n | 'extraLarge5'\n | 'extraLarge6'\n | 'extraLarge7'\n | 'extraLarge8'\n | 'extraLarge9';\n\ntype StyleMargin = StyleSpacing | 'auto';\n\ntype StyleDisplay = 'block' | 'flex' | 'inline' | 'inline-block';\ntype StyleJustifyContent = 'center' | 'space-between' | 'start' | 'end';\ntype StyleAlignItems = 'center' | 'start' | 'end' | 'stretch' | 'baseline';\n\ntype StyleMaxWidth =\n | 'none'\n | 'extraSmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'extraLarge'\n | 'extraLarge2'\n | 'extraLarge3'\n | 'extraLarge4'\n | 'extraLarge5'\n | 'extraLarge6'\n | 'full';\ntype StyleWidth = 'auto' | 'full';\n\nexport type StyleBackground = 'blue' | 'lavender' | 'white' | 'blue70';\nexport type StyleColor = 'blue' | 'lavender' | 'white' | 'black';\n\ntype StyleFlexDirection = 'row' | 'column' | 'row-reverse' | 'column-reverse';\ntype StyleFlexWrap = 'wrap' | 'nowrap' | 'wrap-reverse';\n\nexport type ResponsiveStyleSpacing =\n | StyleSpacing\n | [StyleSpacing?, StyleSpacing?, StyleSpacing?];\nexport type ResponsiveStyleMargin =\n | StyleMargin\n | [StyleMargin?, StyleMargin?, StyleMargin?];\n\nexport type ResponsiveStyleDisplay =\n | StyleDisplay\n | [StyleDisplay?, StyleDisplay?, StyleDisplay?];\nexport type ResponsiveStyleJustifyContent =\n | StyleJustifyContent\n | [StyleJustifyContent?, StyleJustifyContent?, StyleJustifyContent?];\nexport type ResponsiveStyleAlignItems =\n | StyleAlignItems\n | [StyleAlignItems?, StyleAlignItems?, StyleAlignItems?];\n\nexport type ResponsiveStyleMaxWidth =\n | StyleMaxWidth\n | [StyleMaxWidth?, StyleMaxWidth?, StyleMaxWidth?];\nexport type ResponsiveStyleWidth =\n | StyleWidth\n | [StyleWidth?, StyleWidth?, StyleWidth?];\n\nexport type ResponsiveStyleFlexDirection =\n | StyleFlexDirection\n | [StyleFlexDirection?, StyleFlexDirection?, StyleFlexDirection?];\nexport type ResponsiveStyleFlexWrap =\n | StyleFlexWrap\n | [StyleFlexWrap?, StyleFlexWrap?, StyleFlexWrap?];\n\nexport interface BoxProps {\n className?: string;\n as?: React.ElementType;\n [key: string]: any;\n children: ReactNode;\n\n contrast?: boolean;\n\n paddingTop?: ResponsiveStyleSpacing;\n paddingRight?: ResponsiveStyleSpacing;\n paddingBottom?: ResponsiveStyleSpacing;\n paddingLeft?: ResponsiveStyleSpacing;\n paddingX?: ResponsiveStyleSpacing;\n paddingY?: ResponsiveStyleSpacing;\n padding?: ResponsiveStyleSpacing;\n\n marginTop?: ResponsiveStyleMargin;\n marginRight?: ResponsiveStyleMargin;\n marginBottom?: ResponsiveStyleMargin;\n marginLeft?: ResponsiveStyleMargin;\n marginX?: ResponsiveStyleMargin;\n marginY?: ResponsiveStyleMargin;\n margin?: ResponsiveStyleMargin;\n\n display?: ResponsiveStyleDisplay;\n justifyContent?: ResponsiveStyleJustifyContent;\n alignItems?: ResponsiveStyleAlignItems;\n\n maxWidth?: ResponsiveStyleMaxWidth;\n width?: ResponsiveStyleWidth;\n background?: StyleBackground;\n color?: StyleColor;\n\n flexDirection?: ResponsiveStyleFlexDirection;\n flexWrap?: ResponsiveStyleFlexWrap;\n}\n\ntype ResponsiveProp = string | [string?, string?, string?];\n\nexport function responsiveProp(prefix: string, prop: ResponsiveProp): string[] {\n if (Array.isArray(prop)) {\n const classes = [];\n prop[0] && classes.push(prefix + prop[0]);\n prop[1] && classes.push(`${prefix}${prop[1]}-lg`);\n prop[2] && classes.push(`${prefix}${prop[2]}-xl`);\n return classes;\n }\n return [prefix + prop];\n}\n\nexport const Box = ({\n as: Component = 'div',\n children,\n contrast,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n paddingX,\n paddingY,\n padding,\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n marginX,\n marginY,\n margin,\n display,\n justifyContent,\n alignItems,\n maxWidth,\n width,\n background,\n color,\n flexDirection,\n flexWrap,\n className,\n ...rest\n}: BoxProps) => {\n const classes = [];\n const resolvedPaddingTop = paddingTop || paddingY || padding;\n const resolvedPaddingBottom = paddingBottom || paddingY || padding;\n const resolvedPaddingLeft = paddingLeft || paddingX || padding;\n const resolvedPaddingRight = paddingRight || paddingX || padding;\n\n const resolvedMarginTop = marginTop || marginY || margin;\n const resolvedMarginBottom = marginBottom || marginY || margin;\n const resolvedMarginLeft = marginLeft || marginX || margin;\n const resolvedMarginRight = marginRight || marginX || margin;\n\n contrast && classes.push('eds-contrast');\n resolvedPaddingTop &&\n classes.push(...responsiveProp('eps-pt-', resolvedPaddingTop));\n resolvedPaddingBottom &&\n classes.push(...responsiveProp('eps-pb-', resolvedPaddingBottom));\n resolvedPaddingLeft &&\n classes.push(...responsiveProp('eps-pl-', resolvedPaddingLeft));\n resolvedPaddingRight &&\n classes.push(...responsiveProp('eps-pr-', resolvedPaddingRight));\n resolvedMarginTop &&\n classes.push(...responsiveProp('eps-mt-', resolvedMarginTop));\n resolvedMarginBottom &&\n classes.push(...responsiveProp('eps-mb-', resolvedMarginBottom));\n resolvedMarginLeft &&\n classes.push(...responsiveProp('eps-ml-', resolvedMarginLeft));\n resolvedMarginRight &&\n classes.push(...responsiveProp('eps-mr-', resolvedMarginRight));\n\n display && classes.push(...responsiveProp('eps-', display));\n justifyContent &&\n classes.push(...responsiveProp('eps-justify-', justifyContent));\n if (alignItems) {\n classes.push(...responsiveProp('eps-items-', alignItems));\n }\n\n maxWidth && classes.push(...responsiveProp('eps-max-w-', maxWidth));\n width && classes.push(...responsiveProp('eps-w-', width));\n\n color && classes.push(`eps-color-${color}`);\n background && classes.push(`eps-bg-${background}`);\n\n flexDirection && classes.push(...responsiveProp('eps-flex-', flexDirection));\n flexWrap && classes.push(...responsiveProp('eps-flex-wrap-', flexWrap));\n\n const classList = cx(classes, className);\n\n return (\n <Component className={classList} {...rest}>\n {children}\n </Component>\n );\n};\n","export enum Environment {\n Local = 'local',\n Development = 'dev',\n Staging = 'staging',\n Production = 'prod',\n}\n\nconst environmentColors: Record<\n Exclude<Environment, Environment.Production>,\n string\n> = {\n [Environment.Local]: '#B482FB',\n [Environment.Development]: '#5AC39A',\n [Environment.Staging]: '#FFCA28',\n};\n\n/**\n * Gets the color for the given environment. This is the color used for the environment\n * indicator. There is no color for production as it should not have any special environment\n * indication.\n */\nexport const getColorForEnvironment = (\n environment: Exclude<Environment, Environment.Production>\n) => environmentColors[environment];\n\nconst humanReadableEnvironment: Record<Environment, string> = {\n [Environment.Local]: 'Local',\n [Environment.Development]: 'Dev',\n [Environment.Staging]: 'Staging',\n [Environment.Production]: 'Prod',\n};\n\nexport const getHumanReadableEnvironment = (environment: Environment) =>\n humanReadableEnvironment[environment];\n","import React, { ReactNode, Children } from 'react';\n\nimport { ResponsiveStyleSpacing, Box } from './Box';\n\nexport interface StackProps {\n className?: string;\n children: ReactNode;\n space: ResponsiveStyleSpacing;\n}\n\nexport const Stack = ({ children, space, className }: StackProps) => {\n const stackItems = Children.toArray(children);\n if (stackItems.length <= 1) {\n return <>{stackItems}</>;\n }\n\n return (\n <div className={className}>\n {stackItems.map((child, index) =>\n index === stackItems.length - 1 ? (\n <div key={index}>{child}</div>\n ) : (\n <Box paddingBottom={space} key={index}>\n {child}\n </Box>\n )\n )}\n </div>\n );\n};\n","/// <reference types=\"vite/client\" />\nimport React, { ReactNode } from 'react';\n\n/**\n * Returns true if the provided flag exist in localStorage\n * or is set as an environment variable.\n *\n * @param flag case sensitive flag. If it is an environment variable\n * you can drop the VITE_APP_ prefix.\n */\nexport function featureFlag(flag: string): boolean {\n return (\n import.meta.env[`VITE_APP_${flag}`] === 'true' ||\n window.localStorage?.getItem(flag) === 'true' ||\n window.localStorage?.getItem(`VITE_APP_${flag}`) === 'true'\n );\n}\n\n/**\n * Returns true if the provided flag exist in localStorage\n * or is set as an environment variable.\n *\n * @param flag case sensitive flag. If it is an environment variable\n * you can drop the VITE_APP_ prefix.\n */\nexport function useFeatureToggle(flag: string): boolean {\n return featureFlag(flag);\n}\n\nexport interface FeatureToggleProps {\n /** Visible if flag exist, hidden if not.*/\n children: ReactNode;\n /** Case sensitive flag. If it is an environment variable\n * you can drop the VITE_APP_ prefix. */\n flag: string;\n}\n\nexport const FeatureToggle = ({ children, flag }: FeatureToggleProps) => {\n const feature = useFeatureToggle(flag);\n if (feature) {\n return <>{children}</>;\n }\n return null;\n};\n","import './EnturPartnerLogo.scss';\n\nimport React, { FC } from 'react';\nimport classnames from 'classnames';\n\nimport { Environment, getColorForEnvironment } from './environment';\n\ninterface LogoProps {\n title: string;\n className?: string;\n accentColor?: string;\n [key: string]: any;\n}\n\nexport const EnturPartnerLogoSvg: FC<LogoProps> = ({\n title,\n accentColor = '#FF5959',\n ...rest\n}) => {\n return (\n <svg width={257} height={37} viewBox=\"0 0 257 37\" {...rest}>\n <title>{title}</title>\n <g fill=\"none\" fillRule=\"evenodd\">\n <path\n fill=\"#FFF\"\n d=\"M0 .231V25.72h18.745v-4.318H4.869v-6.163h12.31v-4.318H4.87V4.55h13.876V.231z\"\n />\n <path fill={accentColor} d=\"M0 36.408h45.253v-4.32H0z\" />\n <path\n fill=\"#FFF\"\n d=\"M40.384.231v15.425L23.656.231h-.521V25.72h4.869V10.573L44.732 25.72h.521V.23zM69.25 15.238h-7.267v21.17h-4.87v-21.17H49.81V10.92h19.44zM83.863 36.86c-1.646 0-3.142-.255-4.486-.765-1.345-.51-2.493-1.23-3.443-2.159-.95-.928-1.687-2.054-2.208-3.378-.522-1.323-.783-2.797-.783-4.422V10.92h4.869v15.216c0 1.277.209 2.333.626 3.169.417.836.933 1.497 1.548 1.985a5.346 5.346 0 001.982 1.01c.707.186 1.339.278 1.895.278.557 0 1.188-.092 1.896-.279a5.35 5.35 0 001.982-1.01c.614-.487 1.13-1.148 1.548-1.984.417-.836.625-1.892.625-3.169V10.92h4.87v15.216c0 1.625-.256 3.1-.766 4.422-.51 1.324-1.24 2.45-2.19 3.378-.952.929-2.1 1.648-3.444 2.159-1.344.51-2.851.766-4.52.766M104.21 24.047h5.546c1.016 0 1.854-.127 2.513-.383.658-.255 1.179-.592 1.56-1.01.381-.418.641-.888.78-1.41.138-.522.208-1.05.208-1.584 0-.627-.099-1.207-.295-1.741a3.718 3.718 0 00-.901-1.393c-.405-.394-.924-.708-1.56-.94-.636-.232-1.404-.348-2.305-.348h-5.546v8.81zm0 4.248v8.113h-4.87V10.92h11.567c1.3 0 2.49.215 3.57.644 1.08.43 2.004 1.033 2.77 1.81a8.287 8.287 0 011.794 2.787c.43 1.079.645 2.257.645 3.534 0 .952-.128 1.874-.383 2.768-.256.894-.61 1.7-1.063 2.42a7.32 7.32 0 01-1.672 1.863 5.929 5.929 0 01-2.178 1.096l6.339 8.566h-5.808l-5.893-8.113h-4.818z\"\n />\n <g fill={accentColor}>\n <path d=\"M141.051 23.448h5.628c4.185 0 5.989-1.984 5.989-4.942 0-2.742-1.515-4.618-5.989-4.618h-5.628v9.56zm0 3.067v9.776h-3.571V10.75h9.632c6.674 0 9.127 3.211 9.127 7.54 0 4.979-3.102 8.226-9.2 8.226h-5.988zM169.695 28.715c-1.371-.288-2.958-.505-4.401-.505-2.85 0-4.041 1.263-4.041 3.139s1.407 2.706 3.463 2.706c2.49 0 4.979-1.443 4.979-4.221v-1.119zm-4.293-2.958c1.551 0 3.174.253 4.293.469v-.83c0-2.525-1.154-3.896-4.33-3.896-2.164 0-3.824.866-4.942 2.092l-2.02-2.272c1.732-1.66 3.644-2.598 7.07-2.598 5.052 0 7.469 1.876 7.469 7.215v10.354h-3.211V34.02h-.108c-1.082 1.767-3.211 2.705-5.592 2.705-3.32 0-6.241-1.66-6.241-5.303 0-3.103 1.912-5.664 7.612-5.664zM178.965 19.191h3.211v2.886h.108c.938-1.984 2.922-3.355 5.231-3.355.47 0 .938.036 1.335.144l-.144 3.14a6.77 6.77 0 00-1.552-.181c-3.246 0-4.798 2.633-4.798 5.483v8.983h-3.39v-17.1zM199.961 36.291h-1.912c-4.004 0-5.988-.938-5.988-5.772v-8.55h-2.778V19.19h2.778v-4.654h3.355v4.654h4.473v2.778h-4.473v7.973c0 3.427 1.587 3.535 3.319 3.535h1.226v2.814zM219.767 36.291h-3.391V26.84c0-2.778-1.083-5.375-4.257-5.375-3.14 0-5.268 2.597-5.268 6.169v8.658h-3.391v-17.1h3.32v2.814h.143c.794-1.623 3.067-3.283 5.99-3.283 4.941 0 6.854 3.644 6.854 8.081v9.488zM227.847 26.262h10.57c0-2.597-2.272-4.726-5.087-4.726-2.922 0-5.014 1.948-5.483 4.726zm-.036 2.453c.397 3.355 2.633 5.195 5.844 5.195 2.778 0 4.618-1.623 5.484-2.67l2.164 1.804c-1.37 1.913-4.365 3.716-8.045 3.716-4.942 0-8.73-3.535-8.73-8.55 0-5.195 3.752-9.488 8.983-9.488 5.303 0 8.009 4.365 8.009 8.19 0 .649-.036 1.226-.072 1.803H227.81zM246.245 19.191h3.21v2.886h.109c.938-1.984 2.922-3.355 5.231-3.355.469 0 .938.036 1.335.144l-.145 3.14a6.77 6.77 0 00-1.551-.181c-3.247 0-4.798 2.633-4.798 5.483v8.983h-3.391v-17.1z\" />\n </g>\n </g>\n </svg>\n );\n};\n\ninterface EnturPartnerLogoProps {\n altText: string;\n as?: 'div' | React.ElementType;\n className?: string;\n environment?: Environment;\n}\n\nexport const EnturPartnerLogo: FC<EnturPartnerLogoProps> = ({\n as: Component = 'nav',\n className,\n altText,\n environment,\n}) => {\n const classList = classnames(['eps-logo-wrapper', className]);\n\n return (\n <Component className={classList}>\n <EnturPartnerLogoSvg\n title={altText}\n className=\"logo\"\n accentColor={\n environment !== undefined && environment !== Environment.Production\n ? getColorForEnvironment(environment)\n : undefined\n }\n />\n </Component>\n );\n};\n","import React from 'react';\n\nexport function useOutsideClick(\n ref: React.RefObject<HTMLDivElement>,\n buttonRef: React.RefObject<HTMLButtonElement>,\n handler: () => void\n) {\n React.useEffect(() => {\n const listener = (event: Event) => {\n if (\n elementContainsEventTarget(ref.current, event) ||\n elementContainsEventTarget(buttonRef.current, event)\n ) {\n return;\n }\n\n handler();\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [ref, buttonRef, handler]);\n}\n\nfunction elementContainsEventTarget(element: HTMLElement | null, event: Event) {\n if (!element) {\n return false;\n }\n\n if (element.contains(event.target as Node)) {\n return true;\n }\n\n // For elements inside a Shadow DOM we need to check the composedPath\n if (event.composed && event.composedPath) {\n const contains = event.composedPath().find((target) => {\n if (target === window) {\n return false;\n }\n return element.contains(target as Node);\n });\n return !!contains;\n }\n\n return false;\n}\n","import '../index.scss';\n\nimport React from 'react';\nimport cx from 'classnames';\nimport { DownArrowIcon, UserIcon } from '@entur/icons';\nimport { SecondaryButton } from '@entur/button';\nimport { Heading6 } from '@entur/typography';\n\nimport {\n Environment,\n getColorForEnvironment,\n getHumanReadableEnvironment,\n} from '../../environment';\nimport { useOutsideClick } from '../useOutsideClick';\n\nexport const CustomOverflowMenu: React.FC<{\n className?: string;\n children: React.ReactNode;\n userName: string;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n environment?: Environment;\n}> = ({\n className,\n children,\n userName,\n open,\n onOpenChange,\n environment,\n ...rest\n}) => {\n const overflowItemsClasses = cx('eps-overflow-menu__group', {\n 'eps-overflow-menu__group--open': open,\n });\n const overflowContentRef = React.useRef<HTMLDivElement>(null);\n const overflowMenuTriggerRef = React.useRef<HTMLButtonElement>(null);\n useOutsideClick(overflowContentRef, overflowMenuTriggerRef, () =>\n onOpenChange(false)\n );\n return (\n <div>\n <SecondaryButton\n className={cx('eps-overflow-menu__button', className)}\n onClick={() => onOpenChange(open ? false : true)}\n aria-haspopup={true}\n role=\"button\"\n aria-expanded={open}\n ref={overflowMenuTriggerRef}\n {...rest}\n >\n <div className=\"eps-overflow-menu__button-contents\">\n <span className=\"eds-overflow-menu__user-icon\">\n <UserIcon inline />\n </span>\n <Heading6 margin=\"none\" as=\"span\">\n {userName}\n {environment !== undefined &&\n environment !== Environment.Production && (\n <span style={{ color: getColorForEnvironment(environment) }}>\n {' '}\n ({getHumanReadableEnvironment(environment)})\n </span>\n )}\n </Heading6>\n <span className=\"eps-arrow-icon\">\n <DownArrowIcon inline />\n </span>\n </div>\n </SecondaryButton>\n {open && (\n <div\n className={overflowItemsClasses}\n role=\"menu\"\n ref={overflowContentRef}\n >\n {children}\n </div>\n )}\n </div>\n );\n};\n","import '../index.scss';\n\nimport React from 'react';\nimport cx from 'classnames';\n\nexport const CustomOverflowMenuItem: React.FC<\n React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >\n> = (props) => {\n return (\n <button\n className={cx(props.className, 'eps-overflow-menu__item')}\n role=\"menuitem\"\n {...props}\n />\n );\n};\n","import '../index.scss';\n\nimport React from 'react';\nimport { NorwayIcon, UKIcon } from '@entur/icons';\n\nimport { useFeatureToggle } from '../../FeatureToggle';\nimport { CustomOverflowMenuItem } from './CustomOverflowMenuItem';\n\ntype Props = {\n language: string;\n onLanguageChange: (language: string) => void;\n setOpen: (open: boolean) => void;\n name: string;\n};\n\nexport const LanguageSwitchMenuItem = ({\n language,\n onLanguageChange,\n setOpen,\n name,\n}: Props) => {\n const useB47LanguageKey = useFeatureToggle('USE_BCP-47_LANGUAGE_KEY');\n const norwegianLanguageKey = useB47LanguageKey ? 'nb-NO' : 'nb';\n const englishLanguageKey = useB47LanguageKey ? 'en-GB' : 'en';\n\n return (\n <>\n {language === englishLanguageKey ? (\n <CustomOverflowMenuItem\n onClick={() => {\n onLanguageChange(norwegianLanguageKey);\n setOpen(false);\n }}\n className=\"eps-overflow-menu__item\"\n >\n <span aria-hidden className=\"eps-overflow-menu__icon-margin\">\n <NorwayIcon size=\"1rem\" inline />\n </span>\n {name}\n </CustomOverflowMenuItem>\n ) : (\n <CustomOverflowMenuItem\n onClick={() => {\n onLanguageChange(englishLanguageKey);\n setOpen(false);\n }}\n className=\"eps-overflow-menu__item\"\n >\n <span aria-hidden className=\"eps-overflow-menu__icon-margin\">\n <UKIcon size=\"1rem\" inline />\n </span>\n {name}\n </CustomOverflowMenuItem>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { ChannelsIcon } from '@entur/icons';\n\nimport { CustomOverflowMenuItem } from './CustomOverflowMenuItem';\n\nexport const VersionMenuItem: React.FC<{\n title: string;\n setOpen: (isOpen: boolean) => void;\n}> = ({ title, setOpen }) => {\n const navigate = useNavigate(); // Hide useNavigate from standalone micro-frontends because it is not under RouterProvider\n return (\n <CustomOverflowMenuItem\n onClick={() => {\n navigate('/app-version');\n setOpen(false);\n }}\n className=\"eps-overflow-menu__item\"\n >\n <span aria-hidden>\n <ChannelsIcon className=\"eps-version-icon\" size=\"1rem\" inline />\n </span>\n {title}\n </CustomOverflowMenuItem>\n );\n};\n","import '../index.scss';\n\nimport React from 'react';\nimport { UserIcon } from '@entur/icons';\nimport { Link } from 'react-router-dom';\n\nimport { CustomOverflowMenuItem } from './CustomOverflowMenuItem';\n\ntype Props = {\n name: string;\n setOpen: (open: boolean) => void;\n onNavigateToMyProfile: () => void;\n};\n\nexport const UserMenuItem = ({\n name,\n setOpen,\n onNavigateToMyProfile,\n}: Props) => {\n return (\n <Link to=\"/permission-admin/my-profile\" style={{ textDecoration: 'none' }}>\n <CustomOverflowMenuItem\n onClick={() => {\n setOpen(false);\n onNavigateToMyProfile();\n }}\n className=\"eps-overflow-menu__item\"\n >\n <span aria-hidden>\n <UserIcon size=\"1rem\" inline />\n </span>\n {name}\n </CustomOverflowMenuItem>\n </Link>\n );\n};\n","import '../index.scss';\n\nimport React from 'react';\nimport { LogOutIcon } from '@entur/icons';\n\nimport { CustomOverflowMenuItem } from './CustomOverflowMenuItem';\n\ntype Props = {\n name: string;\n setOpen: (open: boolean) => void;\n onLogout: () => void;\n};\n\nexport const LogOutMenuItem = ({ name, setOpen, onLogout }: Props) => {\n return (\n <CustomOverflowMenuItem\n onClick={() => {\n onLogout();\n setOpen(false);\n }}\n data-testid=\"user-menu-logout\"\n className=\"eps-overflow-menu__item\"\n >\n <span aria-hidden>\n <LogOutIcon size=\"1rem\" inline />\n </span>\n {name}\n </CustomOverflowMenuItem>\n );\n};\n","import '../index.scss';\n\nimport React from 'react';\nimport { CookieIcon } from '@entur/icons';\n\nimport { CustomOverflowMenuItem } from './CustomOverflowMenuItem';\n\ntype Props = {\n name: string;\n setOpen: (open: boolean) => void;\n onCookieSettingsOpen: () => void;\n};\n\nexport const CookieSettingsMenuItem = ({\n name,\n setOpen,\n onCookieSettingsOpen,\n}: Props) => {\n return (\n <CustomOverflowMenuItem\n onClick={() => {\n onCookieSettingsOpen();\n setOpen(false);\n }}\n className=\"eps-overflow-menu__item\"\n >\n <span aria-hidden={true}>\n <CookieIcon size=\"1rem\" inline />\n </span>\n {name}\n </CustomOverflowMenuItem>\n );\n};\n","import './LanguageSelect.scss';\n\nimport React, { FC } from 'react';\nimport { SegmentedControl, SegmentedChoice } from '@entur/form';\nimport cx from 'classnames';\nimport { assertIsDefined } from '@entur-partner/util';\n\nexport type LanguageKey = 'nob' | 'nno' | 'eng';\n\nexport interface LanguageOption {\n value: LanguageKey;\n label: string;\n required: boolean;\n}\n\nexport interface LanguageSelectProps {\n language: string;\n options: LanguageOption[];\n className?: string;\n onChange: (language: string) => void;\n [key: string]: any;\n}\n\nexport const LanguageSelect: FC<LanguageSelectProps> = ({\n language,\n options,\n className,\n onChange,\n ...rest\n}) => {\n const classNames = cx('eps-language-select', className);\n return (\n <div {...rest} className={classNames}>\n <SegmentedControl\n onChange={(language) => {\n assertIsDefined(language);\n onChange(language);\n }}\n selectedValue={language}\n >\n {options.map((option) => (\n <SegmentedChoice key={option.value} value={option.value}>\n {option.label}\n {option.required && <span className=\"asterisk-margin\">{'*'}</span>}\n </SegmentedChoice>\n ))}\n </SegmentedControl>\n </div>\n );\n};\n","import React, { ReactNode, Component, ErrorInfo } from 'react';\nimport { BannerAlertBox } from '@entur/alert';\nimport { PrimaryButton } from '@entur/button';\nimport { Paragraph } from '@entur/typography';\n\nimport { isFunction } from './helpers';\nimport { Box } from './Box';\n\ntype FallbackOptions = {\n retry: () => void;\n error: Error;\n};\n\ntype RenderProp = (options: FallbackOptions) => ReactNode;\n\ntype Props = {\n handleError?: (error: Error, errorInfo: ErrorInfo) => void;\n fallback: ReactNode | RenderProp;\n children: ReactNode;\n};\n\ntype State = {\n error: null | Error;\n};\n\nconst newAppVersionErrorMessage =\n \"Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.\";\n\nexport class ErrorBoundary extends Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = { error: null };\n }\n\n static getDerivedStateFromError(error: Error): State {\n return {\n error,\n };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n // React always logs in development\n this.props.handleError?.(error, errorInfo);\n }\n\n render() {\n const { error } = this.state;\n const { fallback, children } = this.props;\n\n if (error) {\n if (isFunction<RenderProp>(fallback)) {\n return fallback({ retry: () => this.setState({ error: null }), error });\n } else if (\n error.name === 'NotFoundError' &&\n error.message === newAppVersionErrorMessage\n ) {\n return <RefreshBannerInfo />;\n }\n\n return fallback;\n }\n\n return children;\n }\n}\n\nexport const LANGUAGE_STORAGE_KEY = 'EP::locale';\n\nfunction RefreshBannerInfo() {\n // Taken from ./app-shell/src/storage.ts\n const language = localStorage.getItem(LANGUAGE_STORAGE_KEY);\n const isNorwegian = language === 'nb';\n return (\n <Box maxWidth=\"large\">\n <BannerAlertBox\n variant=\"info\"\n title={\n isNorwegian\n ? 'En ny versjon av nettsiden er tilgjengelig.'\n : 'A new version of the website is available.'\n }\n >\n <Box paddingBottom=\"medium\">\n <Paragraph margin=\"none\">\n {isNorwegian ? 'Vennligst oppdater.' : 'Please refresh.'}\n </Paragraph>\n </Box>\n <PrimaryButton onClick={() => window.location.reload()}>\n {isNorwegian ? 'Oppdater' : 'Refresh'}\n </PrimaryButton>\n </BannerAlertBox>\n </Box>\n );\n}\n","export function isFunction<T>(functionToCheck: any): functionToCheck is T {\n return (\n functionToCheck && {}.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","import React, { FC } from 'react';\nimport { localeDate, localeDateTime } from '@entur-partner/util';\n\nexport interface FormatDateTimeProps {\n date: string | Date;\n locale: string;\n [key: string]: any;\n}\n\nexport const FormatDateTime: FC<FormatDateTimeProps> = ({\n date,\n locale,\n as: Component = 'main',\n hideTime,\n ...rest\n}) => {\n return (\n <Component {...rest}>\n {hideTime ? localeDate(date, locale) : localeDateTime(date, locale)}\n </Component>\n );\n};\n","import './ConfirmModal.scss';\n\nimport React, { ReactNode, FC } from 'react';\nimport { Modal, ModalProps } from '@entur/modal';\nimport { Paragraph } from '@entur/typography';\nimport { isString } from '@entur-partner/util';\nimport { ButtonGroup, SecondaryButton, PrimaryButton } from '@entur/button';\n\nimport { Box } from './Box';\n\nexport interface BaseConfirmModalProps extends Partial<ModalProps> {\n title: string;\n children: React.ReactNode;\n closeLabel: string;\n\n /** Deprecated use children prop */\n message?: ReactNode;\n /** Deprecated use open prop */\n isOpen?: boolean;\n /** Deprecated use onDismiss prop */\n onClose?: () => void;\n}\n\ninterface CustomConfirmModalButtons extends BaseConfirmModalProps {\n buttons: ReactNode[];\n}\n\ninterface DefaultConfirmModalHandler extends BaseConfirmModalProps {\n onConfirm: () => void;\n messages: {\n confirm: string;\n cancel: string;\n };\n}\n\nexport type ConfirmModalProps =\n | CustomConfirmModalButtons\n | DefaultConfirmModalHandler;\n\nexport const ConfirmModal: FC<ConfirmModalProps> = ({\n isOpen = false,\n children,\n message,\n size = 'medium',\n buttons,\n onConfirm,\n messages,\n onClose,\n onDismiss,\n ...rest\n}) => {\n const childrenToRender = children ? children : message;\n const handleDismiss = onClose ? onClose : onDismiss;\n return (\n <Modal size={size} open={isOpen} onDismiss={handleDismiss} {...rest}>\n {isString(childrenToRender) ? (\n <Paragraph>{childrenToRender}</Paragraph>\n ) : (\n <Box paddingBottom=\"medium\">{childrenToRender}</Box>\n )}\n\n <ButtonGroup>\n {onConfirm ? (\n <>\n <SecondaryButton\n onClick={handleDismiss}\n data-testid=\"cancel-modal-button\"\n >\n {messages.cancel}\n </SecondaryButton>\n <PrimaryButton\n onClick={onConfirm}\n data-testid=\"confirm-modal-button\"\n >\n {messages.confirm}\n </PrimaryButton>\n </>\n ) : (\n buttons\n )}\n </ButtonGroup>\n </Modal>\n );\n};\n","import './ActionBar.scss';\nimport React, { ReactNode } from 'react';\n\nexport interface ActionBarProps {\n children: ReactNode;\n}\n\nconst ActionBarLeft = ({ children }: ActionBarProps) => {\n return <div className=\"eps-action-bar-left\">{children}</div>;\n};\n\nconst ActionBarRight = ({ children }: ActionBarProps) => {\n return <div className=\"eps-action-bar-right\">{children}</div>;\n};\n\nconst ActionBar = ({ children }: ActionBarProps) => {\n return (\n <>\n <div className=\"eps-action-bar-padding\" />\n <div className=\"eps-action-bar\">{children}</div>\n </>\n );\n};\n\nexport { ActionBar, ActionBarLeft, ActionBarRight };\n","import './AuditInfo.scss';\n\nimport React, { FC } from 'react';\nimport cx from 'classnames';\nimport { isDateString, isDate } from '@entur-partner/util';\n\nimport { FormatDateTime } from './FormatDateTime';\nimport { Stack } from './Stack';\n\ninterface Item {\n label: string;\n value: Date | string;\n}\n\nexport interface AuditInfoProps {\n items: Item[];\n locale: string;\n className?: string;\n [key: string]: any;\n}\n\nexport const AuditInfo: FC<AuditInfoProps> = ({\n items,\n locale,\n className,\n ...rest\n}) => {\n const classNames = cx('ep-audit-info', className);\n return (\n <div className={classNames} {...rest}>\n {items.map(({ label, value }, i) => (\n <Stack space=\"small\" key={i}>\n <div className=\"ep-audit-info-label\">{label}</div>\n <div>\n {isDate(value) || isDateString(value) ? (\n <FormatDateTime date={value} locale={locale} />\n ) : (\n <span>{value}</span>\n )}\n </div>\n </Stack>\n ))}\n </div>\n );\n};\n","import './Breadcrumbs.scss';\nimport React, { FC, ReactElement } from 'react';\nimport { Link } from 'react-router-dom';\nimport { BreadcrumbNavigation, BreadcrumbItem } from '@entur/menu';\nimport { splitUrlPath } from '@entur-partner/util';\n\nexport interface BreadcrumbsProps {\n pathname: string;\n onBreadcrumbLookup: (path: string) => string | undefined;\n prependBreadcrumbItem?: ReactElement;\n}\n\nexport const Breadcrumbs: FC<BreadcrumbsProps> = ({\n prependBreadcrumbItem,\n pathname,\n onBreadcrumbLookup,\n}) => {\n const paths: string[] = splitUrlPath(pathname);\n\n const breadcrumbs = paths\n .map((path) => ({ title: onBreadcrumbLookup(path), path }))\n .filter(({ title }) => title !== undefined);\n\n const breadcrumbElements = breadcrumbs.map(({ title, path }, i) => {\n const isLast = i === breadcrumbs.length - 1;\n if (isLast) {\n return (\n <BreadcrumbItem key={path} as={'span'}>\n {title}\n </BreadcrumbItem>\n );\n }\n return (\n <BreadcrumbItem key={path} as={Link} to={path}>\n {title}\n </BreadcrumbItem>\n );\n });\n\n if (prependBreadcrumbItem) {\n return (\n <BreadcrumbNavigation>\n {[prependBreadcrumbItem, ...breadcrumbElements]}\n </BreadcrumbNavigation>\n );\n }\n\n return <BreadcrumbNavigation>{breadcrumbElements}</BreadcrumbNavigation>;\n};\n","import './Content.scss';\n\nimport React, { FC, ReactNode } from 'react';\nimport classnames from 'classnames';\n\ninterface ContentProps {\n children: ReactNode;\n as?: 'main' | React.ElementType;\n className?: string;\n}\nexport const Content: FC<ContentProps> = ({\n as: Component = 'main',\n className,\n children,\n}) => {\n const classList = classnames(['eps-content', className]);\n\n return <Component className={classList}>{children}</Component>;\n};\n","import React, { ChangeEvent } from 'react';\nimport { VariantType } from '@entur/form';\nimport { ExpandablePanel } from '@entur/expand';\n\nimport { LanguageKey, LanguageOption } from './LanguageSelect';\nimport { Stack } from './Stack';\n\nexport type MultiLanguageValues = Record<LanguageKey, string>;\n\ntype ExpandableMultiLanguageInputProps = {\n title: string;\n inputComponent: React.ElementType;\n languages: LanguageOption[];\n values: MultiLanguageValues;\n onChange: (values: MultiLanguageValues) => void;\n name: string;\n variant?: (lang: LanguageKey) => VariantType;\n feedback?: (lang: LanguageKey) => string;\n [key: string]: any;\n};\n\nexport const ExpandableMultiLanguageInput = ({\n title,\n inputComponent: InputComponent,\n languages,\n values,\n onChange,\n name,\n variant,\n feedback,\n ...rest\n}: ExpandableMultiLanguageInputProps) => {\n const handleOnChange = (language: LanguageKey, value?: string) => {\n const changes = { ...values };\n if (value === '' || !value) {\n delete changes[language];\n } else {\n changes[language] = value;\n }\n onChange(changes);\n };\n\n return (\n <ExpandablePanel\n title={title}\n defaultOpen\n contentStyle={{\n padding: '4px 4px 4px 4px',\n marginTop: '16px',\n marginBottom: '16px',\n }}\n >\n <Stack space=\"medium\">\n {languages.map(({ value: langKey, label, required }) => (\n <InputComponent\n data-testid={`multi-lang-input-${name}-${langKey}`}\n key={title + langKey}\n label={required ? label + '*' : label}\n variant={variant && variant(langKey)}\n feedback={feedback && feedback(langKey)}\n name={name}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n handleOnChange(langKey, e.target.value);\n }}\n value={values[langKey] || ''}\n {...rest}\n />\n ))}\n </Stack>\n </ExpandablePanel>\n );\n};\n","import React, { FC } from 'react';\n\nexport interface FormatCurrencyAmountProps {\n amount: number | string;\n as?: 'span' | React.ElementType;\n [key: string]: any;\n}\n\nexport const FormatCurrencyAmount: FC<FormatCurrencyAmountProps> = ({\n amount,\n as: Component = 'span',\n ...rest\n}) => {\n const parsedAmount = Number(amount) || 0;\n\n const formattedAmount = new Intl.NumberFormat('nb-NO', {\n maximumFractionDigits: 2,\n minimumFractionDigits: 2,\n }).format(parsedAmount);\n\n return <Component {...rest}>{formattedAmount}</Component>;\n};\n","import React, { FC } from 'react';\nimport { Link as RouterLink, LinkProps } from 'react-router-dom';\nimport { Link as A } from '@entur/typography';\n\ninterface Props extends LinkProps {}\n\nexport const Link: FC<Props> = (props) => {\n return (\n <A {...props} as={RouterLink}>\n {props.children}\n </A>\n );\n};\n","import './LinkButton.scss';\n\nimport React, { ReactNode } from 'react';\nimport { Link } from '@entur/typography';\nimport cx from 'classnames';\n\nexport interface LinkButtonProps {\n children: ReactNode;\n className?: string;\n [key: string]: any;\n}\n\nexport const LinkButton = ({\n children,\n className,\n ...rest\n}: LinkButtonProps) => (\n <Link {...rest} as=\"button\" className={cx('eps-link-button', className)}>\n {children}\n </Link>\n);\n","import './Menu.scss';\n\nimport React, { FC, ReactNode } from 'react';\nimport classnames from 'classnames';\n\ninterface MenuProps {\n children: ReactNode;\n as?: 'div' | React.ElementType;\n className?: string;\n}\nexport const Menu: FC<MenuProps> = ({\n as: Component = 'nav',\n className,\n children,\n}) => {\n const classList = classnames(['eds-contrast', 'eps-menu', className]);\n\n return <Component className={classList}>{children}</Component>;\n};\n","import './MultiLanguageInput.scss';\n\nimport React, { FC, useState, ChangeEvent, FocusEvent } from 'react';\nimport cx from 'classnames';\nimport { VariantType } from '@entur/form';\n\nimport { Stack } from './Stack';\nimport { LanguageSelect, LanguageOption } from './LanguageSelect';\n\ntype Values = { [key: string]: string };\n\nexport interface MultiLanguageInputProps {\n className?: string;\n onBlur?: (e: FocusEvent<HTMLDivElement>) => void;\n inputComponent: React.ElementType;\n values: { [key: string]: string };\n languages: LanguageOption[];\n onChange: (values: Values) => void;\n name: string;\n alertLevel?: VariantType;\n alertLabel?: string;\n label?: string;\n defaultLanguage?: string;\n [key: string]: any;\n}\n/**\n * @deprecated use ExpandableMultiLanguageInput\n */\nexport const MultiLanguageInput: FC<MultiLanguageInputProps> = ({\n className,\n inputComponent: InputComponent,\n alertLabel,\n alertLevel,\n name,\n languages,\n values,\n onChange,\n defaultLanguage = 'nob',\n label = '',\n onBlur = () => {},\n ...rest\n}) => {\n const [language, setLanguage] = useState(defaultLanguage);\n const classNames = cx('multi-language-input', className);\n const currentValue = values[language];\n\n const handleOnBlur = (e: FocusEvent<HTMLDivElement>) => {\n e.persist();\n const currentTarget = e.currentTarget;\n setTimeout(() => {\n if (currentTarget && !currentTarget.contains(document.activeElement)) {\n onBlur(e);\n }\n }, 0);\n };\n\n const handleLanguageChange = (language: string) => {\n setLanguage(language);\n };\n\n const handleOnChange = (value?: string) => {\n const changes = Object.assign({}, values);\n if (value === '' || !value) {\n delete changes[language];\n } else {\n changes[language] = value;\n }\n onChange(changes);\n };\n\n return (\n <div\n className={classNames}\n tabIndex={0}\n onBlur={handleOnBlur}\n data-testid={`multi-lang-input-${name}`}\n >\n <Stack space=\"extraSmall\">\n <LanguageSelect\n language={language}\n options={languages}\n onChange={(lang) => handleLanguageChange(lang)}\n />\n <InputComponent\n label={label}\n variant={alertLevel}\n feedback={alertLabel}\n name={name}\n className=\"language-item\"\n onChange={(e: ChangeEvent<HTMLInputElement>) =>\n handleOnChange(e.target.value)\n }\n value={currentValue || ''}\n {...rest}\n />\n </Stack>\n </div>\n );\n};\n","import React, { FC, useEffect, useState } from 'react';\nimport { SearchableDropdown } from '@entur/dropdown';\n\ninterface OrganisationV3 {\n organisationId: number;\n tradingName: string;\n}\n\ninterface OrganisationDropDownProps {\n label: string;\n onChange: (organisationId: number) => void;\n organisations: OrganisationV3[];\n selectedOrganisationId?: number;\n [key: string]: any;\n}\n\nexport const OrganisationDropDown: FC<OrganisationDropDownProps> = ({\n label,\n organisations,\n onChange: handleChange,\n selectedOrganisationId,\n ...rest\n}) => {\n const [selectedOrganisation, setSelectedOrganisation] =\n useState<OrganisationV3>();\n\n useEffect(() => {\n setSelectedOrganisation(\n organisations.find((org) => org.organisationId === selectedOrganisationId)\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedOrganisationId]);\n\n return (\n <SearchableDropdown\n label={label}\n items={[\n ...organisations\n .sort((a, b) => a.tradingName.localeCompare(b.tradingName, 'nb'))\n .map((organisation) => {\n return {\n value: organisation.organisationId,\n label: organisation.tradingName,\n };\n }),\n ]}\n selectedItem={\n selectedOrganisation\n ? {\n value: selectedOrganisation.organisationId,\n label: selectedOrganisation.tradingName,\n }\n : null\n }\n onChange={(selectedValue) => {\n if (selectedValue) {\n handleChange(selectedValue.value);\n }\n }}\n clearable={false}\n {...rest}\n />\n );\n};\n","import React from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { splitUrlPath } from '@entur-partner/util';\n\ntype Props = {\n readonly pathname: string;\n readonly onBreadcrumbLookup: (path: string) => string | undefined;\n};\n\n/**\n * This component changes page title by using helmet and current path. It will translate subpaths, join them with a dash\n * and display it on browser tab.\n *\n * @param Props.pathname - The current path from react-router-dom.useLocation()\n * @param Props.onBreadcrumbLookup - A function that takes a path and returns a i18n translated string or undefined\n * @returns A Helmet component with updated title\n */\nexport function PageTitle({ pathname, onBreadcrumbLookup }: Props) {\n const paths: string[] = splitUrlPath(pathname);\n\n const pageTitles = paths\n .map((path) => ({ title: onBreadcrumbLookup(path), path }))\n .filter(({ title }) => title !== undefined)\n .map(({ title }) => title)\n .reverse()\n .join(' | ');\n\n return (\n <Helmet>\n <title>{pageTitles} | Entur Partner</title>\n </Helmet>\n );\n}\n","import React, { FC } from 'react';\nimport { Pagination } from '@entur/menu';\n\nexport interface PagerProps {\n currentPage: number;\n collectionSize: number;\n pageSize: number;\n onPageChange: (page: number) => void;\n}\n\nexport const Pager: FC<PagerProps> = ({\n collectionSize,\n pageSize,\n onPageChange,\n currentPage,\n}) => {\n const pageCount = Math.ceil(collectionSize / pageSize);\n return (\n <Pagination\n pageCount={pageCount}\n currentPage={currentPage}\n onPageChange={(page) => {\n onPageChange(page);\n }}\n />\n );\n};\n","import React, { ReactNode, FC } from 'react';\nimport { BusinessCapability } from '@entur-partner/permission-client-node';\nimport { hasAllPermissions, hasOneOfPermissions } from '@entur-partner/util';\n\n/**\n * Note: We use BusinessCapability here, not because we only want to check\n * BusinessCapabilities but because it represents a minimal subset of what we\n * need to check.\n */\nexport interface PermissionCheckProps {\n children: ReactNode;\n /** User permissions to check */\n permissions: BusinessCapability[];\n /** Check that at least one of the permissions is present */\n oneOf?: BusinessCapability[];\n /** Check that all of the permissions is present */\n all?: BusinessCapability[] | BusinessCapability;\n /** Rendered if check fails. Defaults to null */\n fallback?: ReactNode;\n}\n\n/**\n * Note: This component uses BusinessCapability, not because we only want to\n * check BusinessCapabilities but because it represents a minimal subset of\n * what we need to check.\n */\nexport const PermissionCheck: FC<PermissionCheckProps> = ({\n children,\n fallback = null,\n permissions,\n oneOf = [],\n all = [],\n}) => {\n const allIsAllowed = hasAllPermissions(all, permissions);\n\n const oneOfIsAllowed = hasOneOfPermissions(oneOf, permissions);\n\n const allowed = allIsAllowed && oneOfIsAllowed;\n return <>{allowed ? children : fallback}</>;\n};\n","import React, { FC, ReactNode } from 'react';\nimport { useBlocker, useInRouterContext } from 'react-router-dom';\nimport { Location } from 'history';\nimport { ModalProps } from '@entur/modal';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { ConfirmModal } from './ConfirmModal';\n\nexport interface RouteLeavingGuardProps extends Partial<ModalProps> {\n title: string;\n closeLabel: string;\n messages: {\n cancel: string;\n confirm: string;\n };\n children: ReactNode;\n shouldBlockNavigation: (location: Location) => boolean;\n}\n\nexport const RouteLeavingGuard: FC<RouteLeavingGuardProps> = ({\n children,\n shouldBlockNavigation,\n ...rest\n}) => {\n assertIsDefined(\n useInRouterContext() ? true : undefined,\n `RouteLeavingGuard must be used within a data router.`\n );\n\n const blocker = useBlocker(\n ({ currentLocation, nextLocation }) =>\n currentLocation.pathname !== nextLocation.pathname &&\n shouldBlockNavigation(nextLocation)\n );\n\n return (\n <ConfirmModal\n onDismiss={() => {\n if (blocker.state === 'blocked') {\n blocker.reset();\n }\n }}\n open={blocker.state === 'blocked'}\n onConfirm={() => {\n if (blocker.state === 'blocked') {\n blocker.proceed();\n }\n }}\n {...rest}\n >\n {children}\n </ConfirmModal>\n );\n};\n","import './StatusLabel.scss';\n\nimport React, { FC } from 'react';\nimport cx from 'classnames';\n\ninterface StatusLabelProps {\n label: string;\n active: boolean;\n aggressiveInactive?: boolean;\n showBullet?: boolean;\n center?: boolean;\n}\nexport const StatusLabel: FC<StatusLabelProps> = ({\n active = false,\n label = '',\n aggressiveInactive,\n showBullet,\n center,\n}) => {\n const bulletClassNames = cx('eps-status-label__bullet', {\n active,\n aggressive: aggressiveInactive,\n });\n const statusLabelClassNames = cx('eps-status-label', {\n center,\n });\n return (\n <div className={statusLabelClassNames}>\n {showBullet && <div className={bulletClassNames} />}\n <div>{label}</div>\n </div>\n );\n};\n","import './Text.scss';\n\nimport React, { ReactNode } from 'react';\nimport cx from 'classnames';\n\nimport { StyleColor, responsiveProp, Box } from './Box';\n\ntype StyleFontSize =\n | 'extraSmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'extraLarge'\n | 'extraLarge2'\n | 'extraLarge3'\n | 'extraLarge4';\n\ntype StyleFontWeight = 'body' | 'heading';\n\ntype StyleLineHeight =\n | 'extraSmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'extraLarge'\n | 'extraLarge2'\n | 'extraLarge3'\n | 'extraLarge4'\n | 'extraLarge5'\n | 'extraLarge6'\n | 'extraLarge7';\n\nexport type ResponsiveStyleFontSize =\n | StyleFontSize\n | [StyleFontSize?, StyleFontSize?, StyleFontSize?];\n\nexport type ResponsiveStyleLineHeight =\n | StyleLineHeight\n | [StyleLineHeight?, StyleLineHeight?, StyleLineHeight?];\n\nexport interface TextProps {\n className?: string;\n as?: React.ElementType;\n children: ReactNode;\n\n fontSize?: ResponsiveStyleFontSize;\n lineHeight?: ResponsiveStyleLineHeight;\n color?: StyleColor;\n fontWeight?: StyleFontWeight;\n\n [key: string]: any;\n}\n\nexport const Text = ({\n as: component = 'span',\n children,\n fontSize,\n color,\n lineHeight,\n fontWeight,\n className,\n ...rest\n}: TextProps) => {\n const classes = [];\n\n fontSize && classes.push(...responsiveProp('eps-font-size-', fontSize));\n lineHeight && classes.push(...responsiveProp('eps-line-height-', lineHeight));\n fontWeight && classes.push('eps-font-weight-' + fontWeight);\n\n const classList = cx(classes, className);\n\n return (\n <Box as={component} color={color} className={classList} {...rest}>\n {children}\n </Box>\n );\n};\n","import './Unbutton.scss';\n\nimport React, { FC } from 'react';\nimport { Button, ButtonProps } from '@entur/button';\nimport cx from 'classnames';\n\ninterface UnbuttonProps extends Omit<ButtonProps<any>, 'variant'> {}\n\nexport const Unbutton: FC<UnbuttonProps> = ({\n children,\n className,\n ...rest\n}) => (\n <Button variant=\"primary\" {...rest} className={cx('eps-unbutton', className)}>\n {children}\n </Button>\n);\n","import './index.scss';\n\nimport React, { FC, useState } from 'react';\nimport cx from 'classnames';\n\nimport { Environment } from '../environment';\nimport { CustomOverflowMenu } from './components/CustomOverflowMenu';\nimport { LanguageSwitchMenuItem } from './components/LanguageSwitchMenuItem';\nimport { VersionMenuItem } from './components/VersionMenuItem';\nimport { UserMenuItem } from './components/UserMenuItem';\nimport { LogOutMenuItem } from './components/LogOutMenuItem';\nimport { CookieSettingsMenuItem } from './components/CookieSettingsMenuItem';\n\ninterface UserMenuProps {\n userName: string;\n messages: {\n logout: string;\n switchLanguage: string;\n appVersion?: string;\n myProfile?: string;\n cookieSettings?: string;\n };\n onLogout: () => void;\n onLanguageChange: (language: string) => void;\n language: string;\n className?: string;\n environment?: Environment;\n showVersionItem?: boolean;\n showMyProfileItem?: boolean;\n showCookieSettingsItem?: boolean;\n onNavigateToMyProfile: () => void;\n onCookieSettingsOpen?: () => void;\n}\n\nexport const UserMenu: FC<UserMenuProps> = ({\n className,\n messages,\n onLogout,\n onLanguageChange,\n userName,\n language,\n environment,\n showVersionItem,\n showMyProfileItem,\n showCookieSettingsItem,\n onNavigateToMyProfile,\n onCookieSettingsOpen = () => {},\n}) => {\n const triggerClassList = cx(['eps-user-menu__trigger-button', className]);\n const [open, setOpen] = useState(false);\n\n return (\n <div id=\"eps-user-menu\">\n <CustomOverflowMenu\n open={open}\n onOpenChange={setOpen}\n className={triggerClassList}\n userName={userName}\n environment={environment}\n >\n <div id=\"eps-overflow-menu\">\n <LanguageSwitchMenuItem\n name={messages.switchLanguage}\n language={language}\n onLanguageChange={onLanguageChange}\n setOpen={setOpen}\n />\n {showVersionItem && messages.appVersion && (\n <VersionMenuItem title={messages.appVersion} setOpen={setOpen} />\n )}\n {showMyProfileItem && messages.myProfile && (\n <UserMenuItem\n name={messages.myProfile}\n setOpen={setOpen}\n onNavigateToMyProfile={onNavigateToMyProfile}\n />\n )}\n {showCookieSettingsItem && messages.cookieSettings && (\n <CookieSettingsMenuItem\n name={messages.cookieSettings}\n setOpen={setOpen}\n onCookieSettingsOpen={onCookieSettingsOpen}\n />\n )}\n <LogOutMenuItem\n name={messages.logout}\n setOpen={setOpen}\n onLogout={onLogout}\n />\n </div>\n </CustomOverflowMenu>\n </div>\n );\n};\n","/*global EventListener WindowEventHandlers*/\nimport { useEffect, useRef } from 'react';\n\ninterface TypedEventListener<T extends Event> {\n (evt: T): void;\n}\n\nexport function useEventListener<T extends Event = Event>(\n eventName: string,\n handler: TypedEventListener<T>,\n element: WindowEventHandlers = window\n) {\n const savedHandler = useRef<TypedEventListener<T>>();\n\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n const isSupported = element && element.addEventListener;\n if (!isSupported) return;\n\n const eventListener = ((event: T): void =>\n savedHandler.current?.(event)) as EventListener;\n\n element.addEventListener(eventName, eventListener);\n\n return () => {\n element.removeEventListener(eventName, eventListener);\n };\n }, [eventName, element]);\n}\n"],"names":["responsiveProp","prefix","prop","Array","isArray","classes","push","Environment","Box","_ref","_ref$as","as","Component","children","contrast","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","padding","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","margin","display","justifyContent","alignItems","maxWidth","width","background","color","flexDirection","flexWrap","className","rest","_objectWithoutPropertiesLoose","_excluded","resolvedPaddingTop","resolvedPaddingBottom","resolvedPaddingLeft","resolvedPaddingRight","resolvedMarginTop","resolvedMarginBottom","resolvedMarginLeft","resolvedMarginRight","apply","classList","cx","React","createElement","_extends","Stack","space","stackItems","Children","toArray","length","Fragment","map","child","index","key","featureFlag","flag","_window$localStorage","_window$localStorage2","import","window","localStorage","getItem","useFeatureToggle","environmentColors","_environmentColors","Local","Development","Staging","getColorForEnvironment","environment","humanReadableEnvironment","_humanReadableEnviron","Production","getHumanReadableEnvironment","EnturPartnerLogoSvg","title","_ref$accentColor","accentColor","height","viewBox","fill","fillRule","d","elementContainsEventTarget","element","event","contains","target","composed","composedPath","find","CustomOverflowMenu","ref","buttonRef","handler","userName","open","onOpenChange","overflowItemsClasses","overflowContentRef","useRef","overflowMenuTriggerRef","useEffect","listener","current","document","addEventListener","removeEventListener","SecondaryButton","onClick","role","UserIcon","inline","Heading6","undefined","style","DownArrowIcon","CustomOverflowMenuItem","props","LanguageSwitchMenuItem","language","onLanguageChange","setOpen","name","useB47LanguageKey","norwegianLanguageKey","englishLanguageKey","NorwayIcon","size","UKIcon","VersionMenuItem","navigate","useNavigate","ChannelsIcon","UserMenuItem","onNavigateToMyProfile","Link","to","textDecoration","LogOutMenuItem","onLogout","LogOutIcon","CookieSettingsMenuItem","onCookieSettingsOpen","CookieIcon","LanguageSelect","options","onChange","classNames","SegmentedControl","assertIsDefined","selectedValue","option","SegmentedChoice","value","label","required","ErrorBoundary","_Component","_this","call","this","state","error","getDerivedStateFromError","_proto","prototype","componentDidCatch","errorInfo","_this$props$handleErr","_this$props","handleError","render","functionToCheck","_this2","_this$props2","fallback","toString","retry","setState","message","RefreshBannerInfo","LANGUAGE_STORAGE_KEY","isNorwegian","BannerAlertBox","variant","Paragraph","PrimaryButton","location","reload","FormatDateTime","date","locale","hideTime","localeDate","localeDateTime","ConfirmModal","_ref$isOpen","isOpen","_ref$size","buttons","onConfirm","messages","onClose","onDismiss","childrenToRender","handleDismiss","Modal","isString","ButtonGroup","cancel","confirm","_ref3","_ref2","items","i","isDate","isDateString","prependBreadcrumbItem","onBreadcrumbLookup","breadcrumbs","splitUrlPath","pathname","path","filter","breadcrumbElements","BreadcrumbItem","BreadcrumbNavigation","concat","classnames","_ref2$as","altText","InputComponent","inputComponent","languages","values","feedback","ExpandablePanel","defaultOpen","contentStyle","langKey","e","changes","amount","parsedAmount","Number","formattedAmount","Intl","NumberFormat","maximumFractionDigits","minimumFractionDigits","format","A","RouterLink","alertLabel","alertLevel","_ref$defaultLanguage","defaultLanguage","_ref$label","_ref$onBlur","onBlur","_useState","useState","setLanguage","currentValue","tabIndex","persist","currentTarget","setTimeout","activeElement","lang","handleLanguageChange","Object","assign","organisations","handleChange","selectedOrganisationId","selectedOrganisation","setSelectedOrganisation","org","organisationId","SearchableDropdown","sort","a","b","tradingName","localeCompare","organisation","selectedItem","clearable","pageTitles","reverse","join","Helmet","onPageChange","currentPage","pageCount","Math","ceil","collectionSize","pageSize","Pagination","page","_ref$fallback","permissions","_ref$oneOf","oneOf","_ref$all","all","allIsAllowed","hasAllPermissions","oneOfIsAllowed","hasOneOfPermissions","shouldBlockNavigation","useInRouterContext","blocker","useBlocker","nextLocation","currentLocation","reset","proceed","_ref$active","active","showBullet","center","bulletClassNames","aggressive","aggressiveInactive","statusLabelClassNames","component","fontSize","lineHeight","fontWeight","Button","showVersionItem","showMyProfileItem","showCookieSettingsItem","_ref$onCookieSettings","triggerClassList","id","switchLanguage","appVersion","myProfile","cookieSettings","logout","eventName","savedHandler","eventListener"],"mappings":"s0CAuHgB,SAAAA,EAAeC,EAAgBC,GAC7C,GAAIC,MAAMC,QAAQF,GAAO,CACvB,IAAMG,EAAU,GAIhB,OAHAH,EAAK,IAAMG,EAAQC,KAAKL,EAASC,EAAK,IACtCA,EAAK,IAAMG,EAAQC,KAAQL,GAAAA,EAASC,EAAK,UACzCA,EAAK,IAAMG,EAAQC,KAAQL,GAAAA,EAASC,EAAK,UAClCG,CACR,CACD,MAAO,CAACJ,EAASC,EACnB,SChIYK,EDkICC,EAAM,SAAHC,GA6BD,IAAAC,EAAAD,EA5BbE,GAAIC,OAAY,IAAHF,EAAG,MAAKA,EACrBG,EAAQJ,EAARI,SACAC,EAAQL,EAARK,SACAC,EAAUN,EAAVM,WACAC,EAAYP,EAAZO,aACAC,EAAaR,EAAbQ,cACAC,EAAWT,EAAXS,YACAC,EAAQV,EAARU,SACAC,EAAQX,EAARW,SACAC,EAAOZ,EAAPY,QACAC,EAASb,EAATa,UACAC,EAAWd,EAAXc,YACAC,EAAYf,EAAZe,aACAC,EAAUhB,EAAVgB,WACAC,EAAOjB,EAAPiB,QACAC,EAAOlB,EAAPkB,QACAC,EAAMnB,EAANmB,OACAC,EAAOpB,EAAPoB,QACAC,EAAcrB,EAAdqB,eACAC,EAAUtB,EAAVsB,WACAC,EAAQvB,EAARuB,SACAC,EAAKxB,EAALwB,MACAC,EAAUzB,EAAVyB,WACAC,EAAK1B,EAAL0B,MACAC,EAAa3B,EAAb2B,cACAC,EAAQ5B,EAAR4B,SACAC,EAAS7B,EAAT6B,UACGC,EAAIC,EAAA/B,EAAAgC,GAEDpC,EAAU,GACVqC,EAAqB3B,GAAcK,GAAYC,EAC/CsB,EAAwB1B,GAAiBG,GAAYC,EACrDuB,EAAsB1B,GAAeC,GAAYE,EACjDwB,EAAuB7B,GAAgBG,GAAYE,EAEnDyB,EAAoBxB,GAAaK,GAAWC,EAC5CmB,EAAuBvB,GAAgBG,GAAWC,EAClDoB,EAAqBvB,GAAcC,GAAWE,EAC9CqB,EAAsB1B,GAAeG,GAAWE,EAEtDd,GAAYT,EAAQC,KAAK,gBACzBoC,GACErC,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,UAAW0C,IAC5CC,GACEtC,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,UAAW2C,IAC5CC,GACEvC,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,UAAW4C,IAC5CC,GACExC,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,UAAW6C,IAC5CC,GACEzC,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,UAAW8C,IAC5CC,GACE1C,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,UAAW+C,IAC5CC,GACE3C,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,UAAWgD,IAC5CC,GACE5C,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,UAAWiD,IAE5CpB,GAAWxB,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,OAAQ6B,IAClDC,GACEzB,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,eAAgB8B,IAC7CC,GACF1B,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,aAAc+B,IAG/CC,GAAY3B,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,aAAcgC,IACzDC,GAAS5B,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,SAAUiC,IAElDE,GAAS9B,EAAQC,KAAI,aAAc6B,GACnCD,GAAc7B,EAAQC,KAAI,UAAW4B,GAErCE,GAAiB/B,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,YAAaoC,IAC7DC,GAAYhC,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,iBAAkBqC,IAE7D,IAAMc,EAAYC,EAAAA,QAAG/C,EAASiC,GAE9B,OACEe,UAAAC,cAAC1C,EAAS2C,EAAA,CAACjB,UAAWa,GAAeZ,GAClC1B,EAGP,EE1Ma2C,EAAQ,SAAH/C,GAAkD,IAAlCgD,EAAKhD,EAALgD,MAAOnB,EAAS7B,EAAT6B,UACjCoB,EAAaC,EAAAA,SAASC,QADEnD,EAARI,UAEtB,OAAI6C,EAAWG,QAAU,EAChBR,EAAAA,QAAAC,cAAAD,EAAAA,QAAAS,SAAA,KAAGJ,GAIVL,EAAK,QAAAC,cAAA,MAAA,CAAAhB,UAAWA,GACboB,EAAWK,KAAI,SAACC,EAAOC,GAAK,OAC3BA,IAAUP,EAAWG,OAAS,EAC5BR,+BAAKa,IAAKD,GAAQD,GAElBX,UAAAC,cAAC9C,EAAG,CAACS,cAAewC,EAAOS,IAAKD,GAC7BD,EAEJ,IAIT,6BCnBM,SAAUG,EAAYC,GAAY,IAAAC,EAAAC,EACtC,MAC0C,eAAxCC,GAAe,YAAaH,IACW,iBAAvCC,EAAAG,OAAOC,qBAAPJ,EAAqBK,QAAQN,KACwB,UAAlC,OAAnBE,EAAAE,OAAOC,mBAAY,EAAnBH,EAAqBI,oBAAoBN,GAE7C,CASM,SAAUO,EAAiBP,GAC/B,OAAOD,EAAYC,EACrB,CF3BY7D,QAKXA,iBAAA,GALWA,EAAAA,sBAAAA,QAAAA,YAKX,CAAA,IAJC,MAAA,QACAA,EAAA,YAAA,MACAA,EAAA,QAAA,UACAA,EAAA,WAAA,OAGF,IAAMqE,IAAiBC,EAAA,IAIpBtE,QAAAA,YAAYuE,OAAQ,UAASD,EAC7BtE,QAAWA,YAACwE,aAAc,UAASF,EACnCtE,QAAAA,YAAYyE,SAAU,UAASH,GAQrBI,EAAyB,SACpCC,GAAyD,OACtDN,EAAkBM,EAAY,EAE7BC,IAAwBC,EAAAA,IAC3B7E,QAAWA,YAACuE,OAAQ,QAAOM,EAC3B7E,QAAWA,YAACwE,aAAc,MAAKK,EAC/B7E,QAAWA,YAACyE,SAAU,UAASI,EAC/B7E,QAAWA,YAAC8E,YAAa,OAAMD,GAGrBE,EAA8B,SAACJ,GAAwB,OAClEC,EAAyBD,EAAY,4BGnB1BK,EAAqC,SAAlB9E,GAI3B,IAHH+E,EAAK/E,EAAL+E,MAAKC,EAAAhF,EACLiF,YAAAA,OAAc,IAAHD,EAAG,UAASA,EACpBlD,EAAIC,EAAA/B,EAAAgC,GAEP,OACEY,UAAAC,cAAA,MAAAC,EAAA,CAAKtB,MAAO,IAAK0D,OAAQ,GAAIC,QAAQ,cAAiBrD,GACpDc,UAAAC,cAAA,QAAA,KAAQkC,GACRnC,EAAAA,QAAAC,cAAA,IAAA,CAAGuC,KAAK,OAAOC,SAAS,WACtBzC,EAAA,QAAAC,cAAA,OAAA,CACEuC,KAAK,OACLE,EAAE,iFAEJ1C,EAAAA,QAAAC,cAAA,OAAA,CAAMuC,KAAMH,EAAaK,EAAE,8BAC3B1C,EAAAA,QAAAC,cAAA,OAAA,CACEuC,KAAK,OACLE,EAAE,+sCAEJ1C,EAAAA,QAAGC,cAAA,IAAA,CAAAuC,KAAMH,GACPrC,EAAM,QAAAC,cAAA,OAAA,CAAAyC,EAAE,ksDAKlB,ECTA,SAASC,EAA2BC,EAA6BC,GAC/D,SAAKD,KAIDA,EAAQE,SAASD,EAAME,SAKvBF,EAAMG,UAAYH,EAAMI,cACTJ,EAAMI,eAAeC,MAAK,SAACH,GAC1C,OAAIA,IAAW5B,QAGRyB,EAAQE,SAASC,EAC1B,KAKJ,+ECnCaI,EAOR,SAP0B/F,GAe1B,ID3BHgG,EACAC,EACAC,ECkBArE,EAAS7B,EAAT6B,UACAzB,EAAQJ,EAARI,SACA+F,EAAQnG,EAARmG,SACAC,EAAIpG,EAAJoG,KACAC,EAAYrG,EAAZqG,aACA5B,EAAWzE,EAAXyE,YACG3C,EAAIC,EAAA/B,EAAAgC,GAEDsE,EAAuB3D,EAAE,QAAC,2BAA4B,CAC1D,iCAAkCyD,IAE9BG,EAAqB3D,EAAAA,QAAM4D,OAAuB,MAClDC,EAAyB7D,EAAAA,QAAM4D,OAA0B,MAI/D,ODhCA5D,EAAK,QAAC8D,WAAU,WACd,IAAMC,EAAW,SAAClB,GAEdF,EAA2BS,EAAIY,QAASnB,IACxCF,EAA2BU,EAAUW,QAASnB,IAKhDS,KAMF,OAHAW,SAASC,iBAAiB,YAAaH,GACvCE,SAASC,iBAAiB,aAAcH,GAEjC,WACLE,SAASE,oBAAoB,YAAaJ,GAC1CE,SAASE,oBAAoB,aAAcJ,GAE9C,GAAE,CAvBHX,ECiCgBO,EDhChBN,ECgCoCQ,ED/BpCP,EC+B4D,WAAA,OAC1DG,GAAa,MAGbzD,EAAA,QAAAC,cAAA,MAAA,KACED,EAAAA,QAAAC,cAACmE,EAAeA,gBAAAlE,EAAA,CACdjB,UAAWc,EAAAA,QAAG,4BAA6Bd,GAC3CoF,QAAS,WAAF,OAAQZ,GAAaD,EAAoB,mBACjC,EACfc,KAAK,yBACUd,EACfJ,IAAKS,GACD3E,GAEJc,UAAKC,cAAA,MAAA,CAAAhB,UAAU,sCACbe,EAAM,QAAAC,cAAA,OAAA,CAAAhB,UAAU,gCACde,EAAA,QAAAC,cAACsE,WAAQ,CAACC,QAAM,KAElBxE,EAAAA,QAACC,cAAAwE,YAASlG,OAAO,OAAOjB,GAAG,QACxBiG,OACgBmB,IAAhB7C,GACCA,IAAgB3E,QAAWA,YAAC8E,YAC1BhC,EAAAA,QAAMC,cAAA,OAAA,CAAA0E,MAAO,CAAE7F,MAAO8C,EAAuBC,KAC1C,QACCI,EAA4BJ,GACzB,MAGb7B,EAAAA,QAAMC,cAAA,OAAA,CAAAhB,UAAU,kBACde,EAAA,QAAAC,cAAC2E,gBAAc,CAAAJ,QAAS,OAI7BhB,GACCxD,EAAAA,QACEC,cAAA,MAAA,CAAAhB,UAAWyE,EACXY,KAAK,OACLlB,IAAKO,GAEJnG,GAKX,EC3EaqH,EAKT,SAACC,GACH,OACE9E,oCACEf,UAAWc,EAAE,QAAC+E,EAAM7F,UAAW,2BAC/BqF,KAAK,YACDQ,GAGV,ECHaC,EAAyB,SAAH3H,GAKvB,IAJV4H,EAAQ5H,EAAR4H,SACAC,EAAgB7H,EAAhB6H,iBACAC,EAAO9H,EAAP8H,QACAC,EAAI/H,EAAJ+H,KAEMC,EAAoB9D,EAAiB,2BACrC+D,EAAuBD,EAAoB,QAAU,KACrDE,EAAqBF,EAAoB,QAAU,KAEzD,OACEpF,UAAAC,cAAAD,EAAA,QAAAS,SAAA,KACGuE,IAAaM,EACZtF,EAAAA,sBAAC6E,EAAsB,CACrBR,QAAS,WACPY,EAAiBI,GACjBH,GAAQ,EACT,EACDjG,UAAU,2BAEVe,EAAkB,QAAAC,cAAA,OAAA,CAAA,eAAA,EAAAhB,UAAU,kCAC1Be,EAAC,QAAAC,cAAAsF,cAAWC,KAAK,OAAOhB,aAEzBW,GAGHnF,EAAAA,QAACC,cAAA4E,EACC,CAAAR,QAAS,WACPY,EAAiBK,GACjBJ,GAAQ,EACT,EACDjG,UAAU,2BAEVe,EAAkB,QAAAC,cAAA,OAAA,CAAA,eAAA,EAAAhB,UAAU,kCAC1Be,EAAC,QAAAC,cAAAwF,UAAOD,KAAK,OAAOhB,aAErBW,GAKX,EClDaO,EAGR,SAHuBtI,GAGA,IAApB+E,EAAK/E,EAAL+E,MAAO+C,EAAO9H,EAAP8H,QACPS,EAAWC,EAAAA,cACjB,OACE5F,EAAC,QAAAC,cAAA4E,GACCR,QAAS,WACPsB,EAAS,gBACTT,GAAQ,EACT,EACDjG,UAAU,2BAEVe,EAAA,QAAAC,cAAA,OAAA,CAAA,eAAA,GACED,EAAA,QAAAC,cAAC4F,eAAY,CAAC5G,UAAU,mBAAmBuG,KAAK,OAAOhB,QAAM,KAE9DrC,EAGP,ECXa2D,EAAe,SAAH1I,GAIb,IAHV+H,EAAI/H,EAAJ+H,KACAD,EAAO9H,EAAP8H,QACAa,EAAqB3I,EAArB2I,sBAEA,OACE/F,EAAA,QAAAC,cAAC+F,OAAI,CAACC,GAAG,+BAA+BtB,MAAO,CAAEuB,eAAgB,SAC/DlG,EAAA,QAAAC,cAAC4E,EAAsB,CACrBR,QAAS,WACPa,GAAQ,GACRa,GACD,EACD9G,UAAU,2BAEVe,EAAA,QAAAC,cAAA,OAAA,CAAA,eAAA,GACED,EAAC,QAAAC,cAAAsE,YAASiB,KAAK,OAAOhB,aAEvBW,GAIT,ECtBagB,EAAiB,SAAH/I,GAA0C,IAApC+H,EAAI/H,EAAJ+H,KAAMD,EAAO9H,EAAP8H,QAASkB,EAAQhJ,EAARgJ,SAC9C,OACEpG,EAAC,QAAAC,cAAA4E,GACCR,QAAS,WACP+B,IACAlB,GAAQ,EACT,EACW,cAAA,mBACZjG,UAAU,2BAEVe,EAAA,QAAAC,cAAA,OAAA,CAAA,eAAA,GACED,EAAC,QAAAC,cAAAoG,cAAWb,KAAK,OAAOhB,aAEzBW,EAGP,EChBamB,EAAyB,SAAHlJ,GAIvB,IAHV+H,EAAI/H,EAAJ+H,KACAD,EAAO9H,EAAP8H,QACAqB,EAAoBnJ,EAApBmJ,qBAEA,OACEvG,EAAC,QAAAC,cAAA4E,GACCR,QAAS,WACPkC,IACArB,GAAQ,EACT,EACDjG,UAAU,2BAEVe,EAAA,QAAAC,cAAA,OAAA,CAAA,eAAmB,GACjBD,EAAC,QAAAC,cAAAuG,cAAWhB,KAAK,OAAOhB,aAEzBW,EAGP,kHCTasB,EAA0C,SAA5BrJ,GAMtB,IALH4H,EAAQ5H,EAAR4H,SACA0B,EAAOtJ,EAAPsJ,QACAzH,EAAS7B,EAAT6B,UACA0H,EAAQvJ,EAARuJ,SACGzH,EAAIC,EAAA/B,EAAAgC,GAEDwH,EAAa7G,EAAAA,QAAG,sBAAuBd,GAC7C,OACEe,EAAAA,QAASC,cAAA,MAAAC,KAAAhB,EAAI,CAAED,UAAW2H,IACxB5G,EAAAA,QAAAC,cAAC4G,mBACC,CAAAF,SAAU,SAAC3B,GACT8B,EAAeA,gBAAC9B,GAChB2B,EAAS3B,EACV,EACD+B,cAAe/B,GAEd0B,EAAQhG,KAAI,SAACsG,GAAM,OAClBhH,EAAA,QAAAC,cAACgH,kBAAe,CAACpG,IAAKmG,EAAOE,MAAOA,MAAOF,EAAOE,OAC/CF,EAAOG,MACPH,EAAOI,UAAYpH,EAAM,QAAAC,cAAA,OAAA,CAAAhB,UAAU,mBAAmB,KAE1D,KAIT,2PCrBaoI,WAAcC,GACzB,SAAAD,EAAYvC,GAAY,IAAAyC,EAEO,OAD7BA,EAAAD,EAAAE,KAAAC,KAAM3C,IAAM2C,MACPC,MAAQ,CAAEC,MAAO,MAAOJ,CAC/B,WAACD,KAAAD,yEAAAA,EAEMO,yBAAP,SAAgCD,GAC9B,MAAO,CACLA,MAAAA,IAEH,IAAAE,EAAAR,EAAAS,UAyBA,OAzBAD,EAEDE,kBAAA,SAAkBJ,EAAcK,GAAoB,IAAAC,EAAAC,EAE5B,OAAtBD,GAAAC,OAAKpD,OAAMqD,cAAXF,EAAAT,KAAAU,EAAyBP,EAAOK,IACjCH,EAEDO,OAAA,WAAM,IC7CsBC,ED6CtBC,EAAAb,KACIE,EAAUF,KAAKC,MAAfC,MACRY,EAA+Bd,KAAK3C,MAA5B0D,EAAQD,EAARC,SAAUhL,EAAQ+K,EAAR/K,SAElB,OAAImK,GCjDsBU,EDkDGG,IChD4B,sBAAtC,CAAA,EAAGC,SAASjB,KAAKa,GDiDzBG,EAAS,CAAEE,MAAO,WAAF,OAAQJ,EAAKK,SAAS,CAAEhB,MAAO,MAAO,EAAEA,MAAAA,IAEhD,kBAAfA,EAAMxC,MA3BZ,mGA4BMwC,EAAMiB,QAEC5I,UAAAC,cAAC4I,EAAiB,MAGpBL,EAGFhL,GACR6J,CAAA,EAnCgC9J,aAsCtBuL,EAAuB,aAEpC,SAASD,IAEP,IACME,EAA2B,OADhB3H,aAAaC,QAAQyH,GAEtC,OACE9I,EAAC,QAAAC,cAAA9C,EAAI,CAAAwB,SAAS,SACZqB,EAAC,QAAAC,cAAA+I,kBACCC,QAAQ,OACR9G,MACE4G,EACI,8CACA,8CAGN/I,EAAA,QAAAC,cAAC9C,EAAG,CAACS,cAAc,UACjBoC,EAAA,QAAAC,cAACiJ,YAAU,CAAA3K,OAAO,QACfwK,EAAc,sBAAwB,oBAG3C/I,EAAC,QAAAC,cAAAkJ,gBAAc,CAAA9E,QAAS,WAAF,OAAQlD,OAAOiI,SAASC,QAAQ,GACnDN,EAAc,WAAa,YAKtC,0CEpFaO,GAA0C,SAA5BlM,GAMtB,IALHmM,EAAInM,EAAJmM,KACAC,EAAMpM,EAANoM,OAAMnM,EAAAD,EACNE,GAAIC,OAAY,IAAHF,EAAG,OAAMA,EACtBoM,EAAQrM,EAARqM,SACGvK,EAAIC,EAAA/B,EAAAgC,IAEP,OACEY,EAAAA,QAACC,cAAA1C,EAAS2C,EAAA,CAAA,EAAKhB,GACZuK,EAAWC,EAAAA,WAAWH,EAAMC,GAAUG,EAAcA,eAACJ,EAAMC,GAGlE,wJCkBaI,GAAsC,SAA1BxM,GAWpB,IAAAyM,EAAAzM,EAVH0M,OAAAA,OAAS,IAAHD,GAAQA,EACdrM,EAAQJ,EAARI,SACAoL,EAAOxL,EAAPwL,QAAOmB,EAAA3M,EACPoI,KAAAA,OAAO,IAAHuE,EAAG,SAAQA,EACfC,EAAO5M,EAAP4M,QACAC,EAAS7M,EAAT6M,UACAC,EAAQ9M,EAAR8M,SACAC,EAAO/M,EAAP+M,QACAC,EAAShN,EAATgN,UACGlL,EAAIC,EAAA/B,EAAAgC,IAEDiL,EAAmB7M,GAAsBoL,EACzC0B,EAAgBH,GAAoBC,EAC1C,OACEpK,UAACC,cAAAsK,EAAKA,MAAArK,EAAA,CAACsF,KAAMA,EAAMhC,KAAMsG,EAAQM,UAAWE,GAAmBpL,GAC5DsL,EAAAA,SAASH,GACRrK,EAAAA,QAACC,cAAAiJ,EAASA,UAAE,KAAAmB,GAEZrK,EAAAA,QAAAC,cAAC9C,EAAG,CAACS,cAAc,UAAUyM,GAG/BrK,EAAA,QAAAC,cAACwK,EAAWA,YACT,KAAAR,EACCjK,EAAA,QAAAC,cAAAD,EAAA,QAAAS,SAAA,KACET,EAAC,QAAAC,cAAAmE,kBACC,CAAAC,QAASiG,EACG,cAAA,uBAEXJ,EAASQ,QAEZ1K,EAAAA,QAACC,cAAAkJ,EAAAA,eACC9E,QAAS4F,EACG,cAAA,wBAEXC,EAASS,UAIdX,GAKV,0ICpEkB,SAAHY,GAAoC,IAA9BpN,EAAQoN,EAARpN,SACnB,OACEwC,EAAA,QAAAC,cAAAD,UAAAS,SAAA,KACET,EAAK,QAAAC,cAAA,MAAA,CAAAhB,UAAU,2BACfe,EAAAA,QAAKC,cAAA,MAAA,CAAAhB,UAAU,kBAAkBzB,GAGvC,wBAfsB,SAAHJ,GACjB,OAAO4C,+BAAKf,UAAU,uBADS7B,EAARI,SAEzB,yBAEuB,SAAHqN,GAClB,OAAO7K,+BAAKf,UAAU,wBADU4L,EAARrN,SAE1B,oBCQ6C,SAAvBJ,GAKjB,IAJH0N,EAAK1N,EAAL0N,MACAtB,EAAMpM,EAANoM,OACAvK,EAAS7B,EAAT6B,UACGC,EAAIC,EAAA/B,EAAAgC,IAEDwH,EAAa7G,EAAAA,QAAG,gBAAiBd,GACvC,OACEe,UAAAC,cAAA,MAAAC,EAAA,CAAKjB,UAAW2H,GAAgB1H,GAC7B4L,EAAMpK,KAAI,SAAAmK,EAAmBE,GAAC,IAAV7D,EAAK2D,EAAL3D,MAAK,OACxBlH,EAAA,QAAAC,cAACE,EAAK,CAACC,MAAM,QAAQS,IAAKkK,GACxB/K,EAAA,QAAAC,cAAA,MAAA,CAAKhB,UAAU,uBAFA4L,EAAL1D,OAGVnH,EAAAA,QAAAC,cAAA,MAAA,KACG+K,EAAAA,OAAO9D,IAAU+D,EAAYA,aAAC/D,GAC7BlH,EAAAA,sBAACsJ,GAAc,CAACC,KAAMrC,EAAOsC,OAAQA,IAErCxJ,EAAA,QAAAC,cAAA,OAAA,KAAOiH,IAId,IAGP,oCChCiD,SAAzB9J,GAInB,IAHH8N,EAAqB9N,EAArB8N,sBAEAC,EAAkB/N,EAAlB+N,mBAIMC,EAFkBC,eAHhBjO,EAARkO,UAMG5K,KAAI,SAAC6K,GAAI,MAAM,CAAEpJ,MAAOgJ,EAAmBI,GAAOA,KAAAA,EAAM,IACxDC,QAAO,SAAAX,GAAQ,YAAiBnG,IAAjBmG,EAAL1I,SAEPsJ,EAAqBL,EAAY1K,KAAI,SAAAkK,EAAkBG,GAAK,IAAbQ,EAAIX,EAAJW,KAEnD,OAEIvL,EAAA,QAAAC,cAACyL,iBAHUX,IAAMK,EAAY5K,OAAS,EAGvB,CAACK,IAAK0K,EAAMjO,GAAI,SAMjBuD,IAAK0K,EAAMjO,GAAI0I,EAAIA,KAAEC,GAAIsF,GAVMX,EAALzI,MAc9C,IAEA,OAEInC,EAAA,QAAAC,cAAC0L,EAAAA,qBAAoB,KAFrBT,EAGIA,CAAAA,GAAqBU,OAAKH,GAKJA,EAChC,0CCtCyC,SAArBrO,GAIf,IAAAC,EAAAD,EAHHE,GAAIC,OAAY,IAAHF,EAAG,OAAMA,EAEtBG,EAAQJ,EAARI,SAEMsC,EAAY+L,EAAU,QAAC,CAAC,cAHrBzO,EAAT6B,YAKA,OAAOe,EAAA,QAAAC,cAAC1C,EAAU,CAAA0B,UAAWa,GAAYtC,EAC3C,2BjB6B2D,SAA9BqN,GAKxB,IAAAiB,EAAAjB,EAJHvN,GAAIC,OAAY,IAAHuO,EAAG,MAAKA,EAErBC,EAAOlB,EAAPkB,QACAlK,EAAWgJ,EAAXhJ,YAEM/B,EAAY+L,EAAU,QAAC,CAAC,mBAJrBhB,EAAT5L,YAMA,OACEe,EAAC,QAAAC,cAAA1C,EAAU,CAAA0B,UAAWa,GACpBE,EAAC,QAAAC,cAAAiC,GACCC,MAAO4J,EACP9M,UAAU,OACVoD,iBACkBqC,IAAhB7C,GAA6BA,IAAgB3E,QAAWA,YAAC8E,WACrDJ,EAAuBC,QACvB6C,IAKd,6FkB/C4C,SAAHtH,GAUD,IATtC+E,EAAK/E,EAAL+E,MACgB6J,EAAc5O,EAA9B6O,eACAC,EAAS9O,EAAT8O,UACAC,EAAM/O,EAAN+O,OACAxF,EAAQvJ,EAARuJ,SACAxB,EAAI/H,EAAJ+H,KACA8D,EAAO7L,EAAP6L,QACAmD,EAAQhP,EAARgP,SACGlN,EAAIC,EAAA/B,EAAAgC,GAYP,OACEY,EAAC,QAAAC,cAAAoM,kBACC,CAAAlK,MAAOA,EACPmK,aACA,EAAAC,aAAc,CACZvO,QAAS,kBACTC,UAAW,OACXE,aAAc,SAGhB6B,EAAA,QAAAC,cAACE,EAAM,CAAAC,MAAM,UACV8L,EAAUxL,KAAI,SAAAmK,GAAA,IAAU2B,EAAO3B,EAAd3D,MAAgBC,EAAK0D,EAAL1D,MAAe,OAC/CnH,UAACC,cAAA+L,EAAc9L,EAAA,mCACoBiF,EAAI,IAAIqH,EACzC3L,IAAKsB,EAAQqK,EACbrF,MAJ6C0D,EAARzD,SAInBD,EAAQ,IAAMA,EAChC8B,QAASA,GAAWA,EAAQuD,GAC5BJ,SAAUA,GAAYA,EAASI,GAC/BrH,KAAMA,EACNwB,SAAU,SAAC8F,GA7BE,IAACzH,EAAuBkC,EACvCwF,EADgB1H,EA8BGwH,EA9BoBtF,EA8BXuF,EAAE1J,OAAOmE,MA7BrCwF,EAAOxM,EAAA,CAAA,EAAQiM,GACP,KAAVjF,GAAiBA,EAGnBwF,EAAQ1H,GAAYkC,SAFbwF,EAAQ1H,GAIjB2B,EAAS+F,EAwBA,EACDxF,MAAOiF,EAAOK,IAAY,IACtBtN,GAEP,KAIT,wBnBlC6B,SAAH9B,GAA8C,IAAxCI,EAAQJ,EAARI,SAE9B,OADgB8D,EAD4BlE,EAAJ2D,MAG/Bf,EAAAA,QAAAC,cAAAD,EAAAA,QAAAS,SAAA,KAAGjD,GAEL,IACT,+BoBnCmE,SAAlCJ,GAI5B,IAHHuP,EAAMvP,EAANuP,OAAMtP,EAAAD,EACNE,GAAIC,OAAY,IAAHF,EAAG,OAAMA,EACnB6B,EAAIC,EAAA/B,EAAAgC,IAEDwN,EAAeC,OAAOF,IAAW,EAEjCG,EAAkB,IAAIC,KAAKC,aAAa,QAAS,CACrDC,sBAAuB,EACvBC,sBAAuB,IACtBC,OAAOP,GAEV,OAAO5M,wBAACzC,EAAS2C,EAAKhB,CAAAA,EAAAA,GAAO4N,EAC/B,kECf+B,SAAChI,GAC9B,OACE9E,EAAAA,QAAAC,cAACmN,EAAAA,KAAClN,KAAK4E,EAAK,CAAExH,GAAI+P,EAAAA,OACfvI,EAAMtH,SAGb,qBCA0B,SAAHJ,GAAA,IACrBI,EAAQJ,EAARI,SACAyB,EAAS7B,EAAT6B,UACGC,EAAIC,EAAA/B,EAAAgC,GAAA,OAEPY,EAAAA,QAACC,cAAA+F,EAAAA,KAAI9F,KAAKhB,EAAI,CAAE5B,GAAG,SAAS2B,UAAWc,EAAAA,QAAG,kBAAmBd,KAC1DzB,EACI,eCT0B,SAAlBJ,GAIZ,IAAAC,EAAAD,EAHHE,GAAIC,OAAY,IAAHF,EAAG,MAAKA,EAErBG,EAAQJ,EAARI,SAEMsC,EAAY+L,EAAAA,QAAW,CAAC,eAAgB,WAHrCzO,EAAT6B,YAKA,OAAOe,EAAA,QAAAC,cAAC1C,EAAU,CAAA0B,UAAWa,GAAYtC,EAC3C,6BCU+D,SAAhCJ,GAa1B,IAZH6B,EAAS7B,EAAT6B,UACgB+M,EAAc5O,EAA9B6O,eACAqB,EAAUlQ,EAAVkQ,WACAC,EAAUnQ,EAAVmQ,WACApI,EAAI/H,EAAJ+H,KACA+G,EAAS9O,EAAT8O,UACAC,EAAM/O,EAAN+O,OACAxF,EAAQvJ,EAARuJ,SAAQ6G,EAAApQ,EACRqQ,gBAAAA,OAAkB,IAAHD,EAAG,MAAKA,EAAAE,EAAAtQ,EACvB+J,MAAAA,OAAQ,IAAHuG,EAAG,GAAEA,EAAAC,EAAAvQ,EACVwQ,OAAAA,OAAM,IAAAD,EAAG,WAAQ,EAAAA,EACdzO,EAAIC,EAAA/B,EAAAgC,GAEPyO,EAAgCC,EAAQA,SAACL,GAAlCzI,EAAQ6I,EAAA,GAAEE,EAAWF,EAAA,GACtBjH,EAAa7G,EAAAA,QAAG,uBAAwBd,GACxC+O,EAAe7B,EAAOnH,GA0B5B,OACEhF,EACE,QAAAC,cAAA,MAAA,CAAAhB,UAAW2H,EACXqH,SAAU,EACVL,OA5BiB,SAACnB,GACpBA,EAAEyB,UACF,IAAMC,EAAgB1B,EAAE0B,cACxBC,YAAW,WACLD,IAAkBA,EAAcrL,SAASmB,SAASoK,gBACpDT,EAAOnB,EAEV,GAAE,IAsBY,cAAoBtH,oBAAAA,GAEjCnF,EAAA,QAAAC,cAACE,EAAK,CAACC,MAAM,cACXJ,EAAC,QAAAC,cAAAwG,GACCzB,SAAUA,EACV0B,QAASwF,EACTvF,SAAU,SAAC2H,GAAI,OAzBM,SAACtJ,GAC5B+I,EAAY/I,GAwBcuJ,CAAqBD,EAAK,IAEhDtO,EAAC,QAAAC,cAAA+L,EAAc9L,EAAA,CACbiH,MAAOA,EACP8B,QAASsE,EACTnB,SAAUkB,EACVnI,KAAMA,EACNlG,UAAU,gBACV0H,SAAU,SAAC8F,GAAgC,OA7B3BvF,EA8BCuF,EAAE1J,OAAOmE,MA7B1BwF,EAAU8B,OAAOC,OAAO,CAAE,EAAEtC,GACpB,KAAVjF,GAAiBA,EAGnBwF,EAAQ1H,GAAYkC,SAFbwF,EAAQ1H,QAIjB2B,EAAS+F,GAPY,IAACxF,EAChBwF,CA6BgC,EAEhCxF,MAAO8G,GAAgB,IACnB9O,KAKd,+BClFmE,SAAlC9B,GAM5B,IALH+J,EAAK/J,EAAL+J,MACAuH,EAAatR,EAAbsR,cACUC,EAAYvR,EAAtBuJ,SACAiI,EAAsBxR,EAAtBwR,uBACG1P,EAAIC,EAAA/B,EAAAgC,GAEPyO,EACEC,EAAAA,WADKe,EAAoBhB,EAAA,GAAEiB,EAAuBjB,EAAA,GAUpD,OAPA/J,EAAAA,WAAU,WACRgL,EACEJ,EAAcxL,MAAK,SAAC6L,GAAG,OAAKA,EAAIC,iBAAmBJ,CAAsB,IAG7E,GAAG,CAACA,IAGF5O,wBAACiP,EAAkBA,mBAAA/O,EAAA,CACjBiH,MAAOA,EACP2D,MAAK,GAAAc,OACA8C,EACAQ,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAEE,YAAYC,cAAcF,EAAEC,YAAa,KAAK,IAC/D3O,KAAI,SAAC6O,GACJ,MAAO,CACLrI,MAAOqI,EAAaP,eACpB7H,MAAOoI,EAAaF,YAExB,KAEJG,aACEX,EACI,CACE3H,MAAO2H,EAAqBG,eAC5B7H,MAAO0H,EAAqBQ,aAE9B,KAEN1I,SAAU,SAACI,GACLA,GACF4H,EAAa5H,EAAcG,MAE9B,EACDuI,WAAW,GACPvQ,GAGV,6BC9CyB9B,GAAwC,IAA3B+N,EAAkB/N,EAAlB+N,mBAG9BuE,EAFkBrE,eADUjO,EAARkO,UAIvB5K,KAAI,SAAC6K,GAAI,MAAM,CAAEpJ,MAAOgJ,EAAmBI,GAAOA,KAAAA,EAAM,IACxDC,QAAO,SAAAX,GAAQ,YAAiBnG,IAAjBmG,EAAL1I,KAA+B,IACzCzB,KAAI,SAAAkK,GAAQ,OAAAA,EAALzI,KAAkB,IACzBwN,UACAC,KAAK,OAER,OACE5P,wBAAC6P,EAAMA,OAAA,KACL7P,EAAA,QAAAC,cAAA,QAAA,KAAQyP,EAAmC,oBAGjD,gBCtBqC,SAAnBtS,GAKb,IAFH0S,EAAY1S,EAAZ0S,aACAC,EAAW3S,EAAX2S,YAEMC,EAAYC,KAAKC,KALT9S,EAAd+S,eACQ/S,EAARgT,UAKA,OACEpQ,EAAC,QAAAC,cAAAoQ,aACC,CAAAL,UAAWA,EACXD,YAAaA,EACbD,aAAc,SAACQ,GACbR,EAAaQ,EACf,GAGN,0BCAyD,SAA7BlT,GAMvB,IALHI,EAAQJ,EAARI,SAAQ+S,EAAAnT,EACRoL,SAAAA,OAAW,IAAH+H,EAAG,KAAIA,EACfC,EAAWpT,EAAXoT,YAAWC,EAAArT,EACXsT,MAAAA,OAAQ,IAAHD,EAAG,GAAEA,EAAAE,EAAAvT,EACVwT,IAEMC,EAAeC,EAAAA,uBAFf,IAAHH,EAAG,GAAEA,EAEoCH,GAEtCO,EAAiBC,EAAAA,oBAAoBN,EAAOF,GAGlD,OAAOxQ,EAAA,QAAAC,cAAAD,UAAAS,SAAA,KADSoQ,GAAgBE,EACZvT,EAAWgL,EACjC,4BCpB6D,SAA/BpL,GAIzB,IAHHI,EAAQJ,EAARI,SACAyT,EAAqB7T,EAArB6T,sBACG/R,EAAIC,EAAA/B,EAAAgC,IAEP0H,EAAAA,kBACEoK,EAAAA,2BAA8BxM,EAAS,wDAIzC,IAAMyM,EAAUC,cACd,SAAAvG,GAAA,IAAoBwG,EAAYxG,EAAZwG,aAAY,OAAdxG,EAAfyG,gBACehG,WAAa+F,EAAa/F,UAC1C2F,EAAsBI,MAG1B,OACErR,UAACC,cAAA2J,GAAY1J,EAAA,CACXkK,UAAW,WACa,YAAlB+G,EAAQzJ,OACVyJ,EAAQI,OAEX,EACD/N,KAAwB,YAAlB2N,EAAQzJ,MACduC,UAAW,WACa,YAAlBkH,EAAQzJ,OACVyJ,EAAQK,SAEZ,GACItS,GAEH1B,EAGP,sCCzCiD,SAAzBJ,GAMnB,IAAAqU,EAAArU,EALHsU,OAAchE,EAAAtQ,EACd+J,MAAAA,OAAQ,IAAHuG,EAAG,GAAEA,EAEViE,EAAUvU,EAAVuU,WACAC,EAAMxU,EAANwU,OAEMC,EAAmB9R,EAAE,QAAC,2BAA4B,CACtD2R,YAPO,IAAHD,GAAQA,EAQZK,WANgB1U,EAAlB2U,qBAQMC,EAAwBjS,EAAE,QAAC,mBAAoB,CACnD6R,OAAAA,IAEF,OACE5R,EAAA,QAAAC,cAAA,MAAA,CAAKhB,UAAW+S,GACbL,GAAc3R,EAAAA,QAAAC,cAAA,MAAA,CAAKhB,UAAW4S,IAC/B7R,EAAA,QAAAC,cAAA,MAAA,KAAMkH,GAGZ,eCqBoB,SAAH/J,GASD,IAAAC,EAAAD,EARdE,GAAI2U,OAAY,IAAH5U,EAAG,OAAMA,EACtBG,EAAQJ,EAARI,SACA0U,EAAQ9U,EAAR8U,SACApT,EAAK1B,EAAL0B,MACAqT,EAAU/U,EAAV+U,WACAC,EAAUhV,EAAVgV,WACAnT,EAAS7B,EAAT6B,UACGC,EAAIC,EAAA/B,EAAAgC,IAEDpC,EAAU,GAEhBkV,GAAYlV,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,iBAAkBuV,IAC7DC,GAAcnV,EAAQC,KAAI4C,MAAZ7C,EAAgBL,EAAe,mBAAoBwV,IACjEC,GAAcpV,EAAQC,KAAK,mBAAqBmV,GAEhD,IAAMtS,EAAYC,EAAAA,QAAG/C,EAASiC,GAE9B,OACEe,wBAAC7C,EAAG+C,EAAA,CAAC5C,GAAI2U,EAAWnT,MAAOA,EAAOG,UAAWa,GAAeZ,GACzD1B,EAGP,mBCpE2C,SAAtBJ,GAAA,IACnBI,EAAQJ,EAARI,SACAyB,EAAS7B,EAAT6B,UACGC,EAAIC,EAAA/B,EAAAgC,GAAA,OAEPY,UAACC,cAAAoS,EAAMA,OAAAnS,EAAA,CAAC+I,QAAQ,WAAc/J,EAAI,CAAED,UAAWc,EAAAA,QAAG,eAAgBd,KAC/DzB,EACM,mBCmBgC,SAAtBJ,GAahB,IAXH8M,EAAQ9M,EAAR8M,SACA9D,EAAQhJ,EAARgJ,SACAnB,EAAgB7H,EAAhB6H,iBACA1B,EAAQnG,EAARmG,SACAyB,EAAQ5H,EAAR4H,SACAnD,EAAWzE,EAAXyE,YACAyQ,EAAelV,EAAfkV,gBACAC,EAAiBnV,EAAjBmV,kBACAC,EAAsBpV,EAAtBoV,uBACAzM,EAAqB3I,EAArB2I,sBAAqB0M,EAAArV,EACrBmJ,qBAAAA,OAAoB,IAAAkM,EAAG,WAAK,EAAGA,EAEzBC,EAAmB3S,EAAE,QAAC,CAAC,gCAbpB3C,EAAT6B,YAcA4O,EAAwBC,EAAQA,UAAC,GAApB5I,EAAO2I,EAAA,GAEpB,OACE7N,EAAA,QAAAC,cAAA,MAAA,CAAK0S,GAAG,iBACN3S,EAAC,QAAAC,cAAAkD,GACCK,KALKqK,EAAA,GAMLpK,aAAcyB,EACdjG,UAAWyT,EACXnP,SAAUA,EACV1B,YAAaA,GAEb7B,EAAK,QAAAC,cAAA,MAAA,CAAA0S,GAAG,qBACN3S,EAAA,QAAAC,cAAC8E,EACC,CAAAI,KAAM+E,EAAS0I,eACf5N,SAAUA,EACVC,iBAAkBA,EAClBC,QAASA,IAEVoN,GAAmBpI,EAAS2I,YAC3B7S,wBAAC0F,EAAe,CAACvD,MAAO+H,EAAS2I,WAAY3N,QAASA,IAEvDqN,GAAqBrI,EAAS4I,WAC7B9S,EAAA,QAAAC,cAAC6F,EAAY,CACXX,KAAM+E,EAAS4I,UACf5N,QAASA,EACTa,sBAAuBA,IAG1ByM,GAA0BtI,EAAS6I,gBAClC/S,EAAA,QAAAC,cAACqG,EAAsB,CACrBnB,KAAM+E,EAAS6I,eACf7N,QAASA,EACTqB,qBAAsBA,IAG1BvG,EAAAA,QAACC,cAAAkG,GACChB,KAAM+E,EAAS8I,OACf9N,QAASA,EACTkB,SAAUA,MAMtB,iJCtFM,SACJ6M,EACA3P,EACAV,YAAAA,IAAAA,EAA+BzB,QAE/B,IAAM+R,EAAetP,EAAAA,SAErBE,EAAAA,WAAU,WACRoP,EAAalP,QAAUV,CACzB,GAAG,CAACA,IAEJQ,EAAAA,WAAU,WAER,GADoBlB,GAAWA,EAAQsB,iBACvC,CAEA,IAAMiP,EAAiB,SAACtQ,GAAQ,OACV,MAApBqQ,EAAalP,aAAO,EAApBkP,EAAalP,QAAUnB,IAIzB,OAFAD,EAAQsB,iBAAiB+O,EAAWE,GAE7B,WACLvQ,EAAQuB,oBAAoB8O,EAAWE,GARvB,CAUpB,GAAG,CAACF,EAAWrQ,GACjB"}
|
package/dist/common.esm.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { Children, useState, useEffect, useRef, Component } from 'react';
|
|
2
2
|
import cx from 'classnames';
|
|
3
3
|
import { Link as Link$1, Heading6, Paragraph } from '@entur/typography';
|
|
4
|
-
import { UserIcon, DownArrowIcon, NorwayIcon, UKIcon, ChannelsIcon, LogOutIcon } from '@entur/icons';
|
|
4
|
+
import { UserIcon, DownArrowIcon, NorwayIcon, UKIcon, ChannelsIcon, LogOutIcon, CookieIcon } from '@entur/icons';
|
|
5
5
|
import { SecondaryButton, Button, PrimaryButton, ButtonGroup } from '@entur/button';
|
|
6
6
|
import { useNavigate, Link as Link$2, useInRouterContext, useBlocker } from 'react-router-dom';
|
|
7
7
|
import { SearchableDropdown } from '@entur/dropdown';
|
|
@@ -489,6 +489,24 @@ var LogOutMenuItem = function LogOutMenuItem(_ref) {
|
|
|
489
489
|
})), name);
|
|
490
490
|
};
|
|
491
491
|
|
|
492
|
+
var CookieSettingsMenuItem = function CookieSettingsMenuItem(_ref) {
|
|
493
|
+
var name = _ref.name,
|
|
494
|
+
setOpen = _ref.setOpen,
|
|
495
|
+
onCookieSettingsOpen = _ref.onCookieSettingsOpen;
|
|
496
|
+
return React.createElement(CustomOverflowMenuItem, {
|
|
497
|
+
onClick: function onClick() {
|
|
498
|
+
onCookieSettingsOpen();
|
|
499
|
+
setOpen(false);
|
|
500
|
+
},
|
|
501
|
+
className: "eps-overflow-menu__item"
|
|
502
|
+
}, React.createElement("span", {
|
|
503
|
+
"aria-hidden": true
|
|
504
|
+
}, React.createElement(CookieIcon, {
|
|
505
|
+
size: "1rem",
|
|
506
|
+
inline: true
|
|
507
|
+
})), name);
|
|
508
|
+
};
|
|
509
|
+
|
|
492
510
|
var UserMenu = function UserMenu(_ref) {
|
|
493
511
|
var className = _ref.className,
|
|
494
512
|
messages = _ref.messages,
|
|
@@ -499,7 +517,10 @@ var UserMenu = function UserMenu(_ref) {
|
|
|
499
517
|
environment = _ref.environment,
|
|
500
518
|
showVersionItem = _ref.showVersionItem,
|
|
501
519
|
showMyProfileItem = _ref.showMyProfileItem,
|
|
502
|
-
|
|
520
|
+
showCookieSettingsItem = _ref.showCookieSettingsItem,
|
|
521
|
+
onNavigateToMyProfile = _ref.onNavigateToMyProfile,
|
|
522
|
+
_ref$onCookieSettings = _ref.onCookieSettingsOpen,
|
|
523
|
+
onCookieSettingsOpen = _ref$onCookieSettings === void 0 ? function () {} : _ref$onCookieSettings;
|
|
503
524
|
var triggerClassList = cx(['eps-user-menu__trigger-button', className]);
|
|
504
525
|
var _useState = useState(false),
|
|
505
526
|
open = _useState[0],
|
|
@@ -526,6 +547,10 @@ var UserMenu = function UserMenu(_ref) {
|
|
|
526
547
|
name: messages.myProfile,
|
|
527
548
|
setOpen: setOpen,
|
|
528
549
|
onNavigateToMyProfile: onNavigateToMyProfile
|
|
550
|
+
}), showCookieSettingsItem && messages.cookieSettings && React.createElement(CookieSettingsMenuItem, {
|
|
551
|
+
name: messages.cookieSettings,
|
|
552
|
+
setOpen: setOpen,
|
|
553
|
+
onCookieSettingsOpen: onCookieSettingsOpen
|
|
529
554
|
}), React.createElement(LogOutMenuItem, {
|
|
530
555
|
name: messages.logout,
|
|
531
556
|
setOpen: setOpen,
|