@ably/ui 16.0.4 → 16.1.0
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/README.md +5 -7
- package/core/DropdownMenu.js +1 -1
- package/core/DropdownMenu.js.map +1 -1
- package/core/Flyout.js +1 -1
- package/core/Flyout.js.map +1 -1
- package/core/Footer.js +1 -1
- package/core/Footer.js.map +1 -1
- package/core/Header/HeaderLinks.js +1 -1
- package/core/Header/HeaderLinks.js.map +1 -1
- package/core/Meganav/MeganavPanel.js +1 -1
- package/core/Meganav/MeganavPanel.js.map +1 -1
- package/core/SegmentedControl.js +1 -1
- package/core/SegmentedControl.js.map +1 -1
- package/core/Status.js +1 -1
- package/core/Status.js.map +1 -1
- package/core/TabMenu.js +1 -1
- package/core/TabMenu.js.map +1 -1
- package/core/remote-blogs-posts.js.map +1 -1
- package/core/remote-session-data.js.map +1 -1
- package/core/styles/buttons.css +4 -4
- package/core/styles/legacy-buttons.css +5 -5
- package/core/styles/properties.css +4 -8
- package/core/styles/text.css +12 -28
- package/index.d.ts +0 -405
- package/package.json +2 -2
- package/tailwind.config.js +4 -8
- package/core/LegacyFooter/LegacyFooter.js +0 -2
- package/core/LegacyFooter/LegacyFooter.js.map +0 -1
- package/core/LegacyFooter/component.css +0 -33
- package/core/LegacyMeganav/LegacyMeganav.js +0 -2
- package/core/LegacyMeganav/LegacyMeganav.js.map +0 -1
- package/core/LegacyMeganav/MeganavBlogPostsList/component.js +0 -2
- package/core/LegacyMeganav/MeganavBlogPostsList/component.js.map +0 -1
- package/core/LegacyMeganav/MeganavBlogPostsList.js +0 -2
- package/core/LegacyMeganav/MeganavBlogPostsList.js.map +0 -1
- package/core/LegacyMeganav/MeganavContentCompany.js +0 -2
- package/core/LegacyMeganav/MeganavContentCompany.js.map +0 -1
- package/core/LegacyMeganav/MeganavContentDevelopers.js +0 -2
- package/core/LegacyMeganav/MeganavContentDevelopers.js.map +0 -1
- package/core/LegacyMeganav/MeganavContentProducts.js +0 -2
- package/core/LegacyMeganav/MeganavContentProducts.js.map +0 -1
- package/core/LegacyMeganav/MeganavContentUseCases.js +0 -2
- package/core/LegacyMeganav/MeganavContentUseCases.js.map +0 -1
- package/core/LegacyMeganav/MeganavControl/component.js +0 -2
- package/core/LegacyMeganav/MeganavControl/component.js.map +0 -1
- package/core/LegacyMeganav/MeganavControl.js +0 -2
- package/core/LegacyMeganav/MeganavControl.js.map +0 -1
- package/core/LegacyMeganav/MeganavControlMobileDropdown/component.js +0 -2
- package/core/LegacyMeganav/MeganavControlMobileDropdown/component.js.map +0 -1
- package/core/LegacyMeganav/MeganavControlMobileDropdown.js +0 -2
- package/core/LegacyMeganav/MeganavControlMobileDropdown.js.map +0 -1
- package/core/LegacyMeganav/MeganavControlMobilePanelClose/component.js +0 -2
- package/core/LegacyMeganav/MeganavControlMobilePanelClose/component.js.map +0 -1
- package/core/LegacyMeganav/MeganavControlMobilePanelClose.js +0 -2
- package/core/LegacyMeganav/MeganavControlMobilePanelClose.js.map +0 -1
- package/core/LegacyMeganav/MeganavControlMobilePanelOpen/component.js +0 -2
- package/core/LegacyMeganav/MeganavControlMobilePanelOpen/component.js.map +0 -1
- package/core/LegacyMeganav/MeganavControlMobilePanelOpen.js +0 -2
- package/core/LegacyMeganav/MeganavControlMobilePanelOpen.js.map +0 -1
- package/core/LegacyMeganav/MeganavItemsDesktop.js +0 -2
- package/core/LegacyMeganav/MeganavItemsDesktop.js.map +0 -1
- package/core/LegacyMeganav/MeganavItemsMobile.js +0 -2
- package/core/LegacyMeganav/MeganavItemsMobile.js.map +0 -1
- package/core/LegacyMeganav/MeganavItemsSignedIn.js +0 -2
- package/core/LegacyMeganav/MeganavItemsSignedIn.js.map +0 -1
- package/core/LegacyMeganav/MeganavSearch.js +0 -2
- package/core/LegacyMeganav/MeganavSearch.js.map +0 -1
- package/core/LegacyMeganav/MeganavSearchAutocomplete/component.js +0 -2
- package/core/LegacyMeganav/MeganavSearchAutocomplete/component.js.map +0 -1
- package/core/LegacyMeganav/MeganavSearchAutocomplete.js +0 -2
- package/core/LegacyMeganav/MeganavSearchAutocomplete.js.map +0 -1
- package/core/LegacyMeganav/MeganavSearchPanel.js +0 -2
- package/core/LegacyMeganav/MeganavSearchPanel.js.map +0 -1
- package/core/LegacyMeganav/MeganavSearchSuggestions/component.js +0 -2
- package/core/LegacyMeganav/MeganavSearchSuggestions/component.js.map +0 -1
- package/core/LegacyMeganav/MeganavSearchSuggestions.js +0 -2
- package/core/LegacyMeganav/MeganavSearchSuggestions.js.map +0 -1
- package/core/LegacyMeganav/SignOutLink.js +0 -2
- package/core/LegacyMeganav/SignOutLink.js.map +0 -1
- package/core/LegacyMeganav/component.css +0 -114
- package/core/LegacyMeganav/component.js +0 -2
- package/core/LegacyMeganav/component.js.map +0 -1
- package/core/LegacyMeganav/component.json +0 -37
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/LegacyMeganav/MeganavItemsMobile.tsx"],"sourcesContent":["import React from \"react\";\n\nimport SignOutLink from \"./SignOutLink\";\nimport MeganavSearchSuggestions from \"./MeganavSearchSuggestions\";\nimport Icon from \"../Icon\";\nimport MeganavData from \"./component.json\";\nimport MeganavControlMobileDropdown from \"./MeganavControlMobileDropdown\";\nimport MeganavControlMobilePanelClose from \"./MeganavControlMobilePanelClose\";\nimport MeganavControlMobilePanelOpen from \"./MeganavControlMobilePanelOpen\";\nimport MeganavSearchAutocomplete from \"./MeganavSearchAutocomplete\";\nimport {\n AbsUrl,\n MeganavPanels,\n MeganavPaths,\n MeganavSessionState,\n MeganavTheme,\n} from \"./LegacyMeganav\";\n\ntype MeganavItemsMobileProps = {\n panels: MeganavPanels;\n paths?: MeganavPaths;\n sessionState?: MeganavSessionState;\n theme: MeganavTheme;\n loginLink: string;\n absUrl: AbsUrl;\n statusUrl: string;\n searchDataId?: string;\n};\n\nconst MeganavItemsMobile = ({\n panels,\n paths,\n sessionState,\n theme,\n loginLink,\n absUrl,\n statusUrl,\n searchDataId,\n}: MeganavItemsMobileProps) => {\n const classNames = `ui-meganav-link ${theme.textColor}`;\n\n return (\n <ul className=\"flex md:hidden items-center\" data-id=\"meganav-items-mobile\">\n <li>\n {sessionState?.signedIn && sessionState?.logOut ? (\n <SignOutLink absUrl={absUrl} {...sessionState.logOut}>\n {({ text, href, onClick }) => (\n <a\n onClick={onClick}\n href={absUrl(href)}\n className={classNames}\n data-id=\"meganav-link\"\n >\n {text}\n </a>\n )}\n </SignOutLink>\n ) : (\n <a\n href={absUrl(loginLink)}\n className={classNames}\n data-id=\"meganav-link\"\n >\n Login\n </a>\n )}\n </li>\n\n <li className=\"ui-meganav-item\">\n <MeganavControlMobileDropdown theme={theme} />\n\n <div\n className=\"ui-meganav-mobile-dropdown invisible\"\n id=\"meganav-mobile-dropdown\"\n data-id=\"meganav-mobile-dropdown\"\n >\n <div className=\"pt-24 pb-16 ui-grid-px bg-white\">\n <form className=\"mb-16\" action={absUrl(\"/search\")} method=\"get\">\n <div className=\"relative w-full\">\n <Icon\n name=\"icon-gui-magnifying-glass-outline\"\n color=\"text-cool-black\"\n size=\"1.5rem\"\n additionalCSS=\"absolute top-12 left-16 hover:text-gui-hover\"\n />\n <button\n type=\"button\"\n className=\"absolute top-12 right-16 p-0 focus:outline-none focus-visible:outline-gui-focus m-0 md:hidden invisible\"\n data-id=\"meganav-search-input-clear\"\n >\n <Icon\n name=\"icon-gui-x-circle-solid\"\n color=\"text-dark-grey\"\n size=\"1.5rem\"\n additionalCSS=\"\"\n />\n </button>\n <input\n type=\"search\"\n name=\"q\"\n className=\"ui-input px-48 h-48\"\n style={{ maxWidth: \"none\" }}\n placeholder=\"Search\"\n autoComplete=\"off\"\n data-id={searchDataId ?? \"meganav-mobile-search-input\"}\n />\n\n <MeganavSearchAutocomplete />\n </div>\n </form>\n\n <div\n className=\"max-h-0 overflow-hidden transition-all\"\n data-id=\"meganav-mobile-search-suggestions\"\n >\n <MeganavSearchSuggestions\n absUrl={absUrl}\n displaySupportLink={false}\n />\n </div>\n\n <ul className=\"mb-16\" data-id=\"meganav-mobile-panel-controls\">\n {MeganavData.panels.map((panel) => {\n const PanelComponent = panels[panel.component];\n const displayHr = [\n \"company-panel\",\n \"developers-panel\",\n ].includes(panel.id);\n\n return (\n <li\n className=\"ui-meganav-mobile-item\"\n key={`${panel.id}-mobile`}\n >\n <MeganavControlMobilePanelOpen\n ariaControls={`${panel.id}-mobile`}\n >\n {panel.label}\n </MeganavControlMobilePanelOpen>\n\n <div\n className=\"ui-meganav-panel-mobile hidden\"\n id={`${panel.id}-mobile`}\n data-scroll-lock-scrollable\n >\n <MeganavControlMobilePanelClose\n ariaControls={`${panel.id}-mobile`}\n displayHr={displayHr}\n />\n <PanelComponent\n paths={paths}\n absUrl={absUrl}\n statusUrl={statusUrl}\n />\n </div>\n </li>\n );\n })}\n <li>\n <a href={absUrl(\"/pricing\")} className=\"ui-meganav-mobile-link\">\n Pricing\n </a>\n </li>\n </ul>\n\n <hr className=\"ui-meganav-hr mb-20\" />\n\n <div className=\"flex justify-between items-center mb-16\">\n <a\n href={absUrl(\"/contact\")}\n className=\"text-menu2 font-medium block ml-0 mr-8 lg:mx-12 p-0 hover:text-gui-hover focus:text-gui-focus focus:outline-none\"\n >\n Contact us\n </a>\n {sessionState?.signedIn && sessionState?.account ? (\n <a\n href={absUrl(sessionState.account.links.dashboard.href)}\n className=\"ui-btn-secondary\"\n >\n Dashboard\n </a>\n ) : (\n <a href={absUrl(\"/sign-up\")} className=\"ui-btn\">\n Sign up free\n </a>\n )}\n </div>\n </div>\n </div>\n </li>\n </ul>\n );\n};\n\nexport default React.memo(MeganavItemsMobile, (oldState, newState) => {\n const { paths: pathsOld, theme: themeOld } = oldState;\n const { paths: pathsNew, theme: themeNew } = newState;\n\n return (\n pathsOld === pathsNew &&\n themeOld === themeNew &&\n Object.keys(newState.sessionState || {}).length === 0\n );\n});\n"],"names":["React","SignOutLink","MeganavSearchSuggestions","Icon","MeganavData","MeganavControlMobileDropdown","MeganavControlMobilePanelClose","MeganavControlMobilePanelOpen","MeganavSearchAutocomplete","MeganavItemsMobile","panels","paths","sessionState","theme","loginLink","absUrl","statusUrl","searchDataId","classNames","textColor","ul","className","data-id","li","signedIn","logOut","text","href","onClick","a","div","id","form","action","method","name","color","size","additionalCSS","button","type","input","style","maxWidth","placeholder","autoComplete","displaySupportLink","map","panel","PanelComponent","component","displayHr","includes","key","ariaControls","label","data-scroll-lock-scrollable","hr","account","links","dashboard","memo","oldState","newState","pathsOld","themeOld","pathsNew","themeNew","Object","keys","length"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import React from"react";import MeganavSearch from"./MeganavSearch";const truncate=(string,length)=>{return string?.length&&string.length>length?`${string.slice(0,length-1)}…`:string};const MeganavItemsSignedIn=({sessionState,absUrl,searchDataId})=>{const accountName=truncate(sessionState.accountName,20);return React.createElement("ul",{className:"hidden md:flex items-center"},React.createElement("li",{className:"ui-meganav-item relative"},React.createElement("span",{className:"ui-meganav-link h-64 hover:text-cool-black mr-0"},accountName)),React.createElement("li",null,React.createElement(MeganavSearch,{absUrl:absUrl,dataId:searchDataId})),sessionState.account&&React.createElement("li",null,React.createElement("a",{href:absUrl(sessionState.account.links.dashboard.href),className:"ui-btn-secondary p-btn-small"},"Dashboard")))};export default MeganavItemsSignedIn;
|
|
2
|
-
//# sourceMappingURL=MeganavItemsSignedIn.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/LegacyMeganav/MeganavItemsSignedIn.tsx"],"sourcesContent":["import React from \"react\";\nimport MeganavSearch from \"./MeganavSearch\";\nimport { AbsUrl, MeganavSessionState, MeganavTheme } from \"./LegacyMeganav\";\n\ntype MeganavItemsSignedIn = {\n sessionState: MeganavSessionState;\n theme: MeganavTheme;\n absUrl: AbsUrl;\n searchDataId?: string;\n};\n\nconst truncate = (string: string, length: number) => {\n return string?.length && string.length > length\n ? `${string.slice(0, length - 1)}…`\n : string;\n};\n\nconst MeganavItemsSignedIn = ({\n sessionState,\n absUrl,\n searchDataId,\n}: MeganavItemsSignedIn) => {\n const accountName = truncate(sessionState.accountName, 20);\n\n return (\n <ul className=\"hidden md:flex items-center\">\n <li className=\"ui-meganav-item relative\">\n <span className=\"ui-meganav-link h-64 hover:text-cool-black mr-0\">\n {accountName}\n </span>\n </li>\n\n <li>\n <MeganavSearch absUrl={absUrl} dataId={searchDataId} />\n </li>\n\n {sessionState.account && (\n <li>\n <a\n href={absUrl(sessionState.account.links.dashboard.href)}\n className=\"ui-btn-secondary p-btn-small\"\n >\n Dashboard\n </a>\n </li>\n )}\n </ul>\n );\n};\n\nexport default MeganavItemsSignedIn;\n"],"names":["React","MeganavSearch","truncate","string","length","slice","MeganavItemsSignedIn","sessionState","absUrl","searchDataId","accountName","ul","className","li","span","dataId","account","a","href","links","dashboard"],"mappings":"AAAA,OAAOA,UAAW,OAAQ,AAC1B,QAAOC,kBAAmB,iBAAkB,CAU5C,MAAMC,SAAW,CAACC,OAAgBC,UAChC,OAAOD,QAAQC,QAAUD,OAAOC,MAAM,CAAGA,OACrC,CAAC,EAAED,OAAOE,KAAK,CAAC,EAAGD,OAAS,GAAG,CAAC,CAAC,CACjCD,MACN,EAEA,MAAMG,qBAAuB,CAAC,CAC5BC,YAAY,CACZC,MAAM,CACNC,YAAY,CACS,IACrB,MAAMC,YAAcR,SAASK,aAAaG,WAAW,CAAE,IAEvD,OACE,oBAACC,MAAGC,UAAU,+BACZ,oBAACC,MAAGD,UAAU,4BACZ,oBAACE,QAAKF,UAAU,mDACbF,cAIL,oBAACG,UACC,oBAACZ,eAAcO,OAAQA,OAAQO,OAAQN,gBAGxCF,aAAaS,OAAO,EACnB,oBAACH,UACC,oBAACI,KACCC,KAAMV,OAAOD,aAAaS,OAAO,CAACG,KAAK,CAACC,SAAS,CAACF,IAAI,EACtDN,UAAU,gCACX,cAOX,CAEA,gBAAeN,oBAAqB"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import React from"react";import Icon from"../Icon";import MeganavSearchPanel from"./MeganavSearchPanel";const MeganavSearch=({absUrl,dataId="meganav-control"})=>React.createElement(React.Fragment,null,React.createElement("button",{type:"button","data-id":dataId,"data-control":"search",className:"h-64 w-24 px-24 pr-48 py-20 group focus:outline-none","aria-expanded":"false","aria-controls":"panel-search","aria-label":`Show Search Panel`},React.createElement(Icon,{name:"icon-gui-magnifying-glass-outline",color:"text-cool-black",size:"1.5rem",additionalCSS:"group-hover:text-gui-hover group-focus:text-gui-focus"})),React.createElement("div",{className:"ui-meganav-panel invisible",id:"panel-search","data-id":"meganav-panel"},React.createElement(MeganavSearchPanel,{absUrl:absUrl})));export default MeganavSearch;
|
|
2
|
-
//# sourceMappingURL=MeganavSearch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/LegacyMeganav/MeganavSearch.tsx"],"sourcesContent":["import React from \"react\";\n\nimport Icon from \"../Icon\";\nimport MeganavSearchPanel from \"./MeganavSearchPanel\";\nimport { AbsUrl } from \"./LegacyMeganav\";\n\nconst MeganavSearch = ({\n absUrl,\n dataId = \"meganav-control\",\n}: {\n absUrl: AbsUrl;\n dataId?: string;\n}) => (\n <>\n <button\n type=\"button\"\n data-id={dataId}\n data-control=\"search\"\n className=\"h-64 w-24 px-24 pr-48 py-20 group focus:outline-none\"\n aria-expanded=\"false\"\n aria-controls=\"panel-search\"\n aria-label={`Show Search Panel`}\n >\n <Icon\n name=\"icon-gui-magnifying-glass-outline\"\n color=\"text-cool-black\"\n size=\"1.5rem\"\n additionalCSS=\"group-hover:text-gui-hover group-focus:text-gui-focus\"\n />\n </button>\n\n <div\n className=\"ui-meganav-panel invisible\"\n id=\"panel-search\"\n data-id=\"meganav-panel\"\n >\n <MeganavSearchPanel absUrl={absUrl} />\n </div>\n </>\n);\n\nexport default MeganavSearch;\n"],"names":["React","Icon","MeganavSearchPanel","MeganavSearch","absUrl","dataId","button","type","data-id","data-control","className","aria-expanded","aria-controls","aria-label","name","color","size","additionalCSS","div","id"],"mappings":"AAAA,OAAOA,UAAW,OAAQ,AAE1B,QAAOC,SAAU,SAAU,AAC3B,QAAOC,uBAAwB,sBAAuB,CAGtD,MAAMC,cAAgB,CAAC,CACrBC,MAAM,CACNC,OAAS,iBAAiB,CAI3B,GACC,wCACE,oBAACC,UACCC,KAAK,SACLC,UAASH,OACTI,eAAa,SACbC,UAAU,uDACVC,gBAAc,QACdC,gBAAc,eACdC,aAAY,CAAC,iBAAiB,CAAC,EAE/B,oBAACZ,MACCa,KAAK,oCACLC,MAAM,kBACNC,KAAK,SACLC,cAAc,2DAIlB,oBAACC,OACCR,UAAU,6BACVS,GAAG,eACHX,UAAQ,iBAER,oBAACN,oBAAmBE,OAAQA,UAKlC,gBAAeD,aAAc"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{queryId}from"../../dom-query";import AddSearchClient from"addsearch-js-client";const init=({input,container,listContainer,clear,client})=>{client.setAnalyticsTag("Meganav autocomplete");client.setThrottleTime(400);const clearResults=()=>{container.classList.add("hidden");listContainer.innerHTML=""};const toggleClearBtn=query=>{if((query||"").length>0&&clear){clear.classList.remove("invisible")}else if(clear){clear.classList.add("invisible")}};const markQueryInSuggestion=(suggestionValue,query)=>{return suggestionValue.replace(query.toLowerCase(),`<span class="font-light">${query}</span>`)};const navigateToUrl=q=>window.location=`/search?q=${q}`;const focusNext=index=>{const nextSuggestion=listContainer.querySelector(`[data-suggestion-index="${index+1}"]`);if(!nextSuggestion)return;nextSuggestion.focus()};const focusPrevious=index=>{const previousIndex=index-1;const previousSuggestion=listContainer.querySelector(`[data-suggestion-index="${previousIndex}"]`);if(!previousSuggestion)return;previousSuggestion.focus()};const renderResults=query=>(results={})=>{toggleClearBtn(query);if(!Array.isArray(results.suggestions)){clearResults();return}if(results.suggestions.length===0){clearResults();return}const items=results.suggestions.map((suggestion,index)=>{const li=document.createElement("li");const button=document.createElement("button");button.type="button";button.classList.add("ui-text-menu2","font-medium","p-8","w-full","text-left","rounded","hover:text-gui-hover","focus:outline-gui-focus","hover:bg-light-grey");button.innerHTML=markQueryInSuggestion(suggestion.value,query);button.dataset.suggestionIndex=index;button.addEventListener("click",()=>{navigateToUrl(suggestion.value)});button.addEventListener("keydown",e=>{const key=e.key;if(key==="ArrowDown"){focusNext(index)}else if(key==="ArrowUp"&&index-1<0){input.focus()}else if(key==="ArrowUp"&&index-1>=0){focusPrevious(index)}else if(key==="Enter"||key==="Space"){navigateToUrl(suggestion.value)}});li.appendChild(button);return li});listContainer.innerHTML="";items.forEach(item=>listContainer.appendChild(item));container.classList.remove("hidden")};const keyupHandler=e=>{const query=e.target.value;const key=e.key;if(key==="ArrowDown"){focusNext(0);return}if(!query){clearResults()}else{client.suggestions(query,renderResults(query))}};let clearHandler;if(clear){clearHandler=()=>{input.value="";clear.classList.add("invisible");clearResults()};clear.addEventListener("click",clearHandler)}input.addEventListener("keyup",keyupHandler);return{teardown:()=>{input.removeEventListener("keyup",keyupHandler);if(clear)clear.removeEventListener("click",clearHandler)},clear:()=>{input.value="";clearResults()}}};export default(apiKey=>{if(!apiKey){console.log(`No AddSearch API key provided, skipping search suggestions.`);return[]}const client=new AddSearchClient(apiKey);return[queryId("meganav-search-input"),queryId("meganav-mobile-search-input")].filter(i=>i).map(input=>{const parent=input.parentNode;const container=queryId("meganav-search-autocomplete-container",parent);const listContainer=queryId("meganav-search-autocomplete-list",parent);const clear=queryId("meganav-search-input-clear",parent);return init({input,container,listContainer,client,clear})})});
|
|
2
|
-
//# sourceMappingURL=component.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/core/LegacyMeganav/MeganavSearchAutocomplete/component.js"],"sourcesContent":["import { queryId } from \"../../dom-query\";\nimport AddSearchClient from \"addsearch-js-client\";\n\nconst init = ({ input, container, listContainer, clear, client }) => {\n client.setAnalyticsTag(\"Meganav autocomplete\");\n client.setThrottleTime(400);\n\n const clearResults = () => {\n container.classList.add(\"hidden\");\n listContainer.innerHTML = \"\";\n };\n\n const toggleClearBtn = (query) => {\n if ((query || \"\").length > 0 && clear) {\n clear.classList.remove(\"invisible\");\n } else if (clear) {\n clear.classList.add(\"invisible\");\n }\n };\n\n const markQueryInSuggestion = (suggestionValue, query) => {\n return suggestionValue.replace(\n query.toLowerCase(),\n `<span class=\"font-light\">${query}</span>`,\n );\n };\n\n const navigateToUrl = (q) => (window.location = `/search?q=${q}`);\n\n const focusNext = (index) => {\n const nextSuggestion = listContainer.querySelector(\n `[data-suggestion-index=\"${index + 1}\"]`,\n );\n if (!nextSuggestion) return;\n nextSuggestion.focus();\n };\n\n const focusPrevious = (index) => {\n const previousIndex = index - 1;\n\n const previousSuggestion = listContainer.querySelector(\n `[data-suggestion-index=\"${previousIndex}\"]`,\n );\n if (!previousSuggestion) return;\n previousSuggestion.focus();\n };\n\n const renderResults =\n (query) =>\n (results = {}) => {\n toggleClearBtn(query);\n\n // Prevent invalid access error when key is invalid\n if (!Array.isArray(results.suggestions)) {\n clearResults();\n return;\n }\n\n // Prevent key error from invalid key\n if (results.suggestions.length === 0) {\n clearResults();\n return;\n }\n\n const items = results.suggestions.map((suggestion, index) => {\n const li = document.createElement(\"li\");\n const button = document.createElement(\"button\");\n button.type = \"button\";\n\n button.classList.add(\n \"ui-text-menu2\",\n \"font-medium\",\n \"p-8\",\n \"w-full\",\n \"text-left\",\n \"rounded\",\n \"hover:text-gui-hover\",\n \"focus:outline-gui-focus\",\n \"hover:bg-light-grey\",\n );\n\n button.innerHTML = markQueryInSuggestion(suggestion.value, query);\n\n button.dataset.suggestionIndex = index;\n\n button.addEventListener(\"click\", () => {\n navigateToUrl(suggestion.value);\n });\n\n button.addEventListener(\"keydown\", (e) => {\n const key = e.key;\n\n if (key === \"ArrowDown\") {\n focusNext(index);\n } else if (key === \"ArrowUp\" && index - 1 < 0) {\n input.focus();\n } else if (key === \"ArrowUp\" && index - 1 >= 0) {\n focusPrevious(index);\n } else if (key === \"Enter\" || key === \"Space\") {\n navigateToUrl(suggestion.value);\n }\n });\n\n li.appendChild(button);\n return li;\n });\n\n listContainer.innerHTML = \"\";\n items.forEach((item) => listContainer.appendChild(item));\n container.classList.remove(\"hidden\");\n };\n\n const keyupHandler = (e) => {\n const query = e.target.value;\n const key = e.key;\n\n if (key === \"ArrowDown\") {\n focusNext(0);\n return;\n }\n\n if (!query) {\n clearResults();\n } else {\n client.suggestions(query, renderResults(query));\n }\n };\n\n let clearHandler;\n if (clear) {\n clearHandler = () => {\n input.value = \"\";\n clear.classList.add(\"invisible\");\n clearResults();\n };\n clear.addEventListener(\"click\", clearHandler);\n }\n\n input.addEventListener(\"keyup\", keyupHandler);\n\n return {\n teardown: () => {\n input.removeEventListener(\"keyup\", keyupHandler);\n if (clear) clear.removeEventListener(\"click\", clearHandler);\n },\n clear: () => {\n input.value = \"\";\n clearResults();\n },\n };\n};\n\nexport default (apiKey) => {\n if (!apiKey) {\n console.log(`No AddSearch API key provided, skipping search suggestions.`);\n return [];\n }\n\n const client = new AddSearchClient(apiKey);\n\n return [\n queryId(\"meganav-search-input\"),\n queryId(\"meganav-mobile-search-input\"),\n ]\n .filter((i) => i)\n .map((input) => {\n const parent = input.parentNode;\n const container = queryId(\n \"meganav-search-autocomplete-container\",\n parent,\n );\n const listContainer = queryId(\"meganav-search-autocomplete-list\", parent);\n const clear = queryId(\"meganav-search-input-clear\", parent);\n\n return init({ input, container, listContainer, client, clear });\n });\n};\n"],"names":["queryId","AddSearchClient","init","input","container","listContainer","clear","client","setAnalyticsTag","setThrottleTime","clearResults","classList","add","innerHTML","toggleClearBtn","query","length","remove","markQueryInSuggestion","suggestionValue","replace","toLowerCase","navigateToUrl","q","window","location","focusNext","index","nextSuggestion","querySelector","focus","focusPrevious","previousIndex","previousSuggestion","renderResults","results","Array","isArray","suggestions","items","map","suggestion","li","document","createElement","button","type","value","dataset","suggestionIndex","addEventListener","e","key","appendChild","forEach","item","keyupHandler","target","clearHandler","teardown","removeEventListener","apiKey","console","log","filter","i","parent","parentNode"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import React from"react";const MeganavSearchAutocomplete=()=>React.createElement("div",{className:"absolute w-full mt-8 z-10 hidden shadow-container rounded-lg bg-white border border-mid-grey","data-id":"meganav-search-autocomplete-container"},React.createElement("ol",{className:"m-16","data-id":"meganav-search-autocomplete-list"}));export default MeganavSearchAutocomplete;
|
|
2
|
-
//# sourceMappingURL=MeganavSearchAutocomplete.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/LegacyMeganav/MeganavSearchAutocomplete.tsx"],"sourcesContent":["import React from \"react\";\n\nconst MeganavSearchAutocomplete = () => (\n <div\n className=\"absolute w-full mt-8 z-10 hidden shadow-container rounded-lg bg-white border border-mid-grey\"\n data-id=\"meganav-search-autocomplete-container\"\n >\n <ol className=\"m-16\" data-id=\"meganav-search-autocomplete-list\"></ol>\n </div>\n);\n\nexport default MeganavSearchAutocomplete;\n"],"names":["React","MeganavSearchAutocomplete","div","className","data-id","ol"],"mappings":"AAAA,OAAOA,UAAW,OAAQ,CAE1B,MAAMC,0BAA4B,IAChC,oBAACC,OACCC,UAAU,+FACVC,UAAQ,yCAER,oBAACC,MAAGF,UAAU,OAAOC,UAAQ,qCAIjC,gBAAeH,yBAA0B"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import React from"react";import Icon from"../Icon";import MeganavSearchSuggestions from"./MeganavSearchSuggestions";import MeganavSearchAutocomplete from"./MeganavSearchAutocomplete";const MeganavSearchPanel=({absUrl})=>React.createElement("section",{className:"ui-meganav-content grid-cols-12"},React.createElement("div",{className:"col-span-8"},React.createElement("div",{className:"mb-32"},React.createElement("form",{className:"flex items-start",action:absUrl("/search"),method:"get"},React.createElement("div",{className:"relative w-full"},React.createElement(Icon,{name:"icon-gui-magnifying-glass-outline",color:"text-cool-black",size:"1.5rem",additionalCSS:"absolute top-12 left-16"}),React.createElement("input",{type:"search",name:"q",className:"ui-input pl-48 h-48",placeholder:"Search",autoComplete:"off","data-id":"meganav-search-input"}),React.createElement(MeganavSearchAutocomplete,null)),React.createElement("button",{type:"submit",className:"ui-btn-secondary flex-shrink-0 ml-8 sm:ml-16 md:ml-24 xl:ml-32"},"Search")))),React.createElement("div",{className:"col-span-12"},React.createElement(MeganavSearchSuggestions,{displaySupportLink:true,absUrl:absUrl})));export default MeganavSearchPanel;
|
|
2
|
-
//# sourceMappingURL=MeganavSearchPanel.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/LegacyMeganav/MeganavSearchPanel.tsx"],"sourcesContent":["import React from \"react\";\n\nimport Icon from \"../Icon\";\nimport MeganavSearchSuggestions from \"./MeganavSearchSuggestions\";\nimport MeganavSearchAutocomplete from \"./MeganavSearchAutocomplete\";\nimport { AbsUrl } from \"./LegacyMeganav\";\n\nconst MeganavSearchPanel = ({ absUrl }: { absUrl: AbsUrl }) => (\n <section className=\"ui-meganav-content grid-cols-12\">\n <div className=\"col-span-8\">\n <div className=\"mb-32\">\n <form\n className=\"flex items-start\"\n action={absUrl(\"/search\")}\n method=\"get\"\n >\n <div className=\"relative w-full\">\n <Icon\n name=\"icon-gui-magnifying-glass-outline\"\n color=\"text-cool-black\"\n size=\"1.5rem\"\n additionalCSS=\"absolute top-12 left-16\"\n />\n <input\n type=\"search\"\n name=\"q\"\n className=\"ui-input pl-48 h-48\"\n placeholder=\"Search\"\n autoComplete=\"off\"\n data-id=\"meganav-search-input\"\n />\n\n <MeganavSearchAutocomplete />\n </div>\n\n <button\n type=\"submit\"\n className=\"ui-btn-secondary flex-shrink-0 ml-8 sm:ml-16 md:ml-24 xl:ml-32\"\n >\n Search\n </button>\n </form>\n </div>\n </div>\n\n <div className=\"col-span-12\">\n <MeganavSearchSuggestions displaySupportLink={true} absUrl={absUrl} />\n </div>\n </section>\n);\n\nexport default MeganavSearchPanel;\n"],"names":["React","Icon","MeganavSearchSuggestions","MeganavSearchAutocomplete","MeganavSearchPanel","absUrl","section","className","div","form","action","method","name","color","size","additionalCSS","input","type","placeholder","autoComplete","data-id","button","displaySupportLink"],"mappings":"AAAA,OAAOA,UAAW,OAAQ,AAE1B,QAAOC,SAAU,SAAU,AAC3B,QAAOC,6BAA8B,4BAA6B,AAClE,QAAOC,8BAA+B,6BAA8B,CAGpE,MAAMC,mBAAqB,CAAC,CAAEC,MAAM,CAAsB,GACxD,oBAACC,WAAQC,UAAU,mCACjB,oBAACC,OAAID,UAAU,cACb,oBAACC,OAAID,UAAU,SACb,oBAACE,QACCF,UAAU,mBACVG,OAAQL,OAAO,WACfM,OAAO,OAEP,oBAACH,OAAID,UAAU,mBACb,oBAACN,MACCW,KAAK,oCACLC,MAAM,kBACNC,KAAK,SACLC,cAAc,4BAEhB,oBAACC,SACCC,KAAK,SACLL,KAAK,IACLL,UAAU,sBACVW,YAAY,SACZC,aAAa,MACbC,UAAQ,yBAGV,oBAACjB,iCAGH,oBAACkB,UACCJ,KAAK,SACLV,UAAU,kEACX,aAOP,oBAACC,OAAID,UAAU,eACb,oBAACL,0BAAyBoB,mBAAoB,KAAMjB,OAAQA,UAKlE,gBAAeD,kBAAmB"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{queryId}from"../../dom-query";const DRAG_BUFFER=5;const getTranslateX=node=>new DOMMatrix(window.getComputedStyle(node).transform).e;const updateTranslateX=(node,value)=>node.style.transform=`translateX(${value}px)`;const dragLeftBoundary=(translateX,threshold)=>translateX>=threshold;const dragRightBoundary=(translateX,itemsWidth,windowWidth,threshold)=>Math.abs(translateX-windowWidth+threshold)>itemsWidth;const getDistance=(e,touchStartX)=>e.changedTouches[0]?.clientX-touchStartX;const withinBuffer=distance=>Math.abs(distance)<DRAG_BUFFER;const getItemsTotalWidth=nodes=>nodes.map(item=>item.getBoundingClientRect().width).reduce((acc,val)=>acc+val,0);const MeganavSearchSuggestions=()=>{const suggestionsToggle=queryId("meganav-mobile-search-input");const suggestions=queryId("meganav-mobile-search-suggestions");const list=suggestions.querySelector("ul");const listItems=Array.from(list.querySelectorAll("li"));const dragLeft=(distance,threshold)=>{const currentTranslateX=getTranslateX(list);const translateX=Math.round(currentTranslateX+distance);if(dragLeftBoundary(translateX,threshold))return;updateTranslateX(list,translateX)};const dragLeftEnd=(distance,threshold)=>{const currentTranslateX=getTranslateX(list);let translateX=Math.round(currentTranslateX+distance);if(dragLeftBoundary(translateX,threshold)){translateX=0}updateTranslateX(list,translateX)};const dragRight=(distance,threshold)=>{const listWidth=list.getBoundingClientRect().width;const currentTranslateX=getTranslateX(list);const translateX=Math.round(currentTranslateX+distance);const itemsTotalWidth=getItemsTotalWidth(listItems);if(dragRightBoundary(translateX,itemsTotalWidth,listWidth,threshold)){return}updateTranslateX(list,translateX)};const dragRightEnd=(distance,threshold)=>{const listWidth=list.getBoundingClientRect().width;const currentTranslateX=getTranslateX(list);const itemsTotalWidth=getItemsTotalWidth(listItems);let translateX=Math.round(currentTranslateX+distance);if(dragRightBoundary(translateX,itemsTotalWidth,listWidth,threshold)){translateX=-(itemsTotalWidth-listWidth+threshold)}updateTranslateX(list,translateX)};let touchStartX;const touchstartHandler=e=>{touchStartX=e.touches[0]?.clientX};const touchmoveHandler=e=>{const distance=getDistance(e,touchStartX);if(withinBuffer(distance))return;distance>0?dragLeft(distance,24):dragRight(distance,96)};const touchendHandler=e=>{const distance=getDistance(e,touchStartX);if(withinBuffer(distance))return;distance>0?dragLeftEnd(distance,24):dragRightEnd(distance,48)};const focusSuggestionsHandler=()=>{suggestions.classList.add("max-h-96")};const blurSuggestionsHandler=e=>{if(e.relatedTarget===suggestions.querySelectorAll("a")[0]){return}suggestions.classList.remove("max-h-96")};const wheelHandler=e=>{const distance=e.deltaY*4;if(withinBuffer(distance))return;distance>0?dragLeftEnd(distance,24):dragRightEnd(distance,48)};suggestionsToggle?.addEventListener("focus",focusSuggestionsHandler);suggestionsToggle?.addEventListener("blur",blurSuggestionsHandler);suggestions.addEventListener("touchstart",touchstartHandler);suggestions.addEventListener("touchmove",touchmoveHandler);suggestions.addEventListener("touchend",touchendHandler);suggestions.addEventListener("wheel",wheelHandler);return{teardown:()=>{suggestionsToggle?.removeEventListener("focus",focusSuggestionsHandler);suggestionsToggle?.removeEventListener("blur",blurSuggestionsHandler);suggestions.removeEventListener("touchstart",touchstartHandler);suggestions.removeEventListener("touchmove",touchmoveHandler);suggestions.removeEventListener("touchend",touchendHandler)},clear:()=>{suggestions.classList.remove("max-h-96");list.style.transform=`translateX(0px)`}}};export default MeganavSearchSuggestions;
|
|
2
|
-
//# sourceMappingURL=component.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/core/LegacyMeganav/MeganavSearchSuggestions/component.js"],"sourcesContent":["import { queryId } from \"../../dom-query\";\n\nconst DRAG_BUFFER = 5;\n\nconst getTranslateX = (node) =>\n new DOMMatrix(window.getComputedStyle(node).transform).e;\n\nconst updateTranslateX = (node, value) =>\n (node.style.transform = `translateX(${value}px)`);\n\nconst dragLeftBoundary = (translateX, threshold) => translateX >= threshold;\n\nconst dragRightBoundary = (translateX, itemsWidth, windowWidth, threshold) =>\n Math.abs(translateX - windowWidth + threshold) > itemsWidth;\n\nconst getDistance = (e, touchStartX) =>\n e.changedTouches[0]?.clientX - touchStartX;\n\nconst withinBuffer = (distance) => Math.abs(distance) < DRAG_BUFFER;\n\nconst getItemsTotalWidth = (nodes) =>\n nodes\n .map((item) => item.getBoundingClientRect().width)\n .reduce((acc, val) => acc + val, 0);\n\nconst MeganavSearchSuggestions = () => {\n const suggestionsToggle = queryId(\"meganav-mobile-search-input\");\n const suggestions = queryId(\"meganav-mobile-search-suggestions\");\n const list = suggestions.querySelector(\"ul\");\n const listItems = Array.from(list.querySelectorAll(\"li\"));\n\n const dragLeft = (distance, threshold) => {\n const currentTranslateX = getTranslateX(list);\n const translateX = Math.round(currentTranslateX + distance);\n if (dragLeftBoundary(translateX, threshold)) return;\n updateTranslateX(list, translateX);\n };\n\n const dragLeftEnd = (distance, threshold) => {\n const currentTranslateX = getTranslateX(list);\n let translateX = Math.round(currentTranslateX + distance);\n\n if (dragLeftBoundary(translateX, threshold)) {\n translateX = 0;\n }\n\n updateTranslateX(list, translateX);\n };\n\n const dragRight = (distance, threshold) => {\n const listWidth = list.getBoundingClientRect().width;\n const currentTranslateX = getTranslateX(list);\n const translateX = Math.round(currentTranslateX + distance);\n const itemsTotalWidth = getItemsTotalWidth(listItems);\n\n if (dragRightBoundary(translateX, itemsTotalWidth, listWidth, threshold)) {\n return;\n }\n\n updateTranslateX(list, translateX);\n };\n\n const dragRightEnd = (distance, threshold) => {\n const listWidth = list.getBoundingClientRect().width;\n const currentTranslateX = getTranslateX(list);\n const itemsTotalWidth = getItemsTotalWidth(listItems);\n let translateX = Math.round(currentTranslateX + distance);\n\n if (dragRightBoundary(translateX, itemsTotalWidth, listWidth, threshold)) {\n translateX = -(itemsTotalWidth - listWidth + threshold);\n }\n\n updateTranslateX(list, translateX);\n };\n\n let touchStartX;\n\n const touchstartHandler = (e) => {\n touchStartX = e.touches[0]?.clientX;\n };\n\n const touchmoveHandler = (e) => {\n const distance = getDistance(e, touchStartX);\n if (withinBuffer(distance)) return;\n distance > 0 ? dragLeft(distance, 24) : dragRight(distance, 96);\n };\n\n const touchendHandler = (e) => {\n const distance = getDistance(e, touchStartX);\n if (withinBuffer(distance)) return;\n distance > 0 ? dragLeftEnd(distance, 24) : dragRightEnd(distance, 48);\n };\n\n const focusSuggestionsHandler = () => {\n suggestions.classList.add(\"max-h-96\");\n };\n\n const blurSuggestionsHandler = (e) => {\n if (e.relatedTarget === suggestions.querySelectorAll(\"a\")[0]) {\n return;\n }\n suggestions.classList.remove(\"max-h-96\");\n };\n\n const wheelHandler = (e) => {\n const distance = e.deltaY * 4;\n if (withinBuffer(distance)) return;\n distance > 0 ? dragLeftEnd(distance, 24) : dragRightEnd(distance, 48);\n };\n\n suggestionsToggle?.addEventListener(\"focus\", focusSuggestionsHandler);\n suggestionsToggle?.addEventListener(\"blur\", blurSuggestionsHandler);\n suggestions.addEventListener(\"touchstart\", touchstartHandler);\n suggestions.addEventListener(\"touchmove\", touchmoveHandler);\n suggestions.addEventListener(\"touchend\", touchendHandler);\n suggestions.addEventListener(\"wheel\", wheelHandler);\n\n return {\n teardown: () => {\n suggestionsToggle?.removeEventListener(\"focus\", focusSuggestionsHandler);\n suggestionsToggle?.removeEventListener(\"blur\", blurSuggestionsHandler);\n suggestions.removeEventListener(\"touchstart\", touchstartHandler);\n suggestions.removeEventListener(\"touchmove\", touchmoveHandler);\n suggestions.removeEventListener(\"touchend\", touchendHandler);\n },\n clear: () => {\n suggestions.classList.remove(\"max-h-96\");\n list.style.transform = `translateX(0px)`;\n },\n };\n};\n\nexport default MeganavSearchSuggestions;\n"],"names":["queryId","DRAG_BUFFER","getTranslateX","node","DOMMatrix","window","getComputedStyle","transform","e","updateTranslateX","value","style","dragLeftBoundary","translateX","threshold","dragRightBoundary","itemsWidth","windowWidth","Math","abs","getDistance","touchStartX","changedTouches","clientX","withinBuffer","distance","getItemsTotalWidth","nodes","map","item","getBoundingClientRect","width","reduce","acc","val","MeganavSearchSuggestions","suggestionsToggle","suggestions","list","querySelector","listItems","Array","from","querySelectorAll","dragLeft","currentTranslateX","round","dragLeftEnd","dragRight","listWidth","itemsTotalWidth","dragRightEnd","touchstartHandler","touches","touchmoveHandler","touchendHandler","focusSuggestionsHandler","classList","add","blurSuggestionsHandler","relatedTarget","remove","wheelHandler","deltaY","addEventListener","teardown","removeEventListener","clear"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import React from"react";import FeaturedLink from"../FeaturedLink";const MeganavSearchSuggestions=({absUrl,displaySupportLink})=>React.createElement(React.Fragment,null,React.createElement("p",{className:"ui-text-overline2 text-cool-black py-12"},"Popular pages"),React.createElement("div",{className:"flex justify-between items-center overflow-hidden"},React.createElement("ul",{className:"flex transition-transform"},React.createElement("li",{className:"py-12 pr-8 flex-shrink-0"},React.createElement("a",{href:absUrl("/docs/how-ably-works"),className:"ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus"},"How does Ably work?")),React.createElement("li",{className:"py-12 px-8 flex-shrink-0"},React.createElement("a",{href:absUrl("/docs/quick-start-guide"),className:"ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus"},"Quickstart guide")),React.createElement("li",{className:"py-12 px-8 flex-shrink-0"},React.createElement("a",{href:absUrl("/docs/core-features/pubsub"),className:"ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus"},"Publish/Subscribe Messaging")),React.createElement("li",{className:"py-12 pl-8 flex-shrink-0"},React.createElement("a",{href:absUrl("/platform"),className:"ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus"},"Platform"))),displaySupportLink?React.createElement(FeaturedLink,{url:absUrl("/support"),textSize:"text-p2"},"Support"):null));export default MeganavSearchSuggestions;
|
|
2
|
-
//# sourceMappingURL=MeganavSearchSuggestions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/LegacyMeganav/MeganavSearchSuggestions.tsx"],"sourcesContent":["import React from \"react\";\nimport { AbsUrl } from \"./LegacyMeganav\";\nimport FeaturedLink from \"../FeaturedLink\";\n\ntype MeganavSearchSuggestionsProps = {\n absUrl: AbsUrl;\n displaySupportLink: boolean;\n};\n\nconst MeganavSearchSuggestions = ({\n absUrl,\n displaySupportLink,\n}: MeganavSearchSuggestionsProps) => (\n <>\n <p className=\"ui-text-overline2 text-cool-black py-12\">Popular pages</p>\n\n <div className=\"flex justify-between items-center overflow-hidden\">\n <ul className=\"flex transition-transform\">\n <li className=\"py-12 pr-8 flex-shrink-0\">\n <a\n href={absUrl(\"/docs/how-ably-works\")}\n className=\"ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus\"\n >\n How does Ably work?\n </a>\n </li>\n <li className=\"py-12 px-8 flex-shrink-0\">\n <a\n href={absUrl(\"/docs/quick-start-guide\")}\n className=\"ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus\"\n >\n Quickstart guide\n </a>\n </li>\n <li className=\"py-12 px-8 flex-shrink-0\">\n <a\n href={absUrl(\"/docs/core-features/pubsub\")}\n className=\"ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus\"\n >\n Publish/Subscribe Messaging\n </a>\n </li>\n <li className=\"py-12 pl-8 flex-shrink-0\">\n <a\n href={absUrl(\"/platform\")}\n className=\"ui-text-p2 hover:text-gui-hover active:text-gui-active focus:text-gui-focus\"\n >\n Platform\n </a>\n </li>\n </ul>\n {displaySupportLink ? (\n <FeaturedLink url={absUrl(\"/support\")} textSize=\"text-p2\">\n Support\n </FeaturedLink>\n ) : null}\n </div>\n </>\n);\n\nexport default MeganavSearchSuggestions;\n"],"names":["React","FeaturedLink","MeganavSearchSuggestions","absUrl","displaySupportLink","p","className","div","ul","li","a","href","url","textSize"],"mappings":"AAAA,OAAOA,UAAW,OAAQ,AAE1B,QAAOC,iBAAkB,iBAAkB,CAO3C,MAAMC,yBAA2B,CAAC,CAChCC,MAAM,CACNC,kBAAkB,CACY,GAC9B,wCACE,oBAACC,KAAEC,UAAU,2CAA0C,iBAEvD,oBAACC,OAAID,UAAU,qDACb,oBAACE,MAAGF,UAAU,6BACZ,oBAACG,MAAGH,UAAU,4BACZ,oBAACI,KACCC,KAAMR,OAAO,wBACbG,UAAU,+EACX,wBAIH,oBAACG,MAAGH,UAAU,4BACZ,oBAACI,KACCC,KAAMR,OAAO,2BACbG,UAAU,+EACX,qBAIH,oBAACG,MAAGH,UAAU,4BACZ,oBAACI,KACCC,KAAMR,OAAO,8BACbG,UAAU,+EACX,gCAIH,oBAACG,MAAGH,UAAU,4BACZ,oBAACI,KACCC,KAAMR,OAAO,aACbG,UAAU,+EACX,cAKJF,mBACC,oBAACH,cAAaW,IAAKT,OAAO,YAAaU,SAAS,WAAU,WAGxD,MAKV,gBAAeX,wBAAyB"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import React,{useRef}from"react";const SignOutLink=({token,href,text,children,absUrl})=>{const formRef=useRef(null);const onClick=e=>{formRef.current?.submit();e.preventDefault()};return React.createElement(React.Fragment,null,React.createElement("form",{ref:formRef,method:"post",action:absUrl(href),className:"hidden"},React.createElement("input",{name:"_method",value:"delete",type:"hidden"}),React.createElement("input",{name:"authenticity_token",value:token,type:"hidden"})),children({href,text,onClick}))};export default SignOutLink;
|
|
2
|
-
//# sourceMappingURL=SignOutLink.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/LegacyMeganav/SignOutLink.tsx"],"sourcesContent":["import React, { MouseEvent, MouseEventHandler, ReactNode, useRef } from \"react\";\nimport { AbsUrl } from \"./LegacyMeganav\";\n\ntype SignOutLinkProps = {\n token: string;\n href: string;\n text: string;\n children: ({\n href,\n text,\n onClick,\n }: {\n href: string;\n text: string;\n onClick: MouseEventHandler<HTMLAnchorElement>;\n }) => ReactNode;\n absUrl: AbsUrl;\n};\n\nconst SignOutLink = ({\n token,\n href,\n text,\n children,\n absUrl,\n}: SignOutLinkProps) => {\n const formRef = useRef<HTMLFormElement>(null);\n\n const onClick = (e: MouseEvent) => {\n formRef.current?.submit();\n e.preventDefault();\n };\n\n return (\n <>\n <form\n ref={formRef}\n method=\"post\"\n action={absUrl(href)}\n className=\"hidden\"\n >\n <input name=\"_method\" value=\"delete\" type=\"hidden\" />\n <input name=\"authenticity_token\" value={token} type=\"hidden\" />\n </form>\n\n {children({ href, text, onClick })}\n </>\n );\n};\n\nexport default SignOutLink;\n"],"names":["React","useRef","SignOutLink","token","href","text","children","absUrl","formRef","onClick","e","current","submit","preventDefault","form","ref","method","action","className","input","name","value","type"],"mappings":"AAAA,OAAOA,OAAmDC,MAAM,KAAQ,OAAQ,CAmBhF,MAAMC,YAAc,CAAC,CACnBC,KAAK,CACLC,IAAI,CACJC,IAAI,CACJC,QAAQ,CACRC,MAAM,CACW,IACjB,MAAMC,QAAUP,OAAwB,MAExC,MAAMQ,QAAU,AAACC,IACfF,QAAQG,OAAO,EAAEC,SACjBF,EAAEG,cAAc,EAClB,EAEA,OACE,wCACE,oBAACC,QACCC,IAAKP,QACLQ,OAAO,OACPC,OAAQV,OAAOH,MACfc,UAAU,UAEV,oBAACC,SAAMC,KAAK,UAAUC,MAAM,SAASC,KAAK,WAC1C,oBAACH,SAAMC,KAAK,qBAAqBC,MAAOlB,MAAOmB,KAAK,YAGrDhB,SAAS,CAAEF,KAAMC,KAAMI,OAAQ,GAGtC,CAEA,gBAAeP,WAAY"}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
@layer components {
|
|
2
|
-
.ui-meganav-wrapper {
|
|
3
|
-
/* Define values for new stacking context defined by position: fixed */
|
|
4
|
-
--stacking-context-meganav-dropdown: 10;
|
|
5
|
-
--stacking-context-meganav-mobile-panel: 20;
|
|
6
|
-
|
|
7
|
-
z-index: var(--stacking-context-page-meganav);
|
|
8
|
-
|
|
9
|
-
@apply fixed top-0 w-full;
|
|
10
|
-
@apply antialiased font-sans transition-colors;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
.ui-meganav {
|
|
14
|
-
height: var(--ui-meganav-height);
|
|
15
|
-
|
|
16
|
-
@apply flex justify-between items-center max-w-screen-xl mx-auto;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
.ui-meganav-panel,
|
|
20
|
-
.ui-meganav-mobile-dropdown,
|
|
21
|
-
.ui-meganav-panel-account {
|
|
22
|
-
z-index: var(--stacking-context-meganav-dropdown);
|
|
23
|
-
|
|
24
|
-
@apply absolute left-0 right-0;
|
|
25
|
-
@apply border-mid-grey border-t shadow-container;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
.ui-meganav-panel {
|
|
29
|
-
@apply bg-white;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
.ui-meganav-panel-mobile {
|
|
33
|
-
z-index: var(--stacking-context-meganav-mobile-panel);
|
|
34
|
-
|
|
35
|
-
/* Prevents momentum-based scrolling https://devdocs.io/css/-webkit-overflow-scrolling */
|
|
36
|
-
-webkit-overflow-scrolling: auto;
|
|
37
|
-
|
|
38
|
-
@apply bg-white pt-16 border-0;
|
|
39
|
-
@apply border-mid-grey border-t shadow-container;
|
|
40
|
-
@apply fixed top-64 left-0 right-0 overflow-y-auto;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
.ui-meganav-panel-account {
|
|
44
|
-
left: auto;
|
|
45
|
-
min-width: 20rem;
|
|
46
|
-
@apply bg-white rounded-t-none;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
.ui-meganav-panel-split-bg {
|
|
50
|
-
background: linear-gradient(to right, #fafafb 33%, white 33%, white 100%);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
.ui-meganav-link {
|
|
54
|
-
@apply text-menu2 font-bold font-sans;
|
|
55
|
-
@apply mr-12 lg:mr-24 px-0 py-20;
|
|
56
|
-
@apply hover:text-gui-hover focus:text-gui-focus focus:outline-none;
|
|
57
|
-
@apply transition-colors;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
.ui-meganav-item {
|
|
61
|
-
flex: 1 0 auto;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
.ui-meganav-mobile-link {
|
|
65
|
-
@apply p-menu-row relative -left-8 w-extend-8;
|
|
66
|
-
@apply text-menu2 font-mono font-medium block text-cool-black text-left;
|
|
67
|
-
@apply flex items-center;
|
|
68
|
-
@apply focus:text-gui-focus focus:outline-none;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
.ui-meganav-account-link {
|
|
72
|
-
@apply block px-8 py-8 hover:bg-light-grey hover:text-gui-hover rounded relative -left-8 text-menu3 w-extend-8 font-bold font-mono;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
.ui-meganav-content {
|
|
76
|
-
@apply max-w-screen-xl py-24 lg:py-32 mx-auto;
|
|
77
|
-
@apply grid grid-cols-1;
|
|
78
|
-
@apply px-24 md:px-32 lg:px-32 xl:px-64;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/* This is implemented not as padding so we can change the color of just this space, while keeping the grid
|
|
82
|
-
as close to the designs as possible */
|
|
83
|
-
.ui-meganav-content-spacer {
|
|
84
|
-
@apply hidden md:block md:w-32 lg:w-32 xl:w-64 self-stretch flex-shrink-0 flex-grow-0;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
.ui-meganav-media {
|
|
88
|
-
@apply block px-8 py-8 hover:bg-light-grey rounded relative -left-8 w-extend-8;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
.ui-meganav-media-with-image {
|
|
92
|
-
grid-template-columns: max-content 1fr;
|
|
93
|
-
grid-template-rows: min-content 1fr;
|
|
94
|
-
|
|
95
|
-
@apply block px-8 py-8 hover:bg-light-grey rounded relative -left-8 w-extend-8;
|
|
96
|
-
@apply grid gap-x-16;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
.ui-meganav-media-heading {
|
|
100
|
-
@apply text-menu3 text-cool-black font-bold font-sans group-hover:text-gui-hover group-focus:text-gui-focus leading-normal;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
.ui-meganav-media-copy {
|
|
104
|
-
@apply text-p3 font-sans font-medium text-dark-grey leading-normal;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
.ui-meganav-overline {
|
|
108
|
-
@apply text-overline2 text-cool-black uppercase font-medium font-mono tracking-widen-0.16 p-overline;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
.ui-meganav-hr {
|
|
112
|
-
@apply my-0 text-mid-grey;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import throttle from"lodash.throttle";import{queryId,queryIdAll}from"../dom-query";import MeganavControl from"./MeganavControl/component.js";import MeganavControlMobileDropdown from"./MeganavControlMobileDropdown/component.js";import MobilePanelOpenClick from"./MeganavControlMobilePanelOpen/component.js";import MobilePanelCloseClick from"./MeganavControlMobilePanelClose/component.js";import MeganavSearchAutocomplete from"./MeganavSearchAutocomplete/component.js";import MeganavSearchSuggestions from"./MeganavSearchSuggestions/component.js";const windowOnBlur=closeAll=>{window.onblur=()=>closeAll();return{teardown:()=>window.onblur=null}};const documentClick=closeAll=>{const meganav=queryId("meganav");const clickHandler=e=>{if(meganav.contains(e.target))return;closeAll()};document.addEventListener("click",clickHandler);return{teardown:()=>document.removeEventListener("click",clickHandler)}};const documentScroll=themeName=>{if(themeName!=="transparentToWhite")return{teardown:()=>{}};const meganav=queryId("meganav");const navItems=queryIdAll("meganav-link");const controlMobileDropdownMenu=queryId("meganav-control-mobile-dropdown-menu");const controlMobileDropdownClose=queryId("meganav-control-mobile-dropdown-close");const controls=queryIdAll("meganav-control");const signUpBtn=queryId("meganav-sign-up-btn");const invertTextCollection=[...Array.from(controls),...Array.from(navItems),queryId("meganav-logo")];const invertMobleDropdownColor=invert=>{const whiteToBlack=["ui-icon-white","ui-icon-cool-black"];const blackToWhite=[...whiteToBlack].reverse();if(invert){controlMobileDropdownMenu?.classList.replace(...whiteToBlack);controlMobileDropdownClose?.classList.replace(...whiteToBlack)}else{controlMobileDropdownMenu?.classList.replace(...blackToWhite);controlMobileDropdownClose?.classList.replace(...blackToWhite)}};const inverSignupBtnColors=invert=>{if(invert){signUpBtn?.classList.replace("bg-white","bg-cool-black");signUpBtn?.classList.replace("text-cool-black","text-white")}else{signUpBtn?.classList.replace("bg-cool-black","bg-white");signUpBtn?.classList.replace("text-white","text-cool-black")}};const scrollHandler=throttle(()=>{if(window.scrollY>5){meganav.classList.replace("bg-transparent","bg-white");inverSignupBtnColors(true);invertMobleDropdownColor(true);invertTextCollection.forEach(n=>n.classList.replace("text-white","text-cool-black"))}else{meganav.classList.replace("bg-white","bg-transparent");inverSignupBtnColors(false);invertMobleDropdownColor(false);invertTextCollection.forEach(n=>n.classList.replace("text-cool-black","text-white"))}},150);document.addEventListener("scroll",scrollHandler);return{teardown:()=>document.removeEventListener("scroll",scrollHandler)}};export default function Meganav({themeName,addSearchApiKey}){const controls=MeganavControl();const panelOpenControls=MobilePanelOpenClick();const panelCloseControls=MobilePanelCloseClick();const search=MeganavSearchAutocomplete(addSearchApiKey);const searchSuggestions=MeganavSearchSuggestions();const mobileDropdownControl=MeganavControlMobileDropdown({clearPanels:()=>[...panelOpenControls,...panelCloseControls].forEach(i=>i.clear())});const closeAll=()=>[mobileDropdownControl,searchSuggestions,...panelOpenControls,...panelCloseControls,...controls,...search].forEach(i=>i.clear());const teardowns=[documentScroll(themeName??null),documentClick(closeAll),windowOnBlur(closeAll),mobileDropdownControl,searchSuggestions,...controls,...panelOpenControls,...panelCloseControls,...search].map(i=>i.teardown);return()=>teardowns.forEach(teardown=>teardown())}
|
|
2
|
-
//# sourceMappingURL=component.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/LegacyMeganav/component.js"],"sourcesContent":["import throttle from \"lodash.throttle\";\n\n// Glossary:\n// item - is the element which contains both the control and the panel - these are adjacent\n// control - interactive element that controls showing and hiding of dropdown or panel\n// panel - container for meganav content\n// dropdown - container for top level items on mobile\n// clear - return to initial state\n// teardown - remove all event listeners (for example when removing nodes)\n\nimport { queryId, queryIdAll } from \"../dom-query\";\n\nimport MeganavControl from \"./MeganavControl/component.js\";\nimport MeganavControlMobileDropdown from \"./MeganavControlMobileDropdown/component.js\";\nimport MobilePanelOpenClick from \"./MeganavControlMobilePanelOpen/component.js\";\nimport MobilePanelCloseClick from \"./MeganavControlMobilePanelClose/component.js\";\nimport MeganavSearchAutocomplete from \"./MeganavSearchAutocomplete/component.js\";\nimport MeganavSearchSuggestions from \"./MeganavSearchSuggestions/component.js\";\n\n// Close menu when user clicks outside of viewport\nconst windowOnBlur = (closeAll) => {\n window.onblur = () => closeAll();\n return { teardown: () => (window.onblur = null) };\n};\n\n// Close menu when click/tap outside of nav\nconst documentClick = (closeAll) => {\n const meganav = queryId(\"meganav\");\n\n const clickHandler = (e) => {\n if (meganav.contains(e.target)) return;\n closeAll();\n };\n\n document.addEventListener(\"click\", clickHandler);\n\n return {\n teardown: () => document.removeEventListener(\"click\", clickHandler),\n };\n};\n\n// Invert from transparent to white\nconst documentScroll = (themeName) => {\n if (themeName !== \"transparentToWhite\") return { teardown: () => {} };\n\n const meganav = queryId(\"meganav\");\n const navItems = queryIdAll(\"meganav-link\");\n const controlMobileDropdownMenu = queryId(\n \"meganav-control-mobile-dropdown-menu\",\n );\n const controlMobileDropdownClose = queryId(\n \"meganav-control-mobile-dropdown-close\",\n );\n const controls = queryIdAll(\"meganav-control\");\n const signUpBtn = queryId(\"meganav-sign-up-btn\");\n\n const invertTextCollection = [\n ...Array.from(controls),\n ...Array.from(navItems),\n queryId(\"meganav-logo\"),\n ];\n\n const invertMobleDropdownColor = (invert) => {\n const whiteToBlack = [\"ui-icon-white\", \"ui-icon-cool-black\"];\n const blackToWhite = [...whiteToBlack].reverse();\n\n if (invert) {\n controlMobileDropdownMenu?.classList.replace(...whiteToBlack);\n controlMobileDropdownClose?.classList.replace(...whiteToBlack);\n } else {\n controlMobileDropdownMenu?.classList.replace(...blackToWhite);\n controlMobileDropdownClose?.classList.replace(...blackToWhite);\n }\n };\n\n const inverSignupBtnColors = (invert) => {\n if (invert) {\n signUpBtn?.classList.replace(\"bg-white\", \"bg-cool-black\");\n signUpBtn?.classList.replace(\"text-cool-black\", \"text-white\");\n } else {\n signUpBtn?.classList.replace(\"bg-cool-black\", \"bg-white\");\n signUpBtn?.classList.replace(\"text-white\", \"text-cool-black\");\n }\n };\n\n const scrollHandler = throttle(() => {\n if (window.scrollY > 5) {\n meganav.classList.replace(\"bg-transparent\", \"bg-white\");\n inverSignupBtnColors(true);\n invertMobleDropdownColor(true);\n\n invertTextCollection.forEach((n) =>\n n.classList.replace(\"text-white\", \"text-cool-black\"),\n );\n } else {\n meganav.classList.replace(\"bg-white\", \"bg-transparent\");\n inverSignupBtnColors(false);\n invertMobleDropdownColor(false);\n\n invertTextCollection.forEach((n) =>\n n.classList.replace(\"text-cool-black\", \"text-white\"),\n );\n }\n }, 150);\n\n document.addEventListener(\"scroll\", scrollHandler);\n\n return {\n teardown: () => document.removeEventListener(\"scroll\", scrollHandler),\n };\n};\n\nexport default function Meganav({ themeName, addSearchApiKey }) {\n const controls = MeganavControl();\n const panelOpenControls = MobilePanelOpenClick();\n const panelCloseControls = MobilePanelCloseClick();\n const search = MeganavSearchAutocomplete(addSearchApiKey);\n const searchSuggestions = MeganavSearchSuggestions();\n\n const mobileDropdownControl = MeganavControlMobileDropdown({\n clearPanels: () =>\n [...panelOpenControls, ...panelCloseControls].forEach((i) => i.clear()),\n });\n\n const closeAll = () =>\n [\n mobileDropdownControl,\n searchSuggestions,\n ...panelOpenControls,\n ...panelCloseControls,\n ...controls,\n ...search,\n ].forEach((i) => i.clear());\n\n const teardowns = [\n documentScroll(themeName ?? null),\n documentClick(closeAll),\n windowOnBlur(closeAll),\n mobileDropdownControl,\n searchSuggestions,\n ...controls,\n ...panelOpenControls,\n ...panelCloseControls,\n ...search,\n ].map((i) => i.teardown);\n\n return () => teardowns.forEach((teardown) => teardown());\n}\n"],"names":["throttle","queryId","queryIdAll","MeganavControl","MeganavControlMobileDropdown","MobilePanelOpenClick","MobilePanelCloseClick","MeganavSearchAutocomplete","MeganavSearchSuggestions","windowOnBlur","closeAll","window","onblur","teardown","documentClick","meganav","clickHandler","e","contains","target","document","addEventListener","removeEventListener","documentScroll","themeName","navItems","controlMobileDropdownMenu","controlMobileDropdownClose","controls","signUpBtn","invertTextCollection","Array","from","invertMobleDropdownColor","invert","whiteToBlack","blackToWhite","reverse","classList","replace","inverSignupBtnColors","scrollHandler","scrollY","forEach","n","Meganav","addSearchApiKey","panelOpenControls","panelCloseControls","search","searchSuggestions","mobileDropdownControl","clearPanels","i","clear","teardowns","map"],"mappings":"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"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"themes": {
|
|
3
|
-
"white": {
|
|
4
|
-
"backgroundColor": "bg-white",
|
|
5
|
-
"textColor": "text-cool-black",
|
|
6
|
-
"buttonBackgroundColor": "",
|
|
7
|
-
"buttonTextColor": "",
|
|
8
|
-
"mobileMenuColor": "text-cool-black",
|
|
9
|
-
"logoTextColor": "text-cool-black",
|
|
10
|
-
"barShadow": "shadow-subtle"
|
|
11
|
-
},
|
|
12
|
-
"black": {
|
|
13
|
-
"backgroundColor": "bg-cool-black",
|
|
14
|
-
"textColor": "text-white",
|
|
15
|
-
"buttonBackgroundColor": "bg-white",
|
|
16
|
-
"buttonTextColor": "text-cool-black",
|
|
17
|
-
"mobileMenuColor": "text-white",
|
|
18
|
-
"logoTextColor": "text-white",
|
|
19
|
-
"barShadow": ""
|
|
20
|
-
},
|
|
21
|
-
"transparentToWhite": {
|
|
22
|
-
"backgroundColor": "bg-transparent",
|
|
23
|
-
"textColor": "text-white",
|
|
24
|
-
"buttonBackgroundColor": "bg-white",
|
|
25
|
-
"buttonTextColor": "text-cool-black",
|
|
26
|
-
"mobileMenuColor": "text-white",
|
|
27
|
-
"logoTextColor": "text-white",
|
|
28
|
-
"barShadow": ""
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
"panels": [
|
|
32
|
-
{ "label": "Products", "shortLabel": "Products", "id": "products-panel", "component": "MeganavContentProducts" },
|
|
33
|
-
{ "label": "Solutions", "shortLabel": "Solutions", "id": "use-cases-panel", "component": "MeganavContentUseCases" },
|
|
34
|
-
{ "label": "Company", "shortLabel": "Company", "id": "company-panel", "component": "MeganavContentCompany" },
|
|
35
|
-
{ "label": "Developers", "shortLabel": "Developers", "id": "developers-panel", "component": "MeganavContentDevelopers" }
|
|
36
|
-
]
|
|
37
|
-
}
|