UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

147 lines 7.6 kB
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{K as t,X as n,dt as r,q as i}from"./lit-runtime-CV_MH99K.js";import{It as a}from"./control-ui-core-vvcQQV2m.js";var o,s;function c(){return(c=e((()=>{t(),a(),o=class{constructor(e,t){this.host=e,this.options=t,this.open=!1,this.suppressed=!1,this.onViewportResize=()=>{let e=Math.min(this.height,this.options.layout.maxHeight()),t=Math.min(this.width,this.maxWidth());(e!==this.height||t!==this.width)&&(this.height=e,this.width=t,this.syncReservation(),this.options.onResize?.(),this.host.requestUpdate())},this.dock=t.layout.defaults.dock,this.height=t.layout.defaults.height,this.width=t.layout.defaults.width,e.addController(this)}hostConnected(){if(this.isFullscreen()){this.open=this.options.isAvailable();return}let e=this.options.layout.load();this.open=e.open&&this.options.isAvailable(),this.dock=e.dock,this.height=e.height,this.width=Math.min(e.width,this.maxWidth()),window.addEventListener(`resize`,this.onViewportResize)}hostDisconnected(){window.removeEventListener(`resize`,this.onViewportResize),this.clearReservation()}setOpen(e,t=!0){this.open=e,this.syncReservation(),t&&this.persist(),this.host.requestUpdate()}hideWithoutPersisting(){this.setOpen(!1,!1)}setSuppressed(e){return this.suppressed!==e&&(this.suppressed=e,e?(this.hideWithoutPersisting(),!1):this.restoreOpenState())}restoreOpenState(){return this.suppressed||!this.options.isAvailable()||this.open||!this.isFullscreen()&&!this.options.layout.load().open?!1:(this.open=!0,this.syncReservation(),this.host.requestUpdate(),!0)}setDock(e,t=!0){this.dock=e,this.syncReservation(),t&&this.persist(),this.host.requestUpdate()}persist(){this.options.layout.save({open:this.open,dock:this.dock,height:this.height,width:this.width})}syncReservation(){if(this.options.reserveViewport===!1)return;let e=!(this.host instanceof HTMLElement&&this.host.hasAttribute(`embedded`))&&!this.isFullscreen()&&this.options.isAvailable()&&this.open,t=document.documentElement.style;t.setProperty(`--oc-${this.options.reservationPrefix}-reserve-bottom`,e&&this.dock===`bottom`?`${this.height}px`:`0px`),t.setProperty(`--oc-${this.options.reservationPrefix}-reserve-right`,e&&this.dock===`right`?`${this.width}px`:`0px`)}resize(e){let t=this.dock===`bottom`,n=t?this.options.layout.minHeight:this.options.layout.minWidth,r=t?this.options.layout.maxHeight():this.maxWidth(),i=Math.min(r,Math.max(n,(1-e.detail.splitRatio)*this.size()));t?this.height=i:this.width=i,this.syncReservation(),this.options.onResize?.(),this.host.requestUpdate()}size(){return this.dock===`bottom`?window.innerHeight:window.innerWidth}renderResizer(e,t){if(this.isFullscreen()||this.dock===`main`)return i;let r=this.dock===`bottom`,a=this.size(),o=r?this.options.layout.minHeight:this.options.layout.minWidth,s=r?this.options.layout.maxHeight():this.maxWidth(),c=r?this.height:this.width;return n`<resizable-divider class="${e}-resizer ${e}-resizer--${this.dock}" .orientation=${r?`horizontal`:`vertical`} .label=${t} .splitRatio=${1-c/a} .minRatio=${1-s/a} .maxRatio=${1-o/a} .measureRatio=${()=>1-(r?this.height:this.width)/this.size()} .measureSize=${()=>this.size()} @resize=${e=>this.resize(e)} @resize-end=${()=>this.persist()} ></resizable-divider>`}clearReservation(){if(this.options.reserveViewport===!1)return;let e=document.documentElement.style;e.setProperty(`--oc-${this.options.reservationPrefix}-reserve-bottom`,`0px`),e.setProperty(`--oc-${this.options.reservationPrefix}-reserve-right`,`0px`)}isFullscreen(){return this.options.isFullscreen?.()===!0}maxWidth(){return Math.max(this.options.layout.minWidth,Math.min(this.options.layout.maxWidth(),this.options.maxWidth?.()??1/0))}},s=r` :host { position: fixed; z-index: 60; color: var(--text, #d7dae0); font-family: var(--font-body); } :host([embedded]) { position: static; z-index: auto; display: flex; width: 100%; min-width: 0; min-height: 0; flex: 1 1 0; } :is(.bp, .tp) { position: fixed; display: flex; flex-direction: column; background: var(--bg, #0e1015); overflow: hidden; } :is(.bp-resizer, .tp-resizer) { position: absolute; z-index: 2; } :is(.bp-resizer--bottom, .tp-resizer--bottom) { --resize-handle-line-block: 0; top: 0; left: 0; right: 0; } :is(.bp-resizer--right, .tp-resizer--right) { --resize-handle-line-inline: 0; top: 0; bottom: 0; left: 0; } .rail-header { box-sizing: border-box; display: flex; height: var(--rail-header-height, 48px); min-height: var(--rail-header-height, 48px); flex: 0 0 auto; align-items: center; justify-content: space-between; gap: 8px; padding: 0 var(--rail-header-padding-end, 8px) 0 var(--rail-header-padding-start, 12px); border-bottom: var(--rail-divider-size, 1px) solid var(--rail-divider-color, var(--border, #262b34)); background: var(--rail-header-background, var(--bg, #0e1015)); } .rail-header__actions { display: flex; flex: 0 0 auto; align-items: center; gap: var(--rail-header-action-gap, 2px); } .rail-header__copy { display: flex; min-width: 0; flex: 1 1 auto; flex-direction: column; justify-content: center; gap: var(--rail-header-copy-gap, 2px); } .rail-header__eyebrow { overflow: hidden; color: var(--muted, #8a919e); font-size: var(--rail-header-eyebrow-size, 10px); letter-spacing: var(--rail-header-eyebrow-letter-spacing, 0.04em); line-height: 1; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; } .rail-header__title { overflow: hidden; color: var(--text, #d7dae0); font-size: var(--rail-header-title-size, 12px); font-weight: var(--rail-header-title-weight, 600); line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; } .rail-header__action { display: inline-flex; width: var(--rail-header-action-size, 28px); min-width: var(--rail-header-action-size, 28px); height: var(--rail-header-action-size, 28px); min-height: var(--rail-header-action-size, 28px); align-items: center; justify-content: center; padding: 0; border: 0; border-radius: 6px; background: transparent; box-shadow: none; color: var(--rail-header-action-color, var(--muted, #8a919e)); font: inherit; opacity: 1; } .rail-header__action:hover, .rail-header__action:focus-visible { border: 0; background: transparent; box-shadow: none; color: var(--rail-header-action-hover-color, var(--text, #d7dae0)); } .rail-header__action:focus-visible { outline: 2px solid var(--ring, var(--accent, #ff5c5c)); outline-offset: -3px; } .rail-header__action.is-active, .rail-header__action[aria-pressed="true"] { background: transparent; color: var(--rail-header-action-active-color, var(--accent, #ff5c5c)); } .rail-header__action:disabled, .rail-header__action[aria-disabled="true"] { opacity: var(--rail-header-action-disabled-opacity, 0.4); } [data-new-tab-action]:not(:disabled):not([disabled]):not([aria-disabled="true"]) { cursor: pointer; } .rail-header__action svg { width: var(--rail-header-action-glyph-size, 16px); height: var(--rail-header-action-glyph-size, 16px); fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; } `})))()}export{s as n,c as r,o as t}; //# sourceMappingURL=dock-layout-controller-DJtLlZ8p.js.map