@lanaco/lnc-react-ui
Version:
React component library
2 lines (1 loc) • 1.26 kB
JavaScript
;const W=require("react/jsx-runtime"),t=require("react"),i=require("./emotion-styled.browser.esm-DwHBgTPn.cjs"),g=require("./useUpdateEffect-BtMgpgIV.cjs"),v=i.styled.div``,P=t.forwardRef((m,T)=>{const{defaultViewType:a,activeViewType:r,className:w="",children:f,...I}=m,[o,n]=t.useState(r||a),s=t.useRef([a]);t.useImperativeHandle(T,()=>({changeView(e){N(e)},goToBackView(){p()}})),g.useUpdateEffect(()=>{n(r)},[r]);const N=e=>{n(e),s.current.push(e)},p=()=>{var e;s.current.pop(),((e=s.current)==null?void 0:e.length)>0&&n(s.current[s.current.length-1])},A=t.Children.map(f,e=>{var _,u,E,V,y;if(t.isValidElement(e)&&(e.props.__TYPE__=="TABLE_VIEW"||((_=e==null?void 0:e.type)==null?void 0:_.displayName)==="TABLE_VIEW"||e.props.__TYPE__=="DETAILS_VIEW"||((u=e==null?void 0:e.type)==null?void 0:u.displayName)==="DETAILS_VIEW"||e.props.__TYPE__=="FORM_VIEW"||((E=e==null?void 0:e.type)==null?void 0:E.displayName)==="FORM_VIEW"||e.props.__TYPE__=="KANBAN_VIEW"||((V=e==null?void 0:e.type)==null?void 0:V.displayName)==="KANBAN_VIEW")&&(e.props.__TYPE__==o||((y=e==null?void 0:e.type)==null?void 0:y.displayName)===o))return t.cloneElement(e,{goToPreviousView:p})});return W.jsx(v,{className:"lnc-ui-dataview "+w,...I,children:A})});module.exports=P;