@svar-ui/react-menu 2.5.0 → 2.5.1
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/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.es.js +225 -209
- package/dist/index.es.js.map +1 -1
- package/dist-full/index.css +1 -1
- package/package.json +4 -4
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),t=require("react"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),t=require("react"),E=require("@svar-ui/lib-dom"),L=require("@svar-ui/react-core");function Z(c,u){return c.map(e=>{const l=u(e);return e.data&&e.data.length&&(l.data=Z(e.data,u)),l})}function q(c,u){const e=[];return c.forEach(l=>{if(l.data){const i=q(l.data,u);i.length&&e.push({...l,data:i})}else u(l)&&e.push(l)}),e}function H(c){return Z(c,u=>{const e={...u,id:u.id||E.uid()};return e.type&&(e.comp=e.type),e})}const F={};function Q(c){return F[c]||c}function X(c,u){F[c]=u}function B({onClick:c,onShow:u,option:e}){const l=t.useRef(null),i=t.useCallback(()=>{u(e.data?e.id:!1,l.current)},[u,e]),C=t.useCallback(a=>{if(e.data){a.stopPropagation(),u(e.id,l.current);return}c(a)},[c,u,e]),x=t.useMemo(()=>e&&e.comp?Q(e.comp):null,[e]);return n.jsxs("div",{ref:l,className:`wx-cDCz9rZQ wx-option ${e.css||""} ${e.disabled?"wx-disabled":""}`,"data-id":E.setID(e.id),onMouseEnter:i,onClick:C,children:[e.icon?n.jsx("i",{className:`wx-cDCz9rZQ wx-icon ${e.icon}`}):null,e.comp?x?n.jsx(x,{item:e,option:e}):null:n.jsxs("span",{className:"wx-cDCz9rZQ wx-value",children:[" ",e.text," "]}),e.subtext?n.jsx("span",{className:"wx-cDCz9rZQ wx-subtext",children:e.subtext}):null,e.data?n.jsx("i",{className:"wx-cDCz9rZQ wx-sub-icon wxi-angle-right"}):null]})}function y({options:c,left:u=0,top:e=0,at:l="bottom",parent:i=null,mount:C=null,context:x=null,css:a="",onClick:h,onCancel:d}){const[m,M]=t.useState(-1e4),[b,w]=t.useState(-1e4),[r,s]=t.useState(20),[g,N]=t.useState(),v=t.useRef(null),[D,R]=t.useState(!1),[O,$]=t.useState(null),S=t.useCallback(()=>{const o=E.calculatePosition(v.current,i,l,u,e);o&&(M(o.x),w(o.y),s(o.z),N(o.width))},[i,l,u,e]);t.useEffect(()=>{C&&C(S)},[]);const I=t.useCallback(()=>{R(!1)},[]),f=t.useCallback((o,k)=>{R(o),$(k)},[]),P=t.useMemo(()=>H(c),[c]);t.useEffect(()=>{S()},[i,S]);const j=t.useRef(h),p=t.useRef(d);return t.useEffect(()=>void(j.current=h),[h]),t.useEffect(()=>void(p.current=d),[d]),t.useEffect(()=>{if(!v.current)return;function o(k){p.current?p.current(k):j.current&&j.current({action:null,option:null})}return E.clickOutside(v.current,{callback:o,modal:!0}).destroy},[]),n.jsx("div",{ref:v,"data-wx-menu":"true",className:`wx-XMmAGqVx wx-menu ${a}`,style:{position:"absolute",top:b+"px",left:m+"px",width:g,zIndex:r},onMouseLeave:I,children:P.map(o=>n.jsxs(t.Fragment,{children:[o.comp==="separator"?n.jsx("div",{className:"wx-XMmAGqVx wx-separator"}):n.jsx(B,{option:o,onShow:f,onClick:k=>{if(!o.data&&!k.defaultPrevented){const A={context:x,action:o,option:o,event:k};o.handler&&o.handler(A),h&&h(A),k.stopPropagation()}}}),o.data&&D===o.id?n.jsx(y,{css:a,options:o.data,at:"right-overlap",parent:O,context:x,onClick:h,onCancel:d}):null]},o.id))})}const z=t.forwardRef(function(u,e){const{options:l,at:i="bottom",resolver:C=null,dataKey:x="contextId",filter:a=null,css:h="",children:d,onClick:m}=u,[M,b]=t.useState(null),[w,r]=t.useState(null),[s,g]=t.useState(0),[N,v]=t.useState(0),D=t.useRef(null),R=t.useMemo(()=>`data-${x.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,[x]),O=t.useMemo(()=>M!==null&&a?q(l,f=>a(f,M)):l,[M,a,l]);function $(f){r(null),m&&m(f)}function S(f){if(D.current===f){D.current=null;return}r(null),m&&m({action:null,option:null})}const I=t.useCallback((f,P)=>{if(!f){r(null);return}if(f.defaultPrevented)return;const j=f.target;if(j&&j.dataset&&j.dataset.menuIgnore)return;if(w&&w===j){r(null),f.preventDefault();return}g(f.clientX+1),v(f.clientY+1);let p=typeof P<"u"?P:E.locateID(j,R);C&&(p=C(p,f),!p)||(b(p),r(j),D.current=f.nativeEvent||f,f.preventDefault())},[w,R,C]);return t.useImperativeHandle(e,()=>({show:I}),[I]),n.jsxs(n.Fragment,{children:[d?n.jsx("span",{onClick:I,"data-menu-ignore":"true",children:typeof d=="function"?d():d}):null,w?n.jsx(L.Portal,{children:n.jsx(y,{css:h,at:i,top:N,left:s,parent:w,context:M,onClick:$,onCancel:S,options:O},w)}):null]})});function G(c){const{css:u="",menuCss:e="",options:l,onClick:i}=c,C=t.useMemo(()=>H(l),[l]),[x,a]=t.useState(!1),[h,d]=t.useState([]),m=t.useRef(null);function M(r){a(null),i&&i(r)}function b(r,s,g){s.data&&s.data.length?x&&g?a(null):(d(s.data),a(s.id),m.current.show(r,s)):(m.current.show(null),g?(i&&i({action:s,option:s}),a(null)):a(-1))}function w(r,s){x&&b(r,s)}return n.jsxs(n.Fragment,{children:[n.jsx("div",{className:`wx-UfhPCLL4 wx-menubar ${u}`,children:C.map(r=>n.jsx("button",{className:`wx-UfhPCLL4 wx-option ${x===r.id?"wx-active":""} ${r.disabled?"wx-disabled":""}`,onMouseEnter:s=>w(s,r),onClick:s=>b(s,r,!0),children:r.text},r.id))}),n.jsx(z,{css:e,onClick:M,options:h,ref:m})]})}const K=t.forwardRef(function(u,e){const{options:l,at:i="bottom",css:C="",children:x,onClick:a}=u,[h,d]=t.useState(null),m=t.useRef(null);function M(s){d(null),a&&a(s)}function b(s){if(m.current===s){m.current=null;return}d(null),a&&a({action:null,option:null})}const w=t.useCallback(s=>{d(s.target),m.current=s.nativeEvent||s,s.preventDefault()},[]);t.useImperativeHandle(e,()=>({show:w}),[w]);function r(s){let g=s.target;for(;!g.dataset.menuIgnore;)d(g),g=g.parentNode}return n.jsxs(n.Fragment,{children:[n.jsx("span",{onClick:r,"data-menu-ignore":"true",children:x}),h?n.jsx(L.Portal,{children:n.jsx(y,{css:C,at:i,parent:h,options:l,onClick:M,onCancel:b})}):null]})}),T=t.forwardRef(function(u,e){const{options:l,at:i="bottom",resolver:C=null,dataKey:x="contextId",filter:a=null,css:h="",children:d,onClick:m}=u,M=t.useRef(null),b=t.useCallback((w,r)=>{M.current.show(w,r)},[]);return t.useImperativeHandle(e,()=>({show:b}),[b]),n.jsxs(n.Fragment,{children:[d?n.jsx("span",{onContextMenu:b,"data-menu-ignore":"true",children:d}):null,n.jsx(z,{css:h,at:i,options:l,resolver:C,dataKey:x,filter:a,ref:M,onClick:m})]})});exports.ActionMenu=z;exports.ContextMenu=T;exports.DropDownMenu=K;exports.Menu=y;exports.MenuBar=G;exports.registerMenuItem=X;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/helpers/index.js","../src/components/MenuOption.jsx","../src/components/Menu.jsx","../src/components/ActionMenu.jsx","../src/components/MenuBar.jsx","../src/components/DropDownMenu.jsx","../src/components/ContextMenu.jsx"],"sourcesContent":["import { uid } from '@svar-ui/lib-dom';\n\nexport function walkData(data, cb) {\n data.forEach((a) => {\n cb(a);\n if (a.data && a.data.length) walkData(a.data, cb);\n });\n}\n\nexport function mapData(data, cb) {\n return data.map((a) => {\n const out = cb(a);\n if (a.data && a.data.length) out.data = mapData(a.data, cb);\n return out;\n });\n}\n\nexport function filterMenu(data, cb) {\n const out = [];\n data.forEach((a) => {\n if (a.data) {\n const sub = filterMenu(a.data, cb);\n if (sub.length) out.push({ ...a, data: sub });\n } else {\n if (cb(a)) out.push(a);\n }\n });\n\n return out;\n}\n\nexport function prepareMenuData(data) {\n return mapData(data, (a) => {\n // [deprecated] option.type to be deprecated in 3.0\n const opt = { ...a, id: a.id || uid() };\n if (opt.type) opt.comp = opt.type;\n return opt;\n });\n}\n\nconst handlers = {};\nexport function getItemHandler(type) {\n return handlers[type] || type;\n}\nexport function registerMenuItem(type, handler) {\n handlers[type] = handler;\n}\n","import { useMemo, useRef, useCallback } from 'react';\nimport { setID } from '@svar-ui/lib-dom';\nimport { getItemHandler } from '../helpers';\nimport './MenuOption.css';\n\nfunction MenuOption({ onClick: onClickProp, onShow, option }) {\n const element = useRef(null);\n\n const onHover = useCallback(() => {\n onShow(option.data ? option.id : false, element.current);\n }, [onShow, option]);\n\n const onClick = useCallback((ev) => {\n if (option.data) {\n ev.stopPropagation();\n onShow(option.id, element.current);\n return;\n }\n onClickProp(ev);\n }, [onClickProp, onShow, option]);\n\n const SubComponent = useMemo(() => {\n return option && option.comp ? getItemHandler(option.comp) : null;\n }, [option]);\n\n return (\n <div\n ref={element}\n className={`wx-cDCz9rZQ wx-option ${option.css || ''} ${option.disabled ? 'wx-disabled' : ''}`}\n data-id={setID(option.id)}\n onMouseEnter={onHover}\n onClick={onClick}\n >\n {option.icon ? (\n <i className={`wx-cDCz9rZQ wx-icon ${option.icon}`}></i>\n ) : null}\n {option.comp ? (\n SubComponent ? (\n <SubComponent item={option} option={option} />\n ) : null\n ) : (\n <span className=\"wx-cDCz9rZQ wx-value\"> {option.text} </span>\n )}\n {option.subtext ? (\n <span className=\"wx-cDCz9rZQ wx-subtext\">{option.subtext}</span>\n ) : null}\n {option.data ? (\n <i className=\"wx-cDCz9rZQ wx-sub-icon wxi-angle-right\"></i>\n ) : null}\n </div>\n );\n}\n\nexport default MenuOption;\n","import {\n Fragment,\n useState,\n useEffect,\n useMemo,\n useRef,\n useCallback,\n} from 'react';\nimport { clickOutside, calculatePosition } from '@svar-ui/lib-dom';\nimport MenuOption from './MenuOption.jsx';\nimport { prepareMenuData } from '../helpers';\nimport './Menu.css';\n\nfunction Menu({\n options,\n left = 0,\n top = 0,\n at = 'bottom',\n parent = null,\n mount = null,\n context = null,\n css = '',\n onClick,\n}) {\n const [x, setX] = useState(-10000);\n const [y, setY] = useState(-10000);\n const [z, setZ] = useState(20);\n const [width, setWidth] = useState();\n\n const selfRef = useRef(null);\n const onClickRef = useRef(onClick);\n const [showSub, setShowSub] = useState(false);\n const [activeOption, setActiveOption] = useState(null);\n\n useEffect(() => {\n onClickRef.current = onClick;\n }, [onClick]);\n\n const updatePosition = useCallback(() => {\n const result = calculatePosition(selfRef.current, parent, at, left, top);\n if (result) {\n setX(result.x);\n setY(result.y);\n setZ(result.z);\n setWidth(result.width);\n }\n }, [parent, at, left, top]);\n\n useEffect(() => {\n if (mount) mount(updatePosition);\n }, []);\n\n const onLeave = useCallback(() => {\n setShowSub(false);\n }, []);\n\n const cancel = useCallback(() => {\n // [deprecated] action will be deprecated in 3.0\n if (onClickRef.current) {\n onClickRef.current({ action: null, option: null });\n }\n }, []);\n\n const onShow = useCallback((id, el) => {\n setShowSub(id);\n setActiveOption(el);\n }, []);\n\n const finalOptions = useMemo(() => prepareMenuData(options), [options]);\n\n useEffect(() => {\n updatePosition();\n }, [parent, updatePosition]);\n\n useEffect(() => {\n if (!selfRef.current) return;\n return clickOutside(selfRef.current, { callback: cancel, modal: true })\n .destroy;\n }, [cancel]);\n\n return (\n <div\n ref={selfRef}\n data-wx-menu=\"true\"\n className={`wx-XMmAGqVx wx-menu ${css}`}\n style={{\n position: 'absolute',\n top: y + 'px',\n left: x + 'px',\n width: width,\n zIndex: z,\n }}\n onMouseLeave={onLeave}\n >\n {finalOptions.map((option) => (\n <Fragment key={option.id}>\n {option.comp === 'separator' ? (\n <div className=\"wx-XMmAGqVx wx-separator\"></div>\n ) : (\n <MenuOption\n option={option}\n onShow={onShow}\n onClick={(ev) => {\n if (!option.data && !ev.defaultPrevented) {\n // [deprecated] action will be deprecated in 3.0\n const pack = { context, action: option, option, event: ev };\n if (option.handler) option.handler(pack);\n onClick && onClick(pack);\n ev.stopPropagation();\n }\n }}\n />\n )}\n {option.data && showSub === option.id ? (\n <Menu\n css={css}\n options={option.data}\n at=\"right-overlap\"\n parent={activeOption}\n context={context}\n onClick={onClick}\n />\n ) : null}\n </Fragment>\n ))}\n </div>\n );\n}\n\nexport default Menu;\n","import {\n forwardRef,\n useCallback,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react';\nimport { Portal } from '@svar-ui/react-core';\nimport { locateID } from '@svar-ui/lib-dom';\nimport Menu from './Menu.jsx';\nimport { filterMenu } from '../helpers';\n\nconst ActionMenu = forwardRef(function ActionMenu(props, ref) {\n const {\n options,\n at = 'bottom',\n resolver = null,\n dataKey = 'contextId',\n filter = null,\n css = '',\n children,\n onClick,\n } = props;\n\n const [item, setItem] = useState(null);\n const [parent, setParent] = useState(null);\n const [left, setLeft] = useState(0);\n const [top, setTop] = useState(0);\n\n const attrName = useMemo(\n () =>\n `data-${dataKey.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase()}`,\n [dataKey],\n );\n\n const filteredOptions = useMemo(() => {\n if (item !== null && filter) {\n return filterMenu(options, (v) => filter(v, item));\n }\n return options;\n }, [item, filter, options]);\n\n const handleClick = useCallback(\n (ev) => {\n setParent(null);\n if (onClick) onClick(ev);\n },\n [onClick],\n );\n\n const show = useCallback(\n (ev, obj) => {\n if (!ev) {\n setParent(null);\n return;\n }\n\n if (ev.defaultPrevented) return;\n\n const target = ev.target;\n if (target && target.dataset && target.dataset.menuIgnore) return;\n\n setLeft(ev.clientX + 1);\n setTop(ev.clientY + 1);\n\n let nextItem =\n typeof obj !== 'undefined' ? obj : locateID(target, attrName);\n if (resolver) {\n nextItem = resolver(nextItem, ev);\n if (!nextItem) return;\n }\n\n setItem(nextItem);\n setParent(target);\n\n ev.preventDefault();\n },\n [attrName, resolver],\n );\n\n useImperativeHandle(ref, () => ({ show }), [show]);\n\n return (\n <>\n {children ? (\n <span onClick={show} data-menu-ignore=\"true\">\n {typeof children === 'function' ? children() : children}\n </span>\n ) : null}\n\n {parent ? (\n <Portal>\n <Menu\n key={parent}\n css={css}\n at={at}\n top={top}\n left={left}\n parent={parent}\n context={item}\n onClick={handleClick}\n options={filteredOptions}\n />\n </Portal>\n ) : null}\n </>\n );\n});\n\nexport default ActionMenu;\n","import { useMemo, useState, useRef } from 'react';\nimport ActionMenu from './ActionMenu.jsx';\nimport { prepareMenuData } from '../helpers';\nimport './MenuBar.css';\n\nfunction MenuBar(props) {\n const { css = '', menuCss = '', options, onClick } = props;\n\n const finalOptions = useMemo(() => prepareMenuData(options), [options]);\n\n const [active, setActive] = useState(false);\n const [menuOptions, setMenuOptions] = useState([]);\n\n const menu = useRef(null);\n\n function doClick(ev) {\n setActive(null);\n onClick && onClick(ev);\n }\n\n function setMenu(ev, option, trigger) {\n // if the option has a submenu, show it and enable hover mode\n if (option.data && option.data.length) {\n if (active && trigger) {\n // second click on option with submenu disables hover mode\n setActive(null);\n } else {\n setMenuOptions(option.data);\n setActive(option.id);\n menu.current.show(ev, option);\n }\n } else {\n // hide the submenu\n menu.current.show(null);\n // if it was the click action, dispatch it and end hover mode\n if (trigger) {\n // [deprecated] action will be deprecated in 3.0\n onClick && onClick({ action: option, option });\n setActive(null);\n } else {\n // do not remove active flag, to preserve the hover mode\n setActive(-1);\n }\n }\n }\n\n function onHover(ev, option) {\n if (active) setMenu(ev, option);\n }\n\n return (\n <>\n <div className={`wx-UfhPCLL4 wx-menubar ${css}`}>\n {finalOptions.map((option) => (\n <button\n key={option.id}\n className={`wx-UfhPCLL4 wx-option ${active === option.id ? 'wx-active' : ''} ${option.disabled ? 'wx-disabled' : ''}`}\n onMouseEnter={(ev) => onHover(ev, option)}\n onClick={(ev) => setMenu(ev, option, true)}\n >\n {option.text}\n </button>\n ))}\n </div>\n\n <ActionMenu\n css={menuCss}\n onClick={doClick}\n options={menuOptions}\n ref={menu}\n />\n </>\n );\n}\n\nexport default MenuBar;\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport { Portal } from '@svar-ui/react-core';\nimport Menu from './Menu.jsx';\n\nconst DropDownMenu = forwardRef(function DropDownMenu(props, ref) {\n const { options, at = 'bottom', css = '', children, onClick } = props;\n\n const [parent, setParent] = useState(null);\n\n function handleClick(ev) {\n setParent(null);\n onClick && onClick(ev);\n }\n\n const show = useCallback((ev) => {\n setParent(ev.target);\n ev.preventDefault();\n }, []);\n\n useImperativeHandle(ref, () => ({ show }), [show]);\n\n function showAt(ev) {\n let target = ev.target;\n while (!target.dataset.menuIgnore) {\n setParent(target);\n target = target.parentNode;\n }\n }\n\n const parentKeyRef = useRef(0);\n const lastParentRef = useRef(parent);\n useEffect(() => {\n if (lastParentRef.current !== parent) {\n parentKeyRef.current += 1;\n lastParentRef.current = parent;\n }\n }, [parent]);\n\n return (\n <>\n <span onClick={showAt} data-menu-ignore=\"true\">\n {children}\n </span>\n {parent ? (\n <Portal>\n <Menu\n key={parentKeyRef.current}\n css={css}\n at={at}\n parent={parent}\n options={options}\n onClick={handleClick}\n />\n </Portal>\n ) : null}\n </>\n );\n});\n\nexport default DropDownMenu;\n","import { forwardRef, useRef, useCallback, useImperativeHandle } from 'react';\nimport ActionMenu from './ActionMenu.jsx';\n\nconst ContextMenu = forwardRef(function ContextMenu(props, ref) {\n const {\n options,\n at = 'bottom',\n resolver = null,\n dataKey = 'contextId',\n filter = null,\n css = '',\n children,\n onClick,\n } = props;\n\n const menu = useRef(null);\n\n const show = useCallback((ev, obj) => {\n menu.current.show(ev, obj);\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n show,\n }),\n [show],\n );\n\n return (\n <>\n {children ? (\n <span onContextMenu={show} data-menu-ignore=\"true\">\n {children}\n </span>\n ) : null}\n\n <ActionMenu\n css={css}\n at={at}\n options={options}\n resolver={resolver}\n dataKey={dataKey}\n filter={filter}\n ref={menu}\n onClick={onClick}\n />\n </>\n );\n});\n\nexport default ContextMenu;\n"],"names":["mapData","data","cb","a","out","filterMenu","sub","prepareMenuData","opt","uid","handlers","getItemHandler","type","registerMenuItem","handler","MenuOption","onClickProp","onShow","option","element","useRef","onHover","useCallback","onClick","ev","SubComponent","useMemo","jsxs","setID","jsx","Menu","options","left","top","at","parent","mount","context","css","setX","useState","y","setY","z","setZ","width","setWidth","selfRef","onClickRef","showSub","setShowSub","activeOption","setActiveOption","useEffect","updatePosition","result","calculatePosition","onLeave","cancel","id","el","finalOptions","clickOutside","Fragment","pack","ActionMenu","forwardRef","props","ref","resolver","dataKey","filter","children","item","setItem","setParent","setLeft","setTop","attrName","filteredOptions","v","handleClick","show","obj","target","nextItem","locateID","useImperativeHandle","Portal","MenuBar","menuCss","active","setActive","menuOptions","setMenuOptions","menu","doClick","setMenu","trigger","DropDownMenu","showAt","parentKeyRef","lastParentRef","ContextMenu"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/helpers/index.js","../src/components/MenuOption.jsx","../src/components/Menu.jsx","../src/components/ActionMenu.jsx","../src/components/MenuBar.jsx","../src/components/DropDownMenu.jsx","../src/components/ContextMenu.jsx"],"sourcesContent":["import { uid } from '@svar-ui/lib-dom';\n\nexport function walkData(data, cb) {\n data.forEach((a) => {\n cb(a);\n if (a.data && a.data.length) walkData(a.data, cb);\n });\n}\n\nexport function mapData(data, cb) {\n return data.map((a) => {\n const out = cb(a);\n if (a.data && a.data.length) out.data = mapData(a.data, cb);\n return out;\n });\n}\n\nexport function filterMenu(data, cb) {\n const out = [];\n data.forEach((a) => {\n if (a.data) {\n const sub = filterMenu(a.data, cb);\n if (sub.length) out.push({ ...a, data: sub });\n } else {\n if (cb(a)) out.push(a);\n }\n });\n\n return out;\n}\n\nexport function prepareMenuData(data) {\n return mapData(data, (a) => {\n // [deprecated] option.type to be deprecated in 3.0\n const opt = { ...a, id: a.id || uid() };\n if (opt.type) opt.comp = opt.type;\n return opt;\n });\n}\n\nconst handlers = {};\nexport function getItemHandler(type) {\n return handlers[type] || type;\n}\nexport function registerMenuItem(type, handler) {\n handlers[type] = handler;\n}\n","import { useMemo, useRef, useCallback } from 'react';\nimport { setID } from '@svar-ui/lib-dom';\nimport { getItemHandler } from '../helpers';\nimport './MenuOption.css';\n\nfunction MenuOption({ onClick: onClickProp, onShow, option }) {\n const element = useRef(null);\n\n const onHover = useCallback(() => {\n onShow(option.data ? option.id : false, element.current);\n }, [onShow, option]);\n\n const onClick = useCallback((ev) => {\n if (option.data) {\n ev.stopPropagation();\n onShow(option.id, element.current);\n return;\n }\n onClickProp(ev);\n }, [onClickProp, onShow, option]);\n\n const SubComponent = useMemo(() => {\n return option && option.comp ? getItemHandler(option.comp) : null;\n }, [option]);\n\n return (\n <div\n ref={element}\n className={`wx-cDCz9rZQ wx-option ${option.css || ''} ${option.disabled ? 'wx-disabled' : ''}`}\n data-id={setID(option.id)}\n onMouseEnter={onHover}\n onClick={onClick}\n >\n {option.icon ? (\n <i className={`wx-cDCz9rZQ wx-icon ${option.icon}`}></i>\n ) : null}\n {option.comp ? (\n SubComponent ? (\n <SubComponent item={option} option={option} />\n ) : null\n ) : (\n <span className=\"wx-cDCz9rZQ wx-value\"> {option.text} </span>\n )}\n {option.subtext ? (\n <span className=\"wx-cDCz9rZQ wx-subtext\">{option.subtext}</span>\n ) : null}\n {option.data ? (\n <i className=\"wx-cDCz9rZQ wx-sub-icon wxi-angle-right\"></i>\n ) : null}\n </div>\n );\n}\n\nexport default MenuOption;\n","import {\n Fragment,\n useState,\n useEffect,\n useMemo,\n useRef,\n useCallback,\n} from 'react';\nimport { clickOutside, calculatePosition } from '@svar-ui/lib-dom';\nimport MenuOption from './MenuOption.jsx';\nimport { prepareMenuData } from '../helpers';\nimport './Menu.css';\n\nfunction Menu({\n options,\n left = 0,\n top = 0,\n at = 'bottom',\n parent = null,\n mount = null,\n context = null,\n css = '',\n onClick,\n onCancel,\n}) {\n const [x, setX] = useState(-10000);\n const [y, setY] = useState(-10000);\n const [z, setZ] = useState(20);\n const [width, setWidth] = useState();\n\n const selfRef = useRef(null);\n const [showSub, setShowSub] = useState(false);\n const [activeOption, setActiveOption] = useState(null);\n\n const updatePosition = useCallback(() => {\n const result = calculatePosition(selfRef.current, parent, at, left, top);\n if (result) {\n setX(result.x);\n setY(result.y);\n setZ(result.z);\n setWidth(result.width);\n }\n }, [parent, at, left, top]);\n\n useEffect(() => {\n if (mount) mount(updatePosition);\n }, []);\n\n const onLeave = useCallback(() => {\n setShowSub(false);\n }, []);\n\n const onShow = useCallback((id, el) => {\n setShowSub(id);\n setActiveOption(el);\n }, []);\n\n const finalOptions = useMemo(() => prepareMenuData(options), [options]);\n\n useEffect(() => {\n updatePosition();\n }, [parent, updatePosition]);\n\n // Callbacks in ref to prevent clickOutside from re-registering in its useEffect\n const onClickRef = useRef(onClick);\n const onCancelRef = useRef(onCancel);\n useEffect(() => void (onClickRef.current = onClick), [onClick]);\n useEffect(() => void (onCancelRef.current = onCancel), [onCancel]);\n\n // Register click outside handler\n useEffect(() => {\n if (!selfRef.current) return;\n function callback(ev) {\n // Call onCancel if provided, otherwise call onClick\n if (onCancelRef.current) {\n onCancelRef.current(ev);\n } else if (onClickRef.current) {\n // [deprecated] action will be deprecated in 3.0\n onClickRef.current({ action: null, option: null });\n }\n }\n return clickOutside(selfRef.current, { callback, modal: true }).destroy;\n }, []);\n\n return (\n <div\n ref={selfRef}\n data-wx-menu=\"true\"\n className={`wx-XMmAGqVx wx-menu ${css}`}\n style={{\n position: 'absolute',\n top: y + 'px',\n left: x + 'px',\n width: width,\n zIndex: z,\n }}\n onMouseLeave={onLeave}\n >\n {finalOptions.map((option) => (\n <Fragment key={option.id}>\n {option.comp === 'separator' ? (\n <div className=\"wx-XMmAGqVx wx-separator\"></div>\n ) : (\n <MenuOption\n option={option}\n onShow={onShow}\n onClick={(ev) => {\n if (!option.data && !ev.defaultPrevented) {\n // [deprecated] action will be deprecated in 3.0\n const pack = { context, action: option, option, event: ev };\n if (option.handler) option.handler(pack);\n onClick && onClick(pack);\n ev.stopPropagation();\n }\n }}\n />\n )}\n {option.data && showSub === option.id ? (\n <Menu\n css={css}\n options={option.data}\n at=\"right-overlap\"\n parent={activeOption}\n context={context}\n onClick={onClick}\n onCancel={onCancel}\n />\n ) : null}\n </Fragment>\n ))}\n </div>\n );\n}\n\nexport default Menu;\n","import {\n forwardRef,\n useCallback,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { Portal } from '@svar-ui/react-core';\nimport { locateID } from '@svar-ui/lib-dom';\nimport Menu from './Menu.jsx';\nimport { filterMenu } from '../helpers';\n\nconst ActionMenu = forwardRef(function ActionMenu(props, ref) {\n const {\n options,\n at = 'bottom',\n resolver = null,\n dataKey = 'contextId',\n filter = null,\n css = '',\n children,\n onClick,\n } = props;\n\n const [item, setItem] = useState(null);\n const [parent, setParent] = useState(null);\n const [left, setLeft] = useState(0);\n const [top, setTop] = useState(0);\n\n // Ref to the event that triggered the menu, used to\n // prevent the menu from closing immediately after opening\n const showEventRef = useRef(null);\n\n const attrName = useMemo(\n () =>\n `data-${dataKey.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase()}`,\n [dataKey],\n );\n\n const filteredOptions = useMemo(() => {\n if (item !== null && filter) {\n return filterMenu(options, (v) => filter(v, item));\n }\n return options;\n }, [item, filter, options]);\n\n function handleClick(ev) {\n setParent(null);\n onClick && onClick(ev);\n }\n\n function handleCancel(ev) {\n // Prevent closing from the event that opened the menu\n if (showEventRef.current === ev) {\n showEventRef.current = null;\n return;\n }\n setParent(null);\n // [deprecated] action will be deprecated in 3.0\n onClick && onClick({ action: null, option: null });\n }\n\n const show = useCallback(\n (ev, obj) => {\n if (!ev) {\n setParent(null);\n return;\n }\n\n if (ev.defaultPrevented) return;\n\n const target = ev.target;\n if (target && target.dataset && target.dataset.menuIgnore) return;\n\n // Close if the same target is clicked again\n if (parent && parent === target) {\n setParent(null);\n // Prevent browser context menu\n ev.preventDefault();\n return;\n }\n\n setLeft(ev.clientX + 1);\n setTop(ev.clientY + 1);\n\n let nextItem =\n typeof obj !== 'undefined' ? obj : locateID(target, attrName);\n if (resolver) {\n nextItem = resolver(nextItem, ev);\n if (!nextItem) return;\n }\n\n setItem(nextItem);\n setParent(target);\n\n showEventRef.current = ev.nativeEvent || ev;\n ev.preventDefault();\n },\n [parent, attrName, resolver],\n );\n\n useImperativeHandle(ref, () => ({ show }), [show]);\n\n return (\n <>\n {children ? (\n <span onClick={show} data-menu-ignore=\"true\">\n {typeof children === 'function' ? children() : children}\n </span>\n ) : null}\n\n {parent ? (\n <Portal>\n <Menu\n key={parent}\n css={css}\n at={at}\n top={top}\n left={left}\n parent={parent}\n context={item}\n onClick={handleClick}\n onCancel={handleCancel}\n options={filteredOptions}\n />\n </Portal>\n ) : null}\n </>\n );\n});\n\nexport default ActionMenu;\n","import { useMemo, useState, useRef } from 'react';\nimport ActionMenu from './ActionMenu.jsx';\nimport { prepareMenuData } from '../helpers';\nimport './MenuBar.css';\n\nfunction MenuBar(props) {\n const { css = '', menuCss = '', options, onClick } = props;\n\n const finalOptions = useMemo(() => prepareMenuData(options), [options]);\n\n const [active, setActive] = useState(false);\n const [menuOptions, setMenuOptions] = useState([]);\n\n const menu = useRef(null);\n\n function doClick(ev) {\n setActive(null);\n onClick && onClick(ev);\n }\n\n function setMenu(ev, option, trigger) {\n // if the option has a submenu, show it and enable hover mode\n if (option.data && option.data.length) {\n if (active && trigger) {\n // second click on option with submenu disables hover mode\n setActive(null);\n } else {\n setMenuOptions(option.data);\n setActive(option.id);\n menu.current.show(ev, option);\n }\n } else {\n // hide the submenu\n menu.current.show(null);\n // if it was the click action, dispatch it and end hover mode\n if (trigger) {\n // [deprecated] action will be deprecated in 3.0\n onClick && onClick({ action: option, option });\n setActive(null);\n } else {\n // do not remove active flag, to preserve the hover mode\n setActive(-1);\n }\n }\n }\n\n function onHover(ev, option) {\n if (active) setMenu(ev, option);\n }\n\n return (\n <>\n <div className={`wx-UfhPCLL4 wx-menubar ${css}`}>\n {finalOptions.map((option) => (\n <button\n key={option.id}\n className={`wx-UfhPCLL4 wx-option ${active === option.id ? 'wx-active' : ''} ${option.disabled ? 'wx-disabled' : ''}`}\n onMouseEnter={(ev) => onHover(ev, option)}\n onClick={(ev) => setMenu(ev, option, true)}\n >\n {option.text}\n </button>\n ))}\n </div>\n\n <ActionMenu\n css={menuCss}\n onClick={doClick}\n options={menuOptions}\n ref={menu}\n />\n </>\n );\n}\n\nexport default MenuBar;\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport { Portal } from '@svar-ui/react-core';\nimport Menu from './Menu.jsx';\n\nconst DropDownMenu = forwardRef(function DropDownMenu(props, ref) {\n const { options, at = 'bottom', css = '', children, onClick } = props;\n\n const [parent, setParent] = useState(null);\n\n // Ref to the event that triggered the menu, used to\n // prevent the menu from closing immediately after opening\n const showEventRef = useRef(null);\n\n function handleClick(ev) {\n setParent(null);\n onClick && onClick(ev);\n }\n\n function handleCancel(ev) {\n // Prevent closing from the event that opened the menu\n if (showEventRef.current === ev) {\n showEventRef.current = null;\n return;\n }\n setParent(null);\n // [deprecated] action will be deprecated in 3.0\n onClick && onClick({ action: null, option: null });\n }\n\n const show = useCallback((ev) => {\n setParent(ev.target);\n showEventRef.current = ev.nativeEvent || ev;\n ev.preventDefault();\n }, []);\n\n useImperativeHandle(ref, () => ({ show }), [show]);\n\n function showAt(ev) {\n let target = ev.target;\n while (!target.dataset.menuIgnore) {\n setParent(target);\n target = target.parentNode;\n }\n }\n\n return (\n <>\n <span onClick={showAt} data-menu-ignore=\"true\">\n {children}\n </span>\n {parent ? (\n <Portal>\n <Menu\n css={css}\n at={at}\n parent={parent}\n options={options}\n onClick={handleClick}\n onCancel={handleCancel}\n />\n </Portal>\n ) : null}\n </>\n );\n});\n\nexport default DropDownMenu;\n","import { forwardRef, useRef, useCallback, useImperativeHandle } from 'react';\nimport ActionMenu from './ActionMenu.jsx';\n\nconst ContextMenu = forwardRef(function ContextMenu(props, ref) {\n const {\n options,\n at = 'bottom',\n resolver = null,\n dataKey = 'contextId',\n filter = null,\n css = '',\n children,\n onClick,\n } = props;\n\n const menu = useRef(null);\n\n const show = useCallback((ev, obj) => {\n menu.current.show(ev, obj);\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n show,\n }),\n [show],\n );\n\n return (\n <>\n {children ? (\n <span onContextMenu={show} data-menu-ignore=\"true\">\n {children}\n </span>\n ) : null}\n\n <ActionMenu\n css={css}\n at={at}\n options={options}\n resolver={resolver}\n dataKey={dataKey}\n filter={filter}\n ref={menu}\n onClick={onClick}\n />\n </>\n );\n});\n\nexport default ContextMenu;\n"],"names":["mapData","data","cb","a","out","filterMenu","sub","prepareMenuData","opt","uid","handlers","getItemHandler","type","registerMenuItem","handler","MenuOption","onClickProp","onShow","option","element","useRef","onHover","useCallback","onClick","ev","SubComponent","useMemo","jsxs","setID","jsx","Menu","options","left","top","at","parent","mount","context","css","onCancel","x","setX","useState","y","setY","z","setZ","width","setWidth","selfRef","showSub","setShowSub","activeOption","setActiveOption","updatePosition","result","calculatePosition","useEffect","onLeave","id","el","finalOptions","onClickRef","onCancelRef","callback","clickOutside","Fragment","pack","ActionMenu","forwardRef","props","ref","resolver","dataKey","filter","children","item","setItem","setParent","setLeft","setTop","showEventRef","attrName","filteredOptions","v","handleClick","handleCancel","show","obj","target","nextItem","locateID","useImperativeHandle","Portal","MenuBar","menuCss","active","setActive","menuOptions","setMenuOptions","menu","doClick","setMenu","trigger","DropDownMenu","showAt","ContextMenu"],"mappings":"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"}
|