UNPKG

@tycoonsystems/tycoon-modules

Version:
1 lines 2.2 kB
function _extends(){return(_extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n,r=arguments[t];for(n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}import React from"react";import lunr from"../utility/utility/elasticlunr";import dynamic from"next/dynamic";const Help=dynamic(()=>import("/layout").then(e=>e.Help),{ssr:!1,loading:()=>React.createElement("p",null)}),Module=t=>{const[e,n]=React.useState(!1),[r,a]=React.useState(!1),[l,c]=React.useState(!1),[,i]=React.useState(-1),[u,s]=React.useState(null),[o,p]=React.useState([]),d=React.useRef(),f=React.useRef();React.useEffect(()=>{e||n(!0)},[e]),e&&lunr&&t.helpIndex&&!u&&(m=lunr(function(){this.ref("id"),this.field("question"),this.field("answer"),this.field("a"),this.field("meta"),Array.isArray(t.helpIndex)&&t.helpIndex.forEach((e,t)=>{e.id=t,this.add(e)})}),s(m)),React.useEffect(()=>{var e;t?.open?(a(!0),c(!0),d?.current&&clearTimeout(d.current)):t&&t?.open||(c(!0),a(!1),e=setTimeout(()=>{c(!1),f?.current&&(f.current.value=""),d.current=null},1500),d.current=e)},[l,r,t?.open,d?.current,f?.current]);var m=React.useCallback(e=>{i((new Date).getTime());e=e?.currentTarget?.value;if(null!==e&&""!==e&&u&&t.helpIndex){e=u.search(e,{expand:!0});const n=t.helpIndex.map((e,t)=>(e.id=t,e));e=e.map(t=>n.find(e=>e.id==t.ref));p(e)}else h()});const h=()=>{var e;f?.current&&t?.helpIndex?.filter&&((e=f.current.value)&&""!==e||0<(e=t.helpIndex.filter(e=>e.pinned)).length&&p(e))};return React.useEffect(()=>{h()},[u]),React.useEffect(()=>{"main_settings"!==t?._openMenu?.currentMenu&&t?.setHelpOpen&&t.setHelpOpen(!1)},[t?._openMenu?.currentMenu,t?.setHelpOpen]),React.createElement("div",null,React.createElement("div",{className:`Misc_Container Help_Container ${t.className} `+(r&&l?"Misc_Container_Visible":""),style:{top:t?.menuConfig?.height&&!isNaN(Number(t.menuConfig.height))?Number(t.menuConfig.height)+"px":""}},React.createElement("div",{className:"Misc_Internal_Container Help_Internal_Container",style:{paddingTop:".5rem"}},React.createElement(Help,_extends({},t,{handleUpdateSearch:m,queryRef:f,currentResults:o})))))};export default Module;