react-treeselectjs
Version:
Treeselect React Component
2 lines (1 loc) • 1.91 kB
JavaScript
(function(t,r){typeof exports=="object"&&typeof module<"u"?module.exports=r(require("react"),require("treeselectjs")):typeof define=="function"&&define.amd?define(["react","treeselectjs"],r):(t=typeof globalThis<"u"?globalThis:t||self,t.ReactTreeselect=r(t.React,t.Treeselect))})(this,function(t,r){"use strict";const d="",o=["value","id","options","iconElements","children"],s={onInput:"inputCallback",onOpen:"openCallback",onClose:"closeCallback",onNameChange:"nameChangeCallback",onSearch:"searchCallback",onOpenCloseGroup:"openCloseGroupCallback"},i=(e,u)=>JSON.stringify(e)!==JSON.stringify(u);return e=>{const u=t.useRef(null),a=t.useRef(null),n=t.useRef(null);if(n.current){let l=!1;Object.keys(e).forEach(c=>{const f=Object.keys(s).includes(c)?n.current[s[c]]===e[c]:n.current[c]===e[c];!o.includes(c)&&!f&&(n.current[c]=e[c],l=!0)}),l&&n.current.mount()}return t.useEffect(()=>{n.current&&i(n.current.value,e.value)&&n.current.updateValue(e.value)},[e.value]),t.useEffect(()=>{var c;(((c=n.current)==null?void 0:c.id)||e.id)&&n.current&&(n.current.id=e.id??"",n.current.mount())},[e.id]),t.useEffect(()=>{n.current&&i(n.current.options,e.options)&&(n.current.options=e.options??[],n.current.mount(),n.current.updateValue(e.value))},[e.options]),t.useEffect(()=>{if(n.current){const l={...n.current.iconElements,...e.iconElements};i(n.current.iconElements,l)&&(n.current.iconElements=l,n.current.mount())}},[e.iconElements]),t.useEffect(()=>(n.current=new r({parentHtmlContainer:u.current,listSlotHtmlComponent:a.current,...e,inputCallback:e.onInput,openCallback:e.onOpen,closeCallback:e.onClose,nameChangeCallback:e.onNameChange,searchCallback:e.onSearch,openCloseGroupCallback:e.onOpenCloseGroup}),()=>{var l;(l=n.current)==null||l.destroy()}),[]),t.createElement(t.Fragment,null,t.createElement("div",{ref:u}),t.createElement("div",{ref:a,className:"treeselect-after-list-slot"},e.children))}});