dinocollab-shared 1.2.6 → 1.2.7
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/cart/widget.js +1 -1
- package/dist/editor-kit/helpers.js +1 -1
- package/dist/editor-kit/helpers.js.map +1 -1
- package/dist/types/editor-kit/helpers.d.ts.map +1 -1
- package/dist/types/menu-bar/creator.d.ts +27 -0
- package/dist/types/menu-bar/creator.d.ts.map +1 -0
- package/dist/types/menu-bar/helpers.d.ts +8 -0
- package/dist/types/menu-bar/helpers.d.ts.map +1 -0
- package/dist/types/menu-bar/index.d.ts +4 -0
- package/dist/types/menu-bar/index.d.ts.map +1 -0
- package/dist/types/menu-bar/menu-info.d.ts +31 -0
- package/dist/types/menu-bar/menu-info.d.ts.map +1 -0
- package/dist/types/menu-bar/styled.d.ts +27 -0
- package/dist/types/menu-bar/styled.d.ts.map +1 -0
- package/dist/types/menu-bar/types.d.ts +43 -0
- package/dist/types/menu-bar/types.d.ts.map +1 -0
- package/dist/types/menu-bar/units.d.ts +26 -0
- package/dist/types/menu-bar/units.d.ts.map +1 -0
- package/package.json +1 -1
package/dist/cart/widget.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{inherits as r,createClass as e,objectSpread2 as t,classCallCheck as n,callSuper as o,defineProperty as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as l,jsxs as a}from"react/jsx-runtime";import{Component as c,Fragment as s}from"react";import{ImageWithFallback as d}from"dinocollab-core/components";import{Badge as m,Typography as u,Divider as p,Button as h,Box as f,IconButton as v}from"@mui/material";import C from"@mui/icons-material/Remove";import g from"@mui/icons-material/ShoppingCartOutlined";import x from"@mui/icons-material/ShoppingCartCheckout";import{getTotalData as b}from"./helpers.js";import{
|
|
1
|
+
import{inherits as r,createClass as e,objectSpread2 as t,classCallCheck as n,callSuper as o,defineProperty as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as l,jsxs as a}from"react/jsx-runtime";import{Component as c,Fragment as s}from"react";import{ImageWithFallback as d}from"dinocollab-core/components";import{Badge as m,Typography as u,Divider as p,Button as h,Box as f,IconButton as v}from"@mui/material";import C from"@mui/icons-material/Remove";import g from"@mui/icons-material/ShoppingCartOutlined";import x from"@mui/icons-material/ShoppingCartCheckout";import{getTotalData as b}from"./helpers.js";import{IconButtonDark as y}from"../components/buttons.js";import{NoDataPanel as k}from"../components/no-data-panel.js";import{MenuStyled as P,CartContentStyled as T,cartContentClasses as S}from"./styled.js";var N=function(){function N(r){var e;return n(this,N),e=o(this,N,[r]),i(e,"render",function(){var r;return a(s,{children:[l(y,{onClick:function(r){return e.onOpen(r.currentTarget)},children:l(m,{badgeContent:e.state.hydrated&&null!==(r=e.carts.length)&&void 0!==r?r:0,color:"error",children:l(g,{fontSize:"small"})})}),l(P,{disableScrollLock:!0,anchorEl:e.state.anchorEl,open:Boolean(e.state.anchorEl),onClose:e.onClose,anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},MenuListProps:{component:"div"},children:e.renderContent()})]})}),i(e,"renderContent",function(){var r,n=b(e.carts);return a(T,{children:[a("div",{className:S.header,children:[a(u,{variant:"h6",component:"span",sx:{flex:1},children:["Your Cart (",null!==(r=n.quantity)&&void 0!==r?r:0," items)"]}),a(u,{variant:"h6",component:"span",children:["Total: $ ",n.price.toFixed(2)]})]}),l(p,{}),a("div",{className:S.items,children:[e.carts.map(function(r,t){return l(s,{children:e.renderItem(r)},"key"+t)}),e.carts.length<1&&l(k,{title:"Your cart is empty",subTitle:"Try adding some products",sx:{height:"100%"}})]}),l(p,{}),l("div",{className:S.footer,children:l(h,t(t(t({},e.props.hrefCart?{component:"a",href:e.props.hrefCart}:{}),{},{color:"inherit",endIcon:l(x,{}),onClick:function(r){e.onClose(),e.props.onMoveToCartClick&&e.props.onMoveToCartClick(r)},disabled:e.carts.length<1},e.props.buttonMoveToCartProps),{},{children:"Show in cart"}))})]})}),i(e,"renderTitle",function(r){var n,o=e.props,i=o.itemTitleProps,a=o.itemTitlePropsGetter,c=a?a(r,e.onClose):null!=i?i:{};return l(u,t(t({className:S.itemTitle,noWrap:!0,variant:"subtitle1"},c),{},{children:null!==(n=r.ProductName)&&void 0!==n?n:"Unknown Product"}))}),i(e,"renderItem",function(r){var t,n,o,i;return a("div",{className:S.item,children:[l(d,{className:S.itemImg,src:null==r?void 0:r.PictureUrl,title:null==r?void 0:r.PictureUrl,fallbackSrc:"images/default-video.webp",alt:"product-picture"}),a("div",{className:S.itemContent,children:[l(u,{className:S.itemTag,variant:"caption",sx:{color:null!==(t=r.PriceColor)&&void 0!==t?t:"#000"},children:null!==(n=r.PriceName)&&void 0!==n?n:"Unknown Price"}),e.renderTitle(r),a(f,{sx:{display:"flex",alignItems:"flex-end",gap:"2px",justifyContent:"flex-end"},children:[a(u,{variant:"subtitle1",children:["$ ",null!==(o=r.Price)&&void 0!==o?o:0]}),a(u,{variant:"body1",sx:{fontSize:"14px",mb:"3px",color:"#818181"},children:["x",null!==(i=r.Amount)&&void 0!==i?i:0," urls"]})]})]}),l(v,{size:"small",onClick:function(){var t,n;return null===(t=(n=e.props).onRemoveCart)||void 0===t?void 0:t.call(n,r)},sx:{color:"#818181"},children:l(C,{})})]})}),i(e,"onOpen",function(r){e.setState({anchorEl:r})}),i(e,"onClose",function(){e.setState({anchorEl:null})}),e.state={anchorEl:null,hydrated:!1},e}return r(N,c),e(N,[{key:"carts",get:function(){var r;return null!==(r=this.props.carts)&&void 0!==r?r:[]}},{key:"componentDidMount",value:function(){this.setState({hydrated:!0})}}])}(),j=function(r){var e=function(e){return l(N,t(t({},r),e))};return e.displayName="CartWidget",e};export{N as CartWidget,j as createCartWidget};
|
|
2
2
|
//# sourceMappingURL=widget.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineProperty as t,createForOfIteratorHelper as e,typeof as n}from"../_virtual/_rollupPluginBabelHelpers.js";import{useEffect as o}from"react";import"events";var i={button:"editor-kit-btn",auto:"editor-kit-btn--auto"},r="data-editor-key",a=function(e){return t({},r,e)},d="data-editor-auto-mounted",c=function(t){t instanceof HTMLElement&&(t.querySelectorAll(".".concat(i.auto)).forEach(function(t){return t.remove()}),t.removeAttribute(d))},l=null,u=function(){l&&(l.disconnect(),l=null);try{document.querySelectorAll("[".concat(d,"]")).forEach(c)}catch(t){}},s=function(){if("undefined"!=typeof document&&!document.getElementById("editor-kit-styles")){var t=document.createElement("style");t.id="editor-kit-styles",t.textContent="\n [data-editor-key] {\n position: relative;\n border: 1px dashed rgba(255, 0, 0, 0.4);\n min-height: 40px;\n padding-top: 4px;\n }\n\n .editor-kit-btn {\n appearance: none;\n border: 0;\n background:
|
|
1
|
+
import{defineProperty as t,createForOfIteratorHelper as e,typeof as n}from"../_virtual/_rollupPluginBabelHelpers.js";import{useEffect as o}from"react";import"events";var i={button:"editor-kit-btn",auto:"editor-kit-btn--auto"},r="data-editor-key",a=function(e){return t({},r,e)},d="data-editor-auto-mounted",c=function(t){t instanceof HTMLElement&&(t.querySelectorAll(".".concat(i.auto)).forEach(function(t){return t.remove()}),t.removeAttribute(d))},l=null,u=function(){l&&(l.disconnect(),l=null);try{document.querySelectorAll("[".concat(d,"]")).forEach(c)}catch(t){}},s=function(){if("undefined"!=typeof document&&!document.getElementById("editor-kit-styles")){var t=document.createElement("style");t.id="editor-kit-styles",t.textContent="\n [data-editor-key] {\n position: relative;\n border: 1px dashed rgba(255, 0, 0, 0.4);\n min-height: 40px;\n padding-top: 4px;\n }\n\n .editor-kit-btn {\n appearance: none;\n border: 0;\n background: #00C853;\n color: #fff;\n box-shadow: 0 0 8px rgba(255,255,255,0.3);\n cursor: pointer;\n border-radius: 4px;\n padding: 4px 8px;\n font-size: 12px;\n line-height: 1;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-weight: 600;\n transition: all 0.2s ease;\n }\n\n .editor-kit-btn--auto {\n position: absolute;\n top: 4px;\n right: 4px;\n z-index: 9999;\n }\n\n .editor-kit-btn:hover,\n .editor-kit-btn:focus {\n background: #00B249;\n outline: none;\n }\n\n .editor-kit-btn:active {\n background: #009624;\n }\n ",document.head.appendChild(t)}},f=function(t){if(t instanceof HTMLElement&&!t.hasAttribute(d)){var e=t.getAttribute(r);if(e){var n=document.createElement("button");n.type="button",n.className=[i.button,i.auto].join(" "),n.textContent="Edit",n.title="Edit",n.addEventListener("click",function(n){n.preventDefault(),n.stopPropagation();var o=t.getAttribute("data-editor-index");window.parent.postMessage({type:"EDITOR_KIT_EDIT",key:e,index:o?parseInt(o):null},"*")}),t.appendChild(n),t.setAttribute(d,"1")}}},p=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document,e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{var n=t.querySelectorAll("[".concat(r,"]:not([").concat(d,"])"));(e||n.length>0)&&console.log("[EditorKit Client] Found",n.length,"unmounted elements"),n.forEach(f)}catch(t){console.error("[EditorKit Client] Error scanning:",t)}},m=function(){"undefined"!=typeof window&&"undefined"!=typeof document&&(console.log("[EditorKit Client] Starting auto-mount for iframe..."),p(document,!0),l&&l.disconnect(),(l=new MutationObserver(function(t){var n,o=e(t);try{for(o.s();!(n=o.n()).done;){var i=n.value;"childList"===i.type?i.addedNodes.forEach(function(t){t instanceof Element&&(t.hasAttribute(r)?f(t):t.children.length>0&&p(t))}):"attributes"===i.type&&i.target instanceof Element&&i.attributeName===r&&f(i.target)}}catch(t){o.e(t)}finally{o.f()}})).observe(document.documentElement||document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[r]}),console.log("[EditorKit Client] Auto-mount started"))},E=function(){if("undefined"!=typeof window){s();var t=null;window.addEventListener("message",function(e){var o,i,a=null===(o=e.data)||void 0===o?void 0:o.type;if(a&&a.startsWith("EDITOR_KIT_"))switch(a){case"EDITOR_KIT_INIT":t=e.data.data,console.log("[EditorKit Client] Initialized with data"),window.parent.postMessage({type:"EDITOR_KIT_READY"},"*"),m();break;case"EDITOR_KIT_UPDATE_DATA":t=e.data.data,console.log("[EditorKit Client] Data updated"),(i=t)&&Object.keys(i).forEach(function(t){document.querySelectorAll("[".concat(r,'="').concat(t,'"]')).forEach(function(e){var o,r=e.getAttribute("data-editor-index"),a=null!==r?null===(o=i[t])||void 0===o?void 0:o[parseInt(r)]:i[t];if(null!=a)if("string"==typeof a){var d=Array.from(e.childNodes).find(function(t){return t.nodeType===Node.TEXT_NODE});d?d.textContent=a:e.textContent=a}else"object"===n(a)&&e.dispatchEvent(new CustomEvent("editor-kit-data-update",{detail:a}))})})}})}},b=function(){o(function(){return window.parent!==window&&(console.log("[useEditorKitClient] Initializing in iframe mode..."),s(),m(),E(),window.parent.postMessage({type:"EDITOR_KIT_CLIENT_READY"},"*")),function(){u()}},[])};export{r as EDIT_KEY,i as editKitClasses,a as getFieldEditor,E as initEditorKitClient,s as injectEditorKitStyles,m as startAutoMountForIframe,u as stopAutoMount,b as useEditorKitClient};
|
|
2
2
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sources":["../../src/editor-kit/helpers.ts"],"sourcesContent":["import { useEffect } from 'react'\r\nimport { getEditorKitEvent } from './events'\r\n\r\nexport const editKitClasses = {\r\n root: 'editor-kit-root',\r\n button: 'editor-kit-btn',\r\n auto: 'editor-kit-btn--auto'\r\n}\r\n\r\nexport const EDIT_KEY = 'data-editor-key'\r\n\r\n// event emitted when an edit button is clicked\r\nexport const EDIT_EVENT = 'editor-kit:edit'\r\n\r\n// Keep this minimal and non-intrusive for landing pages: only a data attribute.\r\nexport const getFieldEditor = <T = any>(key: keyof T) => ({ [EDIT_KEY]: key })\r\n\r\n/* --- Editor-mode auto-mount (minimal & opt-in) ---\r\n Behaviour:\r\n - Does nothing on landing pages by default.\r\n - Finds elements with [data-editor-key] and appends a small positioned Edit button when started.\r\n - Exports startAutoMount/stopAutoMount for manual control from an editor wrapper.\r\n*/\r\nconst AUTO_MOUNT_MARK = 'data-editor-auto-mounted'\r\n\r\nconst mountButtonOnElement = (el: Element) => {\r\n if (!(el instanceof HTMLElement)) return\r\n if (el.hasAttribute(AUTO_MOUNT_MARK)) return\r\n const key = el.getAttribute(EDIT_KEY)\r\n if (!key) return\r\n\r\n const btn = document.createElement('button')\r\n btn.type = 'button'\r\n btn.className = [editKitClasses.button, editKitClasses.auto].join(' ')\r\n btn.textContent = 'Edit'\r\n btn.title = 'Edit'\r\n\r\n // emit the edit event via the EditorKitEvent emitter so it doesn't pollute window\r\n btn.addEventListener('click', () => {\r\n try {\r\n const ee = getEditorKitEvent()\r\n if (ee) {\r\n // use the stateChange channel to signal editor UI; payload includes key\r\n ee.emit('stateChange', { key })\r\n } else {\r\n // fallback to window event if emitter not available\r\n window.dispatchEvent(new CustomEvent(EDIT_EVENT, { detail: { key } }))\r\n }\r\n } catch (err) {\r\n // graceful fallback\r\n window.dispatchEvent(new CustomEvent(EDIT_EVENT, { detail: { key } }))\r\n }\r\n })\r\n\r\n // Styling and parent positioning are handled by `style.scss` which is imported\r\n // from the editor component. This keeps helpers passive on landing pages.\r\n el.appendChild(btn)\r\n el.setAttribute(AUTO_MOUNT_MARK, '1')\r\n}\r\n\r\nconst unmountButtonsFromElement = (el: Element) => {\r\n if (!(el instanceof HTMLElement)) return\r\n const buttons = el.querySelectorAll(`.${editKitClasses.auto}`)\r\n buttons.forEach((btn) => btn.remove())\r\n el.removeAttribute(AUTO_MOUNT_MARK)\r\n}\r\n\r\nconst scanAndMount = (root: ParentNode = document) => {\r\n try {\r\n root.querySelectorAll(`[${EDIT_KEY}]`).forEach(mountButtonOnElement)\r\n } catch {\r\n // no-op in non-DOM envs\r\n }\r\n}\r\n\r\nlet _observer: MutationObserver | null = null\r\n\r\nexport const startAutoMount = () => {\r\n if (typeof window === 'undefined' || typeof document === 'undefined') return\r\n if (_observer) return // already started\r\n\r\n // Inject CSS styles\r\n injectEditorKitStyles()\r\n\r\n scanAndMount(document)\r\n _observer = new MutationObserver((mutations) => {\r\n for (const m of mutations) {\r\n if (m.type === 'childList') {\r\n m.addedNodes.forEach((n) => {\r\n if (n instanceof Element) {\r\n if (n.hasAttribute(EDIT_KEY)) mountButtonOnElement(n)\r\n scanAndMount(n)\r\n }\r\n })\r\n } else if (m.type === 'attributes' && m.target instanceof Element) {\r\n if (m.attributeName === EDIT_KEY) mountButtonOnElement(m.target)\r\n }\r\n }\r\n })\r\n _observer.observe(document.documentElement || document.body, {\r\n childList: true,\r\n subtree: true,\r\n attributes: true,\r\n attributeFilter: [EDIT_KEY]\r\n })\r\n}\r\n\r\nexport const stopAutoMount = () => {\r\n if (_observer) {\r\n _observer.disconnect()\r\n _observer = null\r\n }\r\n // Cleanup all mounted buttons\r\n try {\r\n document.querySelectorAll(`[${AUTO_MOUNT_MARK}]`).forEach(unmountButtonsFromElement)\r\n } catch {\r\n // no-op\r\n }\r\n}\r\n\r\n/* --- Inject CSS Styles ---\r\n Inject editor kit styles dynamically\r\n Used by both Normal mode and Iframe mode\r\n*/\r\nexport const injectEditorKitStyles = () => {\r\n if (typeof document === 'undefined') return\r\n\r\n // Check if already injected\r\n if (document.getElementById('editor-kit-styles')) return\r\n\r\n const style = document.createElement('style')\r\n style.id = 'editor-kit-styles'\r\n style.textContent = `\r\n [data-editor-key] {\r\n position: relative;\r\n border: 1px dashed rgba(255, 0, 0, 0.4);\r\n min-height: 40px;\r\n padding-top: 4px;\r\n }\r\n\r\n .editor-kit-btn {\r\n appearance: none;\r\n border: 0;\r\n background: rgba(0, 0, 0, 0.6);\r\n color: #fff;\r\n cursor: pointer;\r\n border-radius: 4px;\r\n padding: 4px 8px;\r\n font-size: 12px;\r\n line-height: 1;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n font-weight: 500;\r\n transition: all 0.2s ease;\r\n }\r\n\r\n .editor-kit-btn--auto {\r\n position: absolute;\r\n top: 4px;\r\n right: 4px;\r\n z-index: 9999;\r\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);\r\n }\r\n\r\n .editor-kit-btn:hover,\r\n .editor-kit-btn:focus {\r\n background: rgba(0, 0, 0, 0.8);\r\n outline: none;\r\n transform: scale(1.05);\r\n }\r\n\r\n .editor-kit-btn:active {\r\n transform: scale(0.95);\r\n }\r\n `\r\n document.head.appendChild(style)\r\n}\r\n\r\n/* --- Iframe Client Mode ---\r\n Initialize editor kit client for landing pages loaded in iframe\r\n*/\r\n\r\n// Mount button for iframe mode - sends postMessage instead of event\r\nconst mountButtonForIframe = (el: Element) => {\r\n if (!(el instanceof HTMLElement)) return\r\n if (el.hasAttribute(AUTO_MOUNT_MARK)) return\r\n const key = el.getAttribute(EDIT_KEY)\r\n if (!key) return\r\n\r\n const btn = document.createElement('button')\r\n btn.type = 'button'\r\n btn.className = [editKitClasses.button, editKitClasses.auto].join(' ')\r\n btn.textContent = 'Edit'\r\n btn.title = 'Edit'\r\n\r\n // Click handler sends message to parent window\r\n btn.addEventListener('click', (e) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n\r\n const indexAttr = el.getAttribute('data-editor-index')\r\n\r\n // Send message to Admin parent\r\n window.parent.postMessage({ type: 'EDITOR_KIT_EDIT', key: key, index: indexAttr ? parseInt(indexAttr) : null }, '*')\r\n })\r\n\r\n el.appendChild(btn)\r\n el.setAttribute(AUTO_MOUNT_MARK, '1')\r\n}\r\n\r\n// Scan and mount for iframe\r\nconst scanAndMountForIframe = (root: ParentNode = document, isInitialScan = false) => {\r\n try {\r\n const elements = root.querySelectorAll(`[${EDIT_KEY}]:not([${AUTO_MOUNT_MARK}])`)\r\n // Only log during initial scan or if elements found\r\n if (isInitialScan || elements.length > 0) {\r\n console.log('[EditorKit Client] Found', elements.length, 'unmounted elements')\r\n }\r\n elements.forEach(mountButtonForIframe)\r\n } catch (err) {\r\n console.error('[EditorKit Client] Error scanning:', err)\r\n }\r\n}\r\n\r\n// Start auto-mount for iframe with custom click handler\r\nexport const startAutoMountForIframe = () => {\r\n if (typeof window === 'undefined' || typeof document === 'undefined') return\r\n\r\n console.log('[EditorKit Client] Starting auto-mount for iframe...')\r\n\r\n // Initial scan with logging\r\n scanAndMountForIframe(document, true)\r\n\r\n // Setup mutation observer for dynamic content\r\n if (_observer) {\r\n _observer.disconnect()\r\n }\r\n\r\n _observer = new MutationObserver((mutations) => {\r\n for (const m of mutations) {\r\n if (m.type === 'childList') {\r\n m.addedNodes.forEach((n) => {\r\n if (n instanceof Element) {\r\n // Only mount if the element itself has the key\r\n if (n.hasAttribute(EDIT_KEY)) {\r\n mountButtonForIframe(n)\r\n }\r\n // Only scan children if this is a container element (has children)\r\n else if (n.children.length > 0) {\r\n scanAndMountForIframe(n)\r\n }\r\n }\r\n })\r\n } else if (m.type === 'attributes' && m.target instanceof Element) {\r\n if (m.attributeName === EDIT_KEY) {\r\n mountButtonForIframe(m.target)\r\n }\r\n }\r\n }\r\n })\r\n _observer.observe(document.documentElement || document.body, {\r\n childList: true,\r\n subtree: true,\r\n attributes: true,\r\n attributeFilter: [EDIT_KEY]\r\n })\r\n\r\n console.log('[EditorKit Client] Auto-mount started')\r\n}\r\n\r\n// Update display data when receiving new data\r\n// Note: For React apps, this is usually not needed as React handles re-rendering\r\n// This is useful for vanilla JS or non-React landing pages\r\nconst updateDisplayData = (data: any) => {\r\n if (!data) return\r\n\r\n Object.keys(data).forEach((key) => {\r\n const elements = document.querySelectorAll(`[${EDIT_KEY}=\"${key}\"]`)\r\n elements.forEach((el: any) => {\r\n const indexAttr = el.getAttribute('data-editor-index')\r\n const value = indexAttr !== null ? data[key]?.[parseInt(indexAttr)] : data[key]\r\n\r\n // Update content (you can customize this based on your needs)\r\n if (value !== undefined && value !== null) {\r\n if (typeof value === 'string') {\r\n // For simple text content\r\n const textNode = Array.from(el.childNodes).find((node: any) => node.nodeType === Node.TEXT_NODE) as any\r\n if (textNode) {\r\n textNode.textContent = value\r\n } else {\r\n el.textContent = value\r\n }\r\n } else if (typeof value === 'object') {\r\n // For complex objects, dispatch custom event for manual handling\r\n // React apps should update via state, not via this event\r\n el.dispatchEvent(new CustomEvent('editor-kit-data-update', { detail: value }))\r\n }\r\n }\r\n })\r\n })\r\n}\r\n\r\nexport const initEditorKitClient = () => {\r\n if (typeof window === 'undefined') return\r\n\r\n // Inject CSS styles for editor kit\r\n injectEditorKitStyles()\r\n\r\n let editorData: any = null\r\n\r\n // Listen to messages from parent (Admin)\r\n window.addEventListener('message', (event) => {\r\n const msgType = event.data?.type\r\n if (!msgType || !msgType.startsWith('EDITOR_KIT_')) return\r\n\r\n switch (msgType) {\r\n case 'EDITOR_KIT_INIT':\r\n editorData = event.data.data\r\n console.log('[EditorKit Client] Initialized with data')\r\n // Notify parent that we're ready\r\n window.parent.postMessage({ type: 'EDITOR_KIT_READY' }, '*')\r\n // Start auto-mounting edit buttons\r\n startAutoMountForIframe()\r\n break\r\n\r\n case 'EDITOR_KIT_UPDATE_DATA':\r\n editorData = event.data.data\r\n console.log('[EditorKit Client] Data updated')\r\n updateDisplayData(editorData)\r\n break\r\n }\r\n })\r\n}\r\n\r\nexport const useEditorKitClient = () => {\r\n useEffect(() => {\r\n // Only init when loaded inside an iframe from Admin\r\n if (window.parent !== window) {\r\n console.log('[useEditorKitClient] Initializing in iframe mode...')\r\n\r\n // Inject CSS styles\r\n injectEditorKitStyles()\r\n\r\n // Start auto-mounting immediately for iframe mode\r\n startAutoMountForIframe()\r\n\r\n // Also setup message listener for data updates\r\n initEditorKitClient()\r\n\r\n // Notify parent that client is ready\r\n window.parent.postMessage({ type: 'EDITOR_KIT_CLIENT_READY' }, '*')\r\n }\r\n\r\n // Cleanup on unmount\r\n return () => {\r\n stopAutoMount()\r\n }\r\n }, [])\r\n}\r\n"],"names":["editKitClasses","button","auto","EDIT_KEY","getFieldEditor","key","_defineProperty","AUTO_MOUNT_MARK","unmountButtonsFromElement","el","HTMLElement","querySelectorAll","concat","forEach","btn","remove","removeAttribute","_observer","stopAutoMount","disconnect","document","_unused2","injectEditorKitStyles","getElementById","style","createElement","id","textContent","head","appendChild","mountButtonForIframe","hasAttribute","getAttribute","type","className","join","title","addEventListener","e","preventDefault","stopPropagation","indexAttr","window","parent","postMessage","index","parseInt","setAttribute","scanAndMountForIframe","root","arguments","length","undefined","isInitialScan","elements","console","log","err","error","startAutoMountForIframe","MutationObserver","mutations","_step2","_iterator2","_createForOfIteratorHelper","s","n","done","m","value","addedNodes","Element","children","target","attributeName","f","observe","documentElement","body","childList","subtree","attributes","attributeFilter","initEditorKitClient","editorData","event","_event$data","data","msgType","startsWith","Object","keys","_data$key","textNode","Array","from","childNodes","find","node","nodeType","Node","TEXT_NODE","_typeof","dispatchEvent","CustomEvent","detail","useEditorKitClient","useEffect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../src/editor-kit/helpers.ts"],"sourcesContent":["import { useEffect } from 'react'\r\nimport { getEditorKitEvent } from './events'\r\n\r\nexport const editKitClasses = {\r\n root: 'editor-kit-root',\r\n button: 'editor-kit-btn',\r\n auto: 'editor-kit-btn--auto'\r\n}\r\n\r\nexport const EDIT_KEY = 'data-editor-key'\r\n\r\n// event emitted when an edit button is clicked\r\nexport const EDIT_EVENT = 'editor-kit:edit'\r\n\r\n// Keep this minimal and non-intrusive for landing pages: only a data attribute.\r\nexport const getFieldEditor = <T = any>(key: keyof T) => ({ [EDIT_KEY]: key })\r\n\r\n/* --- Editor-mode auto-mount (minimal & opt-in) ---\r\n Behaviour:\r\n - Does nothing on landing pages by default.\r\n - Finds elements with [data-editor-key] and appends a small positioned Edit button when started.\r\n - Exports startAutoMount/stopAutoMount for manual control from an editor wrapper.\r\n*/\r\nconst AUTO_MOUNT_MARK = 'data-editor-auto-mounted'\r\n\r\nconst mountButtonOnElement = (el: Element) => {\r\n if (!(el instanceof HTMLElement)) return\r\n if (el.hasAttribute(AUTO_MOUNT_MARK)) return\r\n const key = el.getAttribute(EDIT_KEY)\r\n if (!key) return\r\n\r\n const btn = document.createElement('button')\r\n btn.type = 'button'\r\n btn.className = [editKitClasses.button, editKitClasses.auto].join(' ')\r\n btn.textContent = 'Edit'\r\n btn.title = 'Edit'\r\n\r\n // emit the edit event via the EditorKitEvent emitter so it doesn't pollute window\r\n btn.addEventListener('click', () => {\r\n try {\r\n const ee = getEditorKitEvent()\r\n if (ee) {\r\n // use the stateChange channel to signal editor UI; payload includes key\r\n ee.emit('stateChange', { key })\r\n } else {\r\n // fallback to window event if emitter not available\r\n window.dispatchEvent(new CustomEvent(EDIT_EVENT, { detail: { key } }))\r\n }\r\n } catch (err) {\r\n // graceful fallback\r\n window.dispatchEvent(new CustomEvent(EDIT_EVENT, { detail: { key } }))\r\n }\r\n })\r\n\r\n // Styling and parent positioning are handled by `style.scss` which is imported\r\n // from the editor component. This keeps helpers passive on landing pages.\r\n el.appendChild(btn)\r\n el.setAttribute(AUTO_MOUNT_MARK, '1')\r\n}\r\n\r\nconst unmountButtonsFromElement = (el: Element) => {\r\n if (!(el instanceof HTMLElement)) return\r\n const buttons = el.querySelectorAll(`.${editKitClasses.auto}`)\r\n buttons.forEach((btn) => btn.remove())\r\n el.removeAttribute(AUTO_MOUNT_MARK)\r\n}\r\n\r\nconst scanAndMount = (root: ParentNode = document) => {\r\n try {\r\n root.querySelectorAll(`[${EDIT_KEY}]`).forEach(mountButtonOnElement)\r\n } catch {\r\n // no-op in non-DOM envs\r\n }\r\n}\r\n\r\nlet _observer: MutationObserver | null = null\r\n\r\nexport const startAutoMount = () => {\r\n if (typeof window === 'undefined' || typeof document === 'undefined') return\r\n if (_observer) return // already started\r\n\r\n // Inject CSS styles\r\n injectEditorKitStyles()\r\n\r\n scanAndMount(document)\r\n _observer = new MutationObserver((mutations) => {\r\n for (const m of mutations) {\r\n if (m.type === 'childList') {\r\n m.addedNodes.forEach((n) => {\r\n if (n instanceof Element) {\r\n if (n.hasAttribute(EDIT_KEY)) mountButtonOnElement(n)\r\n scanAndMount(n)\r\n }\r\n })\r\n } else if (m.type === 'attributes' && m.target instanceof Element) {\r\n if (m.attributeName === EDIT_KEY) mountButtonOnElement(m.target)\r\n }\r\n }\r\n })\r\n _observer.observe(document.documentElement || document.body, {\r\n childList: true,\r\n subtree: true,\r\n attributes: true,\r\n attributeFilter: [EDIT_KEY]\r\n })\r\n}\r\n\r\nexport const stopAutoMount = () => {\r\n if (_observer) {\r\n _observer.disconnect()\r\n _observer = null\r\n }\r\n // Cleanup all mounted buttons\r\n try {\r\n document.querySelectorAll(`[${AUTO_MOUNT_MARK}]`).forEach(unmountButtonsFromElement)\r\n } catch {\r\n // no-op\r\n }\r\n}\r\n\r\n/* --- Inject CSS Styles ---\r\n Inject editor kit styles dynamically\r\n Used by both Normal mode and Iframe mode\r\n*/\r\nexport const injectEditorKitStyles = () => {\r\n if (typeof document === 'undefined') return\r\n\r\n // Check if already injected\r\n if (document.getElementById('editor-kit-styles')) return\r\n\r\n const style = document.createElement('style')\r\n style.id = 'editor-kit-styles'\r\n style.textContent = `\r\n [data-editor-key] {\r\n position: relative;\r\n border: 1px dashed rgba(255, 0, 0, 0.4);\r\n min-height: 40px;\r\n padding-top: 4px;\r\n }\r\n\r\n .editor-kit-btn {\r\n appearance: none;\r\n border: 0;\r\n background: #00C853;\r\n color: #fff;\r\n box-shadow: 0 0 8px rgba(255,255,255,0.3);\r\n cursor: pointer;\r\n border-radius: 4px;\r\n padding: 4px 8px;\r\n font-size: 12px;\r\n line-height: 1;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n font-weight: 600;\r\n transition: all 0.2s ease;\r\n }\r\n\r\n .editor-kit-btn--auto {\r\n position: absolute;\r\n top: 4px;\r\n right: 4px;\r\n z-index: 9999;\r\n }\r\n\r\n .editor-kit-btn:hover,\r\n .editor-kit-btn:focus {\r\n background: #00B249;\r\n outline: none;\r\n }\r\n\r\n .editor-kit-btn:active {\r\n background: #009624;\r\n }\r\n `\r\n document.head.appendChild(style)\r\n}\r\n\r\n/* --- Iframe Client Mode ---\r\n Initialize editor kit client for landing pages loaded in iframe\r\n*/\r\n\r\n// Mount button for iframe mode - sends postMessage instead of event\r\nconst mountButtonForIframe = (el: Element) => {\r\n if (!(el instanceof HTMLElement)) return\r\n if (el.hasAttribute(AUTO_MOUNT_MARK)) return\r\n const key = el.getAttribute(EDIT_KEY)\r\n if (!key) return\r\n\r\n const btn = document.createElement('button')\r\n btn.type = 'button'\r\n btn.className = [editKitClasses.button, editKitClasses.auto].join(' ')\r\n btn.textContent = 'Edit'\r\n btn.title = 'Edit'\r\n\r\n // Click handler sends message to parent window\r\n btn.addEventListener('click', (e) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n\r\n const indexAttr = el.getAttribute('data-editor-index')\r\n\r\n // Send message to Admin parent\r\n window.parent.postMessage({ type: 'EDITOR_KIT_EDIT', key: key, index: indexAttr ? parseInt(indexAttr) : null }, '*')\r\n })\r\n\r\n el.appendChild(btn)\r\n el.setAttribute(AUTO_MOUNT_MARK, '1')\r\n}\r\n\r\n// Scan and mount for iframe\r\nconst scanAndMountForIframe = (root: ParentNode = document, isInitialScan = false) => {\r\n try {\r\n const elements = root.querySelectorAll(`[${EDIT_KEY}]:not([${AUTO_MOUNT_MARK}])`)\r\n // Only log during initial scan or if elements found\r\n if (isInitialScan || elements.length > 0) {\r\n console.log('[EditorKit Client] Found', elements.length, 'unmounted elements')\r\n }\r\n elements.forEach(mountButtonForIframe)\r\n } catch (err) {\r\n console.error('[EditorKit Client] Error scanning:', err)\r\n }\r\n}\r\n\r\n// Start auto-mount for iframe with custom click handler\r\nexport const startAutoMountForIframe = () => {\r\n if (typeof window === 'undefined' || typeof document === 'undefined') return\r\n\r\n console.log('[EditorKit Client] Starting auto-mount for iframe...')\r\n\r\n // Initial scan with logging\r\n scanAndMountForIframe(document, true)\r\n\r\n // Setup mutation observer for dynamic content\r\n if (_observer) {\r\n _observer.disconnect()\r\n }\r\n\r\n _observer = new MutationObserver((mutations) => {\r\n for (const m of mutations) {\r\n if (m.type === 'childList') {\r\n m.addedNodes.forEach((n) => {\r\n if (n instanceof Element) {\r\n // Only mount if the element itself has the key\r\n if (n.hasAttribute(EDIT_KEY)) {\r\n mountButtonForIframe(n)\r\n }\r\n // Only scan children if this is a container element (has children)\r\n else if (n.children.length > 0) {\r\n scanAndMountForIframe(n)\r\n }\r\n }\r\n })\r\n } else if (m.type === 'attributes' && m.target instanceof Element) {\r\n if (m.attributeName === EDIT_KEY) {\r\n mountButtonForIframe(m.target)\r\n }\r\n }\r\n }\r\n })\r\n _observer.observe(document.documentElement || document.body, {\r\n childList: true,\r\n subtree: true,\r\n attributes: true,\r\n attributeFilter: [EDIT_KEY]\r\n })\r\n\r\n console.log('[EditorKit Client] Auto-mount started')\r\n}\r\n\r\n// Update display data when receiving new data\r\n// Note: For React apps, this is usually not needed as React handles re-rendering\r\n// This is useful for vanilla JS or non-React landing pages\r\nconst updateDisplayData = (data: any) => {\r\n if (!data) return\r\n\r\n Object.keys(data).forEach((key) => {\r\n const elements = document.querySelectorAll(`[${EDIT_KEY}=\"${key}\"]`)\r\n elements.forEach((el: any) => {\r\n const indexAttr = el.getAttribute('data-editor-index')\r\n const value = indexAttr !== null ? data[key]?.[parseInt(indexAttr)] : data[key]\r\n\r\n // Update content (you can customize this based on your needs)\r\n if (value !== undefined && value !== null) {\r\n if (typeof value === 'string') {\r\n // For simple text content\r\n const textNode = Array.from(el.childNodes).find((node: any) => node.nodeType === Node.TEXT_NODE) as any\r\n if (textNode) {\r\n textNode.textContent = value\r\n } else {\r\n el.textContent = value\r\n }\r\n } else if (typeof value === 'object') {\r\n // For complex objects, dispatch custom event for manual handling\r\n // React apps should update via state, not via this event\r\n el.dispatchEvent(new CustomEvent('editor-kit-data-update', { detail: value }))\r\n }\r\n }\r\n })\r\n })\r\n}\r\n\r\nexport const initEditorKitClient = () => {\r\n if (typeof window === 'undefined') return\r\n\r\n // Inject CSS styles for editor kit\r\n injectEditorKitStyles()\r\n\r\n let editorData: any = null\r\n\r\n // Listen to messages from parent (Admin)\r\n window.addEventListener('message', (event) => {\r\n const msgType = event.data?.type\r\n if (!msgType || !msgType.startsWith('EDITOR_KIT_')) return\r\n\r\n switch (msgType) {\r\n case 'EDITOR_KIT_INIT':\r\n editorData = event.data.data\r\n console.log('[EditorKit Client] Initialized with data')\r\n // Notify parent that we're ready\r\n window.parent.postMessage({ type: 'EDITOR_KIT_READY' }, '*')\r\n // Start auto-mounting edit buttons\r\n startAutoMountForIframe()\r\n break\r\n\r\n case 'EDITOR_KIT_UPDATE_DATA':\r\n editorData = event.data.data\r\n console.log('[EditorKit Client] Data updated')\r\n updateDisplayData(editorData)\r\n break\r\n }\r\n })\r\n}\r\n\r\nexport const useEditorKitClient = () => {\r\n useEffect(() => {\r\n // Only init when loaded inside an iframe from Admin\r\n if (window.parent !== window) {\r\n console.log('[useEditorKitClient] Initializing in iframe mode...')\r\n\r\n // Inject CSS styles\r\n injectEditorKitStyles()\r\n\r\n // Start auto-mounting immediately for iframe mode\r\n startAutoMountForIframe()\r\n\r\n // Also setup message listener for data updates\r\n initEditorKitClient()\r\n\r\n // Notify parent that client is ready\r\n window.parent.postMessage({ type: 'EDITOR_KIT_CLIENT_READY' }, '*')\r\n }\r\n\r\n // Cleanup on unmount\r\n return () => {\r\n stopAutoMount()\r\n }\r\n }, [])\r\n}\r\n"],"names":["editKitClasses","button","auto","EDIT_KEY","getFieldEditor","key","_defineProperty","AUTO_MOUNT_MARK","unmountButtonsFromElement","el","HTMLElement","querySelectorAll","concat","forEach","btn","remove","removeAttribute","_observer","stopAutoMount","disconnect","document","_unused2","injectEditorKitStyles","getElementById","style","createElement","id","textContent","head","appendChild","mountButtonForIframe","hasAttribute","getAttribute","type","className","join","title","addEventListener","e","preventDefault","stopPropagation","indexAttr","window","parent","postMessage","index","parseInt","setAttribute","scanAndMountForIframe","root","arguments","length","undefined","isInitialScan","elements","console","log","err","error","startAutoMountForIframe","MutationObserver","mutations","_step2","_iterator2","_createForOfIteratorHelper","s","n","done","m","value","addedNodes","Element","children","target","attributeName","f","observe","documentElement","body","childList","subtree","attributes","attributeFilter","initEditorKitClient","editorData","event","_event$data","data","msgType","startsWith","Object","keys","_data$key","textNode","Array","from","childNodes","find","node","nodeType","Node","TEXT_NODE","_typeof","dispatchEvent","CustomEvent","detail","useEditorKitClient","useEffect"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/editor-kit/helpers.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc;;;;CAI1B,CAAA;AAED,eAAO,MAAM,QAAQ,oBAAoB,CAAA;AAGzC,eAAO,MAAM,UAAU,oBAAoB,CAAA;AAG3C,eAAO,MAAM,cAAc;;CAAmD,CAAA;AA8D9E,eAAO,MAAM,cAAc,YA4B1B,CAAA;AAED,eAAO,MAAM,aAAa,YAWzB,CAAA;AAMD,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/editor-kit/helpers.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc;;;;CAI1B,CAAA;AAED,eAAO,MAAM,QAAQ,oBAAoB,CAAA;AAGzC,eAAO,MAAM,UAAU,oBAAoB,CAAA;AAG3C,eAAO,MAAM,cAAc;;CAAmD,CAAA;AA8D9E,eAAO,MAAM,cAAc,YA4B1B,CAAA;AAED,eAAO,MAAM,aAAa,YAWzB,CAAA;AAMD,eAAO,MAAM,qBAAqB,YAoDjC,CAAA;AAiDD,eAAO,MAAM,uBAAuB,YA2CnC,CAAA;AAkCD,eAAO,MAAM,mBAAmB,YA8B/B,CAAA;AAED,eAAO,MAAM,kBAAkB,YAwB9B,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Component, FC } from 'react';
|
|
2
|
+
import { IMenuBarBaseProps, IMenuBarConfig, IMenuBarConfigs } from './types';
|
|
3
|
+
export * from './types';
|
|
4
|
+
export interface IMenuBarSlots {
|
|
5
|
+
top?: React.ReactNode;
|
|
6
|
+
bottom?: React.ReactNode;
|
|
7
|
+
}
|
|
8
|
+
export interface IMenuBarProps extends IMenuBarBaseProps {
|
|
9
|
+
configs?: IMenuBarConfigs;
|
|
10
|
+
slots?: IMenuBarSlots;
|
|
11
|
+
localStorageKey?: string;
|
|
12
|
+
logoURL?: string;
|
|
13
|
+
homeURL?: string;
|
|
14
|
+
isLogo?: boolean;
|
|
15
|
+
}
|
|
16
|
+
interface IMenuBarState {
|
|
17
|
+
isMinimalist: boolean;
|
|
18
|
+
}
|
|
19
|
+
export declare class MenuBar extends Component<IMenuBarProps, IMenuBarState> {
|
|
20
|
+
localStorageKey: string;
|
|
21
|
+
constructor(props: IMenuBarProps);
|
|
22
|
+
render(): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
getConfigs(): IMenuBarConfig[];
|
|
24
|
+
handleExpandToggle: () => void;
|
|
25
|
+
}
|
|
26
|
+
export declare const createMenuBar: (configs: Partial<IMenuBarProps>) => FC<IMenuBarProps>;
|
|
27
|
+
//# sourceMappingURL=creator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"creator.d.ts","sourceRoot":"","sources":["../../../src/menu-bar/creator.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAGrC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAG5E,cAAc,SAAS,CAAA;AAEvB,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACrB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CACzB;AAED,MAAM,WAAW,aAAc,SAAQ,iBAAiB;IACtD,OAAO,CAAC,EAAE,eAAe,CAAA;IACzB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,UAAU,aAAa;IACrB,YAAY,EAAE,OAAO,CAAA;CACtB;AAED,qBAAa,OAAQ,SAAQ,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAClE,eAAe,EAAE,MAAM,CAAA;gBACX,KAAK,EAAE,aAAa;IAOhC,MAAM;IAoCN,UAAU,IAAI,cAAc,EAAE;IAK9B,kBAAkB,aAMjB;CACF;AAED,eAAO,MAAM,aAAa,YAAa,QAAQ,aAAa,CAAC,sBAG5D,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IMenuBarConfigs } from './types';
|
|
2
|
+
export declare const MENU_BAR_KEY = "dinocollab_menu_bar";
|
|
3
|
+
export declare const matchesPath: (pathname: string, path?: string | undefined) => boolean;
|
|
4
|
+
export declare const getSavedMinimalist: (key: string) => boolean;
|
|
5
|
+
export declare const setSavedMinimalist: (key: string, value: boolean) => void;
|
|
6
|
+
export declare const isSelectedPath: (value?: string, pathname?: string, related?: string | string[]) => boolean;
|
|
7
|
+
export declare const findMatchingKeyRoute: (configs: IMenuBarConfigs, pathname: string) => string | undefined;
|
|
8
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/menu-bar/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEzC,eAAO,MAAM,YAAY,wBAAwB,CAAA;AAEjD,eAAO,MAAM,WAAW,aAAc,MAAM,SAAS,MAAM,GAAG,SAAS,YAMtE,CAAA;AAGD,eAAO,MAAM,kBAAkB,QAAS,MAAM,KAAG,OAQhD,CAAA;AAED,eAAO,MAAM,kBAAkB,QAAS,MAAM,SAAS,OAAO,SAO7D,CAAA;AAMD,eAAO,MAAM,cAAc,WAAY,MAAM,aAAa,MAAM,YAAY,MAAM,GAAG,MAAM,EAAE,YAoB5F,CAAA;AAGD,eAAO,MAAM,oBAAoB,YAAa,eAAe,YAAY,MAAM,uBAwB9E,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/menu-bar/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AAEvB,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Component } from 'react';
|
|
2
|
+
export interface IMenuStatus {
|
|
3
|
+
visible: boolean;
|
|
4
|
+
created?: boolean;
|
|
5
|
+
updated?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface IMenuInfoDef {
|
|
8
|
+
remainingDays?: number;
|
|
9
|
+
createdDate?: string;
|
|
10
|
+
updatedDate?: string;
|
|
11
|
+
isChild?: boolean;
|
|
12
|
+
}
|
|
13
|
+
interface IProps {
|
|
14
|
+
value: IMenuInfoDef;
|
|
15
|
+
minimalist?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export default class MenuInfo extends Component<IProps> {
|
|
18
|
+
render(): import("react/jsx-runtime").JSX.Element | null;
|
|
19
|
+
getStatus: () => IMenuStatus;
|
|
20
|
+
getClasses: (status?: IMenuStatus) => string;
|
|
21
|
+
}
|
|
22
|
+
export declare const menuInfoClasses: {
|
|
23
|
+
root: string;
|
|
24
|
+
children: string;
|
|
25
|
+
created: string;
|
|
26
|
+
updated: string;
|
|
27
|
+
text: string;
|
|
28
|
+
minimalist: string;
|
|
29
|
+
};
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=menu-info.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-info.d.ts","sourceRoot":"","sources":["../../../src/menu-bar/menu-info.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGjC,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,UAAU,MAAM;IACd,KAAK,EAAE,YAAY,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,SAAS,CAAC,MAAM,CAAC;IACrD,MAAM;IAgBN,SAAS,QAAO,WAAW,CAa1B;IAED,UAAU,YAAa,WAAW,KAAG,MAAM,CAO1C;CACF;AAED,eAAO,MAAM,eAAe;;;;;;;CAO3B,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ComponentType, HTMLAttributes, RefAttributes } from 'react';
|
|
2
|
+
export declare const menuBarClasses: {
|
|
3
|
+
root: string;
|
|
4
|
+
rootInner: string;
|
|
5
|
+
scroller: string;
|
|
6
|
+
group: string;
|
|
7
|
+
groupHeader: string;
|
|
8
|
+
items: string;
|
|
9
|
+
item: string;
|
|
10
|
+
itemInner: string;
|
|
11
|
+
itemIcon: string;
|
|
12
|
+
itemText: string;
|
|
13
|
+
itemActive: string;
|
|
14
|
+
sub: string;
|
|
15
|
+
subConnector: string;
|
|
16
|
+
subList: string;
|
|
17
|
+
subItem: string;
|
|
18
|
+
subItemInner: string;
|
|
19
|
+
subText: string;
|
|
20
|
+
divider: string;
|
|
21
|
+
menuBarHeader: string;
|
|
22
|
+
minimalist: string;
|
|
23
|
+
};
|
|
24
|
+
export declare const MenuBarStyled: ComponentType<HTMLAttributes<HTMLDivElement>>;
|
|
25
|
+
export declare const MenuBarHeaderStyled: ComponentType<HTMLAttributes<HTMLDivElement>>;
|
|
26
|
+
export declare const SubMenuStyled: ComponentType<HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>>;
|
|
27
|
+
//# sourceMappingURL=styled.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styled.d.ts","sourceRoot":"","sources":["../../../src/menu-bar/styled.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,cAAc,EAA6B,aAAa,EAAE,MAAM,OAAO,CAAA;AAE/F,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;CAsB1B,CAAA;AAUD,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,cAAc,CAAC,cAAc,CAAC,CA2IrE,CAAA;AAEH,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,cAAc,CAAC,cAAc,CAAC,CAuB3E,CAAA;AAEH,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,aAAa,CAAC,cAAc,CAAC,CA6DrG,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { BoxProps, MenuItemProps } from '@mui/material';
|
|
3
|
+
import { IMenuInfoDef } from './menu-info';
|
|
4
|
+
export interface IMenuBarItemDef {
|
|
5
|
+
icon?: React.ReactNode;
|
|
6
|
+
label: string;
|
|
7
|
+
keyRoute: string;
|
|
8
|
+
relatedKeyRoutes?: string | string[];
|
|
9
|
+
info?: IMenuInfoDef;
|
|
10
|
+
}
|
|
11
|
+
export interface IMenuBarItem extends IMenuBarItemDef {
|
|
12
|
+
children?: IMenuBarItemDef[];
|
|
13
|
+
active?: boolean;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface IMenuBarSubItem extends IMenuBarItemDef {
|
|
17
|
+
parent?: IMenuBarItem;
|
|
18
|
+
}
|
|
19
|
+
export interface IMenuBarConfig {
|
|
20
|
+
key: string;
|
|
21
|
+
isGrouped?: boolean;
|
|
22
|
+
expandable?: boolean;
|
|
23
|
+
label?: string;
|
|
24
|
+
items: IMenuBarItem[];
|
|
25
|
+
}
|
|
26
|
+
export type IMenuBarConfigs = IMenuBarConfig | IMenuBarConfig[];
|
|
27
|
+
export type HrefGetterFunc = (value: IMenuBarItem) => string;
|
|
28
|
+
export type NavPropsGetterFunc = (value: IMenuBarItem, meta?: {
|
|
29
|
+
type: 'item' | 'subItem';
|
|
30
|
+
}) => MenuItemProps & {
|
|
31
|
+
[key: string]: any;
|
|
32
|
+
};
|
|
33
|
+
export type SubNavPropsGetterFunc = (value: IMenuBarSubItem) => BoxProps & {
|
|
34
|
+
[key: string]: any;
|
|
35
|
+
};
|
|
36
|
+
export interface IMenuBarBaseProps {
|
|
37
|
+
isMinimalist?: boolean;
|
|
38
|
+
activeRoute?: string;
|
|
39
|
+
activePath?: string;
|
|
40
|
+
onRouteChange?: (route: string) => void;
|
|
41
|
+
navPropsGetter?: NavPropsGetterFunc;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/menu-bar/types.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACpC,IAAI,CAAC,EAAE,YAAY,CAAA;CACpB;AAED,MAAM,WAAW,YAAa,SAAQ,eAAe;IACnD,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAA;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,MAAM,CAAC,EAAE,YAAY,CAAA;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,YAAY,EAAE,CAAA;CACtB;AAED,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,cAAc,EAAE,CAAA;AAI/D,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,MAAM,CAAA;AAE5D,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE;IAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,KAAK,aAAa,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAA;AAErI,MAAM,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK,QAAQ,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAA;AAEjG,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,cAAc,CAAC,EAAE,kBAAkB,CAAA;CACpC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { IconButtonProps } from '@mui/material';
|
|
3
|
+
import { IMenuBarBaseProps, IMenuBarConfig, IMenuBarItem, IMenuBarSubItem } from './types';
|
|
4
|
+
interface IMenuBarHeaderProps {
|
|
5
|
+
logoURL?: string;
|
|
6
|
+
homeURL?: string;
|
|
7
|
+
isLogo?: boolean;
|
|
8
|
+
onClick?: IconButtonProps['onClick'];
|
|
9
|
+
isMinimalist?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare const MenuBarHeader: FC<IMenuBarHeaderProps>;
|
|
12
|
+
export interface IMenuBarSubProps extends IMenuBarBaseProps {
|
|
13
|
+
data: IMenuBarSubItem | IMenuBarSubItem[];
|
|
14
|
+
className?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare const MenuBarSub: import("react").MemoExoticComponent<import("react").ForwardRefExoticComponent<IMenuBarSubProps & import("react").RefAttributes<HTMLDivElement>>>;
|
|
17
|
+
export interface IMenuBarItemProps extends IMenuBarBaseProps {
|
|
18
|
+
data: IMenuBarItem;
|
|
19
|
+
}
|
|
20
|
+
export declare const MenuBarItem: import("react").NamedExoticComponent<IMenuBarItemProps>;
|
|
21
|
+
export interface IMenuBarGroupProps extends IMenuBarBaseProps {
|
|
22
|
+
data: IMenuBarConfig;
|
|
23
|
+
}
|
|
24
|
+
export declare const MenuBarGroup: FC<IMenuBarGroupProps>;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=units.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"units.d.ts","sourceRoot":"","sources":["../../../src/menu-bar/units.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAA8D,MAAM,OAAO,CAAA;AACtF,OAAO,EAAc,eAAe,EAAmC,MAAM,eAAe,CAAA;AAQ5F,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAI1F,UAAU,mBAAmB;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IACpC,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,mBAAmB,CAoBjD,CAAA;AAoBD,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,IAAI,EAAE,eAAe,GAAG,eAAe,EAAE,CAAA;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AA0CD,eAAO,MAAM,UAAU,kJAAwB,CAAA;AAI/C,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC1D,IAAI,EAAE,YAAY,CAAA;CACnB;AA8LD,eAAO,MAAM,WAAW,yDAAyB,CAAA;AAIjD,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,IAAI,EAAE,cAAc,CAAA;CACrB;AAED,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,kBAAkB,CAyC/C,CAAA"}
|