@dineug/erd-editor 3.7.0 → 3.8.0
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/components/erd/automatic-table-placement/AutomaticTablePlacement.d.ts +0 -15
- package/dist/components/erd/automatic-table-placement/runElkPlacement.d.ts +11 -0
- package/dist/components/erd/canvas/CanvasScene.d.ts +3 -3
- package/dist/components/erd/canvas/entityDrag.d.ts +5 -4
- package/dist/components/erd/canvas/highlightTransition.d.ts +35 -0
- package/dist/components/erd/canvas/memo/useMoveMemo.d.ts +3 -1
- package/dist/components/erd/canvas/mixColor.d.ts +7 -0
- package/dist/components/erd/canvas/relationship-group/RelationshipGroup.d.ts +2 -0
- package/dist/components/erd/canvas/relationship-group/relationship/Relationship.d.ts +2 -0
- package/dist/components/erd/canvas/relationship-group/relationship/Relationship.template.d.ts +3 -3
- package/dist/components/erd/canvas/sceneHit.d.ts +7 -6
- package/dist/components/erd/canvas/sceneTokens.d.ts +30 -4
- package/dist/components/erd/canvas/table/Table.d.ts +7 -0
- package/dist/components/erd/canvas/table/cellLayout.d.ts +48 -18
- package/dist/components/erd/canvas/table/column/Column.d.ts +26 -0
- package/dist/components/erd/canvas/table/goToErd.d.ts +18 -0
- package/dist/components/erd/canvas/table/useMoveTable.d.ts +3 -1
- package/dist/components/erd/canvas/table/useViewPin.d.ts +19 -0
- package/dist/components/erd/canvas/useMoveEntity.d.ts +9 -2
- package/dist/components/erd/content-compass/ContentCompass.d.ts +1 -1
- package/dist/components/erd/content-compass/compassGeometry.d.ts +27 -4
- package/dist/components/erd/floating-toolbar/FloatingToolbar.d.ts +3 -3
- package/dist/components/erd/floating-toolbar/FloatingToolbar.styles.d.ts +3 -0
- package/dist/components/erd/floating-toolbar/ToolbarCompass.template.d.ts +14 -0
- package/dist/components/erd/minimap/MinimapScene.d.ts +1 -1
- package/dist/components/erd/minimap/minimapGeometry.d.ts +4 -3
- package/dist/components/flowCenters.d.ts +10 -0
- package/dist/components/primitives/icon/icons.d.ts +5 -2
- package/dist/components/sceneSourceContext.d.ts +10 -0
- package/dist/components/theme-builder/ThemeBuilder.styles.d.ts +5 -0
- package/dist/components/visualization/Visualization.d.ts +3 -4
- package/dist/components/visualization/VisualizationFlow.d.ts +10 -0
- package/dist/components/visualization/VisualizationGraph.d.ts +10 -0
- package/dist/components/visualization/flowLayout.d.ts +29 -0
- package/dist/components/visualization/graphViewHandle.d.ts +33 -0
- package/dist/components/visualization/particles/ParticleLayer.d.ts +10 -0
- package/dist/components/visualization/particles/particleEdges.d.ts +15 -0
- package/dist/components/visualization/particles/particleLoop.d.ts +28 -0
- package/dist/components/visualization/particles/particlePath.d.ts +83 -0
- package/dist/components/visualization/useViewGestures.d.ts +24 -0
- package/dist/components/visualization/visualization-toolbar/VisualizationToolbar.d.ts +10 -0
- package/dist/components/visualization/visualization-toolbar/VisualizationToolbar.styles.d.ts +4 -0
- package/dist/components/visualization/visualizationView.d.ts +29 -5
- package/dist/components/visualization/zoomVisualization.d.ts +20 -0
- package/dist/constants/layout.d.ts +50 -0
- package/dist/constants/tablePlacement.d.ts +4 -3
- package/dist/constants/zoom.d.ts +7 -0
- package/dist/engine/actions.d.ts +6 -0
- package/dist/engine/index.js +12 -12
- package/dist/engine/modules/editor/actions.d.ts +60 -2
- package/dist/engine/modules/editor/atom.actions.d.ts +136 -0
- package/dist/engine/modules/editor/generator.actions.d.ts +16 -4
- package/dist/engine/modules/editor/state.d.ts +41 -0
- package/dist/engine/modules/editor/view.actions.d.ts +270 -0
- package/dist/engine/modules/editor/view.d.ts +28 -0
- package/dist/engine/modules/editor/view.generator.actions.d.ts +24 -0
- package/dist/engine/modules/settings/atom.actions.d.ts +17 -3
- package/dist/engine/modules/settings/generator.actions.d.ts +6 -4
- package/dist/engine/rx-operators/viewActionRedirect.d.ts +10 -0
- package/dist/engine/rx-operators/viewIgnoreFilter.d.ts +10 -0
- package/dist/erd-editor.umd.js +319 -282
- package/dist/index.js +6077 -4995
- package/dist/konva/scene/columnDropTarget.d.ts +2 -1
- package/dist/konva/scene/contentBounds.d.ts +12 -5
- package/dist/konva/scene/fitZoom.d.ts +16 -0
- package/dist/konva/scene/metrics.d.ts +6 -5
- package/dist/konva/scene/viewFreeze.d.ts +10 -7
- package/dist/konva/scene/viewLayout.d.ts +89 -0
- package/dist/konva/scene/viewport.d.ts +17 -4
- package/dist/{schemaGCService--wGet5O7.js → schemaGCService-CXVjeF9p.js} +3145 -2655
- package/dist/services/elk-layout/elkGraph.d.ts +40 -1
- package/dist/services/elk-layout/elkLayoutOptions.d.ts +22 -1
- package/dist/services/elk-layout/elkLayoutService.d.ts +5 -1
- package/dist/services/elk-layout/index.d.ts +10 -4
- package/dist/utils/calcTable.d.ts +27 -1
- package/dist/utils/clickGesture.d.ts +19 -0
- package/dist/utils/domEvent.d.ts +6 -0
- package/dist/utils/draw-relationship/bezier.d.ts +32 -0
- package/dist/utils/draw-relationship/calc.d.ts +6 -1
- package/dist/utils/draw-relationship/geometrySource.d.ts +9 -0
- package/dist/utils/draw-relationship/incremental.d.ts +7 -1
- package/dist/utils/draw-relationship/index.d.ts +37 -11
- package/dist/utils/draw-relationship/pathFinding.d.ts +2 -1
- package/dist/utils/draw-relationship/route.d.ts +5 -3
- package/dist/utils/draw-relationship/sort.d.ts +2 -1
- package/dist/utils/draw-relationship/stub.d.ts +9 -4
- package/dist/utils/emitter.d.ts +4 -0
- package/dist/utils/keyboard-shortcut/index.d.ts +2 -1
- package/dist/workers/elkLayout.shared-worker.js +1 -1
- package/dist/workers/exportPng.shared-worker.js +26 -26
- package/package.json +1 -1
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import*as e from"comlink";import{CHARSET as t,DECLARATION as n,IMPORT as r,LAYER as i,NAMESPACE as a,RULESET as o,alloc as s,dealloc as c,parse as l}from"stylis";import{Container as u}from"konva/lib/Container";import{Group as d}from"konva/lib/Group";import{Layer as f}from"konva/lib/Layer";import{Node as p}from"konva/lib/Node";import{Circle as m}from"konva/lib/shapes/Circle";import{Line as h}from"konva/lib/shapes/Line";import{Path as g}from"konva/lib/shapes/Path";import{Rect as ee}from"konva/lib/shapes/Rect";import{Text as _}from"konva/lib/shapes/Text";import{Stage as te}from"konva/lib/Stage";import{DD as ne}from"konva/lib/DragAndDrop";import{Konva as re}from"konva/lib/Global";import{camelCase as ie,clamp as ae,cloneDeep as oe,difference as se,groupBy as ce,head as le,isBoolean as ue,isFunction as de,isNil as v,isNotNil as fe,isNumber as y,isPlainObject as pe,isString as b,last as me,lowerFirst as he,noop as ge,omit as _e,pick as ve,range as ye,snakeCase as be,uniq as xe,upperFirst as Se}from"es-toolkit";import{Observable as Ce,Subject as we,animationFrames as Te,asapScheduler as Ee,buffer as De,debounceTime as Oe,defer as ke,filter as Ae,fromEvent as je,groupBy as Me,map as Ne,merge as Pe,mergeMap as Fe,observeOn as Ie,share as Le,takeUntil as Re,tap as ze,throttleTime as Be}from"rxjs";import{get as Ve,isEmpty as He,round as Ue}from"es-toolkit/compat";import{nanoid as x}from"nanoid";import We from"deepmerge";import{Kind as Ge,TokenKind as Ke,parse as qe}from"graphql";import Je,{getAccurateAgent as Ye}from"@egjs/agent";import{AlignHorizontalDistributeCenter as Xe,AlignVerticalDistributeCenter as Ze,ArrowRight as Qe,Atom as $e,Braces as et,Brackets as tt,CaseSensitive as nt,Check as rt,ChevronRight as it,Code as at,Contrast as ot,Copy as st,Database as ct,Diff as lt,Eye as ut,FileDiff as dt,FileImage as ft,FileInput as pt,FileOutput as mt,GripVertical as ht,Hand as gt,KeyRound as _t,Maximize as vt,Minimize as yt,Minus as bt,MoonStar as xt,MousePointer2 as St,Palette as Ct,Plus as wt,Redo2 as Tt,RefreshCw as Et,RotateCcwClock as Dt,Search as Ot,Settings as kt,Share2 as At,Spline as jt,StickyNote as Mt,Sun as Nt,Table as Pt,TableProperties as Ft,Undo2 as It,WandSparkles as Lt,Waypoints as Rt,Workflow as zt,X as Bt}from"lucide";import{amber as Vt,amberA as Ht,amberDark as Ut,amberDarkA as Wt,blue as Gt,blueA as Kt,blueDark as qt,blueDarkA as Jt,bronze as Yt,bronzeA as Xt,bronzeDark as Zt,bronzeDarkA as Qt,brown as $t,brownA as en,brownDark as tn,brownDarkA as nn,crimson as rn,crimsonA as an,crimsonDark as on,crimsonDarkA as sn,cyan as cn,cyanA as ln,cyanDark as un,cyanDarkA as dn,gold as fn,goldA as pn,goldDark as mn,goldDarkA as hn,grass as gn,grassA as _n,grassDark as vn,grassDarkA as yn,gray as bn,grayA as xn,grayDark as Sn,grayDarkA as Cn,green as wn,greenA as Tn,greenDark as En,greenDarkA as Dn,indigo as On,indigoA as kn,indigoDark as An,indigoDarkA as jn,iris as Mn,irisA as Nn,irisDark as Pn,irisDarkA as Fn,jade as In,jadeA as Ln,jadeDark as Rn,jadeDarkA as zn,lime as Bn,limeA as Vn,limeDark as Hn,limeDarkA as Un,mauve as Wn,mauveA as Gn,mauveDark as Kn,mauveDarkA as qn,mint as Jn,mintA as Yn,mintDark as Xn,mintDarkA as Zn,olive as Qn,oliveA as $n,oliveDark as er,oliveDarkA as tr,orange as nr,orangeA as rr,orangeDark as ir,orangeDarkA as ar,pink as or,pinkA as sr,pinkDark as cr,pinkDarkA as lr,plum as ur,plumA as dr,plumDark as fr,plumDarkA as pr,purple as mr,purpleA as hr,purpleDark as gr,purpleDarkA as _r,red as vr,redA as yr,redDark as br,redDarkA as xr,ruby as Sr,rubyA as Cr,rubyDark as wr,rubyDarkA as Tr,sage as Er,sageA as Dr,sageDark as Or,sageDarkA as kr,sand as Ar,sandA as jr,sandDark as Mr,sandDarkA as Nr,sky as Pr,skyA as Fr,skyDark as Ir,skyDarkA as Lr,slate as Rr,slateA as zr,slateDark as Br,slateDarkA as Vr,teal as Hr,tealA as Ur,tealDark as Wr,tealDarkA as Gr,tomato as Kr,tomatoA as qr,tomatoDark as Jr,tomatoDarkA as Yr,violet as Xr,violetA as Zr,violetDark as Qr,violetDarkA as $r,yellow as ei,yellowA as ti,yellowDark as ni,yellowDarkA as ri}from"@radix-ui/colors";import{layoutWithLines as ii,prepareWithSegments as ai}from"@chenglou/pretext";import{Easings as oi,Tween as si}from"konva/lib/Tween";function ci(e){"@babel/helpers - typeof";return ci=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},ci(e)}function li(e,t){if(ci(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(ci(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function ui(e){var t=li(e,`string`);return ci(t)==`symbol`?t:t+``}function di(e,t,n){return(t=ui(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var fi=class extends EventTarget{constructor(...e){super(...e),di(this,`textContent`,``)}},pi=class{};function mi(){let e=new OffscreenCanvas(1,1);return e.style??={},e}typeof document>`u`&&(Reflect.set(globalThis,`document`,{createElement:e=>e===`canvas`?mi():new fi}),Reflect.set(globalThis,`Node`,pi),Reflect.set(globalThis,`HTMLElement`,pi));function hi(e,t){return Object.freeze({key:t??Symbol(),value:e})}var gi={subscribe:`@@r-html/context-subscribe`,unsubscribe:`@@r-html/context-unsubscribe`};function _i(e,t){function n(n,r){return new CustomEvent(e,{detail:n,...t,...r})}return n.toString=()=>`${e}`,n.type=e,n}var vi=_i(gi.subscribe,{bubbles:!0,composed:!0}),yi=_i(gi.unsubscribe,{bubbles:!0,composed:!0});function bi(e,t){let n=e=>{let n=e;t.dispatchEvent(vi(n.detail))},r=e=>{let n=e;t.dispatchEvent(yi(n.detail))};return e.addEventListener(vi.type,n),e.addEventListener(yi.type,r),()=>{e.removeEventListener(vi.type,n),e.removeEventListener(yi.type,r)}}function xi(e,...t){try{return e?.(...t)}catch(e){console.error(e)}}var Si=queueMicrotask??(e=>{Promise.resolve().then(e)}),Ci=e=>t=>typeof t===e,wi=Ci(`object`),Ti=Ci(`bigint`),Ei=Ci(`boolean`),Di=Ci(`function`),Oi=Ci(`number`),ki=Ci(`string`),Ai=Ci(`symbol`),ji=Ci(`undefined`),Mi=e=>e===null,{isArray:Ni}=Array,Pi=e=>wi(e)&&!Mi(e)&&!Ni(e),Fi=e=>Ti(e)||Ei(e)||Oi(e)||ki(e)||Ai(e)||ji(e)||Mi(e);function Ii(){let e=new Set,t=t=>(e.has(t)||e.add(t),()=>{e.delete(t)});return{subscribe:t,next:t=>{e.forEach(e=>e(t))},asReadonly:()=>({subscribe:t})}}var Li=`...`,Ri=`@@r-html-${Math.random().toString().substring(2,8)}`,zi=`${Li}${Ri}`,Bi=RegExp(`${Ri}_(\\d+)_`,`g`),Vi=RegExp(`^${Ri}_\\d+_$`),Hi=/^\n/,S=function(e){return e.attribute=`attribute`,e.boolean=`boolean`,e.event=`event`,e.property=`property`,e.spread=`spread`,e.directive=`directive`,e}({}),Ui=Symbol.for(`https://github.com/dineug/r-html#beforeMount`),Wi=Symbol.for(`https://github.com/dineug/r-html#mounted`),Gi=Symbol.for(`https://github.com/dineug/r-html#unmounted`),Ki=Symbol.for(`https://github.com/dineug/r-html#beforeFirstUpdate`),qi=Symbol.for(`https://github.com/dineug/r-html#beforeUpdate`),Ji=Symbol.for(`https://github.com/dineug/r-html#firstUpdated`),Yi=Symbol.for(`https://github.com/dineug/r-html#updated`),Xi=[Ui,Wi,Gi,Ki,qi,Ji,Yi],Zi=Symbol.for(`https://github.com/dineug/r-html#Directive`),Qi=Symbol.for(`https://github.com/dineug/r-html#TemplateLiterals`),$i=null;function ea(e){$i=e}var ta=e=>t=>{$i&&($i[e]??($i[e]=[])).push(t)},na=ta(Ui),ra=ta(Wi),ia=ta(Gi);function aa(e,t){let n=Reflect.get(e,t,e);Ni(n)&&n.forEach(xi)}function oa(e){Xi.forEach(t=>Reflect.set(e,t,null,e))}function sa(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}function C(e,t,n){sa(e,t),t.set(e,n)}function ca(e,t,n){if(typeof e==`function`?e===t:e.has(t))return arguments.length<3?t:n;throw TypeError(`Private element is not present on this object`)}function w(e,t,n){return e.set(ca(e,t),n),n}function T(e,t){return e.get(ca(e,t))}var la=Ii(),ua=e=>e,da=e=>{var t,n;return t=new WeakMap,n=new WeakMap,class extends e{constructor(e,r,i,a){super(e,r,i,a),C(this,t,[]),C(this,n,null),this.hmr()}commit(e){let n=ua(e);super.commit(n),w(t,this,e)}hmr(){w(n,this,la.subscribe(e=>T(t,this).includes(e)&&this.commit(T(t,this))))}destroy(){T(n,this)?.call(this),super.destroy?.()}}},fa=new WeakMap,pa=new WeakMap,ma=new WeakMap,ha=new WeakMap,ga=new WeakMap,_a={shallow:!1},va=null;function ya(e){return va=e,xi(e),va=null,()=>ba(e)}function ba(e){Pa(e);let t=ga.get(e);if(t)for(let[n]of t.entries())pa.get(n)?.delete(e);t&&ga.delete(e)}function xa(e){if(!va)return;let t=pa.get(e);t?t.has(va)||t.add(va):pa.set(e,new Set([va]))}function Sa(e,t){if(!va)return;let n=ga.get(va);if(n){let r=n.get(e);r?r.has(t)||r.add(t):n.set(e,new Set([t]))}else ga.set(va,new Map([[e,new Set([t])]]))}var Ca=e=>e instanceof Node||e instanceof Map||e instanceof Set||e instanceof WeakMap||e instanceof WeakSet||e instanceof RegExp||e instanceof Date||e instanceof Promise||(Ni(e)||Pi(e))&&Object.isFrozen(e);function wa(e,t={}){let{shallow:n}=Object.assign({},_a,t),r=new Proxy(e,{get(r,i,a){let o=Reflect.get(r,i,a);return Ca(o)?o:(xa(e),Sa(e,i),!n&&(Pi(o)||Ni(o))&&!ma.has(o)?fa.has(o)?fa.get(o):wa(o,t):o)},set(e,t,n,r){let i=Reflect.get(e,t,r),a=Reflect.set(e,t,n,r);return(!Ni(e)&&i!==n||t===`length`)&&(Fa(e,t),Ra(e,t)),a},deleteProperty(e,t){let n=Reflect.deleteProperty(e,t);return Fa(e,t),Ra(e,t),n}});return fa.set(e,r),ma.set(r,e),r}function Ta(e){return(ha.get(e)??ha.set(e,Ii()).get(e)).asReadonly()}var Ea=[],Da=new Map,Oa=new Map,ka=!0;function Aa(e,t,n){let r=ga.get(n);if(!r)return!1;let i=r.get(e);return i?i.has(t):!1}var ja=e=>t=>{let n=Da.get(t),r=()=>{},i=n?.promise?n.promise:new Promise(e=>{r=e});if(!n){let n={type:e,promise:i,fn:t,resolve:()=>{r()}};Ea.push(n),Da.set(t,n)}return ka&&=(Si(La),!1),i},Ma=ja(`observer`),Na=ja(`nextTick`);function Pa(e){let t=Da.get(e);if(!t)return;let n=Ea.indexOf(t);n===-1||Ea.splice(n,1),Da.delete(e),t.resolve()}var Fa=(e,t)=>pa.get(e)?.forEach(n=>Aa(e,t,n)&&Ma(n));function Ia(){let e=Ea.shift();if(e){if(Da.delete(e.fn),e.type===`observer`)ba(e.fn),ya(e.fn),e.resolve();else if(e.type===`nextTick`){let t=xi(e.fn);t instanceof Promise?t.finally(e.resolve):e.resolve()}}}function La(){for(;Ea.length;)Ia();ka=!0}function Ra(e,t){let n=fa.get(e);if(!n)return;let r=ha.get(n);if(!r)return;let i=Oa.get(n);i?i.has(t)||i.add(t):(Oa.set(n,new Set([t])),Na(()=>{let e=Oa.get(n);e&&(Oa.delete(n),e.forEach(e=>r.next(e)))}))}function za(e,t){let n=wa({value:t.value},{shallow:!0}),r=e=>{n.value=e},i=()=>e instanceof HTMLElement?e:e.parentElement??e.host,a=()=>{i().dispatchEvent(vi({context:t,observer:r}))};return a(),na(a),ia(()=>{i().dispatchEvent(yi({context:t,observer:r}))}),n}function Ba(e,t,n){let r=e instanceof HTMLElement?e:e.parentElement??e.host,i=Ii(),a=new Map,o=e=>{let r=e;r.detail?.context?.key===t.key&&(r.stopPropagation(),r.detail.observer(n),a.set(r.detail.observer,i.subscribe(r.detail.observer)))},s=e=>{let n=e;n.detail?.context?.key===t.key&&(n.stopPropagation(),a.get(n.detail.observer)?.(),a.delete(n.detail.observer))};return r.addEventListener(vi.type,o),r.addEventListener(yi.type,s),{set:e=>{i.next(e)},destroy:()=>{r.removeEventListener(vi.type,o),r.removeEventListener(yi.type,s);for(let e of a.values())e();a.clear()}}}var Va=function(e){return e.node=`node`,e.attribute=`attribute`,e}({});function Ha(e,t){return Reflect.set(t,Zi,e),t}function Ua(e,t,n){let r={startNode:e,endNode:t};return Reflect.defineProperty(r,"helper",{value:n}),r}function Wa(e,t){return(...n)=>Ha(Va.node,[e(...n),t])}var Ga=function(e){return e.html=`html`,e.svg=`svg`,e.css=`css`,e}({}),Ka=new Set(Object.values(Ga)),qa=Symbol.for(`https://github.com/dineug/r-html#CSSSource`),Ja=new WeakMap,Ya=new WeakMap,Xa=new Set([Ga.svg]),Za=e=>`${Ri}_${e}_`,Qa=e=>Ni(e)&&Ni(e.raw),$a=e=>Pi(e)&&Qa(e.strings)&&Ni(e.values)&&Ka.has(Reflect.get(e,Qi)??``),eo=e=>$a(e)&&e[Qi]===Ga.css,to=(e,t=!0,n=!1)=>r=>t?!!r?.trimStart().startsWith(e):n?!!r?.trimEnd().endsWith(e):new RegExp(e).test(r??``),no=to(zi),ro=to(`.`),io=to(`?`),ao=to(`@`),oo=to(`on`),so=to(Ri,!1),co=e=>so(e)&&Vi.test(e?.trim()??``),lo=({type:e,value:t})=>e===S.spread||e===S.directive||so(t),uo=e=>Xa.has(e),fo=e=>co(e)?S.directive:no(e)?S.spread:ro(e)?S.property:ao(e)||oo(e)?S.event:io(e)?S.boolean:S.attribute,po=e=>no(e)?e.substring(3):co(e)?e:ro(e)||ao(e)||io(e)?e.substring(1):oo(e)?e.substring(2):e;function mo(e){let t=[],n=Bi.exec(e);for(;n;){let r=Number(n[1]);t.push([n[0],Number.isInteger(r)?r:-1]),n=Bi.exec(e)}return t}var ho=Symbol(`https://github.com/dineug/r-html.git#hostBridge`);function go(e,t){if(t instanceof ShadowRoot){let n=t.host;Reflect.set(e,ho,n)}return()=>{Reflect.deleteProperty(e,ho)}}function _o(e){return Reflect.get(e,ho)??null}function vo(e){return Fi(e)&&!Mi(e)&&!ji(e)||eo(e)?String(e):``}var yo={createElement:(e,t=!1)=>t?document.createElementNS(`http://www.w3.org/2000/svg`,e):document.createElement(e),createText:e=>document.createTextNode(e),createMarker:e=>document.createComment(e),createFragment:()=>document.createDocumentFragment(),createEventBus:()=>document.createElement(`div`),insertBefore(e,t){let n=t.parentNode;n&&n.insertBefore(e,t)},appendChild(e,t){e.appendChild(t)},prependChild(e,t){e.prepend(t)},removeChild(e){e.parentNode?.removeChild(e)},parentOf:e=>e.parentNode,nextSiblingOf:e=>e.nextSibling,setText(e,t){e.data=t},setAttribute(e,t,n,r){e.setAttribute(t,r?vo(n).trim():n)},removeAttribute(e,t){e.removeAttribute(t)},isHostNode:e=>e instanceof Node,isMarker:e=>e instanceof Comment,isText:e=>e instanceof Text,isElement:e=>e instanceof Element,isFragment:e=>e instanceof DocumentFragment,addEventListener(e,t,n,r){e.addEventListener(t,n,r)},removeEventListener(e,t,n,r){e.removeEventListener(t,n,r)},getRoot:e=>e.getRootNode(),createComponentContext(e,t){let n={host:document.body,get parentElement(){return e.parentElement},dispatchEvent:e=>t.dispatchEvent(e)},r=e.getRootNode();if(r instanceof ShadowRoot)n.host=r.host;else if(r instanceof DocumentFragment){let e=_o(r);e&&(n.host=e)}return n},bridgeFragment(e,t){let n=bi(e,t),r=go(e,t);return()=>{n(),r()}}};function bo(e){"@babel/helpers - typeof";return bo=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},bo(e)}function xo(e,t){if(bo(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(bo(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function So(e){var t=xo(e,`string`);return bo(t)==`symbol`?t:t+``}function Co(e,t,n){return(t=So(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var wo,To=function(e){return e.element=`element`,e.text=`text`,e.comment=`comment`,e}({});wo=Symbol.iterator;var Eo=class{constructor(e={}){Co(this,`type`,`comment`),Co(this,`value`,``),Co(this,`attrs`,void 0),Co(this,`parent`,null),Co(this,`children`,void 0),Object.assign(this,e)}*iterParent(){yield this,this.parent&&(yield*this.parent.iterParent())}*[wo](){if(yield this,this.children)for(let e of this.children)yield*e}},Do=e=>!!e&&e!==`false`;function Oo(e){let t=({type:t,value:n},r=!1)=>t===To.element?e.createElement(n,r):t===To.text?e.createText(n):e.createMarker(n),n=(t,{type:n,name:r,value:i})=>{switch(n){case S.attribute:e.setAttribute(t,r,i??``,!1);break;case S.boolean:Do(i)&&e.setAttribute(t,r,``,!1);break;case S.property:Reflect.set(t,r,i,t)}},r=(t,n)=>{e.insertBefore(t,n)},i=(t,n)=>{let r=e.parentOf(n);if(!r)return;let i=e.nextSiblingOf(n);i?e.insertBefore(t,i):e.appendChild(r,t)},a=t=>e.parentOf(t)?(e.removeChild(t),t):null,o=(t,n)=>{let r=[],i=e.nextSiblingOf(t);for(;i&&i!==n;)r.push(i),i=e.nextSiblingOf(i);return r},s=(e,t)=>{o(e,t).forEach(a)};return{...e,createNode:t,setAttr:n,insertBeforeNode:r,insertAfterNode:i,removeNode:a,rangeNodes:o,removeRange:s}}var E=Oo(yo);E.setAttr,E.insertBeforeNode,E.insertAfterNode,E.removeNode,E.rangeNodes,E.removeRange;var ko=E.isHostNode;function Ao(e,{type:t,name:n,value:r}){switch(t){case S.attribute:case S.property:Reflect.set(e,n,r);break;case S.boolean:Reflect.set(e,n,Do(r))}}var jo=(e,t)=>e.length===t.length&&e.every((e,n)=>e===t[n]);function Mo(e,t){if(e===t)return!0;let n=Pi(e)?e:{},r=Pi(t)?t:{},i=Object.keys(n),a=Object.keys(r);return i.length===a.length&&a.every(e=>Reflect.get(n,e)===Reflect.get(r,e))}var No=e=>Ni(e)&&Di(e[0])&&(ji(e[1])||Ei(e[1])||Pi(e[1])),Po=()=>{},Fo=e=>e instanceof HTMLElement,Io=e=>e instanceof SVGElement,Lo=e=>e instanceof Promise,Ro=new WeakMap,zo=new WeakMap,Bo=new WeakMap,Vo=new WeakMap,Ho=new WeakMap,Uo=new WeakMap,Wo=new WeakMap,Go=new WeakMap,Ko=new WeakMap,qo=class{constructor(e,{name:t,value:n},r=E){C(this,Ro,void 0),C(this,zo,void 0),C(this,Bo,void 0),C(this,Vo,void 0),C(this,Ho,[]),C(this,Uo,[]),C(this,Wo,void 0),C(this,Go,null),C(this,Ko,null),w(Ro,this,r),w(zo,this,e),w(Bo,this,t),w(Vo,this,n),w(Ho,this,mo(n??``)),w(Wo,this,T(Ho,this).length===1&&(n??``).trim()===T(Ho,this)[0][0])}commit(e){let t=T(Ho,this).map(([t,n])=>e[n]);if(jo(T(Uo,this),t))return;let n=t[t.length-1];if(T(Bo,this)===`class`)this.classCommit(n);else if(T(Bo,this)===`style`)this.styleCommit(n);else if(T(Wo,this))T(Ro,this).setAttribute(T(zo,this),T(Bo,this),t[0],!0);else{let e=t.reduce((e,t,n)=>e.replace(new RegExp(T(Ho,this)[n][0]),vo(t)),T(Vo,this)??``);T(Ro,this).setAttribute(T(zo,this),T(Bo,this),e.trim(),!1)}w(Uo,this,t)}classCommit(e){let t=T(zo,this);if(!Fo(t)&&!Io(t))return;let n=T(Uo,this)[T(Uo,this).length-1];if(n===e||Ni(n)&&Ni(e)&&jo(n,e)||Pi(n)&&Pi(e)&&Mo(n,e))return;let r=[...t.classList],i=Yo(e);if(Mi(T(Ko,this)))w(Ko,this,r);else{let e=T(Ko,this),n=r.filter(t=>!e.includes(t)&&!i.includes(t));t.classList.remove(...n)}t.classList.add(...i)}styleCommit(e){let t=T(zo,this);if(!Fo(t)&&!Io(t))return;let n=T(Uo,this)[T(Uo,this).length-1];if(Mo(n,e))return;let r=Jo(t),i=Pi(e)?e:{};if(Mi(T(Go,this)))w(Go,this,r);else{let e=T(Go,this);Object.keys(r).filter(t=>!e[t]&&!i[t]).forEach(e=>t.style.removeProperty(e))}for(let e of Object.keys(i))t.style.setProperty(e,i[e])}};function Jo(e){let t={};for(let n=0;n<e.style.length;n++){let r=e.style.item(n);t[r]=e.style.getPropertyValue(r)}return t}function Yo(e,t=[]){if(!e)return t;if(eo(e))return t.push(vo(e)),t;if(Fi(e))t.push(vo(e));else if(wi(e)){if(Ni(e))for(let n=0;n<e.length;n++)e[n]&&Yo(e[n],t);else for(let n in e)e[n]&&t.push(vo(n))}return t}var Xo=new WeakMap,Zo=new WeakMap,Qo=new WeakMap,$o=new WeakMap,es=new WeakMap,ts=class{constructor(e,{name:t,value:n},r=E){C(this,Xo,void 0),C(this,Zo,void 0),C(this,Qo,void 0),C(this,$o,[]),C(this,es,[]),w(Xo,this,r),w(Zo,this,e),w(Qo,this,t),w($o,this,mo(n??``))}commit(e){let t=T($o,this).map(([t,n])=>e[n]);if(jo(T(es,this),t))return;let n=t[t.length-1];Do(n)?T(Xo,this).setAttribute(T(Zo,this),T(Qo,this),``,!1):T(Xo,this).removeAttribute(T(Zo,this),T(Qo,this)),w(es,this,t)}},ns=e=>Ni(e)&&Reflect.get(e,Zi)===Va.attribute,rs=new WeakMap,is=new WeakMap,as=new WeakMap,os=new WeakMap,ss=new WeakMap,cs=class{constructor(e,{name:t}){C(this,rs,void 0),C(this,is,void 0),C(this,as,null),C(this,os,null),C(this,ss,null),w(rs,this,e),w(is,this,mo(t)[0])}commit(e){let[,t]=T(is,this),n=e[t];if(!ns(n))return;let[r,i]=n;if(T(as,this)!==i)T(ss,this)?.call(this),w(os,this,i({node:T(rs,this)})),w(as,this,i),w(ss,this,T(os,this)?.call(this,r));else{let e=T(os,this)?.call(this,r);T(ss,this)!==e&&(T(ss,this)?.call(this),w(ss,this,e))}}destroy(){T(ss,this)?.call(this)}},ls=new WeakMap,us=new WeakMap,ds=new WeakMap,fs=new WeakMap,ps=new WeakMap,ms=class{constructor(e,{name:t,value:n},r=E){C(this,ls,void 0),C(this,us,void 0),C(this,ds,void 0),C(this,fs,[]),C(this,ps,[]),w(ls,this,r),w(us,this,e),w(ds,this,t),w(fs,this,mo(n??``))}commit(e){let t=T(fs,this).map(([t,n])=>e[n]).filter(e=>Di(e)||No(e));jo(T(ps,this),t)||(this.clear(),t.forEach(e=>{let[t,n]=hs(e);T(ls,this).addEventListener(T(us,this),T(ds,this),t,n)}),w(ps,this,t))}clear(){T(ps,this).forEach(e=>{let[t,n]=hs(e);T(ls,this).removeEventListener(T(us,this),T(ds,this),t,n)})}destroy(){this.clear()}};function hs(e){return Di(e)?[e,void 0]:e}var gs=new WeakMap,_s=new WeakMap,vs=new WeakMap,ys=new WeakMap,bs=class{constructor(e,{name:t,value:n}){C(this,gs,void 0),C(this,_s,void 0),C(this,vs,[]),C(this,ys,[]),w(gs,this,e),w(_s,this,t),w(vs,this,mo(n??``))}commit(e){let t=T(vs,this).map(([t,n])=>e[n]);if(jo(T(ys,this),t))return;let n=t[t.length-1];Reflect.set(T(gs,this),T(_s,this),n,T(gs,this)),w(ys,this,t)}},xs=new WeakMap,Ss=new WeakMap,Cs=new WeakMap,ws=class{constructor(e,{name:t}){C(this,xs,void 0),C(this,Ss,void 0),C(this,Cs,null),w(xs,this,e),w(Ss,this,mo(t)[0])}commit(e){let[,t]=T(Ss,this),n=e[t];!Pi(n)||Mo(T(Cs,this),n)||(Object.keys(n).forEach(e=>Reflect.set(T(xs,this),e,n[e],T(xs,this))),w(Cs,this,n))}},Ts=(e,t,n=E)=>t.type===S.attribute?new qo(e,t,n):t.type===S.boolean?new ts(e,t,n):t.type===S.event?new ms(e,t,n):t.type===S.property?new bs(e,t):t.type===S.spread?new ws(e,t):new cs(e,t),Es=new WeakMap,Ds=new WeakMap,Os=new WeakMap,ks=new WeakMap,As=new WeakMap,js=class{constructor(e,{value:t},n=E){C(this,Es,void 0),C(this,Ds,void 0),C(this,Os,void 0),C(this,ks,[]),C(this,As,[]),w(Es,this,n),w(Ds,this,e),w(Os,this,t),ki(t)&&w(ks,this,mo(t))}commit(e){let t=T(ks,this).map(([t,n])=>e[n]);if(jo(T(As,this),t))return;w(As,this,t);let n=T(As,this).reduce((e,t,n)=>e.replace(new RegExp(T(ks,this)[n][0]),Fi(t)&&!Mi(t)&&!ji(t)?String(t):``),T(Os,this)??``);T(Es,this).setText(T(Ds,this),n)}},Ms=new WeakMap,Ns=new WeakMap,Ps=new WeakMap,Fs=new WeakMap,Is=class{constructor(e,{name:t,value:n}){C(this,Ms,void 0),C(this,Ns,void 0),C(this,Ps,[]),C(this,Fs,[]),w(Ms,this,e),w(Ns,this,t),w(Ps,this,mo(n??``))}commit(e){let t=T(Ps,this).map(([t,n])=>e[n]);if(jo(T(Fs,this),t))return;let n=t[t.length-1];Reflect.set(T(Ms,this),T(Ns,this),n),w(Fs,this,t)}},Ls=function(e){return e.create=`create`,e.move=`move`,e}({});function Rs(e){let t=[],n=new Map;return e.forEach(({type:e,value:r},i)=>{let a={type:e,key:e===wc.templateLiterals?r.strings:r};t.push(a),n.set(a,i)}),{items:t,itemToIndex:n}}function zs(e){let t=[],n=new Map;return e.forEach((e,r)=>{let i=Pc(e),a={type:i,key:i===wc.templateLiterals?e.strings:e};t.push(a),n.set(a,r)}),{items:t,itemToIndex:n}}function Bs(e,t,n){let r=!!n?.strict,i={update:[],delete:[]},a=new Set,o=[],s=e.items,c=t.items;return s.forEach((e,t)=>{let n=c.findIndex((t,n)=>e.type===t.type&&e.key===t.key&&!a.has(n));n===-1?r?i.delete.push({from:t}):o.push(e):(a.add(n),i.update.push({action:`move`,from:t,to:n}))}),o.forEach(n=>{let r=e.itemToIndex.get(n),o=c.find((e,t)=>n.type===e.type&&!a.has(t));if(o){let e=t.itemToIndex.get(o);a.add(e),i.update.push({action:`move`,from:r,to:e})}else i.delete.push({from:r})}),c.forEach((e,n)=>{a.has(n)||i.update.push({action:`create`,from:-1,to:t.itemToIndex.get(e)})}),i.update.sort((e,t)=>e.to-t.to),i}var Vs=new WeakMap,Hs=new WeakMap,Us=new WeakMap,Ws=new WeakMap,Gs=class{constructor(e,t,n=E){C(this,Vs,void 0),C(this,Hs,void 0),C(this,Us,void 0),C(this,Ws,[]),w(Hs,this,e),w(Us,this,t),w(Vs,this,n)}commit(e){let t=Bs(Rs(T(Ws,this)),zs(e)),n={length:e.length};t.update.forEach(({action:t,from:r,to:i})=>{switch(t){case Ls.create:let t=T(Vs,this).createMarker(``);i===0?T(Vs,this).insertAfterNode(t,T(Hs,this)):T(Ws,this).length?T(Vs,this).insertAfterNode(t,n[i-1]?n[i-1].endNode:T(Ws,this)[i-1].endNode):T(Vs,this).insertBeforeNode(t,T(Us,this)),n[i]=new Js(t,e[i],T(Vs,this));break;case Ls.move:if(n[i]=T(Ws,this)[r],i===r)return;i===0?T(Ws,this)[r].insert(`after`,T(Hs,this)):T(Ws,this)[r].insert(`after`,n[i-1]?n[i-1].endNode:T(Ws,this)[i-1].endNode)}}),t.delete.forEach(({from:e})=>T(Ws,this)[e].destroy()),w(Ws,this,Array.from(n)),T(Ws,this).forEach((t,n)=>t.commit(e[n]))}destroy(){T(Ws,this).forEach(e=>e.destroy())}},Ks=new WeakMap,qs=new WeakMap,Js=class{constructor(e,t,n=E){C(this,Ks,void 0),C(this,qs,void 0),Co(this,`startNode`,void 0),Co(this,`endNode`,void 0),Co(this,`type`,void 0),Co(this,`value`,void 0),w(qs,this,n),this.startNode=n.createMarker(``),this.endNode=n.createMarker(``),n.insertBeforeNode(this.startNode,e),n.insertAfterNode(this.endNode,e),n.removeNode(e),this.value=t,this.type=Pc(t),w(Ks,this,Rc(this.type,this.startNode,this.endNode,n))}commit(e){T(Ks,this).commit(e),this.value=e}insert(e,t){let n=[this.startNode,...T(qs,this).rangeNodes(this.startNode,this.endNode),this.endNode];e===`before`?n.forEach(e=>T(qs,this).insertBeforeNode(e,t)):n.reverse().forEach(e=>T(qs,this).insertAfterNode(e,t))}destroy(){T(Ks,this).destroy?.(),T(qs,this).removeRange(this.startNode,this.endNode),T(qs,this).removeNode(this.startNode),T(qs,this).removeNode(this.endNode)}},Ys=new WeakMap,Xs=new WeakMap,Zs=new WeakMap,Qs=new WeakMap,$s=new WeakMap,ec=new WeakMap,tc=class{constructor(e,t,n=E){C(this,Ys,void 0),C(this,Xs,void 0),C(this,Zs,void 0),C(this,Qs,null),C(this,$s,null),C(this,ec,void 0),w(Xs,this,e),w(Zs,this,t),w(Ys,this,n)}commit(e){if(!Tc(e))return;let[t,n]=e;if(T(Qs,this)!==n)this.clear(),w($s,this,n(Ua(T(Xs,this),T(Zs,this),T(Ys,this)))),w(Qs,this,n),w(ec,this,T($s,this)?.call(this,t));else{let e=T($s,this)?.call(this,t);T(ec,this)!==e&&(this.clear(),w(ec,this,e))}}clear(){T(ec,this)?.call(this),T(Ys,this).removeRange(T(Xs,this),T(Zs,this))}destroy(){this.clear()}},nc=class{constructor(e,t){}commit(e){}},rc=new WeakMap,ic=new WeakMap,ac=new WeakMap,oc=class{constructor(e,t,n=E){C(this,rc,void 0),C(this,ic,void 0),C(this,ac,null),w(ic,this,t),w(rc,this,n)}commit(e){T(ac,this)!==e&&(T(ac,this)&&T(rc,this).removeNode(T(ac,this)),T(rc,this).insertBeforeNode(e,T(ic,this)),w(ac,this,e))}},sc=new WeakMap,cc=new WeakMap,lc=new WeakMap,uc=new WeakMap,dc=new WeakMap,fc=new WeakMap,pc=class{constructor(e,t,n=E){C(this,sc,void 0),C(this,cc,void 0),C(this,lc,void 0),C(this,uc,null),C(this,dc,null),C(this,fc,Po),w(cc,this,e),w(lc,this,t),w(sc,this,n)}commit(e){T(uc,this)!==e&&(this.clear(),Lo(e)&&this.promiseCommit(e))}promiseCommit(e){let[t,n]=mc(e);w(fc,this,n),t.then(e=>{let t=Pc(e);w(dc,this,Rc(t,T(cc,this),T(lc,this),T(sc,this))),T(dc,this)?.commit(e)}),w(uc,this,e)}partClear(){T(dc,this)?.destroy?.(),T(sc,this).removeRange(T(cc,this),T(lc,this))}clear(){T(fc,this).call(this),this.partClear(),w(fc,this,Po)}destroy(){this.clear()}};function mc(e){let t=Po,n=new Promise((e,n)=>t=n);return[Promise.race([n,e]),()=>t()]}var hc=new WeakMap,gc=new WeakMap,_c=new WeakMap,vc=class{constructor(e,t,n=E){C(this,hc,void 0),C(this,gc,void 0),C(this,_c,null),w(hc,this,n),w(gc,this,n.createText(``)),n.insertAfterNode(T(gc,this),e)}commit(e){T(_c,this)!==e&&(T(hc,this).setText(T(gc,this),Mi(e)||ji(e)?``:String(e)),w(_c,this,e))}},yc=new WeakMap,bc=new WeakMap,xc=new WeakMap,Sc=new WeakMap,Cc=class{constructor(e,t,n=E){C(this,yc,void 0),C(this,bc,void 0),C(this,xc,void 0),C(this,Sc,null),w(bc,this,e),w(xc,this,t),w(yc,this,n)}commit(e){let{strings:t,values:n}=e;T(Sc,this)&&!T(Sc,this).equalStrings(t)&&(T(Sc,this).destroy(),w(Sc,this,null)),T(Sc,this)||(w(Sc,this,new yl(e,T(bc,this),T(xc,this),T(yc,this))),T(Sc,this).insert(`before`,T(xc,this))),T(Sc,this).commit(n)}destroy(){T(Sc,this)?.destroy()}},wc=function(e){return e.primitive=`primitive`,e.templateLiterals=`templateLiterals`,e.array=`array`,e.node=`node`,e.object=`object`,e.function=`function`,e.directive=`directive`,e}({}),Tc=e=>Ni(e)&&Reflect.get(e,Zi)===Va.node,Ec=e=>t=>t instanceof e,Dc=Ec(vc),Oc=Ec(Cc),kc=Ec(Gs),Ac=Ec(oc),jc=Ec(pc),Mc=Ec(nc),Nc=Ec(tc),Pc=e=>Fi(e)?`primitive`:$a(e)?`templateLiterals`:Tc(e)?`directive`:Ni(e)?`array`:ko(e)?`node`:Di(e)?`function`:`object`,Fc={primitive:Dc,templateLiterals:Oc,array:kc,node:Ac,function:Mc,object:jc,directive:Nc},Ic={primitive:vc,templateLiterals:Cc,array:Gs,node:oc,function:nc,object:pc,directive:tc},Lc=(e,t)=>Fc[e](t),Rc=(e,t,n,r=E)=>new Ic[e](t,n,r),zc=new WeakMap,Bc=new WeakMap,Vc=new WeakMap,Hc=new WeakMap,Uc=new WeakMap,Wc=new WeakMap,Gc=new WeakMap,Kc=new WeakMap,qc=new WeakMap,Jc=new WeakMap,Yc=new WeakMap,Xc=new WeakMap,Zc=class{constructor(e,t,n,r,i=E){C(this,zc,void 0),C(this,Bc,void 0),C(this,Vc,void 0),C(this,Hc,void 0),C(this,Uc,void 0),C(this,Wc,[]),C(this,Gc,[]),C(this,Kc,null),C(this,qc,wa({},{shallow:!0})),C(this,Jc,null),C(this,Yc,null),C(this,Xc,void 0),w(zc,this,i),w(Xc,this,i.createEventBus()),w(Bc,this,e),w(Vc,this,t),w(Uc,this,n),w(Hc,this,mo(n.value)[0]),n.staticAttrs&&n.staticAttrs.forEach(e=>Ao(T(qc,this),e)),n.attrs?.forEach(e=>{e.type===S.directive?T(Wc,this).push(e):e.type===S.spread?r.push(new ws(T(qc,this),e)):e.type===S.event?r.push(new ms(T(Xc,this),e,i)):r.push(new Is(T(qc,this),e))})}createContext(){return T(zc,this).createComponentContext(T(Bc,this),T(Xc,this))}commit(e){let[,t]=T(Hc,this),n=e[t];if(!Di(n)||T(Jc,this)===n){T(Gc,this).forEach(t=>t.commit(e));return}let r=this.createContext();this.clear(),ea(this);let i=n.call(r,T(qc,this),r);ea(null),T(Wc,this).length&&T(Gc,this).push(...T(Wc,this).map(e=>new cs(r,e))),aa(this,Ui);let a=!1;w(Yc,this,ya(()=>{let e=i(),t=Pc(e);Lc(t,T(Kc,this))||(this.partClear(),w(Kc,this,Rc(t,T(Bc,this),T(Vc,this),T(zc,this)))),aa(this,a?qi:Ki),T(Kc,this)?.commit(e),a?aa(this,Yi):(aa(this,Ji),a=!0)})),T(Gc,this).forEach(t=>t.commit(e)),aa(this,Wi),w(Jc,this,n)}partClear(){T(Kc,this)?.destroy?.(),T(zc,this).removeRange(T(Bc,this),T(Vc,this))}clear(){T(zc,this).removeRange(T(Bc,this),T(Vc,this)),aa(this,Gi),T(Gc,this).forEach(e=>e.destroy?.()),T(Yc,this)?.call(this),w(Gc,this,[]),w(Yc,this,null),oa(this)}destroy(){this.clear(),this.partClear()}},Qc,$c,el,tl,nl=da((Qc=new WeakMap,$c=new WeakMap,el=new WeakMap,tl=new WeakMap,class{constructor(e,t,n,r=E){C(this,Qc,void 0),C(this,$c,void 0),C(this,el,void 0),C(this,tl,void 0),w(Qc,this,r),w($c,this,r.createMarker(``)),w(el,this,r.createMarker(``)),w(tl,this,new Zc(T($c,this),T(el,this),t,n,r)),r.insertBeforeNode(T($c,this),e),r.insertAfterNode(T(el,this),e),r.removeNode(e)}commit(e){T(tl,this).commit(e)}destroy(){T(tl,this).destroy?.(),T(Qc,this).removeNode(T($c,this)),T(Qc,this).removeNode(T(el,this))}})),rl=new WeakMap,il=new WeakMap,al=new WeakMap,ol=new WeakMap,sl=new WeakMap,cl=new WeakMap,ll=class{constructor(e,{value:t},n=E){C(this,rl,void 0),C(this,il,void 0),C(this,al,void 0),C(this,ol,void 0),C(this,sl,null),C(this,cl,null),w(rl,this,n),w(il,this,n.createMarker(``)),w(al,this,n.createMarker(``)),w(ol,this,mo(t)[0]),n.insertBeforeNode(T(il,this),e),n.insertAfterNode(T(al,this),e),n.removeNode(e)}commit(e){let[,t]=T(ol,this),n=e[t];if(T(sl,this)===n)return;let r=Pc(n);Lc(r,T(cl,this))||(Mi(T(cl,this))||this.clear(),w(cl,this,Rc(r,T(il,this),T(al,this),T(rl,this)))),T(cl,this)?.commit(n),w(sl,this,n)}clear(){T(cl,this)?.destroy?.(),T(rl,this).removeRange(T(il,this),T(al,this))}destroy(){this.clear(),T(rl,this).removeNode(T(il,this)),T(rl,this).removeNode(T(al,this))}};function ul(e=[],t,n=!1,r=[],i=E){return e.forEach(e=>{if(e.isComponent){let n=i.createMarker(``);i.appendChild(t,n),r.push(new nl(n,e,r,i));return}let a=i.createNode(e,e.isSvg||n);i.appendChild(t,a),i.isMarker(a)&&e.isMarker&&r.push(new js(a,e,i)),i.isText(a)&&e.isMarkerOnly&&r.push(new ll(a,e,i)),i.isElement(a)&&(e.staticAttrs&&e.staticAttrs.forEach(e=>i.setAttr(a,e)),e.attrs&&r.push(...e.attrs.map(e=>Ts(a,e,i))),e.children&&ul(e.children,a,e.isSvg||n,r,i))}),r}function dl(e,t=!1,n=E){let r=n.createFragment();return[r,ul(e.children,r,t,[],n)]}var fl=new WeakMap,pl=new WeakMap,ml=new WeakMap,hl=new WeakMap,gl=new WeakMap,_l=new WeakMap,vl=new WeakMap,yl=class{constructor(e,t,n,r=E){if(C(this,fl,void 0),C(this,pl,void 0),C(this,ml,void 0),C(this,hl,null),C(this,gl,[]),C(this,_l,void 0),C(this,vl,!1),w(fl,this,r),w(pl,this,r.createMarker(``)),w(ml,this,r.createMarker(``)),w(_l,this,e.strings),e[Qi]!==Ga.html&&e[Qi]!==Ga.svg)return;let[i,a]=dl(e.template.node,uo(e[Qi]),r);w(hl,this,i),w(gl,this,a),t&&n?(w(pl,this,t),w(ml,this,n),w(vl,this,!0)):(r.prependChild(i,T(pl,this)),r.appendChild(i,T(ml,this)))}equalStrings(e){return T(_l,this)===e}commit(e){T(gl,this).forEach(t=>t.commit(e))}insert(e,t){T(hl,this)&&(e===`before`?T(fl,this).insertBeforeNode(T(hl,this),t):e===`after`?T(fl,this).insertAfterNode(T(hl,this),t):T(fl,this).appendChild(t,T(hl,this)),w(hl,this,null))}destroy(){T(gl,this).forEach(e=>e.destroy?.()),T(fl,this).removeRange(T(pl,this),T(ml,this)),T(vl,this)||(T(fl,this).removeNode(T(pl,this)),T(fl,this).removeNode(T(ml,this)))}},bl=function(e){return e.string=`string`,e.whiteSpace=`whiteSpace`,e.lt=`lt`,e.gt=`gt`,e.slash=`slash`,e.equal=`equal`,e}({}),xl={doubleQuote:`"`,singleQuote:`'`,whiteSpace:/\s/,string:/\S/,breakString:/<|>|=/,lt:`<`,gt:`>`,slash:`/`,equal:`=`,hyphen:`-`,exclamationPoint:`!`},Sl=e=>t=>e===t,Cl=e=>t=>e.test(t),wl={doubleQuote:Sl(xl.doubleQuote),singleQuote:Sl(xl.singleQuote),whiteSpace:Cl(xl.whiteSpace),string:Cl(xl.string),breakString:Cl(xl.breakString),lt:Sl(xl.lt),gt:Sl(xl.gt),slash:Sl(xl.slash),equal:Sl(xl.equal),hyphen:Sl(xl.hyphen),exclamationPoint:Sl(xl.exclamationPoint)},Tl=e=>t=>wl.lt(e[t])&&wl.exclamationPoint(e[t+1])&&wl.hyphen(e[t+2])&&wl.hyphen(e[t+3]);function El(e){let t=[],n=0,r=()=>n<e.length,i=Tl(e),a=(o=`text`)=>{for(;r();){let s=e[n];if(wl.whiteSpace(s)){let i=``;for(;r()&&wl.whiteSpace(s);)i+=s,s=e[++n];o!==`element`&&t.push({type:`whiteSpace`,value:i});continue}if(o===`element`){if(wl.lt(s)){t.push({type:`lt`,value:s}),n++;continue}if(wl.gt(s)){t.push({type:`gt`,value:s}),n++;break}if(wl.slash(s)){t.push({type:`slash`,value:s}),n++;continue}if(wl.equal(s)){t.push({type:`equal`,value:s}),n++;continue}if(wl.doubleQuote(s)){let i=``;for(s=e[++n];r()&&!wl.doubleQuote(s);)i+=s,s=e[++n];t.push({type:`string`,value:i}),n++;continue}if(wl.singleQuote(s)){let i=``;for(s=e[++n];r()&&!wl.singleQuote(s);)i+=s,s=e[++n];t.push({type:`string`,value:i}),n++;continue}}else if(o===`comment`){if(wl.lt(s)){t.push({type:`lt`,value:s}),n++;continue}if(wl.gt(s)){t.push({type:`gt`,value:s}),n++;break}}else if(wl.lt(s)){a(i(n)?`comment`:`element`);continue}if(wl.string(s)){let i=``;for(;r()&&wl.string(s)&&!wl.breakString(s);)i+=s,s=e[++n];t.push({type:`string`,value:i});continue}n++}};return a(),t}var Dl=/^(area|base|br|col|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/i,Ol=e=>t=>n=>r=>n[r]?n[r][e]===t:!1,kl=Ol(`type`),Al=Ol(`value`),jl=kl(bl.lt),Ml=kl(bl.gt),Nl=kl(bl.slash),Pl=kl(bl.equal),Fl=kl(bl.string),Il=kl(bl.whiteSpace),Ll=Al(`!--`),Rl=Al(`--`),zl=e=>{let t=jl(e),n=Fl(e);return e=>t(e)&&n(e+1)},Bl=e=>{let t=jl(e),n=Nl(e),r=Fl(e),i=Ml(e);return e=>t(e)&&n(e+1)&&r(e+2)&&i(e+3)},Vl=e=>{let t=jl(e),n=Nl(e),r=Ml(e);return e=>t(e)&&n(e+1)&&n(e+2)&&r(e+3)},Hl=e=>{let t=Nl(e),n=Ml(e);return e=>t(e)&&n(e+1)},Ul=e=>Dl.test(e),Wl=e=>{let t=jl(e),n=Fl(e),r=Ll(e);return e=>t(e)&&n(e+1)&&r(e+1)},Gl=e=>{let t=Fl(e),n=Rl(e),r=Ml(e);return e=>t(e)&&n(e)&&r(e+1)},Kl=e=>t=>n=>{n&&(t[e]?t[e]?.push(n):t[e]=[n])},ql=Kl(`attrs`),Jl=Kl(`children`);function Yl(e){let t=new Eo({type:To.element,value:`template`,children:[]}),n=0,r=()=>n<e.length,i=zl(e),a=Bl(e),o=Vl(e),s=Hl(e),c=Wl(e),l=Gl(e),u=jl(e),d=Ml(e),f=Pl(e),p=Il(e),m=Fl(e),h=()=>{let t=e[n],r={name:t.value};return t=e[++n],f(n)&&(t=e[++n],m(n)&&(r.value=t.value,n++)),r},g=t=>{let f=e[n];if(p(n)||m(n)){let i=f.value;for(f=e[++n];r()&&!u(n);)i+=f.value,f=e[++n];return i=i.trim(),i.length?new Eo({parent:t,type:To.text,value:i}):null}if(c(n)){let i=``;for(n+=2,f=e[n];r()&&!l(n);)i+=f.value,f=e[++n];return l(n)&&(n+=2),new Eo({parent:t,type:To.comment,value:i})}if(i(n)){f=e[++n];let i=Ul(f.value),c=new Eo({parent:t,type:To.element,value:f.value.toLowerCase()});for(n++;r()&&!d(n)&&!s(n);){if(m(n)){ql(c)(h());continue}n++}if(s(n))return n+=2,c;for(f=e[++n];r()&&!a(n)&&!o(n)&&!i;)Jl(c)(g(c));return(a(n)||o(n))&&(n+=4),c}return n++,null};for(;r();)Jl(t)(g(t));return t}var Xl=e=>Yl(El(e)),Zl=(e,t)=>e.reduce((e,n)=>{let r=t(n),i=e[r];return i?i.push(n):e[r]=[n],e},Object.create(null)),Ql=Symbol.iterator,$l=class e{get isMarker(){return so(this.value)}get isMarkerOnly(){return co(this.value)}get isSvg(){return this.type===To.element&&/^svg$/i.test(this.value)}get isComponent(){return this.type===To.element&&this.isMarkerOnly}constructor(t,n=null){if(Co(this,`type`,To.comment),Co(this,`value`,``),Co(this,`staticAttrs`,void 0),Co(this,`attrs`,void 0),Co(this,`parent`,null),Co(this,`children`,void 0),this.type=t.type,this.value=t.value,this.parent=n,t.attrs){let[e,n]=nu(t.attrs);e.length&&(this.staticAttrs=e),n.length&&(this.attrs=n)}t.children&&(this.children=t.children.map(t=>new e(t,this)))}insert(e,t,n){if(this.children){let r=e===`before`?0:1;this.children.includes(n)&&this.children.splice(this.children.indexOf(n)+r,0,t)}else this.children=[t]}*iterParent(){yield this,this.parent&&(yield*this.parent.iterParent())}*[Ql](){if(yield this,this.children)for(let e of this.children)yield*e}};function eu(e){let t=new $l(e);for(let e of t)e.type===To.text&&!co(e.value)&&tu(e);return t}function tu(e){let t=mo(e.value);e.value.replace(Bi,Ri).split(Ri).reduce((n,r,i)=>(i<t.length?n.push(new $l(new Eo({type:To.text,value:r}),e.parent),new $l(new Eo({type:To.text,value:t[i][0]}),e.parent)):n.push(new $l(new Eo({type:To.text,value:r}),e.parent)),n),[]).filter(e=>e.value!==``&&!(!e.value.trim()&&Hi.test(e.value))).reverse().forEach((t,n,{length:r})=>n===r-1?e.value=t.value:e.parent&&e.parent.insert(`after`,t,e))}function nu(e=[]){let t=Zl(e,e=>po(e.name));return Object.keys(t).map(e=>t[e]).reduce((e,t)=>{let[n,r]=e,i=t[t.length-1],a=fo(i.name);if(a===S.event)r.push(...t.filter(e=>!!e.value).map(e=>({type:fo(e.name),name:po(e.name),value:e.value})));else if(a===S.attribute){let e=t.filter(e=>!!e.value).map(e=>e.value).join(` `),o={type:a,name:po(i.name)};e&&(o.value=e),lo(o)?r.push(o):n.push(o)}else{let e={type:a,name:po(i.name)};i.value&&(e.value=i.value),lo(e)?r.push(e):n.push(e)}return e},[[],[]])}var ru=e=>(t,...n)=>{let r={strings:t,values:n,[Qi]:e};if(Ja.has(t))return r.template=Ja.get(t),r;let i=eu(Xl(t.reduce((e,t,r)=>(r<n.length?e.push(t,Za(r)):e.push(t),e),[]).join(``)));return r.template=Object.freeze({node:i}),Ja.set(t,r.template),r},iu=ru(Ga.html),au=ru(Ga.svg);function ou(e){let t=Oo(e),n=new WeakMap;return{html:iu,svg:au,render:(e,r)=>{if(!$a(r)){n.has(e)&&(n.get(e)?.destroy(),n.delete(e));return}let{strings:i,values:a}=r,o=n.get(e);if(o?.equalStrings(i))o?.commit(a);else{let i=new yl(r,void 0,void 0,t);o?.destroy(),n.set(e,i),i.insert(`children`,e),i.commit(a)}}}}var su=Wa((e,t,n)=>(e.length,[e,t,n]),({startNode:e,endNode:t,helper:n=E})=>{let r=[],i=()=>{r.forEach(e=>e.destroy())};return([a,o,s])=>{let c=fu(a,o,s),l=c.values,u=Bs(du(r),c,{strict:!0}),d={length:l.length};return u.update.forEach(({action:i,from:a,to:o})=>{switch(i){case Ls.create:let i=n.createMarker(``);o===0?n.insertAfterNode(i,e):r.length?n.insertAfterNode(i,d[o-1]?d[o-1].endNode:r[o-1].endNode):n.insertBeforeNode(i,t),d[o]=new uu(i,l[o].value,l[o].key,n);break;case Ls.move:if(d[o]=r[a],o===a)return;o===0?r[a].insert(`after`,e):r[a].insert(`after`,d[o-1]?d[o-1].endNode:r[o-1].endNode)}}),u.delete.forEach(({from:e})=>r[e].destroy()),r=Array.from(d),r.forEach((e,t)=>e.commit(l[t].value)),i}}),cu=new WeakMap,lu=new WeakMap,uu=class{constructor(e,t,n,r=E){C(this,cu,void 0),C(this,lu,void 0),Co(this,`startNode`,void 0),Co(this,`endNode`,void 0),Co(this,`type`,void 0),Co(this,`key`,void 0),w(lu,this,r),this.startNode=r.createMarker(``),this.endNode=r.createMarker(``),r.insertBeforeNode(this.startNode,e),r.insertAfterNode(this.endNode,e),r.removeNode(e),this.key=n,this.type=Pc(t),w(cu,this,Rc(this.type,this.startNode,this.endNode,r))}commit(e){T(cu,this).commit(e)}insert(e,t){let n=[this.startNode,...T(lu,this).rangeNodes(this.startNode,this.endNode),this.endNode];e===`before`?n.forEach(e=>T(lu,this).insertBeforeNode(e,t)):n.reverse().forEach(e=>T(lu,this).insertAfterNode(e,t))}destroy(){T(cu,this).destroy?.(),T(lu,this).removeRange(this.startNode,this.endNode),T(lu,this).removeNode(this.startNode),T(lu,this).removeNode(this.endNode)}};function du(e){let t=[],n=new Map;return e.forEach(({type:e,key:r},i)=>{let a={type:e,key:r};t.push(a),n.set(a,i)}),{items:t,itemToIndex:n}}function fu(e,t,n){let r=[],i=new Map,a=[];return e.forEach((e,o,s)=>{let c={key:t(e),value:n(e,o,s)},l={type:Pc(c.value),key:c.key};a.push(c),r.push(l),i.set(l,o)}),{items:r,itemToIndex:i,values:a}}var pu={vCSSStyleSheetMap:new Map,hostContextMap:new Map,globalOrder:[],orderedSheets:null},mu=globalThis.ShadowRoot&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,hu=null;function gu(){return hu===null&&(hu=_u()),hu}function _u(){try{let e=document.createElement(`div`).attachShadow({mode:`open`}),t=new CSSStyleSheet;return e.adoptedStyleSheets.push(t),e.adoptedStyleSheets.length===1&&e.adoptedStyleSheets[0]===t}catch{return!1}}function vu(){return pu}function yu(e){let t=vu(),{identifier:n,cssText:r,mode:i}=e;if(!r||t.vCSSStyleSheetMap.has(n))return n;let a=mu?new CSSStyleSheet:null,o=mu?null:document.createElement(`style`);a?a.replaceSync(r):o&&(o.textContent=r);let s={identifier:n,cssText:r,mode:i,sheet:a,styleElement:o};return t.vCSSStyleSheetMap.set(n,s),wu(s),n}function bu(e){let t=[],n=[];for(let r of e.vCSSStyleSheetMap.values())(r.mode===`global`?t:n).push(r);if(e.globalOrder.length>0){let n=({identifier:t})=>{let n=e.globalOrder.indexOf(t);return n===-1?e.globalOrder.length:n};t.sort((e,t)=>n(e)-n(t))}return[...t,...n]}function xu(e){return e.orderedSheets||=bu(e).map(({sheet:e})=>e).filter(Boolean),e.orderedSheets}function Su(e,t){e.adoptedStyleSheets=[...t]}function Cu(){let e=vu(),t=xu(e);e.hostContextMap.forEach((e,n)=>Su(n,t))}function wu(e){if(!mu){Tu();return}let t=vu(),{mode:n,sheet:r}=e,i=t.orderedSheets;if(!r||n===`global`||!i){t.orderedSheets=null,Cu();return}if(i.push(r),!gu()){Cu();return}t.hostContextMap.forEach((e,t)=>t.adoptedStyleSheets.push(r))}function Tu(){let e=vu(),t=bu(e);Array.from(e.hostContextMap).forEach(([e,{styleElements:n}])=>{t.forEach((r,i)=>{if(n.has(r)||!r.styleElement)return;let a=document.importNode(r.styleElement,!0),o=Eu(t,i+1,n);o?e.insertBefore(a,o):e.appendChild(a),n.set(r,a)})})}function Eu(e,t,n){for(let r=t;r<e.length;r++){let t=n.get(e[r]);if(t)return t}return null}function D(e){function t(t){return{type:e,payload:t}}return t.toString=()=>`${e}`,t.type=e,t}function*Du(e,t,n){for(let r of n)r?.[Symbol.iterator]?yield*Du(e,t,r):Di(r)?yield*Du(e,t,r(e,t)):yield r}var Ou=(e,t,n)=>[...Du(e,t,n)],ku=(...e)=>t=>e.reduce((e,t)=>t(e),t);function*Au(e){yield e}var ju=function*(e){for(let t of e)t.length&&(yield t)};function Mu({context:e,state:t,reducers:n,enableObservable:r=!0}){let i=r?wa(t):t,a=Ii(),o=Ii(),s=ku(ju),c=t=>{xi(Reflect.get(n,t.type,n),i,t,e)},l=(...t)=>{let n=Ou(i,e,t);a.next(n)},u=(...e)=>{Si(()=>l(...e))},d=a.subscribe(e=>{let t=s(Au(e));for(let e of t)o.next(e)}),f=o.subscribe(e=>e.forEach(c));return{context:e,state:i,dispatch:u,dispatchSync:l,subscribe:o.subscribe,pipe:(...e)=>(s=ku(...e,ju),()=>{s=ku(ju)}),destroy:()=>{d(),f()}}}var Nu=`__RHTML_CSS_DIAGNOSTICS__`,Pu=({line:e,column:t})=>e===void 0?``:` (${e}:${t??1})`,Fu=(e,t)=>{let n=`[r-html] ${t.mode===`global`?`css.global`:`css`} ${t.identifier}${Pu(e)} ${e.code}: ${e.message}`;e.severity===`error`?console.error(n):console.warn(n)},Iu;function Lu(){if(Iu!==void 0)return Iu;let e=Reflect.get(globalThis,Nu);return e?typeof e==`function`?e:Fu:null}function Ru(){return Lu()!==null}function zu(e,t){if(e.length===0)return;let n=Lu();if(n)for(let r of e)n(r,t)}var Bu=[``];function Vu(e){return{value:``,root:null,parent:null,type:o,props:e.slice(),children:[],line:1,column:1,length:0,return:``,siblings:[]}}function Hu(e,t={}){let n=t.rules??Bu,r=t.rules===void 0?null:Vu(n),i=s(e);return c(l(``,null,null,r??null,n,i,0,[0],i))}var Uu=`rhtml-scope`;function Wu(e,t){return e.split(Uu).join(t)}var Gu=/^(?::host\b|::slotted\()/;function Ku(e){return Gu.test(e.trim())}function qu(e){return e.type===o}function Ju(e){return e.type===n}function Yu(e){return e.type.charCodeAt(0)===64}function Xu(e){return Array.isArray(e.children)?e.children:[]}function Zu(e){return e.value.charCodeAt(e.value.length-1)===59?e.value.slice(0,-1):e.value}function Qu(e){let t=[];for(let n of Xu(e))Ju(n)&&t.push(Zu(n));return t}function $u(e){return Xu(e).filter(qu)}function ed(e){let t=e.charCodeAt(1);return t===100||t===109||t===115||t===99&&e.charCodeAt(3)===110?!0:t===99||t===108?e.charCodeAt(2)===97:!1}var td=new Set([r,t,a,i]);function nd(e,t,n){let i=[],a=new Set,o=!1,s=(e,t)=>{for(let n of e){if(qu(n)){o=!0,rd(n,t,i);continue}if(Yu(n)){if(Xu(n).length===0){if(!td.has(n.type))continue;i.push({code:`unsupported-at-rule`,severity:`error`,message:`\`${n.value}\` is not supported and was dropped. A constructed stylesheet strips \`@import\` by spec, and happy-dom discards the entire sheet when it sees any body-less at-rule — with one sheet per template that would erase the whole component. Move it to a \`<link>\`.`,line:n.line,column:n.column}),n.type===r&&o&&i.push({code:`import-after-rule`,severity:`warning`,message:`\`${n.value}\` follows a rule. Even where \`@import\` is supported it has to precede every rule in the sheet, so this one could not have applied.`,line:n.line,column:n.column});continue}if(o=!0,ed(n.type)){s(Xu(n),t);continue}$u(n).length>0&&id(n,a,i),s(Xu(n),!1)}}};s(e,n.scoped),!n.scoped&&e.some(Ju)&&i.push({code:`rule-without-selector`,severity:`warning`,message:`Declarations at the top level of a global block have no selector and were dropped. Wrap them in one.`}),ad(t,i);let c=sd(n.source);return c&&i.push(c),i}function rd(e,t,n){if(e.props.every(e=>e.length===0)){let t=Qu(e);t.length>0&&n.push({code:`rule-without-selector`,severity:`warning`,message:`A rule with no selector was dropped: \`{${t.join(`;`)}}\`.`,line:e.line,column:e.column})}if(t)for(let t of od(e.value)){let r=t.trim();if(Ku(r)){n.push({code:`shadow-boundary`,severity:`warning`,message:`\`${r}\` crosses a shadow boundary, but a scoped block prepends the component class to it, so it can never match. Use \`css.global\` for this rule.`,line:e.line,column:e.column});continue}r.charCodeAt(0)===58&&n.push({code:`implicit-descendant`,severity:`warning`,message:`\`${r}\` becomes a descendant of the scope, not a qualifier on it. Prefix it with \`&\` to attach it: \`&${r}\`.`,line:e.line,column:e.column})}}function id(e,t,n){if(t.has(e.value)){n.push({code:`duplicate-keyframes`,severity:`warning`,message:`\`${e.value}\` is defined more than once. The name is global and unscoped, so the last definition wins for every template that animates with it.`,line:e.line,column:e.column});return}t.add(e.value)}function ad(e,t){for(let n of e)for(let e of n.declarations)e.includes(`rhtml-scope`)&&t.push({code:`scope-in-declaration`,severity:`warning`,message:`\`${e}\` contains \`${Uu}\`. The sentinel is only substituted in selectors, so it will reach the browser as written.`})}function od(e){let t=[],n=0,r=0,i=0;for(let a=0;a<e.length;a++){let o=e.charCodeAt(a);r===0?o===34||o===39?r=o:o===40||o===91?n++:o===41||o===93?n--:o===44&&n===0&&(t.push(e.slice(i,a)),i=a+1):o===r&&e.charCodeAt(a-1)!==92&&(r=0)}return t.push(e.slice(i)),t}function sd(e){let t=1,n=1,r=0,i=()=>{e.charCodeAt(r)===10?(t++,n=1):n++,r++};for(;r<e.length;){let a=e.charCodeAt(r),o=e.charCodeAt(r+1);if(a===47&&o===42){let a=t,o=n;for(i(),i();r<e.length&&(e.charCodeAt(r)!==42||e.charCodeAt(r+1)!==47);)i();if(r>=e.length)return{code:`unterminated-comment`,severity:`warning`,message:`Unterminated block comment. The scanner consumed the rest of the source, so every rule after it was lost.`,line:a,column:o};i(),i();continue}if(a===47&&o===47){for(;r<e.length&&e.charCodeAt(r)!==10;)i();continue}if(a===34||a===39){let o=t,s=n;for(i();r<e.length&&e.charCodeAt(r)!==a;)e.charCodeAt(r)===92&&i(),i();if(r>=e.length)return{code:`unterminated-string`,severity:`warning`,message:`Unterminated string. The scanner consumed the rest of the source, so every rule after it was lost.`,line:o,column:s};i();continue}i()}return null}function cd(e,t={}){let n=``,r=[];for(let i of e){let{conditions:e}=i,a=0;for(;a<r.length&&a<e.length&&r[a]===e[a];)a++;for(let e=a;e<r.length;e++)n+=`}`;for(let t=a;t<e.length;t++)n+=`${e[t]}{`;r=e,n+=ld(i,t.scope)}for(let e=0;e<r.length;e++)n+=`}`;return n}function ld(e,t){return e.body===void 0?`${e.prelude??ud(e.selectors,t)}{${e.declarations.join(`;`)};}`:`${e.prelude}{${e.body}}`}function ud(e,t){return(t===void 0?e:e.map(e=>Wu(e,t))).join(`,`)}var dd=[],fd=e=>e.length>0;function pd(e,t){let n=[];return hd(e,dd,t.rules,n),(t.plugins??[]).reduce((e,t)=>e.flatMap(e=>t(e)),n).filter(md)}function md(e){let t=e.selectors.length>0||e.prelude!==void 0,n=e.declarations.length>0||!!e.body;return t&&n}function hd(e,t,n,r){let i=r.length,a=[];for(let i of e)Ju(i)?a.push(Zu(i)):qu(i)?gd(i,t,r):Yu(i)&&_d(i,t,n,r);if(a.length===0)return;let o=n.filter(fd);o.length!==0&&r.splice(i,0,{conditions:t,selectors:o,declarations:a})}function gd(e,t,n){let r=e.props.filter(fd);if(r.length===0)return;let i=Qu(e);i.length!==0&&n.push({conditions:t,selectors:r,declarations:i})}function _d(e,t,n,r){let i=Xu(e);if(i.length===0)return;if(ed(e.type)){let a=[];if(hd(i,[...t,e.value],n,a),a.length===0)return;for(let e of a)r.push(e);return}let a=$u(e);if(a.length>0){let n=[];for(let e of a)gd(e,dd,n);let i=cd(n);i&&r.push({conditions:t,selectors:[],prelude:e.value,declarations:[],body:i});return}let o=Qu(e);o.length!==0&&r.push({conditions:t,selectors:[],prelude:e.value,declarations:o})}function vd(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}var yd=7;function bd(e){return`_${vd(e).toString(36).padStart(yd,`0`)}`}var xd=[];function Sd(e,t={}){let n=t.mode!==`global`,r=n?[Uu]:[``],i=Hu(e,{rules:r}),a=pd(i,{rules:r,plugins:t.plugins}),o=cd(a),s=bd(o);return{rules:a,canonicalText:o,identifier:s,cssText:cd(a,{scope:`.${s}`}),diagnostics:t.dev?nd(i,a,{source:e,scoped:n}):xd}}function Cd(e){let t=/[;{}][^;{}]*$/.exec(e);return t?t[0].slice(1):e}function wd(e){let t=e.search(/[;}\n]/);return t===-1?e:e.slice(0,t)}function Td(e){let t=[];for(let n=0;n<e.length-1;n++){let r=Cd(e[n]),i=wd(e[n+1]),a=!r.includes(`:`)&&!i.includes(`{`)?`statement`:`inline`;t.push({kind:a,provable:r.trim().length===0})}return t}function Ed(e){let t=e.trimEnd();return!t||t.endsWith(`;`)||t.endsWith(`}`)?e:`${e};`}function Dd(e,t){return eo(e)?t===`statement`?Ed(e[qa]??``):`.${String(e)}`:Fi(e)&&!Mi(e)&&!ji(e)?String(e):``}function Od(e,t,n){if(eo(t)){e.kind===`statement`&&!e.provable&&console.error("[r-html] a css literal follows unterminated text, so it is spliced in as a statement. End the declaration in front of it with a `;`.");return}if(n.includes(`{`)||n.includes(`}`)){console.warn(`[r-html] interpolated value contains a brace and is substituted before compiling, so it can change the rule structure: ${n}`);return}(kd(n,`'`)||kd(n,`"`))&&console.warn(`[r-html] interpolated value has an unbalanced quote and is substituted before compiling: ${n}`)}function kd(e,t){let n=0;for(let r of e)r===t&&n++;return n%2==1}function Ad(e,t,n){let r=``;for(let i=0;i<e.length;i++){if(r+=e[i],i>=t.length)continue;let a=Dd(n[i],t[i].kind);Od(t[i],n[i],a),r+=a}return r}var jd=32,Md=`\0`;function Nd(e){return(t,...n)=>{let r=Fd(t,e),i=Id(r.node,n),a=yu(i);return{strings:t,values:n,template:r,[Qi]:Ga.css,[qa]:i.source,toString:()=>a}}}var Pd=Object.assign(Nd(`scoped`),{global:Nd(`global`)});function Fd(e,t){let n=Ya.get(e);if(n&&n.node.mode===t)return n;let r=e.raw,i={raw:r,slots:Td(r),mode:t,memo:new Map},a=Object.freeze({node:i});return Ya.set(e,a),a}function Id(e,t){let n=e.slots.map((e,n)=>Dd(t[n],e.kind)).join(Md),r=e.memo.get(n);if(r)return r;let i=Ad(e.raw,e.slots,t),{rules:a,canonicalText:o,identifier:s,cssText:c,diagnostics:l}=Sd(i,{mode:e.mode,dev:Ru()}),u={source:i,mode:e.mode,rules:a,canonicalText:o,identifier:s,cssText:c};if(zu(l,{source:i,identifier:s,mode:e.mode}),e.memo.set(n,u),e.memo.size>jd){let[t]=e.memo.keys();e.memo.delete(t)}return u}re.autoDrawEnabled=!1,Reflect.set(re,`DD`,ne);const Ld=new Set,Rd=new Set,zd=new Map,Bd=[],Vd=[],Hd=new Set;let Ud=!1,Wd=!1,Gd=0;function Kd(){return Gd}function qd(){Gd+=1;try{Hd.forEach(e=>e())}finally{Ud=!1,Wd=!1;for(let e of Ld){if(zd.has(e)){Rd.add(e);continue}e.getStage()instanceof te&&e.batchDraw()}Ld.clear(),Bd.splice(0).forEach(e=>e())}}function Jd(e){return Hd.add(e),()=>{Hd.delete(e)}}function Yd(){queueMicrotask(()=>{if(Wd){Wd=!1,Yd();return}qd()})}function Xd(){Wd=!0,!Ud&&(Ud=!0,Yd())}function Zd(e){if(zd.has(e)){Rd.add(e);return}Ld.add(e),Xd()}function Qd(e){zd.set(e,(zd.get(e)??0)+1)}function $d(e){let t=(zd.get(e)??0)-1;t>0?zd.set(e,t):zd.delete(e),Vd.splice(0).forEach(e=>e()),t<=0&&Rd.delete(e)&&Zd(e)}function ef(){return new Promise(e=>{Vd.push(()=>e())})}function tf(){return zd.size?ef().then(tf):Ud?new Promise(e=>{Bd.push(()=>e())}):Promise.resolve()}const nf=Symbol(`r-html/konva-slot`),rf=Symbol(`r-html/konva-ledger`),af=Symbol(`r-html/konva-virtual`),of=Symbol(`r-html/konva-fragment`),sf=new Set([`class`,`style`,`zIndex`]),cf={reconcile:0,scan:0,attach:0,drop:0,order:0,setZIndex:0},lf={"k-layer":()=>new f,"k-group":()=>new d,"k-rect":()=>new ee,"k-text":()=>new _,"k-path":()=>new g,"k-line":()=>new h,"k-circle":()=>new m};function uf(){}function df(){throw Error(`[konva-host] a DOM-only directive reached the konva host. innerHTML and vCSSStyleSheet read the DOM through the module helpers, which a konva node has nothing to answer with`)}function ff(e,t=``){let n={kind:e,data:t};return Reflect.set(n,af,e),Object.defineProperty(n,"nextSibling",{get:df}),Object.defineProperty(n,"parentNode",{get:df}),n}const pf=e=>e&&typeof e==`object`?Reflect.get(e,af)??null:null,mf=e=>e instanceof p,hf=e=>mf(e)&&Reflect.get(e,of)===!0,gf=e=>Reflect.get(e,nf);function _f(e){let t=gf(e);if(t)return t;let n={node:e,parent:null,prev:null,next:null,doomed:!1};return Reflect.set(e,nf,n),n}function vf(e){let t=Reflect.get(e,rf);if(t)return t;let n={first:null,last:null,dirty:!1,reconciledAt:-1};return Reflect.set(e,rf,n),n}const yf=e=>gf(e)?.parent??null,bf=e=>gf(e)?.next?.node??null,xf=new Set,Sf=new WeakMap;function Cf(e){let t=e;for(;t;){if(t instanceof f)return t;t=yf(t)}return null}function wf(e){let t=Cf(e);t&&Zd(t)}function Tf(e){vf(e).dirty=!0,xf.add(e),wf(e),Xd()}function Ef(e){let t=e.parent;if(!t)return;let n=vf(t);e.prev?e.prev.next=e.next:n.first=e.next,e.next?e.next.prev=e.prev:n.last=e.prev,e.parent=null,e.prev=null,e.next=null,Tf(t)}function Df(e,t,n){Ef(t);let r=vf(e);t.parent=e,t.doomed=!1,t.prev=n?n.prev:r.last,t.next=n,t.prev?t.prev.next=t:r.first=t,t.next?t.next.prev=t:r.last=t,Tf(e)}function Of(e,t){if(!(!mf(t)||hf(e))){if(e instanceof te){if(!(t instanceof f))throw Error(`[konva-host] a Stage holds layers only, so ${t.getClassName()} cannot sit at a template root. Make k-layer the root`);return}if(t instanceof f)throw Error(`[konva-host] k-layer nests in nothing but a Stage`);if(mf(e)&&!(e instanceof u))throw Error(`[konva-host] ${e.getClassName()} is a shape and holds no children`)}}function kf(e,t,n){if(t===n)return;let r=n?_f(n):null;if(!hf(t)){Of(e,t),Df(e,_f(t),r);return}let i=[];for(let e=vf(t).first;e;e=e.next)i.push(e);for(let t of i)Of(e,t.node),Df(e,t,r)}function Af(e){xf.delete(e),Reflect.deleteProperty(e,nf),Reflect.deleteProperty(e,rf),e.destroy()}function jf(e,t){let n=t.getParent();n!==e&&(n&&xf.has(n)&&If(n),cf.attach+=1,e.add(t))}function Mf(e,t){if(e.length!==t.length)return!1;for(let n=0;n<t.length;n++)if(e[n]!==t[n])return!1;return!0}function Nf(e,t){t.forEach((t,n)=>{e.children[n]!==t&&(cf.setZIndex+=1,t.setZIndex(n))})}function Pf(e,t){let n=e.children;n.length=0;for(let e=0;e<t.length;e++){let r=t[e];n.push(r),r.index=e}}function Ff(e){if(cf.reconcile+=1,!(e instanceof u))return;let t=[];for(let n=vf(e).first;n;n=n.next)cf.scan+=1,mf(n.node)&&t.push(n.node);for(let n of t)jf(e,n);let n=new Set(t),r=e.children.filter(e=>!n.has(e));if(!(!r.length&&Mf(e.children,t))){cf.order+=1,e instanceof te?(r.forEach(e=>e.remove()),Nf(e,t)):(r.forEach(e=>{e.parent=null,e.index=0,e.remove()}),Pf(e,t));for(let e of r)cf.drop+=1,_f(e).doomed&&Af(e)}}function If(e){let t=vf(e);!t.dirty&&t.reconciledAt===Kd()||(t.dirty=!1,t.reconciledAt=Kd(),Ff(e))}Jd(()=>{for(let e of xf)If(e);xf.clear()});function Lf(e){let t=e,n=yf(t);for(;n;)t=n,n=yf(t);return Sf.get(t)??t}function Rf(e,t){if(!t)return;let n=Lf(e);if(mf(n)&&n.hasName(`minimap`))throw Error(`[konva-host] id "${t}" is not the minimap's to carry. Locate a minimap node by name plus a tableId attr`)}const zf=ou({createElement(e){let t=lf[e.toLowerCase()];if(!t)throw Error(`[konva-host] unknown konva tag <${e}>`);return t()},createText:e=>ff(`text`,e),createMarker:e=>ff(`marker`,e),createFragment(){let e=new d;return Reflect.set(e,of,!0),Reflect.set(e,`_validateAdd`,uf),e},createEventBus:()=>new EventTarget,insertBefore(e,t){let n=yf(t);n&&kf(n,e,t)},appendChild(e,t){kf(e,t,null)},prependChild(e,t){kf(e,t,vf(e).first?.node??null)},removeChild(e){let t=_f(e);Ef(t),mf(e)&&(t.doomed=!0,e.getParent()||Af(e))},parentOf:yf,nextSiblingOf:bf,setText(e,t){if(pf(e)!==`text`)throw Error(`[konva-host] a konva tree has no text node to write`);e.data=t},setAttribute(e,t,n,r){if(!mf(e))return;if(sf.has(t))throw Error(`[konva-host] "${t}" is not a konva attribute a template may write`);let i=r?n:String(n);t===`id`&&Rf(e,i),e.attrs[t]!==i&&(e.setAttrs({[t]:i}),wf(e))},removeAttribute(e,t){!mf(e)||e.attrs[t]===void 0||(e.setAttrs({[t]:void 0}),wf(e))},isHostNode:e=>mf(e)||pf(e)!==null,isMarker:e=>pf(e)===`marker`,isText:e=>pf(e)===`text`,isElement:e=>mf(e)&&!hf(e),isFragment:e=>hf(e),addEventListener(e,t,n,r){mf(e)?e.on(`${t}.rhtml`,n):e.addEventListener(t,n,r)},removeEventListener(e,t,n,r){mf(e)?e.off(`${t}.rhtml`,n):e.removeEventListener(t,n,r)},getRoot:Lf,createComponentContext(e,t){return{get host(){let n=Lf(e);return n instanceof te?n.container():t},get parentElement(){return null},dispatchEvent:e=>t.dispatchEvent(e)}},bridgeFragment(e,t){return Sf.set(e,t),()=>{Sf.delete(e)}}}),O=zf.html;function Bf(e,t){if(!(e instanceof te))throw Error(`[konva-host] a konva template renders into a Stage`);zf.render(e,t)}var Vf=(e,t)=>e*(1-t)/2;function Hf(e){return{originX:Ue(e.scrollLeft+Vf(e.width,e.zoomLevel),4),originY:Ue(e.scrollTop+Vf(e.height,e.zoomLevel),4)}}function k(e,t,n){return r=>{if(!n)return;let i=n[r];e(i)&&(t[r]=i)}}function Uf(e){return t=>b(t)&&e.includes(t)}function Wf(e){return t=>y(t)&&e.includes(t)}function Gf(e,t,n){return Reflect.get(e,t)??n}function Kf(){let e=Date.now();return{updateAt:e,createAt:e}}function qf(e,t){let n=k(y,e,t);n(`updateAt`),n(`createAt`)}var Jf=()=>({tableIds:[],relationshipIds:[],indexIds:[],memoIds:[]});function Yf(e){let t=Jf();if(!pe(e)||v(e))return t;let n=k(Array.isArray,t,e);return n(`tableIds`),n(`relationshipIds`),n(`indexIds`),n(`memoIds`),t}var Xf=()=>({id:``,name:``,tableId:``,indexColumnIds:[],seqIndexColumnIds:[],unique:!1,meta:Kf()});function Zf(e){let t={};if(!pe(e)||v(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=Xf(),r=k(b,e,n),i=k(ue,e,n),a=k(Array.isArray,e,n);r(`id`),r(`name`),r(`tableId`),i(`unique`),a(`indexColumnIds`),a(`seqIndexColumnIds`),qf(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var Qf={ASC:1,DESC:2},$f=Object.values(Qf),ep=()=>({id:``,indexId:``,columnId:``,orderType:Qf.ASC,meta:Kf()});function tp(e){let t={};if(!pe(e)||v(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=ep(),r=k(b,e,n);r(`id`),r(`indexId`),r(`columnId`),k(Wf($f),e,n)(`orderType`),qf(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var np=()=>({id:``,value:``,ui:{x:200,y:100,zIndex:2,width:116,height:100,color:``},meta:Kf()});function rp(e){let t={};if(!pe(e)||v(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=np(),r=k(b,e,n),i=k(y,e.ui,n.ui),a=k(b,e.ui,n.ui);r(`id`),r(`value`),a(`color`),i(`x`),i(`y`),i(`zIndex`),i(`width`),i(`height`),qf(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var ip={ZeroOne:2,ZeroN:4,OneOnly:8,OneN:16},ap=Object.values(ip),op={ring:1,dash:2},sp=Object.values(op),cp={left:1,right:2,top:4,bottom:8},lp=Object.values(cp),up=()=>({id:``,identification:!1,relationshipType:ip.ZeroN,startRelationshipType:op.dash,start:{tableId:``,columnIds:[],x:0,y:0,direction:cp.bottom},end:{tableId:``,columnIds:[],x:0,y:0,direction:cp.bottom},meta:Kf()});function dp(e){let t={};if(!pe(e)||v(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=up(),r=k(b,e,n),i=k(ue,e,n),a=k(y,e.start,n.start),o=k(b,e.start,n.start),s=k(y,e.end,n.end),c=k(b,e.end,n.end);r(`id`),i(`identification`),k(Wf(ap),e,n)(`relationshipType`),k(Wf(sp),e,n)(`startRelationshipType`),o(`tableId`),a(`x`),a(`y`),k(Wf(lp),e.start,n.start)(`direction`),k(Array.isArray,e.start,n.start)(`columnIds`),c(`tableId`),s(`x`),s(`y`),k(Wf(lp),e.end,n.end)(`direction`),k(Array.isArray,e.end,n.end)(`columnIds`),qf(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var fp={ERD:`ERD`,visualization:`@dineug/erd-editor/builtin-visualization`,schemaSQL:`@dineug/erd-editor/builtin-schema-sql`,generatorCode:`@dineug/erd-editor/builtin-generator-code`,settings:`settings`},pp=Object.values(fp),mp={tableComment:1,columnComment:2,columnDataType:4,columnDefault:8,columnAutoIncrement:16,columnPrimaryKey:32,columnUnique:64,columnNotNull:128,relationship:256},hp={columnName:1,columnDataType:2,columnNotNull:4,columnUnique:8,columnAutoIncrement:16,columnDefault:32,columnComment:64},gp=Object.values(hp),_p={MariaDB:1,MSSQL:2,MySQL:4,Oracle:8,PostgreSQL:16,SQLite:32,Databricks:64,Snowflake:128},vp=Object.values(_p),yp={GraphQL:1,csharp:2,Java:4,Kotlin:8,TypeScript:16,JPA:32,Scala:64,Go:128,SQLAlchemy:256,TypeORM:512,Sequelize:1024,Drizzle:2048,DBML:4096,AML:8192},bp=Object.values(yp),xp={none:1,camelCase:2,pascalCase:4,snakeCase:8},Sp=Object.values(xp),Cp={none:1,doubleQuote:2,singleQuote:4,backtick:8},wp=Object.values(Cp),Tp={scroll:1,zoomLevel:2},Ep=.1,Dp=1.5,Op=2e3,kp=2e4,Ap=mp.tableComment|mp.columnComment|mp.columnDataType|mp.columnDefault|mp.columnPrimaryKey|mp.columnNotNull|mp.relationship,jp=()=>({width:2e3,height:2e3,scrollTop:0,scrollLeft:0,originX:0,originY:0,zoomLevel:1,show:Ap,database:_p.MySQL,databaseName:``,canvasType:fp.ERD,language:yp.GraphQL,tableNameCase:xp.pascalCase,columnNameCase:xp.camelCase,bracketType:Cp.none,relationshipDataTypeSync:!0,relationshipOptimization:!1,columnOrder:[hp.columnName,hp.columnDataType,hp.columnNotNull,hp.columnUnique,hp.columnAutoIncrement,hp.columnDefault,hp.columnComment],maxWidthComment:-1,ignoreSaveSettings:0}),Mp=e=>ae(e,Op,kp),Np=e=>ae(e,Ep,Dp),Pp=e=>ae(e,60,200);function Fp(e){let t=jp();if(!pe(e)||v(e))return t;let n=k(y,t,e),r=k(b,t,e),i=k(ue,t,e);if(y(e.width)&&(t.width=Mp(e.width)),y(e.height)&&(t.height=Mp(e.height)),y(e.zoomLevel)&&(t.zoomLevel=Np(e.zoomLevel)),y(e.maxWidthComment)&&e.maxWidthComment!==-1&&(t.maxWidthComment=Pp(e.maxWidthComment)),n(`scrollTop`),n(`scrollLeft`),n(`show`),n(`ignoreSaveSettings`),r(`databaseName`),r(`canvasType`),i(`relationshipDataTypeSync`),i(`relationshipOptimization`),k(Wf(vp),t,e)(`database`),k(Wf(bp),t,e)(`language`),k(Wf(Sp),t,e)(`tableNameCase`),k(Wf(Sp),t,e)(`columnNameCase`),k(Wf(wp),t,e)(`bracketType`),Array.isArray(e.columnOrder)&&gp.length===e.columnOrder.length&&se(gp,e.columnOrder).length===0&&(t.columnOrder=e.columnOrder),y(e.originX)&&y(e.originY))t.originX=e.originX,t.originY=e.originY;else{let{originX:e,originY:n}=Hf(t);t.originX=e,t.originY=n}return t}var Ip=()=>({id:``,name:``,comment:``,columnIds:[],seqColumnIds:[],ui:{x:200,y:100,zIndex:2,widthName:60,widthComment:60,color:``},meta:Kf()});function Lp(e){let t={};if(!pe(e)||v(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=Ip(),r=k(b,e,n),i=k(Array.isArray,e,n),a=k(y,e.ui,n.ui),o=k(b,e.ui,n.ui);r(`id`),r(`name`),r(`comment`),i(`columnIds`),i(`seqColumnIds`),o(`color`),a(`x`),a(`y`),a(`zIndex`),a(`widthName`),a(`widthComment`),qf(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var Rp=()=>({id:``,tableId:``,name:``,comment:``,dataType:``,default:``,options:0,ui:{keys:0,widthName:60,widthComment:60,widthDataType:60,widthDefault:60},meta:Kf()});function zp(e){let t={};if(!pe(e)||v(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=Rp(),r=k(b,e,n),i=k(y,e,n),a=k(y,e.ui,n.ui);r(`id`),r(`tableId`),r(`name`),r(`comment`),r(`dataType`),r(`default`),i(`options`),a(`keys`),a(`widthName`),a(`widthComment`),a(`widthDataType`),a(`widthDefault`),qf(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}function Bp(e){let t=e;return{$schema:`https://raw.githubusercontent.com/dineug/erd-editor/main/json-schema/schema.json`,version:`3.0.0`,settings:Fp(t.settings),doc:Yf(t.doc),collections:{tableEntities:Lp(t.collections?.tableEntities),tableColumnEntities:zp(t.collections?.tableColumnEntities),relationshipEntities:dp(t.collections?.relationshipEntities),indexEntities:Zf(t.collections?.indexEntities),indexColumnEntities:tp(t.collections?.indexColumnEntities),memoEntities:rp(t.collections?.memoEntities)}}}var A={CanvasType:fp,CanvasTypeList:pp,Show:mp,ColumnType:hp,ColumnTypeList:gp,Database:_p,DatabaseList:vp,Language:yp,LanguageList:bp,NameCase:xp,NameCaseList:Sp,BracketType:Cp,BracketTypeList:wp,RelationshipType:ip,RelationshipTypeList:ap,StartRelationshipType:op,StartRelationshipTypeList:sp,Direction:cp,DirectionList:lp,ColumnOption:{autoIncrement:1,primaryKey:2,unique:4,notNull:8},ColumnUIKey:{primaryKey:1,foreignKey:2},OrderType:Qf,OrderTypeList:$f,SaveSettingType:Tp,CANVAS_SIZE_MAX:kp,CANVAS_SIZE_MIN:Op,CANVAS_ZOOM_MAX:Dp,CANVAS_ZOOM_MIN:Ep};function Vp(e){return[e,-1,-1,{}]}function Hp(e,t,n){return e[t]||(e[t]=Vp(n),e[t])}function Up(e,t,n,r,i){let a=Hp(e,n,r),o=a[1],s=a[2];o<t&&(a[1]=t),s<t&&i()}function Wp(e,t,n,r,i){let a=Hp(e,n,r),o=a[2],s=a[1];o<t&&(a[2]=t),s<=t&&i()}function Gp(e,t,n,r,i,a){let o=Hp(e,n,r);(o[3][i]??-1)<=t&&(o[3][i]=t,a())}function Kp(e){"@babel/helpers - typeof";return Kp=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Kp(e)}function qp(e,t){if(Kp(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(Kp(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Jp(e){var t=qp(e,`string`);return Kp(t)==`symbol`?t:t+``}function Yp(e,t,n){return(t=Jp(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Xp=class{constructor(e){Yp(this,`collections`,void 0),this.collections=e}collection(e){return new Zp(this.collections[e],e)}},Zp=class{constructor(e,t){Yp(this,`collection`,void 0),Yp(this,`collectionKey`,void 0),this.collection=e,this.collectionKey=t}selectById(e){return this.collection[e]}selectByIds(e){return e.length,e.map(e=>this.selectById(e)).filter(Boolean)}selectEntities(){return this.collection}selectAll(){return Object.values(this.collection)}setOne(e){return this.collection[e.id]=e,this}setMany(e){return e.forEach(e=>this.setOne(e)),this}setAll(e){return this.removeAll(),this.setMany(e),this}addOne(e){return this.selectById(e.id)||this.setOne(e),this}addMany(e){return e.forEach(e=>this.addOne(e)),this}removeOne(e){return this.selectById(e)&&Reflect.deleteProperty(this.collection,e),this}removeMany(e){return e.forEach(e=>this.removeOne(e)),this}removeAll(){return this.collection={},this}updateOne(e,t){let n=this.selectById(e);return n&&(t(n),n.meta.updateAt=Date.now()),this}updateMany(e,t){return e.forEach(e=>this.updateOne(e,t)),this}getOrCreate(e,t){let n=this.selectById(e);if(n)return n;let r=t(e);return this.setOne(r),this.selectById(e)}addOperator(e,t,n,r){return Up(e,t,n,this.collectionKey,r),this}removeOperator(e,t,n,r){return Wp(e,t,n,this.collectionKey,r),this}replaceOperator(e,t,n,r,i){return Gp(e,t,n,this.collectionKey,r,i),this}},j=e=>new Xp(e),Qp=Object.values({columnUnique:`columnUnique`,columnAutoIncrement:`columnAutoIncrement`,columnName:`columnName`,columnDataType:`columnDataType`,columnNotNull:`columnNotNull`,columnDefault:`columnDefault`,columnComment:`columnComment`}),$p=Object.values({ERD:`ERD`,"@vuerd/builtin-sql-ddl":`@vuerd/builtin-sql-ddl`,"@vuerd/builtin-grid":`@vuerd/builtin-grid`,"@vuerd/builtin-generator-code":`@vuerd/builtin-generator-code`,"@vuerd/builtin-visualization":`@vuerd/builtin-visualization`}),em=Object.values({MariaDB:`MariaDB`,MSSQL:`MSSQL`,MySQL:`MySQL`,Oracle:`Oracle`,PostgreSQL:`PostgreSQL`,SQLite:`SQLite`}),tm=Object.values({GraphQL:`GraphQL`,"C#":`C#`,Java:`Java`,Kotlin:`Kotlin`,TypeScript:`TypeScript`,JPA:`JPA`,Scala:`Scala`}),nm=Object.values({none:`none`,camelCase:`camelCase`,pascalCase:`pascalCase`,snakeCase:`snakeCase`}),rm=Object.values({AtomOneDark:`AtomOneDark`,AtomOneLight:`AtomOneLight`,MonokaiSublime:`MonokaiSublime`,GithubGist:`GithubGist`,VS2015:`VS2015`}),im=Object.values({none:`none`,doubleQuote:`doubleQuote`,singleQuote:`singleQuote`,backtick:`backtick`}),am=.1,om=2e3,sm=2e4,cm=()=>({version:`2.2.11`,width:2e3,height:2e3,scrollTop:0,scrollLeft:0,zoomLevel:1,show:{tableComment:!0,columnComment:!0,columnDataType:!0,columnDefault:!0,columnAutoIncrement:!1,columnPrimaryKey:!0,columnUnique:!1,columnNotNull:!0,relationship:!0},database:`MySQL`,databaseName:``,canvasType:`ERD`,language:`GraphQL`,tableCase:`pascalCase`,columnCase:`camelCase`,highlightTheme:`VS2015`,bracketType:`none`,setting:{relationshipDataTypeSync:!0,relationshipOptimization:!1,columnOrder:[`columnName`,`columnDataType`,`columnNotNull`,`columnUnique`,`columnAutoIncrement`,`columnDefault`,`columnComment`]},pluginSerializationMap:{}}),lm=e=>ae(e,om,sm),um=e=>ae(e,am,1);function dm(e){let t=cm();if(v(e))return t;let n=k(y,t,e),r=k(b,t,e),i=k(ue,t.show,e.show),a=k(ue,t.setting,e.setting);if(y(e.width)&&(t.width=lm(e.width)),y(e.height)&&(t.height=lm(e.height)),y(e.zoomLevel)&&(t.zoomLevel=um(e.zoomLevel)),r(`version`),r(`databaseName`),n(`scrollTop`),n(`scrollLeft`),k(Uf(em),t,e)(`database`),k(Uf($p),t,e)(`canvasType`),k(Uf(tm),t,e)(`language`),k(Uf(nm),t,e)(`tableCase`),k(Uf(nm),t,e)(`columnCase`),k(Uf(rm),t,e)(`highlightTheme`),k(Uf(im),t,e)(`bracketType`),i(`tableComment`),i(`columnComment`),i(`columnDataType`),i(`columnDefault`),i(`columnAutoIncrement`),i(`columnPrimaryKey`),i(`columnUnique`),i(`columnNotNull`),i(`relationship`),a(`relationshipDataTypeSync`),a(`relationshipOptimization`),e.setting?.columnOrder&&Qp.length===e.setting.columnOrder.length&&se(Qp,e.setting.columnOrder).length===0&&(t.setting.columnOrder=e.setting.columnOrder),pe(e.pluginSerializationMap)){let n=e.pluginSerializationMap;for(let e of Object.keys(n)){let r=n[e];b(r)&&(t.pluginSerializationMap[e]=r)}}return t}var fm=()=>({memos:[]}),pm=()=>({id:``,value:``,ui:{active:!1,left:200,top:200,zIndex:2,width:127,height:127}});function mm(e){let t=fm();if(v(e)||!Array.isArray(e.memos))return t;for(let n of e.memos){let e=pm(),r=k(b,e,n),i=k(y,e.ui,n.ui),a=k(ue,e.ui,n.ui),o=k(b,e.ui,n.ui);r(`id`),r(`value`),a(`active`),o(`color`),i(`left`),i(`top`),i(`zIndex`),i(`width`),i(`height`),t.memos.push(e)}return t}var hm=[`ZeroOneN`,`One`,`N`],gm={ZeroOneN:`ZeroN`,One:`OneOnly`,N:`OneN`},_m=e=>hm.includes(e)?gm[e]:e,vm=Object.values({ZeroOneN:`ZeroOneN`,ZeroOne:`ZeroOne`,ZeroN:`ZeroN`,OneOnly:`OneOnly`,OneN:`OneN`,One:`One`,N:`N`}),ym=Object.values({Ring:`Ring`,Dash:`Dash`}),bm=Object.values({left:`left`,right:`right`,top:`top`,bottom:`bottom`}),xm=()=>({relationships:[]}),Sm=()=>({id:``,identification:!1,relationshipType:`ZeroN`,startRelationshipType:`Dash`,start:{tableId:``,columnIds:[],x:0,y:0,direction:`bottom`},end:{tableId:``,columnIds:[],x:0,y:0,direction:`bottom`},constraintName:``,visible:!0});function Cm(e){let t=xm();if(v(e)||!Array.isArray(e.relationships))return t;for(let n of e.relationships){let e=Sm(),r=k(b,e,n),i=k(ue,e,n),a=k(y,e.start,n.start),o=k(b,e.start,n.start),s=k(y,e.end,n.end),c=k(b,e.end,n.end);r(`id`),r(`constraintName`),i(`identification`),i(`visible`),k(Uf(vm),e,n)(`relationshipType`),e.relationshipType=_m(e.relationshipType),k(Uf(ym),e,n)(`startRelationshipType`),o(`tableId`),a(`x`),a(`y`),k(Uf(bm),e.start,n.start)(`direction`),Array.isArray(n.start?.columnIds)&&(e.start.columnIds=n.start?.columnIds.filter(b)),c(`tableId`),s(`x`),s(`y`),k(Uf(bm),e.end,n.end)(`direction`),Array.isArray(n.end?.columnIds)&&(e.end.columnIds=n.end?.columnIds.filter(b)),t.relationships.push(e)}return t}var wm={ASC:`ASC`,DESC:`DESC`},Tm=Object.values(wm),Em=()=>({tables:[],indexes:[]}),Dm=()=>({id:``,name:``,comment:``,columns:[],ui:{active:!1,left:200,top:100,zIndex:2,widthName:60,widthComment:60},visible:!0}),Om=()=>({id:``,name:``,comment:``,dataType:``,default:``,option:{autoIncrement:!1,primaryKey:!1,unique:!1,notNull:!1},ui:{active:!1,pk:!1,fk:!1,pfk:!1,widthName:60,widthComment:60,widthDataType:60,widthDefault:60}}),km=()=>({id:``,name:``,tableId:``,columns:[],unique:!1}),Am=()=>({id:``,orderType:wm.ASC});function jm(e){let t=Em();if(v(e))return t;if(Array.isArray(e.tables))for(let n of e.tables){let e=Dm(),r=k(b,e,n),i=k(ue,e,n),a=k(y,e.ui,n.ui),o=k(ue,e.ui,n.ui),s=k(b,e.ui,n.ui);if(r(`id`),r(`name`),r(`comment`),i(`visible`),o(`active`),s(`color`),a(`left`),a(`top`),a(`zIndex`),a(`widthName`),a(`widthComment`),Array.isArray(n.columns))for(let t of n.columns){let n=Om(),r=k(b,n,t),i=k(y,n.ui,t.ui),a=k(ue,n.ui,t.ui),o=k(ue,n.option,t.option);r(`id`),r(`name`),r(`comment`),r(`dataType`),r(`default`),o(`autoIncrement`),o(`primaryKey`),o(`unique`),o(`notNull`),a(`active`),a(`pk`),a(`fk`),a(`pfk`),i(`widthName`),i(`widthComment`),i(`widthDataType`),i(`widthDefault`),e.columns.push(n)}t.tables.push(e)}if(Array.isArray(e.indexes))for(let n of e.indexes){let e=km(),r=k(b,e,n),i=k(ue,e,n);if(r(`id`),r(`name`),r(`tableId`),i(`unique`),Array.isArray(n.columns))for(let t of n.columns){let n=Am();k(b,n,t)(`id`),k(Uf(Tm),n,t)(`orderType`),e.columns.push(n)}t.indexes.push(e)}return t}function Mm(e){let t=e;return{canvas:dm(t.canvas),table:jm(t.table),relationship:Cm(t.relationship),memo:mm(t.memo)}}function Nm(e){let t=Bp({});return Pm(t.settings,e.canvas),Fm(t,e.table),Im(t,e.memo),Lm(t,e.relationship),t}function Pm(e,t){e.width=t.width,e.height=t.height,e.scrollTop=t.scrollTop,e.scrollLeft=t.scrollLeft,e.zoomLevel=t.zoomLevel;let{originX:n,originY:r}=Hf(e);e.originX=n,e.originY=r,e.databaseName=t.databaseName,e.canvasType=A.CanvasType.ERD,e.show=Object.keys(t.show).reduce((e,n)=>Gf(t.show,n,!1)?e|Gf(A.Show,n,0):e,0),e.database=Reflect.get(A.Database,t.database)??A.Database.MySQL,e.language=t.language===`C#`?A.Language.csharp:Gf(A.Language,t.language,A.Language.GraphQL),e.tableNameCase=Gf(A.NameCase,t.tableCase,A.NameCase.pascalCase),e.columnNameCase=Gf(A.NameCase,t.columnCase,A.NameCase.camelCase),e.bracketType=Gf(A.BracketType,t.bracketType,A.BracketType.none),e.relationshipDataTypeSync=t.setting.relationshipDataTypeSync,e.relationshipOptimization=t.setting.relationshipOptimization;let i=t.setting.columnOrder.map(e=>A.ColumnType[e]);se(A.ColumnTypeList,i).length===0&&(e.columnOrder=i)}function Fm(e,t){let n=t.tables.filter(({id:e})=>!!e),r=t.indexes.filter(({id:e})=>!!e);e.doc.tableIds=n.map(({id:e})=>e),e.doc.indexIds=r.map(({id:e})=>e);for(let t of n){let n=Ip();n.id=t.id,n.name=t.name,n.comment=t.comment,n.columnIds=t.columns.map(({id:e})=>e),n.seqColumnIds=[...n.columnIds],n.ui.y=t.ui.top,n.ui.x=t.ui.left,n.ui.zIndex=t.ui.zIndex,n.ui.widthName=t.ui.widthName,n.ui.widthComment=t.ui.widthComment,n.ui.color=t.ui.color??``;for(let n of t.columns){let r=Rp();r.id=n.id,r.tableId=t.id,r.name=n.name,r.comment=n.comment,r.dataType=n.dataType,r.default=n.default,r.options=Object.keys(n.option).reduce((e,t)=>Gf(n.option,t,!1)?e|Gf(A.ColumnOption,t,0):e,0),r.ui.widthName=n.ui.widthName,r.ui.widthComment=n.ui.widthComment,r.ui.widthDataType=n.ui.widthDataType,r.ui.widthDefault=n.ui.widthDefault,n.ui.pfk?r.ui.keys=A.ColumnUIKey.primaryKey|A.ColumnUIKey.foreignKey:n.ui.pk?r.ui.keys=A.ColumnUIKey.primaryKey:n.ui.fk&&(r.ui.keys=A.ColumnUIKey.foreignKey),e.collections.tableColumnEntities[r.id]=r}e.collections.tableEntities[n.id]=n}for(let t of r){let n=Xf();n.id=t.id,n.name=t.name,n.tableId=t.tableId,n.unique=t.unique;for(let r of t.columns){let i=x(),a=ep();n.indexColumnIds.push(i),n.seqIndexColumnIds.push(i),a.id=i,a.indexId=t.id,a.columnId=r.id,a.orderType=Gf(A.OrderType,r.orderType,A.OrderType.ASC),e.collections.indexColumnEntities[a.id]=a}e.collections.indexEntities[n.id]=n}}function Im(e,t){let n=t.memos.filter(({id:e})=>!!e);e.doc.memoIds=n.map(({id:e})=>e);for(let t of n){let n=np();n.id=t.id,n.value=t.value,n.ui.y=t.ui.top,n.ui.x=t.ui.left,n.ui.width=t.ui.width,n.ui.height=t.ui.height,n.ui.zIndex=t.ui.zIndex,n.ui.color=t.ui.color??``,e.collections.memoEntities[n.id]=n}}function Lm(e,t){let n=t.relationships.filter(({id:e})=>!!e);e.doc.relationshipIds=n.map(({id:e})=>e);for(let t of n){let n=up();n.id=t.id,n.identification=t.identification,n.relationshipType=Gf(A.RelationshipType,t.relationshipType,A.RelationshipType.ZeroN),n.startRelationshipType=Gf(A.StartRelationshipType,t.startRelationshipType===`Ring`?`ring`:`dash`,A.StartRelationshipType.dash),n.start.tableId=t.start.tableId,n.start.columnIds=t.start.columnIds,n.start.x=t.start.x,n.start.y=t.start.y,n.start.direction=Gf(A.Direction,t.start.direction,A.Direction.bottom),n.end.tableId=t.end.tableId,n.end.columnIds=t.end.columnIds,n.end.x=t.end.x,n.end.y=t.end.y,n.end.direction=Gf(A.Direction,t.end.direction,A.Direction.bottom),e.collections.relationshipEntities[n.id]=n}}function Rm(e,t){return(e&t)===t}function zm(e){let t=JSON.parse(e);return Reflect.get(t,`version`)===`3.0.0`?Bp(t):Nm(Mm(t))}function Bm(e){let t=ve(e,[`$schema`,`version`,`settings`,`doc`,`collections`]),n={...t.settings};return t.settings=n,Rm(n.ignoreSaveSettings,A.SaveSettingType.scroll)&&(n.originX=0,n.originY=0),Rm(n.ignoreSaveSettings,A.SaveSettingType.zoomLevel)&&(n.zoomLevel=1),JSON.stringify(t,null,2)}const M={changeHasHistory:`editor.changeHasHistory`,selectAll:`editor.selectAll`,unselectAll:`editor.unselectAll`,select:`editor.select`,changeViewport:`editor.changeViewport`,clear:`editor.clear`,loadJson:`editor.loadJson`,initialClear:`editor.initialClear`,initialLoadJson:`editor.initialLoadJson`,focusTable:`editor.focusTable`,focusColumn:`editor.focusColumn`,focusTableEnd:`editor.focusTableEnd`,focusMoveTable:`editor.focusMoveTable`,editTable:`editor.editTable`,editTableEnd:`editor.editTableEnd`,editMemo:`editor.editMemo`,editMemoEnd:`editor.editMemoEnd`,scrollMemo:`editor.scrollMemo`,selectAllColumn:`editor.selectAllColumn`,drawStartRelationship:`editor.drawStartRelationship`,drawStartAddRelationship:`editor.drawStartAddRelationship`,drawEndRelationship:`editor.drawEndRelationship`,drawRelationship:`editor.drawRelationship`,hoverColumnMap:`editor.hoverColumnMap`,hoverRelationshipMap:`editor.hoverRelationshipMap`,changeOpenMap:`editor.changeOpenMap`,changeHandTool:`editor.changeHandTool`,changeZenMode:`editor.changeZenMode`,dragstartColumn:`editor.dragstartColumn`,dragendColumn:`editor.dragendColumn`,sharedMouseTracker:`editor.sharedMouseTracker`,sharedFocusTracker:`editor.sharedFocusTracker`,sharedSelectionTracker:`editor.sharedSelectionTracker`,sharedDragSelectTracker:`editor.sharedDragSelectTracker`,dragSelectRect:`editor.dragSelectRect`,validationIds:`editor.validationIds`,getLWW:`editor.getLWW`,mergeLWW:`editor.mergeLWW`},Vm=A.CanvasType,Hm=A.CanvasTypeList,N=A.Show,P=A.ColumnType,Um=A.ColumnTypeList,F=A.Database,Wm=A.DatabaseList;A.Language;const Gm=A.LanguageList;A.NameCase;const Km=A.NameCaseList,qm=A.BracketType,Jm=A.BracketTypeList,Ym=A.RelationshipType;A.RelationshipTypeList;const Xm=A.StartRelationshipType;A.StartRelationshipTypeList;const I=A.Direction;A.DirectionList;const L=A.ColumnOption,R=A.ColumnUIKey,Zm=A.OrderType;A.OrderTypeList,A.SaveSettingType;const Qm=A.CANVAS_SIZE_MAX,$m=A.CANVAS_SIZE_MIN,eh=A.CANVAS_ZOOM_MAX,th=A.CANVAS_ZOOM_MIN;qm.none,qm.backtick,qm.doubleQuote,qm.singleQuote,P.columnName,P.columnDataType,P.columnDefault,P.columnComment,P.columnAutoIncrement,P.columnUnique,P.columnNotNull;const nh={shared:1,changeOnly:2,following:4};function rh(e,t){return{...oe(t),tags:y(t.tags)&&Number.isInteger(t.tags)?t.tags|e:e}}function ih(e,t){return t.map(t=>rh(e,t))}(e=>(...t)=>function*(n,r){yield ih(e,Ou(n,r,t))})(nh.changeOnly);const ah=1200;function oh(e){return 9+e.ui.width+8+1}function sh(e){return 25+e.ui.height+8+1}function z(e,t){return(e&t)===t}const ch={Databricks:`Databricks`,MariaDB:`MariaDB`,MSSQL:`MSSQL`,MySQL:`MySQL`,Oracle:`Oracle`,PostgreSQL:`PostgreSQL`,Snowflake:`Snowflake`,SQLite:`SQLite`},lh=Object.values(ch);ch.Databricks,F.Databricks,ch.MariaDB,F.MariaDB,ch.MSSQL,F.MSSQL,ch.MySQL,F.MySQL,ch.Oracle,F.Oracle,ch.PostgreSQL,F.PostgreSQL,ch.Snowflake,F.Snowflake,ch.SQLite,F.SQLite;function B(e){let t=new Set(e);return e=>t.has(e)}const uh=/[^0-9]/g,dh=e=>e.replace(uh,``),fh=e=>ae(e,$m,Qm),ph=e=>ae(e,th,eh),mh=e=>ae(e,60,200);function hh(e){let t=b(e)?Number(dh(e)):e;return fh(t)}function gh(e){return Ue(ph(e),2)}const _h=B(Wm),vh=B(Km),yh=B(Jm),bh=B(Gm),xh=B(Um);B(lh);const Sh=B(Hm);function V(e){return Math.max(e,60)}function Ch(e){return b(e)?e.trim():``}function wh(e){return e<=.7}let Th=0;function Eh(){return Th}function Dh(){Th++}function Oh(e,{settings:{show:t,maxWidthComment:n},collections:r}){let i=e.ui.widthName+8;if(z(t,N.tableComment)){let t=n===-1?e.ui.widthComment:n<e.ui.widthComment?n:e.ui.widthComment;i+=t+8}let a=Ah(t);i<a&&(i=a);let o=jh(j(r).collection(`tableColumnEntities`).selectByIds(e.columnIds),t,n);return i<o.width&&(i=o.width),{...o,width:9+i+8+1}}const kh=[{key:N.columnComment,width:60},{key:N.columnDataType,width:60},{key:N.columnDefault,width:60},{key:N.columnNotNull,width:35},{key:N.columnAutoIncrement,width:15},{key:N.columnUnique,width:22}];function Ah(e){return kh.reduce((t,{key:n,width:r})=>z(e,n)?t+r+8:t,100)}function jh(e,t,n){let r={width:0,name:0,comment:0,dataType:0,default:0,notNull:0,autoIncrement:0,unique:0};for(let i of e)r.name<i.ui.widthName&&(r.name=i.ui.widthName),z(t,N.columnComment)&&r.comment<i.ui.widthComment&&(r.comment=n===-1?i.ui.widthComment:n<i.ui.widthComment?n:i.ui.widthComment),z(t,N.columnDataType)&&r.dataType<i.ui.widthDataType&&(r.dataType=i.ui.widthDataType),z(t,N.columnDefault)&&r.default<i.ui.widthDefault&&(r.default=i.ui.widthDefault);return z(t,N.columnNotNull)&&(r.notNull=35),z(t,N.columnAutoIncrement)&&(r.autoIncrement=15),z(t,N.columnUnique)&&(r.unique=22),r.width=Object.entries(r).reduce((e,[t,n])=>t===`width`||n===0?e:e+n+8,32),r}function Mh(e){return 47+e.columnIds.length*24+8+1}function Nh({doc:{tableIds:e},collections:t},{toWidth:n}){Dh();let r=j(t).collection(`tableEntities`).selectByIds(e),i=j(t).collection(`tableColumnEntities`);for(let e of r){e.ui.widthName=V(n(e.name)),e.ui.widthComment=V(n(e.comment));let t=i.selectByIds(e.columnIds);for(let e of t)e.ui.widthName=V(n(e.name)),e.ui.widthDataType=V(n(e.dataType)),e.ui.widthDefault=V(n(e.default)),e.ui.widthComment=V(n(e.comment))}}const Ph=new WeakMap;function Fh(e,t){let{settings:n}=e,r=`${Eh()}|${n.show}|${n.maxWidthComment}|${t.ui.widthName}|${t.ui.widthComment}|${t.columnIds.length}`,i=Ph.get(t);if(i?.key===r)return i;let a={key:r,width:Oh(t,e).width,height:Mh(t)};return Ph.set(t,a),a}function Ih(e,t){let{width:n,height:r}=Fh(e,t),{x:i,y:a}=t.ui;return{width:n,height:r,top:{x:i+n/2,y:a},bottom:{x:i+n/2,y:a+r},left:{x:i,y:a+r/2},right:{x:i+n,y:a+r/2},lt:{x:i,y:a},rt:{x:i+n,y:a},lb:{x:i,y:a+r},rb:{x:i+n,y:a+r}}}function Lh(e,t){return Math.sqrt((e.x-t.x)**2+(e.y-t.y)**2)}function Rh(e,t){let{width:n,height:r}=Ih(e,t),{x:i,y:a}=t.ui;return{x:i,y:a,width:n,height:r}}function zh(e,t){return Oh(t,e)}function Bh(e,t,n){let{x:r,y:i,width:a}=Rh(e,t);return{x:r+9,y:i+9+38+n*24,width:a-18,height:24}}function Vh(e){let{x:t,y:n}=e.ui;return{x:t,y:n,width:oh(e),height:sh(e)}}function Hh(e,t){let n=Math.min(e.x,t.x),r=Math.min(e.y,t.y);return{x:n,y:r,width:Math.max(e.x+e.width,t.x+t.width)-n,height:Math.max(e.y+e.height,t.y+t.height)-r}}function Uh(e){return Gh(e,[])}function Wh(e,t=[]){let{doc:n,collections:r}=e,i=new Map(t.map(e=>[e.id,e])),a=j(r).collection(`tableEntities`).selectByIds(n.tableIds),o=j(r).collection(`memoEntities`).selectByIds(n.memoIds);return[...a.map(t=>{let n=i.get(t.id);return n?Rh(e,{...t,ui:{...t.ui,x:n.x,y:n.y}}):Rh(e,t)}),...o.map(Vh)]}function Gh(e,t){let n=Wh(e,t);return n.length?n.reduce(Hh):null}const Kh=wa({frozen:{}}),qh=e=>e.editor.id,Jh=e=>Kh.frozen[qh(e)]??null;function Yh(e){let{originX:t,originY:n}=e.settings;Kh.frozen[qh(e)]={content:Uh(e),origin:{x:t,y:n}}}function Xh(e){Reflect.deleteProperty(Kh.frozen,qh(e))}function Zh(e){let t=Jh(e);return t?t.content:Uh(e)}const H={changeDatabaseName:`settings.changeDatabaseName`,changeZoomLevel:`settings.changeZoomLevel`,streamZoomLevel:`settings.streamZoomLevel`,scrollTo:`settings.scrollTo`,streamScrollTo:`settings.streamScrollTo`,changeShow:`settings.changeShow`,changeDatabase:`settings.changeDatabase`,changeCanvasType:`settings.changeCanvasType`,changeLanguage:`settings.changeLanguage`,changeTableNameCase:`settings.changeTableNameCase`,changeColumnNameCase:`settings.changeColumnNameCase`,changeBracketType:`settings.changeBracketType`,changeRelationshipDataTypeSync:`settings.changeRelationshipDataTypeSync`,changeRelationshipOptimization:`settings.changeRelationshipOptimization`,changeColumnOrder:`settings.changeColumnOrder`,changeMaxWidthComment:`settings.changeMaxWidthComment`,changeIgnoreSaveSettings:`settings.changeIgnoreSaveSettings`},Qh=e=>e+0;function $h(e,t,n,r){let i=-t*r,a=n-e*r;return{min:Qh(Math.min(i,a)),max:Qh(Math.max(i,a))}}function eg(e,t,n,r,i){let{min:a,max:o}=$h(t,n,r,i);if(a<e&&e<o)return e;let s=Math.min(r,(n-t)*i);return Qh(Math.min(Math.max(e,a+s),o-s))}const tg=D(H.changeDatabaseName),ng=({settings:e,lww:t},{payload:{value:n},version:r},{clock:i})=>{Gp(t,r??i.getVersion(),`settings.databaseName`,`settings`,`databaseName`,()=>{e.databaseName=n})},rg=D(H.changeZoomLevel),ig=({settings:e},{payload:{value:t},tags:n})=>{!v(n)&&z(n,nh.following)||(e.zoomLevel=gh(t))},ag=D(H.streamZoomLevel),og=({settings:e},{payload:{value:t},tags:n})=>{!v(n)&&z(n,nh.following)||(e.zoomLevel=gh(e.zoomLevel+t))},sg=({width:e,height:t})=>e>0&&t>0;function cg(e){let{settings:{originX:t,originY:n,zoomLevel:r},editor:{viewport:i}}=e,a=Zh(e);return!a||!sg(i)?{x:t,y:n}:{x:eg(t,a.x,a.x+a.width,i.width,r),y:eg(n,a.y,a.y+a.height,i.height,r)}}const lg=D(H.scrollTo),ug=({settings:e},{payload:{originX:t,originY:n},tags:r})=>{!v(r)&&z(r,nh.following)||(e.originX=Ue(t,4),e.originY=Ue(n,4))},dg=D(H.streamScrollTo),fg=({settings:e},{payload:{movementX:t,movementY:n},tags:r})=>{!v(r)&&z(r,nh.following)||(e.originX=Ue(e.originX+t,4),e.originY=Ue(e.originY+n,4))},pg=D(H.changeShow),mg=({settings:e},{payload:{show:t,value:n}})=>{e.show=n?e.show|t:e.show&~t},hg=D(H.changeDatabase),gg=({settings:e},{payload:{value:t}})=>{_h(t)&&(e.database=t)},_g=D(H.changeCanvasType),vg=({settings:e},{payload:{value:t},tags:n})=>{!v(n)&&z(n,nh.following)||(e.canvasType=t)},yg=D(H.changeLanguage),bg=({settings:e},{payload:{value:t}})=>{bh(t)&&(e.language=t)},xg=D(H.changeTableNameCase),Sg=({settings:e},{payload:{value:t}})=>{vh(t)&&(e.tableNameCase=t)},Cg=D(H.changeColumnNameCase),wg=({settings:e},{payload:{value:t}})=>{vh(t)&&(e.columnNameCase=t)},Tg=D(H.changeBracketType),Eg=({settings:e},{payload:{value:t}})=>{yh(t)&&(e.bracketType=t)},Dg=D(H.changeRelationshipDataTypeSync),Og=({settings:e},{payload:{value:t}})=>{e.relationshipDataTypeSync=t},kg=D(H.changeRelationshipOptimization),Ag=({settings:e},{payload:{value:t}})=>{e.relationshipOptimization=t},jg=D(H.changeColumnOrder),Mg=({settings:e},{payload:{value:t,target:n}})=>{if(t===n||!xh(t)||!xh(n))return;let r=e.columnOrder.indexOf(t),i=e.columnOrder.indexOf(n);r!==-1&&i!==-1&&(e.columnOrder.splice(r,1),e.columnOrder.splice(i,0,t))},Ng=D(H.changeMaxWidthComment),Pg=({settings:e},{payload:{value:t}})=>{e.maxWidthComment=t===-1?t:mh(t)},Fg=D(H.changeIgnoreSaveSettings),Ig=({settings:e},{payload:{saveSettingType:t,value:n}})=>{e.ignoreSaveSettings=n?e.ignoreSaveSettings|t:e.ignoreSaveSettings&~t},Lg={[H.changeDatabaseName]:ng,[H.changeZoomLevel]:ig,[H.streamZoomLevel]:og,[H.scrollTo]:ug,[H.streamScrollTo]:fg,[H.changeShow]:mg,[H.changeDatabase]:gg,[H.changeCanvasType]:vg,[H.changeLanguage]:bg,[H.changeTableNameCase]:Sg,[H.changeColumnNameCase]:wg,[H.changeBracketType]:Eg,[H.changeRelationshipDataTypeSync]:Og,[H.changeRelationshipOptimization]:Ag,[H.changeColumnOrder]:Mg,[H.changeMaxWidthComment]:Pg,[H.changeIgnoreSaveSettings]:Ig},Rg={changeDatabaseNameAction:tg,changeZoomLevelAction:rg,streamZoomLevelAction:ag,scrollToAction:lg,streamScrollToAction:dg,changeShowAction:pg,changeDatabaseAction:hg,changeCanvasTypeAction:_g,changeLanguageAction:yg,changeTableNameCaseAction:xg,changeColumnNameCaseAction:Cg,changeBracketTypeAction:Tg,changeRelationshipDataTypeSyncAction:Dg,changeRelationshipOptimizationAction:kg,changeColumnOrderAction:jg,changeMaxWidthCommentAction:Ng,changeIgnoreSaveSettingsAction:Fg},U={left:`left`,right:`right`,top:`top`,bottom:`bottom`},zg=Object.values(U);B([U.top,U.bottom,U.left,U.right]);const Bg=[0,0],Vg=new WeakMap;function Hg(e,t){Vg.set(e,t)}function Ug(e){return Vg.get(e)??Bg}const Wg=new WeakMap;function Gg(e,t){Wg.set(e,{points:t,epoch:qg})}function Kg(e){return Wg.get(e)?.points}let qg=0;function Jg(){qg+=1}function Yg(e){let t=1/0,n=1/0,r=-1/0,i=-1/0;for(let{x:a,y:o}of e)a<t&&(t=a),o<n&&(n=o),a>r&&(r=a),o>i&&(i=o);return{x:t,y:n,width:r-t,height:i-n}}function Xg({x:e,y:t,width:n,height:r},i){return{x:e-i,y:t-i,width:n+i*2,height:r+i*2}}function Zg(e,t=2){let{start:n,end:r}=e,i=Wg.get(e),a=i&&i.epoch===qg?i.points:null;return Xg(Yg(a?[...a,n,r]:[n,r]),25+t+(a?0:86))}function Qg({originX:e,originY:t}){return{x:e,y:t}}const $g=e=>e>0?e:1;function e_(e,t){let n=Qg(e);return{x:n.x+t.x*e.zoomLevel,y:n.y+t.y*e.zoomLevel}}function t_(e,t){let n=$g(e.zoomLevel),r=Qg({...e,zoomLevel:n});return{x:(t.x-r.x)/n,y:(t.y-r.y)/n}}function n_(e){let{viewportWidth:t,viewportHeight:n}=e,r=$g(e.zoomLevel),i=Qg({...e,zoomLevel:r}),a=(t>0?t:ah)/r,o=(n>0?n:675)/r;return{x:-i.x/r-a,y:-i.y/r-o,width:a*3,height:o*3}}function r_(e){let{settings:{originX:t,originY:n,zoomLevel:r},editor:{viewport:i}}=e;return n_({originX:t,originY:n,zoomLevel:r,viewportWidth:i.width,viewportHeight:i.height})}function i_(e,t){return!(t.x>e.x+e.width||t.x+t.width<e.x||t.y>e.y+e.height||t.y+t.height<e.y)}function a_(e,t,n){return i_(e,Rh(t,n))}function o_(e,t,n){return i_(e,Zg(t,n))}const s_={table:`table`,memo:`memo`},W={tableName:`tableName`,tableComment:`tableComment`,columnName:`columnName`,columnDataType:`columnDataType`,columnNotNull:`columnNotNull`,columnUnique:`columnUnique`,columnAutoIncrement:`columnAutoIncrement`,columnDefault:`columnDefault`,columnComment:`columnComment`},c_={ArrowUp:`ArrowUp`,ArrowRight:`ArrowRight`,ArrowDown:`ArrowDown`,ArrowLeft:`ArrowLeft`,Tab:`Tab`};B(Object.values(c_));const l_=()=>({id:x(),selectedMap:{},hasUndo:!1,hasRedo:!1,viewport:{width:ah,height:675},scrollPullPending:!1,focusTable:null,editMemoId:null,memoScrollTopMap:{},drawRelationship:null,hoverColumnMap:{},hoverRelationshipMap:{},openMap:{},handTool:!1,zenMode:!1,draggableColumn:null,draggingColumnMap:{},sharedMouseTrackerMap:{},sharedFocusTrackerMap:{},sharedSelectionTrackerMap:{},sharedDragSelectTrackerMap:{},dragSelect:null}),u_=e=>e.ui.zIndex,d_=(e,t)=>Math.max(1,...e.map(u_),...t.map(u_))+1,f_=e=>t=>e.y===t.y&&e.x===t.x;function p_(e,t,n){let r=t_(e,{x:200,y:100}),i=[...t,...n].map(({ui:e})=>e);for(;i.some(f_(r));)r.x+=50,r.y+=50;return r}function m_(){let e=Date.now();return{updateAt:e,createAt:e}}function h_(e,t){return e<t?ye(e,t+1):ye(t,e+1)}function g_(e){return Se(ie(e??``))}function __(e,t){return xe([...e,t])}function v_(e,t,n){if(!t||t===n)return[n];let r=e.indexOf(t),i=e.indexOf(n);return r===-1?[n]:h_(r,i).map(t=>e[t])}function y_(e,t,n,r){return xe([...t,...v_(e,n,r)])}const b_={[P.columnName]:!0,[P.columnDataType]:N.columnDataType,[P.columnNotNull]:N.columnNotNull,[P.columnUnique]:N.columnUnique,[P.columnAutoIncrement]:N.columnAutoIncrement,[P.columnDefault]:N.columnDefault,[P.columnComment]:N.columnComment},x_={[P.columnName]:W.columnName,[P.columnDataType]:W.columnDataType,[P.columnNotNull]:W.columnNotNull,[P.columnUnique]:W.columnUnique,[P.columnAutoIncrement]:W.columnAutoIncrement,[P.columnDefault]:W.columnDefault,[P.columnComment]:W.columnComment},S_=[W.tableName,W.tableComment];function C_({settings:{show:e,columnOrder:t}}){return t.filter(t=>{let n=b_[t];return n===!0||z(e,n)}).map(e=>x_[e])}function w_({collections:e,editor:{focusTable:t}}){return t?!!j(e).collection(`tableEntities`).selectById(t.tableId)?.columnIds.length:!1}function T_(e){let{editor:{focusTable:t}}=e;if(!t)return!0;let n=C_(e);return n.indexOf(t.focusType)===n.length-1}function E_(e){let{editor:{focusTable:t}}=e;return!t||C_(e).indexOf(t.focusType)===0}function D_({collections:e,editor:{focusTable:t}}){if(!t?.columnId)return!0;let n=j(e).collection(`tableEntities`).selectById(t.tableId);return!n||n.columnIds.indexOf(t.columnId)===n.columnIds.length-1}function O_({collections:e,editor:{focusTable:t}}){if(!t?.columnId)return!0;let n=j(e).collection(`tableEntities`).selectById(t.tableId);return!n||n.columnIds.indexOf(t.columnId)===0}function k_(e){let t=C_(e);return t[t.length-1]}function A_(e){return C_(e)[0]}function j_(e){let{editor:{focusTable:t}}=e;if(!t)return W.columnName;let n=C_(e),r=n.indexOf(t.focusType);return T_(e)?n[0]:n[r+1]}function M_(e){let{editor:{focusTable:t}}=e;if(!t)return W.columnName;let n=C_(e),r=n.indexOf(t.focusType);return E_(e)?n[n.length-1]:n[r-1]}function N_(e,t){let{collections:n,editor:{focusTable:r}}=e;if(!r?.columnId)return null;let i=j(n).collection(`tableEntities`).selectById(r.tableId);if(!i)return null;let a=i.columnIds.indexOf(r.columnId);if(a<=0)return null;let o=null;for(let e=a;e>=0;e--){let n=i.columnIds[e];if(!t.includes(n)){o=n;break}}return o}function P_({settings:{show:e}}){return z(e,N.tableComment)?S_:[W.tableName]}function F_(e){let{editor:{focusTable:t}}=e;if(!t)return!0;let n=P_(e);return n.indexOf(t.focusType)===n.length-1}function I_(e){let{editor:{focusTable:t}}=e;return!t||P_(e).indexOf(t.focusType)===0}const L_=B(S_);function R_(e){let{editor:{focusTable:t}}=e;if(!t)return W.tableName;let n=P_(e),r=n.indexOf(t.focusType);return F_(e)?n[0]:n[r+1]}function z_(e){let{editor:{focusTable:t}}=e;if(!t)return W.tableName;let n=P_(e),r=n.indexOf(t.focusType);return I_(e)?n[n.length-1]:n[r-1]}function B_(e,t){let{collections:n,editor:{focusTable:r}}=e;if(!r)return;let i=j(n).collection(`tableEntities`).selectById(r.tableId);if(i){if(L_(r.focusType)){if(w_(e)){let t=i.columnIds[i.columnIds.length-1];r.focusType=k_(e),r.columnId=t,r.prevSelectColumnId=t,r.selectColumnIds=[t]}}else if(O_(e))r.focusType=W.tableName,r.columnId=null,r.prevSelectColumnId=null,r.selectColumnIds=[];else if(r.columnId){let e=i.columnIds.indexOf(r.columnId),n=i.columnIds[e-1];r.columnId=n,r.prevSelectColumnId=n,r.selectColumnIds=t.shiftKey&&t.moveKey!==c_.Tab?__(r.selectColumnIds,n):[n]}}}function V_(e,t){let{collections:n,editor:{focusTable:r}}=e;if(!r)return;let i=j(n).collection(`tableEntities`).selectById(r.tableId);if(i){if(L_(r.focusType)){if(w_(e)){let t=i.columnIds[0];r.focusType=A_(e),r.columnId=t,r.prevSelectColumnId=t,r.selectColumnIds=[t]}}else if(D_(e))r.focusType=W.tableName,r.columnId=null,r.prevSelectColumnId=null,r.selectColumnIds=[];else if(r.columnId){let e=i.columnIds.indexOf(r.columnId),n=i.columnIds[e+1];r.columnId=n,r.prevSelectColumnId=n,r.selectColumnIds=t.shiftKey&&t.moveKey!==c_.Tab?__(r.selectColumnIds,n):[n]}}}function H_(e,t){let{collections:n,editor:{focusTable:r}}=e;if(!r)return;let i=j(n).collection(`tableEntities`).selectById(r.tableId);if(i){if(L_(r.focusType)){if(I_(e)){if(w_(e)){let t=i.columnIds[i.columnIds.length-1];r.focusType=k_(e),r.columnId=t,r.prevSelectColumnId=t,r.selectColumnIds=[t]}else r.focusType=z_(e)}else r.focusType=z_(e)}else if(E_(e)){if(O_(e))r.focusType=z(e.settings.show,N.tableComment)?W.tableComment:W.tableName,r.columnId=null,r.prevSelectColumnId=null,r.selectColumnIds=[];else if(r.columnId){let n=i.columnIds.indexOf(r.columnId),a=i.columnIds[n-1];r.focusType=k_(e),r.columnId=a,r.prevSelectColumnId=a,r.selectColumnIds=t.shiftKey&&t.moveKey!==c_.Tab?__(r.selectColumnIds,a):[a]}}else r.focusType=M_(e),!t.shiftKey&&r.columnId&&(r.prevSelectColumnId=r.columnId,r.selectColumnIds=[r.columnId])}}function U_(e,t){let{collections:n,editor:{focusTable:r}}=e;if(!r)return;let i=j(n).collection(`tableEntities`).selectById(r.tableId);if(i){if(L_(r.focusType)){if(F_(e)){if(w_(e)){let t=i.columnIds[0];r.focusType=A_(e),r.columnId=t,r.prevSelectColumnId=t,r.selectColumnIds=[t]}else r.focusType=R_(e)}else r.focusType=R_(e)}else if(T_(e)){if(D_(e))r.focusType=W.tableName,r.columnId=null,r.prevSelectColumnId=null,r.selectColumnIds=[];else if(r.columnId){let n=i.columnIds.indexOf(r.columnId),a=i.columnIds[n+1];r.focusType=A_(e),r.columnId=a,r.prevSelectColumnId=a,r.selectColumnIds=t.shiftKey&&t.moveKey!==c_.Tab?__(r.selectColumnIds,a):[a]}}else r.focusType=j_(e),!t.shiftKey&&r.columnId&&(r.prevSelectColumnId=r.columnId,r.selectColumnIds=[r.columnId])}}const W_=3e4,G_=9e4,K_=3e3,q_=D(M.changeHasHistory),J_=({editor:e},{payload:{hasRedo:t,hasUndo:n}})=>{e.hasRedo=t,e.hasUndo=n},Y_=D(M.selectAll),X_=({editor:e,doc:t})=>{let n=t.tableIds.reduce((e,t)=>(e[t]=s_.table,e),{});e.selectedMap={...t.memoIds.reduce((e,t)=>(e[t]=s_.memo,e),{}),...n}},Z_=D(M.unselectAll),Q_=({editor:e})=>{Object.keys(e.selectedMap).forEach(t=>{Reflect.deleteProperty(e.selectedMap,t)})},$_=D(M.select),ev=({editor:e},{payload:t})=>{Object.assign(e.selectedMap,t)},tv=D(M.changeViewport),nv=(e,{payload:{width:t,height:n}})=>{e.editor.viewport.width=t,e.editor.viewport.height=n,e.editor.scrollPullPending&&av(e)},rv=D(M.clear),iv=e=>{let{doc:t,collections:n}=Bp({});e.doc=t,e.collections=n,e.editor.scrollPullPending=!1};function av(e){let{settings:t,editor:n}=e;if(!sg(n.viewport)){n.scrollPullPending=!0;return}let r=cg(e);t.originX=Ue(r.x,4),t.originY=Ue(r.y,4),n.scrollPullPending=!1}const ov=D(M.loadJson),sv=(e,{payload:{value:t}})=>{let{version:n,settings:r,doc:i,collections:a}=zm(t);Sh(r.canvasType)||(r.canvasType=Vm.ERD),Object.assign(e.settings,r),e.version=n,e.doc=i,e.collections=a,av(e)},cv=D(M.initialClear),lv=e=>{let{doc:t,collections:n}=Bp({});e.doc=t,e.collections=n,e.editor.scrollPullPending=!1},uv=D(M.initialLoadJson),dv=(e,{payload:{value:t}})=>{let{version:n,settings:r,doc:i,collections:a}=zm(t);Sh(r.canvasType)||(r.canvasType=Vm.ERD),Object.assign(e.settings,r),e.version=n,e.doc=i,e.collections=a,av(e)},fv=D(M.focusTable),pv=({editor:e,collections:t},{payload:n})=>{let r=j(t).collection(`tableEntities`);if(e.focusTable?.tableId===n.tableId&&n.focusType)e.focusTable.focusType=n.focusType,e.focusTable.columnId=null,e.focusTable.prevSelectColumnId=null,e.focusTable.selectColumnIds=[];else if(n.focusType){let t=r.selectById(n.tableId);if(!t)return;e.focusTable={tableId:t.id,focusType:n.focusType,columnId:null,prevSelectColumnId:null,selectColumnIds:[],edit:!1}}else if(e.focusTable?.tableId!==n.tableId){let t=r.selectById(n.tableId);if(!t)return;e.focusTable={tableId:t.id,focusType:W.tableName,columnId:null,prevSelectColumnId:null,selectColumnIds:[],edit:!1}}},mv=D(M.focusColumn),hv=({editor:e,collections:t},{payload:n})=>{let r=j(t).collection(`tableEntities`);if(e.focusTable?.tableId===n.tableId){let t=r.selectById(n.tableId);if(!t)return;let i=e.focusTable;i.columnId=n.columnId,i.focusType=n.focusType,i.selectColumnIds=n.$mod&&n.shiftKey?y_(t.columnIds,i.selectColumnIds,i.prevSelectColumnId,i.columnId):n.shiftKey?v_(t.columnIds,i.prevSelectColumnId,i.columnId):n.$mod?__(i.selectColumnIds,n.columnId):[n.columnId],i.prevSelectColumnId=n.columnId}else{let t=r.selectById(n.tableId);if(!t)return;e.focusTable={tableId:t.id,focusType:n.focusType,columnId:n.columnId,prevSelectColumnId:n.columnId,selectColumnIds:[n.columnId],edit:!1}}},gv=D(M.focusTableEnd),_v=({editor:e})=>{e.focusTable=null},vv=D(M.focusMoveTable),yv=(e,{payload:t})=>{let{editor:{focusTable:n}}=e;if(n)switch(n.edit=!1,t.moveKey){case c_.ArrowUp:B_(e,t);break;case c_.ArrowDown:V_(e,t);break;case c_.ArrowLeft:H_(e,t);break;case c_.ArrowRight:U_(e,t);break;case c_.Tab:t.shiftKey?H_(e,t):U_(e,t)}},bv=D(M.editTable),xv=({editor:{focusTable:e}})=>{e&&(e.edit=!0)},Sv=D(M.editTableEnd),Cv=({editor:{focusTable:e}})=>{e&&(e.edit=!1)},wv=D(M.editMemo),Tv=({editor:e},{payload:{id:t}})=>{e.editMemoId=t},Ev=D(M.editMemoEnd),Dv=({editor:e})=>{e.editMemoId=null},Ov=D(M.scrollMemo),kv=({editor:e},{payload:{id:t,scrollTop:n}})=>{e.memoScrollTopMap[t]=Number.isFinite(n)?Math.max(0,n):0},Av=D(M.selectAllColumn),jv=({collections:e,editor:{focusTable:t}})=>{if(!t)return;let n=j(e).collection(`tableEntities`).selectById(t.tableId);n&&(t.selectColumnIds=[...n.columnIds])},Mv=D(M.drawStartRelationship),Nv=({editor:e},{payload:{relationshipType:t}})=>{e.drawRelationship={relationshipType:t,start:null,end:{x:0,y:0}}},Pv=D(M.drawStartAddRelationship),Fv=({editor:{drawRelationship:e},collections:t},{payload:{tableId:n}})=>{if(!e)return;let r=j(t).collection(`tableEntities`).selectById(n);r&&(e.start={tableId:n,x:r.ui.x,y:r.ui.y})},Iv=D(M.drawEndRelationship),Lv=({editor:e})=>{e.drawRelationship=null},Rv=D(M.drawRelationship),zv=({editor:{drawRelationship:e},settings:t},{payload:{x:n,y:r}})=>{if(!e?.start)return;let i=t_(t,{x:n,y:r});e.end.x=i.x,e.end.y=i.y},Bv=D(M.hoverColumnMap),Vv=({editor:e},{payload:{columnIds:t}})=>{Object.keys(e.hoverColumnMap).forEach(t=>{Reflect.deleteProperty(e.hoverColumnMap,t)});for(let n of t)e.hoverColumnMap[n]=!0},Hv=D(M.hoverRelationshipMap),Uv=({editor:e},{payload:{relationshipIds:t}})=>{Object.keys(e.hoverRelationshipMap).forEach(t=>{Reflect.deleteProperty(e.hoverRelationshipMap,t)});for(let n of t)e.hoverRelationshipMap[n]=!0},Wv=D(M.changeOpenMap),Gv=({editor:e},{payload:t})=>{Object.assign(e.openMap,t)},Kv=D(M.changeHandTool),qv=({editor:e},{payload:{value:t}})=>{e.handTool=t,t&&(e.drawRelationship=null)},Jv=D(M.changeZenMode),Yv=({editor:e},{payload:{value:t}})=>{e.zenMode=t},Xv=D(M.dragstartColumn),Zv=({editor:e},{payload:t})=>{e.draggableColumn=t,t.columnIds.forEach(t=>{e.draggingColumnMap[t]=!0})},Qv=D(M.dragendColumn),$v=({editor:e})=>{e.draggableColumn=null,Object.keys(e.draggingColumnMap).forEach(t=>{Reflect.deleteProperty(e.draggingColumnMap,t)})},ey=D(M.sharedMouseTracker),ty=({editor:e},{payload:t,tags:n,meta:r})=>{if(v(n)||!z(n,nh.shared)||!b(r?.editorId)||e.id===r.editorId)return;let i=e.sharedMouseTrackerMap[r.editorId],a=!b(r.nickname)||He(r.nickname.trim())?`user`:r.nickname.trim();i?(i.x=t.x,i.y=t.y,i.nickname=a,clearTimeout(i.timeoutId),i.timeoutId=setTimeout(()=>{Reflect.deleteProperty(e.sharedMouseTrackerMap,r.editorId)},W_)):e.sharedMouseTrackerMap[r.editorId]={...t,id:r.editorId,nickname:a,timeoutId:setTimeout(()=>{Reflect.deleteProperty(e.sharedMouseTrackerMap,r.editorId)},W_)}},ny=D(M.sharedFocusTracker),ry=({editor:e},{payload:{focus:t},tags:n,meta:r})=>{if(v(n)||!z(n,nh.shared)||!b(r?.editorId)||e.id===r.editorId)return;let i=e.sharedFocusTrackerMap[r.editorId];if(!t){i&&(clearTimeout(i.timeoutId),Reflect.deleteProperty(e.sharedFocusTrackerMap,r.editorId));return}i?(i.tableId=t.tableId,i.columnId=t.columnId,i.focusType=t.focusType,clearTimeout(i.timeoutId),i.timeoutId=setTimeout(()=>{Reflect.deleteProperty(e.sharedFocusTrackerMap,r.editorId)},G_)):e.sharedFocusTrackerMap[r.editorId]={...t,id:r.editorId,timeoutId:setTimeout(()=>{Reflect.deleteProperty(e.sharedFocusTrackerMap,r.editorId)},G_)}},iy=D(M.sharedSelectionTracker),ay=({editor:e},{payload:{selectedIds:t},tags:n,meta:r})=>{if(v(n)||!z(n,nh.shared)||!b(r?.editorId)||e.id===r.editorId)return;let i=e.sharedSelectionTrackerMap[r.editorId];if(!t.length){i&&(clearTimeout(i.timeoutId),Reflect.deleteProperty(e.sharedSelectionTrackerMap,r.editorId));return}i?(i.selectedIds=t,clearTimeout(i.timeoutId),i.timeoutId=setTimeout(()=>{Reflect.deleteProperty(e.sharedSelectionTrackerMap,r.editorId)},G_)):e.sharedSelectionTrackerMap[r.editorId]={id:r.editorId,selectedIds:t,timeoutId:setTimeout(()=>{Reflect.deleteProperty(e.sharedSelectionTrackerMap,r.editorId)},G_)}},oy=D(M.sharedDragSelectTracker),sy=({editor:e},{payload:{rect:t},tags:n,meta:r})=>{if(v(n)||!z(n,nh.shared)||!b(r?.editorId)||e.id===r.editorId)return;let i=e.sharedDragSelectTrackerMap[r.editorId];if(!t){i&&(clearTimeout(i.timeoutId),Reflect.deleteProperty(e.sharedDragSelectTrackerMap,r.editorId));return}i?(i.x=t.x,i.y=t.y,i.w=t.w,i.h=t.h,clearTimeout(i.timeoutId),i.timeoutId=setTimeout(()=>{Reflect.deleteProperty(e.sharedDragSelectTrackerMap,r.editorId)},K_)):e.sharedDragSelectTrackerMap[r.editorId]={...t,id:r.editorId,timeoutId:setTimeout(()=>{Reflect.deleteProperty(e.sharedDragSelectTrackerMap,r.editorId)},K_)}},cy=D(M.dragSelectRect),ly=({editor:e},{payload:{rect:t}})=>{e.dragSelect=t},uy=D(M.validationIds),dy=({doc:e,collections:t})=>{let n=j(t).collection(`tableEntities`),r=j(t).collection(`tableColumnEntities`),i=j(t).collection(`indexEntities`),a=j(t).collection(`indexColumnEntities`),o=j(t).collection(`relationshipEntities`),s=j(t).collection(`memoEntities`),c=e.tableIds.filter(e=>!n.selectById(e)),l=e.relationshipIds.filter(e=>!o.selectById(e)),u=e.indexIds.filter(e=>!i.selectById(e)),d=e.memoIds.filter(e=>!s.selectById(e));e.tableIds=e.tableIds.filter(e=>!c.includes(e)),e.relationshipIds=e.relationshipIds.filter(e=>!l.includes(e)),e.indexIds=e.indexIds.filter(e=>!u.includes(e)),e.memoIds=e.memoIds.filter(e=>!d.includes(e)),n.selectAll().forEach(e=>{let t=e.columnIds.filter(e=>!r.selectById(e)),n=e.seqColumnIds.filter(e=>!r.selectById(e));e.columnIds=e.columnIds.filter(e=>!t.includes(e)),e.seqColumnIds=e.seqColumnIds.filter(e=>!n.includes(e))}),i.selectAll().forEach(e=>{let t=e.indexColumnIds.filter(e=>!a.selectById(e)),n=e.seqIndexColumnIds.filter(e=>!a.selectById(e));e.indexColumnIds=e.indexColumnIds.filter(e=>!t.includes(e)),e.seqIndexColumnIds=e.seqIndexColumnIds.filter(e=>!n.includes(e))})},fy=D(M.getLWW),py=ge,my=D(M.mergeLWW),hy=({lww:e},{payload:{lww:t}})=>{Object.entries(t).forEach(([t,[n,r,i,a]])=>{Up(e,r,t,n,ge),Wp(e,i,t,n,ge),Object.entries(a).forEach(([r,i])=>{Gp(e,i,t,n,r,ge)})})},gy={[M.changeHasHistory]:J_,[M.selectAll]:X_,[M.unselectAll]:Q_,[M.select]:ev,[M.changeViewport]:nv,[M.clear]:iv,[M.loadJson]:sv,[M.initialClear]:lv,[M.initialLoadJson]:dv,[M.focusTable]:pv,[M.focusColumn]:hv,[M.focusTableEnd]:_v,[M.focusMoveTable]:yv,[M.editTable]:xv,[M.editTableEnd]:Cv,[M.editMemo]:Tv,[M.editMemoEnd]:Dv,[M.scrollMemo]:kv,[M.selectAllColumn]:jv,[M.drawStartRelationship]:Nv,[M.drawStartAddRelationship]:Fv,[M.drawEndRelationship]:Lv,[M.drawRelationship]:zv,[M.hoverColumnMap]:Vv,[M.hoverRelationshipMap]:Uv,[M.changeOpenMap]:Gv,[M.changeHandTool]:qv,[M.changeZenMode]:Yv,[M.dragstartColumn]:Zv,[M.dragendColumn]:$v,[M.sharedMouseTracker]:ty,[M.sharedFocusTracker]:ry,[M.sharedSelectionTracker]:ay,[M.sharedDragSelectTracker]:sy,[M.dragSelectRect]:ly,[M.validationIds]:dy,[M.getLWW]:py,[M.mergeLWW]:hy},_y={changeHasHistoryAction:q_,selectAllAction:Y_,unselectAllAction:Z_,selectAction:$_,changeViewportAction:tv,clearAction:rv,loadJsonAction:ov,initialClearAction:cv,initialLoadJsonAction:uv,focusTableAction:fv,focusColumnAction:mv,focusTableEndAction:gv,focusMoveTableAction:vv,editTableAction:bv,editTableEndAction:Sv,editMemoAction:wv,editMemoEndAction:Ev,scrollMemoAction:Ov,selectAllColumnAction:Av,drawStartRelationshipAction:Mv,drawStartAddRelationshipAction:Pv,drawEndRelationshipAction:Iv,drawRelationshipAction:Rv,hoverColumnMapAction:Bv,hoverRelationshipMapAction:Hv,changeOpenMapAction:Wv,changeHandToolAction:Kv,changeZenModeAction:Jv,dragstartColumnAction:Xv,dragendColumnAction:Qv,sharedMouseTrackerAction:ey,sharedFocusTrackerAction:ny,sharedSelectionTrackerAction:iy,sharedDragSelectTrackerAction:oy,dragSelectRectAction:cy,validationIdsAction:uy,getLWWAction:fy,mergeLWWAction:my},vy=(e,t,n)=>{e.push(rv(),ov({value:Bm(n)}))},yy=(e,t,n)=>{e.push(ov({value:Bm(n)}))},by={[M.loadJson]:vy,[M.clear]:yy},xy={addIndex:`index.add`,removeIndex:`index.remove`,changeIndexName:`index.changeName`,changeIndexUnique:`index.changeUnique`},Sy=e=>We({id:x(),name:``,tableId:``,indexColumnIds:[],seqIndexColumnIds:[],unique:!1,meta:m_()},e??{}),Cy=D(xy.addIndex),wy=({doc:e,collections:t,lww:n},{payload:{id:r,tableId:i},version:a},{clock:o})=>{let s=a??o.getVersion();j(t).collection(`indexEntities`).addOne(Sy({id:r,tableId:i})).addOperator(n,s,r,()=>{B(e.indexIds)(r)||e.indexIds.push(r)})},Ty=D(xy.removeIndex),Ey=({doc:e,collections:t,lww:n},{payload:{id:r},version:i},{clock:a})=>{let o=i??a.getVersion();j(t).collection(`indexEntities`).removeOperator(n,o,r,()=>{let t=e.indexIds.indexOf(r);t!==-1&&e.indexIds.splice(t,1)})},Dy=D(xy.changeIndexName),Oy=({collections:e,lww:t},{payload:{id:n,tableId:r,value:i},version:a},{clock:o})=>{let s=a??o.getVersion(),c=j(e).collection(`indexEntities`);c.getOrCreate(n,e=>Sy({id:e,tableId:r})),c.replaceOperator(t,s,n,`name`,()=>{c.updateOne(n,e=>{e.name=i})})},ky=D(xy.changeIndexUnique),Ay=({collections:e,lww:t},{payload:{id:n,tableId:r,value:i},version:a},{clock:o})=>{let s=a??o.getVersion(),c=j(e).collection(`indexEntities`);c.getOrCreate(n,e=>Sy({id:e,tableId:r})),c.replaceOperator(t,s,n,`unique`,()=>{c.updateOne(n,e=>{e.unique=i})})},jy={[xy.addIndex]:wy,[xy.removeIndex]:Ey,[xy.changeIndexName]:Oy,[xy.changeIndexUnique]:Ay},My={addIndexAction:Cy,removeIndexAction:Ty,changeIndexNameAction:Dy,changeIndexUniqueAction:ky},Ny=(e,{payload:{id:t}})=>{e.push(Ty({id:t}))},Py=(e,{payload:{id:t}},{collections:n})=>{let r=j(n).collection(`indexEntities`).selectById(t);r&&e.push(Cy({id:t,tableId:r.tableId}))},Fy=(e,{payload:{id:t,tableId:n}},{collections:r})=>{let i=j(r).collection(`indexEntities`).selectById(t);i&&e.push(Dy({id:t,tableId:n,value:i.name}))},Iy=(e,{payload:{id:t,tableId:n,value:r}},{collections:i})=>{j(i).collection(`indexEntities`).selectById(t)&&e.push(ky({id:t,tableId:n,value:!r}))},Ly={[xy.addIndex]:Ny,[xy.removeIndex]:Py,[xy.changeIndexName]:Fy,[xy.changeIndexUnique]:Iy},Ry={addIndexColumn:`indexColumn.add`,removeIndexColumn:`indexColumn.remove`,moveIndexColumn:`indexColumn.move`,changeIndexColumnOrderType:`indexColumn.changeOrderType`},zy=e=>We({id:x(),indexId:``,columnId:``,orderType:Zm.ASC,meta:m_()},e??{});function By(e,t,n){if(B(t)(n)){let r=t.reduce((e,t,n)=>(e[t]=n,e),{});e.push(n),e.sort((e,t)=>{let n=r[e],i=r[t];return n===void 0?1:i===void 0?-1:n-i})}else e.push(n),t.push(n)}const Vy=D(Ry.addIndexColumn),Hy=({collections:e,lww:t},{payload:{id:n,indexId:r,tableId:i,columnId:a},version:o},{clock:s})=>{let c=o??s.getVersion(),l=j(e).collection(`indexEntities`),u=l.getOrCreate(r,e=>Sy({id:e,tableId:i}));j(e).collection(`indexColumnEntities`).addOne(zy({id:n,indexId:r,columnId:a})).addOperator(t,c,n,()=>{B(u.indexColumnIds)(n)||l.updateOne(r,e=>{By(e.indexColumnIds,e.seqIndexColumnIds,n)})})},Uy=D(Ry.removeIndexColumn),Wy=({collections:e,lww:t},{payload:{id:n,indexId:r,tableId:i},version:a},{clock:o})=>{let s=a??o.getVersion(),c=j(e).collection(`indexEntities`),l=c.getOrCreate(r,e=>Sy({id:e,tableId:i}));j(e).collection(`indexColumnEntities`).removeOperator(t,s,n,()=>{let e=l.indexColumnIds.indexOf(n);e!==-1&&c.updateOne(r,t=>{t.indexColumnIds.splice(e,1)})})},Gy=D(Ry.moveIndexColumn),Ky=({collections:e},{payload:{id:t,indexId:n,tableId:r,targetId:i}})=>{if(t===i)return;let a=j(e).collection(`indexEntities`),o=a.getOrCreate(n,e=>Sy({id:e,tableId:r})),s=o.indexColumnIds.indexOf(t);if(s===-1)return;let c=o.indexColumnIds.indexOf(i);c!==-1&&a.updateOne(n,e=>{e.indexColumnIds.splice(s,1),e.indexColumnIds.splice(c,0,t);let n=e.seqIndexColumnIds.indexOf(t),r=e.seqIndexColumnIds.indexOf(i);n!==-1&&r!==-1&&(e.seqIndexColumnIds.splice(n,1),e.seqIndexColumnIds.splice(r,0,t))})},qy=D(Ry.changeIndexColumnOrderType),Jy=({collections:e,lww:t},{payload:{id:n,indexId:r,columnId:i,value:a},version:o},{clock:s})=>{let c=o??s.getVersion(),l=j(e).collection(`indexColumnEntities`);l.getOrCreate(n,e=>zy({id:e,indexId:r,columnId:i})),l.replaceOperator(t,c,n,`orderType`,()=>{l.updateOne(n,e=>{e.orderType=a})})},Yy={[Ry.addIndexColumn]:Hy,[Ry.removeIndexColumn]:Wy,[Ry.moveIndexColumn]:Ky,[Ry.changeIndexColumnOrderType]:Jy},Xy={addIndexColumnAction:Vy,removeIndexColumnAction:Uy,moveIndexColumnAction:Gy,changeIndexColumnOrderTypeAction:qy},Zy=(e,{payload:{id:t,indexId:n,tableId:r}})=>{e.push(Uy({id:t,indexId:n,tableId:r}))},Qy=(e,{payload:{id:t,indexId:n,tableId:r}},{collections:i})=>{let a=j(i).collection(`indexColumnEntities`).selectById(t);a&&e.push(Vy({id:t,indexId:n,tableId:r,columnId:a.columnId}))},$y=(e,{payload:{id:t,indexId:n,tableId:r,targetId:i}},{collections:a})=>{let o=j(a).collection(`indexEntities`).selectById(n);if(!o)return;let s=o.indexColumnIds.indexOf(t);if(s===-1)return;let c=o.indexColumnIds.indexOf(i);if(c===-1)return;let l=s<c?s+1:s-1,u=o.indexColumnIds[l];e.push(Gy({indexId:n,tableId:r,id:t,targetId:u}))},eb=(e,{payload:{id:t,indexId:n,columnId:r}},{collections:i})=>{let a=j(i).collection(`indexColumnEntities`).selectById(t);a&&e.push(qy({id:t,indexId:n,columnId:r,value:a.orderType}))},tb={[Ry.addIndexColumn]:Zy,[Ry.removeIndexColumn]:Qy,[Ry.moveIndexColumn]:$y,[Ry.changeIndexColumnOrderType]:eb},nb={addMemo:`memo.add`,moveMemo:`memo.move`,moveToMemo:`memo.moveTo`,removeMemo:`memo.remove`,changeMemoValue:`memo.changeValue`,changeMemoColor:`memo.changeColor`,resizeMemo:`memo.resize`,changeZIndex:`memo.changeZIndex`},rb=e=>We({id:x(),value:``,ui:{x:200,y:100,zIndex:2,width:116,height:100,color:``},meta:m_()},e??{}),ib=D(nb.addMemo),ab=({doc:e,collections:t,lww:n},{payload:{id:r,ui:i},version:a},{clock:o})=>{let s=a??o.getVersion();j(t).collection(`memoEntities`).addOne(rb({id:r,ui:i})).addOperator(n,s,r,()=>{B(e.memoIds)(r)||e.memoIds.push(r)})},ob=D(nb.moveMemo),sb=({collections:e},{payload:{ids:t,movementX:n,movementY:r}})=>{let i=j(e).collection(`memoEntities`);for(let e of t)i.getOrCreate(e,e=>rb({id:e}));i.updateMany(t,e=>{e.ui.x=Ue(e.ui.x+n,4),e.ui.y=Ue(e.ui.y+r,4)})},cb=D(nb.moveToMemo),lb=({collections:e},{payload:{id:t,x:n,y:r}})=>{let i=j(e).collection(`memoEntities`);i.getOrCreate(t,e=>rb({id:e})),i.updateOne(t,e=>{e.ui.x=n,e.ui.y=r})},ub=D(nb.removeMemo),db=({doc:e,collections:t,lww:n},{payload:{id:r},version:i},{clock:a})=>{let o=i??a.getVersion();j(t).collection(`memoEntities`).removeOperator(n,o,r,()=>{let t=e.memoIds.indexOf(r);t!==-1&&e.memoIds.splice(t,1)})},fb=D(nb.changeMemoValue),pb=({collections:e,lww:t},{payload:{id:n,value:r},version:i},{clock:a})=>{let o=i??a.getVersion(),s=j(e).collection(`memoEntities`);s.getOrCreate(n,e=>rb({id:e})),s.replaceOperator(t,o,n,`value`,()=>{s.updateOne(n,e=>{e.value=r})})},mb=D(nb.changeMemoColor),hb=({collections:e,lww:t},{payload:{id:n,color:r},version:i},{clock:a})=>{let o=i??a.getVersion(),s=j(e).collection(`memoEntities`);s.getOrCreate(n,e=>rb({id:e})),s.replaceOperator(t,o,n,`ui.color`,()=>{s.updateOne(n,e=>{e.ui.color=r})})},gb=D(nb.resizeMemo),_b=({collections:e},{payload:{id:t,x:n,y:r,width:i,height:a}})=>{let o=j(e).collection(`memoEntities`);o.getOrCreate(t,e=>rb({id:e})),o.updateOne(t,e=>{e.ui.x=n,e.ui.y=r,e.ui.width=i,e.ui.height=a})},vb=D(nb.changeZIndex),yb=({collections:e},{payload:{id:t,zIndex:n}})=>{let r=j(e).collection(`memoEntities`);r.getOrCreate(t,e=>rb({id:e})),r.updateOne(t,e=>{e.ui.zIndex=n})},bb={[nb.addMemo]:ab,[nb.moveMemo]:sb,[nb.moveToMemo]:lb,[nb.removeMemo]:db,[nb.changeMemoValue]:pb,[nb.changeMemoColor]:hb,[nb.resizeMemo]:_b,[nb.changeZIndex]:yb},xb={addMemoAction:ib,moveMemoAction:ob,moveToMemoAction:cb,removeMemoAction:ub,changeMemoValueAction:fb,changeMemoColorAction:mb,resizeMemoAction:gb,changeZIndexAction:vb},Sb=(e,{payload:{id:t}})=>{e.push(ub({id:t}))},Cb=(e,{payload:{id:t}},{collections:n})=>{let r=j(n).collection(`memoEntities`).selectById(t);r&&e.push(ib({id:r.id,ui:ve(r.ui,[`x`,`y`,`zIndex`])}))},wb=(e,{payload:{id:t}},{collections:n})=>{let r=j(n).collection(`memoEntities`).selectById(t);r&&e.push(fb({id:t,value:r.value}))},Tb=(e,{payload:{id:t}},{collections:n})=>{let r=j(n).collection(`memoEntities`).selectById(t);r&&e.push(cb({id:t,x:r.ui.x,y:r.ui.y}))},Eb={[nb.addMemo]:Sb,[nb.removeMemo]:Cb,[nb.changeMemoValue]:wb,[nb.moveToMemo]:Tb},Db=(e,t,n)=>{let r=n.filter(e=>e.type===ob.type);if(!r.length)return;let i=ce(r,e=>e.payload.ids.join(`,`));for(let[,n]of Object.entries(i)){let{payload:{ids:r}}=le(n),{x:i,y:a}=n.reduce((e,{payload:{movementX:t,movementY:n}})=>(e.x+=t,e.y+=n,e),{x:0,y:0});Math.abs(i)+Math.abs(a)<20||(e.push(ob({ids:r,movementX:-1*i,movementY:-1*a})),t.push(ob({ids:r,movementX:i,movementY:a})))}},Ob=(e,t,n)=>{let r=n.filter(({type:e})=>e===mb.type);if(!r.length)return;let i=ce(r,e=>e.payload.id);for(let[n,r]of Object.entries(i)){let i=le(r),a=me(r);e.push(mb({id:n,color:i.payload.prevColor,prevColor:a.payload.color})),t.push(mb({id:n,color:a.payload.color,prevColor:i.payload.prevColor}))}},kb=(e,t,n)=>{let r=n.filter(e=>e.type===gb.type);if(!r.length)return;let i=ce(r,e=>e.payload.id);for(let[,n]of Object.entries(i)){if(n.length<2)continue;let r=le(n),i=me(n);e.push(r),t.push(i)}},Ab={[nb.moveMemo]:Db,[nb.changeMemoColor]:Ob,[nb.resizeMemo]:kb},jb={addRelationship:`relationship.add`,removeRelationship:`relationship.remove`,changeRelationshipType:`relationship.changeType`},Mb=e=>We({id:x(),identification:!1,relationshipType:Ym.ZeroN,startRelationshipType:Xm.dash,start:{tableId:``,columnIds:[],x:0,y:0,direction:I.bottom},end:{tableId:``,columnIds:[],x:0,y:0,direction:I.bottom},meta:m_()},e??{}),Nb=D(jb.addRelationship),Pb=({doc:e,collections:t,lww:n},{payload:{id:r,relationshipType:i,start:a,end:o},version:s},{clock:c})=>{let l=s??c.getVersion();j(t).collection(`relationshipEntities`).addOne(Mb({id:r,relationshipType:i,start:{tableId:a.tableId,columnIds:a.columnIds},end:{tableId:o.tableId,columnIds:o.columnIds}})).addOperator(n,l,r,()=>{B(e.relationshipIds)(r)||e.relationshipIds.push(r)})},Fb=D(jb.removeRelationship),Ib=({doc:e,collections:t,lww:n},{payload:{id:r},version:i},{clock:a})=>{let o=i??a.getVersion();j(t).collection(`relationshipEntities`).removeOperator(n,o,r,()=>{let t=e.relationshipIds.indexOf(r);t!==-1&&e.relationshipIds.splice(t,1)})},Lb=D(jb.changeRelationshipType),Rb=({collections:e,lww:t},{payload:{id:n,value:r},version:i},{clock:a})=>{let o=i??a.getVersion(),s=j(e).collection(`relationshipEntities`);s.replaceOperator(t,o,n,`relationshipType`,()=>{s.updateOne(n,e=>{e.relationshipType=r})})},zb={[jb.addRelationship]:Pb,[jb.removeRelationship]:Ib,[jb.changeRelationshipType]:Rb},Bb={addRelationshipAction:Nb,removeRelationshipAction:Fb,changeRelationshipTypeAction:Lb},Vb=(e,{payload:{id:t}})=>{e.push(Fb({id:t}))},Hb=(e,{payload:{id:t}},{collections:n})=>{let r=j(n).collection(`relationshipEntities`).selectById(t);r&&e.push(Nb({id:r.id,relationshipType:r.relationshipType,start:ve(r.start,[`tableId`,`columnIds`]),end:ve(r.end,[`tableId`,`columnIds`])}))},Ub=(e,{payload:{id:t}},{collections:n})=>{let r=j(n).collection(`relationshipEntities`).selectById(t);r&&e.push(Lb({id:t,value:r.relationshipType}))},Wb={[jb.addRelationship]:Vb,[jb.removeRelationship]:Hb,[jb.changeRelationshipType]:Ub},Gb=(e,t,{settings:n})=>{e.push(lg({originX:n.originX,originY:n.originY}))},Kb=(e,{payload:{show:t,value:n}})=>{e.push(pg({show:t,value:!n}))},qb=(e,t,{settings:n})=>{e.push(rg({value:n.zoomLevel}))},Jb={[H.scrollTo]:Gb,[H.changeShow]:Kb,[H.changeZoomLevel]:qb},Yb=(e,t,n)=>{let r=n.filter(e=>e.type===dg.type);if(!r.length)return;let{x:i,y:a}=r.reduce((e,{payload:{movementX:t,movementY:n}})=>(e.x+=t,e.y+=n,e),{x:0,y:0});Math.abs(i)+Math.abs(a)<20||(e.push(dg({movementX:-1*i,movementY:-1*a})),t.push(dg({movementX:i,movementY:a})))},Xb=(e,t,n)=>{let r=n.filter(e=>e.type===ag.type);if(!r.length)return;let i=r.reduce((e,{payload:{value:t}})=>e+t,0);e.push(ag({value:-1*i})),t.push(ag({value:i}))},Zb={[H.streamScrollTo]:Yb,[H.streamZoomLevel]:Xb},G={addTable:`table.add`,moveTable:`table.move`,moveToTable:`table.moveTo`,removeTable:`table.remove`,changeTableName:`table.changeName`,changeTableComment:`table.changeComment`,changeTableColor:`table.changeColor`,changeZIndex:`table.changeZIndex`,sortTable:`table.sort`},Qb=e=>We({id:x(),name:``,comment:``,columnIds:[],seqColumnIds:[],ui:{x:200,y:100,zIndex:2,widthName:60,widthComment:60,color:``},meta:m_()},e??{}),$b=D(G.addTable),ex=({doc:e,collections:t,lww:n},{payload:{id:r,ui:i},version:a},{clock:o})=>{let s=a??o.getVersion();j(t).collection(`tableEntities`).addOne(Qb({id:r,ui:i})).addOperator(n,s,r,()=>{B(e.tableIds)(r)||e.tableIds.push(r)})},tx=D(G.moveTable),nx=({collections:e},{payload:{ids:t,movementX:n,movementY:r}})=>{let i=j(e).collection(`tableEntities`);for(let e of t)i.getOrCreate(e,e=>Qb({id:e}));i.updateMany(t,e=>{e.ui.x=Ue(e.ui.x+n,4),e.ui.y=Ue(e.ui.y+r,4)})},rx=D(G.moveToTable),ix=({collections:e},{payload:{id:t,x:n,y:r}})=>{let i=j(e).collection(`tableEntities`);i.getOrCreate(t,e=>Qb({id:e})),i.updateOne(t,e=>{e.ui.x=n,e.ui.y=r})},ax=D(G.removeTable),ox=({doc:e,collections:t,lww:n},{payload:{id:r},version:i},{clock:a})=>{let o=i??a.getVersion();j(t).collection(`tableEntities`).removeOperator(n,o,r,()=>{let t=e.tableIds.indexOf(r);t!==-1&&e.tableIds.splice(t,1)})},sx=D(G.changeTableName),cx=({collections:e,lww:t},{payload:{id:n,value:r},version:i},{toWidth:a,clock:o})=>{let s=i??o.getVersion(),c=j(e).collection(`tableEntities`);c.getOrCreate(n,e=>Qb({id:e})),c.replaceOperator(t,s,n,`name`,()=>{c.updateOne(n,e=>{e.name=r,e.ui.widthName=V(a(r))})})},lx=D(G.changeTableComment),ux=({collections:e,lww:t},{payload:{id:n,value:r},version:i},{toWidth:a,clock:o})=>{let s=i??o.getVersion(),c=j(e).collection(`tableEntities`);c.getOrCreate(n,e=>Qb({id:e})),c.replaceOperator(t,s,n,`comment`,()=>{c.updateOne(n,e=>{e.comment=r,e.ui.widthComment=V(a(r))})})},dx=D(G.changeTableColor),fx=({collections:e,lww:t},{payload:{id:n,color:r},version:i},{clock:a})=>{let o=i??a.getVersion(),s=j(e).collection(`tableEntities`);s.getOrCreate(n,e=>Qb({id:e})),s.replaceOperator(t,o,n,`ui.color`,()=>{s.updateOne(n,e=>{e.ui.color=r})})},px=D(G.changeZIndex),mx=({collections:e},{payload:{id:t,zIndex:n}})=>{let r=j(e).collection(`tableEntities`);r.getOrCreate(t,e=>Qb({id:e})),r.updateOne(t,e=>{e.ui.zIndex=n})},hx=D(G.sortTable),gx=e=>{let{doc:t,settings:n,collections:r}=e,i=n.width,a=j(r).collection(`tableEntities`).selectByIds(t.tableIds);a.sort((e,t)=>e.columnIds.length-t.columnIds.length);let o=50,s=50,c=50;a.forEach(t=>{let n=Oh(t,e).width+80,r=Mh(t)+80;o+n>i&&(s+=c,c=0,o=50),c<r&&(c=r),t.ui.y=s,t.ui.x=o,o+=n})},_x={[G.addTable]:ex,[G.moveTable]:nx,[G.moveToTable]:ix,[G.removeTable]:ox,[G.changeTableName]:cx,[G.changeTableComment]:ux,[G.changeTableColor]:fx,[G.changeZIndex]:mx,[G.sortTable]:gx},vx={addTableAction:$b,moveTableAction:tx,moveToTableAction:rx,removeTableAction:ax,changeTableNameAction:sx,changeTableCommentAction:lx,changeTableColorAction:dx,changeZIndexAction:px,sortTableAction:hx},yx=(e,{payload:{id:t}})=>{e.push(ax({id:t}))},bx=(e,{payload:{id:t}},{collections:n})=>{let r=j(n).collection(`tableEntities`).selectById(t);r&&e.push($b({id:r.id,ui:ve(r.ui,[`x`,`y`,`zIndex`])}))},xx=(e,{payload:{id:t}},{collections:n})=>{let r=j(n).collection(`tableEntities`).selectById(t);r&&e.push(sx({id:t,value:r.name}))},Sx=(e,{payload:{id:t}},{collections:n})=>{let r=j(n).collection(`tableEntities`).selectById(t);r&&e.push(lx({id:t,value:r.comment}))},Cx=(e,{payload:{id:t}},{collections:n})=>{let r=j(n).collection(`tableEntities`).selectById(t);r&&e.push(rx({id:t,x:r.ui.x,y:r.ui.y}))},wx=()=>{},Tx={[G.addTable]:yx,[G.removeTable]:bx,[G.changeTableName]:xx,[G.changeTableComment]:Sx,[G.moveToTable]:Cx,[G.sortTable]:wx},Ex=(e,t,n)=>{let r=n.filter(e=>e.type===tx.type);if(!r.length)return;let i=ce(r,e=>e.payload.ids.join(`,`));for(let[,n]of Object.entries(i)){let{payload:{ids:r}}=le(n),{x:i,y:a}=n.reduce((e,{payload:{movementX:t,movementY:n}})=>(e.x+=t,e.y+=n,e),{x:0,y:0});Math.abs(i)+Math.abs(a)<20||(e.push(tx({ids:r,movementX:-1*i,movementY:-1*a})),t.push(tx({ids:r,movementX:i,movementY:a})))}},Dx=(e,t,n)=>{let r=n.filter(({type:e})=>e===dx.type);if(!r.length)return;let i=ce(r,e=>e.payload.id);for(let[n,r]of Object.entries(i)){let i=le(r),a=me(r);e.push(dx({id:n,color:i.payload.prevColor,prevColor:a.payload.color})),t.push(dx({id:n,color:a.payload.color,prevColor:i.payload.prevColor}))}},Ox={[G.moveTable]:Ex,[G.changeTableColor]:Dx},K={addColumn:`column.add`,removeColumn:`column.remove`,changeColumnName:`column.changeName`,changeColumnComment:`column.changeComment`,changeColumnDataType:`column.changeDataType`,changeColumnDefault:`column.changeDefault`,changeColumnAutoIncrement:`column.changeAutoIncrement`,changeColumnPrimaryKey:`column.changePrimaryKey`,changeColumnUnique:`column.changeUnique`,changeColumnNotNull:`column.changeNotNull`,moveColumn:`column.move`},kx=e=>We({id:x(),tableId:``,name:``,comment:``,dataType:``,default:``,options:0,ui:{keys:0,widthName:60,widthComment:60,widthDataType:60,widthDefault:60},meta:m_()},e??{}),Ax=D(K.addColumn),jx=({collections:e,lww:t},{payload:{id:n,tableId:r},version:i},{clock:a})=>{let o=i??a.getVersion(),s=j(e).collection(`tableEntities`),c=s.getOrCreate(r,e=>Qb({id:e}));j(e).collection(`tableColumnEntities`).addOne(kx({id:n,tableId:r})).addOperator(t,o,n,()=>{B(c.columnIds)(n)||s.updateOne(r,e=>{By(e.columnIds,e.seqColumnIds,n)})})},Mx=D(K.removeColumn),Nx=({collections:e,lww:t},{payload:{id:n,tableId:r},version:i},{clock:a})=>{let o=i??a.getVersion(),s=j(e).collection(`tableEntities`),c=s.getOrCreate(r,e=>Qb({id:e}));j(e).collection(`tableColumnEntities`).removeOperator(t,o,n,()=>{let e=c.columnIds.indexOf(n);e!==-1&&s.updateOne(r,t=>{t.columnIds.splice(e,1)})})},Px=D(K.changeColumnName),Fx=({collections:e,lww:t},{payload:{id:n,value:r},version:i},{toWidth:a,clock:o})=>{let s=i??o.getVersion(),c=j(e).collection(`tableColumnEntities`);c.getOrCreate(n,e=>kx({id:e})),c.replaceOperator(t,s,n,`name`,()=>{c.updateOne(n,e=>{e.name=r,e.ui.widthName=V(a(r))})})},Ix=D(K.changeColumnComment),Lx=({collections:e,lww:t},{payload:{id:n,value:r},version:i},{toWidth:a,clock:o})=>{let s=i??o.getVersion(),c=j(e).collection(`tableColumnEntities`);c.getOrCreate(n,e=>kx({id:e})),c.replaceOperator(t,s,n,`comment`,()=>{c.updateOne(n,e=>{e.comment=r,e.ui.widthComment=V(a(r))})})},Rx=D(K.changeColumnDataType),zx=({collections:e,lww:t},{payload:{id:n,value:r},version:i},{toWidth:a,clock:o})=>{let s=i??o.getVersion(),c=j(e).collection(`tableColumnEntities`);c.getOrCreate(n,e=>kx({id:e})),c.replaceOperator(t,s,n,`dataType`,()=>{c.updateOne(n,e=>{e.dataType=r,e.ui.widthDataType=V(a(r))})})},Bx=D(K.changeColumnDefault),Vx=({collections:e,lww:t},{payload:{id:n,value:r},version:i},{toWidth:a,clock:o})=>{let s=i??o.getVersion(),c=j(e).collection(`tableColumnEntities`);c.getOrCreate(n,e=>kx({id:e})),c.replaceOperator(t,s,n,`default`,()=>{c.updateOne(n,e=>{e.default=r,e.ui.widthDefault=V(a(r))})})},Hx=D(K.changeColumnAutoIncrement),Ux=({collections:e,lww:t},{payload:{id:n,value:r},version:i},{clock:a})=>{let o=i??a.getVersion(),s=j(e).collection(`tableColumnEntities`);s.getOrCreate(n,e=>kx({id:e})),s.replaceOperator(t,o,n,`options(autoIncrement)`,()=>{s.updateOne(n,e=>{e.options=r?e.options|L.autoIncrement:e.options&~L.autoIncrement})})},Wx=D(K.changeColumnPrimaryKey),Gx=({collections:e,lww:t},{payload:{id:n,value:r},version:i},{clock:a})=>{let o=i??a.getVersion(),s=j(e).collection(`tableColumnEntities`);s.getOrCreate(n,e=>kx({id:e})),s.replaceOperator(t,o,n,`options(primaryKey)`,()=>{s.updateOne(n,e=>{e.options=r?e.options|L.primaryKey:e.options&~L.primaryKey,e.ui.keys=r?e.ui.keys|R.primaryKey:e.ui.keys&~R.primaryKey})})},Kx=D(K.changeColumnUnique),qx=({collections:e,lww:t},{payload:{id:n,value:r},version:i},{clock:a})=>{let o=i??a.getVersion(),s=j(e).collection(`tableColumnEntities`);s.getOrCreate(n,e=>kx({id:e})),s.replaceOperator(t,o,n,`options(unique)`,()=>{s.updateOne(n,e=>{e.options=r?e.options|L.unique:e.options&~L.unique})})},Jx=D(K.changeColumnNotNull),Yx=({collections:e,lww:t},{payload:{id:n,value:r},version:i},{clock:a})=>{let o=i??a.getVersion(),s=j(e).collection(`tableColumnEntities`);s.getOrCreate(n,e=>kx({id:e})),s.replaceOperator(t,o,n,`options(notNull)`,()=>{s.updateOne(n,e=>{e.options=r?e.options|L.notNull:e.options&~L.notNull})})},Xx=D(K.moveColumn),Zx=({collections:e},{payload:{id:t,tableId:n,targetId:r}})=>{if(t===r)return;let i=j(e).collection(`tableEntities`),a=i.getOrCreate(n,e=>Qb({id:e})),o=a.columnIds.indexOf(t);if(o===-1)return;let s=a.columnIds.indexOf(r);s!==-1&&i.updateOne(n,e=>{e.columnIds.splice(o,1),e.columnIds.splice(s,0,t);let n=e.seqColumnIds.indexOf(t),i=e.seqColumnIds.indexOf(r);n!==-1&&i!==-1&&(e.seqColumnIds.splice(n,1),e.seqColumnIds.splice(i,0,t))})},Qx={[K.addColumn]:jx,[K.removeColumn]:Nx,[K.changeColumnName]:Fx,[K.changeColumnComment]:Lx,[K.changeColumnDataType]:zx,[K.changeColumnDefault]:Vx,[K.changeColumnAutoIncrement]:Ux,[K.changeColumnPrimaryKey]:Gx,[K.changeColumnUnique]:qx,[K.changeColumnNotNull]:Yx,[K.moveColumn]:Zx},$x={addColumnAction:Ax,removeColumnAction:Mx,changeColumnNameAction:Px,changeColumnCommentAction:Ix,changeColumnDataTypeAction:Rx,changeColumnDefaultAction:Bx,changeColumnAutoIncrementAction:Hx,changeColumnPrimaryKeyAction:Wx,changeColumnUniqueAction:Kx,changeColumnNotNullAction:Jx,moveColumnAction:Xx},eS=(e,{payload:{id:t,tableId:n}})=>{e.push(Mx({id:t,tableId:n}))},tS=(e,{payload:{id:t,tableId:n}})=>{e.push(Ax({id:t,tableId:n}))},nS=(e,{payload:{id:t,tableId:n}},{collections:r})=>{let i=j(r).collection(`tableColumnEntities`).selectById(t);i&&e.push(Px({id:t,tableId:n,value:i.name}))},rS=(e,{payload:{id:t,tableId:n}},{collections:r})=>{let i=j(r).collection(`tableColumnEntities`).selectById(t);i&&e.push(Rx({id:t,tableId:n,value:i.dataType}))},iS=(e,{payload:{id:t,tableId:n}},{collections:r})=>{let i=j(r).collection(`tableColumnEntities`).selectById(t);i&&e.push(Bx({id:t,tableId:n,value:i.default}))},aS=(e,{payload:{id:t,tableId:n}},{collections:r})=>{let i=j(r).collection(`tableColumnEntities`).selectById(t);i&&e.push(Ix({id:t,tableId:n,value:i.comment}))},oS=(e,{payload:{id:t,tableId:n,value:r}},{collections:i})=>{j(i).collection(`tableColumnEntities`).selectById(t)&&e.push(Hx({id:t,tableId:n,value:!r}))},sS=(e,{payload:{id:t,tableId:n,value:r}},{collections:i})=>{j(i).collection(`tableColumnEntities`).selectById(t)&&e.push(Jx({id:t,tableId:n,value:!r}))},cS=(e,{payload:{id:t,tableId:n,value:r}},{collections:i})=>{j(i).collection(`tableColumnEntities`).selectById(t)&&e.push(Wx({id:t,tableId:n,value:!r}))},lS=(e,{payload:{id:t,tableId:n,value:r}},{collections:i})=>{j(i).collection(`tableColumnEntities`).selectById(t)&&e.push(Kx({id:t,tableId:n,value:!r}))},uS=(e,{payload:{id:t,tableId:n,targetId:r}},{collections:i})=>{let a=j(i).collection(`tableEntities`).selectById(n);if(!a)return;let o=a.columnIds.indexOf(t);if(o===-1)return;let s=a.columnIds.indexOf(r);if(s===-1)return;let c=o<s?o+1:o-1,l=a.columnIds[c];e.push(Xx({id:t,tableId:n,targetId:l}))},dS={[K.addColumn]:eS,[K.removeColumn]:tS,[K.changeColumnName]:nS,[K.changeColumnDataType]:rS,[K.changeColumnDefault]:iS,[K.changeColumnComment]:aS,[K.changeColumnAutoIncrement]:oS,[K.changeColumnNotNull]:sS,[K.changeColumnPrimaryKey]:cS,[K.changeColumnUnique]:lS,[K.moveColumn]:uS};function fS(e,...t){try{return e?.(...t)}catch(e){console.error(e)}}const pS={...Tx,...dS,...Wb,...Eb,...Jb,...by,...Ly,...tb},mS={...Ox,...Ab,...Zb};function hS(e,t,n){let r=[],i=[];for(let t of n){let n=pS[t.type];n&&(n(r,t,e.state),i.push(oe(t)))}for(let e of Object.keys(mS))mS[e](r,i,n);!r.length||!i.length||t.push({undo:(e,t)=>{e(r.map(gS(t())))},redo:(e,t)=>{e(i.map(gS(t())))}})}function gS(e){return t=>({...oe(t),version:e})}const _S=(e,t)=>n=>{fS(hS,e,t,n)},vS=()=>function*({settings:e,doc:{tableIds:t,memoIds:n},collections:r}){let i=j(r).collection(`tableEntities`).selectByIds(t),a=j(r).collection(`memoEntities`).selectByIds(n),o=p_(e,i,a),s=x();yield dk(),yield $_({[s]:s_.memo}),yield ib({id:s,ui:{...o,zIndex:d_(i,a)}})},yS=e=>function*({editor:{selectedMap:t}}){if(e){yield ub({id:e});return}let n=Object.entries(t).filter(([,e])=>e===s_.memo);for(let[e]of n)yield ub({id:e})},bS=(e,t)=>function*({doc:{tableIds:n,memoIds:r},collections:i}){let a=j(i).collection(`tableEntities`).selectByIds(n),o=j(i).collection(`memoEntities`).selectByIds(r);t||(yield dk()),yield $_({[e]:s_.memo}),yield vb({id:e,zIndex:d_(a,o)})},xS={addMemoAction$:vS,removeMemoAction$:yS,selectMemoAction$:bS};B(Object.values({tables:`tables`,columns:`columns`}));const SS=({x:e,y:t})=>`${e},${t}`,CS=(e,t)=>e<t?-1:+(e>t),wS=e=>e.ui.zIndex??0;function TS({entities:e,offset:t,escapeCollision:n,settings:r,tables:i,memos:a,findSource:o}){let s=new Map;if(e.length===0)return s;let c=new Set([...i,...a].map(({ui:e})=>SS(e))),l=new Map,u=[];for(let n of e){let e=o(n.sourceId);e?l.set(n.sourceId,{x:e.ui.x+t.x,y:e.ui.y+t.y}):u.push(n)}if(u.length!==0){let e=p_(r,i,a),t=u.reduce((e,t)=>t.ui.x<e.ui.x||t.ui.x===e.ui.x&&t.ui.y<e.ui.y?t:e);for(let n of u)l.set(n.sourceId,{x:e.x+(n.ui.x-t.ui.x),y:e.y+(n.ui.y-t.ui.y)})}if(n){let t=[...e].sort((e,t)=>CS(e.sourceId,t.sourceId));for(let{sourceId:e}of t){let t=l.get(e);if(t){for(;c.has(SS(t));)t.x+=50,t.y+=50;c.add(SS(t))}}}let d=d_(i,a);return[...e].sort((e,t)=>wS(e)-wS(t)||CS(e.sourceId,t.sourceId)).forEach(({sourceId:e},t)=>{let n=l.get(e);n&&s.set(e,{x:n.x,y:n.y,zIndex:d+t})}),s}B(Object.values({columnName:`columnName`,columnDataType:`columnDataType`,columnNotNull:`columnNotNull`,columnUnique:`columnUnique`,columnAutoIncrement:`columnAutoIncrement`,columnDefault:`columnDefault`,columnComment:`columnComment`}));function ES(e,t){return t.filter(t=>{switch(t){case P.columnName:return!0;case P.columnDataType:return z(e,N.columnDataType);case P.columnDefault:return z(e,N.columnDefault);case P.columnComment:return z(e,N.columnComment);case P.columnAutoIncrement:return z(e,N.columnAutoIncrement);case P.columnUnique:return z(e,N.columnUnique);case P.columnNotNull:return z(e,N.columnNotNull);default:return!1}})}const DS=()=>function*({settings:e,doc:{tableIds:t,memoIds:n},collections:r}){let i=j(r).collection(`tableEntities`).selectByIds(t),a=j(r).collection(`memoEntities`).selectByIds(n),o=p_(e,i,a),s=x();yield Z_(),yield $_({[s]:s_.table}),yield $b({id:s,ui:{...o,zIndex:d_(i,a)}}),yield fv({tableId:s})},OS=e=>function*({doc:{relationshipIds:t,indexIds:n},editor:{selectedMap:r},collections:i}){let a=j(i).collection(`relationshipEntities`).selectByIds(t),o=j(i).collection(`indexEntities`).selectByIds(n);if(e){let t=a.filter(({start:t,end:n})=>t.tableId===e||n.tableId===e),n=o.filter(({tableId:t})=>t===e);for(let{id:e}of n)yield Ty({id:e});for(let{id:e}of t)yield Fb({id:e});yield ax({id:e});return}let s=Object.entries(r).filter(([,e])=>e===s_.table).map(([e])=>e),c=B(s),l=a.filter(({start:e,end:t})=>c(e.tableId)||c(t.tableId)),u=o.filter(({tableId:e})=>c(e));for(let{id:e}of u)yield Ty({id:e});for(let{id:e}of l)yield Fb({id:e});for(let e of s)yield ax({id:e})},kS=(e,t)=>function*({doc:{tableIds:n,memoIds:r},collections:i,editor:{drawRelationship:a}}){let o=j(i).collection(`tableEntities`),s=o.selectByIds(n),c=j(i).collection(`memoEntities`).selectByIds(r);if(t||(yield Z_()),yield $_({[e]:s_.table}),yield px({id:e,zIndex:d_(s,c)}),yield fv({tableId:e}),a){if(a.start){let t=o.selectById(a.start.tableId),n=o.selectById(e);if(!t||!n)return;let r=j(i).collection(`tableColumnEntities`).selectByIds(t.columnIds).filter(({options:e})=>z(e,L.primaryKey));if(!r.length)return;let s=r.map(()=>x());for(let e=0;e<r.length;e++){let t=r[e],i={id:s[e],tableId:n.id};yield[Ax(i),Jx({...i,value:!0}),Px({...i,value:t.name}),Rx({...i,value:t.dataType}),Bx({...i,value:t.default}),Ix({...i,value:t.comment})]}yield Nb({id:x(),relationshipType:a.relationshipType,start:{tableId:t.id,columnIds:r.map(({id:e})=>e)},end:{tableId:n.id,columnIds:s}}),yield Iv()}else yield mk(e)}},AS={addTableAction$:DS,removeTableAction$:OS,selectTableAction$:kS,pasteTableAction$:e=>function*({editor:{selectedMap:t,focusTable:n},settings:{show:r,columnOrder:i},collections:a}){let o=n&&!L_(n.focusType),s=Object.entries(t).filter(([,e])=>e===s_.table).map(([e])=>e).filter(e=>!o||e!==n?.tableId);for(let t of s)for(let n of e){let e={id:x(),tableId:t};yield[Ax(e),Px({...e,value:n.name}),Rx({...e,value:n.dataType}),Bx({...e,value:n.default}),Ix({...e,value:n.comment}),Jx({...e,value:z(n.options,L.notNull)}),Kx({...e,value:z(n.options,L.unique)}),Hx({...e,value:z(n.options,L.autoIncrement)})]}if(!n||!o)return;let c=j(a).collection(`tableEntities`).selectById(n.tableId);if(!c)return;let l=c.columnIds.filter(B(n.selectColumnIds));if(l.length===0)return;let u=c.columnIds.slice(c.columnIds.indexOf(l[l.length-1])+1),d=[...l,...u],f=ES(r,i);yield gv();for(let t=0;t<d.length;t++){let r=d[t],i=e[t];if(!i)break;let a={id:r,tableId:c.id};yield[...f.map(e=>{switch(e){case P.columnName:return Px({...a,value:i.name});case P.columnDataType:return Rx({...a,value:i.dataType});case P.columnDefault:return Bx({...a,value:i.default});case P.columnComment:return Ix({...a,value:i.comment});case P.columnAutoIncrement:return Hx({...a,value:z(i.options,L.autoIncrement)});case P.columnUnique:return Kx({...a,value:z(i.options,L.unique)});case P.columnNotNull:return Jx({...a,value:z(i.options,L.notNull)});default:return null}}).filter(Boolean),mv({tableId:c.id,columnId:r,focusType:n.focusType,$mod:!0,shiftKey:!1})]}let p=e.slice(d.length);for(let e of p){let t=x(),r={id:t,tableId:c.id};yield[Ax(r),...f.map(t=>{switch(t){case P.columnName:return Px({...r,value:e.name});case P.columnDataType:return Rx({...r,value:e.dataType});case P.columnDefault:return Bx({...r,value:e.default});case P.columnComment:return Ix({...r,value:e.comment});case P.columnAutoIncrement:return Hx({...r,value:z(e.options,L.autoIncrement)});case P.columnUnique:return Kx({...r,value:z(e.options,L.unique)});case P.columnNotNull:return Jx({...r,value:z(e.options,L.notNull)});default:return null}}).filter(Boolean),mv({tableId:c.id,columnId:t,focusType:n.focusType,$mod:!0,shiftKey:!1})]}}};function jS(e,t,n,r=[]){let{doc:{relationshipIds:i},collections:a}=t,o=e.pop();return o&&(r.some(({id:e})=>e===o.id)||(r.push(o),j(a).collection(`relationshipEntities`).selectByIds(i).forEach(({start:t,end:r})=>{let i=t.columnIds.indexOf(o.id);if(i!==-1){let t=r.columnIds[i];e.push({id:t,tableId:r.tableId,value:n.value})}else{let i=r.columnIds.indexOf(o.id);if(i!==-1){let r=t.columnIds[i];e.push({id:r,tableId:t.tableId,value:n.value})}}})),jS(e,t,n,r)),r}const MS=B([W.columnNotNull,W.columnUnique,W.columnAutoIncrement]),NS=B([W.columnName,W.columnDataType,W.columnDefault,W.columnComment]),PS=e=>function*({editor:{selectedMap:t}}){if(e){let t=x();yield Ax({id:t,tableId:e}),yield mv({tableId:e,columnId:t,focusType:W.columnName,$mod:!1,shiftKey:!1});return}let n=Object.entries(t).filter(([,e])=>e===s_.table).map(([e])=>({tableId:e,id:x()}));for(let e of n)yield Ax(e);let r=me(n);r&&(yield mv({tableId:r.tableId,columnId:r.id,focusType:W.columnName,$mod:!1,shiftKey:!1}))},FS=(e,t)=>function*(n){let{doc:{relationshipIds:r,indexIds:i},editor:{focusTable:a},collections:o}=n;if(a?.columnId){let e=N_(n,t);e?yield mv({tableId:a.tableId,columnId:e,focusType:a.focusType,$mod:!1,shiftKey:!1}):yield fv({tableId:a.tableId,focusType:W.tableName})}let s=B(t),c=j(o).collection(`relationshipEntities`).selectByIds(r).filter(({start:t,end:n})=>t.tableId===e&&t.columnIds.some(s)||n.tableId===e&&n.columnIds.some(s)),l=j(o).collection(`indexEntities`).selectByIds(i).filter(t=>t.tableId===e&&j(o).collection(`indexColumnEntities`).selectByIds(t.indexColumnIds).map(({columnId:e})=>e).some(s));for(let{id:e}of l)yield Ty({id:e});for(let{id:e}of c)yield Fb({id:e});for(let n of t)yield Mx({id:n,tableId:e})},IS=(e,t,n)=>function*({collections:r}){if(!MS(e))return;let i=j(r).collection(`tableColumnEntities`).selectById(n);if(i)switch(e){case W.columnNotNull:yield Jx({id:n,tableId:t,value:!z(i.options,L.notNull)});break;case W.columnUnique:yield Kx({id:n,tableId:t,value:!z(i.options,L.unique)});break;case W.columnAutoIncrement:yield Hx({id:n,tableId:t,value:!z(i.options,L.autoIncrement)})}},LS=e=>function*(t){let{settings:{relationshipDataTypeSync:n}}=t,r=[e];n&&(r=jS([e],t,e)),yield r.map(Rx)},RS={addColumnAction$:PS,removeColumnAction$:FS,toggleColumnValueAction$:IS,changeColumnDataTypeAction$:LS,changeColumnValueAction$:(e,t,n,r)=>function*({collections:i}){if(!NS(e)||!j(i).collection(`tableColumnEntities`).selectById(n))return;let a={id:n,tableId:t,value:r};switch(e){case W.columnName:yield Px(a);break;case W.columnDataType:yield LS(a);break;case W.columnDefault:yield Bx(a);break;case W.columnComment:yield Ix(a)}},changeColumnPrimaryKeyAction$:(e,t)=>function*({collections:n}){let r=j(n).collection(`tableColumnEntities`).selectById(t);if(!r)return;let i=z(r.options,L.primaryKey);yield Wx({tableId:e,id:t,value:!i})}};function zS(e,t){return!(e.x>t.x+t.w||e.x+e.w<t.x||e.y>t.y+t.h||e.y+e.h<t.y)}function BS(e){return e.filter(({options:e})=>z(e,L.primaryKey))}function VS(e,t,n,r=1){let i=!0;for(let r of e)if(n===r.name&&r.id!==t&&n!==``){i=!1;break}return i?n:VS(e,t,n.replace(/[0-9]/g,``)+r,r+1)}function HS(e,t){for(let n of e)if(n.name.toUpperCase()===t.toUpperCase())return n;return null}const US={[F.MariaDB]:`VARCHAR(255)`,[F.MSSQL]:`varchar(255)`,[F.MySQL]:`VARCHAR(255)`,[F.Oracle]:`VARCHAR2(255)`,[F.PostgreSQL]:`varchar(255)`,[F.SQLite]:`TEXT`,[F.Databricks]:`STRING`,[F.Snowflake]:`VARCHAR(255)`};function WS(e,t,n,r=[]){let i=qS(e,n,r);return i.members?KS(i.members,t)??US[t]??i.typeName:i.typeName}function GS(e,t,n,r=[]){let{members:i}=qS(e,t,r);return!i||KS(i,n)!==void 0?``:` ${e}: ${i.join(` | `)}`}function KS(e,t){if(t===F.MySQL||t===F.MariaDB)return`ENUM(${e.map(e=>`'${e.replace(/'/g,`''`)}'`).join(`,`)})`}function qS(e,t,n){if(n.length)return{typeName:e,members:n};let r=new Set,i=e;for(;!r.has(i);){r.add(i);let e=JS(i,t);if(!e)break;if(e.values.length)return{typeName:i,members:e.values};if(!e.alias)break;i=e.alias}return{typeName:i,members:null}}function JS(e,t){let n=t.types[e];if(n)return n;let r=Object.keys(t.types).find(t=>t.slice(t.lastIndexOf(`.`)+1)===e);return r===void 0?void 0:t.types[r]}const YS={database:``,catalog:``,schema:``},XS=$S(YS);function ZS(e,t,n){let r=Bp({}),i=QS(e.entities),a=e.entities.map(a=>nC(r,t,e,n,a,i(a)));return aC(r,t,a,e,tC(e.entities,a)),uC(r,a),r}function QS(e){let t=new Set(e.map(e=>$S(e.namespace)));return e=>{let n=$S(e.namespace);return t.size>1&&n!==XS?`${eC(e.namespace)}_${e.name}`:e.name}}function $S({database:e,catalog:t,schema:n}){return`${e}.${t}.${n}`}function eC({database:e,catalog:t,schema:n}){return[e,t,n].filter(e=>e!==``).join(`_`)}function tC(e,t){let n=new Map,r=(e,t)=>{let r=e.toLowerCase();n.has(r)||n.set(r,t)};return e.forEach((e,n)=>{let i=t[n],a=$S(e.namespace);r(`${a}.${e.name}`,i),r(e.name,i),e.alias&&(r(e.alias,i),r(`${a}.${e.alias}`,i))}),e=>{let t=$S(e.namespace);return n.get(`${t}.${e.entityName}`.toLowerCase())??(t===XS?n.get(e.entityName.toLowerCase())??null:null)}}function nC({doc:e,collections:t},n,r,i,a,o){let{toWidth:s}=n,c=Ch(o),l=Ch(a.comment),u=Qb({name:c,comment:l,ui:{widthName:V(s(c)),widthComment:V(s(l))}}),d={source:a,table:u,columns:[]};return a.attributes.forEach(e=>{let n=Ch(e.path),a=WS(e.typeName,i,r,e.enumValues),o=`${Ch(e.comment)}${GS(e.typeName,r,i,e.enumValues)}`.trim(),c=Ch(e.default);iC(t,d,kx({tableId:u.id,name:n,comment:o,dataType:a,default:c,options:(e.autoIncrement?L.autoIncrement:0)|(e.primaryKey?L.primaryKey:0)|(rC(e)?L.unique:0)|(e.notNull?L.notNull:0),ui:{widthName:V(s(n)),widthComment:V(s(o)),widthDataType:V(s(a)),widthDefault:V(s(c)),keys:e.primaryKey?R.primaryKey:0}}))}),e.tableIds.push(u.id),j(t).collection(`tableEntities`).setOne(u),d}function rC(e){return e.indexes.some(e=>e.unique&&e.name===``)}function iC(e,t,n){t.table.columnIds.push(n.id),t.table.seqColumnIds.push(n.id),t.columns.push(n),j(e).collection(`tableColumnEntities`).setOne(n)}function aC(e,t,n,r,i){let a=new Set;r.relations.forEach(r=>{let o=i(r.src),s=i(r.ref);if(!o||!s)return;let c=oC(o,r.src),l=oC(s,r.ref);if(c.length!==0&&l.length!==0&&c.length===l.length){if(r.srcCardinality===`n`&&r.refCardinality===`n`){cC(e,t,n,o,s);return}sC(e,t,a,{parent:s,parentColumns:l,child:o,childColumns:c,toMany:r.refCardinality===`n`})}})}function oC(e,t){if(t.attributePaths.length===0)return BS(e.columns);let n=[];for(let r of t.attributePaths){let t=HS(e.columns,r);if(!t)return[];n.push(t)}return n}function sC({doc:e,collections:t},{toWidth:n},r,{parent:i,parentColumns:a,child:o,childColumns:s,toMany:c}){let l=`${i.table.id}:${o.table.id}:${s.map(e=>e.id).join(`,`)}`;if(r.has(l))return;r.add(l);let u=s.every(e=>z(e.options,L.notNull));s.forEach((e,t)=>{if(e.dataType===``){let{dataType:r}=a[t];e.dataType=r,e.ui.widthDataType=V(n(r))}e.ui.keys=z(e.ui.keys,R.primaryKey)?e.ui.keys|R.foreignKey:R.foreignKey});let d=Mb({identification:s.every(e=>z(e.ui.keys,R.primaryKey)&&z(e.ui.keys,R.foreignKey)),relationshipType:c?u?Ym.OneN:Ym.ZeroN:u?Ym.OneOnly:Ym.ZeroOne,start:{tableId:i.table.id,columnIds:a.map(e=>e.id)},end:{tableId:o.table.id,columnIds:s.map(e=>e.id)}});e.relationshipIds.push(d.id),j(t).collection(`relationshipEntities`).setOne(d)}function cC(e,t,n,r,i){let{doc:a,collections:o}=e,{toWidth:s}=t,c=BS(r.columns),l=BS(i.columns);if(!c.length||!l.length)return;let u=VS(n.map(e=>e.table),``,`${r.table.name}_${i.table.name}`),d=`Junction table inferred from ${r.table.name} <-> ${i.table.name}`,f=Qb({name:u,comment:d,ui:{widthName:V(s(u)),widthComment:V(s(d))}}),p={source:{namespace:YS,name:u,alias:``,comment:d,attributes:[]},table:f,columns:[]};a.tableIds.push(f.id),j(o).collection(`tableEntities`).setOne(f),n.push(p),lC(e,t,p,r,c),lC(e,t,p,i,l)}function lC(e,{toWidth:t},n,r,i){let{doc:a,collections:o}=e,s=i.map(e=>{let i=VS(n.columns,``,`${r.table.name}_${e.name}`),{dataType:a}=e,s=kx({tableId:n.table.id,name:i,dataType:a,options:L.primaryKey|L.notNull,ui:{keys:R.primaryKey|R.foreignKey,widthName:V(t(i)),widthDataType:V(t(a))}});return iC(o,n,s),s}),c=Mb({identification:!0,relationshipType:Ym.ZeroN,start:{tableId:r.table.id,columnIds:i.map(e=>e.id)},end:{tableId:n.table.id,columnIds:s.map(e=>e.id)}});a.relationshipIds.push(c.id),j(o).collection(`relationshipEntities`).setOne(c)}function uC({doc:e,collections:t},n){n.forEach(({source:n,table:r,columns:i})=>{let a=new Map;n.attributes.forEach((e,t)=>{let n=i[t];n&&e.indexes.forEach((e,i)=>{if(e.unique&&e.name===``)return;let o=e.name===``?`b:${t}:${i}`:`n:${e.name}`,s=a.get(o)??{index:Sy({name:Ch(e.name),tableId:r.id}),indexColumns:[]};s.index.unique=s.index.unique||e.unique,s.indexColumns.push(zy({indexId:s.index.id,columnId:n.id,orderType:Zm.ASC})),a.set(o,s)})}),a.forEach(({index:n,indexColumns:r})=>{r.forEach(e=>{n.indexColumnIds.push(e.id),n.seqIndexColumnIds.push(e.id),j(t).collection(`indexColumnEntities`).setOne(e)}),e.indexIds.push(n.id),j(t).collection(`indexEntities`).setOne(n)})})}const q={identifier:1,quoted:2,string:3,expression:4,number:5,punctuation:6,doc:7,comment:8,newline:9},dC=/[ \t\f\v]/,fC=/[0-9]/,pC=/[A-Za-z_\u0080-\uffff]/,mC=/[0-9A-Za-z_#\u0080-\uffff]/,hC=/^[ \t]*/,gC=/\\#/g,_C={n:`
|
|
2
|
-
`};function
|
|
1
|
+
import*as e from"comlink";import{CHARSET as t,DECLARATION as n,IMPORT as r,LAYER as i,NAMESPACE as a,RULESET as o,alloc as s,dealloc as c,parse as l}from"stylis";import{Container as u}from"konva/lib/Container";import{Group as d}from"konva/lib/Group";import{Layer as f}from"konva/lib/Layer";import{Node as p}from"konva/lib/Node";import{Circle as m}from"konva/lib/shapes/Circle";import{Line as h}from"konva/lib/shapes/Line";import{Path as g}from"konva/lib/shapes/Path";import{Rect as _}from"konva/lib/shapes/Rect";import{Text as v}from"konva/lib/shapes/Text";import{Stage as ee}from"konva/lib/Stage";import{DD as te}from"konva/lib/DragAndDrop";import{Konva as ne}from"konva/lib/Global";import{camelCase as re,clamp as ie,cloneDeep as ae,difference as oe,groupBy as se,head as ce,isBoolean as le,isFunction as ue,isNil as y,isNotNil as b,isNumber as x,isPlainObject as de,isString as S,last as fe,lowerFirst as pe,noop as me,omit as he,pick as ge,range as _e,snakeCase as ve,uniq as ye,upperFirst as be}from"es-toolkit";import{Observable as C,Subject as xe,animationFrames as Se,asapScheduler as Ce,buffer as we,debounceTime as Te,defer as Ee,filter as De,fromEvent as Oe,groupBy as ke,map as Ae,merge as je,mergeMap as Me,observeOn as Ne,share as Pe,take as Fe,takeUntil as Ie,tap as Le,throttleTime as Re}from"rxjs";import{get as ze,isEmpty as Be,round as Ve}from"es-toolkit/compat";import{nanoid as w}from"nanoid";import He from"deepmerge";import{Kind as Ue,TokenKind as We,parse as Ge}from"graphql";import Ke,{getAccurateAgent as qe}from"@egjs/agent";import{ArrowRight as Je,Atom as Ye,Braces as Xe,Brackets as Ze,CaseSensitive as Qe,Check as $e,ChevronDown as et,ChevronRight as tt,Code as nt,Contrast as rt,Copy as it,Database as at,Diff as ot,ExternalLink as st,Eye as ct,FileDiff as lt,FileImage as ut,FileInput as dt,FileOutput as ft,Fullscreen as pt,GripVertical as mt,Hand as ht,KeyRound as gt,Maximize as _t,Minimize as vt,Minus as yt,MoonStar as bt,MousePointer2 as xt,Network as St,Palette as Ct,Plus as wt,Redo2 as Tt,RefreshCw as Et,RotateCcwClock as Dt,Search as Ot,Settings as kt,Share2 as At,Spline as jt,StickyNote as Mt,Sun as Nt,Table as Pt,Table2 as Ft,TableProperties as It,Undo2 as Lt,WandSparkles as Rt,Waypoints as zt,Workflow as Bt,X as Vt}from"lucide";import{amber as Ht,amberA as Ut,amberDark as Wt,amberDarkA as Gt,blue as Kt,blueA as qt,blueDark as Jt,blueDarkA as Yt,bronze as Xt,bronzeA as Zt,bronzeDark as Qt,bronzeDarkA as $t,brown as en,brownA as tn,brownDark as nn,brownDarkA as rn,crimson as an,crimsonA as on,crimsonDark as sn,crimsonDarkA as cn,cyan as ln,cyanA as un,cyanDark as dn,cyanDarkA as fn,gold as pn,goldA as mn,goldDark as hn,goldDarkA as gn,grass as _n,grassA as vn,grassDark as yn,grassDarkA as bn,gray as xn,grayA as Sn,grayDark as Cn,grayDarkA as wn,green as Tn,greenA as En,greenDark as Dn,greenDarkA as On,indigo as kn,indigoA as An,indigoDark as jn,indigoDarkA as Mn,iris as Nn,irisA as Pn,irisDark as Fn,irisDarkA as In,jade as Ln,jadeA as Rn,jadeDark as zn,jadeDarkA as Bn,lime as Vn,limeA as Hn,limeDark as Un,limeDarkA as Wn,mauve as Gn,mauveA as Kn,mauveDark as qn,mauveDarkA as Jn,mint as Yn,mintA as Xn,mintDark as Zn,mintDarkA as Qn,olive as $n,oliveA as er,oliveDark as tr,oliveDarkA as nr,orange as rr,orangeA as ir,orangeDark as ar,orangeDarkA as or,pink as sr,pinkA as cr,pinkDark as lr,pinkDarkA as ur,plum as dr,plumA as fr,plumDark as pr,plumDarkA as mr,purple as hr,purpleA as gr,purpleDark as _r,purpleDarkA as vr,red as yr,redA as br,redDark as xr,redDarkA as Sr,ruby as Cr,rubyA as wr,rubyDark as Tr,rubyDarkA as Er,sage as Dr,sageA as Or,sageDark as kr,sageDarkA as Ar,sand as jr,sandA as Mr,sandDark as Nr,sandDarkA as Pr,sky as Fr,skyA as Ir,skyDark as Lr,skyDarkA as Rr,slate as zr,slateA as Br,slateDark as Vr,slateDarkA as Hr,teal as Ur,tealA as Wr,tealDark as Gr,tealDarkA as Kr,tomato as qr,tomatoA as Jr,tomatoDark as Yr,tomatoDarkA as Xr,violet as Zr,violetA as Qr,violetDark as $r,violetDarkA as ei,yellow as ti,yellowA as ni,yellowDark as ri,yellowDarkA as ii}from"@radix-ui/colors";import{layoutWithLines as ai,prepareWithSegments as oi}from"@chenglou/pretext";import{Easings as si,Tween as ci}from"konva/lib/Tween";function li(e){"@babel/helpers - typeof";return li=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},li(e)}function ui(e,t){if(li(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(li(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function di(e){var t=ui(e,`string`);return li(t)==`symbol`?t:t+``}function fi(e,t,n){return(t=di(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var pi=class extends EventTarget{constructor(...e){super(...e),fi(this,`textContent`,``)}},mi=class{};function hi(){let e=new OffscreenCanvas(1,1);return e.style??={},e}typeof document>`u`&&(Reflect.set(globalThis,`document`,{createElement:e=>e===`canvas`?hi():new pi}),Reflect.set(globalThis,`Node`,mi),Reflect.set(globalThis,`HTMLElement`,mi));function gi(e,t){return Object.freeze({key:t??Symbol(),value:e})}var _i={subscribe:`@@r-html/context-subscribe`,unsubscribe:`@@r-html/context-unsubscribe`};function vi(e,t){function n(n,r){return new CustomEvent(e,{detail:n,...t,...r})}return n.toString=()=>`${e}`,n.type=e,n}var yi=vi(_i.subscribe,{bubbles:!0,composed:!0}),bi=vi(_i.unsubscribe,{bubbles:!0,composed:!0});function xi(e,t){let n=e=>{let n=e;t.dispatchEvent(yi(n.detail))},r=e=>{let n=e;t.dispatchEvent(bi(n.detail))};return e.addEventListener(yi.type,n),e.addEventListener(bi.type,r),()=>{e.removeEventListener(yi.type,n),e.removeEventListener(bi.type,r)}}function Si(e,...t){try{return e?.(...t)}catch(e){console.error(e)}}var Ci=queueMicrotask??(e=>{Promise.resolve().then(e)}),wi=e=>t=>typeof t===e,Ti=wi(`object`),Ei=wi(`bigint`),Di=wi(`boolean`),Oi=wi(`function`),ki=wi(`number`),Ai=wi(`string`),ji=wi(`symbol`),Mi=wi(`undefined`),Ni=e=>e===null,{isArray:Pi}=Array,Fi=e=>Ti(e)&&!Ni(e)&&!Pi(e),Ii=e=>Ei(e)||Di(e)||ki(e)||Ai(e)||ji(e)||Mi(e)||Ni(e);function Li(){let e=new Set,t=t=>(e.has(t)||e.add(t),()=>{e.delete(t)});return{subscribe:t,next:t=>{e.forEach(e=>e(t))},asReadonly:()=>({subscribe:t})}}var Ri=`...`,zi=`@@r-html-${Math.random().toString().substring(2,8)}`,Bi=`${Ri}${zi}`,Vi=RegExp(`${zi}_(\\d+)_`,`g`),Hi=RegExp(`^${zi}_\\d+_$`),Ui=/^\n/,Wi=function(e){return e.attribute=`attribute`,e.boolean=`boolean`,e.event=`event`,e.property=`property`,e.spread=`spread`,e.directive=`directive`,e}({}),Gi=Symbol.for(`https://github.com/dineug/r-html#beforeMount`),Ki=Symbol.for(`https://github.com/dineug/r-html#mounted`),qi=Symbol.for(`https://github.com/dineug/r-html#unmounted`),Ji=Symbol.for(`https://github.com/dineug/r-html#beforeFirstUpdate`),Yi=Symbol.for(`https://github.com/dineug/r-html#beforeUpdate`),Xi=Symbol.for(`https://github.com/dineug/r-html#firstUpdated`),Zi=Symbol.for(`https://github.com/dineug/r-html#updated`),Qi=[Gi,Ki,qi,Ji,Yi,Xi,Zi],$i=Symbol.for(`https://github.com/dineug/r-html#Directive`),ea=Symbol.for(`https://github.com/dineug/r-html#TemplateLiterals`),ta=null;function na(e){ta=e}var ra=e=>t=>{ta&&(ta[e]??(ta[e]=[])).push(t)},ia=ra(Gi),aa=ra(Ki),oa=ra(qi);function sa(e,t){let n=Reflect.get(e,t,e);Pi(n)&&n.forEach(Si)}function ca(e){Qi.forEach(t=>Reflect.set(e,t,null,e))}function la(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}function T(e,t,n){la(e,t),t.set(e,n)}function ua(e,t,n){if(typeof e==`function`?e===t:e.has(t))return arguments.length<3?t:n;throw TypeError(`Private element is not present on this object`)}function E(e,t,n){return e.set(ua(e,t),n),n}function D(e,t){return e.get(ua(e,t))}var da=Li(),fa=e=>e,pa=e=>{var t,n;return t=new WeakMap,n=new WeakMap,class extends e{constructor(e,r,i,a){super(e,r,i,a),T(this,t,[]),T(this,n,null),this.hmr()}commit(e){let n=fa(e);super.commit(n),E(t,this,e)}hmr(){E(n,this,da.subscribe(e=>D(t,this).includes(e)&&this.commit(D(t,this))))}destroy(){D(n,this)?.call(this),super.destroy?.()}}},ma=new WeakMap,ha=new WeakMap,ga=new WeakMap,_a=new WeakMap,va=new WeakMap,ya={shallow:!1},ba=null;function xa(e){return ba=e,Si(e),ba=null,()=>Sa(e)}function Sa(e){Ia(e);let t=va.get(e);if(t)for(let[n]of t.entries())ha.get(n)?.delete(e);t&&va.delete(e)}function Ca(e){if(!ba)return;let t=ha.get(e);t?t.has(ba)||t.add(ba):ha.set(e,new Set([ba]))}function wa(e,t){if(!ba)return;let n=va.get(ba);if(n){let r=n.get(e);r?r.has(t)||r.add(t):n.set(e,new Set([t]))}else va.set(ba,new Map([[e,new Set([t])]]))}var Ta=e=>e instanceof Node||e instanceof Map||e instanceof Set||e instanceof WeakMap||e instanceof WeakSet||e instanceof RegExp||e instanceof Date||e instanceof Promise||(Pi(e)||Fi(e))&&Object.isFrozen(e);function Ea(e,t={}){let{shallow:n}=Object.assign({},ya,t),r=new Proxy(e,{get(r,i,a){let o=Reflect.get(r,i,a);return Ta(o)?o:(Ca(e),wa(e,i),!n&&(Fi(o)||Pi(o))&&!ga.has(o)?ma.has(o)?ma.get(o):Ea(o,t):o)},set(e,t,n,r){let i=Reflect.get(e,t,r),a=Reflect.set(e,t,n,r);return(!Pi(e)&&i!==n||t===`length`)&&(La(e,t),Ba(e,t)),a},deleteProperty(e,t){let n=Reflect.deleteProperty(e,t);return La(e,t),Ba(e,t),n}});return ma.set(e,r),ga.set(r,e),r}function Da(e){return(_a.get(e)??_a.set(e,Li()).get(e)).asReadonly()}var Oa=[],ka=new Map,Aa=new Map,ja=!0;function Ma(e,t,n){let r=va.get(n);if(!r)return!1;let i=r.get(e);return i?i.has(t):!1}var Na=e=>t=>{let n=ka.get(t),r=()=>{},i=n?.promise?n.promise:new Promise(e=>{r=e});if(!n){let n={type:e,promise:i,fn:t,resolve:()=>{r()}};Oa.push(n),ka.set(t,n)}return ja&&=(Ci(za),!1),i},Pa=Na(`observer`),Fa=Na(`nextTick`);function Ia(e){let t=ka.get(e);if(!t)return;let n=Oa.indexOf(t);n===-1||Oa.splice(n,1),ka.delete(e),t.resolve()}var La=(e,t)=>ha.get(e)?.forEach(n=>Ma(e,t,n)&&Pa(n));function Ra(){let e=Oa.shift();if(e){if(ka.delete(e.fn),e.type===`observer`)Sa(e.fn),xa(e.fn),e.resolve();else if(e.type===`nextTick`){let t=Si(e.fn);t instanceof Promise?t.finally(e.resolve):e.resolve()}}}function za(){for(;Oa.length;)Ra();ja=!0}function Ba(e,t){let n=ma.get(e);if(!n)return;let r=_a.get(n);if(!r)return;let i=Aa.get(n);i?i.has(t)||i.add(t):(Aa.set(n,new Set([t])),Fa(()=>{let e=Aa.get(n);e&&(Aa.delete(n),e.forEach(e=>r.next(e)))}))}function Va(e,t){let n=Ea({value:t.value},{shallow:!0}),r=e=>{n.value=e},i=()=>e instanceof HTMLElement?e:e.parentElement??e.host,a=()=>{i().dispatchEvent(yi({context:t,observer:r}))};return a(),ia(a),oa(()=>{i().dispatchEvent(bi({context:t,observer:r}))}),n}function Ha(e,t,n){let r=e instanceof HTMLElement?e:e.parentElement??e.host,i=Li(),a=new Map,o=e=>{let r=e;r.detail?.context?.key===t.key&&(r.stopPropagation(),r.detail.observer(n),a.set(r.detail.observer,i.subscribe(r.detail.observer)))},s=e=>{let n=e;n.detail?.context?.key===t.key&&(n.stopPropagation(),a.get(n.detail.observer)?.(),a.delete(n.detail.observer))};return r.addEventListener(yi.type,o),r.addEventListener(bi.type,s),{set:e=>{i.next(e)},destroy:()=>{r.removeEventListener(yi.type,o),r.removeEventListener(bi.type,s);for(let e of a.values())e();a.clear()}}}var Ua=function(e){return e.node=`node`,e.attribute=`attribute`,e}({});function Wa(e,t){return Reflect.set(t,$i,e),t}function Ga(e,t,n){let r={startNode:e,endNode:t};return Reflect.defineProperty(r,"helper",{value:n}),r}function Ka(e,t){return(...n)=>Wa(Ua.node,[e(...n),t])}var qa=function(e){return e.html=`html`,e.svg=`svg`,e.css=`css`,e}({}),Ja=new Set(Object.values(qa)),Ya=Symbol.for(`https://github.com/dineug/r-html#CSSSource`),Xa=new WeakMap,Za=new WeakMap,Qa=new Set([qa.svg]),$a=e=>`${zi}_${e}_`,eo=e=>Pi(e)&&Pi(e.raw),to=e=>Fi(e)&&eo(e.strings)&&Pi(e.values)&&Ja.has(Reflect.get(e,ea)??``),no=e=>to(e)&&e[ea]===qa.css,ro=(e,t=!0,n=!1)=>r=>t?!!r?.trimStart().startsWith(e):n?!!r?.trimEnd().endsWith(e):new RegExp(e).test(r??``),io=ro(Bi),ao=ro(`.`),oo=ro(`?`),so=ro(`@`),co=ro(`on`),lo=ro(zi,!1),uo=e=>lo(e)&&Hi.test(e?.trim()??``),fo=({type:e,value:t})=>e===Wi.spread||e===Wi.directive||lo(t),po=e=>Qa.has(e),mo=e=>uo(e)?Wi.directive:io(e)?Wi.spread:ao(e)?Wi.property:so(e)||co(e)?Wi.event:oo(e)?Wi.boolean:Wi.attribute,ho=e=>io(e)?e.substring(3):uo(e)?e:ao(e)||so(e)||oo(e)?e.substring(1):co(e)?e.substring(2):e;function go(e){let t=[],n=Vi.exec(e);for(;n;){let r=Number(n[1]);t.push([n[0],Number.isInteger(r)?r:-1]),n=Vi.exec(e)}return t}var _o=Symbol(`https://github.com/dineug/r-html.git#hostBridge`);function vo(e,t){if(t instanceof ShadowRoot){let n=t.host;Reflect.set(e,_o,n)}return()=>{Reflect.deleteProperty(e,_o)}}function yo(e){return Reflect.get(e,_o)??null}function bo(e){return Ii(e)&&!Ni(e)&&!Mi(e)||no(e)?String(e):``}var xo={createElement:(e,t=!1)=>t?document.createElementNS(`http://www.w3.org/2000/svg`,e):document.createElement(e),createText:e=>document.createTextNode(e),createMarker:e=>document.createComment(e),createFragment:()=>document.createDocumentFragment(),createEventBus:()=>document.createElement(`div`),insertBefore(e,t){let n=t.parentNode;n&&n.insertBefore(e,t)},appendChild(e,t){e.appendChild(t)},prependChild(e,t){e.prepend(t)},removeChild(e){e.parentNode?.removeChild(e)},parentOf:e=>e.parentNode,nextSiblingOf:e=>e.nextSibling,setText(e,t){e.data=t},setAttribute(e,t,n,r){e.setAttribute(t,r?bo(n).trim():n)},removeAttribute(e,t){e.removeAttribute(t)},isHostNode:e=>e instanceof Node,isMarker:e=>e instanceof Comment,isText:e=>e instanceof Text,isElement:e=>e instanceof Element,isFragment:e=>e instanceof DocumentFragment,addEventListener(e,t,n,r){e.addEventListener(t,n,r)},removeEventListener(e,t,n,r){e.removeEventListener(t,n,r)},getRoot:e=>e.getRootNode(),createComponentContext(e,t){let n={host:document.body,get parentElement(){return e.parentElement},dispatchEvent:e=>t.dispatchEvent(e)},r=e.getRootNode();if(r instanceof ShadowRoot)n.host=r.host;else if(r instanceof DocumentFragment){let e=yo(r);e&&(n.host=e)}return n},bridgeFragment(e,t){let n=xi(e,t),r=vo(e,t);return()=>{n(),r()}}};function So(e){"@babel/helpers - typeof";return So=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},So(e)}function Co(e,t){if(So(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(So(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function wo(e){var t=Co(e,`string`);return So(t)==`symbol`?t:t+``}function To(e,t,n){return(t=wo(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Eo,Do=function(e){return e.element=`element`,e.text=`text`,e.comment=`comment`,e}({});Eo=Symbol.iterator;var Oo=class{constructor(e={}){To(this,`type`,`comment`),To(this,`value`,``),To(this,`attrs`,void 0),To(this,`parent`,null),To(this,`children`,void 0),Object.assign(this,e)}*iterParent(){yield this,this.parent&&(yield*this.parent.iterParent())}*[Eo](){if(yield this,this.children)for(let e of this.children)yield*e}},ko=e=>!!e&&e!==`false`;function Ao(e){let t=({type:t,value:n},r=!1)=>t===Do.element?e.createElement(n,r):t===Do.text?e.createText(n):e.createMarker(n),n=(t,{type:n,name:r,value:i})=>{switch(n){case Wi.attribute:e.setAttribute(t,r,i??``,!1);break;case Wi.boolean:ko(i)&&e.setAttribute(t,r,``,!1);break;case Wi.property:Reflect.set(t,r,i,t)}},r=(t,n)=>{e.insertBefore(t,n)},i=(t,n)=>{let r=e.parentOf(n);if(!r)return;let i=e.nextSiblingOf(n);i?e.insertBefore(t,i):e.appendChild(r,t)},a=t=>e.parentOf(t)?(e.removeChild(t),t):null,o=(t,n)=>{let r=[],i=e.nextSiblingOf(t);for(;i&&i!==n;)r.push(i),i=e.nextSiblingOf(i);return r},s=(e,t)=>{o(e,t).forEach(a)};return{...e,createNode:t,setAttr:n,insertBeforeNode:r,insertAfterNode:i,removeNode:a,rangeNodes:o,removeRange:s}}var O=Ao(xo);O.setAttr,O.insertBeforeNode,O.insertAfterNode,O.removeNode,O.rangeNodes,O.removeRange;var jo=O.isHostNode;function Mo(e,{type:t,name:n,value:r}){switch(t){case Wi.attribute:case Wi.property:Reflect.set(e,n,r);break;case Wi.boolean:Reflect.set(e,n,ko(r))}}var No=(e,t)=>e.length===t.length&&e.every((e,n)=>e===t[n]);function Po(e,t){if(e===t)return!0;let n=Fi(e)?e:{},r=Fi(t)?t:{},i=Object.keys(n),a=Object.keys(r);return i.length===a.length&&a.every(e=>Reflect.get(n,e)===Reflect.get(r,e))}var Fo=e=>Pi(e)&&Oi(e[0])&&(Mi(e[1])||Di(e[1])||Fi(e[1])),Io=()=>{},Lo=e=>e instanceof HTMLElement,Ro=e=>e instanceof SVGElement,zo=e=>e instanceof Promise,Bo=new WeakMap,Vo=new WeakMap,Ho=new WeakMap,Uo=new WeakMap,Wo=new WeakMap,Go=new WeakMap,Ko=new WeakMap,qo=new WeakMap,Jo=new WeakMap,Yo=class{constructor(e,{name:t,value:n},r=O){T(this,Bo,void 0),T(this,Vo,void 0),T(this,Ho,void 0),T(this,Uo,void 0),T(this,Wo,[]),T(this,Go,[]),T(this,Ko,void 0),T(this,qo,null),T(this,Jo,null),E(Bo,this,r),E(Vo,this,e),E(Ho,this,t),E(Uo,this,n),E(Wo,this,go(n??``)),E(Ko,this,D(Wo,this).length===1&&(n??``).trim()===D(Wo,this)[0][0])}commit(e){let t=D(Wo,this).map(([t,n])=>e[n]);if(No(D(Go,this),t))return;let n=t[t.length-1];if(D(Ho,this)===`class`)this.classCommit(n);else if(D(Ho,this)===`style`)this.styleCommit(n);else if(D(Ko,this))D(Bo,this).setAttribute(D(Vo,this),D(Ho,this),t[0],!0);else{let e=t.reduce((e,t,n)=>e.replace(new RegExp(D(Wo,this)[n][0]),bo(t)),D(Uo,this)??``);D(Bo,this).setAttribute(D(Vo,this),D(Ho,this),e.trim(),!1)}E(Go,this,t)}classCommit(e){let t=D(Vo,this);if(!Lo(t)&&!Ro(t))return;let n=D(Go,this)[D(Go,this).length-1];if(n===e||Pi(n)&&Pi(e)&&No(n,e)||Fi(n)&&Fi(e)&&Po(n,e))return;let r=[...t.classList],i=Zo(e);if(Ni(D(Jo,this)))E(Jo,this,r);else{let e=D(Jo,this),n=r.filter(t=>!e.includes(t)&&!i.includes(t));t.classList.remove(...n)}t.classList.add(...i)}styleCommit(e){let t=D(Vo,this);if(!Lo(t)&&!Ro(t))return;let n=D(Go,this)[D(Go,this).length-1];if(Po(n,e))return;let r=Xo(t),i=Fi(e)?e:{};if(Ni(D(qo,this)))E(qo,this,r);else{let e=D(qo,this);Object.keys(r).filter(t=>!e[t]&&!i[t]).forEach(e=>t.style.removeProperty(e))}for(let e of Object.keys(i))t.style.setProperty(e,i[e])}};function Xo(e){let t={};for(let n=0;n<e.style.length;n++){let r=e.style.item(n);t[r]=e.style.getPropertyValue(r)}return t}function Zo(e,t=[]){if(!e)return t;if(no(e))return t.push(bo(e)),t;if(Ii(e))t.push(bo(e));else if(Ti(e)){if(Pi(e))for(let n=0;n<e.length;n++)e[n]&&Zo(e[n],t);else for(let n in e)e[n]&&t.push(bo(n))}return t}var Qo=new WeakMap,$o=new WeakMap,es=new WeakMap,ts=new WeakMap,ns=new WeakMap,rs=class{constructor(e,{name:t,value:n},r=O){T(this,Qo,void 0),T(this,$o,void 0),T(this,es,void 0),T(this,ts,[]),T(this,ns,[]),E(Qo,this,r),E($o,this,e),E(es,this,t),E(ts,this,go(n??``))}commit(e){let t=D(ts,this).map(([t,n])=>e[n]);if(No(D(ns,this),t))return;let n=t[t.length-1];ko(n)?D(Qo,this).setAttribute(D($o,this),D(es,this),``,!1):D(Qo,this).removeAttribute(D($o,this),D(es,this)),E(ns,this,t)}},is=e=>Pi(e)&&Reflect.get(e,$i)===Ua.attribute,as=new WeakMap,os=new WeakMap,ss=new WeakMap,cs=new WeakMap,ls=new WeakMap,us=class{constructor(e,{name:t}){T(this,as,void 0),T(this,os,void 0),T(this,ss,null),T(this,cs,null),T(this,ls,null),E(as,this,e),E(os,this,go(t)[0])}commit(e){let[,t]=D(os,this),n=e[t];if(!is(n))return;let[r,i]=n;if(D(ss,this)!==i)D(ls,this)?.call(this),E(cs,this,i({node:D(as,this)})),E(ss,this,i),E(ls,this,D(cs,this)?.call(this,r));else{let e=D(cs,this)?.call(this,r);D(ls,this)!==e&&(D(ls,this)?.call(this),E(ls,this,e))}}destroy(){D(ls,this)?.call(this)}},ds=new WeakMap,fs=new WeakMap,ps=new WeakMap,ms=new WeakMap,hs=new WeakMap,gs=class{constructor(e,{name:t,value:n},r=O){T(this,ds,void 0),T(this,fs,void 0),T(this,ps,void 0),T(this,ms,[]),T(this,hs,[]),E(ds,this,r),E(fs,this,e),E(ps,this,t),E(ms,this,go(n??``))}commit(e){let t=D(ms,this).map(([t,n])=>e[n]).filter(e=>Oi(e)||Fo(e));No(D(hs,this),t)||(this.clear(),t.forEach(e=>{let[t,n]=_s(e);D(ds,this).addEventListener(D(fs,this),D(ps,this),t,n)}),E(hs,this,t))}clear(){D(hs,this).forEach(e=>{let[t,n]=_s(e);D(ds,this).removeEventListener(D(fs,this),D(ps,this),t,n)})}destroy(){this.clear()}};function _s(e){return Oi(e)?[e,void 0]:e}var vs=new WeakMap,ys=new WeakMap,bs=new WeakMap,xs=new WeakMap,Ss=class{constructor(e,{name:t,value:n}){T(this,vs,void 0),T(this,ys,void 0),T(this,bs,[]),T(this,xs,[]),E(vs,this,e),E(ys,this,t),E(bs,this,go(n??``))}commit(e){let t=D(bs,this).map(([t,n])=>e[n]);if(No(D(xs,this),t))return;let n=t[t.length-1];Reflect.set(D(vs,this),D(ys,this),n,D(vs,this)),E(xs,this,t)}},Cs=new WeakMap,ws=new WeakMap,Ts=new WeakMap,Es=class{constructor(e,{name:t}){T(this,Cs,void 0),T(this,ws,void 0),T(this,Ts,null),E(Cs,this,e),E(ws,this,go(t)[0])}commit(e){let[,t]=D(ws,this),n=e[t];!Fi(n)||Po(D(Ts,this),n)||(Object.keys(n).forEach(e=>Reflect.set(D(Cs,this),e,n[e],D(Cs,this))),E(Ts,this,n))}},Ds=(e,t,n=O)=>t.type===Wi.attribute?new Yo(e,t,n):t.type===Wi.boolean?new rs(e,t,n):t.type===Wi.event?new gs(e,t,n):t.type===Wi.property?new Ss(e,t):t.type===Wi.spread?new Es(e,t):new us(e,t),Os=new WeakMap,ks=new WeakMap,As=new WeakMap,js=new WeakMap,Ms=new WeakMap,Ns=class{constructor(e,{value:t},n=O){T(this,Os,void 0),T(this,ks,void 0),T(this,As,void 0),T(this,js,[]),T(this,Ms,[]),E(Os,this,n),E(ks,this,e),E(As,this,t),Ai(t)&&E(js,this,go(t))}commit(e){let t=D(js,this).map(([t,n])=>e[n]);if(No(D(Ms,this),t))return;E(Ms,this,t);let n=D(Ms,this).reduce((e,t,n)=>e.replace(new RegExp(D(js,this)[n][0]),Ii(t)&&!Ni(t)&&!Mi(t)?String(t):``),D(As,this)??``);D(Os,this).setText(D(ks,this),n)}},Ps=new WeakMap,Fs=new WeakMap,Is=new WeakMap,Ls=new WeakMap,Rs=class{constructor(e,{name:t,value:n}){T(this,Ps,void 0),T(this,Fs,void 0),T(this,Is,[]),T(this,Ls,[]),E(Ps,this,e),E(Fs,this,t),E(Is,this,go(n??``))}commit(e){let t=D(Is,this).map(([t,n])=>e[n]);if(No(D(Ls,this),t))return;let n=t[t.length-1];Reflect.set(D(Ps,this),D(Fs,this),n),E(Ls,this,t)}},zs=function(e){return e.create=`create`,e.move=`move`,e}({});function Bs(e){let t=[],n=new Map;return e.forEach(({type:e,value:r},i)=>{let a={type:e,key:e===Ec.templateLiterals?r.strings:r};t.push(a),n.set(a,i)}),{items:t,itemToIndex:n}}function Vs(e){let t=[],n=new Map;return e.forEach((e,r)=>{let i=Ic(e),a={type:i,key:i===Ec.templateLiterals?e.strings:e};t.push(a),n.set(a,r)}),{items:t,itemToIndex:n}}function Hs(e,t,n){let r=!!n?.strict,i={update:[],delete:[]},a=new Set,o=[],s=e.items,c=t.items;return s.forEach((e,t)=>{let n=c.findIndex((t,n)=>e.type===t.type&&e.key===t.key&&!a.has(n));n===-1?r?i.delete.push({from:t}):o.push(e):(a.add(n),i.update.push({action:`move`,from:t,to:n}))}),o.forEach(n=>{let r=e.itemToIndex.get(n),o=c.find((e,t)=>n.type===e.type&&!a.has(t));if(o){let e=t.itemToIndex.get(o);a.add(e),i.update.push({action:`move`,from:r,to:e})}else i.delete.push({from:r})}),c.forEach((e,n)=>{a.has(n)||i.update.push({action:`create`,from:-1,to:t.itemToIndex.get(e)})}),i.update.sort((e,t)=>e.to-t.to),i}var Us=new WeakMap,Ws=new WeakMap,Gs=new WeakMap,Ks=new WeakMap,qs=class{constructor(e,t,n=O){T(this,Us,void 0),T(this,Ws,void 0),T(this,Gs,void 0),T(this,Ks,[]),E(Ws,this,e),E(Gs,this,t),E(Us,this,n)}commit(e){let t=Hs(Bs(D(Ks,this)),Vs(e)),n={length:e.length};t.update.forEach(({action:t,from:r,to:i})=>{switch(t){case zs.create:let t=D(Us,this).createMarker(``);i===0?D(Us,this).insertAfterNode(t,D(Ws,this)):D(Ks,this).length?D(Us,this).insertAfterNode(t,n[i-1]?n[i-1].endNode:D(Ks,this)[i-1].endNode):D(Us,this).insertBeforeNode(t,D(Gs,this)),n[i]=new Xs(t,e[i],D(Us,this));break;case zs.move:if(n[i]=D(Ks,this)[r],i===r)return;i===0?D(Ks,this)[r].insert(`after`,D(Ws,this)):D(Ks,this)[r].insert(`after`,n[i-1]?n[i-1].endNode:D(Ks,this)[i-1].endNode)}}),t.delete.forEach(({from:e})=>D(Ks,this)[e].destroy()),E(Ks,this,Array.from(n)),D(Ks,this).forEach((t,n)=>t.commit(e[n]))}destroy(){D(Ks,this).forEach(e=>e.destroy())}},Js=new WeakMap,Ys=new WeakMap,Xs=class{constructor(e,t,n=O){T(this,Js,void 0),T(this,Ys,void 0),To(this,`startNode`,void 0),To(this,`endNode`,void 0),To(this,`type`,void 0),To(this,`value`,void 0),E(Ys,this,n),this.startNode=n.createMarker(``),this.endNode=n.createMarker(``),n.insertBeforeNode(this.startNode,e),n.insertAfterNode(this.endNode,e),n.removeNode(e),this.value=t,this.type=Ic(t),E(Js,this,Bc(this.type,this.startNode,this.endNode,n))}commit(e){D(Js,this).commit(e),this.value=e}insert(e,t){let n=[this.startNode,...D(Ys,this).rangeNodes(this.startNode,this.endNode),this.endNode];e===`before`?n.forEach(e=>D(Ys,this).insertBeforeNode(e,t)):n.reverse().forEach(e=>D(Ys,this).insertAfterNode(e,t))}destroy(){D(Js,this).destroy?.(),D(Ys,this).removeRange(this.startNode,this.endNode),D(Ys,this).removeNode(this.startNode),D(Ys,this).removeNode(this.endNode)}},Zs=new WeakMap,Qs=new WeakMap,$s=new WeakMap,ec=new WeakMap,tc=new WeakMap,nc=new WeakMap,rc=class{constructor(e,t,n=O){T(this,Zs,void 0),T(this,Qs,void 0),T(this,$s,void 0),T(this,ec,null),T(this,tc,null),T(this,nc,void 0),E(Qs,this,e),E($s,this,t),E(Zs,this,n)}commit(e){if(!Dc(e))return;let[t,n]=e;if(D(ec,this)!==n)this.clear(),E(tc,this,n(Ga(D(Qs,this),D($s,this),D(Zs,this)))),E(ec,this,n),E(nc,this,D(tc,this)?.call(this,t));else{let e=D(tc,this)?.call(this,t);D(nc,this)!==e&&(this.clear(),E(nc,this,e))}}clear(){D(nc,this)?.call(this),D(Zs,this).removeRange(D(Qs,this),D($s,this))}destroy(){this.clear()}},ic=class{constructor(e,t){}commit(e){}},ac=new WeakMap,oc=new WeakMap,sc=new WeakMap,cc=class{constructor(e,t,n=O){T(this,ac,void 0),T(this,oc,void 0),T(this,sc,null),E(oc,this,t),E(ac,this,n)}commit(e){D(sc,this)!==e&&(D(sc,this)&&D(ac,this).removeNode(D(sc,this)),D(ac,this).insertBeforeNode(e,D(oc,this)),E(sc,this,e))}},lc=new WeakMap,uc=new WeakMap,dc=new WeakMap,fc=new WeakMap,pc=new WeakMap,mc=new WeakMap,hc=class{constructor(e,t,n=O){T(this,lc,void 0),T(this,uc,void 0),T(this,dc,void 0),T(this,fc,null),T(this,pc,null),T(this,mc,Io),E(uc,this,e),E(dc,this,t),E(lc,this,n)}commit(e){D(fc,this)!==e&&(this.clear(),zo(e)&&this.promiseCommit(e))}promiseCommit(e){let[t,n]=gc(e);E(mc,this,n),t.then(e=>{let t=Ic(e);E(pc,this,Bc(t,D(uc,this),D(dc,this),D(lc,this))),D(pc,this)?.commit(e)}),E(fc,this,e)}partClear(){D(pc,this)?.destroy?.(),D(lc,this).removeRange(D(uc,this),D(dc,this))}clear(){D(mc,this).call(this),this.partClear(),E(mc,this,Io)}destroy(){this.clear()}};function gc(e){let t=Io,n=new Promise((e,n)=>t=n);return[Promise.race([n,e]),()=>t()]}var _c=new WeakMap,vc=new WeakMap,yc=new WeakMap,bc=class{constructor(e,t,n=O){T(this,_c,void 0),T(this,vc,void 0),T(this,yc,null),E(_c,this,n),E(vc,this,n.createText(``)),n.insertAfterNode(D(vc,this),e)}commit(e){D(yc,this)!==e&&(D(_c,this).setText(D(vc,this),Ni(e)||Mi(e)?``:String(e)),E(yc,this,e))}},xc=new WeakMap,Sc=new WeakMap,Cc=new WeakMap,wc=new WeakMap,Tc=class{constructor(e,t,n=O){T(this,xc,void 0),T(this,Sc,void 0),T(this,Cc,void 0),T(this,wc,null),E(Sc,this,e),E(Cc,this,t),E(xc,this,n)}commit(e){let{strings:t,values:n}=e;D(wc,this)&&!D(wc,this).equalStrings(t)&&(D(wc,this).destroy(),E(wc,this,null)),D(wc,this)||(E(wc,this,new xl(e,D(Sc,this),D(Cc,this),D(xc,this))),D(wc,this).insert(`before`,D(Cc,this))),D(wc,this).commit(n)}destroy(){D(wc,this)?.destroy()}},Ec=function(e){return e.primitive=`primitive`,e.templateLiterals=`templateLiterals`,e.array=`array`,e.node=`node`,e.object=`object`,e.function=`function`,e.directive=`directive`,e}({}),Dc=e=>Pi(e)&&Reflect.get(e,$i)===Ua.node,Oc=e=>t=>t instanceof e,kc=Oc(bc),Ac=Oc(Tc),jc=Oc(qs),Mc=Oc(cc),Nc=Oc(hc),Pc=Oc(ic),Fc=Oc(rc),Ic=e=>Ii(e)?`primitive`:to(e)?`templateLiterals`:Dc(e)?`directive`:Pi(e)?`array`:jo(e)?`node`:Oi(e)?`function`:`object`,Lc={primitive:kc,templateLiterals:Ac,array:jc,node:Mc,function:Pc,object:Nc,directive:Fc},Rc={primitive:bc,templateLiterals:Tc,array:qs,node:cc,function:ic,object:hc,directive:rc},zc=(e,t)=>Lc[e](t),Bc=(e,t,n,r=O)=>new Rc[e](t,n,r),Vc=new WeakMap,Hc=new WeakMap,Uc=new WeakMap,Wc=new WeakMap,Gc=new WeakMap,Kc=new WeakMap,qc=new WeakMap,Jc=new WeakMap,Yc=new WeakMap,Xc=new WeakMap,Zc=new WeakMap,Qc=new WeakMap,$c=class{constructor(e,t,n,r,i=O){T(this,Vc,void 0),T(this,Hc,void 0),T(this,Uc,void 0),T(this,Wc,void 0),T(this,Gc,void 0),T(this,Kc,[]),T(this,qc,[]),T(this,Jc,null),T(this,Yc,Ea({},{shallow:!0})),T(this,Xc,null),T(this,Zc,null),T(this,Qc,void 0),E(Vc,this,i),E(Qc,this,i.createEventBus()),E(Hc,this,e),E(Uc,this,t),E(Gc,this,n),E(Wc,this,go(n.value)[0]),n.staticAttrs&&n.staticAttrs.forEach(e=>Mo(D(Yc,this),e)),n.attrs?.forEach(e=>{e.type===Wi.directive?D(Kc,this).push(e):e.type===Wi.spread?r.push(new Es(D(Yc,this),e)):e.type===Wi.event?r.push(new gs(D(Qc,this),e,i)):r.push(new Rs(D(Yc,this),e))})}createContext(){return D(Vc,this).createComponentContext(D(Hc,this),D(Qc,this))}commit(e){let[,t]=D(Wc,this),n=e[t];if(!Oi(n)||D(Xc,this)===n){D(qc,this).forEach(t=>t.commit(e));return}let r=this.createContext();this.clear(),na(this);let i=n.call(r,D(Yc,this),r);na(null),D(Kc,this).length&&D(qc,this).push(...D(Kc,this).map(e=>new us(r,e))),sa(this,Gi);let a=!1;E(Zc,this,xa(()=>{let e=i(),t=Ic(e);zc(t,D(Jc,this))||(this.partClear(),E(Jc,this,Bc(t,D(Hc,this),D(Uc,this),D(Vc,this)))),sa(this,a?Yi:Ji),D(Jc,this)?.commit(e),a?sa(this,Zi):(sa(this,Xi),a=!0)})),D(qc,this).forEach(t=>t.commit(e)),sa(this,Ki),E(Xc,this,n)}partClear(){D(Jc,this)?.destroy?.(),D(Vc,this).removeRange(D(Hc,this),D(Uc,this))}clear(){D(Vc,this).removeRange(D(Hc,this),D(Uc,this)),sa(this,qi),D(qc,this).forEach(e=>e.destroy?.()),D(Zc,this)?.call(this),E(qc,this,[]),E(Zc,this,null),ca(this)}destroy(){this.clear(),this.partClear()}},el,tl,nl,rl,il=pa((el=new WeakMap,tl=new WeakMap,nl=new WeakMap,rl=new WeakMap,class{constructor(e,t,n,r=O){T(this,el,void 0),T(this,tl,void 0),T(this,nl,void 0),T(this,rl,void 0),E(el,this,r),E(tl,this,r.createMarker(``)),E(nl,this,r.createMarker(``)),E(rl,this,new $c(D(tl,this),D(nl,this),t,n,r)),r.insertBeforeNode(D(tl,this),e),r.insertAfterNode(D(nl,this),e),r.removeNode(e)}commit(e){D(rl,this).commit(e)}destroy(){D(rl,this).destroy?.(),D(el,this).removeNode(D(tl,this)),D(el,this).removeNode(D(nl,this))}})),al=new WeakMap,ol=new WeakMap,sl=new WeakMap,cl=new WeakMap,ll=new WeakMap,ul=new WeakMap,dl=class{constructor(e,{value:t},n=O){T(this,al,void 0),T(this,ol,void 0),T(this,sl,void 0),T(this,cl,void 0),T(this,ll,null),T(this,ul,null),E(al,this,n),E(ol,this,n.createMarker(``)),E(sl,this,n.createMarker(``)),E(cl,this,go(t)[0]),n.insertBeforeNode(D(ol,this),e),n.insertAfterNode(D(sl,this),e),n.removeNode(e)}commit(e){let[,t]=D(cl,this),n=e[t];if(D(ll,this)===n)return;let r=Ic(n);zc(r,D(ul,this))||(Ni(D(ul,this))||this.clear(),E(ul,this,Bc(r,D(ol,this),D(sl,this),D(al,this)))),D(ul,this)?.commit(n),E(ll,this,n)}clear(){D(ul,this)?.destroy?.(),D(al,this).removeRange(D(ol,this),D(sl,this))}destroy(){this.clear(),D(al,this).removeNode(D(ol,this)),D(al,this).removeNode(D(sl,this))}};function fl(e=[],t,n=!1,r=[],i=O){return e.forEach(e=>{if(e.isComponent){let n=i.createMarker(``);i.appendChild(t,n),r.push(new il(n,e,r,i));return}let a=i.createNode(e,e.isSvg||n);i.appendChild(t,a),i.isMarker(a)&&e.isMarker&&r.push(new Ns(a,e,i)),i.isText(a)&&e.isMarkerOnly&&r.push(new dl(a,e,i)),i.isElement(a)&&(e.staticAttrs&&e.staticAttrs.forEach(e=>i.setAttr(a,e)),e.attrs&&r.push(...e.attrs.map(e=>Ds(a,e,i))),e.children&&fl(e.children,a,e.isSvg||n,r,i))}),r}function pl(e,t=!1,n=O){let r=n.createFragment();return[r,fl(e.children,r,t,[],n)]}var ml=new WeakMap,hl=new WeakMap,gl=new WeakMap,_l=new WeakMap,vl=new WeakMap,yl=new WeakMap,bl=new WeakMap,xl=class{constructor(e,t,n,r=O){if(T(this,ml,void 0),T(this,hl,void 0),T(this,gl,void 0),T(this,_l,null),T(this,vl,[]),T(this,yl,void 0),T(this,bl,!1),E(ml,this,r),E(hl,this,r.createMarker(``)),E(gl,this,r.createMarker(``)),E(yl,this,e.strings),e[ea]!==qa.html&&e[ea]!==qa.svg)return;let[i,a]=pl(e.template.node,po(e[ea]),r);E(_l,this,i),E(vl,this,a),t&&n?(E(hl,this,t),E(gl,this,n),E(bl,this,!0)):(r.prependChild(i,D(hl,this)),r.appendChild(i,D(gl,this)))}equalStrings(e){return D(yl,this)===e}commit(e){D(vl,this).forEach(t=>t.commit(e))}insert(e,t){D(_l,this)&&(e===`before`?D(ml,this).insertBeforeNode(D(_l,this),t):e===`after`?D(ml,this).insertAfterNode(D(_l,this),t):D(ml,this).appendChild(t,D(_l,this)),E(_l,this,null))}destroy(){D(vl,this).forEach(e=>e.destroy?.()),D(ml,this).removeRange(D(hl,this),D(gl,this)),D(bl,this)||(D(ml,this).removeNode(D(hl,this)),D(ml,this).removeNode(D(gl,this)))}},Sl=function(e){return e.string=`string`,e.whiteSpace=`whiteSpace`,e.lt=`lt`,e.gt=`gt`,e.slash=`slash`,e.equal=`equal`,e}({}),Cl={doubleQuote:`"`,singleQuote:`'`,whiteSpace:/\s/,string:/\S/,breakString:/<|>|=/,lt:`<`,gt:`>`,slash:`/`,equal:`=`,hyphen:`-`,exclamationPoint:`!`},wl=e=>t=>e===t,Tl=e=>t=>e.test(t),El={doubleQuote:wl(Cl.doubleQuote),singleQuote:wl(Cl.singleQuote),whiteSpace:Tl(Cl.whiteSpace),string:Tl(Cl.string),breakString:Tl(Cl.breakString),lt:wl(Cl.lt),gt:wl(Cl.gt),slash:wl(Cl.slash),equal:wl(Cl.equal),hyphen:wl(Cl.hyphen),exclamationPoint:wl(Cl.exclamationPoint)},Dl=e=>t=>El.lt(e[t])&&El.exclamationPoint(e[t+1])&&El.hyphen(e[t+2])&&El.hyphen(e[t+3]);function Ol(e){let t=[],n=0,r=()=>n<e.length,i=Dl(e),a=(o=`text`)=>{for(;r();){let s=e[n];if(El.whiteSpace(s)){let i=``;for(;r()&&El.whiteSpace(s);)i+=s,s=e[++n];o!==`element`&&t.push({type:`whiteSpace`,value:i});continue}if(o===`element`){if(El.lt(s)){t.push({type:`lt`,value:s}),n++;continue}if(El.gt(s)){t.push({type:`gt`,value:s}),n++;break}if(El.slash(s)){t.push({type:`slash`,value:s}),n++;continue}if(El.equal(s)){t.push({type:`equal`,value:s}),n++;continue}if(El.doubleQuote(s)){let i=``;for(s=e[++n];r()&&!El.doubleQuote(s);)i+=s,s=e[++n];t.push({type:`string`,value:i}),n++;continue}if(El.singleQuote(s)){let i=``;for(s=e[++n];r()&&!El.singleQuote(s);)i+=s,s=e[++n];t.push({type:`string`,value:i}),n++;continue}}else if(o===`comment`){if(El.lt(s)){t.push({type:`lt`,value:s}),n++;continue}if(El.gt(s)){t.push({type:`gt`,value:s}),n++;break}}else if(El.lt(s)){a(i(n)?`comment`:`element`);continue}if(El.string(s)){let i=``;for(;r()&&El.string(s)&&!El.breakString(s);)i+=s,s=e[++n];t.push({type:`string`,value:i});continue}n++}};return a(),t}var kl=/^(area|base|br|col|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/i,Al=e=>t=>n=>r=>n[r]?n[r][e]===t:!1,jl=Al(`type`),Ml=Al(`value`),Nl=jl(Sl.lt),Pl=jl(Sl.gt),Fl=jl(Sl.slash),Il=jl(Sl.equal),Ll=jl(Sl.string),Rl=jl(Sl.whiteSpace),zl=Ml(`!--`),Bl=Ml(`--`),Vl=e=>{let t=Nl(e),n=Ll(e);return e=>t(e)&&n(e+1)},Hl=e=>{let t=Nl(e),n=Fl(e),r=Ll(e),i=Pl(e);return e=>t(e)&&n(e+1)&&r(e+2)&&i(e+3)},Ul=e=>{let t=Nl(e),n=Fl(e),r=Pl(e);return e=>t(e)&&n(e+1)&&n(e+2)&&r(e+3)},Wl=e=>{let t=Fl(e),n=Pl(e);return e=>t(e)&&n(e+1)},Gl=e=>kl.test(e),Kl=e=>{let t=Nl(e),n=Ll(e),r=zl(e);return e=>t(e)&&n(e+1)&&r(e+1)},ql=e=>{let t=Ll(e),n=Bl(e),r=Pl(e);return e=>t(e)&&n(e)&&r(e+1)},Jl=e=>t=>n=>{n&&(t[e]?t[e]?.push(n):t[e]=[n])},Yl=Jl(`attrs`),Xl=Jl(`children`);function Zl(e){let t=new Oo({type:Do.element,value:`template`,children:[]}),n=0,r=()=>n<e.length,i=Vl(e),a=Hl(e),o=Ul(e),s=Wl(e),c=Kl(e),l=ql(e),u=Nl(e),d=Pl(e),f=Il(e),p=Rl(e),m=Ll(e),h=()=>{let t=e[n],r={name:t.value};return t=e[++n],f(n)&&(t=e[++n],m(n)&&(r.value=t.value,n++)),r},g=t=>{let f=e[n];if(p(n)||m(n)){let i=f.value;for(f=e[++n];r()&&!u(n);)i+=f.value,f=e[++n];return i=i.trim(),i.length?new Oo({parent:t,type:Do.text,value:i}):null}if(c(n)){let i=``;for(n+=2,f=e[n];r()&&!l(n);)i+=f.value,f=e[++n];return l(n)&&(n+=2),new Oo({parent:t,type:Do.comment,value:i})}if(i(n)){f=e[++n];let i=Gl(f.value),c=new Oo({parent:t,type:Do.element,value:f.value.toLowerCase()});for(n++;r()&&!d(n)&&!s(n);){if(m(n)){Yl(c)(h());continue}n++}if(s(n))return n+=2,c;for(f=e[++n];r()&&!a(n)&&!o(n)&&!i;)Xl(c)(g(c));return(a(n)||o(n))&&(n+=4),c}return n++,null};for(;r();)Xl(t)(g(t));return t}var Ql=e=>Zl(Ol(e)),$l=(e,t)=>e.reduce((e,n)=>{let r=t(n),i=e[r];return i?i.push(n):e[r]=[n],e},Object.create(null)),eu=Symbol.iterator,tu=class e{get isMarker(){return lo(this.value)}get isMarkerOnly(){return uo(this.value)}get isSvg(){return this.type===Do.element&&/^svg$/i.test(this.value)}get isComponent(){return this.type===Do.element&&this.isMarkerOnly}constructor(t,n=null){if(To(this,`type`,Do.comment),To(this,`value`,``),To(this,`staticAttrs`,void 0),To(this,`attrs`,void 0),To(this,`parent`,null),To(this,`children`,void 0),this.type=t.type,this.value=t.value,this.parent=n,t.attrs){let[e,n]=iu(t.attrs);e.length&&(this.staticAttrs=e),n.length&&(this.attrs=n)}t.children&&(this.children=t.children.map(t=>new e(t,this)))}insert(e,t,n){if(this.children){let r=e===`before`?0:1;this.children.includes(n)&&this.children.splice(this.children.indexOf(n)+r,0,t)}else this.children=[t]}*iterParent(){yield this,this.parent&&(yield*this.parent.iterParent())}*[eu](){if(yield this,this.children)for(let e of this.children)yield*e}};function nu(e){let t=new tu(e);for(let e of t)e.type===Do.text&&!uo(e.value)&&ru(e);return t}function ru(e){let t=go(e.value);e.value.replace(Vi,zi).split(zi).reduce((n,r,i)=>(i<t.length?n.push(new tu(new Oo({type:Do.text,value:r}),e.parent),new tu(new Oo({type:Do.text,value:t[i][0]}),e.parent)):n.push(new tu(new Oo({type:Do.text,value:r}),e.parent)),n),[]).filter(e=>e.value!==``&&!(!e.value.trim()&&Ui.test(e.value))).reverse().forEach((t,n,{length:r})=>n===r-1?e.value=t.value:e.parent&&e.parent.insert(`after`,t,e))}function iu(e=[]){let t=$l(e,e=>ho(e.name));return Object.keys(t).map(e=>t[e]).reduce((e,t)=>{let[n,r]=e,i=t[t.length-1],a=mo(i.name);if(a===Wi.event)r.push(...t.filter(e=>!!e.value).map(e=>({type:mo(e.name),name:ho(e.name),value:e.value})));else if(a===Wi.attribute){let e=t.filter(e=>!!e.value).map(e=>e.value).join(` `),o={type:a,name:ho(i.name)};e&&(o.value=e),fo(o)?r.push(o):n.push(o)}else{let e={type:a,name:ho(i.name)};i.value&&(e.value=i.value),fo(e)?r.push(e):n.push(e)}return e},[[],[]])}var au=e=>(t,...n)=>{let r={strings:t,values:n,[ea]:e};if(Xa.has(t))return r.template=Xa.get(t),r;let i=nu(Ql(t.reduce((e,t,r)=>(r<n.length?e.push(t,$a(r)):e.push(t),e),[]).join(``)));return r.template=Object.freeze({node:i}),Xa.set(t,r.template),r},ou=au(qa.html),su=au(qa.svg);function cu(e){let t=Ao(e),n=new WeakMap;return{html:ou,svg:su,render:(e,r)=>{if(!to(r)){n.has(e)&&(n.get(e)?.destroy(),n.delete(e));return}let{strings:i,values:a}=r,o=n.get(e);if(o?.equalStrings(i))o?.commit(a);else{let i=new xl(r,void 0,void 0,t);o?.destroy(),n.set(e,i),i.insert(`children`,e),i.commit(a)}}}}var lu=Ka((e,t,n)=>(e.length,[e,t,n]),({startNode:e,endNode:t,helper:n=O})=>{let r=[],i=()=>{r.forEach(e=>e.destroy())};return([a,o,s])=>{let c=mu(a,o,s),l=c.values,u=Hs(pu(r),c,{strict:!0}),d={length:l.length};return u.update.forEach(({action:i,from:a,to:o})=>{switch(i){case zs.create:let i=n.createMarker(``);o===0?n.insertAfterNode(i,e):r.length?n.insertAfterNode(i,d[o-1]?d[o-1].endNode:r[o-1].endNode):n.insertBeforeNode(i,t),d[o]=new fu(i,l[o].value,l[o].key,n);break;case zs.move:if(d[o]=r[a],o===a)return;o===0?r[a].insert(`after`,e):r[a].insert(`after`,d[o-1]?d[o-1].endNode:r[o-1].endNode)}}),u.delete.forEach(({from:e})=>r[e].destroy()),r=Array.from(d),r.forEach((e,t)=>e.commit(l[t].value)),i}}),uu=new WeakMap,du=new WeakMap,fu=class{constructor(e,t,n,r=O){T(this,uu,void 0),T(this,du,void 0),To(this,`startNode`,void 0),To(this,`endNode`,void 0),To(this,`type`,void 0),To(this,`key`,void 0),E(du,this,r),this.startNode=r.createMarker(``),this.endNode=r.createMarker(``),r.insertBeforeNode(this.startNode,e),r.insertAfterNode(this.endNode,e),r.removeNode(e),this.key=n,this.type=Ic(t),E(uu,this,Bc(this.type,this.startNode,this.endNode,r))}commit(e){D(uu,this).commit(e)}insert(e,t){let n=[this.startNode,...D(du,this).rangeNodes(this.startNode,this.endNode),this.endNode];e===`before`?n.forEach(e=>D(du,this).insertBeforeNode(e,t)):n.reverse().forEach(e=>D(du,this).insertAfterNode(e,t))}destroy(){D(uu,this).destroy?.(),D(du,this).removeRange(this.startNode,this.endNode),D(du,this).removeNode(this.startNode),D(du,this).removeNode(this.endNode)}};function pu(e){let t=[],n=new Map;return e.forEach(({type:e,key:r},i)=>{let a={type:e,key:r};t.push(a),n.set(a,i)}),{items:t,itemToIndex:n}}function mu(e,t,n){let r=[],i=new Map,a=[];return e.forEach((e,o,s)=>{let c={key:t(e),value:n(e,o,s)},l={type:Ic(c.value),key:c.key};a.push(c),r.push(l),i.set(l,o)}),{items:r,itemToIndex:i,values:a}}var hu={vCSSStyleSheetMap:new Map,hostContextMap:new Map,globalOrder:[],orderedSheets:null},gu=globalThis.ShadowRoot&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,_u=null;function vu(){return _u===null&&(_u=yu()),_u}function yu(){try{let e=document.createElement(`div`).attachShadow({mode:`open`}),t=new CSSStyleSheet;return e.adoptedStyleSheets.push(t),e.adoptedStyleSheets.length===1&&e.adoptedStyleSheets[0]===t}catch{return!1}}function bu(){return hu}function xu(e){let t=bu(),{identifier:n,cssText:r,mode:i}=e;if(!r||t.vCSSStyleSheetMap.has(n))return n;let a=gu?new CSSStyleSheet:null,o=gu?null:document.createElement(`style`);a?a.replaceSync(r):o&&(o.textContent=r);let s={identifier:n,cssText:r,mode:i,sheet:a,styleElement:o};return t.vCSSStyleSheetMap.set(n,s),Eu(s),n}function Su(e){let t=[],n=[];for(let r of e.vCSSStyleSheetMap.values())(r.mode===`global`?t:n).push(r);if(e.globalOrder.length>0){let n=({identifier:t})=>{let n=e.globalOrder.indexOf(t);return n===-1?e.globalOrder.length:n};t.sort((e,t)=>n(e)-n(t))}return[...t,...n]}function Cu(e){return e.orderedSheets||=Su(e).map(({sheet:e})=>e).filter(Boolean),e.orderedSheets}function wu(e,t){e.adoptedStyleSheets=[...t]}function Tu(){let e=bu(),t=Cu(e);e.hostContextMap.forEach((e,n)=>wu(n,t))}function Eu(e){if(!gu){Du();return}let t=bu(),{mode:n,sheet:r}=e,i=t.orderedSheets;if(!r||n===`global`||!i){t.orderedSheets=null,Tu();return}if(i.push(r),!vu()){Tu();return}t.hostContextMap.forEach((e,t)=>t.adoptedStyleSheets.push(r))}function Du(){let e=bu(),t=Su(e);Array.from(e.hostContextMap).forEach(([e,{styleElements:n}])=>{t.forEach((r,i)=>{if(n.has(r)||!r.styleElement)return;let a=document.importNode(r.styleElement,!0),o=Ou(t,i+1,n);o?e.insertBefore(a,o):e.appendChild(a),n.set(r,a)})})}function Ou(e,t,n){for(let r=t;r<e.length;r++){let t=n.get(e[r]);if(t)return t}return null}function k(e){function t(t){return{type:e,payload:t}}return t.toString=()=>`${e}`,t.type=e,t}function*ku(e,t,n){for(let r of n)r?.[Symbol.iterator]?yield*ku(e,t,r):Oi(r)?yield*ku(e,t,r(e,t)):yield r}var Au=(e,t,n)=>[...ku(e,t,n)],ju=(...e)=>t=>e.reduce((e,t)=>t(e),t);function*Mu(e){yield e}var Nu=function*(e){for(let t of e)t.length&&(yield t)};function Pu({context:e,state:t,reducers:n,enableObservable:r=!0}){let i=r?Ea(t):t,a=Li(),o=Li(),s=ju(Nu),c=t=>{Si(Reflect.get(n,t.type,n),i,t,e)},l=(...t)=>{let n=Au(i,e,t);a.next(n)},u=(...e)=>{Ci(()=>l(...e))},d=a.subscribe(e=>{let t=s(Mu(e));for(let e of t)o.next(e)}),f=o.subscribe(e=>e.forEach(c));return{context:e,state:i,dispatch:u,dispatchSync:l,subscribe:o.subscribe,pipe:(...e)=>(s=ju(...e,Nu),()=>{s=ju(Nu)}),destroy:()=>{d(),f()}}}var Fu=`__RHTML_CSS_DIAGNOSTICS__`,Iu=({line:e,column:t})=>e===void 0?``:` (${e}:${t??1})`,Lu=(e,t)=>{let n=`[r-html] ${t.mode===`global`?`css.global`:`css`} ${t.identifier}${Iu(e)} ${e.code}: ${e.message}`;e.severity===`error`?console.error(n):console.warn(n)},Ru;function zu(){if(Ru!==void 0)return Ru;let e=Reflect.get(globalThis,Fu);return e?typeof e==`function`?e:Lu:null}function Bu(){return zu()!==null}function Vu(e,t){if(e.length===0)return;let n=zu();if(n)for(let r of e)n(r,t)}var Hu=[``];function Uu(e){return{value:``,root:null,parent:null,type:o,props:e.slice(),children:[],line:1,column:1,length:0,return:``,siblings:[]}}function Wu(e,t={}){let n=t.rules??Hu,r=t.rules===void 0?null:Uu(n),i=s(e);return c(l(``,null,null,r??null,n,i,0,[0],i))}var Gu=`rhtml-scope`;function Ku(e,t){return e.split(Gu).join(t)}var qu=/^(?::host\b|::slotted\()/;function Ju(e){return qu.test(e.trim())}function Yu(e){return e.type===o}function Xu(e){return e.type===n}function Zu(e){return e.type.charCodeAt(0)===64}function Qu(e){return Array.isArray(e.children)?e.children:[]}function $u(e){return e.value.charCodeAt(e.value.length-1)===59?e.value.slice(0,-1):e.value}function ed(e){let t=[];for(let n of Qu(e))Xu(n)&&t.push($u(n));return t}function td(e){return Qu(e).filter(Yu)}function nd(e){let t=e.charCodeAt(1);return t===100||t===109||t===115||t===99&&e.charCodeAt(3)===110?!0:t===99||t===108?e.charCodeAt(2)===97:!1}var rd=new Set([r,t,a,i]);function id(e,t,n){let i=[],a=new Set,o=!1,s=(e,t)=>{for(let n of e){if(Yu(n)){o=!0,ad(n,t,i);continue}if(Zu(n)){if(Qu(n).length===0){if(!rd.has(n.type))continue;i.push({code:`unsupported-at-rule`,severity:`error`,message:`\`${n.value}\` is not supported and was dropped. A constructed stylesheet strips \`@import\` by spec, and happy-dom discards the entire sheet when it sees any body-less at-rule — with one sheet per template that would erase the whole component. Move it to a \`<link>\`.`,line:n.line,column:n.column}),n.type===r&&o&&i.push({code:`import-after-rule`,severity:`warning`,message:`\`${n.value}\` follows a rule. Even where \`@import\` is supported it has to precede every rule in the sheet, so this one could not have applied.`,line:n.line,column:n.column});continue}if(o=!0,nd(n.type)){s(Qu(n),t);continue}td(n).length>0&&od(n,a,i),s(Qu(n),!1)}}};s(e,n.scoped),!n.scoped&&e.some(Xu)&&i.push({code:`rule-without-selector`,severity:`warning`,message:`Declarations at the top level of a global block have no selector and were dropped. Wrap them in one.`}),sd(t,i);let c=ld(n.source);return c&&i.push(c),i}function ad(e,t,n){if(e.props.every(e=>e.length===0)){let t=ed(e);t.length>0&&n.push({code:`rule-without-selector`,severity:`warning`,message:`A rule with no selector was dropped: \`{${t.join(`;`)}}\`.`,line:e.line,column:e.column})}if(t)for(let t of cd(e.value)){let r=t.trim();if(Ju(r)){n.push({code:`shadow-boundary`,severity:`warning`,message:`\`${r}\` crosses a shadow boundary, but a scoped block prepends the component class to it, so it can never match. Use \`css.global\` for this rule.`,line:e.line,column:e.column});continue}r.charCodeAt(0)===58&&n.push({code:`implicit-descendant`,severity:`warning`,message:`\`${r}\` becomes a descendant of the scope, not a qualifier on it. Prefix it with \`&\` to attach it: \`&${r}\`.`,line:e.line,column:e.column})}}function od(e,t,n){if(t.has(e.value)){n.push({code:`duplicate-keyframes`,severity:`warning`,message:`\`${e.value}\` is defined more than once. The name is global and unscoped, so the last definition wins for every template that animates with it.`,line:e.line,column:e.column});return}t.add(e.value)}function sd(e,t){for(let n of e)for(let e of n.declarations)e.includes(`rhtml-scope`)&&t.push({code:`scope-in-declaration`,severity:`warning`,message:`\`${e}\` contains \`${Gu}\`. The sentinel is only substituted in selectors, so it will reach the browser as written.`})}function cd(e){let t=[],n=0,r=0,i=0;for(let a=0;a<e.length;a++){let o=e.charCodeAt(a);r===0?o===34||o===39?r=o:o===40||o===91?n++:o===41||o===93?n--:o===44&&n===0&&(t.push(e.slice(i,a)),i=a+1):o===r&&e.charCodeAt(a-1)!==92&&(r=0)}return t.push(e.slice(i)),t}function ld(e){let t=1,n=1,r=0,i=()=>{e.charCodeAt(r)===10?(t++,n=1):n++,r++};for(;r<e.length;){let a=e.charCodeAt(r),o=e.charCodeAt(r+1);if(a===47&&o===42){let a=t,o=n;for(i(),i();r<e.length&&(e.charCodeAt(r)!==42||e.charCodeAt(r+1)!==47);)i();if(r>=e.length)return{code:`unterminated-comment`,severity:`warning`,message:`Unterminated block comment. The scanner consumed the rest of the source, so every rule after it was lost.`,line:a,column:o};i(),i();continue}if(a===47&&o===47){for(;r<e.length&&e.charCodeAt(r)!==10;)i();continue}if(a===34||a===39){let o=t,s=n;for(i();r<e.length&&e.charCodeAt(r)!==a;)e.charCodeAt(r)===92&&i(),i();if(r>=e.length)return{code:`unterminated-string`,severity:`warning`,message:`Unterminated string. The scanner consumed the rest of the source, so every rule after it was lost.`,line:o,column:s};i();continue}i()}return null}function ud(e,t={}){let n=``,r=[];for(let i of e){let{conditions:e}=i,a=0;for(;a<r.length&&a<e.length&&r[a]===e[a];)a++;for(let e=a;e<r.length;e++)n+=`}`;for(let t=a;t<e.length;t++)n+=`${e[t]}{`;r=e,n+=dd(i,t.scope)}for(let e=0;e<r.length;e++)n+=`}`;return n}function dd(e,t){return e.body===void 0?`${e.prelude??fd(e.selectors,t)}{${e.declarations.join(`;`)};}`:`${e.prelude}{${e.body}}`}function fd(e,t){return(t===void 0?e:e.map(e=>Ku(e,t))).join(`,`)}var pd=[],md=e=>e.length>0;function hd(e,t){let n=[];return _d(e,pd,t.rules,n),(t.plugins??[]).reduce((e,t)=>e.flatMap(e=>t(e)),n).filter(gd)}function gd(e){let t=e.selectors.length>0||e.prelude!==void 0,n=e.declarations.length>0||!!e.body;return t&&n}function _d(e,t,n,r){let i=r.length,a=[];for(let i of e)Xu(i)?a.push($u(i)):Yu(i)?vd(i,t,r):Zu(i)&&yd(i,t,n,r);if(a.length===0)return;let o=n.filter(md);o.length!==0&&r.splice(i,0,{conditions:t,selectors:o,declarations:a})}function vd(e,t,n){let r=e.props.filter(md);if(r.length===0)return;let i=ed(e);i.length!==0&&n.push({conditions:t,selectors:r,declarations:i})}function yd(e,t,n,r){let i=Qu(e);if(i.length===0)return;if(nd(e.type)){let a=[];if(_d(i,[...t,e.value],n,a),a.length===0)return;for(let e of a)r.push(e);return}let a=td(e);if(a.length>0){let n=[];for(let e of a)vd(e,pd,n);let i=ud(n);i&&r.push({conditions:t,selectors:[],prelude:e.value,declarations:[],body:i});return}let o=ed(e);o.length!==0&&r.push({conditions:t,selectors:[],prelude:e.value,declarations:o})}function bd(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}var xd=7;function Sd(e){return`_${bd(e).toString(36).padStart(xd,`0`)}`}var Cd=[];function wd(e,t={}){let n=t.mode!==`global`,r=n?[Gu]:[``],i=Wu(e,{rules:r}),a=hd(i,{rules:r,plugins:t.plugins}),o=ud(a),s=Sd(o);return{rules:a,canonicalText:o,identifier:s,cssText:ud(a,{scope:`.${s}`}),diagnostics:t.dev?id(i,a,{source:e,scoped:n}):Cd}}function Td(e){let t=/[;{}][^;{}]*$/.exec(e);return t?t[0].slice(1):e}function Ed(e){let t=e.search(/[;}\n]/);return t===-1?e:e.slice(0,t)}function Dd(e){let t=[];for(let n=0;n<e.length-1;n++){let r=Td(e[n]),i=Ed(e[n+1]),a=!r.includes(`:`)&&!i.includes(`{`)?`statement`:`inline`;t.push({kind:a,provable:r.trim().length===0})}return t}function Od(e){let t=e.trimEnd();return!t||t.endsWith(`;`)||t.endsWith(`}`)?e:`${e};`}function kd(e,t){return no(e)?t===`statement`?Od(e[Ya]??``):`.${String(e)}`:Ii(e)&&!Ni(e)&&!Mi(e)?String(e):``}function Ad(e,t,n){if(no(t)){e.kind===`statement`&&!e.provable&&console.error("[r-html] a css literal follows unterminated text, so it is spliced in as a statement. End the declaration in front of it with a `;`.");return}if(n.includes(`{`)||n.includes(`}`)){console.warn(`[r-html] interpolated value contains a brace and is substituted before compiling, so it can change the rule structure: ${n}`);return}(jd(n,`'`)||jd(n,`"`))&&console.warn(`[r-html] interpolated value has an unbalanced quote and is substituted before compiling: ${n}`)}function jd(e,t){let n=0;for(let r of e)r===t&&n++;return n%2==1}function Md(e,t,n){let r=``;for(let i=0;i<e.length;i++){if(r+=e[i],i>=t.length)continue;let a=kd(n[i],t[i].kind);Ad(t[i],n[i],a),r+=a}return r}var Nd=32,Pd=`\0`;function Fd(e){return(t,...n)=>{let r=Ld(t,e),i=Rd(r.node,n),a=xu(i);return{strings:t,values:n,template:r,[ea]:qa.css,[Ya]:i.source,toString:()=>a}}}var Id=Object.assign(Fd(`scoped`),{global:Fd(`global`)});function Ld(e,t){let n=Za.get(e);if(n&&n.node.mode===t)return n;let r=e.raw,i={raw:r,slots:Dd(r),mode:t,memo:new Map},a=Object.freeze({node:i});return Za.set(e,a),a}function Rd(e,t){let n=e.slots.map((e,n)=>kd(t[n],e.kind)).join(Pd),r=e.memo.get(n);if(r)return r;let i=Md(e.raw,e.slots,t),{rules:a,canonicalText:o,identifier:s,cssText:c,diagnostics:l}=wd(i,{mode:e.mode,dev:Bu()}),u={source:i,mode:e.mode,rules:a,canonicalText:o,identifier:s,cssText:c};if(Vu(l,{source:i,identifier:s,mode:e.mode}),e.memo.set(n,u),e.memo.size>Nd){let[t]=e.memo.keys();e.memo.delete(t)}return u}ne.autoDrawEnabled=!1,Reflect.set(ne,`DD`,te);const zd=new Set,Bd=new Set,Vd=new Map,Hd=[],Ud=[],Wd=new Set;let Gd=!1,Kd=!1,qd=0;function Jd(){return qd}function Yd(){qd+=1;try{Wd.forEach(e=>e())}finally{Gd=!1,Kd=!1;for(let e of zd){if(Vd.has(e)){Bd.add(e);continue}e.getStage()instanceof ee&&e.batchDraw()}zd.clear(),Hd.splice(0).forEach(e=>e())}}function Xd(e){return Wd.add(e),()=>{Wd.delete(e)}}function Zd(){queueMicrotask(()=>{if(Kd){Kd=!1,Zd();return}Yd()})}function Qd(){Kd=!0,!Gd&&(Gd=!0,Zd())}function $d(e){if(Vd.has(e)){Bd.add(e);return}zd.add(e),Qd()}function ef(e){Vd.set(e,(Vd.get(e)??0)+1)}function tf(e){let t=(Vd.get(e)??0)-1;t>0?Vd.set(e,t):Vd.delete(e),Ud.splice(0).forEach(e=>e()),t<=0&&Bd.delete(e)&&$d(e)}function nf(){return new Promise(e=>{Ud.push(()=>e())})}function rf(){return Vd.size?nf().then(rf):Gd?new Promise(e=>{Hd.push(()=>e())}):Promise.resolve()}const af=Symbol(`r-html/konva-slot`),of=Symbol(`r-html/konva-ledger`),sf=Symbol(`r-html/konva-virtual`),cf=Symbol(`r-html/konva-fragment`),lf=new Set([`class`,`style`,`zIndex`]),uf={reconcile:0,scan:0,attach:0,drop:0,order:0,setZIndex:0},df={"k-layer":()=>new f,"k-group":()=>new d,"k-rect":()=>new _,"k-text":()=>new v,"k-path":()=>new g,"k-line":()=>new h,"k-circle":()=>new m};function ff(){}function pf(){throw Error(`[konva-host] a DOM-only directive reached the konva host. innerHTML and vCSSStyleSheet read the DOM through the module helpers, which a konva node has nothing to answer with`)}function mf(e,t=``){let n={kind:e,data:t};return Reflect.set(n,sf,e),Object.defineProperty(n,"nextSibling",{get:pf}),Object.defineProperty(n,"parentNode",{get:pf}),n}const hf=e=>e&&typeof e==`object`?Reflect.get(e,sf)??null:null,gf=e=>e instanceof p,_f=e=>gf(e)&&Reflect.get(e,cf)===!0,vf=e=>Reflect.get(e,af);function yf(e){let t=vf(e);if(t)return t;let n={node:e,parent:null,prev:null,next:null,doomed:!1};return Reflect.set(e,af,n),n}function bf(e){let t=Reflect.get(e,of);if(t)return t;let n={first:null,last:null,dirty:!1,reconciledAt:-1};return Reflect.set(e,of,n),n}const xf=e=>vf(e)?.parent??null,Sf=e=>vf(e)?.next?.node??null,Cf=new Set,wf=new WeakMap;function Tf(e){let t=e;for(;t;){if(t instanceof f)return t;t=xf(t)}return null}function Ef(e){let t=Tf(e);t&&$d(t)}function Df(e){bf(e).dirty=!0,Cf.add(e),Ef(e),Qd()}function Of(e){let t=e.parent;if(!t)return;let n=bf(t);e.prev?e.prev.next=e.next:n.first=e.next,e.next?e.next.prev=e.prev:n.last=e.prev,e.parent=null,e.prev=null,e.next=null,Df(t)}function kf(e,t,n){Of(t);let r=bf(e);t.parent=e,t.doomed=!1,t.prev=n?n.prev:r.last,t.next=n,t.prev?t.prev.next=t:r.first=t,t.next?t.next.prev=t:r.last=t,Df(e)}function Af(e,t){if(!(!gf(t)||_f(e))){if(e instanceof ee){if(!(t instanceof f))throw Error(`[konva-host] a Stage holds layers only, so ${t.getClassName()} cannot sit at a template root. Make k-layer the root`);return}if(t instanceof f)throw Error(`[konva-host] k-layer nests in nothing but a Stage`);if(gf(e)&&!(e instanceof u))throw Error(`[konva-host] ${e.getClassName()} is a shape and holds no children`)}}function jf(e,t,n){if(t===n)return;let r=n?yf(n):null;if(!_f(t)){Af(e,t),kf(e,yf(t),r);return}let i=[];for(let e=bf(t).first;e;e=e.next)i.push(e);for(let t of i)Af(e,t.node),kf(e,t,r)}function Mf(e){Cf.delete(e),Reflect.deleteProperty(e,af),Reflect.deleteProperty(e,of),e.destroy()}function Nf(e,t){let n=t.getParent();n!==e&&(n&&Cf.has(n)&&Rf(n),uf.attach+=1,e.add(t))}function Pf(e,t){if(e.length!==t.length)return!1;for(let n=0;n<t.length;n++)if(e[n]!==t[n])return!1;return!0}function Ff(e,t){t.forEach((t,n)=>{e.children[n]!==t&&(uf.setZIndex+=1,t.setZIndex(n))})}function If(e,t){let n=e.children;n.length=0;for(let e=0;e<t.length;e++){let r=t[e];n.push(r),r.index=e}}function Lf(e){if(uf.reconcile+=1,!(e instanceof u))return;let t=[];for(let n=bf(e).first;n;n=n.next)uf.scan+=1,gf(n.node)&&t.push(n.node);for(let n of t)Nf(e,n);let n=new Set(t),r=e.children.filter(e=>!n.has(e));if(!(!r.length&&Pf(e.children,t))){uf.order+=1,e instanceof ee?(r.forEach(e=>e.remove()),Ff(e,t)):(r.forEach(e=>{e.parent=null,e.index=0,e.remove()}),If(e,t));for(let e of r)uf.drop+=1,yf(e).doomed&&Mf(e)}}function Rf(e){let t=bf(e);!t.dirty&&t.reconciledAt===Jd()||(t.dirty=!1,t.reconciledAt=Jd(),Lf(e))}Xd(()=>{for(let e of Cf)Rf(e);Cf.clear()});function zf(e){let t=e,n=xf(t);for(;n;)t=n,n=xf(t);return wf.get(t)??t}function Bf(e,t){if(!t)return;let n=zf(e);if(gf(n)&&n.hasName(`minimap`))throw Error(`[konva-host] id "${t}" is not the minimap's to carry. Locate a minimap node by name plus a tableId attr`)}const Vf=cu({createElement(e){let t=df[e.toLowerCase()];if(!t)throw Error(`[konva-host] unknown konva tag <${e}>`);return t()},createText:e=>mf(`text`,e),createMarker:e=>mf(`marker`,e),createFragment(){let e=new d;return Reflect.set(e,cf,!0),Reflect.set(e,`_validateAdd`,ff),e},createEventBus:()=>new EventTarget,insertBefore(e,t){let n=xf(t);n&&jf(n,e,t)},appendChild(e,t){jf(e,t,null)},prependChild(e,t){jf(e,t,bf(e).first?.node??null)},removeChild(e){let t=yf(e);Of(t),gf(e)&&(t.doomed=!0,e.getParent()||Mf(e))},parentOf:xf,nextSiblingOf:Sf,setText(e,t){if(hf(e)!==`text`)throw Error(`[konva-host] a konva tree has no text node to write`);e.data=t},setAttribute(e,t,n,r){if(!gf(e))return;if(lf.has(t))throw Error(`[konva-host] "${t}" is not a konva attribute a template may write`);let i=r?n:String(n);t===`id`&&Bf(e,i),e.attrs[t]!==i&&(e.setAttrs({[t]:i}),Ef(e))},removeAttribute(e,t){!gf(e)||e.attrs[t]===void 0||(e.setAttrs({[t]:void 0}),Ef(e))},isHostNode:e=>gf(e)||hf(e)!==null,isMarker:e=>hf(e)===`marker`,isText:e=>hf(e)===`text`,isElement:e=>gf(e)&&!_f(e),isFragment:e=>_f(e),addEventListener(e,t,n,r){gf(e)?e.on(`${t}.rhtml`,n):e.addEventListener(t,n,r)},removeEventListener(e,t,n,r){gf(e)?e.off(`${t}.rhtml`,n):e.removeEventListener(t,n,r)},getRoot:zf,createComponentContext(e,t){return{get host(){let n=zf(e);return n instanceof ee?n.container():t},get parentElement(){return null},dispatchEvent:e=>t.dispatchEvent(e)}},bridgeFragment(e,t){return wf.set(e,t),()=>{wf.delete(e)}}}),A=Vf.html;function Hf(e,t){if(!(e instanceof ee))throw Error(`[konva-host] a konva template renders into a Stage`);Vf.render(e,t)}var Uf=(e,t)=>e*(1-t)/2;function Wf(e){return{originX:Ve(e.scrollLeft+Uf(e.width,e.zoomLevel),4),originY:Ve(e.scrollTop+Uf(e.height,e.zoomLevel),4)}}function j(e,t,n){return r=>{if(!n)return;let i=n[r];e(i)&&(t[r]=i)}}function Gf(e){return t=>S(t)&&e.includes(t)}function Kf(e){return t=>x(t)&&e.includes(t)}function qf(e,t,n){return Reflect.get(e,t)??n}function Jf(){let e=Date.now();return{updateAt:e,createAt:e}}function Yf(e,t){let n=j(x,e,t);n(`updateAt`),n(`createAt`)}var Xf=()=>({tableIds:[],relationshipIds:[],indexIds:[],memoIds:[]});function Zf(e){let t=Xf();if(!de(e)||y(e))return t;let n=j(Array.isArray,t,e);return n(`tableIds`),n(`relationshipIds`),n(`indexIds`),n(`memoIds`),t}var Qf=()=>({id:``,name:``,tableId:``,indexColumnIds:[],seqIndexColumnIds:[],unique:!1,meta:Jf()});function $f(e){let t={};if(!de(e)||y(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=Qf(),r=j(S,e,n),i=j(le,e,n),a=j(Array.isArray,e,n);r(`id`),r(`name`),r(`tableId`),i(`unique`),a(`indexColumnIds`),a(`seqIndexColumnIds`),Yf(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var ep={ASC:1,DESC:2},tp=Object.values(ep),np=()=>({id:``,indexId:``,columnId:``,orderType:ep.ASC,meta:Jf()});function rp(e){let t={};if(!de(e)||y(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=np(),r=j(S,e,n);r(`id`),r(`indexId`),r(`columnId`),j(Kf(tp),e,n)(`orderType`),Yf(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var ip=()=>({id:``,value:``,ui:{x:200,y:100,zIndex:2,width:116,height:100,color:``},meta:Jf()});function ap(e){let t={};if(!de(e)||y(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=ip(),r=j(S,e,n),i=j(x,e.ui,n.ui),a=j(S,e.ui,n.ui);r(`id`),r(`value`),a(`color`),i(`x`),i(`y`),i(`zIndex`),i(`width`),i(`height`),Yf(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var op={ZeroOne:2,ZeroN:4,OneOnly:8,OneN:16},sp=Object.values(op),cp={ring:1,dash:2},lp=Object.values(cp),up={left:1,right:2,top:4,bottom:8},dp=Object.values(up),fp=()=>({id:``,identification:!1,relationshipType:op.ZeroN,startRelationshipType:cp.dash,start:{tableId:``,columnIds:[],x:0,y:0,direction:up.bottom},end:{tableId:``,columnIds:[],x:0,y:0,direction:up.bottom},meta:Jf()});function pp(e){let t={};if(!de(e)||y(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=fp(),r=j(S,e,n),i=j(le,e,n),a=j(x,e.start,n.start),o=j(S,e.start,n.start),s=j(x,e.end,n.end),c=j(S,e.end,n.end);r(`id`),i(`identification`),j(Kf(sp),e,n)(`relationshipType`),j(Kf(lp),e,n)(`startRelationshipType`),o(`tableId`),a(`x`),a(`y`),j(Kf(dp),e.start,n.start)(`direction`),j(Array.isArray,e.start,n.start)(`columnIds`),c(`tableId`),s(`x`),s(`y`),j(Kf(dp),e.end,n.end)(`direction`),j(Array.isArray,e.end,n.end)(`columnIds`),Yf(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var mp={ERD:`ERD`,visualization:`@dineug/erd-editor/builtin-visualization`,schemaSQL:`@dineug/erd-editor/builtin-schema-sql`,generatorCode:`@dineug/erd-editor/builtin-generator-code`,settings:`settings`},hp=Object.values(mp),gp={tableComment:1,columnComment:2,columnDataType:4,columnDefault:8,columnAutoIncrement:16,columnPrimaryKey:32,columnUnique:64,columnNotNull:128,relationship:256},_p={columnName:1,columnDataType:2,columnNotNull:4,columnUnique:8,columnAutoIncrement:16,columnDefault:32,columnComment:64},vp=Object.values(_p),yp={MariaDB:1,MSSQL:2,MySQL:4,Oracle:8,PostgreSQL:16,SQLite:32,Databricks:64,Snowflake:128},bp=Object.values(yp),xp={GraphQL:1,csharp:2,Java:4,Kotlin:8,TypeScript:16,JPA:32,Scala:64,Go:128,SQLAlchemy:256,TypeORM:512,Sequelize:1024,Drizzle:2048,DBML:4096,AML:8192},Sp=Object.values(xp),Cp={none:1,camelCase:2,pascalCase:4,snakeCase:8},wp=Object.values(Cp),Tp={none:1,doubleQuote:2,singleQuote:4,backtick:8},Ep=Object.values(Tp),Dp={scroll:1,zoomLevel:2},Op=.1,kp=1.5,Ap=2e3,jp=2e4,Mp=gp.tableComment|gp.columnComment|gp.columnDataType|gp.columnDefault|gp.columnPrimaryKey|gp.columnNotNull|gp.relationship,Np=()=>({width:2e3,height:2e3,scrollTop:0,scrollLeft:0,originX:0,originY:0,zoomLevel:1,show:Mp,database:yp.MySQL,databaseName:``,canvasType:mp.ERD,language:xp.GraphQL,tableNameCase:Cp.pascalCase,columnNameCase:Cp.camelCase,bracketType:Tp.none,relationshipDataTypeSync:!0,relationshipOptimization:!1,columnOrder:[_p.columnName,_p.columnDataType,_p.columnNotNull,_p.columnUnique,_p.columnAutoIncrement,_p.columnDefault,_p.columnComment],maxWidthComment:-1,ignoreSaveSettings:0}),Pp=e=>ie(e,Ap,jp),Fp=e=>ie(e,Op,kp),Ip=e=>ie(e,60,200);function Lp(e){let t=Np();if(!de(e)||y(e))return t;let n=j(x,t,e),r=j(S,t,e),i=j(le,t,e);if(x(e.width)&&(t.width=Pp(e.width)),x(e.height)&&(t.height=Pp(e.height)),x(e.zoomLevel)&&(t.zoomLevel=Fp(e.zoomLevel)),x(e.maxWidthComment)&&e.maxWidthComment!==-1&&(t.maxWidthComment=Ip(e.maxWidthComment)),n(`scrollTop`),n(`scrollLeft`),n(`show`),n(`ignoreSaveSettings`),r(`databaseName`),r(`canvasType`),i(`relationshipDataTypeSync`),i(`relationshipOptimization`),j(Kf(bp),t,e)(`database`),j(Kf(Sp),t,e)(`language`),j(Kf(wp),t,e)(`tableNameCase`),j(Kf(wp),t,e)(`columnNameCase`),j(Kf(Ep),t,e)(`bracketType`),Array.isArray(e.columnOrder)&&vp.length===e.columnOrder.length&&oe(vp,e.columnOrder).length===0&&(t.columnOrder=e.columnOrder),x(e.originX)&&x(e.originY))t.originX=e.originX,t.originY=e.originY;else{let{originX:e,originY:n}=Wf(t);t.originX=e,t.originY=n}return t}var Rp=()=>({id:``,name:``,comment:``,columnIds:[],seqColumnIds:[],ui:{x:200,y:100,zIndex:2,widthName:60,widthComment:60,color:``},meta:Jf()});function zp(e){let t={};if(!de(e)||y(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=Rp(),r=j(S,e,n),i=j(Array.isArray,e,n),a=j(x,e.ui,n.ui),o=j(S,e.ui,n.ui);r(`id`),r(`name`),r(`comment`),i(`columnIds`),i(`seqColumnIds`),o(`color`),a(`x`),a(`y`),a(`zIndex`),a(`widthName`),a(`widthComment`),Yf(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var Bp=()=>({id:``,tableId:``,name:``,comment:``,dataType:``,default:``,options:0,ui:{keys:0,widthName:60,widthComment:60,widthDataType:60,widthDefault:60},meta:Jf()});function Vp(e){let t={};if(!de(e)||y(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=Bp(),r=j(S,e,n),i=j(x,e,n),a=j(x,e.ui,n.ui);r(`id`),r(`tableId`),r(`name`),r(`comment`),r(`dataType`),r(`default`),i(`options`),a(`keys`),a(`widthName`),a(`widthComment`),a(`widthDataType`),a(`widthDefault`),Yf(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}function Hp(e){let t=e;return{$schema:`https://raw.githubusercontent.com/dineug/erd-editor/main/json-schema/schema.json`,version:`3.0.0`,settings:Lp(t.settings),doc:Zf(t.doc),collections:{tableEntities:zp(t.collections?.tableEntities),tableColumnEntities:Vp(t.collections?.tableColumnEntities),relationshipEntities:pp(t.collections?.relationshipEntities),indexEntities:$f(t.collections?.indexEntities),indexColumnEntities:rp(t.collections?.indexColumnEntities),memoEntities:ap(t.collections?.memoEntities)}}}var M={CanvasType:mp,CanvasTypeList:hp,Show:gp,ColumnType:_p,ColumnTypeList:vp,Database:yp,DatabaseList:bp,Language:xp,LanguageList:Sp,NameCase:Cp,NameCaseList:wp,BracketType:Tp,BracketTypeList:Ep,RelationshipType:op,RelationshipTypeList:sp,StartRelationshipType:cp,StartRelationshipTypeList:lp,Direction:up,DirectionList:dp,ColumnOption:{autoIncrement:1,primaryKey:2,unique:4,notNull:8},ColumnUIKey:{primaryKey:1,foreignKey:2},OrderType:ep,OrderTypeList:tp,SaveSettingType:Dp,CANVAS_SIZE_MAX:jp,CANVAS_SIZE_MIN:Ap,CANVAS_ZOOM_MAX:kp,CANVAS_ZOOM_MIN:Op};function Up(e){return[e,-1,-1,{}]}function Wp(e,t,n){return e[t]||(e[t]=Up(n),e[t])}function Gp(e,t,n,r,i){let a=Wp(e,n,r),o=a[1],s=a[2];o<t&&(a[1]=t),s<t&&i()}function Kp(e,t,n,r,i){let a=Wp(e,n,r),o=a[2],s=a[1];o<t&&(a[2]=t),s<=t&&i()}function qp(e,t,n,r,i,a){let o=Wp(e,n,r);(o[3][i]??-1)<=t&&(o[3][i]=t,a())}function Jp(e){"@babel/helpers - typeof";return Jp=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Jp(e)}function Yp(e,t){if(Jp(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(Jp(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Xp(e){var t=Yp(e,`string`);return Jp(t)==`symbol`?t:t+``}function Zp(e,t,n){return(t=Xp(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Qp=class{constructor(e){Zp(this,`collections`,void 0),this.collections=e}collection(e){return new $p(this.collections[e],e)}},$p=class{constructor(e,t){Zp(this,`collection`,void 0),Zp(this,`collectionKey`,void 0),this.collection=e,this.collectionKey=t}selectById(e){return this.collection[e]}selectByIds(e){return e.length,e.map(e=>this.selectById(e)).filter(Boolean)}selectEntities(){return this.collection}selectAll(){return Object.values(this.collection)}setOne(e){return this.collection[e.id]=e,this}setMany(e){return e.forEach(e=>this.setOne(e)),this}setAll(e){return this.removeAll(),this.setMany(e),this}addOne(e){return this.selectById(e.id)||this.setOne(e),this}addMany(e){return e.forEach(e=>this.addOne(e)),this}removeOne(e){return this.selectById(e)&&Reflect.deleteProperty(this.collection,e),this}removeMany(e){return e.forEach(e=>this.removeOne(e)),this}removeAll(){return this.collection={},this}updateOne(e,t){let n=this.selectById(e);return n&&(t(n),n.meta.updateAt=Date.now()),this}updateMany(e,t){return e.forEach(e=>this.updateOne(e,t)),this}getOrCreate(e,t){let n=this.selectById(e);if(n)return n;let r=t(e);return this.setOne(r),this.selectById(e)}addOperator(e,t,n,r){return Gp(e,t,n,this.collectionKey,r),this}removeOperator(e,t,n,r){return Kp(e,t,n,this.collectionKey,r),this}replaceOperator(e,t,n,r,i){return qp(e,t,n,this.collectionKey,r,i),this}},N=e=>new Qp(e),em=Object.values({columnUnique:`columnUnique`,columnAutoIncrement:`columnAutoIncrement`,columnName:`columnName`,columnDataType:`columnDataType`,columnNotNull:`columnNotNull`,columnDefault:`columnDefault`,columnComment:`columnComment`}),tm=Object.values({ERD:`ERD`,"@vuerd/builtin-sql-ddl":`@vuerd/builtin-sql-ddl`,"@vuerd/builtin-grid":`@vuerd/builtin-grid`,"@vuerd/builtin-generator-code":`@vuerd/builtin-generator-code`,"@vuerd/builtin-visualization":`@vuerd/builtin-visualization`}),nm=Object.values({MariaDB:`MariaDB`,MSSQL:`MSSQL`,MySQL:`MySQL`,Oracle:`Oracle`,PostgreSQL:`PostgreSQL`,SQLite:`SQLite`}),rm=Object.values({GraphQL:`GraphQL`,"C#":`C#`,Java:`Java`,Kotlin:`Kotlin`,TypeScript:`TypeScript`,JPA:`JPA`,Scala:`Scala`}),im=Object.values({none:`none`,camelCase:`camelCase`,pascalCase:`pascalCase`,snakeCase:`snakeCase`}),am=Object.values({AtomOneDark:`AtomOneDark`,AtomOneLight:`AtomOneLight`,MonokaiSublime:`MonokaiSublime`,GithubGist:`GithubGist`,VS2015:`VS2015`}),om=Object.values({none:`none`,doubleQuote:`doubleQuote`,singleQuote:`singleQuote`,backtick:`backtick`}),sm=.1,cm=2e3,lm=2e4,um=()=>({version:`2.2.11`,width:2e3,height:2e3,scrollTop:0,scrollLeft:0,zoomLevel:1,show:{tableComment:!0,columnComment:!0,columnDataType:!0,columnDefault:!0,columnAutoIncrement:!1,columnPrimaryKey:!0,columnUnique:!1,columnNotNull:!0,relationship:!0},database:`MySQL`,databaseName:``,canvasType:`ERD`,language:`GraphQL`,tableCase:`pascalCase`,columnCase:`camelCase`,highlightTheme:`VS2015`,bracketType:`none`,setting:{relationshipDataTypeSync:!0,relationshipOptimization:!1,columnOrder:[`columnName`,`columnDataType`,`columnNotNull`,`columnUnique`,`columnAutoIncrement`,`columnDefault`,`columnComment`]},pluginSerializationMap:{}}),dm=e=>ie(e,cm,lm),fm=e=>ie(e,sm,1);function pm(e){let t=um();if(y(e))return t;let n=j(x,t,e),r=j(S,t,e),i=j(le,t.show,e.show),a=j(le,t.setting,e.setting);if(x(e.width)&&(t.width=dm(e.width)),x(e.height)&&(t.height=dm(e.height)),x(e.zoomLevel)&&(t.zoomLevel=fm(e.zoomLevel)),r(`version`),r(`databaseName`),n(`scrollTop`),n(`scrollLeft`),j(Gf(nm),t,e)(`database`),j(Gf(tm),t,e)(`canvasType`),j(Gf(rm),t,e)(`language`),j(Gf(im),t,e)(`tableCase`),j(Gf(im),t,e)(`columnCase`),j(Gf(am),t,e)(`highlightTheme`),j(Gf(om),t,e)(`bracketType`),i(`tableComment`),i(`columnComment`),i(`columnDataType`),i(`columnDefault`),i(`columnAutoIncrement`),i(`columnPrimaryKey`),i(`columnUnique`),i(`columnNotNull`),i(`relationship`),a(`relationshipDataTypeSync`),a(`relationshipOptimization`),e.setting?.columnOrder&&em.length===e.setting.columnOrder.length&&oe(em,e.setting.columnOrder).length===0&&(t.setting.columnOrder=e.setting.columnOrder),de(e.pluginSerializationMap)){let n=e.pluginSerializationMap;for(let e of Object.keys(n)){let r=n[e];S(r)&&(t.pluginSerializationMap[e]=r)}}return t}var mm=()=>({memos:[]}),hm=()=>({id:``,value:``,ui:{active:!1,left:200,top:200,zIndex:2,width:127,height:127}});function gm(e){let t=mm();if(y(e)||!Array.isArray(e.memos))return t;for(let n of e.memos){let e=hm(),r=j(S,e,n),i=j(x,e.ui,n.ui),a=j(le,e.ui,n.ui),o=j(S,e.ui,n.ui);r(`id`),r(`value`),a(`active`),o(`color`),i(`left`),i(`top`),i(`zIndex`),i(`width`),i(`height`),t.memos.push(e)}return t}var _m=[`ZeroOneN`,`One`,`N`],vm={ZeroOneN:`ZeroN`,One:`OneOnly`,N:`OneN`},ym=e=>_m.includes(e)?vm[e]:e,bm=Object.values({ZeroOneN:`ZeroOneN`,ZeroOne:`ZeroOne`,ZeroN:`ZeroN`,OneOnly:`OneOnly`,OneN:`OneN`,One:`One`,N:`N`}),xm=Object.values({Ring:`Ring`,Dash:`Dash`}),Sm=Object.values({left:`left`,right:`right`,top:`top`,bottom:`bottom`}),Cm=()=>({relationships:[]}),wm=()=>({id:``,identification:!1,relationshipType:`ZeroN`,startRelationshipType:`Dash`,start:{tableId:``,columnIds:[],x:0,y:0,direction:`bottom`},end:{tableId:``,columnIds:[],x:0,y:0,direction:`bottom`},constraintName:``,visible:!0});function Tm(e){let t=Cm();if(y(e)||!Array.isArray(e.relationships))return t;for(let n of e.relationships){let e=wm(),r=j(S,e,n),i=j(le,e,n),a=j(x,e.start,n.start),o=j(S,e.start,n.start),s=j(x,e.end,n.end),c=j(S,e.end,n.end);r(`id`),r(`constraintName`),i(`identification`),i(`visible`),j(Gf(bm),e,n)(`relationshipType`),e.relationshipType=ym(e.relationshipType),j(Gf(xm),e,n)(`startRelationshipType`),o(`tableId`),a(`x`),a(`y`),j(Gf(Sm),e.start,n.start)(`direction`),Array.isArray(n.start?.columnIds)&&(e.start.columnIds=n.start?.columnIds.filter(S)),c(`tableId`),s(`x`),s(`y`),j(Gf(Sm),e.end,n.end)(`direction`),Array.isArray(n.end?.columnIds)&&(e.end.columnIds=n.end?.columnIds.filter(S)),t.relationships.push(e)}return t}var Em={ASC:`ASC`,DESC:`DESC`},Dm=Object.values(Em),Om=()=>({tables:[],indexes:[]}),km=()=>({id:``,name:``,comment:``,columns:[],ui:{active:!1,left:200,top:100,zIndex:2,widthName:60,widthComment:60},visible:!0}),Am=()=>({id:``,name:``,comment:``,dataType:``,default:``,option:{autoIncrement:!1,primaryKey:!1,unique:!1,notNull:!1},ui:{active:!1,pk:!1,fk:!1,pfk:!1,widthName:60,widthComment:60,widthDataType:60,widthDefault:60}}),jm=()=>({id:``,name:``,tableId:``,columns:[],unique:!1}),Mm=()=>({id:``,orderType:Em.ASC});function Nm(e){let t=Om();if(y(e))return t;if(Array.isArray(e.tables))for(let n of e.tables){let e=km(),r=j(S,e,n),i=j(le,e,n),a=j(x,e.ui,n.ui),o=j(le,e.ui,n.ui),s=j(S,e.ui,n.ui);if(r(`id`),r(`name`),r(`comment`),i(`visible`),o(`active`),s(`color`),a(`left`),a(`top`),a(`zIndex`),a(`widthName`),a(`widthComment`),Array.isArray(n.columns))for(let t of n.columns){let n=Am(),r=j(S,n,t),i=j(x,n.ui,t.ui),a=j(le,n.ui,t.ui),o=j(le,n.option,t.option);r(`id`),r(`name`),r(`comment`),r(`dataType`),r(`default`),o(`autoIncrement`),o(`primaryKey`),o(`unique`),o(`notNull`),a(`active`),a(`pk`),a(`fk`),a(`pfk`),i(`widthName`),i(`widthComment`),i(`widthDataType`),i(`widthDefault`),e.columns.push(n)}t.tables.push(e)}if(Array.isArray(e.indexes))for(let n of e.indexes){let e=jm(),r=j(S,e,n),i=j(le,e,n);if(r(`id`),r(`name`),r(`tableId`),i(`unique`),Array.isArray(n.columns))for(let t of n.columns){let n=Mm();j(S,n,t)(`id`),j(Gf(Dm),n,t)(`orderType`),e.columns.push(n)}t.indexes.push(e)}return t}function Pm(e){let t=e;return{canvas:pm(t.canvas),table:Nm(t.table),relationship:Tm(t.relationship),memo:gm(t.memo)}}function Fm(e){let t=Hp({});return Im(t.settings,e.canvas),Lm(t,e.table),Rm(t,e.memo),zm(t,e.relationship),t}function Im(e,t){e.width=t.width,e.height=t.height,e.scrollTop=t.scrollTop,e.scrollLeft=t.scrollLeft,e.zoomLevel=t.zoomLevel;let{originX:n,originY:r}=Wf(e);e.originX=n,e.originY=r,e.databaseName=t.databaseName,e.canvasType=M.CanvasType.ERD,e.show=Object.keys(t.show).reduce((e,n)=>qf(t.show,n,!1)?e|qf(M.Show,n,0):e,0),e.database=Reflect.get(M.Database,t.database)??M.Database.MySQL,e.language=t.language===`C#`?M.Language.csharp:qf(M.Language,t.language,M.Language.GraphQL),e.tableNameCase=qf(M.NameCase,t.tableCase,M.NameCase.pascalCase),e.columnNameCase=qf(M.NameCase,t.columnCase,M.NameCase.camelCase),e.bracketType=qf(M.BracketType,t.bracketType,M.BracketType.none),e.relationshipDataTypeSync=t.setting.relationshipDataTypeSync,e.relationshipOptimization=t.setting.relationshipOptimization;let i=t.setting.columnOrder.map(e=>M.ColumnType[e]);oe(M.ColumnTypeList,i).length===0&&(e.columnOrder=i)}function Lm(e,t){let n=t.tables.filter(({id:e})=>!!e),r=t.indexes.filter(({id:e})=>!!e);e.doc.tableIds=n.map(({id:e})=>e),e.doc.indexIds=r.map(({id:e})=>e);for(let t of n){let n=Rp();n.id=t.id,n.name=t.name,n.comment=t.comment,n.columnIds=t.columns.map(({id:e})=>e),n.seqColumnIds=[...n.columnIds],n.ui.y=t.ui.top,n.ui.x=t.ui.left,n.ui.zIndex=t.ui.zIndex,n.ui.widthName=t.ui.widthName,n.ui.widthComment=t.ui.widthComment,n.ui.color=t.ui.color??``;for(let n of t.columns){let r=Bp();r.id=n.id,r.tableId=t.id,r.name=n.name,r.comment=n.comment,r.dataType=n.dataType,r.default=n.default,r.options=Object.keys(n.option).reduce((e,t)=>qf(n.option,t,!1)?e|qf(M.ColumnOption,t,0):e,0),r.ui.widthName=n.ui.widthName,r.ui.widthComment=n.ui.widthComment,r.ui.widthDataType=n.ui.widthDataType,r.ui.widthDefault=n.ui.widthDefault,n.ui.pfk?r.ui.keys=M.ColumnUIKey.primaryKey|M.ColumnUIKey.foreignKey:n.ui.pk?r.ui.keys=M.ColumnUIKey.primaryKey:n.ui.fk&&(r.ui.keys=M.ColumnUIKey.foreignKey),e.collections.tableColumnEntities[r.id]=r}e.collections.tableEntities[n.id]=n}for(let t of r){let n=Qf();n.id=t.id,n.name=t.name,n.tableId=t.tableId,n.unique=t.unique;for(let r of t.columns){let i=w(),a=np();n.indexColumnIds.push(i),n.seqIndexColumnIds.push(i),a.id=i,a.indexId=t.id,a.columnId=r.id,a.orderType=qf(M.OrderType,r.orderType,M.OrderType.ASC),e.collections.indexColumnEntities[a.id]=a}e.collections.indexEntities[n.id]=n}}function Rm(e,t){let n=t.memos.filter(({id:e})=>!!e);e.doc.memoIds=n.map(({id:e})=>e);for(let t of n){let n=ip();n.id=t.id,n.value=t.value,n.ui.y=t.ui.top,n.ui.x=t.ui.left,n.ui.width=t.ui.width,n.ui.height=t.ui.height,n.ui.zIndex=t.ui.zIndex,n.ui.color=t.ui.color??``,e.collections.memoEntities[n.id]=n}}function zm(e,t){let n=t.relationships.filter(({id:e})=>!!e);e.doc.relationshipIds=n.map(({id:e})=>e);for(let t of n){let n=fp();n.id=t.id,n.identification=t.identification,n.relationshipType=qf(M.RelationshipType,t.relationshipType,M.RelationshipType.ZeroN),n.startRelationshipType=qf(M.StartRelationshipType,t.startRelationshipType===`Ring`?`ring`:`dash`,M.StartRelationshipType.dash),n.start.tableId=t.start.tableId,n.start.columnIds=t.start.columnIds,n.start.x=t.start.x,n.start.y=t.start.y,n.start.direction=qf(M.Direction,t.start.direction,M.Direction.bottom),n.end.tableId=t.end.tableId,n.end.columnIds=t.end.columnIds,n.end.x=t.end.x,n.end.y=t.end.y,n.end.direction=qf(M.Direction,t.end.direction,M.Direction.bottom),e.collections.relationshipEntities[n.id]=n}}function Bm(e,t){return(e&t)===t}function Vm(e){let t=JSON.parse(e);return Reflect.get(t,`version`)===`3.0.0`?Hp(t):Fm(Pm(t))}function Hm(e){let t=ge(e,[`$schema`,`version`,`settings`,`doc`,`collections`]),n={...t.settings};return t.settings=n,Bm(n.ignoreSaveSettings,M.SaveSettingType.scroll)&&(n.originX=0,n.originY=0),Bm(n.ignoreSaveSettings,M.SaveSettingType.zoomLevel)&&(n.zoomLevel=1),JSON.stringify(t,null,2)}const P={changeHasHistory:`editor.changeHasHistory`,selectAll:`editor.selectAll`,unselectAll:`editor.unselectAll`,select:`editor.select`,changeViewport:`editor.changeViewport`,clear:`editor.clear`,loadJson:`editor.loadJson`,initialClear:`editor.initialClear`,initialLoadJson:`editor.initialLoadJson`,focusTable:`editor.focusTable`,focusColumn:`editor.focusColumn`,focusTableEnd:`editor.focusTableEnd`,focusMoveTable:`editor.focusMoveTable`,editTable:`editor.editTable`,editTableEnd:`editor.editTableEnd`,editMemo:`editor.editMemo`,editMemoEnd:`editor.editMemoEnd`,scrollMemo:`editor.scrollMemo`,selectAllColumn:`editor.selectAllColumn`,drawStartRelationship:`editor.drawStartRelationship`,drawStartAddRelationship:`editor.drawStartAddRelationship`,drawEndRelationship:`editor.drawEndRelationship`,drawRelationship:`editor.drawRelationship`,hoverColumnMap:`editor.hoverColumnMap`,hoverRelationshipMap:`editor.hoverRelationshipMap`,changeOpenMap:`editor.changeOpenMap`,changeHandTool:`editor.changeHandTool`,changeZenMode:`editor.changeZenMode`,dragstartColumn:`editor.dragstartColumn`,dragendColumn:`editor.dragendColumn`,sharedMouseTracker:`editor.sharedMouseTracker`,sharedFocusTracker:`editor.sharedFocusTracker`,sharedSelectionTracker:`editor.sharedSelectionTracker`,sharedDragSelectTracker:`editor.sharedDragSelectTracker`,dragSelectRect:`editor.dragSelectRect`,validationIds:`editor.validationIds`,getLWW:`editor.getLWW`,mergeLWW:`editor.mergeLWW`,viewOpen:`editor.viewOpen`,viewClose:`editor.viewClose`,viewScrollTo:`editor.viewScrollTo`,viewStreamScrollTo:`editor.viewStreamScrollTo`,viewChangeZoomLevel:`editor.viewChangeZoomLevel`,viewStreamZoomLevel:`editor.viewStreamZoomLevel`,viewMoveTable:`editor.viewMoveTable`,viewSetLayout:`editor.viewSetLayout`,viewChangeShowMode:`editor.viewChangeShowMode`,viewSetCenters:`editor.viewSetCenters`,changeVisualizationMode:`editor.changeVisualizationMode`},Um=M.CanvasType,Wm=M.CanvasTypeList,F=M.Show,I=M.ColumnType,Gm=M.ColumnTypeList,L=M.Database,Km=M.DatabaseList;M.Language;const qm=M.LanguageList;M.NameCase;const Jm=M.NameCaseList,Ym=M.BracketType,Xm=M.BracketTypeList,Zm=M.RelationshipType;M.RelationshipTypeList;const Qm=M.StartRelationshipType;M.StartRelationshipTypeList;const R=M.Direction;M.DirectionList;const z=M.ColumnOption,B=M.ColumnUIKey,$m=M.OrderType;M.OrderTypeList,M.SaveSettingType;const eh=M.CANVAS_SIZE_MAX,th=M.CANVAS_SIZE_MIN,nh=M.CANVAS_ZOOM_MAX,rh=M.CANVAS_ZOOM_MIN;Ym.none,Ym.backtick,Ym.doubleQuote,Ym.singleQuote,I.columnName,I.columnDataType,I.columnDefault,I.columnComment,I.columnAutoIncrement,I.columnUnique,I.columnNotNull;const ih=1200;function V(e){let t=new Set(e);return e=>t.has(e)}function ah(e){return 6.25*Math.sqrt(Math.max(e,0))}function oh(e){return e>=0?e/2:ah(-e)}function sh(e,t,n){let r=oh((n.x-e.x)*t.x+(n.y-e.y)*t.y);return{x:e.x+t.x*r,y:e.y+t.y*r}}function ch(e,t,n,r){return[sh(e,t,n),sh(n,r,e)]}function lh(e,t,n,r,i=24){let a=Math.max(1,Math.floor(i)),[o,s]=ch(e,t,n,r),c=[{x:e.x,y:e.y}];for(let t=1;t<=a;t++){let r=t/a;c.push({x:uh(e.x,o.x,s.x,n.x,r),y:uh(e.y,o.y,s.y,n.y,r)})}return c}function uh(e,t,n,r,i){let a=1-i;return a*a*a*e+3*a*a*i*t+3*a*i*i*n+i*i*i*r}const H={left:`left`,right:`right`,top:`top`,bottom:`bottom`},dh=Object.values(H);V([H.top,H.bottom,H.left,H.right]);const fh=[0,0];function ph({tableId:e,x:t,y:n,direction:r}){return{tableId:e,x:t,y:n,direction:r}}const mh=()=>({epoch:0,stubSlots:new WeakMap,routes:new WeakMap,anchors:new WeakMap}),hh={document:mh(),flow:mh()},gh={flow:new WeakMap};function _h(e,t){let n=gh[t],r=n.get(e);return r||(r=Ea({version:0}),n.set(e,r)),r}function vh(e,t){return _h(e,t).version}function yh(e,t){_h(e,t).version+=1}function bh(e,t=`document`){let n=hh[t];for(let r of e){let e=n.stubSlots.delete(r),i=n.routes.delete(r),a=n.anchors.delete(r);t!==`document`&&(e||i||a)&&yh(r,t)}}const xh=(e,t)=>e[0]===t[0]&&e[1]===t[1],Sh=(e,t)=>e.x===t.x&&e.y===t.y&&e.direction===t.direction,Ch=(e,t)=>e.length===t.length&&e.every((e,n)=>e.x===t[n].x&&e.y===t[n].y);function wh(e,t,n=`document`){let r=hh[n];n!==`document`&&!xh(r.stubSlots.get(e)??fh,t)&&yh(e,n),r.stubSlots.set(e,t)}function Th(e,t=`document`){return t!==`document`&&vh(e,t),hh[t].stubSlots.get(e)??fh}function Eh(e,t,n=`document`){let r=hh[n];if(n!==`document`){let i=r.routes.get(e);(!i||!Ch(i.points,t))&&yh(e,n)}r.routes.set(e,{points:t,epoch:r.epoch})}function Dh(e,t=`document`){return t!==`document`&&vh(e,t),hh[t].routes.get(e)?.points}function Oh(e=`document`){hh[e].epoch+=1}function kh(e,t=`document`){return t===`document`?e:(vh(e,t),hh[t].anchors.get(e)??e)}function Ah(e,{start:t,end:n},r=`document`){if(r===`document`){e.start.direction=t.direction,e.start.x=t.x,e.start.y=t.y,e.end.direction=n.direction,e.end.x=n.x,e.end.y=n.y;return}let{anchors:i}=hh[r],a=i.get(e)??e;(!Sh(a.start,t)||!Sh(a.end,n))&&yh(e,r),i.set(e,{start:ph(t),end:ph(n)})}function jh(e){let t=1/0,n=1/0,r=-1/0,i=-1/0;for(let{x:a,y:o}of e)a<t&&(t=a),o<n&&(n=o),a>r&&(r=a),o>i&&(i=o);return{x:t,y:n,width:r-t,height:i-n}}function Mh({x:e,y:t,width:n,height:r},i){return{x:e-i,y:t-i,width:n+i*2,height:r+i*2}}function Nh(e=`document`){return e===`document`?2:1}function Ph(e,t=2,n=`document`){let r=hh[n],{start:i,end:a}=kh(e,n),o=r.routes.get(e),s=o&&o.epoch===r.epoch?o.points:null,c=s?0:86;if(n!==`document`){let e=jh([...s?.length?[s[0],s[s.length-1]]:[],i,a]),n=ah(Math.max(e.width,e.height)+2*c);return Mh(e,25+t+c+n)}return Mh(jh(s?[...s,i,a]:[i,a]),25+t+c)}const Fh={Databricks:`Databricks`,MariaDB:`MariaDB`,MSSQL:`MSSQL`,MySQL:`MySQL`,Oracle:`Oracle`,PostgreSQL:`PostgreSQL`,Snowflake:`Snowflake`,SQLite:`SQLite`},Ih=Object.values(Fh);Fh.Databricks,L.Databricks,Fh.MariaDB,L.MariaDB,Fh.MSSQL,L.MSSQL,Fh.MySQL,L.MySQL,Fh.Oracle,L.Oracle,Fh.PostgreSQL,L.PostgreSQL,Fh.Snowflake,L.Snowflake,Fh.SQLite,L.SQLite;const Lh=/[^0-9]/g,Rh=e=>e.replace(Lh,``),zh=e=>ie(e,th,eh),Bh=e=>ie(e,rh,nh),Vh=e=>ie(e,60,200);function Hh(e){let t=S(e)?Number(Rh(e)):e;return zh(t)}function Uh(e){return Ve(Bh(e),2)}const Wh=V(Km),Gh=V(Jm),Kh=V(Xm),qh=V(qm),Jh=V(Gm);V(Ih);const Yh=V(Wm);function U(e){return Math.max(e,60)}function Xh(e){return S(e)?e.trim():``}function Zh(e){return e<=.7}const Qh={table:`table`,memo:`memo`},$h={nameOnly:`nameOnly`,keysOnly:`keysOnly`,allFields:`allFields`},eg={flow:`flow`},tg={graph:`graph`,flow:`flow`},W={tableName:`tableName`,tableComment:`tableComment`,columnName:`columnName`,columnDataType:`columnDataType`,columnNotNull:`columnNotNull`,columnUnique:`columnUnique`,columnAutoIncrement:`columnAutoIncrement`,columnDefault:`columnDefault`,columnComment:`columnComment`},ng={ArrowUp:`ArrowUp`,ArrowRight:`ArrowRight`,ArrowDown:`ArrowDown`,ArrowLeft:`ArrowLeft`,Tab:`Tab`};V(Object.values(ng));const rg=()=>({id:w(),selectedMap:{},hasUndo:!1,hasRedo:!1,viewport:{width:ih,height:675},scrollPullPending:!1,focusTable:null,editMemoId:null,memoScrollTopMap:{},drawRelationship:null,hoverColumnMap:{},hoverRelationshipMap:{},openMap:{},handTool:!1,zenMode:!1,draggableColumn:null,draggingColumnMap:{},sharedMouseTrackerMap:{},sharedFocusTrackerMap:{},sharedSelectionTrackerMap:{},sharedDragSelectTrackerMap:{},dragSelect:null,views:{flow:null},visualizationMode:tg.graph}),ig=e=>e.settings.canvasType===Um.visualization&&e.editor.visualizationMode===tg.flow,ag=e=>ig(e)?e.editor.views.flow:null,og=(e,t)=>e.editor.views[t]!==null&&ig(e),sg=(e,t)=>t===`document`?null:e.editor.views[t];function cg(e,t=[]){let n=[...t];return{kind:e,showMode:n.length?$h.keysOnly:$h.nameOnly,positions:{},originX:0,originY:0,zoomLevel:1,centerIds:n}}function lg({collections:e},t){bh(N(e).collection(`relationshipEntities`).selectAll(),t)}const ug=(e,t)=>t?e.editor.views[t]:ag(e);function dg(e){e.views.flow=null}const fg=k(P.viewOpen),pg=(e,{payload:{kind:t,centerIds:n}})=>{lg(e,t),e.editor.views[t]=cg(t,n)},mg=k(P.viewClose),hg=(e,{payload:{kind:t}})=>{lg(e,t),e.editor.views[t]=null},gg=k(P.viewScrollTo),_g=(e,{payload:{originX:t,originY:n,kind:r}})=>{let i=ug(e,r);i&&(i.originX=Ve(t,4),i.originY=Ve(n,4))},vg=k(P.viewStreamScrollTo),yg=(e,{payload:{movementX:t,movementY:n,kind:r}})=>{let i=ug(e,r);i&&(i.originX=Ve(i.originX+t,4),i.originY=Ve(i.originY+n,4))},bg=k(P.viewChangeZoomLevel),xg=(e,{payload:{value:t,kind:n}})=>{let r=ug(e,n);r&&(r.zoomLevel=Uh(t))},Sg=k(P.viewStreamZoomLevel),Cg=(e,{payload:{value:t,kind:n}})=>{let r=ug(e,n);r&&(r.zoomLevel=Uh(r.zoomLevel+t))},wg=k(P.viewMoveTable),Tg=(e,{payload:{ids:t,movementX:n,movementY:r,kind:i}})=>{let a=ug(e,i);if(a)for(let e of t){let t=a.positions[e];t&&(t.x=Ve(t.x+n,4),t.y=Ve(t.y+r,4))}},Eg=k(P.viewSetLayout),Dg=({editor:e},{payload:{kind:t,positions:n}})=>{let r=e.views[t];r&&(r.positions=Object.fromEntries(Object.entries(n).map(([e,{x:t,y:n}])=>[e,{x:t,y:n}])))},Og=k(P.viewChangeShowMode),kg=(e,{payload:{value:t,kind:n}})=>{let r=ug(e,n);r&&(r.showMode=t)},Ag=k(P.viewSetCenters),jg=(e,{payload:{tableIds:t,kind:n}})=>{let r=ug(e,n);r&&(r.centerIds=[...t])},Mg=k(P.changeVisualizationMode),Ng=({editor:e},{payload:{value:t}})=>{e.visualizationMode=t},Pg={[P.viewOpen]:pg,[P.viewClose]:hg,[P.viewScrollTo]:_g,[P.viewStreamScrollTo]:yg,[P.viewChangeZoomLevel]:xg,[P.viewStreamZoomLevel]:Cg,[P.viewMoveTable]:Tg,[P.viewSetLayout]:Dg,[P.viewChangeShowMode]:kg,[P.viewSetCenters]:jg,[P.changeVisualizationMode]:Ng},Fg={viewOpenAction:fg,viewCloseAction:mg,viewScrollToAction:gg,viewStreamScrollToAction:vg,viewChangeZoomLevelAction:bg,viewStreamZoomLevelAction:Sg,viewMoveTableAction:wg,viewSetLayoutAction:Eg,viewChangeShowModeAction:Og,viewSetCentersAction:Ag,changeVisualizationModeAction:Mg},Ig={shared:1,changeOnly:2,following:4};function Lg(e,t){return{...ae(t),tags:x(t.tags)&&Number.isInteger(t.tags)?t.tags|e:e}}function Rg(e,t){return t.map(t=>Lg(e,t))}(e=>(...t)=>function*(n,r){yield Rg(e,Au(n,r,t))})(Ig.changeOnly);function G(e,t){return(e&t)===t}const zg=Object.freeze({tableIds:[],memoIds:[],relationshipIds:[]});function Bg(e,t,n=`document`){let{x:r,y:i}=sg(e,n)?.positions[t.id]??t.ui;return{x:r,y:i}}const Vg=e=>G(e,B.primaryKey)||G(e,B.foreignKey);function Hg(e,t){let n=N(e.collections).collection(`relationshipEntities`).selectByIds(e.doc.relationshipIds);for(let{start:e,end:r}of n)t(e.tableId,e.columnIds),t(r.tableId,r.columnIds)}function Ug(e,t){let n=new Set;return Hg(e,(e,r)=>{e===t.id&&r.forEach(e=>n.add(e))}),n}function Wg(e,t,n=`document`){let r=sg(e,n);if(!r||r.showMode===$h.allFields)return t.columnIds;if(r.showMode===$h.nameOnly)return[];let i=Ug(e,t);return N(e.collections).collection(`tableColumnEntities`).selectByIds(t.columnIds).filter(e=>Vg(e.ui.keys)||i.has(e.id)).map(e=>e.id)}function Gg(e,t){let n=new Set(e),r=new Set(n);for(let{start:e,end:i}of t)n.has(e.tableId)&&r.add(i.tableId),n.has(i.tableId)&&r.add(e.tableId);return r}function Kg(e,t=`document`){let{doc:n,collections:r}=e;if(t===`document`)return{tableIds:n.tableIds,memoIds:n.memoIds,relationshipIds:n.relationshipIds};let i=sg(e,t);if(!i)return zg;let a=N(r).collection(`relationshipEntities`).selectByIds(n.relationshipIds),o=i.centerIds.length?Gg(i.centerIds,a):new Set(Object.keys(i.positions)),s=n.tableIds.filter(e=>o.has(e)),c=new Set(s);return{tableIds:s,memoIds:[],relationshipIds:a.filter(({start:e,end:t})=>c.has(e.tableId)&&c.has(t.tableId)).map(e=>e.id)}}const qg=Ea({tableId:{}}),Jg=new Map;function Yg(e){Jg.delete(e),Reflect.deleteProperty(qg.tableId,e)}function Xg(e,t,n=`document`){let r=sg(e,n),{id:i}=e.editor;if(t===null||!r){Jg.get(i)?.kind===n&&Yg(i);return}Jg.set(i,r),qg.tableId[i]=t}function Zg(e,t,n=`document`){let{id:r}=e.editor;qg.tableId[r]===t&&Jg.get(r)?.kind===n&&Yg(r)}const Qg=Ea({tableId:{}}),$g=new Map;function e_(e){$g.delete(e),Reflect.deleteProperty(Qg.tableId,e)}function t_(e,t,n=`document`){let r=sg(e,n);if(!r)return;let{id:i}=e.editor;if(($g.get(i)===r?Qg.tableId[i]:void 0)===t){e_(i);return}$g.set(i,r),Qg.tableId[i]=t}function n_(e){return 9+e.ui.width+8+1}function r_(e){return 25+e.ui.height+8+1}let i_=0;function a_(){return i_}function o_(){i_++}function s_(e,{settings:{show:t,maxWidthComment:n},collections:r}){let i=e.ui.widthName+8;if(G(t,F.tableComment)){let t=n===-1?e.ui.widthComment:n<e.ui.widthComment?n:e.ui.widthComment;i+=t+8}let a=l_(t);i<a&&(i=a);let o=d_(N(r).collection(`tableColumnEntities`).selectByIds(e.columnIds),t,n);return i<o.width&&(i=o.width),{...o,width:9+i+8+1}}const c_=[{key:F.columnComment,width:60},{key:F.columnDataType,width:60},{key:F.columnDefault,width:60},{key:F.columnNotNull,width:35},{key:F.columnAutoIncrement,width:15},{key:F.columnUnique,width:22}];function l_(e){return c_.reduce((t,{key:n,width:r})=>G(e,n)?t+r+8:t,100)}function u_(){return{width:0,name:0,comment:0,dataType:0,default:0,notNull:0,autoIncrement:0,unique:0}}function d_(e,t,n){let r=u_();for(let i of e)r.name<i.ui.widthName&&(r.name=i.ui.widthName),G(t,F.columnComment)&&r.comment<i.ui.widthComment&&(r.comment=n===-1?i.ui.widthComment:n<i.ui.widthComment?n:i.ui.widthComment),G(t,F.columnDataType)&&r.dataType<i.ui.widthDataType&&(r.dataType=i.ui.widthDataType),G(t,F.columnDefault)&&r.default<i.ui.widthDefault&&(r.default=i.ui.widthDefault);return G(t,F.columnNotNull)&&(r.notNull=35),G(t,F.columnAutoIncrement)&&(r.autoIncrement=15),G(t,F.columnUnique)&&(r.unique=22),r.width=Object.entries(r).reduce((e,[t,n])=>t===`width`||n===0?e:e+n+8,32),r}function f_(e,t,n){let r=u_(),i=N(t.collections).collection(`tableColumnEntities`).selectByIds(n);for(let e of i)r.name=Math.max(r.name,e.ui.widthName),r.dataType=Math.max(r.dataType,e.ui.widthDataType);let a=i.length?22+r.name+8+r.dataType:0,o=Math.max(m_(e),a,154);return i.length&&(r.name+=o-a),r.width=18+o,r}function p_(e){return Math.ceil(e*1.1666666666666667*1.04)}function m_(e){return 20+p_(e.ui.widthName)}function h_(e=`document`){return e===`document`?38:24}function g_(e=`document`){return e===`document`?24:32}function __(e,t=e.columnIds.length,n=`document`){let r=n===`document`?8:0;return 9+h_(n)+t*g_(n)+r+1}function v_({doc:{tableIds:e},collections:t},{toWidth:n}){o_();let r=N(t).collection(`tableEntities`).selectByIds(e),i=N(t).collection(`tableColumnEntities`);for(let e of r){e.ui.widthName=U(n(e.name)),e.ui.widthComment=U(n(e.comment));let t=i.selectByIds(e.columnIds);for(let e of t)e.ui.widthName=U(n(e.name)),e.ui.widthDataType=U(n(e.dataType)),e.ui.widthDefault=U(n(e.default)),e.ui.widthComment=U(n(e.comment))}}const y_={document:new WeakMap,flow:new WeakMap};function b_(e,t,n){let r=y_[n],i=n===`document`?x_(e,t):S_(e,t,n),a=r.get(t);if(a?.key===i.key)return a;let o=i.measure();return r.set(t,o),o}function x_(e,t){let{settings:n}=e,r=`${a_()}|${n.show}|${n.maxWidthComment}|${t.ui.widthName}|${t.ui.widthComment}|${t.columnIds.length}`;return{key:r,measure:()=>({key:r,width:s_(t,e).width,height:__(t)})}}function S_(e,t,n){let r=sg(e,n)?.showMode??$h.allFields,i=Wg(e,t,n),a=`${a_()}|${t.ui.widthName}|${t.columnIds.length}|${r}|${i.length}`;return{key:a,measure:()=>({key:a,width:f_(t,e,i).width,height:__(t,i.length,n)})}}function C_(e,t,n=`document`){let{width:r,height:i}=b_(e,t,n),{x:a,y:o}=Bg(e,t,n);return{width:r,height:i,top:{x:a+r/2,y:o},bottom:{x:a+r/2,y:o+i},left:{x:a,y:o+i/2},right:{x:a+r,y:o+i/2},lt:{x:a,y:o},rt:{x:a+r,y:o},lb:{x:a,y:o+i},rb:{x:a+r,y:o+i}}}function w_(e,t){return Math.sqrt((e.x-t.x)**2+(e.y-t.y)**2)}function T_(e,t,n=`document`){let{width:r,height:i}=C_(e,t,n),{x:a,y:o}=Bg(e,t,n);return{x:a,y:o,width:r,height:i}}function E_(e,t,n=`document`){return n===`document`?s_(t,e):f_(t,e,Wg(e,t,n))}function D_(e,t,n,r=`document`){let{x:i,y:a,width:o}=T_(e,t,r),s=g_(r);return{x:i+9,y:a+9+h_(r)+n*s,width:o-18,height:s}}function O_(e){let{x:t,y:n}=e.ui;return{x:t,y:n,width:n_(e),height:r_(e)}}function k_(e,t){let n=Math.min(e.x,t.x),r=Math.min(e.y,t.y);return{x:n,y:r,width:Math.max(e.x+e.width,t.x+t.width)-n,height:Math.max(e.y+e.height,t.y+t.height)-r}}function A_(e){return N_(e,[])}function j_(e,t=`document`){return N_(e,[],t)}function M_(e,t=[],n=`document`){let{collections:r,doc:i}=e,{tableIds:a,memoIds:o}=n===`document`?i:Kg(e,n),s=new Map(t.map(e=>[e.id,e])),c=N(r).collection(`tableEntities`).selectByIds(a),l=N(r).collection(`memoEntities`).selectByIds(o);return[...c.map(t=>{let r=T_(e,t,n),i=s.get(t.id);return i?{...r,x:i.x,y:i.y}:r}),...l.map(O_)]}function N_(e,t,n=`document`){let r=M_(e,t,n);return r.length?r.reduce(k_):null}function P_(e){return ag(e)??e.settings}function F_(e,t=`document`){return sg(e,t)??e.settings}function I_({originX:e,originY:t}){return{x:e,y:t}}const L_=e=>e>0?e:1;function R_(e,t){let n=I_(e);return{x:n.x+t.x*e.zoomLevel,y:n.y+t.y*e.zoomLevel}}function z_(e,t){let n=L_(e.zoomLevel),r=I_({...e,zoomLevel:n});return{x:(t.x-r.x)/n,y:(t.y-r.y)/n}}function B_(e,t,n){return{x:n.x-t.x*e,y:n.y-t.y*e}}function V_(e){let{viewportWidth:t,viewportHeight:n}=e,r=L_(e.zoomLevel),i=I_({...e,zoomLevel:r}),a=(t>0?t:ih)/r,o=(n>0?n:675)/r;return{x:-i.x/r-a,y:-i.y/r-o,width:a*3,height:o*3}}function H_(e,t=`document`){let{originX:n,originY:r,zoomLevel:i}=F_(e,t),{viewport:a}=e.editor;return V_({originX:n,originY:r,zoomLevel:i,viewportWidth:a.width,viewportHeight:a.height})}function U_(e,t){return!(t.x>e.x+e.width||t.x+t.width<e.x||t.y>e.y+e.height||t.y+t.height<e.y)}function W_(e,t,n,r=`document`){return U_(e,T_(t,n,r))}function G_(e,t,n,r=`document`){return U_(e,Ph(t,n,r))}const K_=Ea({frozen:{}}),q_=(e,t)=>`${e.editor.id}:${t}`,J_=(e,t)=>K_.frozen[q_(e,t)]??null;function Y_(e,t=`document`){let{originX:n,originY:r}=F_(e,t);K_.frozen[q_(e,t)]={content:j_(e,t),origin:{x:n,y:r}}}function X_(e,t=`document`){Reflect.deleteProperty(K_.frozen,q_(e,t))}function Z_(e,t=`document`){let n=J_(e,t);return n?n.content:j_(e,t)}const K={changeDatabaseName:`settings.changeDatabaseName`,changeZoomLevel:`settings.changeZoomLevel`,streamZoomLevel:`settings.streamZoomLevel`,scrollTo:`settings.scrollTo`,streamScrollTo:`settings.streamScrollTo`,changeShow:`settings.changeShow`,changeDatabase:`settings.changeDatabase`,changeCanvasType:`settings.changeCanvasType`,changeLanguage:`settings.changeLanguage`,changeTableNameCase:`settings.changeTableNameCase`,changeColumnNameCase:`settings.changeColumnNameCase`,changeBracketType:`settings.changeBracketType`,changeRelationshipDataTypeSync:`settings.changeRelationshipDataTypeSync`,changeRelationshipOptimization:`settings.changeRelationshipOptimization`,changeColumnOrder:`settings.changeColumnOrder`,changeMaxWidthComment:`settings.changeMaxWidthComment`,changeIgnoreSaveSettings:`settings.changeIgnoreSaveSettings`},Q_=e=>e+0;function $_(e,t,n,r){let i=-t*r,a=n-e*r;return{min:Q_(Math.min(i,a)),max:Q_(Math.max(i,a))}}function ev(e,t,n,r,i){let{min:a,max:o}=$_(t,n,r,i);if(a<e&&e<o)return e;let s=Math.min(r,(n-t)*i);return Q_(Math.min(Math.max(e,a+s),o-s))}const tv=k(K.changeDatabaseName),nv=({settings:e,lww:t},{payload:{value:n},version:r},{clock:i})=>{qp(t,r??i.getVersion(),`settings.databaseName`,`settings`,`databaseName`,()=>{e.databaseName=n})},rv=k(K.changeZoomLevel),iv=({settings:e},{payload:{value:t},tags:n})=>{!y(n)&&G(n,Ig.following)||(e.zoomLevel=Uh(t))},av=k(K.streamZoomLevel),ov=({settings:e},{payload:{value:t},tags:n})=>{!y(n)&&G(n,Ig.following)||(e.zoomLevel=Uh(e.zoomLevel+t))},sv=({width:e,height:t})=>e>0&&t>0;function cv(e){let{settings:{originX:t,originY:n,zoomLevel:r},editor:{viewport:i}}=e,a=Z_(e);return!a||!sv(i)?{x:t,y:n}:{x:ev(t,a.x,a.x+a.width,i.width,r),y:ev(n,a.y,a.y+a.height,i.height,r)}}const lv=k(K.scrollTo),uv=({settings:e},{payload:{originX:t,originY:n},tags:r})=>{!y(r)&&G(r,Ig.following)||(e.originX=Ve(t,4),e.originY=Ve(n,4))},dv=k(K.streamScrollTo),fv=({settings:e},{payload:{movementX:t,movementY:n},tags:r})=>{!y(r)&&G(r,Ig.following)||(e.originX=Ve(e.originX+t,4),e.originY=Ve(e.originY+n,4))},pv=k(K.changeShow),mv=({settings:e},{payload:{show:t,value:n}})=>{e.show=n?e.show|t:e.show&~t},hv=k(K.changeDatabase),gv=({settings:e},{payload:{value:t}})=>{Wh(t)&&(e.database=t)},_v=k(K.changeCanvasType),vv=({settings:e},{payload:{value:t},tags:n})=>{!y(n)&&G(n,Ig.following)||(e.canvasType=t)},yv=k(K.changeLanguage),bv=({settings:e},{payload:{value:t}})=>{qh(t)&&(e.language=t)},xv=k(K.changeTableNameCase),Sv=({settings:e},{payload:{value:t}})=>{Gh(t)&&(e.tableNameCase=t)},Cv=k(K.changeColumnNameCase),wv=({settings:e},{payload:{value:t}})=>{Gh(t)&&(e.columnNameCase=t)},Tv=k(K.changeBracketType),Ev=({settings:e},{payload:{value:t}})=>{Kh(t)&&(e.bracketType=t)},Dv=k(K.changeRelationshipDataTypeSync),Ov=({settings:e},{payload:{value:t}})=>{e.relationshipDataTypeSync=t},kv=k(K.changeRelationshipOptimization),Av=({settings:e},{payload:{value:t}})=>{e.relationshipOptimization=t},jv=k(K.changeColumnOrder),Mv=({settings:e},{payload:{value:t,target:n}})=>{if(t===n||!Jh(t)||!Jh(n))return;let r=e.columnOrder.indexOf(t),i=e.columnOrder.indexOf(n);r!==-1&&i!==-1&&(e.columnOrder.splice(r,1),e.columnOrder.splice(i,0,t))},Nv=k(K.changeMaxWidthComment),Pv=({settings:e},{payload:{value:t}})=>{e.maxWidthComment=t===-1?t:Vh(t)},Fv=k(K.changeIgnoreSaveSettings),Iv=({settings:e},{payload:{saveSettingType:t,value:n}})=>{e.ignoreSaveSettings=n?e.ignoreSaveSettings|t:e.ignoreSaveSettings&~t},Lv={[K.changeDatabaseName]:nv,[K.changeZoomLevel]:iv,[K.streamZoomLevel]:ov,[K.scrollTo]:uv,[K.streamScrollTo]:fv,[K.changeShow]:mv,[K.changeDatabase]:gv,[K.changeCanvasType]:vv,[K.changeLanguage]:bv,[K.changeTableNameCase]:Sv,[K.changeColumnNameCase]:wv,[K.changeBracketType]:Ev,[K.changeRelationshipDataTypeSync]:Ov,[K.changeRelationshipOptimization]:Av,[K.changeColumnOrder]:Mv,[K.changeMaxWidthComment]:Pv,[K.changeIgnoreSaveSettings]:Iv},Rv={changeDatabaseNameAction:tv,changeZoomLevelAction:rv,streamZoomLevelAction:av,scrollToAction:lv,streamScrollToAction:dv,changeShowAction:pv,changeDatabaseAction:hv,changeCanvasTypeAction:_v,changeLanguageAction:yv,changeTableNameCaseAction:xv,changeColumnNameCaseAction:Cv,changeBracketTypeAction:Tv,changeRelationshipDataTypeSyncAction:Dv,changeRelationshipOptimizationAction:kv,changeColumnOrderAction:jv,changeMaxWidthCommentAction:Nv,changeIgnoreSaveSettingsAction:Fv},zv=e=>e.ui.zIndex,Bv=(e,t)=>Math.max(1,...e.map(zv),...t.map(zv))+1,Vv=e=>t=>e.y===t.y&&e.x===t.x;function Hv(e,t,n){let r=z_(e,{x:200,y:100}),i=[...t,...n].map(({ui:e})=>e);for(;i.some(Vv(r));)r.x+=50,r.y+=50;return r}function Uv(){let e=Date.now();return{updateAt:e,createAt:e}}function Wv(e,t){return e<t?_e(e,t+1):_e(t,e+1)}function Gv(e){return be(re(e??``))}function Kv(e,t){return ye([...e,t])}function qv(e,t,n){if(!t||t===n)return[n];let r=e.indexOf(t),i=e.indexOf(n);return r===-1?[n]:Wv(r,i).map(t=>e[t])}function Jv(e,t,n,r){return ye([...t,...qv(e,n,r)])}const Yv={[I.columnName]:!0,[I.columnDataType]:F.columnDataType,[I.columnNotNull]:F.columnNotNull,[I.columnUnique]:F.columnUnique,[I.columnAutoIncrement]:F.columnAutoIncrement,[I.columnDefault]:F.columnDefault,[I.columnComment]:F.columnComment},Xv={[I.columnName]:W.columnName,[I.columnDataType]:W.columnDataType,[I.columnNotNull]:W.columnNotNull,[I.columnUnique]:W.columnUnique,[I.columnAutoIncrement]:W.columnAutoIncrement,[I.columnDefault]:W.columnDefault,[I.columnComment]:W.columnComment},Zv=[W.tableName,W.tableComment];function Qv({settings:{show:e,columnOrder:t}}){return t.filter(t=>{let n=Yv[t];return n===!0||G(e,n)}).map(e=>Xv[e])}function $v({collections:e,editor:{focusTable:t}}){return t?!!N(e).collection(`tableEntities`).selectById(t.tableId)?.columnIds.length:!1}function ey(e){let{editor:{focusTable:t}}=e;if(!t)return!0;let n=Qv(e);return n.indexOf(t.focusType)===n.length-1}function ty(e){let{editor:{focusTable:t}}=e;return!t||Qv(e).indexOf(t.focusType)===0}function ny({collections:e,editor:{focusTable:t}}){if(!t?.columnId)return!0;let n=N(e).collection(`tableEntities`).selectById(t.tableId);return!n||n.columnIds.indexOf(t.columnId)===n.columnIds.length-1}function ry({collections:e,editor:{focusTable:t}}){if(!t?.columnId)return!0;let n=N(e).collection(`tableEntities`).selectById(t.tableId);return!n||n.columnIds.indexOf(t.columnId)===0}function iy(e){let t=Qv(e);return t[t.length-1]}function ay(e){return Qv(e)[0]}function oy(e){let{editor:{focusTable:t}}=e;if(!t)return W.columnName;let n=Qv(e),r=n.indexOf(t.focusType);return ey(e)?n[0]:n[r+1]}function sy(e){let{editor:{focusTable:t}}=e;if(!t)return W.columnName;let n=Qv(e),r=n.indexOf(t.focusType);return ty(e)?n[n.length-1]:n[r-1]}function cy(e,t){let{collections:n,editor:{focusTable:r}}=e;if(!r?.columnId)return null;let i=N(n).collection(`tableEntities`).selectById(r.tableId);if(!i)return null;let a=i.columnIds.indexOf(r.columnId);if(a<=0)return null;let o=null;for(let e=a;e>=0;e--){let n=i.columnIds[e];if(!t.includes(n)){o=n;break}}return o}function ly({settings:{show:e}}){return G(e,F.tableComment)?Zv:[W.tableName]}function uy(e){let{editor:{focusTable:t}}=e;if(!t)return!0;let n=ly(e);return n.indexOf(t.focusType)===n.length-1}function dy(e){let{editor:{focusTable:t}}=e;return!t||ly(e).indexOf(t.focusType)===0}const fy=V(Zv);function py(e){let{editor:{focusTable:t}}=e;if(!t)return W.tableName;let n=ly(e),r=n.indexOf(t.focusType);return uy(e)?n[0]:n[r+1]}function my(e){let{editor:{focusTable:t}}=e;if(!t)return W.tableName;let n=ly(e),r=n.indexOf(t.focusType);return dy(e)?n[n.length-1]:n[r-1]}function hy(e,t){let{collections:n,editor:{focusTable:r}}=e;if(!r)return;let i=N(n).collection(`tableEntities`).selectById(r.tableId);if(i){if(fy(r.focusType)){if($v(e)){let t=i.columnIds[i.columnIds.length-1];r.focusType=iy(e),r.columnId=t,r.prevSelectColumnId=t,r.selectColumnIds=[t]}}else if(ry(e))r.focusType=W.tableName,r.columnId=null,r.prevSelectColumnId=null,r.selectColumnIds=[];else if(r.columnId){let e=i.columnIds.indexOf(r.columnId),n=i.columnIds[e-1];r.columnId=n,r.prevSelectColumnId=n,r.selectColumnIds=t.shiftKey&&t.moveKey!==ng.Tab?Kv(r.selectColumnIds,n):[n]}}}function gy(e,t){let{collections:n,editor:{focusTable:r}}=e;if(!r)return;let i=N(n).collection(`tableEntities`).selectById(r.tableId);if(i){if(fy(r.focusType)){if($v(e)){let t=i.columnIds[0];r.focusType=ay(e),r.columnId=t,r.prevSelectColumnId=t,r.selectColumnIds=[t]}}else if(ny(e))r.focusType=W.tableName,r.columnId=null,r.prevSelectColumnId=null,r.selectColumnIds=[];else if(r.columnId){let e=i.columnIds.indexOf(r.columnId),n=i.columnIds[e+1];r.columnId=n,r.prevSelectColumnId=n,r.selectColumnIds=t.shiftKey&&t.moveKey!==ng.Tab?Kv(r.selectColumnIds,n):[n]}}}function _y(e,t){let{collections:n,editor:{focusTable:r}}=e;if(!r)return;let i=N(n).collection(`tableEntities`).selectById(r.tableId);if(i){if(fy(r.focusType)){if(dy(e)){if($v(e)){let t=i.columnIds[i.columnIds.length-1];r.focusType=iy(e),r.columnId=t,r.prevSelectColumnId=t,r.selectColumnIds=[t]}else r.focusType=my(e)}else r.focusType=my(e)}else if(ty(e)){if(ry(e))r.focusType=G(e.settings.show,F.tableComment)?W.tableComment:W.tableName,r.columnId=null,r.prevSelectColumnId=null,r.selectColumnIds=[];else if(r.columnId){let n=i.columnIds.indexOf(r.columnId),a=i.columnIds[n-1];r.focusType=iy(e),r.columnId=a,r.prevSelectColumnId=a,r.selectColumnIds=t.shiftKey&&t.moveKey!==ng.Tab?Kv(r.selectColumnIds,a):[a]}}else r.focusType=sy(e),!t.shiftKey&&r.columnId&&(r.prevSelectColumnId=r.columnId,r.selectColumnIds=[r.columnId])}}function vy(e,t){let{collections:n,editor:{focusTable:r}}=e;if(!r)return;let i=N(n).collection(`tableEntities`).selectById(r.tableId);if(i){if(fy(r.focusType)){if(uy(e)){if($v(e)){let t=i.columnIds[0];r.focusType=ay(e),r.columnId=t,r.prevSelectColumnId=t,r.selectColumnIds=[t]}else r.focusType=py(e)}else r.focusType=py(e)}else if(ey(e)){if(ny(e))r.focusType=W.tableName,r.columnId=null,r.prevSelectColumnId=null,r.selectColumnIds=[];else if(r.columnId){let n=i.columnIds.indexOf(r.columnId),a=i.columnIds[n+1];r.focusType=ay(e),r.columnId=a,r.prevSelectColumnId=a,r.selectColumnIds=t.shiftKey&&t.moveKey!==ng.Tab?Kv(r.selectColumnIds,a):[a]}}else r.focusType=oy(e),!t.shiftKey&&r.columnId&&(r.prevSelectColumnId=r.columnId,r.selectColumnIds=[r.columnId])}}const yy=3e4,by=9e4,xy=3e3,Sy=k(P.changeHasHistory),Cy=({editor:e},{payload:{hasRedo:t,hasUndo:n}})=>{e.hasRedo=t,e.hasUndo=n},wy=k(P.selectAll),Ty=({editor:e,doc:t})=>{let n=t.tableIds.reduce((e,t)=>(e[t]=Qh.table,e),{});e.selectedMap={...t.memoIds.reduce((e,t)=>(e[t]=Qh.memo,e),{}),...n}},Ey=k(P.unselectAll),Dy=({editor:e})=>{Object.keys(e.selectedMap).forEach(t=>{Reflect.deleteProperty(e.selectedMap,t)})},Oy=k(P.select),ky=({editor:e},{payload:t})=>{Object.assign(e.selectedMap,t)},Ay=k(P.changeViewport),jy=(e,{payload:{width:t,height:n}})=>{e.editor.viewport.width=t,e.editor.viewport.height=n,e.editor.scrollPullPending&&Py(e)},My=k(P.clear),Ny=e=>{let{doc:t,collections:n}=Hp({});e.doc=t,e.collections=n,e.editor.scrollPullPending=!1,dg(e.editor)};function Py(e){let{settings:t,editor:n}=e;if(!sv(n.viewport)){n.scrollPullPending=!0;return}let r=cv(e);t.originX=Ve(r.x,4),t.originY=Ve(r.y,4),n.scrollPullPending=!1}const Fy=k(P.loadJson),Iy=(e,{payload:{value:t}})=>{let{version:n,settings:r,doc:i,collections:a}=Vm(t);Yh(r.canvasType)||(r.canvasType=Um.ERD),Object.assign(e.settings,r),e.version=n,e.doc=i,e.collections=a,dg(e.editor),Py(e)},Ly=k(P.initialClear),Ry=e=>{let{doc:t,collections:n}=Hp({});e.doc=t,e.collections=n,e.editor.scrollPullPending=!1,dg(e.editor)},zy=k(P.initialLoadJson),By=(e,{payload:{value:t}})=>{let{version:n,settings:r,doc:i,collections:a}=Vm(t);Yh(r.canvasType)||(r.canvasType=Um.ERD),Object.assign(e.settings,r),e.version=n,e.doc=i,e.collections=a,dg(e.editor),Py(e)},Vy=k(P.focusTable),Hy=({editor:e,collections:t},{payload:n})=>{let r=N(t).collection(`tableEntities`);if(e.focusTable?.tableId===n.tableId&&n.focusType)e.focusTable.focusType=n.focusType,e.focusTable.columnId=null,e.focusTable.prevSelectColumnId=null,e.focusTable.selectColumnIds=[];else if(n.focusType){let t=r.selectById(n.tableId);if(!t)return;e.focusTable={tableId:t.id,focusType:n.focusType,columnId:null,prevSelectColumnId:null,selectColumnIds:[],edit:!1}}else if(e.focusTable?.tableId!==n.tableId){let t=r.selectById(n.tableId);if(!t)return;e.focusTable={tableId:t.id,focusType:W.tableName,columnId:null,prevSelectColumnId:null,selectColumnIds:[],edit:!1}}},Uy=k(P.focusColumn),Wy=({editor:e,collections:t},{payload:n})=>{let r=N(t).collection(`tableEntities`);if(e.focusTable?.tableId===n.tableId){let t=r.selectById(n.tableId);if(!t)return;let i=e.focusTable;i.columnId=n.columnId,i.focusType=n.focusType,i.selectColumnIds=n.$mod&&n.shiftKey?Jv(t.columnIds,i.selectColumnIds,i.prevSelectColumnId,i.columnId):n.shiftKey?qv(t.columnIds,i.prevSelectColumnId,i.columnId):n.$mod?Kv(i.selectColumnIds,n.columnId):[n.columnId],i.prevSelectColumnId=n.columnId}else{let t=r.selectById(n.tableId);if(!t)return;e.focusTable={tableId:t.id,focusType:n.focusType,columnId:n.columnId,prevSelectColumnId:n.columnId,selectColumnIds:[n.columnId],edit:!1}}},Gy=k(P.focusTableEnd),Ky=({editor:e})=>{e.focusTable=null},qy=k(P.focusMoveTable),Jy=(e,{payload:t})=>{let{editor:{focusTable:n}}=e;if(n)switch(n.edit=!1,t.moveKey){case ng.ArrowUp:hy(e,t);break;case ng.ArrowDown:gy(e,t);break;case ng.ArrowLeft:_y(e,t);break;case ng.ArrowRight:vy(e,t);break;case ng.Tab:t.shiftKey?_y(e,t):vy(e,t)}},Yy=k(P.editTable),Xy=({editor:{focusTable:e}})=>{e&&(e.edit=!0)},Zy=k(P.editTableEnd),Qy=({editor:{focusTable:e}})=>{e&&(e.edit=!1)},$y=k(P.editMemo),eb=({editor:e},{payload:{id:t}})=>{e.editMemoId=t},tb=k(P.editMemoEnd),nb=({editor:e})=>{e.editMemoId=null},rb=k(P.scrollMemo),ib=({editor:e},{payload:{id:t,scrollTop:n}})=>{e.memoScrollTopMap[t]=Number.isFinite(n)?Math.max(0,n):0},ab=k(P.selectAllColumn),ob=({collections:e,editor:{focusTable:t}})=>{if(!t)return;let n=N(e).collection(`tableEntities`).selectById(t.tableId);n&&(t.selectColumnIds=[...n.columnIds])},sb=k(P.drawStartRelationship),cb=({editor:e},{payload:{relationshipType:t}})=>{e.drawRelationship={relationshipType:t,start:null,end:{x:0,y:0}}},lb=k(P.drawStartAddRelationship),ub=({editor:{drawRelationship:e},collections:t},{payload:{tableId:n}})=>{if(!e)return;let r=N(t).collection(`tableEntities`).selectById(n);r&&(e.start={tableId:n,x:r.ui.x,y:r.ui.y})},db=k(P.drawEndRelationship),fb=({editor:e})=>{e.drawRelationship=null},pb=k(P.drawRelationship),mb=({editor:{drawRelationship:e},settings:t},{payload:{x:n,y:r}})=>{if(!e?.start)return;let i=z_(t,{x:n,y:r});e.end.x=i.x,e.end.y=i.y},hb=k(P.hoverColumnMap),gb=({editor:e},{payload:{columnIds:t}})=>{Object.keys(e.hoverColumnMap).forEach(t=>{Reflect.deleteProperty(e.hoverColumnMap,t)});for(let n of t)e.hoverColumnMap[n]=!0},_b=k(P.hoverRelationshipMap),vb=({editor:e},{payload:{relationshipIds:t}})=>{Object.keys(e.hoverRelationshipMap).forEach(t=>{Reflect.deleteProperty(e.hoverRelationshipMap,t)});for(let n of t)e.hoverRelationshipMap[n]=!0},yb=k(P.changeOpenMap),bb=({editor:e},{payload:t})=>{Object.assign(e.openMap,t)},xb=k(P.changeHandTool),Sb=({editor:e},{payload:{value:t}})=>{e.handTool=t,t&&(e.drawRelationship=null)},Cb=k(P.changeZenMode),wb=({editor:e},{payload:{value:t}})=>{e.zenMode=t},Tb=k(P.dragstartColumn),Eb=({editor:e},{payload:t})=>{e.draggableColumn=t,t.columnIds.forEach(t=>{e.draggingColumnMap[t]=!0})},Db=k(P.dragendColumn),Ob=({editor:e})=>{e.draggableColumn=null,Object.keys(e.draggingColumnMap).forEach(t=>{Reflect.deleteProperty(e.draggingColumnMap,t)})},kb=k(P.sharedMouseTracker),Ab=({editor:e},{payload:t,tags:n,meta:r})=>{if(y(n)||!G(n,Ig.shared)||!S(r?.editorId)||e.id===r.editorId)return;let i=e.sharedMouseTrackerMap[r.editorId],a=!S(r.nickname)||Be(r.nickname.trim())?`user`:r.nickname.trim();i?(i.x=t.x,i.y=t.y,i.nickname=a,clearTimeout(i.timeoutId),i.timeoutId=setTimeout(()=>{Reflect.deleteProperty(e.sharedMouseTrackerMap,r.editorId)},yy)):e.sharedMouseTrackerMap[r.editorId]={...t,id:r.editorId,nickname:a,timeoutId:setTimeout(()=>{Reflect.deleteProperty(e.sharedMouseTrackerMap,r.editorId)},yy)}},jb=k(P.sharedFocusTracker),Mb=({editor:e},{payload:{focus:t},tags:n,meta:r})=>{if(y(n)||!G(n,Ig.shared)||!S(r?.editorId)||e.id===r.editorId)return;let i=e.sharedFocusTrackerMap[r.editorId];if(!t){i&&(clearTimeout(i.timeoutId),Reflect.deleteProperty(e.sharedFocusTrackerMap,r.editorId));return}i?(i.tableId=t.tableId,i.columnId=t.columnId,i.focusType=t.focusType,clearTimeout(i.timeoutId),i.timeoutId=setTimeout(()=>{Reflect.deleteProperty(e.sharedFocusTrackerMap,r.editorId)},by)):e.sharedFocusTrackerMap[r.editorId]={...t,id:r.editorId,timeoutId:setTimeout(()=>{Reflect.deleteProperty(e.sharedFocusTrackerMap,r.editorId)},by)}},Nb=k(P.sharedSelectionTracker),Pb=({editor:e},{payload:{selectedIds:t},tags:n,meta:r})=>{if(y(n)||!G(n,Ig.shared)||!S(r?.editorId)||e.id===r.editorId)return;let i=e.sharedSelectionTrackerMap[r.editorId];if(!t.length){i&&(clearTimeout(i.timeoutId),Reflect.deleteProperty(e.sharedSelectionTrackerMap,r.editorId));return}i?(i.selectedIds=t,clearTimeout(i.timeoutId),i.timeoutId=setTimeout(()=>{Reflect.deleteProperty(e.sharedSelectionTrackerMap,r.editorId)},by)):e.sharedSelectionTrackerMap[r.editorId]={id:r.editorId,selectedIds:t,timeoutId:setTimeout(()=>{Reflect.deleteProperty(e.sharedSelectionTrackerMap,r.editorId)},by)}},Fb=k(P.sharedDragSelectTracker),Ib=({editor:e},{payload:{rect:t},tags:n,meta:r})=>{if(y(n)||!G(n,Ig.shared)||!S(r?.editorId)||e.id===r.editorId)return;let i=e.sharedDragSelectTrackerMap[r.editorId];if(!t){i&&(clearTimeout(i.timeoutId),Reflect.deleteProperty(e.sharedDragSelectTrackerMap,r.editorId));return}i?(i.x=t.x,i.y=t.y,i.w=t.w,i.h=t.h,clearTimeout(i.timeoutId),i.timeoutId=setTimeout(()=>{Reflect.deleteProperty(e.sharedDragSelectTrackerMap,r.editorId)},xy)):e.sharedDragSelectTrackerMap[r.editorId]={...t,id:r.editorId,timeoutId:setTimeout(()=>{Reflect.deleteProperty(e.sharedDragSelectTrackerMap,r.editorId)},xy)}},Lb=k(P.dragSelectRect),Rb=({editor:e},{payload:{rect:t}})=>{e.dragSelect=t},zb=k(P.validationIds),Bb=({doc:e,collections:t})=>{let n=N(t).collection(`tableEntities`),r=N(t).collection(`tableColumnEntities`),i=N(t).collection(`indexEntities`),a=N(t).collection(`indexColumnEntities`),o=N(t).collection(`relationshipEntities`),s=N(t).collection(`memoEntities`),c=e.tableIds.filter(e=>!n.selectById(e)),l=e.relationshipIds.filter(e=>!o.selectById(e)),u=e.indexIds.filter(e=>!i.selectById(e)),d=e.memoIds.filter(e=>!s.selectById(e));e.tableIds=e.tableIds.filter(e=>!c.includes(e)),e.relationshipIds=e.relationshipIds.filter(e=>!l.includes(e)),e.indexIds=e.indexIds.filter(e=>!u.includes(e)),e.memoIds=e.memoIds.filter(e=>!d.includes(e)),n.selectAll().forEach(e=>{let t=e.columnIds.filter(e=>!r.selectById(e)),n=e.seqColumnIds.filter(e=>!r.selectById(e));e.columnIds=e.columnIds.filter(e=>!t.includes(e)),e.seqColumnIds=e.seqColumnIds.filter(e=>!n.includes(e))}),i.selectAll().forEach(e=>{let t=e.indexColumnIds.filter(e=>!a.selectById(e)),n=e.seqIndexColumnIds.filter(e=>!a.selectById(e));e.indexColumnIds=e.indexColumnIds.filter(e=>!t.includes(e)),e.seqIndexColumnIds=e.seqIndexColumnIds.filter(e=>!n.includes(e))})},Vb=k(P.getLWW),Hb=me,Ub=k(P.mergeLWW),Wb=({lww:e},{payload:{lww:t}})=>{Object.entries(t).forEach(([t,[n,r,i,a]])=>{Gp(e,r,t,n,me),Kp(e,i,t,n,me),Object.entries(a).forEach(([r,i])=>{qp(e,i,t,n,r,me)})})},Gb={[P.changeHasHistory]:Cy,[P.selectAll]:Ty,[P.unselectAll]:Dy,[P.select]:ky,[P.changeViewport]:jy,[P.clear]:Ny,[P.loadJson]:Iy,[P.initialClear]:Ry,[P.initialLoadJson]:By,[P.focusTable]:Hy,[P.focusColumn]:Wy,[P.focusTableEnd]:Ky,[P.focusMoveTable]:Jy,[P.editTable]:Xy,[P.editTableEnd]:Qy,[P.editMemo]:eb,[P.editMemoEnd]:nb,[P.scrollMemo]:ib,[P.selectAllColumn]:ob,[P.drawStartRelationship]:cb,[P.drawStartAddRelationship]:ub,[P.drawEndRelationship]:fb,[P.drawRelationship]:mb,[P.hoverColumnMap]:gb,[P.hoverRelationshipMap]:vb,[P.changeOpenMap]:bb,[P.changeHandTool]:Sb,[P.changeZenMode]:wb,[P.dragstartColumn]:Eb,[P.dragendColumn]:Ob,[P.sharedMouseTracker]:Ab,[P.sharedFocusTracker]:Mb,[P.sharedSelectionTracker]:Pb,[P.sharedDragSelectTracker]:Ib,[P.dragSelectRect]:Rb,[P.validationIds]:Bb,[P.getLWW]:Hb,[P.mergeLWW]:Wb,...Pg},Kb={changeHasHistoryAction:Sy,selectAllAction:wy,unselectAllAction:Ey,selectAction:Oy,changeViewportAction:Ay,clearAction:My,loadJsonAction:Fy,initialClearAction:Ly,initialLoadJsonAction:zy,focusTableAction:Vy,focusColumnAction:Uy,focusTableEndAction:Gy,focusMoveTableAction:qy,editTableAction:Yy,editTableEndAction:Zy,editMemoAction:$y,editMemoEndAction:tb,scrollMemoAction:rb,selectAllColumnAction:ab,drawStartRelationshipAction:sb,drawStartAddRelationshipAction:lb,drawEndRelationshipAction:db,drawRelationshipAction:pb,hoverColumnMapAction:hb,hoverRelationshipMapAction:_b,changeOpenMapAction:yb,changeHandToolAction:xb,changeZenModeAction:Cb,dragstartColumnAction:Tb,dragendColumnAction:Db,sharedMouseTrackerAction:kb,sharedFocusTrackerAction:jb,sharedSelectionTrackerAction:Nb,sharedDragSelectTrackerAction:Fb,dragSelectRectAction:Lb,validationIdsAction:zb,getLWWAction:Vb,mergeLWWAction:Ub,...Fg},qb=(e,t,n)=>{e.push(My(),Fy({value:Hm(n)}))},Jb=(e,t,n)=>{e.push(Fy({value:Hm(n)}))},Yb={[P.loadJson]:qb,[P.clear]:Jb},Xb={addIndex:`index.add`,removeIndex:`index.remove`,changeIndexName:`index.changeName`,changeIndexUnique:`index.changeUnique`},Zb=e=>He({id:w(),name:``,tableId:``,indexColumnIds:[],seqIndexColumnIds:[],unique:!1,meta:Uv()},e??{}),Qb=k(Xb.addIndex),$b=({doc:e,collections:t,lww:n},{payload:{id:r,tableId:i},version:a},{clock:o})=>{let s=a??o.getVersion();N(t).collection(`indexEntities`).addOne(Zb({id:r,tableId:i})).addOperator(n,s,r,()=>{V(e.indexIds)(r)||e.indexIds.push(r)})},ex=k(Xb.removeIndex),tx=({doc:e,collections:t,lww:n},{payload:{id:r},version:i},{clock:a})=>{let o=i??a.getVersion();N(t).collection(`indexEntities`).removeOperator(n,o,r,()=>{let t=e.indexIds.indexOf(r);t!==-1&&e.indexIds.splice(t,1)})},nx=k(Xb.changeIndexName),rx=({collections:e,lww:t},{payload:{id:n,tableId:r,value:i},version:a},{clock:o})=>{let s=a??o.getVersion(),c=N(e).collection(`indexEntities`);c.getOrCreate(n,e=>Zb({id:e,tableId:r})),c.replaceOperator(t,s,n,`name`,()=>{c.updateOne(n,e=>{e.name=i})})},ix=k(Xb.changeIndexUnique),ax=({collections:e,lww:t},{payload:{id:n,tableId:r,value:i},version:a},{clock:o})=>{let s=a??o.getVersion(),c=N(e).collection(`indexEntities`);c.getOrCreate(n,e=>Zb({id:e,tableId:r})),c.replaceOperator(t,s,n,`unique`,()=>{c.updateOne(n,e=>{e.unique=i})})},ox={[Xb.addIndex]:$b,[Xb.removeIndex]:tx,[Xb.changeIndexName]:rx,[Xb.changeIndexUnique]:ax},sx={addIndexAction:Qb,removeIndexAction:ex,changeIndexNameAction:nx,changeIndexUniqueAction:ix},cx=(e,{payload:{id:t}})=>{e.push(ex({id:t}))},lx=(e,{payload:{id:t}},{collections:n})=>{let r=N(n).collection(`indexEntities`).selectById(t);r&&e.push(Qb({id:t,tableId:r.tableId}))},ux=(e,{payload:{id:t,tableId:n}},{collections:r})=>{let i=N(r).collection(`indexEntities`).selectById(t);i&&e.push(nx({id:t,tableId:n,value:i.name}))},dx=(e,{payload:{id:t,tableId:n,value:r}},{collections:i})=>{N(i).collection(`indexEntities`).selectById(t)&&e.push(ix({id:t,tableId:n,value:!r}))},fx={[Xb.addIndex]:cx,[Xb.removeIndex]:lx,[Xb.changeIndexName]:ux,[Xb.changeIndexUnique]:dx},px={addIndexColumn:`indexColumn.add`,removeIndexColumn:`indexColumn.remove`,moveIndexColumn:`indexColumn.move`,changeIndexColumnOrderType:`indexColumn.changeOrderType`},mx=e=>He({id:w(),indexId:``,columnId:``,orderType:$m.ASC,meta:Uv()},e??{});function hx(e,t,n){if(V(t)(n)){let r=t.reduce((e,t,n)=>(e[t]=n,e),{});e.push(n),e.sort((e,t)=>{let n=r[e],i=r[t];return n===void 0?1:i===void 0?-1:n-i})}else e.push(n),t.push(n)}const gx=k(px.addIndexColumn),_x=({collections:e,lww:t},{payload:{id:n,indexId:r,tableId:i,columnId:a},version:o},{clock:s})=>{let c=o??s.getVersion(),l=N(e).collection(`indexEntities`),u=l.getOrCreate(r,e=>Zb({id:e,tableId:i}));N(e).collection(`indexColumnEntities`).addOne(mx({id:n,indexId:r,columnId:a})).addOperator(t,c,n,()=>{V(u.indexColumnIds)(n)||l.updateOne(r,e=>{hx(e.indexColumnIds,e.seqIndexColumnIds,n)})})},vx=k(px.removeIndexColumn),yx=({collections:e,lww:t},{payload:{id:n,indexId:r,tableId:i},version:a},{clock:o})=>{let s=a??o.getVersion(),c=N(e).collection(`indexEntities`),l=c.getOrCreate(r,e=>Zb({id:e,tableId:i}));N(e).collection(`indexColumnEntities`).removeOperator(t,s,n,()=>{let e=l.indexColumnIds.indexOf(n);e!==-1&&c.updateOne(r,t=>{t.indexColumnIds.splice(e,1)})})},bx=k(px.moveIndexColumn),xx=({collections:e},{payload:{id:t,indexId:n,tableId:r,targetId:i}})=>{if(t===i)return;let a=N(e).collection(`indexEntities`),o=a.getOrCreate(n,e=>Zb({id:e,tableId:r})),s=o.indexColumnIds.indexOf(t);if(s===-1)return;let c=o.indexColumnIds.indexOf(i);c!==-1&&a.updateOne(n,e=>{e.indexColumnIds.splice(s,1),e.indexColumnIds.splice(c,0,t);let n=e.seqIndexColumnIds.indexOf(t),r=e.seqIndexColumnIds.indexOf(i);n!==-1&&r!==-1&&(e.seqIndexColumnIds.splice(n,1),e.seqIndexColumnIds.splice(r,0,t))})},Sx=k(px.changeIndexColumnOrderType),Cx=({collections:e,lww:t},{payload:{id:n,indexId:r,columnId:i,value:a},version:o},{clock:s})=>{let c=o??s.getVersion(),l=N(e).collection(`indexColumnEntities`);l.getOrCreate(n,e=>mx({id:e,indexId:r,columnId:i})),l.replaceOperator(t,c,n,`orderType`,()=>{l.updateOne(n,e=>{e.orderType=a})})},wx={[px.addIndexColumn]:_x,[px.removeIndexColumn]:yx,[px.moveIndexColumn]:xx,[px.changeIndexColumnOrderType]:Cx},Tx={addIndexColumnAction:gx,removeIndexColumnAction:vx,moveIndexColumnAction:bx,changeIndexColumnOrderTypeAction:Sx},Ex=(e,{payload:{id:t,indexId:n,tableId:r}})=>{e.push(vx({id:t,indexId:n,tableId:r}))},Dx=(e,{payload:{id:t,indexId:n,tableId:r}},{collections:i})=>{let a=N(i).collection(`indexColumnEntities`).selectById(t);a&&e.push(gx({id:t,indexId:n,tableId:r,columnId:a.columnId}))},Ox=(e,{payload:{id:t,indexId:n,tableId:r,targetId:i}},{collections:a})=>{let o=N(a).collection(`indexEntities`).selectById(n);if(!o)return;let s=o.indexColumnIds.indexOf(t);if(s===-1)return;let c=o.indexColumnIds.indexOf(i);if(c===-1)return;let l=s<c?s+1:s-1,u=o.indexColumnIds[l];e.push(bx({indexId:n,tableId:r,id:t,targetId:u}))},kx=(e,{payload:{id:t,indexId:n,columnId:r}},{collections:i})=>{let a=N(i).collection(`indexColumnEntities`).selectById(t);a&&e.push(Sx({id:t,indexId:n,columnId:r,value:a.orderType}))},Ax={[px.addIndexColumn]:Ex,[px.removeIndexColumn]:Dx,[px.moveIndexColumn]:Ox,[px.changeIndexColumnOrderType]:kx},jx={addMemo:`memo.add`,moveMemo:`memo.move`,moveToMemo:`memo.moveTo`,removeMemo:`memo.remove`,changeMemoValue:`memo.changeValue`,changeMemoColor:`memo.changeColor`,resizeMemo:`memo.resize`,changeZIndex:`memo.changeZIndex`},Mx=e=>He({id:w(),value:``,ui:{x:200,y:100,zIndex:2,width:116,height:100,color:``},meta:Uv()},e??{}),Nx=k(jx.addMemo),Px=({doc:e,collections:t,lww:n},{payload:{id:r,ui:i},version:a},{clock:o})=>{let s=a??o.getVersion();N(t).collection(`memoEntities`).addOne(Mx({id:r,ui:i})).addOperator(n,s,r,()=>{V(e.memoIds)(r)||e.memoIds.push(r)})},Fx=k(jx.moveMemo),Ix=({collections:e},{payload:{ids:t,movementX:n,movementY:r}})=>{let i=N(e).collection(`memoEntities`);for(let e of t)i.getOrCreate(e,e=>Mx({id:e}));i.updateMany(t,e=>{e.ui.x=Ve(e.ui.x+n,4),e.ui.y=Ve(e.ui.y+r,4)})},Lx=k(jx.moveToMemo),Rx=({collections:e},{payload:{id:t,x:n,y:r}})=>{let i=N(e).collection(`memoEntities`);i.getOrCreate(t,e=>Mx({id:e})),i.updateOne(t,e=>{e.ui.x=n,e.ui.y=r})},zx=k(jx.removeMemo),Bx=({doc:e,collections:t,lww:n},{payload:{id:r},version:i},{clock:a})=>{let o=i??a.getVersion();N(t).collection(`memoEntities`).removeOperator(n,o,r,()=>{let t=e.memoIds.indexOf(r);t!==-1&&e.memoIds.splice(t,1)})},Vx=k(jx.changeMemoValue),Hx=({collections:e,lww:t},{payload:{id:n,value:r},version:i},{clock:a})=>{let o=i??a.getVersion(),s=N(e).collection(`memoEntities`);s.getOrCreate(n,e=>Mx({id:e})),s.replaceOperator(t,o,n,`value`,()=>{s.updateOne(n,e=>{e.value=r})})},Ux=k(jx.changeMemoColor),Wx=({collections:e,lww:t},{payload:{id:n,color:r},version:i},{clock:a})=>{let o=i??a.getVersion(),s=N(e).collection(`memoEntities`);s.getOrCreate(n,e=>Mx({id:e})),s.replaceOperator(t,o,n,`ui.color`,()=>{s.updateOne(n,e=>{e.ui.color=r})})},Gx=k(jx.resizeMemo),Kx=({collections:e},{payload:{id:t,x:n,y:r,width:i,height:a}})=>{let o=N(e).collection(`memoEntities`);o.getOrCreate(t,e=>Mx({id:e})),o.updateOne(t,e=>{e.ui.x=n,e.ui.y=r,e.ui.width=i,e.ui.height=a})},qx=k(jx.changeZIndex),Jx=({collections:e},{payload:{id:t,zIndex:n}})=>{let r=N(e).collection(`memoEntities`);r.getOrCreate(t,e=>Mx({id:e})),r.updateOne(t,e=>{e.ui.zIndex=n})},Yx={[jx.addMemo]:Px,[jx.moveMemo]:Ix,[jx.moveToMemo]:Rx,[jx.removeMemo]:Bx,[jx.changeMemoValue]:Hx,[jx.changeMemoColor]:Wx,[jx.resizeMemo]:Kx,[jx.changeZIndex]:Jx},Xx={addMemoAction:Nx,moveMemoAction:Fx,moveToMemoAction:Lx,removeMemoAction:zx,changeMemoValueAction:Vx,changeMemoColorAction:Ux,resizeMemoAction:Gx,changeZIndexAction:qx},Zx=(e,{payload:{id:t}})=>{e.push(zx({id:t}))},Qx=(e,{payload:{id:t}},{collections:n})=>{let r=N(n).collection(`memoEntities`).selectById(t);r&&e.push(Nx({id:r.id,ui:ge(r.ui,[`x`,`y`,`zIndex`])}))},$x=(e,{payload:{id:t}},{collections:n})=>{let r=N(n).collection(`memoEntities`).selectById(t);r&&e.push(Vx({id:t,value:r.value}))},eS=(e,{payload:{id:t}},{collections:n})=>{let r=N(n).collection(`memoEntities`).selectById(t);r&&e.push(Lx({id:t,x:r.ui.x,y:r.ui.y}))},tS={[jx.addMemo]:Zx,[jx.removeMemo]:Qx,[jx.changeMemoValue]:$x,[jx.moveToMemo]:eS},nS=(e,t,n)=>{let r=n.filter(e=>e.type===Fx.type);if(!r.length)return;let i=se(r,e=>e.payload.ids.join(`,`));for(let[,n]of Object.entries(i)){let{payload:{ids:r}}=ce(n),{x:i,y:a}=n.reduce((e,{payload:{movementX:t,movementY:n}})=>(e.x+=t,e.y+=n,e),{x:0,y:0});Math.abs(i)+Math.abs(a)<20||(e.push(Fx({ids:r,movementX:-1*i,movementY:-1*a})),t.push(Fx({ids:r,movementX:i,movementY:a})))}},rS=(e,t,n)=>{let r=n.filter(({type:e})=>e===Ux.type);if(!r.length)return;let i=se(r,e=>e.payload.id);for(let[n,r]of Object.entries(i)){let i=ce(r),a=fe(r);e.push(Ux({id:n,color:i.payload.prevColor,prevColor:a.payload.color})),t.push(Ux({id:n,color:a.payload.color,prevColor:i.payload.prevColor}))}},iS=(e,t,n)=>{let r=n.filter(e=>e.type===Gx.type);if(!r.length)return;let i=se(r,e=>e.payload.id);for(let[,n]of Object.entries(i)){if(n.length<2)continue;let r=ce(n),i=fe(n);e.push(r),t.push(i)}},aS={[jx.moveMemo]:nS,[jx.changeMemoColor]:rS,[jx.resizeMemo]:iS},oS={addRelationship:`relationship.add`,removeRelationship:`relationship.remove`,changeRelationshipType:`relationship.changeType`},sS=e=>He({id:w(),identification:!1,relationshipType:Zm.ZeroN,startRelationshipType:Qm.dash,start:{tableId:``,columnIds:[],x:0,y:0,direction:R.bottom},end:{tableId:``,columnIds:[],x:0,y:0,direction:R.bottom},meta:Uv()},e??{}),cS=k(oS.addRelationship),lS=({doc:e,collections:t,lww:n},{payload:{id:r,relationshipType:i,start:a,end:o},version:s},{clock:c})=>{let l=s??c.getVersion();N(t).collection(`relationshipEntities`).addOne(sS({id:r,relationshipType:i,start:{tableId:a.tableId,columnIds:a.columnIds},end:{tableId:o.tableId,columnIds:o.columnIds}})).addOperator(n,l,r,()=>{V(e.relationshipIds)(r)||e.relationshipIds.push(r)})},uS=k(oS.removeRelationship),dS=({doc:e,collections:t,lww:n},{payload:{id:r},version:i},{clock:a})=>{let o=i??a.getVersion();N(t).collection(`relationshipEntities`).removeOperator(n,o,r,()=>{let t=e.relationshipIds.indexOf(r);t!==-1&&e.relationshipIds.splice(t,1)})},fS=k(oS.changeRelationshipType),pS=({collections:e,lww:t},{payload:{id:n,value:r},version:i},{clock:a})=>{let o=i??a.getVersion(),s=N(e).collection(`relationshipEntities`);s.replaceOperator(t,o,n,`relationshipType`,()=>{s.updateOne(n,e=>{e.relationshipType=r})})},mS={[oS.addRelationship]:lS,[oS.removeRelationship]:dS,[oS.changeRelationshipType]:pS},hS={addRelationshipAction:cS,removeRelationshipAction:uS,changeRelationshipTypeAction:fS},gS=(e,{payload:{id:t}})=>{e.push(uS({id:t}))},_S=(e,{payload:{id:t}},{collections:n})=>{let r=N(n).collection(`relationshipEntities`).selectById(t);r&&e.push(cS({id:r.id,relationshipType:r.relationshipType,start:ge(r.start,[`tableId`,`columnIds`]),end:ge(r.end,[`tableId`,`columnIds`])}))},vS=(e,{payload:{id:t}},{collections:n})=>{let r=N(n).collection(`relationshipEntities`).selectById(t);r&&e.push(fS({id:t,value:r.relationshipType}))},yS={[oS.addRelationship]:gS,[oS.removeRelationship]:_S,[oS.changeRelationshipType]:vS},bS=(e,t,{settings:n})=>{e.push(lv({originX:n.originX,originY:n.originY}))},xS=(e,{payload:{show:t,value:n}})=>{e.push(pv({show:t,value:!n}))},SS=(e,t,{settings:n})=>{e.push(rv({value:n.zoomLevel}))},CS={[K.scrollTo]:bS,[K.changeShow]:xS,[K.changeZoomLevel]:SS},wS=(e,t,n)=>{let r=n.filter(e=>e.type===dv.type);if(!r.length)return;let{x:i,y:a}=r.reduce((e,{payload:{movementX:t,movementY:n}})=>(e.x+=t,e.y+=n,e),{x:0,y:0});Math.abs(i)+Math.abs(a)<20||(e.push(dv({movementX:-1*i,movementY:-1*a})),t.push(dv({movementX:i,movementY:a})))},TS=(e,t,n)=>{let r=n.filter(e=>e.type===av.type);if(!r.length)return;let i=r.reduce((e,{payload:{value:t}})=>e+t,0);e.push(av({value:-1*i})),t.push(av({value:i}))},ES={[K.streamScrollTo]:wS,[K.streamZoomLevel]:TS},DS={addTable:`table.add`,moveTable:`table.move`,moveToTable:`table.moveTo`,removeTable:`table.remove`,changeTableName:`table.changeName`,changeTableComment:`table.changeComment`,changeTableColor:`table.changeColor`,changeZIndex:`table.changeZIndex`,sortTable:`table.sort`},OS=e=>He({id:w(),name:``,comment:``,columnIds:[],seqColumnIds:[],ui:{x:200,y:100,zIndex:2,widthName:60,widthComment:60,color:``},meta:Uv()},e??{}),kS=k(DS.addTable),AS=({doc:e,collections:t,lww:n},{payload:{id:r,ui:i},version:a},{clock:o})=>{let s=a??o.getVersion();N(t).collection(`tableEntities`).addOne(OS({id:r,ui:i})).addOperator(n,s,r,()=>{V(e.tableIds)(r)||e.tableIds.push(r)})},jS=k(DS.moveTable),MS=({collections:e},{payload:{ids:t,movementX:n,movementY:r}})=>{let i=N(e).collection(`tableEntities`);for(let e of t)i.getOrCreate(e,e=>OS({id:e}));i.updateMany(t,e=>{e.ui.x=Ve(e.ui.x+n,4),e.ui.y=Ve(e.ui.y+r,4)})},NS=k(DS.moveToTable),PS=({collections:e},{payload:{id:t,x:n,y:r}})=>{let i=N(e).collection(`tableEntities`);i.getOrCreate(t,e=>OS({id:e})),i.updateOne(t,e=>{e.ui.x=n,e.ui.y=r})},FS=k(DS.removeTable),IS=({doc:e,collections:t,lww:n},{payload:{id:r},version:i},{clock:a})=>{let o=i??a.getVersion();N(t).collection(`tableEntities`).removeOperator(n,o,r,()=>{let t=e.tableIds.indexOf(r);t!==-1&&e.tableIds.splice(t,1)})},LS=k(DS.changeTableName),RS=({collections:e,lww:t},{payload:{id:n,value:r},version:i},{toWidth:a,clock:o})=>{let s=i??o.getVersion(),c=N(e).collection(`tableEntities`);c.getOrCreate(n,e=>OS({id:e})),c.replaceOperator(t,s,n,`name`,()=>{c.updateOne(n,e=>{e.name=r,e.ui.widthName=U(a(r))})})},zS=k(DS.changeTableComment),BS=({collections:e,lww:t},{payload:{id:n,value:r},version:i},{toWidth:a,clock:o})=>{let s=i??o.getVersion(),c=N(e).collection(`tableEntities`);c.getOrCreate(n,e=>OS({id:e})),c.replaceOperator(t,s,n,`comment`,()=>{c.updateOne(n,e=>{e.comment=r,e.ui.widthComment=U(a(r))})})},VS=k(DS.changeTableColor),HS=({collections:e,lww:t},{payload:{id:n,color:r},version:i},{clock:a})=>{let o=i??a.getVersion(),s=N(e).collection(`tableEntities`);s.getOrCreate(n,e=>OS({id:e})),s.replaceOperator(t,o,n,`ui.color`,()=>{s.updateOne(n,e=>{e.ui.color=r})})},US=k(DS.changeZIndex),WS=({collections:e},{payload:{id:t,zIndex:n}})=>{let r=N(e).collection(`tableEntities`);r.getOrCreate(t,e=>OS({id:e})),r.updateOne(t,e=>{e.ui.zIndex=n})},GS=k(DS.sortTable),KS=e=>{let{doc:t,settings:n,collections:r}=e,i=n.width,a=N(r).collection(`tableEntities`).selectByIds(t.tableIds);a.sort((e,t)=>e.columnIds.length-t.columnIds.length);let o=50,s=50,c=50;a.forEach(t=>{let n=s_(t,e).width+80,r=__(t)+80;o+n>i&&(s+=c,c=0,o=50),c<r&&(c=r),t.ui.y=s,t.ui.x=o,o+=n})},qS={[DS.addTable]:AS,[DS.moveTable]:MS,[DS.moveToTable]:PS,[DS.removeTable]:IS,[DS.changeTableName]:RS,[DS.changeTableComment]:BS,[DS.changeTableColor]:HS,[DS.changeZIndex]:WS,[DS.sortTable]:KS},JS={addTableAction:kS,moveTableAction:jS,moveToTableAction:NS,removeTableAction:FS,changeTableNameAction:LS,changeTableCommentAction:zS,changeTableColorAction:VS,changeZIndexAction:US,sortTableAction:GS},YS=(e,{payload:{id:t}})=>{e.push(FS({id:t}))},XS=(e,{payload:{id:t}},{collections:n})=>{let r=N(n).collection(`tableEntities`).selectById(t);r&&e.push(kS({id:r.id,ui:ge(r.ui,[`x`,`y`,`zIndex`])}))},ZS=(e,{payload:{id:t}},{collections:n})=>{let r=N(n).collection(`tableEntities`).selectById(t);r&&e.push(LS({id:t,value:r.name}))},QS=(e,{payload:{id:t}},{collections:n})=>{let r=N(n).collection(`tableEntities`).selectById(t);r&&e.push(zS({id:t,value:r.comment}))},$S=(e,{payload:{id:t}},{collections:n})=>{let r=N(n).collection(`tableEntities`).selectById(t);r&&e.push(NS({id:t,x:r.ui.x,y:r.ui.y}))},eC=()=>{},tC={[DS.addTable]:YS,[DS.removeTable]:XS,[DS.changeTableName]:ZS,[DS.changeTableComment]:QS,[DS.moveToTable]:$S,[DS.sortTable]:eC},nC=(e,t,n)=>{let r=n.filter(e=>e.type===jS.type);if(!r.length)return;let i=se(r,e=>e.payload.ids.join(`,`));for(let[,n]of Object.entries(i)){let{payload:{ids:r}}=ce(n),{x:i,y:a}=n.reduce((e,{payload:{movementX:t,movementY:n}})=>(e.x+=t,e.y+=n,e),{x:0,y:0});Math.abs(i)+Math.abs(a)<20||(e.push(jS({ids:r,movementX:-1*i,movementY:-1*a})),t.push(jS({ids:r,movementX:i,movementY:a})))}},rC=(e,t,n)=>{let r=n.filter(({type:e})=>e===VS.type);if(!r.length)return;let i=se(r,e=>e.payload.id);for(let[n,r]of Object.entries(i)){let i=ce(r),a=fe(r);e.push(VS({id:n,color:i.payload.prevColor,prevColor:a.payload.color})),t.push(VS({id:n,color:a.payload.color,prevColor:i.payload.prevColor}))}},iC={[DS.moveTable]:nC,[DS.changeTableColor]:rC},q={addColumn:`column.add`,removeColumn:`column.remove`,changeColumnName:`column.changeName`,changeColumnComment:`column.changeComment`,changeColumnDataType:`column.changeDataType`,changeColumnDefault:`column.changeDefault`,changeColumnAutoIncrement:`column.changeAutoIncrement`,changeColumnPrimaryKey:`column.changePrimaryKey`,changeColumnUnique:`column.changeUnique`,changeColumnNotNull:`column.changeNotNull`,moveColumn:`column.move`},aC=e=>He({id:w(),tableId:``,name:``,comment:``,dataType:``,default:``,options:0,ui:{keys:0,widthName:60,widthComment:60,widthDataType:60,widthDefault:60},meta:Uv()},e??{}),oC=k(q.addColumn),sC=({collections:e,lww:t},{payload:{id:n,tableId:r},version:i},{clock:a})=>{let o=i??a.getVersion(),s=N(e).collection(`tableEntities`),c=s.getOrCreate(r,e=>OS({id:e}));N(e).collection(`tableColumnEntities`).addOne(aC({id:n,tableId:r})).addOperator(t,o,n,()=>{V(c.columnIds)(n)||s.updateOne(r,e=>{hx(e.columnIds,e.seqColumnIds,n)})})},cC=k(q.removeColumn),lC=({collections:e,lww:t},{payload:{id:n,tableId:r},version:i},{clock:a})=>{let o=i??a.getVersion(),s=N(e).collection(`tableEntities`),c=s.getOrCreate(r,e=>OS({id:e}));N(e).collection(`tableColumnEntities`).removeOperator(t,o,n,()=>{let e=c.columnIds.indexOf(n);e!==-1&&s.updateOne(r,t=>{t.columnIds.splice(e,1)})})},uC=k(q.changeColumnName),dC=({collections:e,lww:t},{payload:{id:n,value:r},version:i},{toWidth:a,clock:o})=>{let s=i??o.getVersion(),c=N(e).collection(`tableColumnEntities`);c.getOrCreate(n,e=>aC({id:e})),c.replaceOperator(t,s,n,`name`,()=>{c.updateOne(n,e=>{e.name=r,e.ui.widthName=U(a(r))})})},fC=k(q.changeColumnComment),pC=({collections:e,lww:t},{payload:{id:n,value:r},version:i},{toWidth:a,clock:o})=>{let s=i??o.getVersion(),c=N(e).collection(`tableColumnEntities`);c.getOrCreate(n,e=>aC({id:e})),c.replaceOperator(t,s,n,`comment`,()=>{c.updateOne(n,e=>{e.comment=r,e.ui.widthComment=U(a(r))})})},mC=k(q.changeColumnDataType),hC=({collections:e,lww:t},{payload:{id:n,value:r},version:i},{toWidth:a,clock:o})=>{let s=i??o.getVersion(),c=N(e).collection(`tableColumnEntities`);c.getOrCreate(n,e=>aC({id:e})),c.replaceOperator(t,s,n,`dataType`,()=>{c.updateOne(n,e=>{e.dataType=r,e.ui.widthDataType=U(a(r))})})},gC=k(q.changeColumnDefault),_C=({collections:e,lww:t},{payload:{id:n,value:r},version:i},{toWidth:a,clock:o})=>{let s=i??o.getVersion(),c=N(e).collection(`tableColumnEntities`);c.getOrCreate(n,e=>aC({id:e})),c.replaceOperator(t,s,n,`default`,()=>{c.updateOne(n,e=>{e.default=r,e.ui.widthDefault=U(a(r))})})},vC=k(q.changeColumnAutoIncrement),yC=({collections:e,lww:t},{payload:{id:n,value:r},version:i},{clock:a})=>{let o=i??a.getVersion(),s=N(e).collection(`tableColumnEntities`);s.getOrCreate(n,e=>aC({id:e})),s.replaceOperator(t,o,n,`options(autoIncrement)`,()=>{s.updateOne(n,e=>{e.options=r?e.options|z.autoIncrement:e.options&~z.autoIncrement})})},bC=k(q.changeColumnPrimaryKey),xC=({collections:e,lww:t},{payload:{id:n,value:r},version:i},{clock:a})=>{let o=i??a.getVersion(),s=N(e).collection(`tableColumnEntities`);s.getOrCreate(n,e=>aC({id:e})),s.replaceOperator(t,o,n,`options(primaryKey)`,()=>{s.updateOne(n,e=>{e.options=r?e.options|z.primaryKey:e.options&~z.primaryKey,e.ui.keys=r?e.ui.keys|B.primaryKey:e.ui.keys&~B.primaryKey})})},SC=k(q.changeColumnUnique),CC=({collections:e,lww:t},{payload:{id:n,value:r},version:i},{clock:a})=>{let o=i??a.getVersion(),s=N(e).collection(`tableColumnEntities`);s.getOrCreate(n,e=>aC({id:e})),s.replaceOperator(t,o,n,`options(unique)`,()=>{s.updateOne(n,e=>{e.options=r?e.options|z.unique:e.options&~z.unique})})},wC=k(q.changeColumnNotNull),TC=({collections:e,lww:t},{payload:{id:n,value:r},version:i},{clock:a})=>{let o=i??a.getVersion(),s=N(e).collection(`tableColumnEntities`);s.getOrCreate(n,e=>aC({id:e})),s.replaceOperator(t,o,n,`options(notNull)`,()=>{s.updateOne(n,e=>{e.options=r?e.options|z.notNull:e.options&~z.notNull})})},EC=k(q.moveColumn),DC=({collections:e},{payload:{id:t,tableId:n,targetId:r}})=>{if(t===r)return;let i=N(e).collection(`tableEntities`),a=i.getOrCreate(n,e=>OS({id:e})),o=a.columnIds.indexOf(t);if(o===-1)return;let s=a.columnIds.indexOf(r);s!==-1&&i.updateOne(n,e=>{e.columnIds.splice(o,1),e.columnIds.splice(s,0,t);let n=e.seqColumnIds.indexOf(t),i=e.seqColumnIds.indexOf(r);n!==-1&&i!==-1&&(e.seqColumnIds.splice(n,1),e.seqColumnIds.splice(i,0,t))})},OC={[q.addColumn]:sC,[q.removeColumn]:lC,[q.changeColumnName]:dC,[q.changeColumnComment]:pC,[q.changeColumnDataType]:hC,[q.changeColumnDefault]:_C,[q.changeColumnAutoIncrement]:yC,[q.changeColumnPrimaryKey]:xC,[q.changeColumnUnique]:CC,[q.changeColumnNotNull]:TC,[q.moveColumn]:DC},kC={addColumnAction:oC,removeColumnAction:cC,changeColumnNameAction:uC,changeColumnCommentAction:fC,changeColumnDataTypeAction:mC,changeColumnDefaultAction:gC,changeColumnAutoIncrementAction:vC,changeColumnPrimaryKeyAction:bC,changeColumnUniqueAction:SC,changeColumnNotNullAction:wC,moveColumnAction:EC},AC=(e,{payload:{id:t,tableId:n}})=>{e.push(cC({id:t,tableId:n}))},jC=(e,{payload:{id:t,tableId:n}})=>{e.push(oC({id:t,tableId:n}))},MC=(e,{payload:{id:t,tableId:n}},{collections:r})=>{let i=N(r).collection(`tableColumnEntities`).selectById(t);i&&e.push(uC({id:t,tableId:n,value:i.name}))},NC=(e,{payload:{id:t,tableId:n}},{collections:r})=>{let i=N(r).collection(`tableColumnEntities`).selectById(t);i&&e.push(mC({id:t,tableId:n,value:i.dataType}))},PC=(e,{payload:{id:t,tableId:n}},{collections:r})=>{let i=N(r).collection(`tableColumnEntities`).selectById(t);i&&e.push(gC({id:t,tableId:n,value:i.default}))},FC=(e,{payload:{id:t,tableId:n}},{collections:r})=>{let i=N(r).collection(`tableColumnEntities`).selectById(t);i&&e.push(fC({id:t,tableId:n,value:i.comment}))},IC=(e,{payload:{id:t,tableId:n,value:r}},{collections:i})=>{N(i).collection(`tableColumnEntities`).selectById(t)&&e.push(vC({id:t,tableId:n,value:!r}))},LC=(e,{payload:{id:t,tableId:n,value:r}},{collections:i})=>{N(i).collection(`tableColumnEntities`).selectById(t)&&e.push(wC({id:t,tableId:n,value:!r}))},RC=(e,{payload:{id:t,tableId:n,value:r}},{collections:i})=>{N(i).collection(`tableColumnEntities`).selectById(t)&&e.push(bC({id:t,tableId:n,value:!r}))},zC=(e,{payload:{id:t,tableId:n,value:r}},{collections:i})=>{N(i).collection(`tableColumnEntities`).selectById(t)&&e.push(SC({id:t,tableId:n,value:!r}))},BC=(e,{payload:{id:t,tableId:n,targetId:r}},{collections:i})=>{let a=N(i).collection(`tableEntities`).selectById(n);if(!a)return;let o=a.columnIds.indexOf(t);if(o===-1)return;let s=a.columnIds.indexOf(r);if(s===-1)return;let c=o<s?o+1:o-1,l=a.columnIds[c];e.push(EC({id:t,tableId:n,targetId:l}))},VC={[q.addColumn]:AC,[q.removeColumn]:jC,[q.changeColumnName]:MC,[q.changeColumnDataType]:NC,[q.changeColumnDefault]:PC,[q.changeColumnComment]:FC,[q.changeColumnAutoIncrement]:IC,[q.changeColumnNotNull]:LC,[q.changeColumnPrimaryKey]:RC,[q.changeColumnUnique]:zC,[q.moveColumn]:BC};function HC(e,...t){try{return e?.(...t)}catch(e){console.error(e)}}const UC={...tC,...VC,...yS,...tS,...CS,...Yb,...fx,...Ax},WC={...iC,...aS,...ES};function GC(e,t,n){let r=[],i=[];for(let t of n){let n=UC[t.type];n&&(n(r,t,e.state),i.push(ae(t)))}for(let e of Object.keys(WC))WC[e](r,i,n);!r.length||!i.length||t.push({undo:(e,t)=>{e(r.map(KC(t())))},redo:(e,t)=>{e(i.map(KC(t())))}})}function KC(e){return t=>({...ae(t),version:e})}const qC=(e,t)=>n=>{HC(GC,e,t,n)},JC=()=>function*({settings:e,doc:{tableIds:t,memoIds:n},collections:r}){let i=N(r).collection(`tableEntities`).selectByIds(t),a=N(r).collection(`memoEntities`).selectByIds(n),o=Hv(e,i,a),s=w();yield UA(),yield Oy({[s]:Qh.memo}),yield Nx({id:s,ui:{...o,zIndex:Bv(i,a)}})},YC=e=>function*({editor:{selectedMap:t}}){if(e){yield zx({id:e});return}let n=Object.entries(t).filter(([,e])=>e===Qh.memo);for(let[e]of n)yield zx({id:e})},XC=(e,t)=>function*({doc:{tableIds:n,memoIds:r},collections:i}){let a=N(i).collection(`tableEntities`).selectByIds(n),o=N(i).collection(`memoEntities`).selectByIds(r);t||(yield UA()),yield Oy({[e]:Qh.memo}),yield qx({id:e,zIndex:Bv(a,o)})},ZC={addMemoAction$:JC,removeMemoAction$:YC,selectMemoAction$:XC};V(Object.values({tables:`tables`,columns:`columns`}));const QC=({x:e,y:t})=>`${e},${t}`,$C=(e,t)=>e<t?-1:+(e>t),ew=e=>e.ui.zIndex??0;function tw({entities:e,offset:t,escapeCollision:n,settings:r,tables:i,memos:a,findSource:o}){let s=new Map;if(e.length===0)return s;let c=new Set([...i,...a].map(({ui:e})=>QC(e))),l=new Map,u=[];for(let n of e){let e=o(n.sourceId);e?l.set(n.sourceId,{x:e.ui.x+t.x,y:e.ui.y+t.y}):u.push(n)}if(u.length!==0){let e=Hv(r,i,a),t=u.reduce((e,t)=>t.ui.x<e.ui.x||t.ui.x===e.ui.x&&t.ui.y<e.ui.y?t:e);for(let n of u)l.set(n.sourceId,{x:e.x+(n.ui.x-t.ui.x),y:e.y+(n.ui.y-t.ui.y)})}if(n){let t=[...e].sort((e,t)=>$C(e.sourceId,t.sourceId));for(let{sourceId:e}of t){let t=l.get(e);if(t){for(;c.has(QC(t));)t.x+=50,t.y+=50;c.add(QC(t))}}}let d=Bv(i,a);return[...e].sort((e,t)=>ew(e)-ew(t)||$C(e.sourceId,t.sourceId)).forEach(({sourceId:e},t)=>{let n=l.get(e);n&&s.set(e,{x:n.x,y:n.y,zIndex:d+t})}),s}V(Object.values({columnName:`columnName`,columnDataType:`columnDataType`,columnNotNull:`columnNotNull`,columnUnique:`columnUnique`,columnAutoIncrement:`columnAutoIncrement`,columnDefault:`columnDefault`,columnComment:`columnComment`}));function nw(e,t){return t.filter(t=>{switch(t){case I.columnName:return!0;case I.columnDataType:return G(e,F.columnDataType);case I.columnDefault:return G(e,F.columnDefault);case I.columnComment:return G(e,F.columnComment);case I.columnAutoIncrement:return G(e,F.columnAutoIncrement);case I.columnUnique:return G(e,F.columnUnique);case I.columnNotNull:return G(e,F.columnNotNull);default:return!1}})}const rw=()=>function*({settings:e,doc:{tableIds:t,memoIds:n},collections:r}){let i=N(r).collection(`tableEntities`).selectByIds(t),a=N(r).collection(`memoEntities`).selectByIds(n),o=Hv(e,i,a),s=w();yield Ey(),yield Oy({[s]:Qh.table}),yield kS({id:s,ui:{...o,zIndex:Bv(i,a)}}),yield Vy({tableId:s})},iw=e=>function*({doc:{relationshipIds:t,indexIds:n},editor:{selectedMap:r},collections:i}){let a=N(i).collection(`relationshipEntities`).selectByIds(t),o=N(i).collection(`indexEntities`).selectByIds(n);if(e){let t=a.filter(({start:t,end:n})=>t.tableId===e||n.tableId===e),n=o.filter(({tableId:t})=>t===e);for(let{id:e}of n)yield ex({id:e});for(let{id:e}of t)yield uS({id:e});yield FS({id:e});return}let s=Object.entries(r).filter(([,e])=>e===Qh.table).map(([e])=>e),c=V(s),l=a.filter(({start:e,end:t})=>c(e.tableId)||c(t.tableId)),u=o.filter(({tableId:e})=>c(e));for(let{id:e}of u)yield ex({id:e});for(let{id:e}of l)yield uS({id:e});for(let e of s)yield FS({id:e})},aw=(e,t)=>function*({doc:{tableIds:n,memoIds:r},collections:i,editor:{drawRelationship:a}}){let o=N(i).collection(`tableEntities`),s=o.selectByIds(n),c=N(i).collection(`memoEntities`).selectByIds(r);if(t||(yield Ey()),yield Oy({[e]:Qh.table}),yield US({id:e,zIndex:Bv(s,c)}),yield Vy({tableId:e}),a){if(a.start){let t=o.selectById(a.start.tableId),n=o.selectById(e);if(!t||!n)return;let r=N(i).collection(`tableColumnEntities`).selectByIds(t.columnIds).filter(({options:e})=>G(e,z.primaryKey));if(!r.length)return;let s=r.map(()=>w());for(let e=0;e<r.length;e++){let t=r[e],i={id:s[e],tableId:n.id};yield[oC(i),wC({...i,value:!0}),uC({...i,value:t.name}),mC({...i,value:t.dataType}),gC({...i,value:t.default}),fC({...i,value:t.comment})]}yield cS({id:w(),relationshipType:a.relationshipType,start:{tableId:t.id,columnIds:r.map(({id:e})=>e)},end:{tableId:n.id,columnIds:s}}),yield db()}else yield KA(e)}},ow={addTableAction$:rw,removeTableAction$:iw,selectTableAction$:aw,pasteTableAction$:e=>function*({editor:{selectedMap:t,focusTable:n},settings:{show:r,columnOrder:i},collections:a}){let o=n&&!fy(n.focusType),s=Object.entries(t).filter(([,e])=>e===Qh.table).map(([e])=>e).filter(e=>!o||e!==n?.tableId);for(let t of s)for(let n of e){let e={id:w(),tableId:t};yield[oC(e),uC({...e,value:n.name}),mC({...e,value:n.dataType}),gC({...e,value:n.default}),fC({...e,value:n.comment}),wC({...e,value:G(n.options,z.notNull)}),SC({...e,value:G(n.options,z.unique)}),vC({...e,value:G(n.options,z.autoIncrement)})]}if(!n||!o)return;let c=N(a).collection(`tableEntities`).selectById(n.tableId);if(!c)return;let l=c.columnIds.filter(V(n.selectColumnIds));if(l.length===0)return;let u=c.columnIds.slice(c.columnIds.indexOf(l[l.length-1])+1),d=[...l,...u],f=nw(r,i);yield Gy();for(let t=0;t<d.length;t++){let r=d[t],i=e[t];if(!i)break;let a={id:r,tableId:c.id};yield[...f.map(e=>{switch(e){case I.columnName:return uC({...a,value:i.name});case I.columnDataType:return mC({...a,value:i.dataType});case I.columnDefault:return gC({...a,value:i.default});case I.columnComment:return fC({...a,value:i.comment});case I.columnAutoIncrement:return vC({...a,value:G(i.options,z.autoIncrement)});case I.columnUnique:return SC({...a,value:G(i.options,z.unique)});case I.columnNotNull:return wC({...a,value:G(i.options,z.notNull)});default:return null}}).filter(Boolean),Uy({tableId:c.id,columnId:r,focusType:n.focusType,$mod:!0,shiftKey:!1})]}let p=e.slice(d.length);for(let e of p){let t=w(),r={id:t,tableId:c.id};yield[oC(r),...f.map(t=>{switch(t){case I.columnName:return uC({...r,value:e.name});case I.columnDataType:return mC({...r,value:e.dataType});case I.columnDefault:return gC({...r,value:e.default});case I.columnComment:return fC({...r,value:e.comment});case I.columnAutoIncrement:return vC({...r,value:G(e.options,z.autoIncrement)});case I.columnUnique:return SC({...r,value:G(e.options,z.unique)});case I.columnNotNull:return wC({...r,value:G(e.options,z.notNull)});default:return null}}).filter(Boolean),Uy({tableId:c.id,columnId:t,focusType:n.focusType,$mod:!0,shiftKey:!1})]}}};function sw(e,t,n,r=[]){let{doc:{relationshipIds:i},collections:a}=t,o=e.pop();return o&&(r.some(({id:e})=>e===o.id)||(r.push(o),N(a).collection(`relationshipEntities`).selectByIds(i).forEach(({start:t,end:r})=>{let i=t.columnIds.indexOf(o.id);if(i!==-1){let t=r.columnIds[i];e.push({id:t,tableId:r.tableId,value:n.value})}else{let i=r.columnIds.indexOf(o.id);if(i!==-1){let r=t.columnIds[i];e.push({id:r,tableId:t.tableId,value:n.value})}}})),sw(e,t,n,r)),r}const cw=V([W.columnNotNull,W.columnUnique,W.columnAutoIncrement]),lw=V([W.columnName,W.columnDataType,W.columnDefault,W.columnComment]),uw=e=>function*({editor:{selectedMap:t}}){if(e){let t=w();yield oC({id:t,tableId:e}),yield Uy({tableId:e,columnId:t,focusType:W.columnName,$mod:!1,shiftKey:!1});return}let n=Object.entries(t).filter(([,e])=>e===Qh.table).map(([e])=>({tableId:e,id:w()}));for(let e of n)yield oC(e);let r=fe(n);r&&(yield Uy({tableId:r.tableId,columnId:r.id,focusType:W.columnName,$mod:!1,shiftKey:!1}))},dw=(e,t)=>function*(n){let{doc:{relationshipIds:r,indexIds:i},editor:{focusTable:a},collections:o}=n;if(a?.columnId){let e=cy(n,t);e?yield Uy({tableId:a.tableId,columnId:e,focusType:a.focusType,$mod:!1,shiftKey:!1}):yield Vy({tableId:a.tableId,focusType:W.tableName})}let s=V(t),c=N(o).collection(`relationshipEntities`).selectByIds(r).filter(({start:t,end:n})=>t.tableId===e&&t.columnIds.some(s)||n.tableId===e&&n.columnIds.some(s)),l=N(o).collection(`indexEntities`).selectByIds(i).filter(t=>t.tableId===e&&N(o).collection(`indexColumnEntities`).selectByIds(t.indexColumnIds).map(({columnId:e})=>e).some(s));for(let{id:e}of l)yield ex({id:e});for(let{id:e}of c)yield uS({id:e});for(let n of t)yield cC({id:n,tableId:e})},fw=(e,t,n)=>function*({collections:r}){if(!cw(e))return;let i=N(r).collection(`tableColumnEntities`).selectById(n);if(i)switch(e){case W.columnNotNull:yield wC({id:n,tableId:t,value:!G(i.options,z.notNull)});break;case W.columnUnique:yield SC({id:n,tableId:t,value:!G(i.options,z.unique)});break;case W.columnAutoIncrement:yield vC({id:n,tableId:t,value:!G(i.options,z.autoIncrement)})}},pw=e=>function*(t){let{settings:{relationshipDataTypeSync:n}}=t,r=[e];n&&(r=sw([e],t,e)),yield r.map(mC)},mw={addColumnAction$:uw,removeColumnAction$:dw,toggleColumnValueAction$:fw,changeColumnDataTypeAction$:pw,changeColumnValueAction$:(e,t,n,r)=>function*({collections:i}){if(!lw(e)||!N(i).collection(`tableColumnEntities`).selectById(n))return;let a={id:n,tableId:t,value:r};switch(e){case W.columnName:yield uC(a);break;case W.columnDataType:yield pw(a);break;case W.columnDefault:yield gC(a);break;case W.columnComment:yield fC(a)}},changeColumnPrimaryKeyAction$:(e,t)=>function*({collections:n}){let r=N(n).collection(`tableColumnEntities`).selectById(t);if(!r)return;let i=G(r.options,z.primaryKey);yield bC({tableId:e,id:t,value:!i})}};function hw(e,t){return!(e.x>t.x+t.w||e.x+e.w<t.x||e.y>t.y+t.h||e.y+e.h<t.y)}function gw(e){return e.filter(({options:e})=>G(e,z.primaryKey))}function _w(e,t,n,r=1){let i=!0;for(let r of e)if(n===r.name&&r.id!==t&&n!==``){i=!1;break}return i?n:_w(e,t,n.replace(/[0-9]/g,``)+r,r+1)}function vw(e,t){for(let n of e)if(n.name.toUpperCase()===t.toUpperCase())return n;return null}const yw={[L.MariaDB]:`VARCHAR(255)`,[L.MSSQL]:`varchar(255)`,[L.MySQL]:`VARCHAR(255)`,[L.Oracle]:`VARCHAR2(255)`,[L.PostgreSQL]:`varchar(255)`,[L.SQLite]:`TEXT`,[L.Databricks]:`STRING`,[L.Snowflake]:`VARCHAR(255)`};function bw(e,t,n,r=[]){let i=Cw(e,n,r);return i.members?Sw(i.members,t)??yw[t]??i.typeName:i.typeName}function xw(e,t,n,r=[]){let{members:i}=Cw(e,t,r);return!i||Sw(i,n)!==void 0?``:` ${e}: ${i.join(` | `)}`}function Sw(e,t){if(t===L.MySQL||t===L.MariaDB)return`ENUM(${e.map(e=>`'${e.replace(/'/g,`''`)}'`).join(`,`)})`}function Cw(e,t,n){if(n.length)return{typeName:e,members:n};let r=new Set,i=e;for(;!r.has(i);){r.add(i);let e=ww(i,t);if(!e)break;if(e.values.length)return{typeName:i,members:e.values};if(!e.alias)break;i=e.alias}return{typeName:i,members:null}}function ww(e,t){let n=t.types[e];if(n)return n;let r=Object.keys(t.types).find(t=>t.slice(t.lastIndexOf(`.`)+1)===e);return r===void 0?void 0:t.types[r]}const Tw={database:``,catalog:``,schema:``},Ew=kw(Tw);function Dw(e,t,n){let r=Hp({}),i=Ow(e.entities),a=e.entities.map(a=>Mw(r,t,e,n,a,i(a)));return Fw(r,t,a,e,jw(e.entities,a)),Bw(r,a),r}function Ow(e){let t=new Set(e.map(e=>kw(e.namespace)));return e=>{let n=kw(e.namespace);return t.size>1&&n!==Ew?`${Aw(e.namespace)}_${e.name}`:e.name}}function kw({database:e,catalog:t,schema:n}){return`${e}.${t}.${n}`}function Aw({database:e,catalog:t,schema:n}){return[e,t,n].filter(e=>e!==``).join(`_`)}function jw(e,t){let n=new Map,r=(e,t)=>{let r=e.toLowerCase();n.has(r)||n.set(r,t)};return e.forEach((e,n)=>{let i=t[n],a=kw(e.namespace);r(`${a}.${e.name}`,i),r(e.name,i),e.alias&&(r(e.alias,i),r(`${a}.${e.alias}`,i))}),e=>{let t=kw(e.namespace);return n.get(`${t}.${e.entityName}`.toLowerCase())??(t===Ew?n.get(e.entityName.toLowerCase())??null:null)}}function Mw({doc:e,collections:t},n,r,i,a,o){let{toWidth:s}=n,c=Xh(o),l=Xh(a.comment),u=OS({name:c,comment:l,ui:{widthName:U(s(c)),widthComment:U(s(l))}}),d={source:a,table:u,columns:[]};return a.attributes.forEach(e=>{let n=Xh(e.path),a=bw(e.typeName,i,r,e.enumValues),o=`${Xh(e.comment)}${xw(e.typeName,r,i,e.enumValues)}`.trim(),c=Xh(e.default);Pw(t,d,aC({tableId:u.id,name:n,comment:o,dataType:a,default:c,options:(e.autoIncrement?z.autoIncrement:0)|(e.primaryKey?z.primaryKey:0)|(Nw(e)?z.unique:0)|(e.notNull?z.notNull:0),ui:{widthName:U(s(n)),widthComment:U(s(o)),widthDataType:U(s(a)),widthDefault:U(s(c)),keys:e.primaryKey?B.primaryKey:0}}))}),e.tableIds.push(u.id),N(t).collection(`tableEntities`).setOne(u),d}function Nw(e){return e.indexes.some(e=>e.unique&&e.name===``)}function Pw(e,t,n){t.table.columnIds.push(n.id),t.table.seqColumnIds.push(n.id),t.columns.push(n),N(e).collection(`tableColumnEntities`).setOne(n)}function Fw(e,t,n,r,i){let a=new Set;r.relations.forEach(r=>{let o=i(r.src),s=i(r.ref);if(!o||!s)return;let c=Iw(o,r.src),l=Iw(s,r.ref);if(c.length!==0&&l.length!==0&&c.length===l.length){if(r.srcCardinality===`n`&&r.refCardinality===`n`){Rw(e,t,n,o,s);return}Lw(e,t,a,{parent:s,parentColumns:l,child:o,childColumns:c,toMany:r.refCardinality===`n`})}})}function Iw(e,t){if(t.attributePaths.length===0)return gw(e.columns);let n=[];for(let r of t.attributePaths){let t=vw(e.columns,r);if(!t)return[];n.push(t)}return n}function Lw({doc:e,collections:t},{toWidth:n},r,{parent:i,parentColumns:a,child:o,childColumns:s,toMany:c}){let l=`${i.table.id}:${o.table.id}:${s.map(e=>e.id).join(`,`)}`;if(r.has(l))return;r.add(l);let u=s.every(e=>G(e.options,z.notNull));s.forEach((e,t)=>{if(e.dataType===``){let{dataType:r}=a[t];e.dataType=r,e.ui.widthDataType=U(n(r))}e.ui.keys=G(e.ui.keys,B.primaryKey)?e.ui.keys|B.foreignKey:B.foreignKey});let d=sS({identification:s.every(e=>G(e.ui.keys,B.primaryKey)&&G(e.ui.keys,B.foreignKey)),relationshipType:c?u?Zm.OneN:Zm.ZeroN:u?Zm.OneOnly:Zm.ZeroOne,start:{tableId:i.table.id,columnIds:a.map(e=>e.id)},end:{tableId:o.table.id,columnIds:s.map(e=>e.id)}});e.relationshipIds.push(d.id),N(t).collection(`relationshipEntities`).setOne(d)}function Rw(e,t,n,r,i){let{doc:a,collections:o}=e,{toWidth:s}=t,c=gw(r.columns),l=gw(i.columns);if(!c.length||!l.length)return;let u=_w(n.map(e=>e.table),``,`${r.table.name}_${i.table.name}`),d=`Junction table inferred from ${r.table.name} <-> ${i.table.name}`,f=OS({name:u,comment:d,ui:{widthName:U(s(u)),widthComment:U(s(d))}}),p={source:{namespace:Tw,name:u,alias:``,comment:d,attributes:[]},table:f,columns:[]};a.tableIds.push(f.id),N(o).collection(`tableEntities`).setOne(f),n.push(p),zw(e,t,p,r,c),zw(e,t,p,i,l)}function zw(e,{toWidth:t},n,r,i){let{doc:a,collections:o}=e,s=i.map(e=>{let i=_w(n.columns,``,`${r.table.name}_${e.name}`),{dataType:a}=e,s=aC({tableId:n.table.id,name:i,dataType:a,options:z.primaryKey|z.notNull,ui:{keys:B.primaryKey|B.foreignKey,widthName:U(t(i)),widthDataType:U(t(a))}});return Pw(o,n,s),s}),c=sS({identification:!0,relationshipType:Zm.ZeroN,start:{tableId:r.table.id,columnIds:i.map(e=>e.id)},end:{tableId:n.table.id,columnIds:s.map(e=>e.id)}});a.relationshipIds.push(c.id),N(o).collection(`relationshipEntities`).setOne(c)}function Bw({doc:e,collections:t},n){n.forEach(({source:n,table:r,columns:i})=>{let a=new Map;n.attributes.forEach((e,t)=>{let n=i[t];n&&e.indexes.forEach((e,i)=>{if(e.unique&&e.name===``)return;let o=e.name===``?`b:${t}:${i}`:`n:${e.name}`,s=a.get(o)??{index:Zb({name:Xh(e.name),tableId:r.id}),indexColumns:[]};s.index.unique=s.index.unique||e.unique,s.indexColumns.push(mx({indexId:s.index.id,columnId:n.id,orderType:$m.ASC})),a.set(o,s)})}),a.forEach(({index:n,indexColumns:r})=>{r.forEach(e=>{n.indexColumnIds.push(e.id),n.seqIndexColumnIds.push(e.id),N(t).collection(`indexColumnEntities`).setOne(e)}),e.indexIds.push(n.id),N(t).collection(`indexEntities`).setOne(n)})})}const J={identifier:1,quoted:2,string:3,expression:4,number:5,punctuation:6,doc:7,comment:8,newline:9},Vw=/[ \t\f\v]/,Hw=/[0-9]/,Uw=/[A-Za-z_\u0080-\uffff]/,Ww=/[0-9A-Za-z_#\u0080-\uffff]/,Gw=/^[ \t]*/,Kw=/\\#/g,qw={n:`
|
|
2
|
+
`};function Jw(e){let t=[],n=0,r=1,i=Yw(e,0),a=(e,n)=>{t.push({kind:e,value:n,line:r,depth:i})};for(t.push({kind:J.newline,value:``,line:0,depth:i});n<e.length;){let t=e[n];if(Vw.test(t)){n+=1;continue}if(t===`\r`||t===`
|
|
3
3
|
`){t===`\r`&&e[n+1]===`
|
|
4
|
-
`&&(n+=1),n+=1,i=
|
|
4
|
+
`&&(n+=1),n+=1,i=Yw(e,n),a(J.newline,`
|
|
5
5
|
`),r+=1;continue}if(t===`#`){let t=n+1;for(;t<e.length&&e[t]!==`
|
|
6
|
-
`&&e[t]!==`\r`;)t+=1;a(
|
|
7
|
-
`||t===`\r`)break;if(t!==` `&&e[n+1]===`#`){r.push(t,`#`),n+=2;continue}if(t===`#`)break;r.push(t),n+=1}return{value
|
|
8
|
-
`).length-1}}function
|
|
9
|
-
`||t===`\r`))break;let c=e[o+1];if(r&&t===`\\`&&c!==void 0){a.push(
|
|
10
|
-
`&&(s+=1),a.push(t),o+=1}return{value:a.join(``),index:o,lines:s,terminated:!1}}function
|
|
6
|
+
`&&e[t]!==`\r`;)t+=1;a(J.comment,e.slice(n+1,t).trim()),n=t;continue}if(t===`|`){if(e.startsWith(`|||`,n)){let t=Zw(e,n+3);a(J.doc,eT(t.value)),n=t.index,r+=t.lines;continue}let t=Xw(e,n+1);a(J.doc,t.value),n=t.index;continue}if(t===`"`){let t=Qw(e,n+1,`"`,!0,!1);a(J.quoted,t.value),n=t.index;continue}if(t===`'`){let t=Qw(e,n+1,`'`,!0,!1);a(J.string,t.value),n=t.index;continue}if(t==="`"){let t=Qw(e,n+1,"`",!1,!0);a(J.expression,t.value),n=t.index,r+=t.lines;continue}if(Hw.test(t)){let t=n;for(;t<e.length&&Hw.test(e[t]);)t+=1;if(e[t]===`.`&&Hw.test(e[t+1]??``))for(t+=1;t<e.length&&Hw.test(e[t]);)t+=1;a(J.number,e.slice(n,t)),n=t;continue}if(Uw.test(t)){let t=n+1;for(;t<e.length&&Ww.test(e[t]);)t+=1;for(;t>n&&e[t-1]===`#`;)--t;a(J.identifier,e.slice(n,t)),n=t;continue}a(J.punctuation,t),n+=1}return t}function Yw(e,t){let n=0;for(let r=t;r<e.length;r++){let t=e[r];if(t===` `)n+=1;else if(t===` `)n+=.5;else break}return Math.round(n)-1}function Xw(e,t){let n=t;for(;n<e.length&&Vw.test(e[n]);)n+=1;if(n>t&&e[n]===`"`){let t=Qw(e,n+1,`"`,!0,!1);if(t.terminated)return{value:t.value,index:t.index}}let r=[];for(n=t;n<e.length;){let t=e[n];if(t===`
|
|
7
|
+
`||t===`\r`)break;if(t!==` `&&e[n+1]===`#`){r.push(t,`#`),n+=2;continue}if(t===`#`)break;r.push(t),n+=1}return{value:$w(r.join(``).trim().replace(Kw,`#`)),index:n}}function Zw(e,t){let n=e.indexOf(`|||`,t),r=n===-1?e.length:n,i=e.slice(t,r);return{value:i,index:n===-1?e.length:n+3,lines:i.split(`
|
|
8
|
+
`).length-1}}function Qw(e,t,n,r,i){let a=[],o=t,s=0;for(;o<e.length;){if(e.startsWith(n,o))return{value:a.join(``),index:o+n.length,lines:s,terminated:!0};let t=e[o];if(!i&&(t===`
|
|
9
|
+
`||t===`\r`))break;let c=e[o+1];if(r&&t===`\\`&&c!==void 0){a.push(qw[c]??c),o+=2;continue}t===`
|
|
10
|
+
`&&(s+=1),a.push(t),o+=1}return{value:a.join(``),index:o,lines:s,terminated:!1}}function $w(e){let t=e[0];return e.length>1&&(t===`"`||t===`'`)&&e.endsWith(t)?e.slice(1,-1):e}function eT(e){let t=e.replace(/\r\n|\r/g,`
|
|
11
11
|
`).split(`
|
|
12
|
-
`);t[0]?.trim()===``&&t.shift(),t.length&&t[t.length-1].trim()===``&&t.pop();let n=t.filter(e=>e.trim()!==``).map(e=>(
|
|
13
|
-
`)}const TC=new Set([`as`,`check`,`false`,`fk`,`index`,`namespace`,`null`,`nullable`,`pk`,`rel`,`true`,`type`,`unique`]),EC=new Set([`false`,`null`,`true`]),DC=/^-?\d+$/;function OC(e){try{return{ok:!0,model:jC(kC(vC(e)))}}catch(e){return{ok:!1,message:e instanceof Error?e.message:`Invalid AML`}}}function kC(e){let t=[],n=null;return e.forEach(e=>{if(e.kind===q.newline){n={depth:e.depth,tokens:[]},t.push(n);return}n?.tokens.push(e)}),t}function AC(e){let t=0;return{peek:(n=0)=>e[t+n]??null,next:()=>e[t++]??null,atEnd:()=>t>=e.length}}function jC(e){let t={entities:[],relations:[],types:{},skipped:[]},n=new Set,r=e=>{e!==``&&!n.has(e)&&(n.add(e),t.skipped.push(e))},i=YS,a=null,o={path:[],depth:0};return e.forEach(e=>{let n=AC(e.tokens),s=n.peek();if(!s)return;if(e.depth>=0){a!==null&&NC(n,e.depth,a,o,t,r);return}let c=s.kind===q.identifier?s.value.toLowerCase():``;if(c===`namespace`){n.next(),i=JC(n);return}if(c===`rel`||c===`fk`){n.next();let e=zC(n,i,r);e&&t.relations.push(e);return}if(c===`type`){n.next(),qC(n,i,t,r);return}if(!sw(s))return;let l=MC(n,i,r);l&&(t.entities.push(l),a=l,o={path:[],depth:0})}),t}function MC(e,t,n){let r=YC(e);if(r.name===``)return null;let i=e.peek();i&&J(i,`*`)&&(e.next(),n(`view`));let a=ZC(e),o=QC(e,n);return{namespace:iw(t,r.namespace),name:r.name,alias:a,comment:o.doc||o.comment,attributes:[]}}function NC(e,t,n,r,i,a){let o=rw(e);if(o===``)return;let s=FC(e),c={path:PC(r,t,o),comment:``,typeName:s.typeName,enumValues:s.enumValues,notNull:!0,primaryKey:!1,indexes:[],default:s.default,autoIncrement:!1},l=e.peek();l&&cw(l,`nullable`)&&(e.next(),c.notNull=!1),IC(e,c,n,i,a);let u=QC(e,a);c.comment=u.doc||u.comment,c.autoIncrement=u.autoIncrement,n.attributes.push(c)}function PC(e,t,n){if(t===0||e.path.length===0)e.depth=0,e.path=[n];else if(t>e.depth)e.depth+=1,e.path=[...e.path,n];else{let r=e.depth-t;e.depth=t,e.path=[...e.path.slice(0,-(r+1)),n]}return e.path.join(`.`)}function FC(e){let t=rw(e);if(t===``)return{typeName:``,enumValues:[],default:``};let n=t,r=[],i=e.peek();if(i&&J(i,`(`)){e.next();let{values:i,numeric:a}=tw(e);i.length!==0&&i.length<=2&&a?n=`${t}(${i.join(`,`)})`:r=i}let a=e.peek();return a&&J(a,`=`)?(e.next(),{typeName:n,enumValues:r,default:nw(e)}):{typeName:n,enumValues:r,default:``}}function IC(e,t,n,r,i){let a=()=>{let i=BC(e);return i?(r.relations.push({src:{namespace:n.namespace,entityName:n.name,attributePaths:[t.path]},...i}),!0):!1};for(;!e.atEnd();){let n=e.peek();if(!n)return;if(n.kind===q.identifier){let r=n.value.toLowerCase();if(r===`pk`){e.next(),RC(e),t.primaryKey=!0;continue}if(r===`unique`||r===`index`){e.next(),t.indexes.push({name:RC(e),unique:r===`unique`});continue}if(r===`check`){e.next(),LC(e),i(`check`);continue}if(r===`fk`&&a())continue;return}if(!(lw(n)&&a()))return}}function LC(e){let t=e.peek();t&&J(t,`(`)&&(e.next(),ow(e,`(`,`)`)),RC(e)}function RC(e){let t=e.peek();return!t||!J(t,`=`)?``:(e.next(),rw(e))}function zC(e,t,n){let r=UC(e),i=BC(e);return QC(e,n),!i||r.entityName===``?null:{src:aw(r.namespace)?{...r,namespace:t}:r,...i}}function BC(e){let t=e.peek();if(t&&cw(t,`fk`)){e.next();let t=UC(e);return t.entityName===``?null:{ref:t,srcCardinality:`n`,refCardinality:`1`,polymorphic:!1}}let n=VC(e);if(n===null)return null;let r=HC(e);r&&(GC(e),e.next(),nw(e));let i=VC(e)??`n`,a=UC(e);return a.entityName===``?null:{ref:a,srcCardinality:i,refCardinality:n,polymorphic:r}}function VC(e){let t=e.peek();return!t||!lw(t)?null:(e.next(),t.value===`-`?`1`:`n`)}function HC(e){let t=0;for(;;){let n=e.peek(t);if(!n||!sw(n))return!1;t+=1;let r=e.peek(t);if(!r||!J(r,`.`))break;t+=1}let n=e.peek(t);return n!==null&&J(n,`=`)}function UC(e){let t=YC(e),n=e.peek();if(n&&J(n,`(`))return e.next(),{namespace:t.namespace,entityName:t.name,attributePaths:WC(e)};if(t.namespace.schema===``)return{namespace:YS,entityName:t.name,attributePaths:[]};let r=[t.name,...KC(e)].join(`.`);return{namespace:{database:``,catalog:``,schema:t.namespace.catalog},entityName:t.namespace.schema,attributePaths:[r]}}function WC(e){let t=[];for(;!e.atEnd();){let n=e.peek();if(!n||J(n,`)`)){e.next();break}if(sw(n)){t.push(GC(e));continue}e.next()}return t}function GC(e){let t=[rw(e)];for(;!e.atEnd();){let n=e.peek();if(!n||!J(n,`.`))break;e.next();let r=rw(e);if(r===``)break;t.push(r)}return t.join(`.`)}function KC(e){let t=[];for(;!e.atEnd();){let n=e.peek();if(!n||!J(n,`:`))break;e.next();let r=rw(e);if(r===``)break;t.push(r)}return t}function qC(e,t,n,r){let i=YC(e);if(i.name===``)return;let a={values:[],alias:``},o=e.peek();o&&J(o,`(`)?(e.next(),a.values=tw(e).values):o&&J(o,`{`)?(e.next(),ow(e,`{`,`}`),r(`struct type`)):o&&o.kind===q.expression?(e.next(),r(`custom type`)):o&&sw(o)&&(a.alias=rw(e)),QC(e,r);let s=iw(t,i.namespace),c=[s.database,s.catalog,s.schema,i.name].filter(e=>e!==``).join(`.`);n.types[c]=a,c!==i.name&&!(i.name in n.types)&&(n.types[i.name]=a)}function JC(e){let t=rw(e);if(t===``)return YS;let n=XC(e),r=XC(e);return n&&r?{database:t,catalog:n.name,schema:r.name}:n?{database:``,catalog:t,schema:n.name}:{database:``,catalog:``,schema:t}}function YC(e){let t=rw(e);if(t===``)return{namespace:YS,name:``};let n=XC(e),r=XC(e),i=XC(e);return n&&r&&i&&i.name!==``?{namespace:{database:t,catalog:n.name,schema:r.name},name:i.name}:n&&r&&r.name!==``?{namespace:{database:``,catalog:t,schema:n.name},name:r.name}:n&&n.name!==``?{namespace:{database:``,catalog:``,schema:t},name:n.name}:{namespace:YS,name:t}}function XC(e){let t=e.peek();return!t||!J(t,`.`)?null:(e.next(),{name:rw(e)})}function ZC(e){let t=e.peek();return!t||!cw(t,`as`)?``:(e.next(),rw(e))}function QC(e,t){let n={autoIncrement:!1,doc:``,comment:``};for(;!e.atEnd();){let r=e.next();if(!r)break;if(J(r,`{`)){$C(e,n,t);continue}if(r.kind===q.doc&&n.doc===``){n.doc=r.value;continue}r.kind===q.comment&&n.comment===``&&(n.comment=r.value)}return n}function $C(e,t,n){for(;!e.atEnd();){let r=e.next();if(!r||J(r,`}`))return;if(r.kind!==q.identifier&&r.kind!==q.quoted)continue;let i=e.peek();i&&(J(i,`:`)||J(i,`=`))&&(e.next(),ew(e)),r.value.toLowerCase()===`autoincrement`?t.autoIncrement=!0:n(r.value)}}function ew(e){let t=0;for(;!e.atEnd();){let n=e.peek();if(!n||t===0&&(J(n,`,`)||J(n,`}`)))return;e.next(),J(n,`[`)?t+=1:J(n,`]`)&&--t}}function tw(e){let t=[],n=!0;for(;!e.atEnd();){let r=e.peek();if(!r||J(r,`)`)){e.next();break}if(J(r,`,`)){e.next();continue}let i=nw(e);t.push(i),n=n&&r.kind!==q.quoted&&DC.test(i)}return{values:t,numeric:n}}function nw(e){let t=e.peek();if(!t)return``;if(J(t,`-`)&&e.peek(1)?.kind===q.number)return e.next(),`-${e.next()?.value??``}`;switch(e.next(),t.kind){case q.expression:return`\`${t.value}\``;case q.string:return`'${t.value}'`;case q.identifier:return EC.has(t.value.toLowerCase())?t.value.toLowerCase():t.value;default:return t.value}}function rw(e){let t=e.peek();return!t||!sw(t)?``:(e.next(),t.value)}function iw(e,t){return{database:t.database||e.database,catalog:t.catalog||e.catalog,schema:t.schema||e.schema}}function aw(e){return e.database===``&&e.catalog===``&&e.schema===``}function ow(e,t,n){let r=1;for(;!e.atEnd()&&r!==0;){let i=e.next();if(!i)break;J(i,t)?r+=1:J(i,n)&&--r}}function sw(e){return e.kind===q.quoted||e.kind===q.identifier&&!TC.has(e.value.toLowerCase())}function cw(e,t){return e.kind===q.identifier&&e.value.toLowerCase()===t}function lw(e){return e.kind===q.punctuation&&(e.value===`-`||e.value===`<`||e.value===`>`)}function J(e,t){return e.kind===q.punctuation&&e.value===t}const uw={entities:[],relations:[],types:{},skipped:[]};function dw(e,t,n){let r=OC(e),i=r.ok?r.model:uw,a=Bp({}),o=hh(i.entities.length*100);a.settings.width=o,a.settings.height=o;let{settings:s}=n?n(a):a,c=ZS(i,t,s.database);return c.settings=s,Bm(c)}const fw={[F.MariaDB]:`VARCHAR(255)`,[F.MSSQL]:`varchar(255)`,[F.MySQL]:`VARCHAR(255)`,[F.Oracle]:`VARCHAR2(255)`,[F.PostgreSQL]:`varchar(255)`,[F.SQLite]:`TEXT`,[F.Databricks]:`STRING`,[F.Snowflake]:`VARCHAR(255)`};function pw(e,t,n,r){let i=gw(e,t,r);return i?hw(i,n)??fw[n]??e:e}function mw(e,t,n,r){let i=gw(e,t,n);return!i||hw(i,r)!==void 0?``:` ${e}: ${i.join(` | `)}`}function hw(e,t){if(t===F.MySQL||t===F.MariaDB)return`ENUM(${e.map(e=>`'${e.replace(/'/g,`''`)}'`).join(`,`)})`}function gw(e,t,n){let r=t?`${t}.${e}`:``;return n.enums[r]??n.enums[e]??null}const _w=`public`;function vw(e,t,n){let r=Bp({}),i=yw(e.tables),a=e.tables.map(a=>Sw(r,t,e,n,a,i(a)));return ww(r,t,a,e,xw(e.tables,a)),kw(r,a),r}function yw(e){let t=new Set(e.map(e=>bw(e.schemaName)));return e=>{let n=bw(e.schemaName);return t.size>1&&n!==_w?`${n}_${e.name}`:e.name}}function bw(e){return e===``?_w:e}function xw(e,t){let n=new Map,r=(e,t)=>{let r=e.toLowerCase();n.has(r)||n.set(r,t)};return e.forEach((e,n)=>{let i=t[n],a=bw(e.schemaName);r(`${a}.${e.name}`,i),r(e.name,i),e.alias&&(r(e.alias,i),r(`${a}.${e.alias}`,i))}),e=>{let t=bw(e.schemaName);return n.get(`${t}.${e.tableName}`.toLowerCase())??(e.schemaName===``?n.get(e.tableName.toLowerCase())??null:null)}}function Sw({doc:e,collections:t},n,r,i,a,o){let{toWidth:s}=n,c=Ch(o),l=Ch(a.comment),u=Qb({name:c,comment:l,ui:{widthName:V(s(c)),widthComment:V(s(l))}}),d={source:a,table:u,columns:[]},f=new Set(a.indexes.filter(e=>e.primaryKey).flatMap(e=>e.columnNames).map(e=>e.toUpperCase()));return a.columns.forEach(e=>{let n=Ch(e.name),a=e.primaryKey||f.has(n.toUpperCase()),o=pw(e.typeName,e.typeSchemaName,i,r),c=`${Ch(e.comment)}${mw(e.typeName,e.typeSchemaName,r,i)}`.trim(),l=Ch(e.default);Cw(t,d,kx({tableId:u.id,name:n,comment:c,dataType:o,default:l,options:(e.autoIncrement?L.autoIncrement:0)|(a?L.primaryKey:0)|(e.unique?L.unique:0)|(e.notNull?L.notNull:0),ui:{widthName:V(s(n)),widthComment:V(s(c)),widthDataType:V(s(o)),widthDefault:V(s(l)),keys:a?R.primaryKey:0}}))}),e.tableIds.push(u.id),j(t).collection(`tableEntities`).setOne(u),d}function Cw(e,t,n){t.table.columnIds.push(n.id),t.table.seqColumnIds.push(n.id),t.columns.push(n),j(e).collection(`tableColumnEntities`).setOne(n)}function ww(e,t,n,r,i){let a=new Set,o=t=>Ew(e,a,t);n.forEach(r=>{r.source.columns.forEach((a,s)=>{let c=r.columns[s];c&&a.inlineRefs.forEach(a=>{let s=i(a.target);if(!s)return;let l=Tw(s,a.target);if(l.length!==1)return;if(a.operator===`<>`){Dw(e,t,n,r,s);return}let u=a.operator!==`<`;o(u?{parent:s,parentColumns:l,child:r,childColumns:[c],toMany:a.operator===`>`}:{parent:r,parentColumns:[c],child:s,childColumns:l,toMany:!0})})})}),r.refs.forEach(r=>{let a=i(r.left),s=i(r.right);if(!a||!s)return;let c=Tw(a,r.left),l=Tw(s,r.right);if(c.length===0||c.length!==r.left.columnNames.length||l.length!==r.right.columnNames.length||c.length!==l.length)return;if(r.operator===`<>`){Dw(e,t,n,a,s);return}let u=r.operator!==`>`;o({parent:u?a:s,parentColumns:u?c:l,child:u?s:a,childColumns:u?l:c,toMany:r.operator!==`-`})})}function Tw(e,t){let n=[];for(let r of t.columnNames){let t=HS(e.columns,r);if(!t)return[];n.push(t)}return n}function Ew({doc:e,collections:t},n,{parent:r,parentColumns:i,child:a,childColumns:o,toMany:s}){if(i.length===0||o.length===0)return;let c=`${r.table.id}:${a.table.id}:${o.map(e=>e.id).join(`,`)}`;if(n.has(c))return;n.add(c);let l=o.every(e=>z(e.options,L.notNull));o.forEach(e=>{e.ui.keys=z(e.ui.keys,R.primaryKey)?e.ui.keys|R.foreignKey:R.foreignKey});let u=Mb({identification:o.every(e=>z(e.ui.keys,R.primaryKey)&&z(e.ui.keys,R.foreignKey)),relationshipType:s?l?Ym.OneN:Ym.ZeroN:l?Ym.OneOnly:Ym.ZeroOne,start:{tableId:r.table.id,columnIds:i.map(e=>e.id)},end:{tableId:a.table.id,columnIds:o.map(e=>e.id)}});e.relationshipIds.push(u.id),j(t).collection(`relationshipEntities`).setOne(u)}function Dw(e,t,n,r,i){let{doc:a,collections:o}=e,{toWidth:s}=t,c=BS(r.columns),l=BS(i.columns);if(!c.length||!l.length)return;let u=VS(n.map(e=>e.table),``,`${r.table.name}_${i.table.name}`),d=`Junction table inferred from ${r.table.name} <-> ${i.table.name}`,f=Qb({name:u,comment:d,ui:{widthName:V(s(u)),widthComment:V(s(d))}}),p={source:{schemaName:``,name:u,alias:``,comment:d,columns:[],indexes:[]},table:f,columns:[]};a.tableIds.push(f.id),j(o).collection(`tableEntities`).setOne(f),n.push(p),Ow(e,t,p,r,c),Ow(e,t,p,i,l)}function Ow(e,{toWidth:t},n,r,i){let{doc:a,collections:o}=e,s=i.map(e=>{let i=VS(n.columns,``,`${r.table.name}_${e.name}`),{dataType:a}=e,s=kx({tableId:n.table.id,name:i,dataType:a,options:L.primaryKey|L.notNull,ui:{keys:R.primaryKey|R.foreignKey,widthName:V(t(i)),widthDataType:V(t(a))}});return Cw(o,n,s),s}),c=Mb({identification:!0,relationshipType:Ym.ZeroN,start:{tableId:r.table.id,columnIds:i.map(e=>e.id)},end:{tableId:n.table.id,columnIds:s.map(e=>e.id)}});a.relationshipIds.push(c.id),j(o).collection(`relationshipEntities`).setOne(c)}function kw({doc:e,collections:t},n){n.forEach(({source:n,table:r,columns:i})=>{n.indexes.forEach(n=>{if(n.primaryKey)return;let a=Sy({name:Ch(n.name),tableId:r.id,unique:n.unique}),o=[];n.columnNames.forEach(e=>{let t=HS(i,e);t&&o.push(zy({indexId:a.id,columnId:t.id,orderType:Zm.ASC}))}),o.length&&(o.forEach(e=>{a.indexColumnIds.push(e.id),a.seqIndexColumnIds.push(e.id),j(t).collection(`indexColumnEntities`).setOne(e)}),e.indexIds.push(a.id),j(t).collection(`indexEntities`).setOne(a))})})}const Y={identifier:1,quoted:2,string:3,expression:4,number:5,punctuation:6,operator:7,newline:8},Aw=/[ \t\f\v]/,jw=/[0-9]/,Mw=/[A-Za-z_\u0080-\uffff]/,Nw=/[0-9A-Za-z_\u0080-\uffff]/,Pw=/^[ \t]*/,Fw={n:`
|
|
14
|
-
`,r:`\r`,t:` `,b:`\b`,f:`\f`,v:`\v`,0:`\0`};function
|
|
15
|
-
`)};for(;n<e.length;){let t=e[n];if(
|
|
12
|
+
`);t[0]?.trim()===``&&t.shift(),t.length&&t[t.length-1].trim()===``&&t.pop();let n=t.filter(e=>e.trim()!==``).map(e=>(Gw.exec(e)?.[0]??``).length),r=n.length?Math.min(...n):0;return t.map(e=>e.slice(r)).join(`
|
|
13
|
+
`)}const tT=new Set([`as`,`check`,`false`,`fk`,`index`,`namespace`,`null`,`nullable`,`pk`,`rel`,`true`,`type`,`unique`]),nT=new Set([`false`,`null`,`true`]),rT=/^-?\d+$/;function iT(e){try{return{ok:!0,model:sT(aT(Jw(e)))}}catch(e){return{ok:!1,message:e instanceof Error?e.message:`Invalid AML`}}}function aT(e){let t=[],n=null;return e.forEach(e=>{if(e.kind===J.newline){n={depth:e.depth,tokens:[]},t.push(n);return}n?.tokens.push(e)}),t}function oT(e){let t=0;return{peek:(n=0)=>e[t+n]??null,next:()=>e[t++]??null,atEnd:()=>t>=e.length}}function sT(e){let t={entities:[],relations:[],types:{},skipped:[]},n=new Set,r=e=>{e!==``&&!n.has(e)&&(n.add(e),t.skipped.push(e))},i=Tw,a=null,o={path:[],depth:0};return e.forEach(e=>{let n=oT(e.tokens),s=n.peek();if(!s)return;if(e.depth>=0){a!==null&&lT(n,e.depth,a,o,t,r);return}let c=s.kind===J.identifier?s.value.toLowerCase():``;if(c===`namespace`){n.next(),i=wT(n);return}if(c===`rel`||c===`fk`){n.next();let e=hT(n,i,r);e&&t.relations.push(e);return}if(c===`type`){n.next(),CT(n,i,t,r);return}if(!LT(s))return;let l=cT(n,i,r);l&&(t.entities.push(l),a=l,o={path:[],depth:0})}),t}function cT(e,t,n){let r=TT(e);if(r.name===``)return null;let i=e.peek();i&&Y(i,`*`)&&(e.next(),n(`view`));let a=DT(e),o=OT(e,n);return{namespace:PT(t,r.namespace),name:r.name,alias:a,comment:o.doc||o.comment,attributes:[]}}function lT(e,t,n,r,i,a){let o=NT(e);if(o===``)return;let s=dT(e),c={path:uT(r,t,o),comment:``,typeName:s.typeName,enumValues:s.enumValues,notNull:!0,primaryKey:!1,indexes:[],default:s.default,autoIncrement:!1},l=e.peek();l&&RT(l,`nullable`)&&(e.next(),c.notNull=!1),fT(e,c,n,i,a);let u=OT(e,a);c.comment=u.doc||u.comment,c.autoIncrement=u.autoIncrement,n.attributes.push(c)}function uT(e,t,n){if(t===0||e.path.length===0)e.depth=0,e.path=[n];else if(t>e.depth)e.depth+=1,e.path=[...e.path,n];else{let r=e.depth-t;e.depth=t,e.path=[...e.path.slice(0,-(r+1)),n]}return e.path.join(`.`)}function dT(e){let t=NT(e);if(t===``)return{typeName:``,enumValues:[],default:``};let n=t,r=[],i=e.peek();if(i&&Y(i,`(`)){e.next();let{values:i,numeric:a}=jT(e);i.length!==0&&i.length<=2&&a?n=`${t}(${i.join(`,`)})`:r=i}let a=e.peek();return a&&Y(a,`=`)?(e.next(),{typeName:n,enumValues:r,default:MT(e)}):{typeName:n,enumValues:r,default:``}}function fT(e,t,n,r,i){let a=()=>{let i=gT(e);return i?(r.relations.push({src:{namespace:n.namespace,entityName:n.name,attributePaths:[t.path]},...i}),!0):!1};for(;!e.atEnd();){let n=e.peek();if(!n)return;if(n.kind===J.identifier){let r=n.value.toLowerCase();if(r===`pk`){e.next(),mT(e),t.primaryKey=!0;continue}if(r===`unique`||r===`index`){e.next(),t.indexes.push({name:mT(e),unique:r===`unique`});continue}if(r===`check`){e.next(),pT(e),i(`check`);continue}if(r===`fk`&&a())continue;return}if(!(zT(n)&&a()))return}}function pT(e){let t=e.peek();t&&Y(t,`(`)&&(e.next(),IT(e,`(`,`)`)),mT(e)}function mT(e){let t=e.peek();return!t||!Y(t,`=`)?``:(e.next(),NT(e))}function hT(e,t,n){let r=yT(e),i=gT(e);return OT(e,n),!i||r.entityName===``?null:{src:FT(r.namespace)?{...r,namespace:t}:r,...i}}function gT(e){let t=e.peek();if(t&&RT(t,`fk`)){e.next();let t=yT(e);return t.entityName===``?null:{ref:t,srcCardinality:`n`,refCardinality:`1`,polymorphic:!1}}let n=_T(e);if(n===null)return null;let r=vT(e);r&&(xT(e),e.next(),MT(e));let i=_T(e)??`n`,a=yT(e);return a.entityName===``?null:{ref:a,srcCardinality:i,refCardinality:n,polymorphic:r}}function _T(e){let t=e.peek();return!t||!zT(t)?null:(e.next(),t.value===`-`?`1`:`n`)}function vT(e){let t=0;for(;;){let n=e.peek(t);if(!n||!LT(n))return!1;t+=1;let r=e.peek(t);if(!r||!Y(r,`.`))break;t+=1}let n=e.peek(t);return n!==null&&Y(n,`=`)}function yT(e){let t=TT(e),n=e.peek();if(n&&Y(n,`(`))return e.next(),{namespace:t.namespace,entityName:t.name,attributePaths:bT(e)};if(t.namespace.schema===``)return{namespace:Tw,entityName:t.name,attributePaths:[]};let r=[t.name,...ST(e)].join(`.`);return{namespace:{database:``,catalog:``,schema:t.namespace.catalog},entityName:t.namespace.schema,attributePaths:[r]}}function bT(e){let t=[];for(;!e.atEnd();){let n=e.peek();if(!n||Y(n,`)`)){e.next();break}if(LT(n)){t.push(xT(e));continue}e.next()}return t}function xT(e){let t=[NT(e)];for(;!e.atEnd();){let n=e.peek();if(!n||!Y(n,`.`))break;e.next();let r=NT(e);if(r===``)break;t.push(r)}return t.join(`.`)}function ST(e){let t=[];for(;!e.atEnd();){let n=e.peek();if(!n||!Y(n,`:`))break;e.next();let r=NT(e);if(r===``)break;t.push(r)}return t}function CT(e,t,n,r){let i=TT(e);if(i.name===``)return;let a={values:[],alias:``},o=e.peek();o&&Y(o,`(`)?(e.next(),a.values=jT(e).values):o&&Y(o,`{`)?(e.next(),IT(e,`{`,`}`),r(`struct type`)):o&&o.kind===J.expression?(e.next(),r(`custom type`)):o&<(o)&&(a.alias=NT(e)),OT(e,r);let s=PT(t,i.namespace),c=[s.database,s.catalog,s.schema,i.name].filter(e=>e!==``).join(`.`);n.types[c]=a,c!==i.name&&!(i.name in n.types)&&(n.types[i.name]=a)}function wT(e){let t=NT(e);if(t===``)return Tw;let n=ET(e),r=ET(e);return n&&r?{database:t,catalog:n.name,schema:r.name}:n?{database:``,catalog:t,schema:n.name}:{database:``,catalog:``,schema:t}}function TT(e){let t=NT(e);if(t===``)return{namespace:Tw,name:``};let n=ET(e),r=ET(e),i=ET(e);return n&&r&&i&&i.name!==``?{namespace:{database:t,catalog:n.name,schema:r.name},name:i.name}:n&&r&&r.name!==``?{namespace:{database:``,catalog:t,schema:n.name},name:r.name}:n&&n.name!==``?{namespace:{database:``,catalog:``,schema:t},name:n.name}:{namespace:Tw,name:t}}function ET(e){let t=e.peek();return!t||!Y(t,`.`)?null:(e.next(),{name:NT(e)})}function DT(e){let t=e.peek();return!t||!RT(t,`as`)?``:(e.next(),NT(e))}function OT(e,t){let n={autoIncrement:!1,doc:``,comment:``};for(;!e.atEnd();){let r=e.next();if(!r)break;if(Y(r,`{`)){kT(e,n,t);continue}if(r.kind===J.doc&&n.doc===``){n.doc=r.value;continue}r.kind===J.comment&&n.comment===``&&(n.comment=r.value)}return n}function kT(e,t,n){for(;!e.atEnd();){let r=e.next();if(!r||Y(r,`}`))return;if(r.kind!==J.identifier&&r.kind!==J.quoted)continue;let i=e.peek();i&&(Y(i,`:`)||Y(i,`=`))&&(e.next(),AT(e)),r.value.toLowerCase()===`autoincrement`?t.autoIncrement=!0:n(r.value)}}function AT(e){let t=0;for(;!e.atEnd();){let n=e.peek();if(!n||t===0&&(Y(n,`,`)||Y(n,`}`)))return;e.next(),Y(n,`[`)?t+=1:Y(n,`]`)&&--t}}function jT(e){let t=[],n=!0;for(;!e.atEnd();){let r=e.peek();if(!r||Y(r,`)`)){e.next();break}if(Y(r,`,`)){e.next();continue}let i=MT(e);t.push(i),n=n&&r.kind!==J.quoted&&rT.test(i)}return{values:t,numeric:n}}function MT(e){let t=e.peek();if(!t)return``;if(Y(t,`-`)&&e.peek(1)?.kind===J.number)return e.next(),`-${e.next()?.value??``}`;switch(e.next(),t.kind){case J.expression:return`\`${t.value}\``;case J.string:return`'${t.value}'`;case J.identifier:return nT.has(t.value.toLowerCase())?t.value.toLowerCase():t.value;default:return t.value}}function NT(e){let t=e.peek();return!t||!LT(t)?``:(e.next(),t.value)}function PT(e,t){return{database:t.database||e.database,catalog:t.catalog||e.catalog,schema:t.schema||e.schema}}function FT(e){return e.database===``&&e.catalog===``&&e.schema===``}function IT(e,t,n){let r=1;for(;!e.atEnd()&&r!==0;){let i=e.next();if(!i)break;Y(i,t)?r+=1:Y(i,n)&&--r}}function LT(e){return e.kind===J.quoted||e.kind===J.identifier&&!tT.has(e.value.toLowerCase())}function RT(e,t){return e.kind===J.identifier&&e.value.toLowerCase()===t}function zT(e){return e.kind===J.punctuation&&(e.value===`-`||e.value===`<`||e.value===`>`)}function Y(e,t){return e.kind===J.punctuation&&e.value===t}const BT={entities:[],relations:[],types:{},skipped:[]};function VT(e,t,n){let r=iT(e),i=r.ok?r.model:BT,a=Hp({}),o=Hh(i.entities.length*100);a.settings.width=o,a.settings.height=o;let{settings:s}=n?n(a):a,c=Dw(i,t,s.database);return c.settings=s,Hm(c)}const HT={[L.MariaDB]:`VARCHAR(255)`,[L.MSSQL]:`varchar(255)`,[L.MySQL]:`VARCHAR(255)`,[L.Oracle]:`VARCHAR2(255)`,[L.PostgreSQL]:`varchar(255)`,[L.SQLite]:`TEXT`,[L.Databricks]:`STRING`,[L.Snowflake]:`VARCHAR(255)`};function UT(e,t,n,r){let i=KT(e,t,r);return i?GT(i,n)??HT[n]??e:e}function WT(e,t,n,r){let i=KT(e,t,n);return!i||GT(i,r)!==void 0?``:` ${e}: ${i.join(` | `)}`}function GT(e,t){if(t===L.MySQL||t===L.MariaDB)return`ENUM(${e.map(e=>`'${e.replace(/'/g,`''`)}'`).join(`,`)})`}function KT(e,t,n){let r=t?`${t}.${e}`:``;return n.enums[r]??n.enums[e]??null}const qT=`public`;function JT(e,t,n){let r=Hp({}),i=YT(e.tables),a=e.tables.map(a=>QT(r,t,e,n,a,i(a)));return eE(r,t,a,e,ZT(e.tables,a)),aE(r,a),r}function YT(e){let t=new Set(e.map(e=>XT(e.schemaName)));return e=>{let n=XT(e.schemaName);return t.size>1&&n!==qT?`${n}_${e.name}`:e.name}}function XT(e){return e===``?qT:e}function ZT(e,t){let n=new Map,r=(e,t)=>{let r=e.toLowerCase();n.has(r)||n.set(r,t)};return e.forEach((e,n)=>{let i=t[n],a=XT(e.schemaName);r(`${a}.${e.name}`,i),r(e.name,i),e.alias&&(r(e.alias,i),r(`${a}.${e.alias}`,i))}),e=>{let t=XT(e.schemaName);return n.get(`${t}.${e.tableName}`.toLowerCase())??(e.schemaName===``?n.get(e.tableName.toLowerCase())??null:null)}}function QT({doc:e,collections:t},n,r,i,a,o){let{toWidth:s}=n,c=Xh(o),l=Xh(a.comment),u=OS({name:c,comment:l,ui:{widthName:U(s(c)),widthComment:U(s(l))}}),d={source:a,table:u,columns:[]},f=new Set(a.indexes.filter(e=>e.primaryKey).flatMap(e=>e.columnNames).map(e=>e.toUpperCase()));return a.columns.forEach(e=>{let n=Xh(e.name),a=e.primaryKey||f.has(n.toUpperCase()),o=UT(e.typeName,e.typeSchemaName,i,r),c=`${Xh(e.comment)}${WT(e.typeName,e.typeSchemaName,r,i)}`.trim(),l=Xh(e.default);$T(t,d,aC({tableId:u.id,name:n,comment:c,dataType:o,default:l,options:(e.autoIncrement?z.autoIncrement:0)|(a?z.primaryKey:0)|(e.unique?z.unique:0)|(e.notNull?z.notNull:0),ui:{widthName:U(s(n)),widthComment:U(s(c)),widthDataType:U(s(o)),widthDefault:U(s(l)),keys:a?B.primaryKey:0}}))}),e.tableIds.push(u.id),N(t).collection(`tableEntities`).setOne(u),d}function $T(e,t,n){t.table.columnIds.push(n.id),t.table.seqColumnIds.push(n.id),t.columns.push(n),N(e).collection(`tableColumnEntities`).setOne(n)}function eE(e,t,n,r,i){let a=new Set,o=t=>nE(e,a,t);n.forEach(r=>{r.source.columns.forEach((a,s)=>{let c=r.columns[s];c&&a.inlineRefs.forEach(a=>{let s=i(a.target);if(!s)return;let l=tE(s,a.target);if(l.length!==1)return;if(a.operator===`<>`){rE(e,t,n,r,s);return}let u=a.operator!==`<`;o(u?{parent:s,parentColumns:l,child:r,childColumns:[c],toMany:a.operator===`>`}:{parent:r,parentColumns:[c],child:s,childColumns:l,toMany:!0})})})}),r.refs.forEach(r=>{let a=i(r.left),s=i(r.right);if(!a||!s)return;let c=tE(a,r.left),l=tE(s,r.right);if(c.length===0||c.length!==r.left.columnNames.length||l.length!==r.right.columnNames.length||c.length!==l.length)return;if(r.operator===`<>`){rE(e,t,n,a,s);return}let u=r.operator!==`>`;o({parent:u?a:s,parentColumns:u?c:l,child:u?s:a,childColumns:u?l:c,toMany:r.operator!==`-`})})}function tE(e,t){let n=[];for(let r of t.columnNames){let t=vw(e.columns,r);if(!t)return[];n.push(t)}return n}function nE({doc:e,collections:t},n,{parent:r,parentColumns:i,child:a,childColumns:o,toMany:s}){if(i.length===0||o.length===0)return;let c=`${r.table.id}:${a.table.id}:${o.map(e=>e.id).join(`,`)}`;if(n.has(c))return;n.add(c);let l=o.every(e=>G(e.options,z.notNull));o.forEach(e=>{e.ui.keys=G(e.ui.keys,B.primaryKey)?e.ui.keys|B.foreignKey:B.foreignKey});let u=sS({identification:o.every(e=>G(e.ui.keys,B.primaryKey)&&G(e.ui.keys,B.foreignKey)),relationshipType:s?l?Zm.OneN:Zm.ZeroN:l?Zm.OneOnly:Zm.ZeroOne,start:{tableId:r.table.id,columnIds:i.map(e=>e.id)},end:{tableId:a.table.id,columnIds:o.map(e=>e.id)}});e.relationshipIds.push(u.id),N(t).collection(`relationshipEntities`).setOne(u)}function rE(e,t,n,r,i){let{doc:a,collections:o}=e,{toWidth:s}=t,c=gw(r.columns),l=gw(i.columns);if(!c.length||!l.length)return;let u=_w(n.map(e=>e.table),``,`${r.table.name}_${i.table.name}`),d=`Junction table inferred from ${r.table.name} <-> ${i.table.name}`,f=OS({name:u,comment:d,ui:{widthName:U(s(u)),widthComment:U(s(d))}}),p={source:{schemaName:``,name:u,alias:``,comment:d,columns:[],indexes:[]},table:f,columns:[]};a.tableIds.push(f.id),N(o).collection(`tableEntities`).setOne(f),n.push(p),iE(e,t,p,r,c),iE(e,t,p,i,l)}function iE(e,{toWidth:t},n,r,i){let{doc:a,collections:o}=e,s=i.map(e=>{let i=_w(n.columns,``,`${r.table.name}_${e.name}`),{dataType:a}=e,s=aC({tableId:n.table.id,name:i,dataType:a,options:z.primaryKey|z.notNull,ui:{keys:B.primaryKey|B.foreignKey,widthName:U(t(i)),widthDataType:U(t(a))}});return $T(o,n,s),s}),c=sS({identification:!0,relationshipType:Zm.ZeroN,start:{tableId:r.table.id,columnIds:i.map(e=>e.id)},end:{tableId:n.table.id,columnIds:s.map(e=>e.id)}});a.relationshipIds.push(c.id),N(o).collection(`relationshipEntities`).setOne(c)}function aE({doc:e,collections:t},n){n.forEach(({source:n,table:r,columns:i})=>{n.indexes.forEach(n=>{if(n.primaryKey)return;let a=Zb({name:Xh(n.name),tableId:r.id,unique:n.unique}),o=[];n.columnNames.forEach(e=>{let t=vw(i,e);t&&o.push(mx({indexId:a.id,columnId:t.id,orderType:$m.ASC}))}),o.length&&(o.forEach(e=>{a.indexColumnIds.push(e.id),a.seqIndexColumnIds.push(e.id),N(t).collection(`indexColumnEntities`).setOne(e)}),e.indexIds.push(a.id),N(t).collection(`indexEntities`).setOne(a))})})}const X={identifier:1,quoted:2,string:3,expression:4,number:5,punctuation:6,operator:7,newline:8},oE=/[ \t\f\v]/,sE=/[0-9]/,cE=/[A-Za-z_\u0080-\uffff]/,lE=/[0-9A-Za-z_\u0080-\uffff]/,uE=/^[ \t]*/,dE={n:`
|
|
14
|
+
`,r:`\r`,t:` `,b:`\b`,f:`\f`,v:`\v`,0:`\0`};function fE(e){let t=[],n=0,r=1,i=0,a=(e,n)=>{t.push({kind:e,value:n,line:r})},o=()=>{i===0&&a(X.newline,`
|
|
15
|
+
`)};for(;n<e.length;){let t=e[n];if(oE.test(t)){n+=1;continue}if(t===`\r`||t===`
|
|
16
16
|
`){t===`\r`&&e[n+1]===`
|
|
17
17
|
`&&(n+=1),n+=1,o(),r+=1;continue}if(t===`/`&&e[n+1]===`/`){for(n+=2;n<e.length&&e[n]!==`
|
|
18
18
|
`;)n+=1;continue}if(t===`/`&&e[n+1]===`*`){n+=2;let t=!1;for(;n<e.length;){if(e[n]===`*`&&e[n+1]===`/`){n+=2;break}e[n]===`
|
|
19
|
-
`&&(t=!0,r+=1),n+=1}t&&o();continue}if(t===`"`){let t=
|
|
20
|
-
`&&(o+=1),i.push(t),a+=1}return{value:i.join(``),index:a,lines:o}}function
|
|
19
|
+
`&&(t=!0,r+=1),n+=1}t&&o();continue}if(t===`"`){let t=mE(e,n+1,`"`,!0);n=t.index,r+=t.lines,a(X.quoted,t.value);continue}if(t===`'`){if(e.startsWith(`'''`,n)){let t=mE(e,n+3,`'''`,!0);n=t.index,r+=t.lines,a(X.string,hE(t.value));continue}let t=mE(e,n+1,`'`,!0);n=t.index,r+=t.lines,a(X.string,t.value);continue}if(t==="`"){let t=mE(e,n+1,"`",!1);n=t.index,r+=t.lines,a(X.expression,t.value);continue}if(sE.test(t)){let t=n;for(;t<e.length&&sE.test(e[t]);)t+=1;if(e[t]===`.`&&sE.test(e[t+1]??``))for(t+=1;t<e.length&&sE.test(e[t]);)t+=1;if((e[t]===`e`||e[t]===`E`)&&sE.test(e[t+1]??``))for(t+=2;t<e.length&&sE.test(e[t]);)t+=1;a(X.number,e.slice(n,t)),n=t;continue}if(cE.test(t)){let t=n+1;for(;t<e.length&&lE.test(e[t]);)t+=1;a(X.identifier,e.slice(n,t)),n=t;continue}let s=pE(e,n);if(s){a(X.operator,s),n+=s.length;continue}t===`[`||t===`(`?i+=1:(t===`]`||t===`)`)&&(i=Math.max(0,i-1)),a(X.punctuation,t),n+=1}return t}function pE(e,t){let n=e[t];if(n===`-`)return e[t+1]===`?`?`-?`:``;if(n!==`<`&&n!==`>`&&n!==`?`)return``;let r=/^\??(?:<>|<|>|-)\??/.exec(e.slice(t));return r&&/[<>-]/.test(r[0])?r[0]:``}function mE(e,t,n,r){let i=[],a=t,o=0;for(;a<e.length;){if(e.startsWith(n,a))return{value:i.join(``),index:a+n.length,lines:o};let t=e[a];if(r&&t===`\\`&&a+1<e.length){let t=e[a+1];i.push(dE[t]??t),a+=2;continue}t===`
|
|
20
|
+
`&&(o+=1),i.push(t),a+=1}return{value:i.join(``),index:a,lines:o}}function hE(e){let t=e.replace(/\r\n|\r/g,`
|
|
21
21
|
`).split(`
|
|
22
|
-
`);t[0]?.trim()===``&&t.shift(),t.length&&t[t.length-1].trim()===``&&t.pop();let n=t.filter(e=>e.trim()!==``).map(e=>(
|
|
23
|
-
`)}const Bw=/^[0-9a-z ]+$/,Vw=/'/g,Hw=/\?/g;function Uw(e){try{return{ok:!0,model:Gw(Iw(e))}}catch(e){return{ok:!1,message:e instanceof Error?e.message:`Invalid DBML`}}}function Ww(e){let t=0;return{peek:(n=0)=>e[t+n]??null,next:()=>e[t++]??null,atEnd:()=>t>=e.length}}function Gw(e){let t=Ww(e),n={tables:[],refs:[],enums:{},skipped:[]},r=new Map,i=new Set,a=e=>{i.has(e)||(i.add(e),n.skipped.push(e)),gT(t)};for(;!t.atEnd();){if(vT(t))continue;let e=t.peek();if(!e)break;if(!yT(e)){t.next();continue}let i=e.value.toLowerCase();if(i===`table`&&e.kind===Y.identifier){t.next();let e=Kw(t,r);e&&n.tables.push(e);continue}if(i===`tablepartial`&&e.kind===Y.identifier){t.next();let e=Kw(t,r);e&&r.set(e.name,e.columns);continue}if(i===`ref`&&e.kind===Y.identifier){t.next(),n.refs.push(...Qw(t));continue}if(i===`enum`&&e.kind===Y.identifier){t.next(),nT(t,n.enums);continue}a(i)}return n}function Kw(e,t){let{schemaName:n,name:r}=uT(e),i={schemaName:n,name:r,alias:``,comment:``,columns:[],indexes:[]},a=e.peek();if(a&&a.kind===Y.identifier&&a.value.toLowerCase()===`as`&&(e.next(),i.alias=dT(e)),oT(i,rT(e)),!mT(e))return r===``?null:i;for(;!e.atEnd();){if(vT(e))continue;let n=e.peek();if(!n)break;if(n.kind===Y.punctuation&&n.value===`}`){e.next();break}if(n.kind===Y.punctuation&&n.value===`~`){e.next();let n=t.get(dT(e));n&&i.columns.push(...n.map(e=>({...e})));continue}if(n.kind===Y.identifier){let t=n.value.toLowerCase(),r=e.peek(1);if(t===`note`&&r&&X(r,`:`)){e.next(),e.next(),i.comment=fT(e);continue}if(t===`note`&&r&&X(r,`{`)){e.next(),e.next(),i.comment=pT(e);continue}if(t===`indexes`&&r&&X(r,`{`)){e.next(),e.next(),i.indexes.push(...Xw(e));continue}if(r&&X(r,`{`)){e.next(),e.next(),hT(e);continue}}let r=qw(e);r&&i.columns.push(r)}return i}function qw(e){let t=e.peek();if(!t||!yT(t))return _T(e),null;e.next();let n={name:t.value,comment:``,typeName:``,typeSchemaName:``,primaryKey:!1,unique:!1,notNull:!1,autoIncrement:!1,default:``,inlineRefs:[]},r=Jw(e);return n.typeName=r.name,n.typeSchemaName=r.schemaName,iT(n,rT(e)),_T(e),n.typeName===``?null:n}function Jw(e){let{schemaName:t,name:n}=uT(e);if(n===``)return{name:``,schemaName:``};let r=[n],i=e.peek();i&&X(i,`(`)&&(e.next(),r.push(`(${Yw(e)})`));let a=e.peek(),o=e.peek(1);return a&&o&&X(a,`[`)&&X(o,`]`)&&(e.next(),e.next(),r.push(`[]`)),{name:r.join(``),schemaName:t}}function Yw(e){let t=[];for(;!e.atEnd();){let n=e.next();if(!n||X(n,`)`))break;n.kind!==Y.newline&&t.push(n.kind===Y.string?`'${n.value}'`:n.value)}return t.join(``)}function Xw(e){let t=[];for(;!e.atEnd();){if(vT(e))continue;let n=e.peek();if(!n)break;if(X(n,`}`)){e.next();break}let r={name:``,unique:!1,primaryKey:!1,columnNames:[]};X(n,`(`)?(e.next(),r.columnNames.push(...Zw(e))):yT(n)?(e.next(),r.columnNames.push(n.value)):e.next(),aT(r,rT(e)),_T(e),r.columnNames.length!==0&&t.push(r)}return t}function Zw(e){let t=[];for(;!e.atEnd();){let n=e.next();if(!n||X(n,`)`))break;yT(n)&&t.push(n.value)}return t}function Qw(e){let t=e.peek();if(t&&yT(t)){let t=e.peek(1);t&&(X(t,`:`)||X(t,`{`))&&e.next()}let n=e.peek();if(n&&X(n,`:`)){e.next();let t=$w(e);return _T(e),t?[t]:[]}if(!mT(e))return _T(e),[];let r=[];for(;!e.atEnd();){if(vT(e))continue;let t=e.peek();if(!t)break;if(X(t,`}`)){e.next();break}let n=$w(e);n?r.push(n):_T(e)}return r}function $w(e){let t=tT(e),n=eT(e);if(n===``)return null;let r=tT(e);return rT(e),t.tableName===``||r.tableName===``?null:{operator:n,left:t,right:r}}function eT(e){let t=e.peek();return t?t.kind===Y.operator?(e.next(),t.value.replace(Hw,``)):X(t,`-`)?(e.next(),`-`):``:``}function tT(e){let t=[],n=[];for(;!e.atEnd();){let r=e.peek();if(!r||!yT(r))break;e.next(),t.push(r.value);let i=e.peek();if(!i||!X(i,`.`))break;e.next();let a=e.peek();if(a&&X(a,`(`)){e.next(),n.push(...Zw(e));break}}n.length===0&&t.length!==0&&n.push(t.pop());let r=t.pop()??``;return{schemaName:t.pop()??``,tableName:r,columnNames:n}}function nT(e,t){let{schemaName:n,name:r}=uT(e);if(rT(e),!mT(e)){_T(e);return}let i=[];for(;!e.atEnd();){if(vT(e))continue;let t=e.peek();if(!t)break;if(X(t,`}`)){e.next();break}yT(t)?(e.next(),i.push(t.value),rT(e)):e.next(),_T(e)}r!==``&&(t[n?`${n}.${r}`:r]=i,n&&!(r in t)&&(t[r]=i))}function rT(e){let t=e.peek();if(!t||!X(t,`[`))return[];e.next();let n=[],r=[],i=[],a=!1,o=()=>{let e=r.join(` `).toLowerCase();(e!==``||i.length!==0)&&n.push({key:e,tokens:i}),r=[],i=[],a=!1};for(;!e.atEnd();){let t=e.next();if(!t||X(t,`]`))break;if(X(t,`,`)){o();continue}if(!a&&X(t,`:`)){a=!0;continue}if(a){i.push(t);continue}if(yT(t)&&Bw.test(t.value.toLowerCase())){r.push(t.value);continue}a=!0,i.push(t)}return o(),n}function iT(e,t){t.forEach(({key:t,tokens:n})=>{switch(t){case`pk`:case`primary key`:e.primaryKey=!0;break;case`unique`:e.unique=!0;break;case`not null`:e.notNull=!0;break;case`increment`:e.autoIncrement=!0;break;case`note`:e.comment=cT(n);break;case`default`:e.default=lT(n);break;case`ref`:{let t=sT(n);t&&e.inlineRefs.push(t);break}}})}function aT(e,t){t.forEach(({key:t,tokens:n})=>{switch(t){case`name`:e.name=cT(n);break;case`unique`:e.unique=!0;break;case`pk`:case`primary key`:e.primaryKey=!0}})}function oT(e,t){t.forEach(({key:t,tokens:n})=>{t===`note`&&(e.comment=cT(n))})}function sT(e){let t=Ww(e),n=eT(t);if(n===``)return null;let r=tT(t);return r.tableName===``?null:{operator:n,target:r}}function cT(e){let t=e.find(e=>e.kind===Y.string||e.kind===Y.quoted||e.kind===Y.identifier);return t?t.value:``}function lT(e){let t=e.filter(e=>e.kind!==Y.newline),n=t[0];if(!n)return``;if(X(n,`-`)&&t[1]?.kind===Y.number)return`-${t[1].value}`;switch(n.kind){case Y.string:return`'${n.value.replace(Vw,`''`)}'`;case Y.expression:case Y.number:case Y.identifier:case Y.quoted:return n.value;default:return t.map(e=>e.value).join(``)}}function uT(e){let t=dT(e);if(t===``)return{schemaName:``,name:``};let n=e.peek();return!n||!X(n,`.`)?{schemaName:``,name:t}:(e.next(),{schemaName:t,name:dT(e)})}function dT(e){let t=e.peek();return!t||!yT(t)?``:(e.next(),t.value)}function fT(e){let t=e.peek();return t&&(t.kind===Y.string||t.kind===Y.quoted)?(e.next(),t.value):``}function pT(e){let t=``;for(;!e.atEnd();){let n=e.next();if(!n||X(n,`}`))break;t===``&&n.kind===Y.string&&(t=n.value)}return t}function mT(e){let t=0;for(;e.peek(t)?.kind===Y.newline;)t+=1;let n=e.peek(t);if(!n||!X(n,`{`))return!1;for(let n=0;n<=t;n+=1)e.next();return!0}function hT(e){let t=1;for(;!e.atEnd()&&t!==0;){let n=e.next();if(!n)break;X(n,`{`)?t+=1:X(n,`}`)&&--t}}function gT(e){if(mT(e)){hT(e);return}for(;!e.atEnd();){let t=e.next();if(!t||t.kind===Y.newline)return;if(X(t,`{`)){hT(e);return}}}function _T(e){for(;!e.atEnd();){let t=e.peek();if(!t)return;if(t.kind===Y.newline){e.next();return}if(X(t,`}`))return;e.next()}}function vT(e){let t=e.peek();return t&&t.kind===Y.newline?(e.next(),!0):!1}function yT(e){return e.kind===Y.identifier||e.kind===Y.quoted}function X(e,t){return e.kind===Y.punctuation&&e.value===t}const bT={tables:[],refs:[],enums:{},skipped:[]};function xT(e,t,n){let r=Uw(e),i=r.ok?r.model:bT,a=Bp({}),o=hh(i.tables.length*100);a.settings.width=o,a.settings.height=o;let{settings:s}=n?n(a):a,c=vw(i,t,s.database);return c.settings=s,Bm(c)}const ST={[F.MariaDB]:`VARCHAR(255)`,[F.MSSQL]:`varchar(255)`,[F.MySQL]:`VARCHAR(255)`,[F.Oracle]:`VARCHAR2(255)`,[F.PostgreSQL]:`varchar(255)`,[F.SQLite]:`TEXT`,[F.Databricks]:`STRING`,[F.Snowflake]:`VARCHAR(255)`},CT={[F.MariaDB]:`INT`,[F.MSSQL]:`int`,[F.MySQL]:`INT`,[F.Oracle]:`INTEGER`,[F.PostgreSQL]:`integer`,[F.SQLite]:`INTEGER`,[F.Databricks]:`INT`,[F.Snowflake]:`INT`},wT={[F.MariaDB]:`SMALLINT`,[F.MSSQL]:`smallint`,[F.MySQL]:`SMALLINT`,[F.Oracle]:`SMALLINT`,[F.PostgreSQL]:`smallint`,[F.SQLite]:`SMALLINT`,[F.Databricks]:`SMALLINT`,[F.Snowflake]:`SMALLINT`},TT={[F.MariaDB]:`BIGINT`,[F.MSSQL]:`bigint`,[F.MySQL]:`BIGINT`,[F.Oracle]:`NUMBER(19)`,[F.PostgreSQL]:`bigint`,[F.SQLite]:`BIGINT`,[F.Databricks]:`BIGINT`,[F.Snowflake]:`BIGINT`},ET={[F.MariaDB]:`DOUBLE`,[F.MSSQL]:`float`,[F.MySQL]:`DOUBLE`,[F.Oracle]:`BINARY_DOUBLE`,[F.PostgreSQL]:`double precision`,[F.SQLite]:`REAL`,[F.Databricks]:`DOUBLE`,[F.Snowflake]:`FLOAT`},DT={[F.MariaDB]:`DECIMAL`,[F.MSSQL]:`decimal`,[F.MySQL]:`DECIMAL`,[F.Oracle]:`DECIMAL`,[F.PostgreSQL]:`numeric`,[F.SQLite]:`DECIMAL`,[F.Databricks]:`DECIMAL`,[F.Snowflake]:`DECIMAL`},OT={[F.MariaDB]:`BOOLEAN`,[F.MSSQL]:`bit`,[F.MySQL]:`BOOLEAN`,[F.Oracle]:`BOOLEAN`,[F.PostgreSQL]:`boolean`,[F.SQLite]:`BOOLEAN`,[F.Databricks]:`BOOLEAN`,[F.Snowflake]:`BOOLEAN`},kT={[F.MariaDB]:`DATE`,[F.MSSQL]:`date`,[F.MySQL]:`DATE`,[F.Oracle]:`DATE`,[F.PostgreSQL]:`date`,[F.SQLite]:`DATE`,[F.Databricks]:`DATE`,[F.Snowflake]:`DATE`},AT={[F.MariaDB]:`TIME`,[F.MSSQL]:`time`,[F.MySQL]:`TIME`,[F.Oracle]:`VARCHAR2(255)`,[F.PostgreSQL]:`time`,[F.SQLite]:`TEXT`,[F.Databricks]:`STRING`,[F.Snowflake]:`TIME`},jT={[F.MariaDB]:`DATETIME`,[F.MSSQL]:`datetime2`,[F.MySQL]:`DATETIME`,[F.Oracle]:`TIMESTAMP`,[F.PostgreSQL]:`timestamp`,[F.SQLite]:`DATETIME`,[F.Databricks]:`TIMESTAMP`,[F.Snowflake]:`TIMESTAMP_NTZ`},MT={[F.MariaDB]:`TIMESTAMP`,[F.MSSQL]:`datetimeoffset`,[F.MySQL]:`TIMESTAMP`,[F.Oracle]:`TIMESTAMP WITH TIME ZONE`,[F.PostgreSQL]:`timestamptz`,[F.SQLite]:`DATETIME`,[F.Databricks]:`TIMESTAMP`,[F.Snowflake]:`TIMESTAMP_TZ`},NT={[F.MariaDB]:`VARCHAR(255)`,[F.MSSQL]:`varchar(255)`,[F.MySQL]:`VARCHAR(255)`,[F.Oracle]:`INTERVAL DAY TO SECOND`,[F.PostgreSQL]:`interval`,[F.SQLite]:`TEXT`,[F.Databricks]:`INTERVAL DAY TO SECOND`,[F.Snowflake]:`VARCHAR(255)`},PT={[F.MariaDB]:`JSON`,[F.MSSQL]:`json`,[F.MySQL]:`JSON`,[F.Oracle]:`JSON`,[F.PostgreSQL]:`jsonb`,[F.SQLite]:`TEXT`,[F.Databricks]:`VARIANT`,[F.Snowflake]:`VARIANT`},FT={[F.MariaDB]:`UUID`,[F.MSSQL]:`uniqueidentifier`,[F.MySQL]:`CHAR(36)`,[F.Oracle]:`VARCHAR2(36)`,[F.PostgreSQL]:`uuid`,[F.SQLite]:`TEXT`,[F.Databricks]:`STRING`,[F.Snowflake]:`UUID`},IT={[F.MariaDB]:`BLOB`,[F.MSSQL]:`varbinary(max)`,[F.MySQL]:`BLOB`,[F.Oracle]:`BLOB`,[F.PostgreSQL]:`bytea`,[F.SQLite]:`BLOB`,[F.Databricks]:`BINARY`,[F.Snowflake]:`BINARY`},LT={id:ST,string:ST,boolean:OT,int:CT,float:ET,positiveint:CT,nonnegativeint:CT,unsignedint:CT,short:wT,smallint:wT,positivefloat:ET,nonnegativefloat:ET,bigint:TT,biginteger:TT,long:TT,int8:TT,safeint:TT,decimal:DT,bigdecimal:DT,numeric:DT,money:DT,datetime:jT,datetimeiso:jT,localdatetime:jT,timestamp:jT,timestamptz:MT,date:kT,localdate:kT,time:AT,localtime:AT,timetz:AT,duration:NT,iso8601duration:NT,interval:NT,json:PT,jsonb:PT,jsonobject:PT,uuid:FT,guid:FT,byte:IT,bytes:IT,bytea:IT,binary:IT,email:ST,emailaddress:ST,url:ST,uri:ST,void:ST};function RT(e,t,n){let r=ST[t]??``,i=HT(n.enums,e);return i?BT(i,t)??r:HT(n.unions,e)?r:LT[e.toLowerCase()]?.[t]??r}function zT(e,t,n){let r=HT(t.enums,e);if(r)return n!==void 0&&BT(r,n)!==void 0?``:VT(e,r);let i=HT(t.unions,e);return i?VT(e,i):``}function BT(e,t){if(t===F.MySQL||t===F.MariaDB)return`ENUM(${e.map(e=>`'${e.replace(/'/g,`''`)}'`).join(`,`)})`}function VT(e,t){return` ${e}: ${t.join(` | `)}`}function HT(e,t){let n=e[t];return Array.isArray(n)&&n.length?n:void 0}function UT(e,t,n){let r=Bp({}),i=WT(e.tables),a=new Set(e.skipped),o=e.tables.map(o=>GT(r,t,e,n,o,i,a));return XT(r,t,o),oE(r,o),r}function WT(e){let t=new Map,n=new Map;for(let r of e){t.set(r.name,r);let e=r.name.toLowerCase();n.has(e)||n.set(e,r)}return e=>t.get(e)??n.get(e.toLowerCase())??null}function GT({doc:e,collections:t},n,r,i,a,o,s){let{toWidth:c}=n,l=[],u=[];for(let e of a.fields){let{named:t}=e.typeRef;s.has(t)||(o(t)?u.push(e):l.push(e))}let d=new Set(KT(l)),f=Ch(a.name),p=Ch(a.comment),m=Qb({name:f,comment:p,ui:{widthName:V(c(f)),widthComment:V(c(p))}}),h={name:f,source:a,table:m,columns:[],referenceFields:u};return l.forEach(e=>{YT(t,h,qT(n,r,i,m.id,e,d.has(e)))}),e.tableIds.push(m.id),j(t).collection(`tableEntities`).setOne(m),h}function KT(e){let t=e.filter(e=>e.primaryKey);if(t.length)return t;let n=e.find(e=>e.typeRef.named===`ID`&&!e.typeRef.isList);if(n)return[n];let r=e.find(e=>e.name.toLowerCase()===`id`);return r?[r]:[]}function qT({toWidth:e},t,n,r,i,a){let{named:o,nonNull:s}=i.typeRef,c=Ch(i.name),l=Ch(i.dataType)||RT(o,n,t),u=Ch(i.default),d=JT(i,t,n);return kx({tableId:r,name:c,comment:d,dataType:l,default:u,options:(i.autoIncrement?L.autoIncrement:0)|(a?L.primaryKey:0)|(i.unique?L.unique:0)|(s?L.notNull:0),ui:{widthName:V(e(c)),widthComment:V(e(d)),widthDataType:V(e(l)),widthDefault:V(e(u)),keys:a?R.primaryKey:0}})}function JT(e,t,n){let{named:r,isList:i}=e.typeRef,a=[],o=Ch(e.comment);return o&&a.push(o),i&&a.push(`list of ${r}`),`${a.join(` `)}${zT(r,t,n)}`.trim()}function YT(e,t,n){t.table.columnIds.push(n.id),t.table.seqColumnIds.push(n.id),t.columns.push(n),j(e).collection(`tableColumnEntities`).setOne(n)}function XT(e,t,n){let r=WT(n),i=[];n.forEach(e=>{e.referenceFields.forEach(t=>{let n=r(t.typeRef.named);n&&i.push({source:e,target:n,field:t,consumed:!1})})});let a={claimedColumnIds:new Set,relationshipKeys:new Set},o=i.filter(e=>!e.field.typeRef.isList);[...o.filter(e=>e.field.relationFields.length),...o.filter(e=>!e.field.relationFields.length)].forEach(n=>{if(n.consumed)return;let r=ZT(i,n);n.consumed=!0,r&&(r.consumed=!0);let o=!!r?.field.typeRef.isList;$T(e,t,a,{parent:n.target,child:n.source,field:n.field,childSide:!0,relationshipType:n.field.typeRef.nonNull?o?Ym.OneN:Ym.OneOnly:o?Ym.ZeroN:Ym.ZeroOne})}),i.filter(e=>e.field.typeRef.isList).forEach(r=>{if(r.consumed)return;let o=QT(i,r);if(r.consumed=!0,o){o.consumed=!0,iE(e,t,n,r);return}$T(e,t,a,{parent:r.source,child:r.target,field:r.field,childSide:!1,relationshipType:r.field.typeRef.nonNull?Ym.OneN:Ym.ZeroN})})}function ZT(e,t){let n=e.filter(e=>e!==t&&!e.consumed&&e.source===t.target&&e.target===t.source);if(!n.length)return null;let{relationName:r}=t.field;if(r)return n.find(e=>e.field.relationName===r)??null;if(t.source===t.target)return n.length===1?n[0]:null;let i=e.filter(e=>!e.consumed&&e.source===t.source&&e.target===t.target);return n.length===1&&i.length===1?n[0]:null}function QT(e,t){if(e.some(e=>!e.field.typeRef.isList&&(e.source===t.source&&e.target===t.target||e.source===t.target&&e.target===t.source)))return null;let n=e.filter(e=>e!==t&&!e.consumed&&e.field.typeRef.isList&&e.source===t.target&&e.target===t.source);if(!n.length)return null;let{relationName:r}=t.field;return r?n.find(e=>e.field.relationName===r)??null:n[0]}function $T(e,t,n,r){let{doc:i,collections:a}=e,{parent:o,child:s,relationshipType:c}=r,l=BS(o.columns);if(!l.length)return;let{startColumns:u,endColumns:d}=eE(e,t,n,r,l);if(!d.length)return;let f=`${o.table.id}:${s.table.id}:${d.map(e=>e.id).join(`,`)}`;if(n.relationshipKeys.has(f))return;n.relationshipKeys.add(f),d.forEach(e=>{z(e.ui.keys,R.primaryKey)?e.ui.keys|=R.foreignKey:e.ui.keys=R.foreignKey,n.claimedColumnIds.add(e.id)});let p=Mb({identification:d.every(e=>z(e.ui.keys,R.primaryKey)&&z(e.ui.keys,R.foreignKey)),relationshipType:c,start:{tableId:o.table.id,columnIds:u.map(e=>e.id)},end:{tableId:s.table.id,columnIds:d.map(e=>e.id)}});i.relationshipIds.push(p.id),j(a).collection(`relationshipEntities`).setOne(p)}function eE(e,t,n,{parent:r,child:i,field:a,childSide:o},s){if(o&&a.relationFields.length){let e=[],t=[];if(a.relationFields.forEach((n,o)=>{let c=HS(i.columns,n),l=a.relationReferences[o],u=l?HS(r.columns,l):s[o]??null;!c||!u||(e.push(u),t.push(c))}),t.length)return{startColumns:e,endColumns:t}}let c=o?Ch(a.name):he(r.name),l=new Set,u=[],d=[];return s.forEach(o=>{let s=tE(c,r.name,o.name),f=nE(i.columns,s,e=>l.has(e)?!0:n.claimedColumnIds.has(e))??rE(e,t,i,a,o,s[0]);l.add(f.id),u.push(o),d.push(f)}),{startColumns:u,endColumns:d}}function tE(e,t,n){return[`${e}${g_(n)}`,`${be(e)}_${be(n)}`,`${t}${g_(n)}`,`${be(t)}_${be(n)}`,`${e}Id`,`${be(e)}_id`]}function nE(e,t,n){for(let r of t){let t=HS(e,r);if(t&&!n(t.id))return t}return null}function rE({collections:e},{toWidth:t},n,r,i,a){let o=VS(n.columns,``,a),{dataType:s}=i,c=kx({tableId:n.table.id,name:o,dataType:s,options:r.typeRef.nonNull?L.notNull:0,ui:{keys:R.foreignKey,widthName:V(t(o)),widthDataType:V(t(s))}});return YT(e,n,c),c}function iE(e,t,n,r){let{doc:i,collections:a}=e,{toWidth:o}=t,s=r.source,c=r.target,l=BS(s.columns),u=BS(c.columns);if(!l.length||!u.length)return;let d=VS(n.map(e=>e.table),``,`${s.name}_${c.name}`),f=`Junction table inferred from ${s.name} <-> ${c.name}`,p=Qb({name:d,comment:f,ui:{widthName:V(o(d)),widthComment:V(o(f))}}),m={name:d,source:{name:d,comment:f,fields:[],indexes:[]},table:p,columns:[],referenceFields:[]};i.tableIds.push(p.id),j(a).collection(`tableEntities`).setOne(p),n.push(m),aE(e,t,m,s,l),aE(e,t,m,c,u)}function aE(e,{toWidth:t},n,r,i){let{doc:a,collections:o}=e,s=i.map(e=>{let i=VS(n.columns,``,`${he(r.name)}${g_(e.name)}`),{dataType:a}=e,s=kx({tableId:n.table.id,name:i,dataType:a,options:L.primaryKey|L.notNull,ui:{keys:R.primaryKey|R.foreignKey,widthName:V(t(i)),widthDataType:V(t(a))}});return YT(o,n,s),s}),c=Mb({identification:!0,relationshipType:Ym.ZeroN,start:{tableId:r.table.id,columnIds:i.map(e=>e.id)},end:{tableId:n.table.id,columnIds:s.map(e=>e.id)}});a.relationshipIds.push(c.id),j(o).collection(`relationshipEntities`).setOne(c)}function oE({doc:e,collections:t},n){n.forEach(({source:n,table:r,columns:i})=>{n.indexes.forEach(n=>{let a=Sy({name:Ch(n.name),tableId:r.id,unique:n.unique}),o=[];n.fieldNames.forEach(e=>{let t=HS(i,e);t&&o.push(zy({indexId:a.id,columnId:t.id,orderType:Zm.ASC}))}),o.length&&(o.forEach(e=>{a.indexColumnIds.push(e.id),a.seqIndexColumnIds.push(e.id),j(t).collection(`indexColumnEntities`).setOne(e)}),e.indexIds.push(a.id),j(t).collection(`indexEntities`).setOne(a))})})}const sE=[`Query`,`Mutation`,`Subscription`],cE=[`PageInfo`],lE=[`Connection`,`Edge`],uE=[`_aggregate`,`_aggregate_fields`,`_mutation_response`,`_max_fields`,`_min_fields`,`_sum_fields`,`_avg_fields`,`_stddev_fields`,`_variance_fields`,`_bool_exp`,`_order_by`,`_insert_input`,`_set_input`,`_on_conflict`,`_constraint`,`_update_column`,`_select_column`],dE=[`_Service`,`_Entity`,`_Any`,`_FieldSet`],fE=[`autoincrement`,`autoincrement()`],pE=/[_A-Za-z]/,mE=/[_0-9A-Za-z]/;function hE(e){try{return{ok:!0,model:vE(gE(e))}}catch(e){return{ok:!1,message:_E(e)}}}function gE(e){try{return qe(e)}catch(t){let n=LE(e);if(n===e)throw t;try{return qe(n)}catch{throw t}}}function _E(e){let t=e instanceof Error?e.message:String(e),n=e?.locations?.[0];if(!n)return t;let r=t.replace(/^Syntax Error:\s*/,``);return`Syntax Error at line ${n.line}, column ${n.column}: ${r}`}function vE(e){let t={},n={},r=[],i=new Map,a=new Map,o=new Set;for(let s of e.definitions)switch(s.kind){case Ge.OBJECT_TYPE_DEFINITION:case Ge.OBJECT_TYPE_EXTENSION:bE(a,s);break;case Ge.INTERFACE_TYPE_DEFINITION:case Ge.INTERFACE_TYPE_EXTENSION:{let e=s.name.value,t=i.get(e)??[];t.push(...s.fields??[]),i.set(e,t);break}case Ge.SCHEMA_DEFINITION:case Ge.SCHEMA_EXTENSION:for(let e of s.operationTypes??[])o.add(e.type.name.value);break;case Ge.ENUM_TYPE_DEFINITION:t[s.name.value]=(s.values??[]).map(e=>e.name.value);break;case Ge.UNION_TYPE_DEFINITION:n[s.name.value]=(s.types??[]).map(e=>e.name.value);break;case Ge.SCALAR_TYPE_DEFINITION:r.push(s.name.value)}let s=o.size?o:new Set(sE),c=[],l=[],u=new Map;for(let e of a.values()){if(NE(e.name,s)){l.push(e.name);continue}let t=xE(e,i);if(!t.fields.length){l.push(e.name);continue}t.name!==e.name&&u.set(e.name,t.name),c.push(t)}return yE(c,u),{tables:c,enums:t,customScalars:r,unions:n,skipped:l}}function yE(e,t){if(t.size)for(let n of e)for(let e of n.fields){let n=t.get(e.typeRef.named);n&&(e.typeRef.named=n)}}function bE(e,t){let n=t.name.value,r=(t.interfaces??[]).map(e=>e.name.value),i=e.get(n);if(i){i.fieldNodes.push(...t.fields??[]),i.interfaceNames.push(...r),i.directives.push(...t.directives??[]),i.comment||=FE(t);return}e.set(n,{name:n,comment:FE(t),interfaceNames:r,fieldNodes:[...t.fields??[]],directives:[...t.directives??[]]})}function xE(e,t){let n=SE(e.fieldNodes),r=new Set(n.map(e=>e.name.value)),i=[];for(let n of e.interfaceNames)for(let e of t.get(n)??[]){let t=e.name.value;r.has(t)||(r.add(t),i.push(e))}let a={name:e.name,comment:e.comment,fields:[...i,...n].map(CE).filter(fe),indexes:[]};for(let t of e.directives)EE(a,t);return a}function SE(e){let t=new Set;return e.filter(e=>{let n=e.name.value;return!t.has(n)&&(t.add(n),!0)})}function CE(e){if(e.name.value.startsWith(`__`))return null;let t={name:e.name.value,comment:FE(e),typeRef:wE(e.type),primaryKey:!1,unique:!1,autoIncrement:!1,default:``,dataType:``,relationName:``,relationFields:[],relationReferences:[],hasArguments:(e.arguments??[]).length>0};for(let n of e.directives??[])TE(t,n);return t}function wE(e){let t=e.kind===Ge.NON_NULL_TYPE,n=t?e.type:e,r=n.kind===Ge.LIST_TYPE,i=r?n.type:n,a=r&&i.kind===Ge.NON_NULL_TYPE,o=i;for(;o.kind!==Ge.NAMED_TYPE;)o=o.type;return{named:o.name.value,nonNull:t,isList:r,itemNonNull:a}}function TE(e,t){let n=t.name.value;if(n.startsWith(`db_`)){e.dataType=DE(n,t);return}switch(n){case`id`:case`primaryKey`:e.primaryKey=!0;break;case`unique`:e.unique=!0;break;case`autoincrement`:case`autoIncrement`:e.autoIncrement=!0;break;case`default`:{let n=OE(t,`value`);if(!n)break;let r=jE(n);fE.includes(r.toLowerCase())?e.autoIncrement=!0:e.default=r;break}case`map`:{let n=kE(t,`name`)||kE(t,`value`);n&&(e.name=n);break}case`relation`:{let n=kE(t,`name`)||kE(t,`value`);n&&(e.relationName=n);let r=OE(t,`fields`);r&&(e.relationFields=ME(r));let i=OE(t,`references`);i&&(e.relationReferences=ME(i));break}case`column`:{let n=kE(t,`name`);n&&(e.name=n);let r=kE(t,`dataType`);r&&(e.dataType=r);let i=OE(t,`default`);i&&(e.default=jE(i));let a=AE(t,`autoIncrement`);a!==null&&(e.autoIncrement=a);let o=AE(t,`unique`);o!==null&&(e.unique=o);let s=AE(t,`primaryKey`);s!==null&&(e.primaryKey=s);break}}}function EE(e,t){switch(t.name.value){case`map`:{let n=kE(t,`name`)||kE(t,`value`);n&&(e.name=n);break}case`table`:{let n=kE(t,`name`);n&&(e.name=n);let r=OE(t,`comment`);r&&(e.comment=jE(r));break}case`index`:{let n=OE(t,`fields`),r=n?ME(n):[];if(!r.length)break;let i={name:kE(t,`name`),unique:AE(t,`unique`)??!1,fieldNames:r};e.indexes.push(i);break}}}function DE(e,t){let n=e.slice(3),r=t.arguments??[];return r.length?`${n}(${r.map(e=>jE(e.value)).join(`, `)})`:n}function OE(e,t){let n=(e.arguments??[]).find(e=>e.name.value===t);return n?n.value:null}function kE(e,t){let n=OE(e,t);return n?jE(n):``}function AE(e,t){let n=OE(e,t);return n?jE(n)===`true`:null}function jE(e){switch(e.kind){case Ge.STRING:case Ge.INT:case Ge.FLOAT:case Ge.ENUM:return e.value;case Ge.BOOLEAN:return e.value?`true`:`false`;case Ge.NULL:return`null`;case Ge.LIST:return e.values.map(jE).join(`, `);default:return``}}function ME(e){return(e.kind===Ge.LIST?e.values:[e]).map(jE).filter(e=>e!==``)}function NE(e,t){return t.has(e)||e.startsWith(`__`)||dE.includes(e)||cE.includes(e)||lE.some(t=>PE(e,t))||uE.some(t=>PE(e,t))}function PE(e,t){return e.length>t.length&&e.endsWith(t)}function FE(e){if(e.description)return IE(e.description.value);if(!e.loc)return``;let t=[],n=e.loc.startToken.line-1,r=e.loc.startToken.prev;for(;r&&r.kind===Ke.COMMENT&&r.line===n&&(!r.prev||r.prev.line<r.line);)t.unshift(r.value??``),--n,r=r.prev;return IE(t.join(` `))}function IE(e){return e.replace(/\s+/g,` `).trim()}function LE(e){let t=``,n=0,r=!1;for(;n<e.length;){let i=e[n];if(i===`#`){let r=BE(e,n);t+=e.slice(n,r),n=r;continue}if(i===`"`){let r=VE(e,n);t+=e.slice(n,r),n=r;continue}if(i!==`@`||!pE.test(e[n+1]??``)){t+=i,n+=1;continue}let a=zE(e,n+1),o=e.slice(n+1,a);for(;e[a]===`.`&&pE.test(e[a+1]??``);){let t=zE(e,a+1);o+=`_${e.slice(a+1,t)}`,a=t,r=!0}t+=`@${o}`,n=a;let s=UE(e,n);if(e[s]===`(`){t+=e.slice(n,s+1),n=s+1;for(let i=0;n<e.length;i++){let a=UE(e,n);if(t+=e.slice(n,a),n=a,e[n]===`)`||n>=e.length)break;let o=RE(e,n);o===-1?(t+=i===0?`value: `:`value${i}: `,r=!0):(t+=e.slice(n,o+1),n=o+1);let s=Math.max(HE(e,UE(e,n)),n+1);t+=e.slice(n,s),n=s}}}return r?t:e}function RE(e,t){if(!pE.test(e[t]??``))return-1;let n=UE(e,zE(e,t));return e[n]===`:`?n:-1}function zE(e,t){let n=t;for(;n<e.length&&mE.test(e[n]);)n+=1;return n}function BE(e,t){let n=e.indexOf(`
|
|
24
|
-
`,t);return n===-1?e.length:n}function
|
|
25
|
-
`)return n;if(t===`"`)return n+1;n+=1}return n}function
|
|
26
|
-
`,singleQuote:`'`,backtick:"`",whiteSpace:/\s/,string:/\S/,breakString:/;|,|\(|\)|\[|\]|\.|=/,equal:`=`,period:`.`,comma:`,`,semicolon:`;`,leftParent:`(`,rightParent:`)`,leftBracket:`[`,rightBracket:`]`},XE=e=>t=>e===t,ZE=e=>t=>e.test(t),Z={doubleQuote:XE(YE.doubleQuote),dash:XE(YE.dash),slash:XE(YE.slash),asterisk:XE(YE.asterisk),newLine:XE(YE.newLine),singleQuote:XE(YE.singleQuote),backtick:XE(YE.backtick),whiteSpace:ZE(YE.whiteSpace),string:ZE(YE.string),breakString:ZE(YE.breakString),equal:XE(YE.equal),period:XE(YE.period),comma:XE(YE.comma),semicolon:XE(YE.semicolon),leftParent:XE(YE.leftParent),rightParent:XE(YE.rightParent),leftBracket:XE(YE.leftBracket),rightBracket:XE(YE.rightBracket)};function QE(e){let t=[],n=0,r=()=>n<e.length;for(;r();){let i=e[n];if(Z.whiteSpace(i)){let t=``;for(;r()&&Z.whiteSpace(i);)t+=i,i=e[++n];continue}if(Z.dash(i)&&Z.dash(e[n+1])){for(;r()&&!Z.newLine(i);)i=e[++n];continue}if(Z.slash(i)&&Z.asterisk(e[n+1])){for(n+=2,i=e[n];r()&&!(Z.asterisk(i)&&Z.slash(e[n+1]));)i=e[++n];n+=2;continue}if(Z.leftParent(i)){t.push({type:JE.leftParent,value:i}),n++;continue}if(Z.rightParent(i)){t.push({type:JE.rightParent,value:i}),n++;continue}if(Z.comma(i)){t.push({type:JE.comma,value:i}),n++;continue}if(Z.period(i)){t.push({type:JE.period,value:i}),n++;continue}if(Z.equal(i)){t.push({type:JE.equal,value:i}),n++;continue}if(Z.semicolon(i)){t.push({type:JE.semicolon,value:i}),n++;continue}if(Z.rightBracket(i)){t.push({type:JE.rightBracket,value:i}),n++;continue}if(Z.leftBracket(i)){let a=``;for(i=e[++n];r()&&!Z.rightBracket(i);)a+=i,i=e[++n];t.push({type:JE.string,value:a,quoted:!0}),n++;continue}if(Z.doubleQuote(i)){let a=``;for(i=e[++n];r()&&!Z.doubleQuote(i);)a+=i,i=e[++n];t.push({type:JE.string,value:a,quoted:!0}),n++;continue}if(Z.singleQuote(i)){let a=``;for(i=e[++n];r()&&!Z.singleQuote(i);)a+=i,i=e[++n];t.push({type:JE.string,value:a,quoted:!0}),n++;continue}if(Z.backtick(i)){let a=``;for(i=e[++n];r()&&!Z.backtick(i);)a+=i,i=e[++n];t.push({type:JE.string,value:a,quoted:!0}),n++;continue}if(Z.string(i)){let a=``;for(;r()&&Z.string(i)&&!Z.breakString(i)&&!(Z.dash(i)&&Z.dash(e[n+1]))&&!(Z.slash(i)&&Z.asterisk(e[n+1]));)a+=i,i=e[++n];t.push({type:JE.string,value:a});continue}n++}return t}var $E=`ARRAY.BIGINT.BINARY.BOOLEAN.BYTE.CHAR.DATE.DEC.DECIMAL.DOUBLE.FLOAT.GEOGRAPHY.GEOMETRY.INT.INTEGER.INTERVAL DAY TO HOUR.INTERVAL DAY TO MINUTE.INTERVAL DAY TO SECOND.INTERVAL DAY.INTERVAL HOUR TO MINUTE.INTERVAL HOUR TO SECOND.INTERVAL HOUR.INTERVAL MINUTE TO SECOND.INTERVAL MINUTE.INTERVAL MONTH.INTERVAL SECOND.INTERVAL YEAR TO MONTH.INTERVAL YEAR.INTERVAL.LONG.MAP.NUMERIC.OBJECT.REAL.SHORT.SMALLINT.STRING.STRUCT.TIMESTAMP_LTZ.TIMESTAMP_NTZ.TIMESTAMP.TINYINT.VARCHAR.VARIANT.VOID`.split(`.`),eD=`BIGINT.BINARY.BIT.BLOB.BOOL.BOOLEAN.CHAR BYTE.CHAR VARYING.CHAR.CHARACTER VARYING.CHARACTER.CLOB.DATE.DATETIME.DEC.DECIMAL.DOUBLE PRECISION.DOUBLE.ENUM.FIXED.FLOAT.FLOAT4.FLOAT8.GEOMETRY.GEOMETRYCOLLECTION.INET4.INET6.INT.INT1.INT2.INT3.INT4.INT8.INTEGER.JSON.LINESTRING.LONG CHAR VARYING.LONG CHARACTER VARYING.LONG VARBINARY.LONG VARCHAR.LONG VARCHARACTER.LONG.LONGBLOB.LONGTEXT.MEDIUMBLOB.MEDIUMINT.MEDIUMTEXT.MIDDLEINT.MULTILINESTRING.MULTIPOINT.MULTIPOLYGON.NATIONAL CHAR VARYING.NATIONAL CHAR.NATIONAL CHARACTER VARYING.NATIONAL CHARACTER.NATIONAL VARCHAR.NATIONAL VARCHARACTER.NCHAR VARCHAR.NCHAR VARCHARACTER.NCHAR VARYING.NCHAR.NUMBER.NUMERIC.NVARCHAR.POINT.POLYGON.RAW.REAL.SERIAL.SET.SMALLINT.SQL_TSI_YEAR.TEXT.TIME.TIMESTAMP.TINYBLOB.TINYINT.TINYTEXT.UUID.VARBINARY.VARCHAR.VARCHAR2.VARCHARACTER.VECTOR.XMLTYPE.YEAR`.split(`.`),tD=`BIGINT.BINARY VARYING.BINARY.BIT.CHAR VARYING.CHAR.CHARACTER VARYING.CHARACTER.DATE.DATETIME.DATETIME2.DATETIMEOFFSET.DEC.DECIMAL.DOUBLE PRECISION.FLOAT.GEOGRAPHY.GEOMETRY.HIERARCHYID.IMAGE.INT.INTEGER.JSON.MONEY.NATIONAL CHAR VARYING.NATIONAL CHAR.NATIONAL CHARACTER VARYING.NATIONAL CHARACTER.NATIONAL TEXT.NCHAR.NTEXT.NUMERIC.NVARCHAR.REAL.ROWVERSION.SMALLDATETIME.SMALLINT.SMALLMONEY.SQL_VARIANT.TEXT.TIME.TIMESTAMP.TINYINT.UNIQUEIDENTIFIER.VARBINARY.VARCHAR.VECTOR.XML`.split(`.`),nD=`BIGINT.BINARY.BIT.BLOB.BOOL.BOOLEAN.CHAR BYTE.CHAR.CHARACTER VARYING.CHARACTER.DATE.DATETIME.DEC.DECIMAL.DOUBLE PRECISION.DOUBLE.ENUM.FIXED.FLOAT.FLOAT4.FLOAT8.GEOMCOLLECTION.GEOMETRY.GEOMETRYCOLLECTION.INT.INT1.INT2.INT3.INT4.INT8.INTEGER.JSON.LINESTRING.LONG VARBINARY.LONG VARCHAR.LONG.LONGBLOB.LONGTEXT.MEDIUMBLOB.MEDIUMINT.MEDIUMTEXT.MIDDLEINT.MULTILINESTRING.MULTIPOINT.MULTIPOLYGON.NATIONAL CHAR VARYING.NATIONAL CHAR.NATIONAL CHARACTER VARYING.NATIONAL CHARACTER.NATIONAL VARCHAR.NCHAR VARCHAR.NCHAR.NUMERIC.NVARCHAR.POINT.POLYGON.REAL.SERIAL.SET.SMALLINT.TEXT.TIME.TIMESTAMP.TINYBLOB.TINYINT.TINYTEXT.VARBINARY.VARCHAR.VARCHARACTER.YEAR`.split(`.`),rD=`ANYDATA.BFILE.BINARY_DOUBLE.BINARY_FLOAT.BLOB.BOOL.BOOLEAN.CHAR VARYING.CHAR.CHARACTER VARYING.CHARACTER.CLOB.DATE.DEC.DECIMAL.DOUBLE PRECISION.FLOAT.INT.INTEGER.INTERVAL DAY TO SECOND.INTERVAL YEAR TO MONTH.JSON.LONG RAW.LONG VARCHAR.LONG.NATIONAL CHAR VARYING.NATIONAL CHAR.NATIONAL CHARACTER VARYING.NATIONAL CHARACTER.NCHAR VARYING.NCHAR.NCLOB.NUMBER.NUMERIC.NVARCHAR2.RAW.REAL.ROWID.SDO_GEOMETRY.SDO_GEORASTER.SDO_TOPO_GEOMETRY.SMALLINT.TIMESTAMP WITH LOCAL TIME ZONE.TIMESTAMP WITH TIME ZONE.TIMESTAMP.URIType.UROWID.VARCHAR.VARCHAR2.VECTOR.XMLType`.split(`.`),iD=`BIGINT.BIGSERIAL.BIT VARYING.BIT.BOOL.BOOLEAN.BOX.BPCHAR.BYTEA.CHAR.CHARACTER VARYING.CHARACTER.CID.CIDR.CIRCLE.DATE.DATEMULTIRANGE.DATERANGE.DECIMAL.DOUBLE PRECISION.FLOAT.FLOAT4.FLOAT8.INET.INT.INT2.INT4.INT4MULTIRANGE.INT4RANGE.INT8.INT8MULTIRANGE.INT8RANGE.INTEGER.INTERVAL DAY TO HOUR.INTERVAL DAY TO MINUTE.INTERVAL DAY TO SECOND.INTERVAL DAY.INTERVAL HOUR TO MINUTE.INTERVAL HOUR TO SECOND.INTERVAL HOUR.INTERVAL MINUTE TO SECOND.INTERVAL MINUTE.INTERVAL MONTH.INTERVAL SECOND.INTERVAL YEAR TO MONTH.INTERVAL YEAR.INTERVAL.JSON.JSONB.JSONPATH.LINE.LSEG.MACADDR.MACADDR8.MONEY.NAME.NUMERIC.NUMMULTIRANGE.NUMRANGE.OID.PATH.PG_LSN.PG_SNAPSHOT.POINT.POLYGON.REAL.REGCLASS.REGCOLLATION.REGCONFIG.REGDICTIONARY.REGNAMESPACE.REGOPER.REGOPERATOR.REGPROC.REGPROCEDURE.REGROLE.REGTYPE.SERIAL.SERIAL2.SERIAL4.SERIAL8.SMALLINT.SMALLSERIAL.TEXT.TID.TIME WITH TIME ZONE.TIME WITHOUT TIME ZONE.TIME.TIMESTAMP WITH TIME ZONE.TIMESTAMP WITHOUT TIME ZONE.TIMESTAMP.TIMESTAMPTZ.TIMETZ.TSMULTIRANGE.TSQUERY.TSRANGE.TSTZMULTIRANGE.TSTZRANGE.TSVECTOR.TXID_SNAPSHOT.UUID.VARBIT.VARCHAR.XID.XID8.XML`.split(`.`),aD=`ARRAY.BIGINT.BINARY.BOOLEAN.BYTEINT.CHAR VARYING.CHAR.CHARACTER.DATE.DATETIME.DEC.DECFLOAT.DECIMAL.DOUBLE PRECISION.DOUBLE.FILE.FLOAT.FLOAT4.FLOAT8.GEOGRAPHY.GEOMETRY.INT.INTEGER.MAP.NCHAR VARYING.NCHAR.NUMBER.NUMERIC.NVARCHAR.NVARCHAR2.OBJECT.REAL.SMALLINT.STRING.TEXT.TIME.TIMESTAMP WITH LOCAL TIME ZONE.TIMESTAMP WITH TIME ZONE.TIMESTAMP WITHOUT TIME ZONE.TIMESTAMP_LTZ.TIMESTAMP_NTZ.TIMESTAMP_TZ.TIMESTAMP.TIMESTAMPLTZ.TIMESTAMPNTZ.TIMESTAMPTZ.TINYINT.UNKNOWN.UUID.VARBINARY.VARCHAR.VARCHAR2.VARIANT.VECTOR`.split(`.`),oD=`BIGINT.BLOB.BOOLEAN.CHARACTER.CLOB.DATE.DATETIME.DECIMAL.DOUBLE PRECISION.DOUBLE.FLOAT.INT.INT2.INT8.INTEGER.MEDIUMINT.NATIVE CHARACTER.NCHAR.NUMERIC.NVARCHAR.REAL.SMALLINT.TEXT.TINYINT.UNSIGNED BIG INT.VARCHAR.VARYING CHARACTER`.split(`.`),sD=e=>t=>n=>t[n]?t[n].type===e:!1,Q=e=>{let t=e.toUpperCase();return e=>n=>{let r=e[n];return r?!r.quoted&&r.value.toUpperCase()===t:!1}},cD=sD(JE.string),lD=sD(JE.equal),uD=sD(JE.period),dD=sD(JE.comma),fD=sD(JE.semicolon),pD=sD(JE.leftParent),mD=sD(JE.rightParent);JE.leftBracket,JE.rightBracket;var hD=Q(`CREATE`),gD=Q(`ALTER`),_D=Q(`DROP`),vD=Q(`USE`),yD=Q(`RENAME`),bD=Q(`DELETE`),xD=Q(`SELECT`),SD=Q(`TABLE`),CD=Q(`INDEX`),wD=Q(`UNIQUE`),TD=Q(`ADD`),ED=Q(`PRIMARY`),DD=Q(`KEY`),OD=Q(`CONSTRAINT`),kD=Q(`FOREIGN`),AD=Q(`NOT`),jD=Q(`NULL`),MD=Q(`DEFAULT`),ND=Q(`COMMENT`),PD=Q(`REFERENCES`),FD=Q(`ASC`),ID=Q(`DESC`),LD=Q(`ON`),RD=Q(`AUTO_INCREMENT`),zD=Q(`AUTOINCREMENT`),BD=Q(`IF`),VD=Q(`EXISTS`),HD=Q(`ONLY`),UD=Q(`IS`),WD=Q(`COLUMN`),GD=Q(`CHARACTER`),KD=Q(`SET`),qD=Q(`COLLATE`),JD=Q(`ENFORCED`),YD=Q(`RELY`),XD=Q(`NORELY`),ZD=Q(`DEFERRABLE`),QD=Q(`INITIALLY`),$D=Q(`DEFERRED`),eO=Q(`IMMEDIATE`),tO=Q(`IDENTITY`),nO=Q(`FUNCTION`),rO=Q(`CLUSTER`),iO=Q(`BY`),aO=e=>{let t=JD(e),n=YD(e),r=XD(e),i=ZD(e),a=QD(e),o=$D(e),s=eO(e);return e=>t(e)||n(e)||r(e)||i(e)||a(e)||o(e)||s(e)},oO=[`ARRAY`,`MAP`,`STRUCT`],sO=e=>{let t=cD(e),n=e=>{let t=0;for(let n of e)n===`<`?t++:n===`>`&&t--;return t};return r=>{let i=e[r];if(!i||i.quoted||!t(r))return 0;let a=i.value.indexOf(`<`);if(a===-1||!oO.includes(i.value.slice(0,a).toUpperCase()))return 0;let o=0;for(let t=r;t<e.length;t++)if(o+=n(e[t].value),o<=0)return t-r+1;return e.length-r}},cO=e=>{let t=RD(e),n=zD(e),r=tO(e);return e=>t(e)||n(e)||r(e)},lO=e=>{let t=rO(e),n=iO(e);return e=>t(e)&&n(e+1)},uO=e=>{let t=ND(e),n=LD(e);return e=>t(e)&&n(e+1)},dO=e=>{let t=uO(e),n=SD(e);return e=>t(e)&&n(e+2)},fO=e=>{let t=uO(e),n=WD(e);return e=>t(e)&&n(e+2)},pO=e=>{let t=hD(e),n=gD(e),r=_D(e),i=vD(e),a=yD(e),o=bD(e),s=xD(e),c=uO(e);return e=>t(e)||n(e)||r(e)||i(e)||a(e)||o(e)||s(e)||c(e)},mO=[`OR`,`REPLACE`,`TRANSIENT`,`TEMPORARY`,`TEMP`,`LOCAL`,`GLOBAL`,`VOLATILE`,`UNLOGGED`,`HYBRID`,`ICEBERG`,`DYNAMIC`,`EXTERNAL`],hO=e=>{let t=hD(e),n=SD(e),r=cD(e),i=nO(e),a=BD(e),o=AD(e),s=VD(e);return c=>{if(!t(c))return 0;let l=c+1;for(;l<e.length&&!n(l);){let t=e[l];if(!r(l)||t.quoted||!mO.includes(t.value.toUpperCase()))return 0;l++}return!n(l)||i(l+1)?0:(l++,a(l)&&o(l+1)&&s(l+2)&&(l+=3),l-c)}},gO=e=>{let t=GD(e),n=KD(e);return e=>t(e)&&n(e+1)},_O=e=>{let t=hO(e);return e=>t(e)>0},vO=e=>{let t=hD(e),n=CD(e),r=wD(e);return e=>t(e)&&r(e+1)&&n(e+2)},yO=e=>{let t=hD(e),n=CD(e),r=vO(e);return e=>t(e)&&n(e+1)||r(e)},bO=e=>{let t=gD(e),n=SD(e);return e=>t(e)&&n(e+1)},xO=e=>{let t=cD(e),n=uD(e);return e=>{if(!t(e))return 0;let r=e+1;for(;n(r)&&t(r+1);)r+=2;return r-e}},SO=e=>{let t=bO(e),n=HD(e),r=TD(e),i=OD(e),a=cD(e),o=xO(e),s=(e,t)=>{let n=t,s=o(n);return!s||(n+=s,!r(n))?0:(n++,i(n)&&a(n+1)&&(n+=2),n-e)};return e=>{if(!t(e))return{length:0,only:!1};let r=e+2;if(n(r)){let t=s(e,r+1);if(t)return{length:t,only:!0}}return{length:s(e,r),only:!1}}},CO=e=>{let t=SO(e);return e=>t(e).length},wO=e=>{let t=SO(e);return e=>t(e).only},TO=e=>{let t=CO(e),n=ED(e),r=DD(e);return e=>{let i=t(e);return i>0&&n(e+i)&&r(e+i+1)}},EO=e=>{let t=CO(e),n=kD(e),r=DD(e);return e=>{let i=t(e);return i>0&&n(e+i)&&r(e+i+1)}},DO=e=>{let t=CO(e),n=wD(e);return e=>{let r=t(e);return r>0&&n(e+r)}},OO=Array.from(new Set([...$E,...eD,...tD,...nD,...rD,...iD,...aD,...oD].map(e=>e.toUpperCase()))),kO=(e=>{let t=new Map;for(let n of e){let e=n.split(` `),r=t.get(e[0])??[];r.push(e),t.set(e[0],r)}for(let e of t.values())e.sort((e,t)=>t.length-e.length);return t})(OO),AO=e=>{let t=cD(e),n=pD(e),r=mD(e),i=t=>{let i=0;for(let a=t;a<e.length;a++)if(n(a))i++;else if(r(a)&&(i--,i===0))return a+1;return e.length},a=(r,a)=>{let o=r;for(let[r,s]of a.entries()){let a=e[o];if(!a||!t(o)||r>0&&a.quoted||a.value.toUpperCase()!==s)return 0;o++,n(o)&&(o=i(o))}return o-r};return n=>{let r=e[n];if(!r||!t(n))return 0;let i=r.value.toUpperCase();for(let e of kO.get(i)??[]){let t=a(n,e);if(t)return t}return+!!OO.includes(i)}};function jO(e,t){let n=pO(e),r=cD(e),i=pD(e),a=mD(e),o=uD(e),s=fD(e),c=lD(e),l=ND(e),u=lO(e),d=hO(e),f=()=>t.value<e.length,p={type:KE.createTable,name:``,comment:``,columns:[],indexes:[],foreignKeys:[]},m=d(t.value);t.value+=m===0?2:m;let h=!1,g=!0;for(;f()&&!n(t.value);){let n=e[t.value];if(s(t.value)){t.value++;break}if(p.name&&u(t.value)){if(t.value+=2,r(t.value)&&i(t.value+1)&&t.value++,i(t.value)){let e=0;for(;f();){if(i(t.value))e++;else if(a(t.value)&&(e--,e===0)){t.value++;break}t.value++}}continue}if(i(t.value)){if(t.value++,h||!g){let e=1;for(;f()&&e>0;)i(t.value)?e++:a(t.value)&&e--,t.value++;continue}let{columns:n,indexes:r,foreignKeys:o}=MO(e,t);p.columns=n,p.indexes=r,p.foreignKeys=o,h=!0;continue}if(r(t.value)&&!p.name){for(p.name=n.value,g=!0,t.value++;o(t.value);){if(!r(t.value+1)){t.value++;break}p.name=e[t.value+1].value,t.value+=2}continue}if(l(t.value)){n=e[++t.value],c(t.value)&&(n=e[++t.value]),r(t.value)&&(p.comment=n.value,t.value++),g=!1;continue}g=!1,t.value++}return p}function MO(e,t){let n=cD(e),r=pD(e),i=mD(e),a=dD(e),o=OD(e),s=CD(e),c=ED(e),l=kD(e),u=cO(e),d=wD(e),f=jD(e),p=AD(e),m=MD(e),h=ND(e),g=ID(e),ee=FD(e),_=DD(e),te=lD(e),ne=gO(e),re=qD(e),ie=aO(e),ae=AO(e),oe=sO(e),se=()=>t.value<e.length,ce=[],le=[],ue=[],de=[],v=[],fe={name:``,dataType:``,default:``,comment:``,primaryKey:!1,autoIncrement:!1,unique:!1,nullable:!0};for(;se();){let y=e[t.value],pe=oe(t.value);if(pe){let n=t.value+pe,r=[];for(;t.value<n;)r.push(a(t.value)?`,`:e[t.value].value),t.value++;fe.dataType=r.reduce((e,t)=>!e||t===`,`?e+t:`${e} ${t}`,``);continue}if(n(t.value)&&!fe.name&&!o(t.value)&&!c(t.value)&&!l(t.value)&&!d(t.value)&&!s(t.value)&&!_(t.value)&&!p(t.value)&&!ie(t.value)){fe.name=y.value,t.value++;continue}if(r(t.value)){let e=0;for(;se();){if(r(t.value))e++;else if(i(t.value)&&(e--,e===0)){t.value++;break}t.value++}continue}if(o(t.value)){y=e[++t.value],n(t.value)&&t.value++;continue}if(c(t.value)){if(y=e[++t.value],_(t.value)){if(y=e[++t.value],r(t.value)){for(y=e[++t.value];se()&&!i(t.value);)n(t.value)&&de.push(y.value.toUpperCase()),y=e[++t.value];t.value++}else fe.primaryKey=!0}continue}if(l(t.value)){let n=NO(e,t);n&&ue.push(n);continue}if(s(t.value)||_(t.value)){if(y=e[++t.value],n(t.value)){let o=y.value,s=[];if(y=e[++t.value],r(t.value)){y=e[++t.value];let r={name:``,sort:qE.asc};for(;se()&&!i(t.value);)n(t.value)&&!g(t.value)&&!ee(t.value)&&(r.name=y.value),g(t.value)&&(r.sort=qE.desc),a(t.value)&&(s.push(r),r={name:``,sort:qE.asc}),y=e[++t.value];!s.includes(r)&&r.name!==``&&s.push(r),s.length&&le.push({name:o,unique:!1,columns:s}),t.value++}}continue}if(d(t.value)){if(y=e[++t.value],_(t.value)&&(y=e[++t.value]),n(t.value)&&(y=e[++t.value]),r(t.value)){for(y=e[++t.value];se()&&!i(t.value);)n(t.value)&&v.push(y.value.toUpperCase()),y=e[++t.value];t.value++}else fe.unique=!0;continue}if(p(t.value)){y=e[++t.value],f(t.value)?(fe.nullable=!1,t.value++):ie(t.value)&&t.value++;continue}if(ie(t.value)){t.value++;continue}if(m(t.value)){y=e[++t.value],n(t.value)&&(fe.default=y.value,t.value++);continue}if(h(t.value)){y=e[++t.value],te(t.value)&&(y=e[++t.value]),n(t.value)&&(fe.comment=y.value,t.value++);continue}if(u(t.value)){fe.autoIncrement=!0,t.value++;continue}if(ne(t.value)){t.value+=2,n(t.value)&&t.value++;continue}if(re(t.value)){t.value++,te(t.value)&&t.value++,n(t.value)&&t.value++;continue}let b=ae(t.value);if(b){let a=t.value+b,o=``,s=0;for(;t.value<a;)y=e[t.value],r(t.value)?(o+=`(`,s++):i(t.value)?(o+=`)`,s--):o+=s?n(t.value)&&(n(t.value-1)||i(t.value-1))?` ${y.value}`:y.value:o?` ${y.value}`:y.value,t.value++;for(;s>0;)o+=`)`,s--;fe.dataType=o;continue}if(a(t.value)){(fe.name||fe.dataType)&&ce.push(fe),fe={name:``,dataType:``,default:``,comment:``,primaryKey:!1,autoIncrement:!1,unique:!1,nullable:!0},t.value++;continue}if(i(t.value)){t.value++;break}t.value++}return!ce.includes(fe)&&(fe.name||fe.dataType)&&ce.push(fe),ce.forEach(e=>{de.includes(e.name.toUpperCase())&&(e.primaryKey=!0),v.includes(e.name.toUpperCase())&&(e.unique=!0)}),{columns:ce,indexes:le,foreignKeys:ue}}function NO(e,t){let n=cD(e),r=pD(e),i=mD(e),a=PD(e),o=uD(e),s=DD(e),c=()=>t.value<e.length,l={columnNames:[],refTableName:``,refColumnNames:[]},u=e[++t.value];if(s(t.value)){if(u=e[++t.value],r(t.value)){for(u=e[++t.value];c()&&!i(t.value);)n(t.value)&&l.columnNames.push(u.value),u=e[++t.value];u=e[++t.value]}if(a(t.value)&&(u=e[++t.value],n(t.value))){for(l.refTableName=u.value,t.value++;o(t.value);){if(!n(t.value+1)){t.value++;break}l.refTableName=e[t.value+1].value,t.value+=2}if(u=e[t.value],r(t.value)){for(u=e[++t.value];c()&&!i(t.value);)n(t.value)&&l.refColumnNames.push(u.value),u=e[++t.value];u=e[++t.value]}}if(l.columnNames.length&&l.columnNames.length===l.refColumnNames.length)return l}return null}function PO(e,t){let n=pO(e),r=fD(e),i=cD(e),a=OD(e),o=uD(e),s=SD(e),c=kD(e),l=wO(e)(t.value),u=()=>t.value<e.length,d={type:KE.alterTableAddForeignKey,name:``,columnNames:[],refTableName:``,refColumnNames:[]};for(t.value++;u()&&!n(t.value);){let n=e[t.value];if(r(t.value)){t.value++;break}if(s(t.value)){if(n=e[++t.value],l&&(n=e[++t.value]),i(t.value))for(d.name=n.value,t.value++;o(t.value);){if(!i(t.value+1)){t.value++;break}d.name=e[t.value+1].value,t.value+=2}continue}if(a(t.value)){n=e[++t.value],i(t.value)&&t.value++;continue}if(c(t.value)){let n=NO(e,t);n&&(d.columnNames=n.columnNames,d.refTableName=n.refTableName,d.refColumnNames=n.refColumnNames);continue}t.value++}return d}function FO(e,t){let n=pO(e),r=fD(e),i=cD(e),a=pD(e),o=mD(e),s=OD(e),c=ED(e),l=uD(e),u=DD(e),d=SD(e),f=wO(e)(t.value),p=()=>t.value<e.length,m={type:KE.alterTableAddPrimaryKey,name:``,columnNames:[]};for(t.value++;p()&&!n(t.value);){let n=e[t.value];if(r(t.value)){t.value++;break}if(d(t.value)){if(n=e[++t.value],f&&(n=e[++t.value]),i(t.value))for(m.name=n.value,t.value++;l(t.value);){if(!i(t.value+1)){t.value++;break}m.name=e[t.value+1].value,t.value+=2}continue}if(s(t.value)){n=e[++t.value],i(t.value)&&t.value++;continue}if(c(t.value)){if(n=e[++t.value],u(t.value)&&(n=e[++t.value],a(t.value))){for(n=e[++t.value];p()&&!o(t.value);)i(t.value)&&m.columnNames.push(n.value),n=e[++t.value];n=e[++t.value]}continue}t.value++}return m}function IO(e,t){let n=pO(e),r=fD(e),i=cD(e),a=OD(e),o=uD(e),s=SD(e),c=wD(e),l=pD(e),u=mD(e),d=wO(e)(t.value),f=()=>t.value<e.length,p={type:KE.alterTableAddUnique,name:``,columnNames:[]};for(t.value++;f()&&!n(t.value);){let n=e[t.value];if(r(t.value)){t.value++;break}if(s(t.value)){if(n=e[++t.value],d&&(n=e[++t.value]),i(t.value))for(p.name=n.value,t.value++;o(t.value);){if(!i(t.value+1)){t.value++;break}p.name=e[t.value+1].value,t.value+=2}continue}if(a(t.value)){n=e[++t.value],i(t.value)&&t.value++;continue}if(c(t.value)){if(n=e[++t.value],l(t.value)){for(n=e[++t.value];f()&&!u(t.value);)i(t.value)&&p.columnNames.push(n.value),n=e[++t.value];t.value++}continue}t.value++}return p}function LO(e,t){let n=pO(e),r=cD(e),i=uD(e),a=fD(e),o=UD(e),s=jD(e),c=()=>t.value<e.length,l={type:KE.commentOnColumn,tableName:``,columnName:``,comment:``};t.value+=3;let u=[],d=!1;for(;c()&&!n(t.value);){let n=e[t.value];if(a(t.value)){t.value++;break}if(o(t.value)){if(d=!0,n=e[++t.value],s(t.value)){t.value++;continue}r(t.value)&&(l.comment=n.value,t.value++);continue}if(i(t.value)){t.value++;continue}if(r(t.value)&&!d){u.push(n.value),t.value++;continue}t.value++}return l.columnName=u.length?u[u.length-1]:``,l.tableName=u.length>1?u[u.length-2]:``,l}function RO(e,t){let n=pO(e),r=cD(e),i=uD(e),a=fD(e),o=UD(e),s=jD(e),c=()=>t.value<e.length,l={type:KE.commentOnTable,name:``,comment:``};t.value+=3;let u=!1;for(;c()&&!n(t.value);){let n=e[t.value];if(a(t.value)){t.value++;break}if(o(t.value)){if(u=!0,n=e[++t.value],s(t.value)){t.value++;continue}r(t.value)&&(l.comment=n.value,t.value++);continue}if(i(t.value)){t.value++;continue}if(r(t.value)&&!u){l.name=n.value,t.value++;continue}t.value++}return l}function zO(e,t){let n=pO(e),r=fD(e),i=wD(e),a=cD(e),o=pD(e),s=mD(e),c=dD(e),l=CD(e),u=LD(e),d=ID(e),f=FD(e),p=vO(e),m=()=>t.value<e.length,h={type:KE.createIndex,name:``,unique:i(t.value+1),tableName:``,columns:[]};for(t.value+=p(t.value)?2:1;m()&&!n(t.value);){let n=e[t.value];if(r(t.value)){t.value++;break}if(l(t.value)){n=e[++t.value],a(t.value)&&(h.name=n.value);continue}if(u(t.value)){if(n=e[++t.value],a(t.value)&&(h.tableName=n.value,n=e[++t.value],o(t.value))){n=e[++t.value];let r={name:``,sort:qE.asc};for(;m()&&!s(t.value);)a(t.value)&&!d(t.value)&&!f(t.value)&&(r.name=n.value),d(t.value)&&(r.sort=qE.desc),c(t.value)&&(h.columns.push(r),r={name:``,sort:qE.asc}),n=e[++t.value];!h.columns.includes(r)&&r.name!==``&&h.columns.push(r),t.value++}continue}t.value++}return h}function BO(e){let t=[],n={value:0},r=()=>n.value<e.length,i=_O(e),a=yO(e),o=TO(e),s=EO(e),c=DO(e),l=dO(e),u=fO(e);for(;r();){if(i(n.value)){t.push(jO(e,n));continue}if(a(n.value)){t.push(zO(e,n));continue}if(o(n.value)){t.push(FO(e,n));continue}if(s(n.value)){t.push(PO(e,n));continue}if(c(n.value)){t.push(IO(e,n));continue}if(l(n.value)){t.push(RO(e,n));continue}if(u(n.value)){t.push(LO(e,n));continue}n.value++}return t}var VO=e=>BO(QE(e));function HO(e,t,n){let r=Bp({}),i=WO(UO(VO(e))),a=hh(i.length*100);return r.settings.width=a,r.settings.height=a,i.forEach(e=>GO(r,e,t)),KO(r,i),qO(r,i),Bm(n?n(r):r)}function UO(e){let t={tables:[],indexes:[],primaryKeys:[],foreignKeys:[],uniques:[],tableComments:[],columnComments:[]};for(let n of e)switch(n.type){case KE.createTable:n.name&&t.tables.push(n);break;case KE.createIndex:n.tableName&&n.columns.length&&t.indexes.push(n);break;case KE.alterTableAddPrimaryKey:n.name&&n.columnNames.length&&t.primaryKeys.push(n);break;case KE.alterTableAddForeignKey:n.name&&n.columnNames.length&&n.refTableName&&n.refColumnNames.length&&n.columnNames.length===n.refColumnNames.length&&t.foreignKeys.push(n);break;case KE.alterTableAddUnique:n.name&&n.columnNames.length&&t.uniques.push(n);break;case KE.commentOnTable:n.name&&t.tableComments.push(n);break;case KE.commentOnColumn:n.tableName&&n.columnName&&t.columnComments.push(n)}return t}function WO({tables:e,indexes:t,primaryKeys:n,foreignKeys:r,uniques:i,tableComments:a,columnComments:o}){return t.forEach(t=>{let n=HS(e,t.tableName);n&&n.indexes.push({name:t.name,unique:t.unique,columns:t.columns})}),n.forEach(t=>{let n=HS(e,t.name);n&&t.columnNames.forEach(e=>{let t=HS(n.columns,e);t&&(t.primaryKey=!0)})}),i.forEach(t=>{let n=HS(e,t.name);n&&t.columnNames.forEach(e=>{let t=HS(n.columns,e);t&&(t.unique=!0)})}),r.forEach(t=>{let n=HS(e,t.name);n&&n.foreignKeys.push({columnNames:t.columnNames,refTableName:t.refTableName,refColumnNames:t.refColumnNames})}),a.forEach(({name:t,comment:n})=>{let r=HS(e,t);r&&(r.comment=n)}),o.forEach(({tableName:t,columnName:n,comment:r})=>{let i=HS(e,t);if(!i)return;let a=HS(i.columns,n);a&&(a.comment=r)}),e}function GO({doc:e,collections:t},n,{toWidth:r}){let i=Qb({name:n.name,comment:n.comment,ui:{widthName:V(r(n.name)),widthComment:V(r(n.comment))}});n.columns.forEach(e=>{let n=kx({tableId:i.id,name:e.name,comment:e.comment,dataType:e.dataType,default:e.default,options:(e.autoIncrement?L.autoIncrement:0)|(e.primaryKey?L.primaryKey:0)|(e.unique?L.unique:0)|(e.nullable?0:L.notNull),ui:{widthName:V(r(e.name)),widthComment:V(r(e.comment)),widthDataType:V(r(e.dataType)),widthDefault:V(r(e.default)),keys:e.primaryKey?R.primaryKey:0}});i.columnIds.push(n.id),i.seqColumnIds.push(n.id),j(t).collection(`tableColumnEntities`).setOne(n)}),e.tableIds.push(i.id),j(t).collection(`tableEntities`).setOne(i)}function KO({doc:e,collections:t},n){let r=j(t).collection(`tableEntities`).selectByIds(e.tableIds),i=j(t).collection(`tableColumnEntities`);n.forEach(n=>{if(!n.foreignKeys.length)return;let a=HS(r,n.name);if(!a)return;let o=i.selectByIds(a.columnIds);n.foreignKeys.forEach(n=>{let s=HS(r,n.refTableName);if(!s)return;let c=i.selectByIds(s.columnIds),l=[],u=[];n.refColumnNames.forEach(e=>{let t=HS(c,e);t&&l.push(t)}),n.columnNames.forEach(e=>{let t=HS(o,e);t&&(u.push(t),z(t.ui.keys,R.primaryKey)?t.ui.keys|=R.foreignKey:t.ui.keys=R.foreignKey)});let d=Mb({identification:!u.some(e=>!(z(e.ui.keys,R.primaryKey)&&z(e.ui.keys,R.foreignKey))),relationshipType:Ym.ZeroN,start:{tableId:s.id,columnIds:l.map(e=>e.id)},end:{tableId:a.id,columnIds:u.map(e=>e.id)}});e.relationshipIds.push(d.id),j(t).collection(`relationshipEntities`).setOne(d)})})}function qO({doc:e,collections:t},n){let r=j(t).collection(`tableEntities`).selectByIds(e.tableIds);n.forEach(n=>{n.indexes.forEach(i=>{let a=HS(r,n.name);if(!a)return;let o=j(t).collection(`tableColumnEntities`).selectByIds(a.columnIds),s=[],c=Sy({name:i.name,tableId:a.id,unique:i.unique});i.columns.forEach(e=>{let t=HS(o,e.name);if(!t)return;let n=zy({indexId:c.id,columnId:t.id,orderType:e.sort===qE.asc?Zm.ASC:Zm.DESC});s.push(n)}),s.length!==0&&(s.forEach(e=>{c.indexColumnIds.push(e.id),c.seqIndexColumnIds.push(e.id),j(t).collection(`indexColumnEntities`).setOne(e)}),e.indexIds.push(c.id),j(t).collection(`indexEntities`).setOne(c))})})}function JO({doc:e,collections:t},n){let r=B(n);return j(t).collection(`relationshipEntities`).selectByIds(e.relationshipIds).filter(({start:e,end:t})=>r(e.tableId)&&r(t.tableId)).map(({relationshipType:e,start:t,end:n})=>({relationshipType:e,start:{tableId:t.tableId,columnIds:[...t.columnIds]},end:{tableId:n.tableId,columnIds:[...n.columnIds]}}))}function YO({doc:e,collections:t},n){let r=B(n),i=j(t).collection(`indexColumnEntities`),a=[];for(let n of j(t).collection(`indexEntities`).selectByIds(e.indexIds)){if(!r(n.tableId))continue;let e=[],t=!0;for(let r of n.indexColumnIds){let n=i.selectById(r);if(!n){t=!1;break}e.push({columnId:n.columnId,orderType:n.orderType})}t&&a.push({tableId:n.tableId,name:n.name,unique:n.unique,indexColumns:e})}return a}new TextEncoder;function XO({tables:e,columns:t,memos:n,relationships:r,indexes:i},a){let o=[],s=[],c=[],l=new Map(t.map(e=>[e.sourceId,e])),u=new Map,d=new Map;for(let t of e){let e=a.get(t.sourceId);if(!e)continue;let n=x();s.push(n),u.set(t.sourceId,n),o.push($b({id:n,ui:{x:e.x,y:e.y,zIndex:e.zIndex,color:t.ui.color}}),sx({id:n,value:t.name}),lx({id:n,value:t.comment}));for(let e of t.columnIds){let t=l.get(e);if(!t)continue;let r={id:x(),tableId:n};d.set(e,r.id),o.push(Ax(r),Px({...r,value:t.name}),Rx({...r,value:t.dataType}),Bx({...r,value:t.default}),Ix({...r,value:t.comment}),Wx({...r,value:z(t.options,L.primaryKey)}),Jx({...r,value:z(t.options,L.notNull)}),Kx({...r,value:z(t.options,L.unique)}),Hx({...r,value:z(t.options,L.autoIncrement)}))}}for(let e of r){let t=u.get(e.start.tableId),n=u.get(e.end.tableId);if(!t||!n)continue;let r=ZO(e.start.columnIds,d),i=ZO(e.end.columnIds,d);!r||!i||o.push(Nb({id:x(),relationshipType:e.relationshipType,start:{tableId:t,columnIds:r},end:{tableId:n,columnIds:i}}))}for(let e of i){let t=u.get(e.tableId);if(!t)continue;let n=ZO(e.indexColumns.map(({columnId:e})=>e),d);if(!n)continue;let r=x();o.push(Cy({id:r,tableId:t}),Dy({id:r,tableId:t,value:e.name}),ky({id:r,tableId:t,value:e.unique})),e.indexColumns.forEach(({orderType:e},i)=>{let a=x(),s=n[i];o.push(Vy({id:a,indexId:r,tableId:t,columnId:s}),qy({id:a,indexId:r,columnId:s,value:e}))})}for(let e of n){let t=a.get(e.sourceId);if(!t)continue;let n=x();c.push(n),o.push(ib({id:n,ui:{x:t.x,y:t.y,zIndex:t.zIndex,color:e.ui.color,width:e.ui.width,height:e.ui.height}}),fb({id:n,value:e.value}))}return{actions:o,tableIds:s,memoIds:c}}function ZO(e,t){let n=[];for(let r of e){let e=t.get(r);if(!e)return null;n.push(e)}return n}function QO(e,t,n=[]){let{doc:{relationshipIds:r},collections:i}=t,a=e.pop();return a&&(n.some(({columnId:e})=>e===a.columnId)||(n.push(a),j(i).collection(`relationshipEntities`).selectByIds(r).forEach(({id:t,start:n,end:r})=>{let i=n.columnIds.indexOf(a.columnId);if(i!==-1){let n=r.columnIds[i];e.push({columnId:n,relationshipIds:[t]})}else{let i=r.columnIds.indexOf(a.columnId);if(i!==-1){let r=n.columnIds[i];e.push({columnId:r,relationshipIds:[t]})}}})),QO(e,t,n)),n}function $O(e){return Object.entries(e).reduce((e,[t,n])=>(n===s_.table?e.tableIds.push(t):n===s_.memo&&e.memoIds.push(t),e),{tableIds:[],memoIds:[]})}const ek=e=>function*(){yield rv(),yield ov({value:e})},tk=e=>function*(){yield cv(),yield uv({value:e})},nk=(e,t)=>function*({editor:{selectedMap:n},settings:{zoomLevel:r}}){let{tableIds:i,memoIds:a}=$O(n),o=e/r,s=t/r;i.length&&(yield tx({ids:i,movementX:o,movementY:s})),a.length&&(yield ob({ids:a,movementX:o,movementY:s}))},rk=()=>function*(){yield OS(),yield yS()},ik=(e,t)=>function*(n){yield*ok(n,{input:{tables:e.tables,columns:e.columns,memos:e.memos,relationships:e.relationships??[],indexes:e.indexes??[]},offset:{x:50*t,y:50*t},escapeCollision:!0})},ak=({tableIds:e,memoIds:t,offset:n,escapeCollision:r})=>function*(i){yield*ok(i,{input:lk(i,{tableIds:e??[],memoIds:t??[]}),offset:{x:Ue(n.x,4),y:Ue(n.y,4)},escapeCollision:r})};function*ok(e,{input:t,offset:n,escapeCollision:r}){if(t.tables.length===0&&t.memos.length===0)return;let{settings:i,doc:{tableIds:a,memoIds:o},collections:s}=e,c=j(s).collection(`tableEntities`),l=j(s).collection(`memoEntities`),{actions:u,tableIds:d,memoIds:f}=XO(t,ck(TS({entities:[...t.tables.map(sk),...t.memos.map(sk)],offset:n,escapeCollision:r,settings:i,tables:c.selectByIds(a),memos:l.selectByIds(o),findSource:e=>c.selectById(e)??l.selectById(e)})));yield dk(),yield u,yield $_({...d.reduce((e,t)=>(e[t]=s_.table,e),{}),...f.reduce((e,t)=>(e[t]=s_.memo,e),{})})}const sk=({sourceId:e,ui:{x:t,y:n,zIndex:r}})=>({sourceId:e,ui:{x:t,y:n,zIndex:r}});function ck(e){return new Map(Array.from(e,([e,{x:t,y:n,zIndex:r}])=>[e,{x:Ue(t,4),y:Ue(n,4),zIndex:r}]))}function lk(e,{tableIds:t,memoIds:n}){let{collections:r}=e,i=j(r).collection(`tableEntities`).selectByIds(t),a=j(r).collection(`memoEntities`).selectByIds(n),o=i.flatMap(e=>j(r).collection(`tableColumnEntities`).selectByIds(e.columnIds)),s=i.map(({id:e})=>e);return{tables:i.map(e=>({sourceId:e.id,name:e.name,comment:e.comment,columnIds:[...e.columnIds],ui:{x:e.ui.x,y:e.ui.y,zIndex:e.ui.zIndex,widthName:e.ui.widthName,widthComment:e.ui.widthComment,color:e.ui.color}})),columns:o.map(e=>({sourceId:e.id,tableId:e.tableId,name:e.name,comment:e.comment,dataType:e.dataType,default:e.default,options:e.options,ui:{keys:e.ui.keys,widthName:e.ui.widthName,widthComment:e.ui.widthComment,widthDataType:e.ui.widthDataType,widthDefault:e.ui.widthDefault}})),memos:a.map(e=>({sourceId:e.id,value:e.value,ui:{x:e.ui.x,y:e.ui.y,width:e.ui.width,height:e.ui.height,zIndex:e.ui.zIndex,color:e.ui.color}})),relationships:JO(e,s),indexes:YO(e,s)}}const uk=e=>function*(t){let{doc:{tableIds:n,memoIds:r},collections:i}=t,a={...j(i).collection(`tableEntities`).selectByIds(n).reduce((n,r)=>{let i=Oh(r,t).width,a=Mh(r);return zS(e,{x:r.ui.x+i/2-15,y:r.ui.y+a/2-15,w:15,h:15})&&(n[r.id]=s_.table),n},{}),...j(i).collection(`memoEntities`).selectByIds(r).reduce((t,n)=>{let r=oh(n),i=sh(n);return zS(e,{x:n.ui.x+r/2-15,y:n.ui.y+i/2-15,w:15,h:15})&&(t[n.id]=s_.memo),t},{})};yield dk(),He(a)||(yield $_(a))},dk=()=>function*(){yield Z_(),yield gv()},fk=(e,t)=>function*(n){let{editor:{focusTable:r}}=n;r&&(e===c_.Tab&&!t&&(L_(r.focusType)&&F_(n)&&!w_(n)||!L_(r.focusType)&&T_(n)&&D_(n))?yield PS(r.tableId):yield vv({moveKey:e,shiftKey:t}))},pk=e=>function*({editor:t}){t.drawRelationship?.relationshipType===e?yield Iv():yield Mv({relationshipType:e})},mk=e=>function*({collections:t}){let n=j(t).collection(`tableEntities`).selectById(e);if(n){if(!j(t).collection(`tableColumnEntities`).selectByIds(n.columnIds).some(e=>z(e.options,L.primaryKey))){let t=x();yield Ax({tableId:e,id:t}),yield Wx({tableId:e,id:t,value:!0}),yield mv({tableId:e,columnId:t,focusType:W.columnName,$mod:!1,shiftKey:!1})}yield Pv({tableId:e})}},hk=e=>function*({editor:{selectedMap:t},collections:n}){let{tableIds:r,memoIds:i}=$O(t),a=j(n).collection(`tableEntities`).selectByIds(r),o=j(n).collection(`memoEntities`).selectByIds(i);yield a.map(t=>dx({id:t.id,color:e,prevColor:t.ui.color})),yield o.map(t=>mb({id:t.id,color:e,prevColor:t.ui.color}))},gk=e=>function*({settings:t},n){yield ek(HO(e,n,e=>(e.settings={...e.settings,..._e(oe(t),[`width`,`height`,`originX`,`originY`,`scrollTop`,`scrollLeft`,`zoomLevel`])},e))),yield hx()},_k=e=>function*({settings:t},n){yield ek(GE(e,n,e=>(e.settings={...e.settings,..._e(oe(t),[`width`,`height`,`originX`,`originY`,`scrollTop`,`scrollLeft`,`zoomLevel`])},e))),yield hx()},vk=e=>function*({settings:t},n){yield ek(xT(e,n,e=>(e.settings={...e.settings,..._e(oe(t),[`width`,`height`,`originX`,`originY`,`scrollTop`,`scrollLeft`,`zoomLevel`])},e))),yield hx()},yk=e=>function*({settings:t},n){yield ek(dw(e,n,e=>(e.settings={...e.settings,..._e(oe(t),[`width`,`height`,`originX`,`originY`,`scrollTop`,`scrollLeft`,`zoomLevel`])},e))),yield hx()},bk=e=>function*({editor:{focusTable:t}}){!t||!t.columnId||(yield Xv({tableId:t.tableId,columnIds:e?[...t.selectColumnIds]:[t.columnId]}))},xk=(e,t)=>function*({editor:{draggableColumn:n},collections:r}){if(!n||n.columnIds.length===0)return;let{tableId:i,columnIds:a}=n,o=j(r).collection(`tableEntities`),s=o.selectById(i);if(!s)return;if(t===i){let t=s.columnIds.indexOf(a[0]);if(t===-1)return;let n=s.columnIds.indexOf(e);if(n===-1)return;let r=a.map(t=>Xx({tableId:i,id:t,targetId:e}));t<n&&r.reverse(),yield r;return}if(!o.selectById(t))return;let c=j(r).collection(`tableColumnEntities`).selectByIds(a);if(c.length===0)return;yield FS(i,a);let l=c.map(()=>x());for(let n=0;n<c.length;n++){let r=c[n],i=l[n],a={id:i,tableId:t};yield[Ax(a),Px({...a,value:r.name}),Rx({...a,value:r.dataType}),Bx({...a,value:r.default}),Ix({...a,value:r.comment}),Wx({...a,value:z(r.options,L.primaryKey)}),Jx({...a,value:z(r.options,L.notNull)}),Kx({...a,value:z(r.options,L.unique)}),Hx({...a,value:z(r.options,L.autoIncrement)}),Xx({...a,targetId:e}),mv({tableId:t,columnId:i,focusType:W.columnName,$mod:!0,shiftKey:!1})]}yield Xv({tableId:t,columnIds:l})},Sk=e=>function*(t){let{columnIds:n,relationshipIds:r}=QO([{columnId:e,relationshipIds:[]}],t).reduce((e,{columnId:t,relationshipIds:n})=>(e.columnIds.push(t),e.relationshipIds.push(...n),e),{columnIds:[],relationshipIds:[]});yield Bv({columnIds:xe(n)}),yield Hv({relationshipIds:xe(r)})},Ck=()=>function*(){yield Bv({columnIds:[]}),yield Hv({relationshipIds:[]})},wk={loadJsonAction$:ek,initialLoadJsonAction$:tk,moveAllAction$:nk,removeSelectedAction$:rk,pasteEntitiesAction$:ik,duplicateAction$:ak,dragSelectAction$:uk,unselectAllAction$:dk,focusMoveTableAction$:fk,drawStartRelationshipAction$:pk,drawStartAddRelationshipAction$:mk,changeColorAllAction$:hk,loadSchemaSQLAction$:gk,loadSchemaGraphQLAction$:_k,loadSchemaDBMLAction$:vk,loadSchemaAMLAction$:yk,dragstartColumnAction$:bk,dragoverColumnAction$:xk,columnKeyHoverStartAction$:Sk,columnKeyHoverEndAction$:Ck},Tk={addIndexAction$:e=>function*(){yield Cy({id:x(),tableId:e})},changeIndexUniqueAction$:e=>function*({collections:t}){let n=j(t).collection(`indexEntities`).selectById(e);n&&(yield ky({id:e,tableId:n.tableId,value:!n.unique}))}},Ek={addIndexColumnAction$:(e,t)=>function*({collections:n}){let r=j(n).collection(`indexEntities`).selectById(e);if(!r)return;let i=j(n).collection(`indexColumnEntities`).selectByIds(r.seqIndexColumnIds).find(e=>e.columnId===t);i?yield Vy({id:i.id,indexId:e,tableId:r.tableId,columnId:t}):yield Vy({id:x(),indexId:e,tableId:r.tableId,columnId:t})},removeIndexColumnAction$:(e,t)=>function*({collections:n}){let r=j(n).collection(`indexEntities`).selectById(e);if(!r)return;let i=j(n).collection(`indexColumnEntities`).selectByIds(r.indexColumnIds).filter(e=>e.columnId===t);for(let t of i)yield Uy({id:t.id,indexId:e,tableId:r.tableId})},changeIndexColumnOrderTypeAction$:e=>function*({collections:t}){let n=j(t).collection(`indexColumnEntities`).selectById(e);n&&(yield qy({id:e,indexId:n.indexId,columnId:n.columnId,value:n.orderType===Zm.ASC?Zm.DESC:Zm.ASC}))},moveIndexColumnAction$:(e,t)=>function*({collections:n}){if(e===t)return;let r=j(n).collection(`indexColumnEntities`).selectById(e);if(!r)return;let i=j(n).collection(`indexEntities`).selectById(r.indexId);i&&(yield Gy({id:e,indexId:r.indexId,tableId:i.tableId,targetId:t}))}},Dk={};function Ok({editor:{viewport:e},settings:{originX:t,originY:n,zoomLevel:r}},i){let a={originX:t,originY:n,zoomLevel:r},o={x:e.width/2,y:e.height/2},s=t_(a,o),c=e_({...a,zoomLevel:i},s);return{movementX:Ue(o.x-c.x,4),movementY:Ue(o.y-c.y,4)}}const kk={changeZoomLevelAction$:e=>function*(t){let{settings:{originX:n,originY:r}}=t,{movementX:i,movementY:a}=Ok(t,gh(e));yield rg({value:e}),yield lg({originX:n+i,originY:r+a})},streamZoomLevelAction$:e=>function*(t){let{settings:{zoomLevel:n}}=t,{movementX:r,movementY:i}=Ok(t,gh(n+e));yield ag({value:e}),yield dg({movementX:r,movementY:i})}},Ak=Object.freeze({..._y,...wk,...My,...Tk,...Xy,...Ek,...xb,...xS,...Bb,...Dk,...Rg,...kk,...vx,...AS,...$x,...RS}),jk=`table.add,table.move,table.moveTo,table.remove,table.changeName,table.changeComment,table.changeColor,table.sort,column.add,column.remove,column.changeName,column.changeComment,column.changeDataType,column.changeDefault,column.changeAutoIncrement,column.changePrimaryKey,column.changeUnique,column.changeNotNull,column.move,relationship.add,relationship.remove,relationship.changeType,index.add,index.remove,index.changeName,index.changeUnique,indexColumn.add,indexColumn.remove,indexColumn.move,indexColumn.changeOrderType,memo.add,memo.move,memo.moveTo,memo.remove,memo.changeValue,memo.changeColor,memo.resize,settings.changeDatabaseName,settings.changeZoomLevel,settings.streamZoomLevel,settings.scrollTo,settings.streamScrollTo,settings.changeShow,settings.changeDatabase,settings.changeCanvasType,settings.changeLanguage,settings.changeTableNameCase,settings.changeColumnNameCase,settings.changeBracketType,settings.changeRelationshipDataTypeSync,settings.changeRelationshipOptimization,settings.changeColumnOrder,settings.changeMaxWidthComment,settings.changeIgnoreSaveSettings,editor.loadJson,editor.clear`.split(`,`),Mk=B([`settings.changeZoomLevel`,`settings.streamZoomLevel`,`settings.scrollTo`,`settings.streamScrollTo`,`settings.changeDatabase`,`settings.changeCanvasType`,`settings.changeLanguage`,`settings.changeTableNameCase`,`settings.changeColumnNameCase`,`settings.changeBracketType`]),Nk=[...jk.filter(e=>!Mk(e))],Pk=[`editor.sharedMouseTracker`,`editor.sharedFocusTracker`,`editor.sharedSelectionTracker`,`editor.sharedDragSelectTracker`];[...jk,...Pk];const Fk=[`table.move`,`memo.move`],Ik=[`table.changeColor`,`memo.changeColor`],Lk=[`settings.streamZoomLevel`,`settings.streamScrollTo`],Rk=[...Object.keys(mS)],zk=[...Object.keys(pS),...Rk];function Bk(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}function Vk(e,t,n){Bk(e,t),t.set(e,n)}function Hk(e,t,n){if(typeof e==`function`?e===t:e.has(t))return arguments.length<3?t:n;throw TypeError(`Private element is not present on this object`)}function Uk(e,t){return e.get(Hk(e,t))}function Wk(e,t,n){return e.set(Hk(e,t),n),n}var Gk=new WeakMap,Kk=class{constructor(){Vk(this,Gk,0),di(this,`getVersion`,()=>Uk(Gk,this)),di(this,`getNextVersion`,()=>this.getVersion()+1),di(this,`merge`,e=>(!y(e)||!Number.isInteger(e)||this.getVersion()<e&&Wk(Gk,this,e),this))}};function qk(e){return{...e,clock:new Kk}}function Jk({notify:e,dispatch:t,getNextVersion:n},r){let i=r?.commands??[],a=r?.cursor??-1,o=r?.limit??0,s=!0,c=()=>a!==-1,l=()=>a<i.length-1,u=e=>o=e,d=()=>({hasRedo:l(),hasUndo:c()}),f=(e,r)=>{s=!1,e[r](t,n),s=!0};return Object.freeze({get cursor(){return a},get size(){return i.length},hasUndo:c,hasRedo:l,push:t=>{s&&(i.splice(a+1,i.length-a),i.push(t),o!==0&&i.length>o&&(i=i.slice(i.length-o,i.length)),a=i.length-1,e(d()))},undo:()=>{if(!c())return;let t=i[a];f(t,`undo`),a--,e(d())},redo:()=>{if(!l())return;let t=i[a+1];f(t,`redo`),a++,e(d())},clear:()=>{let t=i.length;i=[],a=-1,t>0&&e(d())},setLimit:u,clone:e=>Jk(e,{commands:[...i],cursor:a,limit:o})})}const Yk=Ae(e=>!!e.length),Xk=e=>{let t=B(e);return e=>new Ce(n=>e.subscribe({next:e=>n.next(e.filter(e=>t(e.type))),error:e=>n.error(e),complete:()=>n.complete()})).pipe(Yk)},Zk=`@@none-stream`,Qk=(e,t)=>n=>{let r=t.find(([,e])=>e(n));return r?r[0]:e(n)?n:Zk},$k=(e,t=[],n=Oe(200))=>{let r=B(e),i=t.map(([e,t])=>[e,B(t)]),a=Qk(r,i);return e=>new Ce(t=>e.subscribe({next:e=>{let n=e.reduce((e,t)=>{let n=a(t.type);return e[n]||(e[n]=[]),e[n].push(t),e},{});Object.values(n).forEach(e=>t.next(e))},error:e=>t.error(e),complete:()=>t.complete()})).pipe(Yk,Me(e=>a(e[0].type)),Fe(e=>e.key===Zk?e:e.pipe(De(e.pipe(n)),Ne(e=>e.flat()))))},eA=e=>{let t=t=>v(t.tags)||!e.some(e=>z(t.tags,e));return e=>new Ce(n=>e.subscribe({next:e=>n.next(e.filter(t)),error:e=>n.error(e),complete:()=>n.complete()})).pipe(Yk)};B(Rk),B(Pk);const tA=(e,t=[])=>{let n=B(Nk),r=e=>!v(e.tags)&&t.some(t=>z(e.tags,t))||!n(e.type);return t=>new Ce(n=>t.subscribe({next:t=>{n.next(e()?t.filter(r):t)},error:e=>n.error(e),complete:()=>n.complete()})).pipe(Yk)};function nA(e,t){return Mu({context:e,state:{...Bp({}),editor:l_(),lww:{}},reducers:{...gy,..._x,...Qx,...bb,...zb,...Lg,...jy,...Yy},enableObservable:t??!0})}const rA=new WeakMap;function iA(e){let t=rA.get(e);return t||(t={boxes:new Map,entries:new Map},rA.set(e,t)),t}function aA(e,t){return{left:e.left[t],top:e.top[t],right:e.right[t],bottom:e.bottom[t]}}function oA(e,t){return{left:Math.min(e.left,t.left),top:Math.min(e.top,t.top),right:Math.max(e.right,t.right),bottom:Math.max(e.bottom,t.bottom)}}function sA(e,t){return e.left===t.left&&e.top===t.top&&e.right===t.right&&e.bottom===t.bottom}function cA(e){let t=1/0,n=1/0,r=-1/0,i=-1/0;for(let{x:a,y:o}of e)a<t&&(t=a),a>r&&(r=a),o<n&&(n=o),o>i&&(i=o);return{left:t,top:n,right:r,bottom:i}}function lA(e,t){return e.left<=t.right&&e.right>=t.left&&e.top<=t.bottom&&e.bottom>=t.top}function uA(e,t){let n={left:e.left-40,top:e.top-40,right:e.right+40,bottom:e.bottom+40};for(let e of t)if(lA(n,e))return!0;return!1}function dA(){let e=new Map,t=new Map,n=(n,r,i,a,o)=>{let s=n?e:t,c=Math.floor(Math.min(r,i)/64),l=Math.floor(Math.max(r,i)/64);for(let e=c;e<=l;e++){let t=s.get(e);t?t.push(r,i,a,o):s.set(e,[r,i,a,o])}};return{markSpan:n,markBox(e){n(!0,e.left,e.right,e.top,e.bottom),n(!1,e.top,e.bottom,e.left,e.right)},hits(n,r,i,a,o){let s=n?e:t;if(!s.size)return!1;let c=Math.min(r,i)-64,l=Math.max(r,i)+64,u=Math.floor(c/64),d=Math.floor(l/64);for(let e=u;e<=d;e++){let t=s.get(e);if(t){for(let e=0;e<t.length;e+=4)if(!(t[e+1]<c||t[e]>l)&&!(t[e+3]<a-16)&&!(t[e+2]>o+16))return!0}}return!1}}}function fA(e,t){for(let n=1;n<t.length;n++){let r=t[n-1],i=t[n];Math.abs(r.x-i.x)<.5?e.markSpan(!0,r.x,i.x,Math.min(r.y,i.y),Math.max(r.y,i.y)):e.markSpan(!1,r.y,i.y,Math.min(r.x,i.x),Math.max(r.x,i.x))}}function pA(e,t){let n=e.boxes,r=new Map,i=[],a=!1;for(let e=0;e<t.ids.length;e++){let o=t.ids[e],s=aA(t,e);if(r.set(o,s),a)continue;let c=n.get(o);c?sA(c,s)||i.push(oA(c,s)):i.push(s),i.length>64&&(a=!0)}if(!a){for(let[e,t]of n)if(!r.has(e)&&(i.push(t),i.length>64)){a=!0;break}}return e.boxes=r,a||n.size===0?null:i}function mA(e){return 50+e%4*12}function hA(e,t){return e.tableId===t.tableId?null:e.direction===I.right&&t.direction===I.left?t.x-e.x:e.direction===I.left&&t.direction===I.right?e.x-t.x:e.direction===I.bottom&&t.direction===I.top?t.y-e.y:e.direction===I.top&&t.direction===I.bottom?e.y-t.y:null}function gA(e,t){return t===null||t<=0?e:Math.max(36,Math.min(e,t/2-1))}function _A(e){return e===I.left||e===I.right}function vA(e){return e===I.right||e===I.bottom?1:-1}function yA(e,t,n){let r=vA(t);return _A(t)?{x:e.x+r*n,y:e.y}:{x:e.x,y:e.y+r*n}}function bA(e){let{start:t,end:n}=e,[r,i]=Ug(e),a=hA(t,n),o=gA(mA(r),a),s=gA(mA(i),a);return{m:yA(t,t.direction,o),l:yA(n,n.direction,s),startStub:o,endStub:s}}function xA(e){let{doc:{tableIds:t},collections:n}=e,r=j(n).collection(`tableEntities`).selectByIds(t),i=r.length,a={ids:Array(i),left:new Float64Array(i),top:new Float64Array(i),right:new Float64Array(i),bottom:new Float64Array(i)};return r.forEach((t,n)=>{let r=Ih(e,t);a.ids[n]=t.id,a.left[n]=r.lt.x+2,a.top[n]=r.lt.y+2,a.right[n]=r.rb.x-2,a.bottom[n]=r.rb.y-2}),a}function SA(e,t,n,r,i,a,o,s){let c=0,l=1,u=n-e,d=r-t,f=(e,t)=>{if(e===0)return t>=0;let n=t/e;if(e<0){if(n>l)return!1;n>c&&(c=n)}else{if(n<c)return!1;n<l&&(l=n)}return!0};return f(-u,e-i)&&f(u,o-e)&&f(-d,t-a)&&f(d,s-t)&&c<=l}function CA(e,t,n,r){let i=0,a=1/0,o=-1/0,s=1/0,c=-1/0;for(let t=0;t<e.length;t++){let n=e[t];n.x<a&&(a=n.x),n.x>o&&(o=n.x),n.y<s&&(s=n.y),n.y>c&&(c=n.y)}for(let l=0;l<t.ids.length;l++){let u=t.left[l],d=t.right[l],f=t.top[l],p=t.bottom[l];if(o<u||a>d||c<f||s>p)continue;let m=t.ids[l];if(m!==n&&m!==r)for(let t=1;t<e.length;t++){let n=e[t-1],r=e[t];if(!(Math.max(n.x,r.x)<u||Math.min(n.x,r.x)>d)&&!(Math.max(n.y,r.y)<f||Math.min(n.y,r.y)>p)&&SA(n.x,n.y,r.x,r.y,u,f,d,p)){i++;break}}}return i}function wA(e){let t=0;for(let n=1;n<e.length;n++)t+=Math.abs(e[n].x-e[n-1].x)+Math.abs(e[n].y-e[n-1].y);return t}function TA(e,t,n,r,i,a){let o=(e+t)/2,s=n[r?`left`:`top`],c=n[r?`right`:`bottom`],l=n[r?`top`:`left`],u=n[r?`bottom`:`right`],d=[];for(let e=0;e<n.ids.length;e++)u[e]<i||l[e]>a||d.push(s[e]-16,c[e]+16);return d.sort((e,t)=>Math.abs(e-o)-Math.abs(t-o)),[o,...d.slice(0,6)]}function EA(e,t,n,r,i){let a=_A(t),o=_A(r),s=vA(t),c=vA(r),l=Math.min(e.x,n.x,e.y,n.y),u=Math.max(e.x,n.x,e.y,n.y),d=[],f=e=>{let t=[e[0]];for(let n=1;n<e.length;n++){let r=t[t.length-1],i=e[n];Math.abs(i.x-r.x)<.5&&Math.abs(i.y-r.y)<.5||t.push(i)}t.length<2||d.push({points:t,bends:t.length-2})};if(a&&o){let t=TA(e.x,n.x,i,!0,l,u);for(let r of t)(r-e.x)*s<0||(r-n.x)*c<0||f([e,{x:r,y:e.y},{x:r,y:n.y},n]);let r=TA(e.y,n.y,i,!1,l,u);for(let t of r){let r=e.x+s*16,i=n.x+c*16;f([e,{x:r,y:e.y},{x:r,y:t},{x:i,y:t},{x:i,y:n.y},n])}}else if(!a&&!o){let t=TA(e.y,n.y,i,!1,l,u);for(let r of t)(r-e.y)*s<0||(r-n.y)*c<0||f([e,{x:e.x,y:r},{x:n.x,y:r},n]);let r=TA(e.x,n.x,i,!0,l,u);for(let t of r){let r=e.y+s*16,i=n.y+c*16;f([e,{x:e.x,y:r},{x:t,y:r},{x:t,y:i},{x:n.x,y:i},n])}}else if(a){(n.x-e.x)*s>=0&&(e.y-n.y)*c>=0&&f([e,{x:n.x,y:e.y},n]);let t=TA(e.x,n.x,i,!0,l,u).filter(t=>(t-e.x)*s>=0).slice(0,4),r=TA(e.y,n.y,i,!1,l,u).filter(e=>(e-n.y)*c>=0).slice(0,4);for(let i of t)for(let t of r)f([e,{x:i,y:e.y},{x:i,y:t},{x:n.x,y:t},n])}else{(n.y-e.y)*s>=0&&(e.x-n.x)*c>=0&&f([e,{x:e.x,y:n.y},n]);let t=TA(e.y,n.y,i,!1,l,u).filter(t=>(t-e.y)*s>=0).slice(0,4),r=TA(e.x,n.x,i,!0,l,u).filter(e=>(e-n.x)*c>=0).slice(0,4);for(let i of t)for(let t of r)f([e,{x:e.x,y:i},{x:t,y:i},{x:t,y:n.y},n])}return d}function DA(e,t,n,r,i,a,o){let s=EA(e,t,n,r,i),c=null,l=1/0;for(let e of s){let t=CA(e.points,i,a,o)*1e5+e.bends*36+wA(e.points);t<l&&(l=t,c=e.points)}return c||(_A(t)?[e,{x:(e.x+n.x)/2,y:e.y},{x:(e.x+n.x)/2,y:n.y},n]:[e,{x:e.x,y:(e.y+n.y)/2},{x:n.x,y:(e.y+n.y)/2},n])}const OA=[10,7,4],kA=OA[OA.length-1]-.5;function AA(e){let t=[];for(let[n,r]of e)for(let e=0;e<r.length-1;e++){let i=r[e],a=r[e+1],o=Math.abs(i.x-a.x)<.5;o!==Math.abs(i.y-a.y)<.5&&t.push({relationshipId:n,points:r,index:e,movable:e>0&&e<r.length-2,vertical:o,coordinate:o?i.x:i.y,low:o?Math.min(i.y,a.y):Math.min(i.x,a.x),high:o?Math.max(i.y,a.y):Math.max(i.x,a.x)})}return t}function jA(e,t){return e.relationshipId===t.relationshipId?e.index-t.index:e.relationshipId<t.relationshipId?-1:1}function MA(e){let t=e.points[e.index-1];return e.vertical?t.y:t.x}function NA(e){for(let t of e){let e=t.points[t.index],n=t.points[t.index+1];t.low=t.vertical?Math.min(e.y,n.y):Math.min(e.x,n.x),t.high=t.vertical?Math.max(e.y,n.y):Math.max(e.x,n.x)}}function PA(e,t){let n=e.points[e.index],r=e.points[e.index+1];e.vertical?(n.x=t,r.x=t):(n.y=t,r.y=t)}function FA(e,t,n,r){let i=[],a=[];for(let t of AA(e))(t.vertical?i:a).push(t);for(let e of[i,a]){NA(e);let i=e.filter(e=>e.movable);if(i.length<2)continue;i.sort((e,t)=>e.coordinate-t.coordinate||jA(e,t));let a=[],o=()=>{a.length>1&&IA(a,e,t,n,r),a=[]};for(let e of i){let t=a[a.length-1];t&&e.coordinate-t.coordinate>10.5&&o(),a.push(e)}o()}}function IA(e,t,n,r,i){e.sort((e,t)=>e.low-t.low||jA(e,t));let a=[],o=-1/0,s=()=>{a.length>1&&HA(a,t,n,r,i),a=[],o=-1/0};for(let t of e)a.length&&t.low>=o&&s(),a.push(t),o=Math.max(o,t.high);s()}function LA(e,t){return e.high+10>t.low&&t.high+10>e.low}function RA(e,t){return Math.abs(e.coordinate-t.coordinate)>=kA?0:Math.max(0,Math.min(e.high,t.high)-Math.max(e.low,t.low))}function zA(e,t){let n=0;for(let r=0;r<e.length;r++){let i=e[r];for(let t=r+1;t<e.length;t++)n+=RA(i,e[t]);for(let e of t)n+=RA(i,e)}return n}function BA(e,t){let n=new Set(e),r=1/0,i=-1/0;for(let t of e)t.coordinate<r&&(r=t.coordinate),t.coordinate>i&&(i=t.coordinate);let a=10*(e.length-1)/2+kA,o=[];for(let e of t)e.coordinate<r-a||e.coordinate>i+a||n.has(e)||o.push(e);return o}function VA(e){let t=[];for(let n of e){let e=t.find(e=>!LA(e[e.length-1],n));e?e.push(n):t.push([n])}return t}function HA(e,t,n,r,i){if(!i){UA(e,t,n,r);return}if(WA(e,i))return;let a=e.map(e=>e.coordinate);UA(e,t,n,r),GA(e,a,i)}function UA(e,t,n,r){let i=BA(e,t),a=zA(e,i);if(!a)return;let o=new Map,s=e.map(e=>(o.set(e,QA(e,n,r)),e.coordinate)),c=s.reduce((e,t)=>e+t,0)/s.length,l=KA(e),u=null,d=1/0;for(let t of OA){let a=null,f=1/0;for(let p of l){ZA(p,t,c,o,n,r);let l=zA(e,i);if(l)l<d&&(u=e.map(e=>e.coordinate),d=l);else{let t=YA(e,s);t<f&&(f=t,a=e.map(e=>e.coordinate))}XA(e,s)}if(a){XA(e,a);return}}u&&d<a&&XA(e,u)}function WA(e,t){let n=[];for(let r of e){if(t.dirty.has(r.relationshipId))return!1;let e=t.coordinate(r.relationshipId,r.index,r.vertical);if(e===void 0||t.lanes.hits(r.vertical,r.coordinate,e,r.low,r.high))return!1;n.push(e)}return XA(e,n),!0}function GA(e,t,n){e.forEach((e,r)=>{let i=t[r],a=e.coordinate;if(Math.abs(a-i)<.5)return;n.lanes.markSpan(e.vertical,i,a,e.low,e.high);let o=e.points[e.index],s=e.points[e.index+1],c=Math.min(i,a),l=Math.max(i,a),u=e.vertical?o.y:o.x,d=e.vertical?s.y:s.x;n.lanes.markSpan(!e.vertical,u,u,c,l),n.lanes.markSpan(!e.vertical,d,d,c,l)})}function KA(e){let t=VA(e),n=qA(t);return t.length===e.length?n:[...n,...qA(e.map(e=>[e]))]}function qA(e){let t=(e,t)=>e.reduce((e,n)=>e+t(n),0)/e.length,n=[...e].sort((e,n)=>t(e,MA)-t(n,MA)||t(e,JA)-t(n,JA)||jA(e[0],n[0])),r=[...e].sort((e,n)=>t(e,JA)-t(n,JA)||t(e,MA)-t(n,MA)||jA(e[0],n[0]));return n.every((e,t)=>e===r[t])?[n]:[n,r]}function JA(e){return e.coordinate}function YA(e,t){return e.reduce((e,n,r)=>e+Math.abs(n.coordinate-t[r]),0)}function XA(e,t){e.forEach((e,n)=>{PA(e,t[n]),e.coordinate=t[n]})}function ZA(e,t,n,r,i,a){let o=n-t*(e.length-1)/2,s=e.map(()=>[]);e.forEach((n,c)=>{for(let l of n){let n=r.get(l);if(!n)continue;let u=r=>{if(r<0||r>=e.length||s[r].some(e=>LA(l,e)))return!1;let c=o+r*t;return PA(l,c),nj(l,i,a,n)?(l.coordinate=c,s[r].push(l),!0):!1},d=!1;for(let e=0;e<=3&&!d;e++)d=u(c-e)||e>0&&u(c+e);d||PA(l,l.coordinate)}})}function QA(e,t,n){let r=n.get(e.relationshipId),i=[];for(let e=0;e<t.ids.length;e++){let n=t.ids[e];(n===r?.[0]||n===r?.[1])&&i.push(e)}return{blocked:CA(e.points,t,r?.[0]??``,r?.[1]??``),crossed:rj(e.points),own:i,intruded:tj(e.points,t,i),beforeDelta:$A(e,-1),afterDelta:$A(e,1)}}function $A(e,t){let n=e.points[t<0?e.index:e.index+1],r=e.points[t<0?e.index-1:e.index+2];return e.vertical?r.x-n.x:r.y-n.y}function ej(e,t){return Math.abs(t)>=.5&&e*t<=0}function tj(e,t,n){let r=0;for(let i of n){let n=t.left[i],a=t.top[i],o=t.right[i],s=t.bottom[i];for(let t=1;t<e.length;t++){let i=e[t-1],c=e[t];if(SA(i.x,i.y,c.x,c.y,n,a,o,s)){r++;break}}}return r}function nj(e,t,n,r){let i=e.points[e.index-1],a=e.points[e.index],o=e.points[e.index+1],s=e.points[e.index+2];if((e.vertical?Math.abs(i.x-a.x)<.5||Math.abs(s.x-o.x)<.5:Math.abs(i.y-a.y)<.5||Math.abs(s.y-o.y)<.5)||e.index===1&&ej($A(e,-1),r.beforeDelta)||e.index+2===e.points.length-1&&ej($A(e,1),r.afterDelta)||tj(e.points,t,r.own)>r.intruded||!r.crossed&&rj(e.points))return!1;let c=n.get(e.relationshipId);return CA(e.points,t,c?.[0]??``,c?.[1]??``)<=r.blocked}function rj(e){for(let t=0;t+1<e.length;t++)for(let n=t+2;n+1<e.length;n++)if(ij(e[t],e[t+1],e[n],e[n+1]))return!0;return!1}function ij(e,t,n,r){let i=Math.abs(e.x-t.x)<.5;if(i===Math.abs(n.x-r.x)<.5)return!1;let a=i?e:n,o=i?t:r,s=i?n:e,c=i?r:t;return a.x>Math.min(s.x,c.x)&&a.x<Math.max(s.x,c.x)&&s.y>Math.min(a.y,o.y)&&s.y<Math.max(a.y,o.y)}const aj={[U.top]:I.top,[U.bottom]:I.bottom,[U.left]:I.left,[U.right]:I.right},oj=Math.PI*2,sj=.15,cj={[U.top]:-Math.PI,[U.right]:-Math.PI/2,[U.bottom]:0,[U.left]:Math.PI/2},lj={[U.top]:!1,[U.right]:!1,[U.bottom]:!0,[U.left]:!0};function uj(e){Jg();let{doc:{tableIds:t,relationshipIds:n},collections:r}=e,i=B(t),a=j(r).collection(`tableEntities`),o=j(r).collection(`relationshipEntities`).selectByIds(n).filter(({start:e,end:t})=>i(e.tableId)&&i(t.tableId)),s=new Map,c=new Map,l=new Map,u=xj(o);for(let t of o){let n=bj(t),{start:r,end:i}=n,o=a.selectById(r.tableId),d=a.selectById(i.tableId);if(!(!o||!d)){if(c.set(t,n),l.set(n.id,[0,0]),r.tableId===i.tableId)gj(hj(e,s,o),n);else{let t=hj(e,s,o),a=hj(e,s,d),[c,l]=Tj(t.objectPoint,a.objectPoint,n);t[c].push({id:n.id,isStart:!0,point:r,angle:wj(c,t,a),tie:u.tieAt(n.id,r.tableId,i.tableId)}),a[l].push({id:n.id,isStart:!1,point:i,angle:wj(l,a,t),tie:u.tieAt(n.id,i.tableId,r.tableId)})}}}for(let e of s.values())for(let t of zg)Ej(t,e,l);for(let[e,t]of c.entries())Hg(e,l.get(t.id)??[0,0]),e.start.direction=t.start.direction,e.start.x=t.start.x,e.start.y=t.start.y,e.end.direction=t.end.direction,e.end.x=t.end.x,e.end.y=t.end.y;dj(e,c)}function dj(e,t){let n=xA(e),r=iA(e),i=pA(r,n),a=r.entries,o=new Map,s=new Set,c=dA();if(i)for(let e of i)c.markBox(e);let l=new Map,u=new Map,d=new Map;for(let e of t.keys()){let{start:t,end:r}=e;if(t.tableId===r.tableId)continue;let{m:f,l:p}=bA(e),m=a.get(e.id),h,g;i!==null&&m!==void 0&&mj(m,f,p,t,r)&&!uA(m.bounds,i)?(h=m.pristine,g=fj(h)):(g=DA(f,t.direction,p,r.direction,n,t.tableId,r.tableId),h=fj(g),s.add(e.id),m&&fA(c,m.nudged),fA(c,h)),l.set(e.id,g),u.set(e.id,[t.tableId,r.tableId]),d.set(e.id,e),o.set(e.id,{mx:f.x,my:f.y,mDirection:t.direction,lx:p.x,ly:p.y,lDirection:r.direction,startTableId:t.tableId,endTableId:r.tableId,pristine:h,nudged:g,bounds:cA(h)})}if(i)for(let[e,t]of a)o.has(e)||fA(c,t.nudged);FA(l,n,u,i===null?void 0:pj(a,s,c));for(let[e,t]of l){let n=d.get(e);n&&Gg(n,t)}r.entries=o}function fj(e){return e.map(({x:e,y:t})=>({x:e,y:t}))}function pj(e,t,n){return{dirty:t,lanes:n,coordinate(t,n,r){let i=e.get(t)?.nudged[n];if(i)return r?i.x:i.y}}}function mj(e,t,n,r,i){return e.mx===t.x&&e.my===t.y&&e.lx===n.x&&e.ly===n.y&&e.mDirection===r.direction&&e.lDirection===i.direction&&e.startTableId===r.tableId&&e.endTableId===i.tableId}function hj(e,t,n){let r=t.get(n.id);if(!r){let i=Ih(e,n);r={tableId:n.id,centerX:i.top.x,centerY:i.left.y,objectPoint:i,selfCount:0,top:[],bottom:[],left:[],right:[]},t.set(n.id,r)}return r}function gj(e,t){let{rt:n,width:r,height:i}=e.objectPoint,a=e.selfCount++,o=yj(Math.min(r,i)*sj,20,60)+a*14;t.start.direction=I.top,t.start.x=n.x-o,t.start.y=n.y,t.end.direction=I.right,t.end.x=n.x,t.end.y=n.y+o}function _j(e,t){let{width:n,height:r}=e.objectPoint;return yj(Math.min(n,r)*sj,20,60)+t*14}function vj(e){return e.selfCount?_j(e,e.selfCount-1)+8:0}function yj(e,t,n){return Math.min(Math.max(e,t),n)}function bj(e){return{id:e.id,start:{tableId:e.start.tableId,x:e.start.x,y:e.start.y,direction:e.start.direction},end:{tableId:e.end.tableId,x:e.end.x,y:e.end.y,direction:e.end.direction}}}function xj(e){let t=new Map;for(let{id:n,start:r,end:i}of e){let e=Sj(r.tableId,i.tableId),a=t.get(e);a?a.push(n):t.set(e,[n])}let n=new Map,r=new Map,i=!1;for(let e of t.values())e.length<2||(i=!0,e.sort(),e.forEach((t,i)=>{n.set(t,i),r.set(t,e.length)}));return{tieAt(e,t,a){if(!i)return 0;let o=n.get(e)??0;return t<=a?o:(r.get(e)??1)-1-o}}}function Sj(e,t){return e<t?`${e}|${t}`:`${t}|${e}`}function Cj(e){let t=e%oj;return t<0?t+oj:t}function wj(e,t,n){return Cj(Math.atan2(n.centerY-t.centerY,n.centerX-t.centerX)-cj[e])}function Tj(e,t,n){let r=[U.bottom,U.bottom],i=Lh(e.bottom,t.bottom);n.start.x=e.bottom.x,n.start.y=e.bottom.y,n.end.x=t.bottom.x,n.end.y=t.bottom.y,n.start.direction=I.bottom,n.end.direction=I.bottom;for(let a of zg)for(let o of zg){let s=a,c=o,l=Lh(e[s],t[c]);i<=l||(i=l,r[0]=s,r[1]=c,n.start.x=e[s].x,n.start.y=e[s].y,n.start.direction=aj[s],n.end.x=t[c].x,n.end.y=t[c].y,n.end.direction=aj[c])}return r}function Ej(e,t,n){let r=t[e];if(!r.length)return;r.sort((e,t)=>e.angle-t.angle||e.tie-t.tie||(e.id<t.id?-1:1));let{objectPoint:i}=t,a=e===U.top||e===U.bottom,o=(a?i.lt.x:i.lt.y)+12,s=(a?i.rb.x:i.rb.y)-12,c=vj(t);if(c&&(e===U.top?s-=c:e===U.right&&(o+=c)),s<o){let e=(o+s)/2;o=e,s=e}let l=s-o,u=(o+s)/2,d=r.length,f=d>1?Math.min(l/(d-1),120):0,p=u-f*(d-1)/2;r.forEach((t,r)=>{let o=lj[e]?d-1-r:r,s=p+o*f;a?(t.point.x=s,t.point.y=e===U.top?i.top.y:i.bottom.y):(t.point.y=s,t.point.x=e===U.left?i.left.x:i.right.x);let c=n.get(t.id);c&&(c[+!t.isStart]=r)})}const Dj=(e,t)=>e.pipe(Be(10,void 0,{leading:!1,trailing:!0})).subscribe(()=>{let{doc:e,collections:n}=t(),r=j(n).collection(`relationshipEntities`).selectByIds(e.relationshipIds);for(let e of r){let{end:t,identification:r}=e,i=j(n).collection(`tableEntities`).selectById(t.tableId);if(!i)continue;let a=B(i.columnIds),o=j(n).collection(`tableColumnEntities`).selectByIds(t.columnIds).filter(e=>a(e.id));if(!o.length)continue;let s=o.every(e=>z(e.options,L.primaryKey));s!==r&&(e.identification=s)}}),Oj=(e,t)=>e.pipe(Be(10,void 0,{leading:!1,trailing:!0})).subscribe(()=>{let{doc:e,collections:n}=t(),r=j(n).collection(`relationshipEntities`).selectByIds(e.relationshipIds);for(let e of r){let{end:t,startRelationshipType:r}=e,i=j(n).collection(`tableEntities`).selectById(t.tableId);if(!i)continue;let a=B(i.columnIds),o=j(n).collection(`tableColumnEntities`).selectByIds(t.columnIds).filter(e=>a(e.id));if(!o.length)continue;let s=o.every(e=>z(e.options,L.notNull))?Xm.dash:Xm.ring;s!==r&&(e.startRelationshipType=s)}}),kj=B([tx.type,rx.type,ob.type]),Aj=[[[Mx,Wx,ov,uv],Dj],[[Mx,Jx,ov,uv],Oj],[[pg,Ng,Nb,Fb,ob,$b,ax,tx,rx,sx,lx,Ax,Mx,Px,Ix,Rx,Bx,hx],(e,t)=>e.pipe(ze(e=>{kj(e.type)||Dh()}),Be(5,void 0,{leading:!1,trailing:!0})).subscribe(()=>{uj(t())})]],jj=[[[ov,uv],(e,t,n)=>e.pipe(Be(5,void 0,{leading:!1,trailing:!0})).subscribe(()=>{let e=t();Nh(e,n),uj(e)})]],Mj=e=>e.pipe(Ie(Ee)),Nj=[[[Wx],(e,t)=>Mj(e).subscribe(({payload:{id:e}})=>{let{collections:n}=t(),r=j(n).collection(`tableColumnEntities`).selectById(e);r&&z(r.options,L.primaryKey)&&(z(r.options,L.notNull)||(r.options|=L.notNull))})],[[Nb],(e,t)=>Mj(e).subscribe(({payload:{id:e,end:n}})=>{let{doc:{relationshipIds:r},collections:i}=t();if(!r.includes(e))return;let a=j(i).collection(`tableColumnEntities`).selectByIds(n.columnIds);for(let e of a)e.ui.keys=e.ui.keys|R.foreignKey})],[[Fb],(e,t)=>Mj(e).subscribe(({payload:{id:e}})=>{let{doc:{relationshipIds:n},collections:r}=t();if(n.includes(e))return;let i=j(r).collection(`relationshipEntities`).selectById(e);if(!i)return;let a=j(r).collection(`tableColumnEntities`).selectByIds(i.end.columnIds);for(let e of a)e.ui.keys=e.ui.keys&~R.foreignKey})],[[ov,uv],(e,t)=>Mj(e).subscribe(()=>{let{doc:e,collections:n}=t(),r=j(n).collection(`relationshipEntities`).selectByIds(e.relationshipIds),i=j(n).collection(`tableEntities`).selectByIds(e.tableIds),a=new Set,o=j(n).collection(`tableColumnEntities`);for(let{end:e}of r){let t=o.selectByIds(e.columnIds);for(let e of t)e.ui.keys=e.ui.keys|R.foreignKey,a.add(e.id)}for(let e of i){let t=o.selectByIds(e.columnIds);for(let e of t)z(e.ui.keys,R.foreignKey)&&!a.has(e.id)&&(e.ui.keys=e.ui.keys&~R.foreignKey)}})]],Pj=[...jj,...Nj,...Aj];function Fj(e){let t=()=>e.state,n=Pj.map(([n,r])=>{let i=new we;return{pattern:B(n.map(String)),action$:i,subscription:r(i,t,e.context)}}),r=e.subscribe(e=>{for(let t of e)for(let e of n)e.pattern(t.type)&&e.action$.next(t)});return{destroy:()=>{n.forEach(({action$:e,subscription:t})=>{t.unsubscribe(),e.complete()}),n.splice(0,n.length),r()}}}function Ij(e,{getReadonly:t=()=>!1,getHistory:n}={}){let r=new Set,i=nA(e),a=Fj(i),o={notify:e=>i.dispatch(q_(e)),dispatch:i.dispatchSync,getNextVersion:()=>e.clock.getNextVersion()},s=n?.(o)??Jk(o);s.setLimit(2048);let c=new we,l=c.pipe(Xk(zk),eA([nh.changeOnly,nh.shared]),tA(t),$k(Rk,[[`@@move`,Fk],[`@@scroll`,Lk],[`@@color`,Ik]])),u=new Ce(e=>i.subscribe(t=>e.next(t))).pipe(Xk(jk),tA(t,[nh.shared]),Oe(200)),d=(...t)=>{let n=e.clock.getNextVersion();return Ou(i.state,i.context,t).map(e=>(v(e.version)&&(e.version=n),e))},f=(...e)=>{let t=d(e);c.next(t)},p=(...e)=>{queueMicrotask(()=>f(e))},m=()=>{Array.from(r).forEach(e=>de(e)?e():e.unsubscribe()),r.clear(),i.destroy(),a.destroy(),s.clear(),c.complete()},h=()=>{t()||s.undo()},g=()=>{t()||s.redo()};return r.add(l.subscribe(_S(i,s))).add(c.pipe(tA(t,[nh.shared])).subscribe(i.dispatchSync)).add(i.subscribe(t=>{t.forEach(t=>e.clock.merge(t.version))})),Object.freeze({...i,dispatch:p,dispatchSync:f,destroy:m,undo:h,redo:g,history:s,change$:u})}const Lj={openColorPicker:`openColorPicker`,closeColorPicker:`closeColorPicker`,openToast:`openToast`,openTableProperties:`openTableProperties`,dragendColumnAll:`dragendColumnAll`,copy:`copy`,paste:`paste`,schemaGC:`schemaGC`,toggleSearch:`toggleSearch`,openThemeBuilder:`openThemeBuilder`,setThemeOptions:`setThemeOptions`,mouseTrackerStart:`mouseTrackerStart`,mouseTrackerEnd:`mouseTrackerEnd`,openDiffViewer:`openDiffViewer`,openAutomaticTablePlacement:`openAutomaticTablePlacement`,duplicateDragStart:`duplicateDragStart`,dragSelectStart:`dragSelectStart`};var Rj=new WeakMap,zj=class{constructor(){Vk(this,Rj,new Set)}on(e){return Uk(Rj,this).has(e)||Uk(Rj,this).add(e),()=>{Uk(Rj,this).delete(e)}}emit(e){Uk(Rj,this).forEach(t=>{fS(Reflect.get(t,e.type),e)})}clear(){Uk(Rj,this).clear()}};const Bj=D(Lj.openColorPicker);D(Lj.closeColorPicker),D(Lj.openToast),D(Lj.openTableProperties);const Vj=D(Lj.dragendColumnAll);D(Lj.copy),D(Lj.paste),D(Lj.schemaGC),D(Lj.toggleSearch),D(Lj.openThemeBuilder),D(Lj.setThemeOptions),D(Lj.mouseTrackerStart),D(Lj.mouseTrackerEnd),D(Lj.openDiffViewer),D(Lj.openAutomaticTablePlacement);const Hj=D(Lj.duplicateDragStart);D(Lj.dragSelectStart);const Uj=Je();let Wj=Uj.os.name===`mac`,Gj=Uj.os.name===`ios`;Uj.os.name,Uj.os.name,Uj.browser.name,Uj.browser.name,Uj.browser.name,Ye(e=>{Wj=e.os.name===`mac`,Gj=e.os.name===`ios`,e.os.name,e.os.name,e.browser.name,e.browser.name,e.browser.name});const Kj=()=>Wj||Gj,$={edit:`edit`,stop:`stop`,search:`search`,undo:`undo`,redo:`redo`,addTable:`addTable`,addColumn:`addColumn`,addMemo:`addMemo`,removeTable:`removeTable`,removeColumn:`removeColumn`,primaryKey:`primaryKey`,selectAllTable:`selectAllTable`,selectAllColumn:`selectAllColumn`,relationshipZeroOne:`relationshipZeroOne`,relationshipZeroN:`relationshipZeroN`,relationshipOneOnly:`relationshipOneOnly`,relationshipOneN:`relationshipOneN`,tableProperties:`tableProperties`,zoomIn:`zoomIn`,zoomOut:`zoomOut`,zoomReset:`zoomReset`,handTool:`handTool`,zenMode:`zenMode`};Object.values($);const qj=()=>({[$.edit]:[{shortcut:`Enter`}],[$.stop]:[{shortcut:`Escape`}],[$.search]:[{shortcut:`$mod+KeyK`,preventDefault:!0,stopPropagation:!0}],[$.undo]:[{shortcut:`$mod+KeyZ`,preventDefault:!0,stopPropagation:!0}],[$.redo]:[{shortcut:`$mod+Shift+KeyZ`,preventDefault:!0,stopPropagation:!0}],[$.addTable]:[{shortcut:`Alt+KeyN`,preventDefault:!0}],[$.addColumn]:[{shortcut:`Alt+Enter`,preventDefault:!0}],[$.addMemo]:[{shortcut:`Alt+KeyM`,preventDefault:!0}],[$.removeTable]:[{shortcut:`$mod+Backspace`,preventDefault:!0},{shortcut:`$mod+Delete`,preventDefault:!0}],[$.removeColumn]:[{shortcut:`Alt+Backspace`,preventDefault:!0},{shortcut:`Alt+Delete`,preventDefault:!0}],[$.primaryKey]:[{shortcut:`Alt+KeyK`,preventDefault:!0}],[$.selectAllTable]:[{shortcut:`$mod+KeyA`,preventDefault:!0},{shortcut:`$mod+Alt+KeyA`,preventDefault:!0}],[$.selectAllColumn]:[{shortcut:`Alt+KeyA`,preventDefault:!0}],[$.relationshipZeroOne]:[{shortcut:`$mod+Alt+Digit1`,preventDefault:!0}],[$.relationshipZeroN]:[{shortcut:`$mod+Alt+Digit2`,preventDefault:!0}],[$.relationshipOneOnly]:[{shortcut:`$mod+Alt+Digit3`,preventDefault:!0}],[$.relationshipOneN]:[{shortcut:`$mod+Alt+Digit4`,preventDefault:!0}],[$.tableProperties]:[{shortcut:`Alt+Space`,preventDefault:!0}],[$.zoomIn]:[{shortcut:`$mod+Equal`,preventDefault:!0,stopPropagation:!0}],[$.zoomOut]:[{shortcut:`$mod+Minus`,preventDefault:!0,stopPropagation:!0}],[$.zoomReset]:[{shortcut:`$mod+KeyO`,preventDefault:!0,stopPropagation:!0}],[$.handTool]:[{shortcut:`Space`,preventDefault:!0}],[$.zenMode]:[{shortcut:`Alt+KeyZ`,preventDefault:!0,stopPropagation:!0}]}),Jj={Shift:`Shift`,Meta:`Meta`,Alt:`Alt`,Control:`Control`};Jj.Shift,Jj.Meta,Jj.Alt,Jj.Control,Jj.Shift,Jj.Meta,Jj.Alt,Jj.Control;function Yj(e){return Kj()?e.metaKey:e.ctrlKey}function Xj(e,t){let{devtools:n=!0,...r}=t??{},i=qk(e),a=Ij(i,r),o=wa(qj(),{shallow:!0}),s=new we,c=new we,l=new zj;return Object.freeze({...i,actions:Ak,store:a,keyBindingMap:o,shortcut$:s,keydown$:c,emitter:l})}const Zj=hi({}),Qj=(e,t)=>za(e,{...Zj,value:t??Zj.value});function $j(e){e.store.dispatchSync(cv()),e.store.destroy(),e.keydown$.complete(),e.shortcut$.complete(),e.emitter.clear()}const eM=[`table`,`memo`,`relationship`],tM=e=>typeof e==`string`&&eM.includes(e);function nM(e){let t=e;if(typeof t.clientX==`number`)return{x:t.clientX,y:t.clientY};let n=e.touches?.[0];return n?{x:n.clientX,y:n.clientY}:null}const rM=(e,t)=>!!(e&&t&&e.x===t.x&&e.y===t.y),iM=new WeakMap,aM=`mousedown.sceneHit touchstart.sceneHit contextmenu.sceneHit`;function oM(e){return e.on(aM,t=>{let n=t.evt,r=nM(n),i=iM.get(e),a=t.target===e?null:cM(t.target),o=n.type===`contextmenu`&&rM(i?.point,r)?i?.hit??null:null;iM.set(e,{evt:n,hit:a??o,point:r})}),()=>{e.off(aM),iM.delete(e)}}function sM(e,t){let n=`${t}-`,r=e.id();if(r.startsWith(n))return r.slice(n.length);let[i,a=``]=e.name().split(/\s+/);return i===t?a:``}function cM(e){let t=e;for(;t;){let e=t.getAttr(`kind`);if(tM(e))return{kind:e,id:sM(t,e)};t=t.getParent()}return null}const lM=hi({}),uM=e=>za(e,lM);function dM({app:e,container:t,scene:n,width:r,height:i,theme:a}){let o=new te({container:t,width:r,height:i}),s={host:o.container(),parentElement:null},c=Ba(s,Zj,e),l=a?Ba(s,lM,a):null,u=oM(o);return Bf(o,n),{stage:o,destroy:()=>{u(),Bf(o,null),l?.destroy(),c.destroy(),o.destroy()}}}const fM=e=>new Promise(t=>setTimeout(t,e)),pM=32767;function mM(e,t,n){let r=Math.max(t,n),i=t*n;return r<=0||i<=0?e:Math.min(e,pM/r,16384/Math.sqrt(i))}function hM({x:e,y:t,width:n,height:r},i){return{x:e-i,y:t-i,width:n+i*2,height:r+i*2}}function gM(e){let{settings:{show:t},doc:{relationshipIds:n},collections:r}=e,i=Uh(e);if(z(t,N.relationship)){let e=j(r).collection(`relationshipEntities`).selectByIds(n);for(let t of e){let e=Zg(t);i=i?Hh(i,e):e}}return hM(i??{x:0,y:0,width:0,height:0},80)}function _M({width:e,height:t},n=1){let r=n>0?n:1,i=Math.max(e,t),a=e*t;return i<=0||a<=0?r:Math.min(r,pM/i,Math.sqrt(268435456/a))}const vM={"align-horizontal-distribute-center":Xe,"align-vertical-distribute-center":Ze,"arrow-right":Qe,atom:$e,braces:et,brackets:tt,"case-sensitive":nt,check:rt,"chevron-right":it,code:at,contrast:ot,copy:st,database:ct,diff:lt,eye:ut,"file-diff":dt,"file-image":ft,"file-input":pt,"file-output":mt,"grip-vertical":ht,hand:gt,"key-round":_t,maximize:vt,minimize:yt,minus:bt,"moon-star":xt,"mouse-pointer-2":St,palette:Ct,plus:wt,"redo-2":Tt,"refresh-cw":Et,"rotate-ccw-clock":Dt,search:Ot,settings:kt,"share-2":At,spline:jt,"sticky-note":Mt,sun:Nt,table:Pt,"table-properties":Ft,"undo-2":It,"wand-sparkles":Lt,waypoints:Rt,workflow:zt,x:Bt},yM={ZeroOneN:[[`circle`,{cx:`7`,cy:`12`,r:`5`}],[`path`,{d:`M12 12h10`}],[`path`,{d:`M15 6v12`}],[`path`,{d:`M16 12l6-6`}],[`path`,{d:`M16 12l6 6`}]],ZeroOne:[[`path`,{d:`M2 12h3`}],[`circle`,{cx:`10`,cy:`12`,r:`5`}],[`path`,{d:`M15 12h7`}],[`path`,{d:`M20 6v12`}]],ZeroN:[[`path`,{d:`M2 12h3`}],[`circle`,{cx:`10`,cy:`12`,r:`5`}],[`path`,{d:`M15 12h7`}],[`path`,{d:`M15 12l7-6`}],[`path`,{d:`M15 12l7 6`}]],OneOnly:[[`path`,{d:`M2 12h20`}],[`path`,{d:`M14 6v12`}],[`path`,{d:`M19 6v12`}]],OneN:[[`path`,{d:`M2 12h20`}],[`path`,{d:`M14 6v12`}],[`path`,{d:`M15 12l7-6`}],[`path`,{d:`M15 12l7 6`}]],One:[[`path`,{d:`M2 12h20`}],[`path`,{d:`M14 6v12`}]],N:[[`path`,{d:`M2 12h20`}],[`path`,{d:`M15 12l7-6`}],[`path`,{d:`M15 12l7 6`}]]},bM={};xM();function xM(){for(let e of Object.keys(vM))bM[e]={name:e,node:vM[e]};for(let e of Object.keys(yM))bM[e]={name:e,node:yM[e]}}function SM(e){return bM[e]}const CM=`-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', 'Open Sans', system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'`;Pd.global`
|
|
22
|
+
`);t[0]?.trim()===``&&t.shift(),t.length&&t[t.length-1].trim()===``&&t.pop();let n=t.filter(e=>e.trim()!==``).map(e=>(uE.exec(e)?.[0]??``).length),r=n.length?Math.min(...n):0;return t.map(e=>e.slice(r)).join(`
|
|
23
|
+
`)}const gE=/^[0-9a-z ]+$/,_E=/'/g,vE=/\?/g;function yE(e){try{return{ok:!0,model:xE(fE(e))}}catch(e){return{ok:!1,message:e instanceof Error?e.message:`Invalid DBML`}}}function bE(e){let t=0;return{peek:(n=0)=>e[t+n]??null,next:()=>e[t++]??null,atEnd:()=>t>=e.length}}function xE(e){let t=bE(e),n={tables:[],refs:[],enums:{},skipped:[]},r=new Map,i=new Set,a=e=>{i.has(e)||(i.add(e),n.skipped.push(e)),KE(t)};for(;!t.atEnd();){if(JE(t))continue;let e=t.peek();if(!e)break;if(!YE(e)){t.next();continue}let i=e.value.toLowerCase();if(i===`table`&&e.kind===X.identifier){t.next();let e=SE(t,r);e&&n.tables.push(e);continue}if(i===`tablepartial`&&e.kind===X.identifier){t.next();let e=SE(t,r);e&&r.set(e.name,e.columns);continue}if(i===`ref`&&e.kind===X.identifier){t.next(),n.refs.push(...OE(t));continue}if(i===`enum`&&e.kind===X.identifier){t.next(),ME(t,n.enums);continue}a(i)}return n}function SE(e,t){let{schemaName:n,name:r}=BE(e),i={schemaName:n,name:r,alias:``,comment:``,columns:[],indexes:[]},a=e.peek();if(a&&a.kind===X.identifier&&a.value.toLowerCase()===`as`&&(e.next(),i.alias=VE(e)),IE(i,NE(e)),!WE(e))return r===``?null:i;for(;!e.atEnd();){if(JE(e))continue;let n=e.peek();if(!n)break;if(n.kind===X.punctuation&&n.value===`}`){e.next();break}if(n.kind===X.punctuation&&n.value===`~`){e.next();let n=t.get(VE(e));n&&i.columns.push(...n.map(e=>({...e})));continue}if(n.kind===X.identifier){let t=n.value.toLowerCase(),r=e.peek(1);if(t===`note`&&r&&Z(r,`:`)){e.next(),e.next(),i.comment=HE(e);continue}if(t===`note`&&r&&Z(r,`{`)){e.next(),e.next(),i.comment=UE(e);continue}if(t===`indexes`&&r&&Z(r,`{`)){e.next(),e.next(),i.indexes.push(...EE(e));continue}if(r&&Z(r,`{`)){e.next(),e.next(),GE(e);continue}}let r=CE(e);r&&i.columns.push(r)}return i}function CE(e){let t=e.peek();if(!t||!YE(t))return qE(e),null;e.next();let n={name:t.value,comment:``,typeName:``,typeSchemaName:``,primaryKey:!1,unique:!1,notNull:!1,autoIncrement:!1,default:``,inlineRefs:[]},r=wE(e);return n.typeName=r.name,n.typeSchemaName=r.schemaName,PE(n,NE(e)),qE(e),n.typeName===``?null:n}function wE(e){let{schemaName:t,name:n}=BE(e);if(n===``)return{name:``,schemaName:``};let r=[n],i=e.peek();i&&Z(i,`(`)&&(e.next(),r.push(`(${TE(e)})`));let a=e.peek(),o=e.peek(1);return a&&o&&Z(a,`[`)&&Z(o,`]`)&&(e.next(),e.next(),r.push(`[]`)),{name:r.join(``),schemaName:t}}function TE(e){let t=[];for(;!e.atEnd();){let n=e.next();if(!n||Z(n,`)`))break;n.kind!==X.newline&&t.push(n.kind===X.string?`'${n.value}'`:n.value)}return t.join(``)}function EE(e){let t=[];for(;!e.atEnd();){if(JE(e))continue;let n=e.peek();if(!n)break;if(Z(n,`}`)){e.next();break}let r={name:``,unique:!1,primaryKey:!1,columnNames:[]};Z(n,`(`)?(e.next(),r.columnNames.push(...DE(e))):YE(n)?(e.next(),r.columnNames.push(n.value)):e.next(),FE(r,NE(e)),qE(e),r.columnNames.length!==0&&t.push(r)}return t}function DE(e){let t=[];for(;!e.atEnd();){let n=e.next();if(!n||Z(n,`)`))break;YE(n)&&t.push(n.value)}return t}function OE(e){let t=e.peek();if(t&&YE(t)){let t=e.peek(1);t&&(Z(t,`:`)||Z(t,`{`))&&e.next()}let n=e.peek();if(n&&Z(n,`:`)){e.next();let t=kE(e);return qE(e),t?[t]:[]}if(!WE(e))return qE(e),[];let r=[];for(;!e.atEnd();){if(JE(e))continue;let t=e.peek();if(!t)break;if(Z(t,`}`)){e.next();break}let n=kE(e);n?r.push(n):qE(e)}return r}function kE(e){let t=jE(e),n=AE(e);if(n===``)return null;let r=jE(e);return NE(e),t.tableName===``||r.tableName===``?null:{operator:n,left:t,right:r}}function AE(e){let t=e.peek();return t?t.kind===X.operator?(e.next(),t.value.replace(vE,``)):Z(t,`-`)?(e.next(),`-`):``:``}function jE(e){let t=[],n=[];for(;!e.atEnd();){let r=e.peek();if(!r||!YE(r))break;e.next(),t.push(r.value);let i=e.peek();if(!i||!Z(i,`.`))break;e.next();let a=e.peek();if(a&&Z(a,`(`)){e.next(),n.push(...DE(e));break}}n.length===0&&t.length!==0&&n.push(t.pop());let r=t.pop()??``;return{schemaName:t.pop()??``,tableName:r,columnNames:n}}function ME(e,t){let{schemaName:n,name:r}=BE(e);if(NE(e),!WE(e)){qE(e);return}let i=[];for(;!e.atEnd();){if(JE(e))continue;let t=e.peek();if(!t)break;if(Z(t,`}`)){e.next();break}YE(t)?(e.next(),i.push(t.value),NE(e)):e.next(),qE(e)}r!==``&&(t[n?`${n}.${r}`:r]=i,n&&!(r in t)&&(t[r]=i))}function NE(e){let t=e.peek();if(!t||!Z(t,`[`))return[];e.next();let n=[],r=[],i=[],a=!1,o=()=>{let e=r.join(` `).toLowerCase();(e!==``||i.length!==0)&&n.push({key:e,tokens:i}),r=[],i=[],a=!1};for(;!e.atEnd();){let t=e.next();if(!t||Z(t,`]`))break;if(Z(t,`,`)){o();continue}if(!a&&Z(t,`:`)){a=!0;continue}if(a){i.push(t);continue}if(YE(t)&&gE.test(t.value.toLowerCase())){r.push(t.value);continue}a=!0,i.push(t)}return o(),n}function PE(e,t){t.forEach(({key:t,tokens:n})=>{switch(t){case`pk`:case`primary key`:e.primaryKey=!0;break;case`unique`:e.unique=!0;break;case`not null`:e.notNull=!0;break;case`increment`:e.autoIncrement=!0;break;case`note`:e.comment=RE(n);break;case`default`:e.default=zE(n);break;case`ref`:{let t=LE(n);t&&e.inlineRefs.push(t);break}}})}function FE(e,t){t.forEach(({key:t,tokens:n})=>{switch(t){case`name`:e.name=RE(n);break;case`unique`:e.unique=!0;break;case`pk`:case`primary key`:e.primaryKey=!0}})}function IE(e,t){t.forEach(({key:t,tokens:n})=>{t===`note`&&(e.comment=RE(n))})}function LE(e){let t=bE(e),n=AE(t);if(n===``)return null;let r=jE(t);return r.tableName===``?null:{operator:n,target:r}}function RE(e){let t=e.find(e=>e.kind===X.string||e.kind===X.quoted||e.kind===X.identifier);return t?t.value:``}function zE(e){let t=e.filter(e=>e.kind!==X.newline),n=t[0];if(!n)return``;if(Z(n,`-`)&&t[1]?.kind===X.number)return`-${t[1].value}`;switch(n.kind){case X.string:return`'${n.value.replace(_E,`''`)}'`;case X.expression:case X.number:case X.identifier:case X.quoted:return n.value;default:return t.map(e=>e.value).join(``)}}function BE(e){let t=VE(e);if(t===``)return{schemaName:``,name:``};let n=e.peek();return!n||!Z(n,`.`)?{schemaName:``,name:t}:(e.next(),{schemaName:t,name:VE(e)})}function VE(e){let t=e.peek();return!t||!YE(t)?``:(e.next(),t.value)}function HE(e){let t=e.peek();return t&&(t.kind===X.string||t.kind===X.quoted)?(e.next(),t.value):``}function UE(e){let t=``;for(;!e.atEnd();){let n=e.next();if(!n||Z(n,`}`))break;t===``&&n.kind===X.string&&(t=n.value)}return t}function WE(e){let t=0;for(;e.peek(t)?.kind===X.newline;)t+=1;let n=e.peek(t);if(!n||!Z(n,`{`))return!1;for(let n=0;n<=t;n+=1)e.next();return!0}function GE(e){let t=1;for(;!e.atEnd()&&t!==0;){let n=e.next();if(!n)break;Z(n,`{`)?t+=1:Z(n,`}`)&&--t}}function KE(e){if(WE(e)){GE(e);return}for(;!e.atEnd();){let t=e.next();if(!t||t.kind===X.newline)return;if(Z(t,`{`)){GE(e);return}}}function qE(e){for(;!e.atEnd();){let t=e.peek();if(!t)return;if(t.kind===X.newline){e.next();return}if(Z(t,`}`))return;e.next()}}function JE(e){let t=e.peek();return t&&t.kind===X.newline?(e.next(),!0):!1}function YE(e){return e.kind===X.identifier||e.kind===X.quoted}function Z(e,t){return e.kind===X.punctuation&&e.value===t}const XE={tables:[],refs:[],enums:{},skipped:[]};function ZE(e,t,n){let r=yE(e),i=r.ok?r.model:XE,a=Hp({}),o=Hh(i.tables.length*100);a.settings.width=o,a.settings.height=o;let{settings:s}=n?n(a):a,c=JT(i,t,s.database);return c.settings=s,Hm(c)}const QE={[L.MariaDB]:`VARCHAR(255)`,[L.MSSQL]:`varchar(255)`,[L.MySQL]:`VARCHAR(255)`,[L.Oracle]:`VARCHAR2(255)`,[L.PostgreSQL]:`varchar(255)`,[L.SQLite]:`TEXT`,[L.Databricks]:`STRING`,[L.Snowflake]:`VARCHAR(255)`},$E={[L.MariaDB]:`INT`,[L.MSSQL]:`int`,[L.MySQL]:`INT`,[L.Oracle]:`INTEGER`,[L.PostgreSQL]:`integer`,[L.SQLite]:`INTEGER`,[L.Databricks]:`INT`,[L.Snowflake]:`INT`},eD={[L.MariaDB]:`SMALLINT`,[L.MSSQL]:`smallint`,[L.MySQL]:`SMALLINT`,[L.Oracle]:`SMALLINT`,[L.PostgreSQL]:`smallint`,[L.SQLite]:`SMALLINT`,[L.Databricks]:`SMALLINT`,[L.Snowflake]:`SMALLINT`},tD={[L.MariaDB]:`BIGINT`,[L.MSSQL]:`bigint`,[L.MySQL]:`BIGINT`,[L.Oracle]:`NUMBER(19)`,[L.PostgreSQL]:`bigint`,[L.SQLite]:`BIGINT`,[L.Databricks]:`BIGINT`,[L.Snowflake]:`BIGINT`},nD={[L.MariaDB]:`DOUBLE`,[L.MSSQL]:`float`,[L.MySQL]:`DOUBLE`,[L.Oracle]:`BINARY_DOUBLE`,[L.PostgreSQL]:`double precision`,[L.SQLite]:`REAL`,[L.Databricks]:`DOUBLE`,[L.Snowflake]:`FLOAT`},rD={[L.MariaDB]:`DECIMAL`,[L.MSSQL]:`decimal`,[L.MySQL]:`DECIMAL`,[L.Oracle]:`DECIMAL`,[L.PostgreSQL]:`numeric`,[L.SQLite]:`DECIMAL`,[L.Databricks]:`DECIMAL`,[L.Snowflake]:`DECIMAL`},iD={[L.MariaDB]:`BOOLEAN`,[L.MSSQL]:`bit`,[L.MySQL]:`BOOLEAN`,[L.Oracle]:`BOOLEAN`,[L.PostgreSQL]:`boolean`,[L.SQLite]:`BOOLEAN`,[L.Databricks]:`BOOLEAN`,[L.Snowflake]:`BOOLEAN`},aD={[L.MariaDB]:`DATE`,[L.MSSQL]:`date`,[L.MySQL]:`DATE`,[L.Oracle]:`DATE`,[L.PostgreSQL]:`date`,[L.SQLite]:`DATE`,[L.Databricks]:`DATE`,[L.Snowflake]:`DATE`},oD={[L.MariaDB]:`TIME`,[L.MSSQL]:`time`,[L.MySQL]:`TIME`,[L.Oracle]:`VARCHAR2(255)`,[L.PostgreSQL]:`time`,[L.SQLite]:`TEXT`,[L.Databricks]:`STRING`,[L.Snowflake]:`TIME`},sD={[L.MariaDB]:`DATETIME`,[L.MSSQL]:`datetime2`,[L.MySQL]:`DATETIME`,[L.Oracle]:`TIMESTAMP`,[L.PostgreSQL]:`timestamp`,[L.SQLite]:`DATETIME`,[L.Databricks]:`TIMESTAMP`,[L.Snowflake]:`TIMESTAMP_NTZ`},cD={[L.MariaDB]:`TIMESTAMP`,[L.MSSQL]:`datetimeoffset`,[L.MySQL]:`TIMESTAMP`,[L.Oracle]:`TIMESTAMP WITH TIME ZONE`,[L.PostgreSQL]:`timestamptz`,[L.SQLite]:`DATETIME`,[L.Databricks]:`TIMESTAMP`,[L.Snowflake]:`TIMESTAMP_TZ`},lD={[L.MariaDB]:`VARCHAR(255)`,[L.MSSQL]:`varchar(255)`,[L.MySQL]:`VARCHAR(255)`,[L.Oracle]:`INTERVAL DAY TO SECOND`,[L.PostgreSQL]:`interval`,[L.SQLite]:`TEXT`,[L.Databricks]:`INTERVAL DAY TO SECOND`,[L.Snowflake]:`VARCHAR(255)`},uD={[L.MariaDB]:`JSON`,[L.MSSQL]:`json`,[L.MySQL]:`JSON`,[L.Oracle]:`JSON`,[L.PostgreSQL]:`jsonb`,[L.SQLite]:`TEXT`,[L.Databricks]:`VARIANT`,[L.Snowflake]:`VARIANT`},dD={[L.MariaDB]:`UUID`,[L.MSSQL]:`uniqueidentifier`,[L.MySQL]:`CHAR(36)`,[L.Oracle]:`VARCHAR2(36)`,[L.PostgreSQL]:`uuid`,[L.SQLite]:`TEXT`,[L.Databricks]:`STRING`,[L.Snowflake]:`UUID`},fD={[L.MariaDB]:`BLOB`,[L.MSSQL]:`varbinary(max)`,[L.MySQL]:`BLOB`,[L.Oracle]:`BLOB`,[L.PostgreSQL]:`bytea`,[L.SQLite]:`BLOB`,[L.Databricks]:`BINARY`,[L.Snowflake]:`BINARY`},pD={id:QE,string:QE,boolean:iD,int:$E,float:nD,positiveint:$E,nonnegativeint:$E,unsignedint:$E,short:eD,smallint:eD,positivefloat:nD,nonnegativefloat:nD,bigint:tD,biginteger:tD,long:tD,int8:tD,safeint:tD,decimal:rD,bigdecimal:rD,numeric:rD,money:rD,datetime:sD,datetimeiso:sD,localdatetime:sD,timestamp:sD,timestamptz:cD,date:aD,localdate:aD,time:oD,localtime:oD,timetz:oD,duration:lD,iso8601duration:lD,interval:lD,json:uD,jsonb:uD,jsonobject:uD,uuid:dD,guid:dD,byte:fD,bytes:fD,bytea:fD,binary:fD,email:QE,emailaddress:QE,url:QE,uri:QE,void:QE};function mD(e,t,n){let r=QE[t]??``,i=vD(n.enums,e);return i?gD(i,t)??r:vD(n.unions,e)?r:pD[e.toLowerCase()]?.[t]??r}function hD(e,t,n){let r=vD(t.enums,e);if(r)return n!==void 0&&gD(r,n)!==void 0?``:_D(e,r);let i=vD(t.unions,e);return i?_D(e,i):``}function gD(e,t){if(t===L.MySQL||t===L.MariaDB)return`ENUM(${e.map(e=>`'${e.replace(/'/g,`''`)}'`).join(`,`)})`}function _D(e,t){return` ${e}: ${t.join(` | `)}`}function vD(e,t){let n=e[t];return Array.isArray(n)&&n.length?n:void 0}function yD(e,t,n){let r=Hp({}),i=bD(e.tables),a=new Set(e.skipped),o=e.tables.map(o=>xD(r,t,e,n,o,i,a));return ED(r,t,o),ID(r,o),r}function bD(e){let t=new Map,n=new Map;for(let r of e){t.set(r.name,r);let e=r.name.toLowerCase();n.has(e)||n.set(e,r)}return e=>t.get(e)??n.get(e.toLowerCase())??null}function xD({doc:e,collections:t},n,r,i,a,o,s){let{toWidth:c}=n,l=[],u=[];for(let e of a.fields){let{named:t}=e.typeRef;s.has(t)||(o(t)?u.push(e):l.push(e))}let d=new Set(SD(l)),f=Xh(a.name),p=Xh(a.comment),m=OS({name:f,comment:p,ui:{widthName:U(c(f)),widthComment:U(c(p))}}),h={name:f,source:a,table:m,columns:[],referenceFields:u};return l.forEach(e=>{TD(t,h,CD(n,r,i,m.id,e,d.has(e)))}),e.tableIds.push(m.id),N(t).collection(`tableEntities`).setOne(m),h}function SD(e){let t=e.filter(e=>e.primaryKey);if(t.length)return t;let n=e.find(e=>e.typeRef.named===`ID`&&!e.typeRef.isList);if(n)return[n];let r=e.find(e=>e.name.toLowerCase()===`id`);return r?[r]:[]}function CD({toWidth:e},t,n,r,i,a){let{named:o,nonNull:s}=i.typeRef,c=Xh(i.name),l=Xh(i.dataType)||mD(o,n,t),u=Xh(i.default),d=wD(i,t,n);return aC({tableId:r,name:c,comment:d,dataType:l,default:u,options:(i.autoIncrement?z.autoIncrement:0)|(a?z.primaryKey:0)|(i.unique?z.unique:0)|(s?z.notNull:0),ui:{widthName:U(e(c)),widthComment:U(e(d)),widthDataType:U(e(l)),widthDefault:U(e(u)),keys:a?B.primaryKey:0}})}function wD(e,t,n){let{named:r,isList:i}=e.typeRef,a=[],o=Xh(e.comment);return o&&a.push(o),i&&a.push(`list of ${r}`),`${a.join(` `)}${hD(r,t,n)}`.trim()}function TD(e,t,n){t.table.columnIds.push(n.id),t.table.seqColumnIds.push(n.id),t.columns.push(n),N(e).collection(`tableColumnEntities`).setOne(n)}function ED(e,t,n){let r=bD(n),i=[];n.forEach(e=>{e.referenceFields.forEach(t=>{let n=r(t.typeRef.named);n&&i.push({source:e,target:n,field:t,consumed:!1})})});let a={claimedColumnIds:new Set,relationshipKeys:new Set},o=i.filter(e=>!e.field.typeRef.isList);[...o.filter(e=>e.field.relationFields.length),...o.filter(e=>!e.field.relationFields.length)].forEach(n=>{if(n.consumed)return;let r=DD(i,n);n.consumed=!0,r&&(r.consumed=!0);let o=!!r?.field.typeRef.isList;kD(e,t,a,{parent:n.target,child:n.source,field:n.field,childSide:!0,relationshipType:n.field.typeRef.nonNull?o?Zm.OneN:Zm.OneOnly:o?Zm.ZeroN:Zm.ZeroOne})}),i.filter(e=>e.field.typeRef.isList).forEach(r=>{if(r.consumed)return;let o=OD(i,r);if(r.consumed=!0,o){o.consumed=!0,PD(e,t,n,r);return}kD(e,t,a,{parent:r.source,child:r.target,field:r.field,childSide:!1,relationshipType:r.field.typeRef.nonNull?Zm.OneN:Zm.ZeroN})})}function DD(e,t){let n=e.filter(e=>e!==t&&!e.consumed&&e.source===t.target&&e.target===t.source);if(!n.length)return null;let{relationName:r}=t.field;if(r)return n.find(e=>e.field.relationName===r)??null;if(t.source===t.target)return n.length===1?n[0]:null;let i=e.filter(e=>!e.consumed&&e.source===t.source&&e.target===t.target);return n.length===1&&i.length===1?n[0]:null}function OD(e,t){if(e.some(e=>!e.field.typeRef.isList&&(e.source===t.source&&e.target===t.target||e.source===t.target&&e.target===t.source)))return null;let n=e.filter(e=>e!==t&&!e.consumed&&e.field.typeRef.isList&&e.source===t.target&&e.target===t.source);if(!n.length)return null;let{relationName:r}=t.field;return r?n.find(e=>e.field.relationName===r)??null:n[0]}function kD(e,t,n,r){let{doc:i,collections:a}=e,{parent:o,child:s,relationshipType:c}=r,l=gw(o.columns);if(!l.length)return;let{startColumns:u,endColumns:d}=AD(e,t,n,r,l);if(!d.length)return;let f=`${o.table.id}:${s.table.id}:${d.map(e=>e.id).join(`,`)}`;if(n.relationshipKeys.has(f))return;n.relationshipKeys.add(f),d.forEach(e=>{G(e.ui.keys,B.primaryKey)?e.ui.keys|=B.foreignKey:e.ui.keys=B.foreignKey,n.claimedColumnIds.add(e.id)});let p=sS({identification:d.every(e=>G(e.ui.keys,B.primaryKey)&&G(e.ui.keys,B.foreignKey)),relationshipType:c,start:{tableId:o.table.id,columnIds:u.map(e=>e.id)},end:{tableId:s.table.id,columnIds:d.map(e=>e.id)}});i.relationshipIds.push(p.id),N(a).collection(`relationshipEntities`).setOne(p)}function AD(e,t,n,{parent:r,child:i,field:a,childSide:o},s){if(o&&a.relationFields.length){let e=[],t=[];if(a.relationFields.forEach((n,o)=>{let c=vw(i.columns,n),l=a.relationReferences[o],u=l?vw(r.columns,l):s[o]??null;!c||!u||(e.push(u),t.push(c))}),t.length)return{startColumns:e,endColumns:t}}let c=o?Xh(a.name):pe(r.name),l=new Set,u=[],d=[];return s.forEach(o=>{let s=jD(c,r.name,o.name),f=MD(i.columns,s,e=>l.has(e)?!0:n.claimedColumnIds.has(e))??ND(e,t,i,a,o,s[0]);l.add(f.id),u.push(o),d.push(f)}),{startColumns:u,endColumns:d}}function jD(e,t,n){return[`${e}${Gv(n)}`,`${ve(e)}_${ve(n)}`,`${t}${Gv(n)}`,`${ve(t)}_${ve(n)}`,`${e}Id`,`${ve(e)}_id`]}function MD(e,t,n){for(let r of t){let t=vw(e,r);if(t&&!n(t.id))return t}return null}function ND({collections:e},{toWidth:t},n,r,i,a){let o=_w(n.columns,``,a),{dataType:s}=i,c=aC({tableId:n.table.id,name:o,dataType:s,options:r.typeRef.nonNull?z.notNull:0,ui:{keys:B.foreignKey,widthName:U(t(o)),widthDataType:U(t(s))}});return TD(e,n,c),c}function PD(e,t,n,r){let{doc:i,collections:a}=e,{toWidth:o}=t,s=r.source,c=r.target,l=gw(s.columns),u=gw(c.columns);if(!l.length||!u.length)return;let d=_w(n.map(e=>e.table),``,`${s.name}_${c.name}`),f=`Junction table inferred from ${s.name} <-> ${c.name}`,p=OS({name:d,comment:f,ui:{widthName:U(o(d)),widthComment:U(o(f))}}),m={name:d,source:{name:d,comment:f,fields:[],indexes:[]},table:p,columns:[],referenceFields:[]};i.tableIds.push(p.id),N(a).collection(`tableEntities`).setOne(p),n.push(m),FD(e,t,m,s,l),FD(e,t,m,c,u)}function FD(e,{toWidth:t},n,r,i){let{doc:a,collections:o}=e,s=i.map(e=>{let i=_w(n.columns,``,`${pe(r.name)}${Gv(e.name)}`),{dataType:a}=e,s=aC({tableId:n.table.id,name:i,dataType:a,options:z.primaryKey|z.notNull,ui:{keys:B.primaryKey|B.foreignKey,widthName:U(t(i)),widthDataType:U(t(a))}});return TD(o,n,s),s}),c=sS({identification:!0,relationshipType:Zm.ZeroN,start:{tableId:r.table.id,columnIds:i.map(e=>e.id)},end:{tableId:n.table.id,columnIds:s.map(e=>e.id)}});a.relationshipIds.push(c.id),N(o).collection(`relationshipEntities`).setOne(c)}function ID({doc:e,collections:t},n){n.forEach(({source:n,table:r,columns:i})=>{n.indexes.forEach(n=>{let a=Zb({name:Xh(n.name),tableId:r.id,unique:n.unique}),o=[];n.fieldNames.forEach(e=>{let t=vw(i,e);t&&o.push(mx({indexId:a.id,columnId:t.id,orderType:$m.ASC}))}),o.length&&(o.forEach(e=>{a.indexColumnIds.push(e.id),a.seqIndexColumnIds.push(e.id),N(t).collection(`indexColumnEntities`).setOne(e)}),e.indexIds.push(a.id),N(t).collection(`indexEntities`).setOne(a))})})}const LD=[`Query`,`Mutation`,`Subscription`],RD=[`PageInfo`],zD=[`Connection`,`Edge`],BD=[`_aggregate`,`_aggregate_fields`,`_mutation_response`,`_max_fields`,`_min_fields`,`_sum_fields`,`_avg_fields`,`_stddev_fields`,`_variance_fields`,`_bool_exp`,`_order_by`,`_insert_input`,`_set_input`,`_on_conflict`,`_constraint`,`_update_column`,`_select_column`],VD=[`_Service`,`_Entity`,`_Any`,`_FieldSet`],HD=[`autoincrement`,`autoincrement()`],UD=/[_A-Za-z]/,WD=/[_0-9A-Za-z]/;function GD(e){try{return{ok:!0,model:JD(KD(e))}}catch(e){return{ok:!1,message:qD(e)}}}function KD(e){try{return Ge(e)}catch(t){let n=pO(e);if(n===e)throw t;try{return Ge(n)}catch{throw t}}}function qD(e){let t=e instanceof Error?e.message:String(e),n=e?.locations?.[0];if(!n)return t;let r=t.replace(/^Syntax Error:\s*/,``);return`Syntax Error at line ${n.line}, column ${n.column}: ${r}`}function JD(e){let t={},n={},r=[],i=new Map,a=new Map,o=new Set;for(let s of e.definitions)switch(s.kind){case Ue.OBJECT_TYPE_DEFINITION:case Ue.OBJECT_TYPE_EXTENSION:XD(a,s);break;case Ue.INTERFACE_TYPE_DEFINITION:case Ue.INTERFACE_TYPE_EXTENSION:{let e=s.name.value,t=i.get(e)??[];t.push(...s.fields??[]),i.set(e,t);break}case Ue.SCHEMA_DEFINITION:case Ue.SCHEMA_EXTENSION:for(let e of s.operationTypes??[])o.add(e.type.name.value);break;case Ue.ENUM_TYPE_DEFINITION:t[s.name.value]=(s.values??[]).map(e=>e.name.value);break;case Ue.UNION_TYPE_DEFINITION:n[s.name.value]=(s.types??[]).map(e=>e.name.value);break;case Ue.SCALAR_TYPE_DEFINITION:r.push(s.name.value)}let s=o.size?o:new Set(LD),c=[],l=[],u=new Map;for(let e of a.values()){if(lO(e.name,s)){l.push(e.name);continue}let t=ZD(e,i);if(!t.fields.length){l.push(e.name);continue}t.name!==e.name&&u.set(e.name,t.name),c.push(t)}return YD(c,u),{tables:c,enums:t,customScalars:r,unions:n,skipped:l}}function YD(e,t){if(t.size)for(let n of e)for(let e of n.fields){let n=t.get(e.typeRef.named);n&&(e.typeRef.named=n)}}function XD(e,t){let n=t.name.value,r=(t.interfaces??[]).map(e=>e.name.value),i=e.get(n);if(i){i.fieldNodes.push(...t.fields??[]),i.interfaceNames.push(...r),i.directives.push(...t.directives??[]),i.comment||=dO(t);return}e.set(n,{name:n,comment:dO(t),interfaceNames:r,fieldNodes:[...t.fields??[]],directives:[...t.directives??[]]})}function ZD(e,t){let n=QD(e.fieldNodes),r=new Set(n.map(e=>e.name.value)),i=[];for(let n of e.interfaceNames)for(let e of t.get(n)??[]){let t=e.name.value;r.has(t)||(r.add(t),i.push(e))}let a={name:e.name,comment:e.comment,fields:[...i,...n].map($D).filter(b),indexes:[]};for(let t of e.directives)nO(a,t);return a}function QD(e){let t=new Set;return e.filter(e=>{let n=e.name.value;return!t.has(n)&&(t.add(n),!0)})}function $D(e){if(e.name.value.startsWith(`__`))return null;let t={name:e.name.value,comment:dO(e),typeRef:eO(e.type),primaryKey:!1,unique:!1,autoIncrement:!1,default:``,dataType:``,relationName:``,relationFields:[],relationReferences:[],hasArguments:(e.arguments??[]).length>0};for(let n of e.directives??[])tO(t,n);return t}function eO(e){let t=e.kind===Ue.NON_NULL_TYPE,n=t?e.type:e,r=n.kind===Ue.LIST_TYPE,i=r?n.type:n,a=r&&i.kind===Ue.NON_NULL_TYPE,o=i;for(;o.kind!==Ue.NAMED_TYPE;)o=o.type;return{named:o.name.value,nonNull:t,isList:r,itemNonNull:a}}function tO(e,t){let n=t.name.value;if(n.startsWith(`db_`)){e.dataType=rO(n,t);return}switch(n){case`id`:case`primaryKey`:e.primaryKey=!0;break;case`unique`:e.unique=!0;break;case`autoincrement`:case`autoIncrement`:e.autoIncrement=!0;break;case`default`:{let n=iO(t,`value`);if(!n)break;let r=sO(n);HD.includes(r.toLowerCase())?e.autoIncrement=!0:e.default=r;break}case`map`:{let n=aO(t,`name`)||aO(t,`value`);n&&(e.name=n);break}case`relation`:{let n=aO(t,`name`)||aO(t,`value`);n&&(e.relationName=n);let r=iO(t,`fields`);r&&(e.relationFields=cO(r));let i=iO(t,`references`);i&&(e.relationReferences=cO(i));break}case`column`:{let n=aO(t,`name`);n&&(e.name=n);let r=aO(t,`dataType`);r&&(e.dataType=r);let i=iO(t,`default`);i&&(e.default=sO(i));let a=oO(t,`autoIncrement`);a!==null&&(e.autoIncrement=a);let o=oO(t,`unique`);o!==null&&(e.unique=o);let s=oO(t,`primaryKey`);s!==null&&(e.primaryKey=s);break}}}function nO(e,t){switch(t.name.value){case`map`:{let n=aO(t,`name`)||aO(t,`value`);n&&(e.name=n);break}case`table`:{let n=aO(t,`name`);n&&(e.name=n);let r=iO(t,`comment`);r&&(e.comment=sO(r));break}case`index`:{let n=iO(t,`fields`),r=n?cO(n):[];if(!r.length)break;let i={name:aO(t,`name`),unique:oO(t,`unique`)??!1,fieldNames:r};e.indexes.push(i);break}}}function rO(e,t){let n=e.slice(3),r=t.arguments??[];return r.length?`${n}(${r.map(e=>sO(e.value)).join(`, `)})`:n}function iO(e,t){let n=(e.arguments??[]).find(e=>e.name.value===t);return n?n.value:null}function aO(e,t){let n=iO(e,t);return n?sO(n):``}function oO(e,t){let n=iO(e,t);return n?sO(n)===`true`:null}function sO(e){switch(e.kind){case Ue.STRING:case Ue.INT:case Ue.FLOAT:case Ue.ENUM:return e.value;case Ue.BOOLEAN:return e.value?`true`:`false`;case Ue.NULL:return`null`;case Ue.LIST:return e.values.map(sO).join(`, `);default:return``}}function cO(e){return(e.kind===Ue.LIST?e.values:[e]).map(sO).filter(e=>e!==``)}function lO(e,t){return t.has(e)||e.startsWith(`__`)||VD.includes(e)||RD.includes(e)||zD.some(t=>uO(e,t))||BD.some(t=>uO(e,t))}function uO(e,t){return e.length>t.length&&e.endsWith(t)}function dO(e){if(e.description)return fO(e.description.value);if(!e.loc)return``;let t=[],n=e.loc.startToken.line-1,r=e.loc.startToken.prev;for(;r&&r.kind===We.COMMENT&&r.line===n&&(!r.prev||r.prev.line<r.line);)t.unshift(r.value??``),--n,r=r.prev;return fO(t.join(` `))}function fO(e){return e.replace(/\s+/g,` `).trim()}function pO(e){let t=``,n=0,r=!1;for(;n<e.length;){let i=e[n];if(i===`#`){let r=gO(e,n);t+=e.slice(n,r),n=r;continue}if(i===`"`){let r=_O(e,n);t+=e.slice(n,r),n=r;continue}if(i!==`@`||!UD.test(e[n+1]??``)){t+=i,n+=1;continue}let a=hO(e,n+1),o=e.slice(n+1,a);for(;e[a]===`.`&&UD.test(e[a+1]??``);){let t=hO(e,a+1);o+=`_${e.slice(a+1,t)}`,a=t,r=!0}t+=`@${o}`,n=a;let s=yO(e,n);if(e[s]===`(`){t+=e.slice(n,s+1),n=s+1;for(let i=0;n<e.length;i++){let a=yO(e,n);if(t+=e.slice(n,a),n=a,e[n]===`)`||n>=e.length)break;let o=mO(e,n);o===-1?(t+=i===0?`value: `:`value${i}: `,r=!0):(t+=e.slice(n,o+1),n=o+1);let s=Math.max(vO(e,yO(e,n)),n+1);t+=e.slice(n,s),n=s}}}return r?t:e}function mO(e,t){if(!UD.test(e[t]??``))return-1;let n=yO(e,hO(e,t));return e[n]===`:`?n:-1}function hO(e,t){let n=t;for(;n<e.length&&WD.test(e[n]);)n+=1;return n}function gO(e,t){let n=e.indexOf(`
|
|
24
|
+
`,t);return n===-1?e.length:n}function _O(e,t){if(e.startsWith(`"""`,t)){let n=e.indexOf(`"""`,t+3);return n===-1?e.length:n+3}let n=t+1;for(;n<e.length;){let t=e[n];if(t===`\\`){n+=2;continue}if(t===`
|
|
25
|
+
`)return n;if(t===`"`)return n+1;n+=1}return n}function vO(e,t){let n=[],r=t;for(;r<e.length;){let t=e[r];if(t===`"`){r=_O(e,r);continue}if(t===`[`||t===`{`){n.push(t),r+=1;continue}if(t===`]`||t===`}`){if(!n.length)break;if(n.pop(),r+=1,!n.length)return r;continue}if(!n.length&&(t===`)`||t===`,`||t===`#`)||!n.length&&/\s/.test(t))break;r+=1}return r}function yO(e,t){let n=t;for(;n<e.length;){let t=e[n];if(t===`#`){n=gO(e,n);continue}if(!/[\s,]/.test(t))break;n+=1}return n}const bO={tables:[],enums:{},customScalars:[],unions:{},skipped:[]};function xO(e,t,n){let r=GD(e),i=r.ok?r.model:bO,a=Hp({}),o=Hh(i.tables.length*100);a.settings.width=o,a.settings.height=o;let{settings:s}=n?n(a):a,c=yD(i,t,s.database);return c.settings=s,Hm(c)}var SO={createTable:`create.table`,createIndex:`create.index`,alterTableAddUnique:`alter.table.add.unique`,alterTableAddPrimaryKey:`alter.table.add.primaryKey`,alterTableAddForeignKey:`alter.table.add.foreignKey`,commentOnTable:`comment.on.table`,commentOnColumn:`comment.on.column`},CO={asc:`ASC`,desc:`DESC`},wO={string:`string`,leftParent:`leftParent`,rightParent:`rightParent`,leftBracket:`leftBracket`,rightBracket:`rightBracket`,comma:`comma`,period:`period`,equal:`equal`,semicolon:`semicolon`},TO={doubleQuote:`"`,dash:`-`,slash:`/`,asterisk:`*`,newLine:`
|
|
26
|
+
`,singleQuote:`'`,backtick:"`",whiteSpace:/\s/,string:/\S/,breakString:/;|,|\(|\)|\[|\]|\.|=/,equal:`=`,period:`.`,comma:`,`,semicolon:`;`,leftParent:`(`,rightParent:`)`,leftBracket:`[`,rightBracket:`]`},EO=e=>t=>e===t,DO=e=>t=>e.test(t),Q={doubleQuote:EO(TO.doubleQuote),dash:EO(TO.dash),slash:EO(TO.slash),asterisk:EO(TO.asterisk),newLine:EO(TO.newLine),singleQuote:EO(TO.singleQuote),backtick:EO(TO.backtick),whiteSpace:DO(TO.whiteSpace),string:DO(TO.string),breakString:DO(TO.breakString),equal:EO(TO.equal),period:EO(TO.period),comma:EO(TO.comma),semicolon:EO(TO.semicolon),leftParent:EO(TO.leftParent),rightParent:EO(TO.rightParent),leftBracket:EO(TO.leftBracket),rightBracket:EO(TO.rightBracket)};function OO(e){let t=[],n=0,r=()=>n<e.length;for(;r();){let i=e[n];if(Q.whiteSpace(i)){let t=``;for(;r()&&Q.whiteSpace(i);)t+=i,i=e[++n];continue}if(Q.dash(i)&&Q.dash(e[n+1])){for(;r()&&!Q.newLine(i);)i=e[++n];continue}if(Q.slash(i)&&Q.asterisk(e[n+1])){for(n+=2,i=e[n];r()&&!(Q.asterisk(i)&&Q.slash(e[n+1]));)i=e[++n];n+=2;continue}if(Q.leftParent(i)){t.push({type:wO.leftParent,value:i}),n++;continue}if(Q.rightParent(i)){t.push({type:wO.rightParent,value:i}),n++;continue}if(Q.comma(i)){t.push({type:wO.comma,value:i}),n++;continue}if(Q.period(i)){t.push({type:wO.period,value:i}),n++;continue}if(Q.equal(i)){t.push({type:wO.equal,value:i}),n++;continue}if(Q.semicolon(i)){t.push({type:wO.semicolon,value:i}),n++;continue}if(Q.rightBracket(i)){t.push({type:wO.rightBracket,value:i}),n++;continue}if(Q.leftBracket(i)){let a=``;for(i=e[++n];r()&&!Q.rightBracket(i);)a+=i,i=e[++n];t.push({type:wO.string,value:a,quoted:!0}),n++;continue}if(Q.doubleQuote(i)){let a=``;for(i=e[++n];r()&&!Q.doubleQuote(i);)a+=i,i=e[++n];t.push({type:wO.string,value:a,quoted:!0}),n++;continue}if(Q.singleQuote(i)){let a=``;for(i=e[++n];r()&&!Q.singleQuote(i);)a+=i,i=e[++n];t.push({type:wO.string,value:a,quoted:!0}),n++;continue}if(Q.backtick(i)){let a=``;for(i=e[++n];r()&&!Q.backtick(i);)a+=i,i=e[++n];t.push({type:wO.string,value:a,quoted:!0}),n++;continue}if(Q.string(i)){let a=``;for(;r()&&Q.string(i)&&!Q.breakString(i)&&!(Q.dash(i)&&Q.dash(e[n+1]))&&!(Q.slash(i)&&Q.asterisk(e[n+1]));)a+=i,i=e[++n];t.push({type:wO.string,value:a});continue}n++}return t}var kO=`ARRAY.BIGINT.BINARY.BOOLEAN.BYTE.CHAR.DATE.DEC.DECIMAL.DOUBLE.FLOAT.GEOGRAPHY.GEOMETRY.INT.INTEGER.INTERVAL DAY TO HOUR.INTERVAL DAY TO MINUTE.INTERVAL DAY TO SECOND.INTERVAL DAY.INTERVAL HOUR TO MINUTE.INTERVAL HOUR TO SECOND.INTERVAL HOUR.INTERVAL MINUTE TO SECOND.INTERVAL MINUTE.INTERVAL MONTH.INTERVAL SECOND.INTERVAL YEAR TO MONTH.INTERVAL YEAR.INTERVAL.LONG.MAP.NUMERIC.OBJECT.REAL.SHORT.SMALLINT.STRING.STRUCT.TIMESTAMP_LTZ.TIMESTAMP_NTZ.TIMESTAMP.TINYINT.VARCHAR.VARIANT.VOID`.split(`.`),AO=`BIGINT.BINARY.BIT.BLOB.BOOL.BOOLEAN.CHAR BYTE.CHAR VARYING.CHAR.CHARACTER VARYING.CHARACTER.CLOB.DATE.DATETIME.DEC.DECIMAL.DOUBLE PRECISION.DOUBLE.ENUM.FIXED.FLOAT.FLOAT4.FLOAT8.GEOMETRY.GEOMETRYCOLLECTION.INET4.INET6.INT.INT1.INT2.INT3.INT4.INT8.INTEGER.JSON.LINESTRING.LONG CHAR VARYING.LONG CHARACTER VARYING.LONG VARBINARY.LONG VARCHAR.LONG VARCHARACTER.LONG.LONGBLOB.LONGTEXT.MEDIUMBLOB.MEDIUMINT.MEDIUMTEXT.MIDDLEINT.MULTILINESTRING.MULTIPOINT.MULTIPOLYGON.NATIONAL CHAR VARYING.NATIONAL CHAR.NATIONAL CHARACTER VARYING.NATIONAL CHARACTER.NATIONAL VARCHAR.NATIONAL VARCHARACTER.NCHAR VARCHAR.NCHAR VARCHARACTER.NCHAR VARYING.NCHAR.NUMBER.NUMERIC.NVARCHAR.POINT.POLYGON.RAW.REAL.SERIAL.SET.SMALLINT.SQL_TSI_YEAR.TEXT.TIME.TIMESTAMP.TINYBLOB.TINYINT.TINYTEXT.UUID.VARBINARY.VARCHAR.VARCHAR2.VARCHARACTER.VECTOR.XMLTYPE.YEAR`.split(`.`),jO=`BIGINT.BINARY VARYING.BINARY.BIT.CHAR VARYING.CHAR.CHARACTER VARYING.CHARACTER.DATE.DATETIME.DATETIME2.DATETIMEOFFSET.DEC.DECIMAL.DOUBLE PRECISION.FLOAT.GEOGRAPHY.GEOMETRY.HIERARCHYID.IMAGE.INT.INTEGER.JSON.MONEY.NATIONAL CHAR VARYING.NATIONAL CHAR.NATIONAL CHARACTER VARYING.NATIONAL CHARACTER.NATIONAL TEXT.NCHAR.NTEXT.NUMERIC.NVARCHAR.REAL.ROWVERSION.SMALLDATETIME.SMALLINT.SMALLMONEY.SQL_VARIANT.TEXT.TIME.TIMESTAMP.TINYINT.UNIQUEIDENTIFIER.VARBINARY.VARCHAR.VECTOR.XML`.split(`.`),MO=`BIGINT.BINARY.BIT.BLOB.BOOL.BOOLEAN.CHAR BYTE.CHAR.CHARACTER VARYING.CHARACTER.DATE.DATETIME.DEC.DECIMAL.DOUBLE PRECISION.DOUBLE.ENUM.FIXED.FLOAT.FLOAT4.FLOAT8.GEOMCOLLECTION.GEOMETRY.GEOMETRYCOLLECTION.INT.INT1.INT2.INT3.INT4.INT8.INTEGER.JSON.LINESTRING.LONG VARBINARY.LONG VARCHAR.LONG.LONGBLOB.LONGTEXT.MEDIUMBLOB.MEDIUMINT.MEDIUMTEXT.MIDDLEINT.MULTILINESTRING.MULTIPOINT.MULTIPOLYGON.NATIONAL CHAR VARYING.NATIONAL CHAR.NATIONAL CHARACTER VARYING.NATIONAL CHARACTER.NATIONAL VARCHAR.NCHAR VARCHAR.NCHAR.NUMERIC.NVARCHAR.POINT.POLYGON.REAL.SERIAL.SET.SMALLINT.TEXT.TIME.TIMESTAMP.TINYBLOB.TINYINT.TINYTEXT.VARBINARY.VARCHAR.VARCHARACTER.YEAR`.split(`.`),NO=`ANYDATA.BFILE.BINARY_DOUBLE.BINARY_FLOAT.BLOB.BOOL.BOOLEAN.CHAR VARYING.CHAR.CHARACTER VARYING.CHARACTER.CLOB.DATE.DEC.DECIMAL.DOUBLE PRECISION.FLOAT.INT.INTEGER.INTERVAL DAY TO SECOND.INTERVAL YEAR TO MONTH.JSON.LONG RAW.LONG VARCHAR.LONG.NATIONAL CHAR VARYING.NATIONAL CHAR.NATIONAL CHARACTER VARYING.NATIONAL CHARACTER.NCHAR VARYING.NCHAR.NCLOB.NUMBER.NUMERIC.NVARCHAR2.RAW.REAL.ROWID.SDO_GEOMETRY.SDO_GEORASTER.SDO_TOPO_GEOMETRY.SMALLINT.TIMESTAMP WITH LOCAL TIME ZONE.TIMESTAMP WITH TIME ZONE.TIMESTAMP.URIType.UROWID.VARCHAR.VARCHAR2.VECTOR.XMLType`.split(`.`),PO=`BIGINT.BIGSERIAL.BIT VARYING.BIT.BOOL.BOOLEAN.BOX.BPCHAR.BYTEA.CHAR.CHARACTER VARYING.CHARACTER.CID.CIDR.CIRCLE.DATE.DATEMULTIRANGE.DATERANGE.DECIMAL.DOUBLE PRECISION.FLOAT.FLOAT4.FLOAT8.INET.INT.INT2.INT4.INT4MULTIRANGE.INT4RANGE.INT8.INT8MULTIRANGE.INT8RANGE.INTEGER.INTERVAL DAY TO HOUR.INTERVAL DAY TO MINUTE.INTERVAL DAY TO SECOND.INTERVAL DAY.INTERVAL HOUR TO MINUTE.INTERVAL HOUR TO SECOND.INTERVAL HOUR.INTERVAL MINUTE TO SECOND.INTERVAL MINUTE.INTERVAL MONTH.INTERVAL SECOND.INTERVAL YEAR TO MONTH.INTERVAL YEAR.INTERVAL.JSON.JSONB.JSONPATH.LINE.LSEG.MACADDR.MACADDR8.MONEY.NAME.NUMERIC.NUMMULTIRANGE.NUMRANGE.OID.PATH.PG_LSN.PG_SNAPSHOT.POINT.POLYGON.REAL.REGCLASS.REGCOLLATION.REGCONFIG.REGDICTIONARY.REGNAMESPACE.REGOPER.REGOPERATOR.REGPROC.REGPROCEDURE.REGROLE.REGTYPE.SERIAL.SERIAL2.SERIAL4.SERIAL8.SMALLINT.SMALLSERIAL.TEXT.TID.TIME WITH TIME ZONE.TIME WITHOUT TIME ZONE.TIME.TIMESTAMP WITH TIME ZONE.TIMESTAMP WITHOUT TIME ZONE.TIMESTAMP.TIMESTAMPTZ.TIMETZ.TSMULTIRANGE.TSQUERY.TSRANGE.TSTZMULTIRANGE.TSTZRANGE.TSVECTOR.TXID_SNAPSHOT.UUID.VARBIT.VARCHAR.XID.XID8.XML`.split(`.`),FO=`ARRAY.BIGINT.BINARY.BOOLEAN.BYTEINT.CHAR VARYING.CHAR.CHARACTER.DATE.DATETIME.DEC.DECFLOAT.DECIMAL.DOUBLE PRECISION.DOUBLE.FILE.FLOAT.FLOAT4.FLOAT8.GEOGRAPHY.GEOMETRY.INT.INTEGER.MAP.NCHAR VARYING.NCHAR.NUMBER.NUMERIC.NVARCHAR.NVARCHAR2.OBJECT.REAL.SMALLINT.STRING.TEXT.TIME.TIMESTAMP WITH LOCAL TIME ZONE.TIMESTAMP WITH TIME ZONE.TIMESTAMP WITHOUT TIME ZONE.TIMESTAMP_LTZ.TIMESTAMP_NTZ.TIMESTAMP_TZ.TIMESTAMP.TIMESTAMPLTZ.TIMESTAMPNTZ.TIMESTAMPTZ.TINYINT.UNKNOWN.UUID.VARBINARY.VARCHAR.VARCHAR2.VARIANT.VECTOR`.split(`.`),IO=`BIGINT.BLOB.BOOLEAN.CHARACTER.CLOB.DATE.DATETIME.DECIMAL.DOUBLE PRECISION.DOUBLE.FLOAT.INT.INT2.INT8.INTEGER.MEDIUMINT.NATIVE CHARACTER.NCHAR.NUMERIC.NVARCHAR.REAL.SMALLINT.TEXT.TINYINT.UNSIGNED BIG INT.VARCHAR.VARYING CHARACTER`.split(`.`),LO=e=>t=>n=>t[n]?t[n].type===e:!1,$=e=>{let t=e.toUpperCase();return e=>n=>{let r=e[n];return r?!r.quoted&&r.value.toUpperCase()===t:!1}},RO=LO(wO.string),zO=LO(wO.equal),BO=LO(wO.period),VO=LO(wO.comma),HO=LO(wO.semicolon),UO=LO(wO.leftParent),WO=LO(wO.rightParent);wO.leftBracket,wO.rightBracket;var GO=$(`CREATE`),KO=$(`ALTER`),qO=$(`DROP`),JO=$(`USE`),YO=$(`RENAME`),XO=$(`DELETE`),ZO=$(`SELECT`),QO=$(`TABLE`),$O=$(`INDEX`),ek=$(`UNIQUE`),tk=$(`ADD`),nk=$(`PRIMARY`),rk=$(`KEY`),ik=$(`CONSTRAINT`),ak=$(`FOREIGN`),ok=$(`NOT`),sk=$(`NULL`),ck=$(`DEFAULT`),lk=$(`COMMENT`),uk=$(`REFERENCES`),dk=$(`ASC`),fk=$(`DESC`),pk=$(`ON`),mk=$(`AUTO_INCREMENT`),hk=$(`AUTOINCREMENT`),gk=$(`IF`),_k=$(`EXISTS`),vk=$(`ONLY`),yk=$(`IS`),bk=$(`COLUMN`),xk=$(`CHARACTER`),Sk=$(`SET`),Ck=$(`COLLATE`),wk=$(`ENFORCED`),Tk=$(`RELY`),Ek=$(`NORELY`),Dk=$(`DEFERRABLE`),Ok=$(`INITIALLY`),kk=$(`DEFERRED`),Ak=$(`IMMEDIATE`),jk=$(`IDENTITY`),Mk=$(`FUNCTION`),Nk=$(`CLUSTER`),Pk=$(`BY`),Fk=e=>{let t=wk(e),n=Tk(e),r=Ek(e),i=Dk(e),a=Ok(e),o=kk(e),s=Ak(e);return e=>t(e)||n(e)||r(e)||i(e)||a(e)||o(e)||s(e)},Ik=[`ARRAY`,`MAP`,`STRUCT`],Lk=e=>{let t=RO(e),n=e=>{let t=0;for(let n of e)n===`<`?t++:n===`>`&&t--;return t};return r=>{let i=e[r];if(!i||i.quoted||!t(r))return 0;let a=i.value.indexOf(`<`);if(a===-1||!Ik.includes(i.value.slice(0,a).toUpperCase()))return 0;let o=0;for(let t=r;t<e.length;t++)if(o+=n(e[t].value),o<=0)return t-r+1;return e.length-r}},Rk=e=>{let t=mk(e),n=hk(e),r=jk(e);return e=>t(e)||n(e)||r(e)},zk=e=>{let t=Nk(e),n=Pk(e);return e=>t(e)&&n(e+1)},Bk=e=>{let t=lk(e),n=pk(e);return e=>t(e)&&n(e+1)},Vk=e=>{let t=Bk(e),n=QO(e);return e=>t(e)&&n(e+2)},Hk=e=>{let t=Bk(e),n=bk(e);return e=>t(e)&&n(e+2)},Uk=e=>{let t=GO(e),n=KO(e),r=qO(e),i=JO(e),a=YO(e),o=XO(e),s=ZO(e),c=Bk(e);return e=>t(e)||n(e)||r(e)||i(e)||a(e)||o(e)||s(e)||c(e)},Wk=[`OR`,`REPLACE`,`TRANSIENT`,`TEMPORARY`,`TEMP`,`LOCAL`,`GLOBAL`,`VOLATILE`,`UNLOGGED`,`HYBRID`,`ICEBERG`,`DYNAMIC`,`EXTERNAL`],Gk=e=>{let t=GO(e),n=QO(e),r=RO(e),i=Mk(e),a=gk(e),o=ok(e),s=_k(e);return c=>{if(!t(c))return 0;let l=c+1;for(;l<e.length&&!n(l);){let t=e[l];if(!r(l)||t.quoted||!Wk.includes(t.value.toUpperCase()))return 0;l++}return!n(l)||i(l+1)?0:(l++,a(l)&&o(l+1)&&s(l+2)&&(l+=3),l-c)}},Kk=e=>{let t=xk(e),n=Sk(e);return e=>t(e)&&n(e+1)},qk=e=>{let t=Gk(e);return e=>t(e)>0},Jk=e=>{let t=GO(e),n=$O(e),r=ek(e);return e=>t(e)&&r(e+1)&&n(e+2)},Yk=e=>{let t=GO(e),n=$O(e),r=Jk(e);return e=>t(e)&&n(e+1)||r(e)},Xk=e=>{let t=KO(e),n=QO(e);return e=>t(e)&&n(e+1)},Zk=e=>{let t=RO(e),n=BO(e);return e=>{if(!t(e))return 0;let r=e+1;for(;n(r)&&t(r+1);)r+=2;return r-e}},Qk=e=>{let t=Xk(e),n=vk(e),r=tk(e),i=ik(e),a=RO(e),o=Zk(e),s=(e,t)=>{let n=t,s=o(n);return!s||(n+=s,!r(n))?0:(n++,i(n)&&a(n+1)&&(n+=2),n-e)};return e=>{if(!t(e))return{length:0,only:!1};let r=e+2;if(n(r)){let t=s(e,r+1);if(t)return{length:t,only:!0}}return{length:s(e,r),only:!1}}},$k=e=>{let t=Qk(e);return e=>t(e).length},eA=e=>{let t=Qk(e);return e=>t(e).only},tA=e=>{let t=$k(e),n=nk(e),r=rk(e);return e=>{let i=t(e);return i>0&&n(e+i)&&r(e+i+1)}},nA=e=>{let t=$k(e),n=ak(e),r=rk(e);return e=>{let i=t(e);return i>0&&n(e+i)&&r(e+i+1)}},rA=e=>{let t=$k(e),n=ek(e);return e=>{let r=t(e);return r>0&&n(e+r)}},iA=Array.from(new Set([...kO,...AO,...jO,...MO,...NO,...PO,...FO,...IO].map(e=>e.toUpperCase()))),aA=(e=>{let t=new Map;for(let n of e){let e=n.split(` `),r=t.get(e[0])??[];r.push(e),t.set(e[0],r)}for(let e of t.values())e.sort((e,t)=>t.length-e.length);return t})(iA),oA=e=>{let t=RO(e),n=UO(e),r=WO(e),i=t=>{let i=0;for(let a=t;a<e.length;a++)if(n(a))i++;else if(r(a)&&(i--,i===0))return a+1;return e.length},a=(r,a)=>{let o=r;for(let[r,s]of a.entries()){let a=e[o];if(!a||!t(o)||r>0&&a.quoted||a.value.toUpperCase()!==s)return 0;o++,n(o)&&(o=i(o))}return o-r};return n=>{let r=e[n];if(!r||!t(n))return 0;let i=r.value.toUpperCase();for(let e of aA.get(i)??[]){let t=a(n,e);if(t)return t}return+!!iA.includes(i)}};function sA(e,t){let n=Uk(e),r=RO(e),i=UO(e),a=WO(e),o=BO(e),s=HO(e),c=zO(e),l=lk(e),u=zk(e),d=Gk(e),f=()=>t.value<e.length,p={type:SO.createTable,name:``,comment:``,columns:[],indexes:[],foreignKeys:[]},m=d(t.value);t.value+=m===0?2:m;let h=!1,g=!0;for(;f()&&!n(t.value);){let n=e[t.value];if(s(t.value)){t.value++;break}if(p.name&&u(t.value)){if(t.value+=2,r(t.value)&&i(t.value+1)&&t.value++,i(t.value)){let e=0;for(;f();){if(i(t.value))e++;else if(a(t.value)&&(e--,e===0)){t.value++;break}t.value++}}continue}if(i(t.value)){if(t.value++,h||!g){let e=1;for(;f()&&e>0;)i(t.value)?e++:a(t.value)&&e--,t.value++;continue}let{columns:n,indexes:r,foreignKeys:o}=cA(e,t);p.columns=n,p.indexes=r,p.foreignKeys=o,h=!0;continue}if(r(t.value)&&!p.name){for(p.name=n.value,g=!0,t.value++;o(t.value);){if(!r(t.value+1)){t.value++;break}p.name=e[t.value+1].value,t.value+=2}continue}if(l(t.value)){n=e[++t.value],c(t.value)&&(n=e[++t.value]),r(t.value)&&(p.comment=n.value,t.value++),g=!1;continue}g=!1,t.value++}return p}function cA(e,t){let n=RO(e),r=UO(e),i=WO(e),a=VO(e),o=ik(e),s=$O(e),c=nk(e),l=ak(e),u=Rk(e),d=ek(e),f=sk(e),p=ok(e),m=ck(e),h=lk(e),g=fk(e),_=dk(e),v=rk(e),ee=zO(e),te=Kk(e),ne=Ck(e),re=Fk(e),ie=oA(e),ae=Lk(e),oe=()=>t.value<e.length,se=[],ce=[],le=[],ue=[],y=[],b={name:``,dataType:``,default:``,comment:``,primaryKey:!1,autoIncrement:!1,unique:!1,nullable:!0};for(;oe();){let x=e[t.value],de=ae(t.value);if(de){let n=t.value+de,r=[];for(;t.value<n;)r.push(a(t.value)?`,`:e[t.value].value),t.value++;b.dataType=r.reduce((e,t)=>!e||t===`,`?e+t:`${e} ${t}`,``);continue}if(n(t.value)&&!b.name&&!o(t.value)&&!c(t.value)&&!l(t.value)&&!d(t.value)&&!s(t.value)&&!v(t.value)&&!p(t.value)&&!re(t.value)){b.name=x.value,t.value++;continue}if(r(t.value)){let e=0;for(;oe();){if(r(t.value))e++;else if(i(t.value)&&(e--,e===0)){t.value++;break}t.value++}continue}if(o(t.value)){x=e[++t.value],n(t.value)&&t.value++;continue}if(c(t.value)){if(x=e[++t.value],v(t.value)){if(x=e[++t.value],r(t.value)){for(x=e[++t.value];oe()&&!i(t.value);)n(t.value)&&ue.push(x.value.toUpperCase()),x=e[++t.value];t.value++}else b.primaryKey=!0}continue}if(l(t.value)){let n=lA(e,t);n&&le.push(n);continue}if(s(t.value)||v(t.value)){if(x=e[++t.value],n(t.value)){let o=x.value,s=[];if(x=e[++t.value],r(t.value)){x=e[++t.value];let r={name:``,sort:CO.asc};for(;oe()&&!i(t.value);)n(t.value)&&!g(t.value)&&!_(t.value)&&(r.name=x.value),g(t.value)&&(r.sort=CO.desc),a(t.value)&&(s.push(r),r={name:``,sort:CO.asc}),x=e[++t.value];!s.includes(r)&&r.name!==``&&s.push(r),s.length&&ce.push({name:o,unique:!1,columns:s}),t.value++}}continue}if(d(t.value)){if(x=e[++t.value],v(t.value)&&(x=e[++t.value]),n(t.value)&&(x=e[++t.value]),r(t.value)){for(x=e[++t.value];oe()&&!i(t.value);)n(t.value)&&y.push(x.value.toUpperCase()),x=e[++t.value];t.value++}else b.unique=!0;continue}if(p(t.value)){x=e[++t.value],f(t.value)?(b.nullable=!1,t.value++):re(t.value)&&t.value++;continue}if(re(t.value)){t.value++;continue}if(m(t.value)){x=e[++t.value],n(t.value)&&(b.default=x.value,t.value++);continue}if(h(t.value)){x=e[++t.value],ee(t.value)&&(x=e[++t.value]),n(t.value)&&(b.comment=x.value,t.value++);continue}if(u(t.value)){b.autoIncrement=!0,t.value++;continue}if(te(t.value)){t.value+=2,n(t.value)&&t.value++;continue}if(ne(t.value)){t.value++,ee(t.value)&&t.value++,n(t.value)&&t.value++;continue}let S=ie(t.value);if(S){let a=t.value+S,o=``,s=0;for(;t.value<a;)x=e[t.value],r(t.value)?(o+=`(`,s++):i(t.value)?(o+=`)`,s--):o+=s?n(t.value)&&(n(t.value-1)||i(t.value-1))?` ${x.value}`:x.value:o?` ${x.value}`:x.value,t.value++;for(;s>0;)o+=`)`,s--;b.dataType=o;continue}if(a(t.value)){(b.name||b.dataType)&&se.push(b),b={name:``,dataType:``,default:``,comment:``,primaryKey:!1,autoIncrement:!1,unique:!1,nullable:!0},t.value++;continue}if(i(t.value)){t.value++;break}t.value++}return!se.includes(b)&&(b.name||b.dataType)&&se.push(b),se.forEach(e=>{ue.includes(e.name.toUpperCase())&&(e.primaryKey=!0),y.includes(e.name.toUpperCase())&&(e.unique=!0)}),{columns:se,indexes:ce,foreignKeys:le}}function lA(e,t){let n=RO(e),r=UO(e),i=WO(e),a=uk(e),o=BO(e),s=rk(e),c=()=>t.value<e.length,l={columnNames:[],refTableName:``,refColumnNames:[]},u=e[++t.value];if(s(t.value)){if(u=e[++t.value],r(t.value)){for(u=e[++t.value];c()&&!i(t.value);)n(t.value)&&l.columnNames.push(u.value),u=e[++t.value];u=e[++t.value]}if(a(t.value)&&(u=e[++t.value],n(t.value))){for(l.refTableName=u.value,t.value++;o(t.value);){if(!n(t.value+1)){t.value++;break}l.refTableName=e[t.value+1].value,t.value+=2}if(u=e[t.value],r(t.value)){for(u=e[++t.value];c()&&!i(t.value);)n(t.value)&&l.refColumnNames.push(u.value),u=e[++t.value];u=e[++t.value]}}if(l.columnNames.length&&l.columnNames.length===l.refColumnNames.length)return l}return null}function uA(e,t){let n=Uk(e),r=HO(e),i=RO(e),a=ik(e),o=BO(e),s=QO(e),c=ak(e),l=eA(e)(t.value),u=()=>t.value<e.length,d={type:SO.alterTableAddForeignKey,name:``,columnNames:[],refTableName:``,refColumnNames:[]};for(t.value++;u()&&!n(t.value);){let n=e[t.value];if(r(t.value)){t.value++;break}if(s(t.value)){if(n=e[++t.value],l&&(n=e[++t.value]),i(t.value))for(d.name=n.value,t.value++;o(t.value);){if(!i(t.value+1)){t.value++;break}d.name=e[t.value+1].value,t.value+=2}continue}if(a(t.value)){n=e[++t.value],i(t.value)&&t.value++;continue}if(c(t.value)){let n=lA(e,t);n&&(d.columnNames=n.columnNames,d.refTableName=n.refTableName,d.refColumnNames=n.refColumnNames);continue}t.value++}return d}function dA(e,t){let n=Uk(e),r=HO(e),i=RO(e),a=UO(e),o=WO(e),s=ik(e),c=nk(e),l=BO(e),u=rk(e),d=QO(e),f=eA(e)(t.value),p=()=>t.value<e.length,m={type:SO.alterTableAddPrimaryKey,name:``,columnNames:[]};for(t.value++;p()&&!n(t.value);){let n=e[t.value];if(r(t.value)){t.value++;break}if(d(t.value)){if(n=e[++t.value],f&&(n=e[++t.value]),i(t.value))for(m.name=n.value,t.value++;l(t.value);){if(!i(t.value+1)){t.value++;break}m.name=e[t.value+1].value,t.value+=2}continue}if(s(t.value)){n=e[++t.value],i(t.value)&&t.value++;continue}if(c(t.value)){if(n=e[++t.value],u(t.value)&&(n=e[++t.value],a(t.value))){for(n=e[++t.value];p()&&!o(t.value);)i(t.value)&&m.columnNames.push(n.value),n=e[++t.value];n=e[++t.value]}continue}t.value++}return m}function fA(e,t){let n=Uk(e),r=HO(e),i=RO(e),a=ik(e),o=BO(e),s=QO(e),c=ek(e),l=UO(e),u=WO(e),d=eA(e)(t.value),f=()=>t.value<e.length,p={type:SO.alterTableAddUnique,name:``,columnNames:[]};for(t.value++;f()&&!n(t.value);){let n=e[t.value];if(r(t.value)){t.value++;break}if(s(t.value)){if(n=e[++t.value],d&&(n=e[++t.value]),i(t.value))for(p.name=n.value,t.value++;o(t.value);){if(!i(t.value+1)){t.value++;break}p.name=e[t.value+1].value,t.value+=2}continue}if(a(t.value)){n=e[++t.value],i(t.value)&&t.value++;continue}if(c(t.value)){if(n=e[++t.value],l(t.value)){for(n=e[++t.value];f()&&!u(t.value);)i(t.value)&&p.columnNames.push(n.value),n=e[++t.value];t.value++}continue}t.value++}return p}function pA(e,t){let n=Uk(e),r=RO(e),i=BO(e),a=HO(e),o=yk(e),s=sk(e),c=()=>t.value<e.length,l={type:SO.commentOnColumn,tableName:``,columnName:``,comment:``};t.value+=3;let u=[],d=!1;for(;c()&&!n(t.value);){let n=e[t.value];if(a(t.value)){t.value++;break}if(o(t.value)){if(d=!0,n=e[++t.value],s(t.value)){t.value++;continue}r(t.value)&&(l.comment=n.value,t.value++);continue}if(i(t.value)){t.value++;continue}if(r(t.value)&&!d){u.push(n.value),t.value++;continue}t.value++}return l.columnName=u.length?u[u.length-1]:``,l.tableName=u.length>1?u[u.length-2]:``,l}function mA(e,t){let n=Uk(e),r=RO(e),i=BO(e),a=HO(e),o=yk(e),s=sk(e),c=()=>t.value<e.length,l={type:SO.commentOnTable,name:``,comment:``};t.value+=3;let u=!1;for(;c()&&!n(t.value);){let n=e[t.value];if(a(t.value)){t.value++;break}if(o(t.value)){if(u=!0,n=e[++t.value],s(t.value)){t.value++;continue}r(t.value)&&(l.comment=n.value,t.value++);continue}if(i(t.value)){t.value++;continue}if(r(t.value)&&!u){l.name=n.value,t.value++;continue}t.value++}return l}function hA(e,t){let n=Uk(e),r=HO(e),i=ek(e),a=RO(e),o=UO(e),s=WO(e),c=VO(e),l=$O(e),u=pk(e),d=fk(e),f=dk(e),p=Jk(e),m=()=>t.value<e.length,h={type:SO.createIndex,name:``,unique:i(t.value+1),tableName:``,columns:[]};for(t.value+=p(t.value)?2:1;m()&&!n(t.value);){let n=e[t.value];if(r(t.value)){t.value++;break}if(l(t.value)){n=e[++t.value],a(t.value)&&(h.name=n.value);continue}if(u(t.value)){if(n=e[++t.value],a(t.value)&&(h.tableName=n.value,n=e[++t.value],o(t.value))){n=e[++t.value];let r={name:``,sort:CO.asc};for(;m()&&!s(t.value);)a(t.value)&&!d(t.value)&&!f(t.value)&&(r.name=n.value),d(t.value)&&(r.sort=CO.desc),c(t.value)&&(h.columns.push(r),r={name:``,sort:CO.asc}),n=e[++t.value];!h.columns.includes(r)&&r.name!==``&&h.columns.push(r),t.value++}continue}t.value++}return h}function gA(e){let t=[],n={value:0},r=()=>n.value<e.length,i=qk(e),a=Yk(e),o=tA(e),s=nA(e),c=rA(e),l=Vk(e),u=Hk(e);for(;r();){if(i(n.value)){t.push(sA(e,n));continue}if(a(n.value)){t.push(hA(e,n));continue}if(o(n.value)){t.push(dA(e,n));continue}if(s(n.value)){t.push(uA(e,n));continue}if(c(n.value)){t.push(fA(e,n));continue}if(l(n.value)){t.push(mA(e,n));continue}if(u(n.value)){t.push(pA(e,n));continue}n.value++}return t}var _A=e=>gA(OO(e));function vA(e,t,n){let r=Hp({}),i=bA(yA(_A(e))),a=Hh(i.length*100);return r.settings.width=a,r.settings.height=a,i.forEach(e=>xA(r,e,t)),SA(r,i),CA(r,i),Hm(n?n(r):r)}function yA(e){let t={tables:[],indexes:[],primaryKeys:[],foreignKeys:[],uniques:[],tableComments:[],columnComments:[]};for(let n of e)switch(n.type){case SO.createTable:n.name&&t.tables.push(n);break;case SO.createIndex:n.tableName&&n.columns.length&&t.indexes.push(n);break;case SO.alterTableAddPrimaryKey:n.name&&n.columnNames.length&&t.primaryKeys.push(n);break;case SO.alterTableAddForeignKey:n.name&&n.columnNames.length&&n.refTableName&&n.refColumnNames.length&&n.columnNames.length===n.refColumnNames.length&&t.foreignKeys.push(n);break;case SO.alterTableAddUnique:n.name&&n.columnNames.length&&t.uniques.push(n);break;case SO.commentOnTable:n.name&&t.tableComments.push(n);break;case SO.commentOnColumn:n.tableName&&n.columnName&&t.columnComments.push(n)}return t}function bA({tables:e,indexes:t,primaryKeys:n,foreignKeys:r,uniques:i,tableComments:a,columnComments:o}){return t.forEach(t=>{let n=vw(e,t.tableName);n&&n.indexes.push({name:t.name,unique:t.unique,columns:t.columns})}),n.forEach(t=>{let n=vw(e,t.name);n&&t.columnNames.forEach(e=>{let t=vw(n.columns,e);t&&(t.primaryKey=!0)})}),i.forEach(t=>{let n=vw(e,t.name);n&&t.columnNames.forEach(e=>{let t=vw(n.columns,e);t&&(t.unique=!0)})}),r.forEach(t=>{let n=vw(e,t.name);n&&n.foreignKeys.push({columnNames:t.columnNames,refTableName:t.refTableName,refColumnNames:t.refColumnNames})}),a.forEach(({name:t,comment:n})=>{let r=vw(e,t);r&&(r.comment=n)}),o.forEach(({tableName:t,columnName:n,comment:r})=>{let i=vw(e,t);if(!i)return;let a=vw(i.columns,n);a&&(a.comment=r)}),e}function xA({doc:e,collections:t},n,{toWidth:r}){let i=OS({name:n.name,comment:n.comment,ui:{widthName:U(r(n.name)),widthComment:U(r(n.comment))}});n.columns.forEach(e=>{let n=aC({tableId:i.id,name:e.name,comment:e.comment,dataType:e.dataType,default:e.default,options:(e.autoIncrement?z.autoIncrement:0)|(e.primaryKey?z.primaryKey:0)|(e.unique?z.unique:0)|(e.nullable?0:z.notNull),ui:{widthName:U(r(e.name)),widthComment:U(r(e.comment)),widthDataType:U(r(e.dataType)),widthDefault:U(r(e.default)),keys:e.primaryKey?B.primaryKey:0}});i.columnIds.push(n.id),i.seqColumnIds.push(n.id),N(t).collection(`tableColumnEntities`).setOne(n)}),e.tableIds.push(i.id),N(t).collection(`tableEntities`).setOne(i)}function SA({doc:e,collections:t},n){let r=N(t).collection(`tableEntities`).selectByIds(e.tableIds),i=N(t).collection(`tableColumnEntities`);n.forEach(n=>{if(!n.foreignKeys.length)return;let a=vw(r,n.name);if(!a)return;let o=i.selectByIds(a.columnIds);n.foreignKeys.forEach(n=>{let s=vw(r,n.refTableName);if(!s)return;let c=i.selectByIds(s.columnIds),l=[],u=[];n.refColumnNames.forEach(e=>{let t=vw(c,e);t&&l.push(t)}),n.columnNames.forEach(e=>{let t=vw(o,e);t&&(u.push(t),G(t.ui.keys,B.primaryKey)?t.ui.keys|=B.foreignKey:t.ui.keys=B.foreignKey)});let d=sS({identification:!u.some(e=>!(G(e.ui.keys,B.primaryKey)&&G(e.ui.keys,B.foreignKey))),relationshipType:Zm.ZeroN,start:{tableId:s.id,columnIds:l.map(e=>e.id)},end:{tableId:a.id,columnIds:u.map(e=>e.id)}});e.relationshipIds.push(d.id),N(t).collection(`relationshipEntities`).setOne(d)})})}function CA({doc:e,collections:t},n){let r=N(t).collection(`tableEntities`).selectByIds(e.tableIds);n.forEach(n=>{n.indexes.forEach(i=>{let a=vw(r,n.name);if(!a)return;let o=N(t).collection(`tableColumnEntities`).selectByIds(a.columnIds),s=[],c=Zb({name:i.name,tableId:a.id,unique:i.unique});i.columns.forEach(e=>{let t=vw(o,e.name);if(!t)return;let n=mx({indexId:c.id,columnId:t.id,orderType:e.sort===CO.asc?$m.ASC:$m.DESC});s.push(n)}),s.length!==0&&(s.forEach(e=>{c.indexColumnIds.push(e.id),c.seqIndexColumnIds.push(e.id),N(t).collection(`indexColumnEntities`).setOne(e)}),e.indexIds.push(c.id),N(t).collection(`indexEntities`).setOne(c))})})}function wA({doc:e,collections:t},n){let r=V(n);return N(t).collection(`relationshipEntities`).selectByIds(e.relationshipIds).filter(({start:e,end:t})=>r(e.tableId)&&r(t.tableId)).map(({relationshipType:e,start:t,end:n})=>({relationshipType:e,start:{tableId:t.tableId,columnIds:[...t.columnIds]},end:{tableId:n.tableId,columnIds:[...n.columnIds]}}))}function TA({doc:e,collections:t},n){let r=V(n),i=N(t).collection(`indexColumnEntities`),a=[];for(let n of N(t).collection(`indexEntities`).selectByIds(e.indexIds)){if(!r(n.tableId))continue;let e=[],t=!0;for(let r of n.indexColumnIds){let n=i.selectById(r);if(!n){t=!1;break}e.push({columnId:n.columnId,orderType:n.orderType})}t&&a.push({tableId:n.tableId,name:n.name,unique:n.unique,indexColumns:e})}return a}new TextEncoder;function EA({tables:e,columns:t,memos:n,relationships:r,indexes:i},a){let o=[],s=[],c=[],l=new Map(t.map(e=>[e.sourceId,e])),u=new Map,d=new Map;for(let t of e){let e=a.get(t.sourceId);if(!e)continue;let n=w();s.push(n),u.set(t.sourceId,n),o.push(kS({id:n,ui:{x:e.x,y:e.y,zIndex:e.zIndex,color:t.ui.color}}),LS({id:n,value:t.name}),zS({id:n,value:t.comment}));for(let e of t.columnIds){let t=l.get(e);if(!t)continue;let r={id:w(),tableId:n};d.set(e,r.id),o.push(oC(r),uC({...r,value:t.name}),mC({...r,value:t.dataType}),gC({...r,value:t.default}),fC({...r,value:t.comment}),bC({...r,value:G(t.options,z.primaryKey)}),wC({...r,value:G(t.options,z.notNull)}),SC({...r,value:G(t.options,z.unique)}),vC({...r,value:G(t.options,z.autoIncrement)}))}}for(let e of r){let t=u.get(e.start.tableId),n=u.get(e.end.tableId);if(!t||!n)continue;let r=DA(e.start.columnIds,d),i=DA(e.end.columnIds,d);!r||!i||o.push(cS({id:w(),relationshipType:e.relationshipType,start:{tableId:t,columnIds:r},end:{tableId:n,columnIds:i}}))}for(let e of i){let t=u.get(e.tableId);if(!t)continue;let n=DA(e.indexColumns.map(({columnId:e})=>e),d);if(!n)continue;let r=w();o.push(Qb({id:r,tableId:t}),nx({id:r,tableId:t,value:e.name}),ix({id:r,tableId:t,value:e.unique})),e.indexColumns.forEach(({orderType:e},i)=>{let a=w(),s=n[i];o.push(gx({id:a,indexId:r,tableId:t,columnId:s}),Sx({id:a,indexId:r,columnId:s,value:e}))})}for(let e of n){let t=a.get(e.sourceId);if(!t)continue;let n=w();c.push(n),o.push(Nx({id:n,ui:{x:t.x,y:t.y,zIndex:t.zIndex,color:e.ui.color,width:e.ui.width,height:e.ui.height}}),Vx({id:n,value:e.value}))}return{actions:o,tableIds:s,memoIds:c}}function DA(e,t){let n=[];for(let r of e){let e=t.get(r);if(!e)return null;n.push(e)}return n}function OA(e,t,n=[]){let{doc:{relationshipIds:r},collections:i}=t,a=e.pop();return a&&(n.some(({columnId:e})=>e===a.columnId)||(n.push(a),N(i).collection(`relationshipEntities`).selectByIds(r).forEach(({id:t,start:n,end:r})=>{let i=n.columnIds.indexOf(a.columnId);if(i!==-1){let n=r.columnIds[i];e.push({columnId:n,relationshipIds:[t]})}else{let i=r.columnIds.indexOf(a.columnId);if(i!==-1){let r=n.columnIds[i];e.push({columnId:r,relationshipIds:[t]})}}})),OA(e,t,n)),n}const kA=eg.flow,AA={focusFlowTableAction$:e=>function*({editor:t,settings:n}){e.length&&(n.canvasType!==Um.visualization&&(yield _v({value:Um.visualization})),t.visualizationMode!==tg.flow&&(yield Mg({value:tg.flow})),yield t.views.flow?Ag({tableIds:e,kind:kA}):fg({kind:kA,centerIds:e}))}};function jA(e){return Object.entries(e).reduce((e,[t,n])=>(n===Qh.table?e.tableIds.push(t):n===Qh.memo&&e.memoIds.push(t),e),{tableIds:[],memoIds:[]})}const MA=e=>function*(){yield My(),yield Fy({value:e})},NA=e=>function*(){yield Ly(),yield zy({value:e})},PA=(e,t,n=`document`)=>function*(r){let{tableIds:i,memoIds:a}=jA(r.editor.selectedMap),{zoomLevel:o}=F_(r,n),s=e/o,c=t/o;if(n!==`document`){i.length&&(yield wg({ids:i,movementX:s,movementY:c,kind:n}));return}i.length&&(yield jS({ids:i,movementX:s,movementY:c})),a.length&&(yield Fx({ids:a,movementX:s,movementY:c}))},FA=()=>function*(){yield iw(),yield YC()},IA=(e,t)=>function*(n){yield*RA(n,{input:{tables:e.tables,columns:e.columns,memos:e.memos,relationships:e.relationships??[],indexes:e.indexes??[]},offset:{x:50*t,y:50*t},escapeCollision:!0})},LA=({tableIds:e,memoIds:t,offset:n,escapeCollision:r})=>function*(i){yield*RA(i,{input:VA(i,{tableIds:e??[],memoIds:t??[]}),offset:{x:Ve(n.x,4),y:Ve(n.y,4)},escapeCollision:r})};function*RA(e,{input:t,offset:n,escapeCollision:r}){if(t.tables.length===0&&t.memos.length===0)return;let{settings:i,doc:{tableIds:a,memoIds:o},collections:s}=e,c=N(s).collection(`tableEntities`),l=N(s).collection(`memoEntities`),{actions:u,tableIds:d,memoIds:f}=EA(t,BA(tw({entities:[...t.tables.map(zA),...t.memos.map(zA)],offset:n,escapeCollision:r,settings:i,tables:c.selectByIds(a),memos:l.selectByIds(o),findSource:e=>c.selectById(e)??l.selectById(e)})));yield UA(),yield u,yield Oy({...d.reduce((e,t)=>(e[t]=Qh.table,e),{}),...f.reduce((e,t)=>(e[t]=Qh.memo,e),{})})}const zA=({sourceId:e,ui:{x:t,y:n,zIndex:r}})=>({sourceId:e,ui:{x:t,y:n,zIndex:r}});function BA(e){return new Map(Array.from(e,([e,{x:t,y:n,zIndex:r}])=>[e,{x:Ve(t,4),y:Ve(n,4),zIndex:r}]))}function VA(e,{tableIds:t,memoIds:n}){let{collections:r}=e,i=N(r).collection(`tableEntities`).selectByIds(t),a=N(r).collection(`memoEntities`).selectByIds(n),o=i.flatMap(e=>N(r).collection(`tableColumnEntities`).selectByIds(e.columnIds)),s=i.map(({id:e})=>e);return{tables:i.map(e=>({sourceId:e.id,name:e.name,comment:e.comment,columnIds:[...e.columnIds],ui:{x:e.ui.x,y:e.ui.y,zIndex:e.ui.zIndex,widthName:e.ui.widthName,widthComment:e.ui.widthComment,color:e.ui.color}})),columns:o.map(e=>({sourceId:e.id,tableId:e.tableId,name:e.name,comment:e.comment,dataType:e.dataType,default:e.default,options:e.options,ui:{keys:e.ui.keys,widthName:e.ui.widthName,widthComment:e.ui.widthComment,widthDataType:e.ui.widthDataType,widthDefault:e.ui.widthDefault}})),memos:a.map(e=>({sourceId:e.id,value:e.value,ui:{x:e.ui.x,y:e.ui.y,width:e.ui.width,height:e.ui.height,zIndex:e.ui.zIndex,color:e.ui.color}})),relationships:wA(e,s),indexes:TA(e,s)}}const HA=(e,t=`document`)=>function*(n){let{collections:r}=n,{tableIds:i,memoIds:a}=Kg(n,t),o={...N(r).collection(`tableEntities`).selectByIds(i).reduce((r,i)=>{let a=T_(n,i,t);return hw(e,{x:a.x+a.width/2-15,y:a.y+a.height/2-15,w:15,h:15})&&(r[i.id]=Qh.table),r},{}),...N(r).collection(`memoEntities`).selectByIds(a).reduce((t,n)=>{let r=n_(n),i=r_(n);return hw(e,{x:n.ui.x+r/2-15,y:n.ui.y+i/2-15,w:15,h:15})&&(t[n.id]=Qh.memo),t},{})};yield UA(),Be(o)||(yield Oy(o))},UA=()=>function*(){yield Ey(),yield Gy()},WA=(e,t)=>function*(n){let{editor:{focusTable:r}}=n;r&&(e===ng.Tab&&!t&&(fy(r.focusType)&&uy(n)&&!$v(n)||!fy(r.focusType)&&ey(n)&&ny(n))?yield uw(r.tableId):yield qy({moveKey:e,shiftKey:t}))},GA=e=>function*({editor:t}){t.drawRelationship?.relationshipType===e?yield db():yield sb({relationshipType:e})},KA=e=>function*({collections:t}){let n=N(t).collection(`tableEntities`).selectById(e);if(n){if(!N(t).collection(`tableColumnEntities`).selectByIds(n.columnIds).some(e=>G(e.options,z.primaryKey))){let t=w();yield oC({tableId:e,id:t}),yield bC({tableId:e,id:t,value:!0}),yield Uy({tableId:e,columnId:t,focusType:W.columnName,$mod:!1,shiftKey:!1})}yield lb({tableId:e})}},qA=e=>function*({editor:{selectedMap:t},collections:n}){let{tableIds:r,memoIds:i}=jA(t),a=N(n).collection(`tableEntities`).selectByIds(r),o=N(n).collection(`memoEntities`).selectByIds(i);yield a.map(t=>VS({id:t.id,color:e,prevColor:t.ui.color})),yield o.map(t=>Ux({id:t.id,color:e,prevColor:t.ui.color}))},JA=e=>function*({settings:t},n){yield MA(vA(e,n,e=>(e.settings={...e.settings,...he(ae(t),[`width`,`height`,`originX`,`originY`,`scrollTop`,`scrollLeft`,`zoomLevel`])},e))),yield GS()},YA=e=>function*({settings:t},n){yield MA(xO(e,n,e=>(e.settings={...e.settings,...he(ae(t),[`width`,`height`,`originX`,`originY`,`scrollTop`,`scrollLeft`,`zoomLevel`])},e))),yield GS()},XA=e=>function*({settings:t},n){yield MA(ZE(e,n,e=>(e.settings={...e.settings,...he(ae(t),[`width`,`height`,`originX`,`originY`,`scrollTop`,`scrollLeft`,`zoomLevel`])},e))),yield GS()},ZA=e=>function*({settings:t},n){yield MA(VT(e,n,e=>(e.settings={...e.settings,...he(ae(t),[`width`,`height`,`originX`,`originY`,`scrollTop`,`scrollLeft`,`zoomLevel`])},e))),yield GS()},QA=e=>function*({editor:{focusTable:t}}){!t||!t.columnId||(yield Tb({tableId:t.tableId,columnIds:e?[...t.selectColumnIds]:[t.columnId]}))},$A=(e,t)=>function*({editor:{draggableColumn:n},collections:r}){if(!n||n.columnIds.length===0)return;let{tableId:i,columnIds:a}=n,o=N(r).collection(`tableEntities`),s=o.selectById(i);if(!s)return;if(t===i){let t=s.columnIds.indexOf(a[0]);if(t===-1)return;let n=s.columnIds.indexOf(e);if(n===-1)return;let r=a.map(t=>EC({tableId:i,id:t,targetId:e}));t<n&&r.reverse(),yield r;return}if(!o.selectById(t))return;let c=N(r).collection(`tableColumnEntities`).selectByIds(a);if(c.length===0)return;yield dw(i,a);let l=c.map(()=>w());for(let n=0;n<c.length;n++){let r=c[n],i=l[n],a={id:i,tableId:t};yield[oC(a),uC({...a,value:r.name}),mC({...a,value:r.dataType}),gC({...a,value:r.default}),fC({...a,value:r.comment}),bC({...a,value:G(r.options,z.primaryKey)}),wC({...a,value:G(r.options,z.notNull)}),SC({...a,value:G(r.options,z.unique)}),vC({...a,value:G(r.options,z.autoIncrement)}),EC({...a,targetId:e}),Uy({tableId:t,columnId:i,focusType:W.columnName,$mod:!0,shiftKey:!1})]}yield Tb({tableId:t,columnIds:l})},ej=e=>function*(t){let{columnIds:n,relationshipIds:r}=OA([{columnId:e,relationshipIds:[]}],t).reduce((e,{columnId:t,relationshipIds:n})=>(e.columnIds.push(t),e.relationshipIds.push(...n),e),{columnIds:[],relationshipIds:[]});yield hb({columnIds:ye(n)}),yield _b({relationshipIds:ye(r)})},tj=()=>function*(){yield hb({columnIds:[]}),yield _b({relationshipIds:[]})},nj={loadJsonAction$:MA,initialLoadJsonAction$:NA,moveAllAction$:PA,removeSelectedAction$:FA,pasteEntitiesAction$:IA,duplicateAction$:LA,dragSelectAction$:HA,unselectAllAction$:UA,focusMoveTableAction$:WA,drawStartRelationshipAction$:GA,drawStartAddRelationshipAction$:KA,changeColorAllAction$:qA,loadSchemaSQLAction$:JA,loadSchemaGraphQLAction$:YA,loadSchemaDBMLAction$:XA,loadSchemaAMLAction$:ZA,dragstartColumnAction$:QA,dragoverColumnAction$:$A,columnKeyHoverStartAction$:ej,columnKeyHoverEndAction$:tj,...AA},rj={addIndexAction$:e=>function*(){yield Qb({id:w(),tableId:e})},changeIndexUniqueAction$:e=>function*({collections:t}){let n=N(t).collection(`indexEntities`).selectById(e);n&&(yield ix({id:e,tableId:n.tableId,value:!n.unique}))}},ij={addIndexColumnAction$:(e,t)=>function*({collections:n}){let r=N(n).collection(`indexEntities`).selectById(e);if(!r)return;let i=N(n).collection(`indexColumnEntities`).selectByIds(r.seqIndexColumnIds).find(e=>e.columnId===t);i?yield gx({id:i.id,indexId:e,tableId:r.tableId,columnId:t}):yield gx({id:w(),indexId:e,tableId:r.tableId,columnId:t})},removeIndexColumnAction$:(e,t)=>function*({collections:n}){let r=N(n).collection(`indexEntities`).selectById(e);if(!r)return;let i=N(n).collection(`indexColumnEntities`).selectByIds(r.indexColumnIds).filter(e=>e.columnId===t);for(let t of i)yield vx({id:t.id,indexId:e,tableId:r.tableId})},changeIndexColumnOrderTypeAction$:e=>function*({collections:t}){let n=N(t).collection(`indexColumnEntities`).selectById(e);n&&(yield Sx({id:e,indexId:n.indexId,columnId:n.columnId,value:n.orderType===$m.ASC?$m.DESC:$m.ASC}))},moveIndexColumnAction$:(e,t)=>function*({collections:n}){if(e===t)return;let r=N(n).collection(`indexColumnEntities`).selectById(e);if(!r)return;let i=N(n).collection(`indexEntities`).selectById(r.indexId);i&&(yield bx({id:e,indexId:r.indexId,tableId:i.tableId,targetId:t}))}},aj={},oj=(e,t)=>t?F_(e,t):P_(e);function sj(e,t,n){let{viewport:r}=e.editor,i={x:r.width/2,y:r.height/2},a=z_(t,i),o=R_({...t,zoomLevel:n},a);return{movementX:Ve(i.x-o.x,4),movementY:Ve(i.y-o.y,4)}}const cj={changeZoomLevelAction$:(e,t)=>function*(n){let r=oj(n,t),{originX:i,originY:a}=r,{movementX:o,movementY:s}=sj(n,r,Uh(e)),c={originX:i+o,originY:a+s};if(t&&t!==`document`){yield bg({value:e,kind:t}),yield gg({...c,kind:t});return}yield rv({value:e}),yield lv(c)},streamZoomLevelAction$:(e,t)=>function*(n){let r=oj(n,t),i=sj(n,r,Uh(r.zoomLevel+e));if(t&&t!==`document`){yield Sg({value:e,kind:t}),yield vg({...i,kind:t});return}yield av({value:e}),yield dv(i)}},lj=Object.freeze({...Kb,...nj,...sx,...rj,...Tx,...ij,...Xx,...ZC,...hS,...aj,...Rv,...cj,...JS,...ow,...kC,...mw}),uj=`table.add,table.move,table.moveTo,table.remove,table.changeName,table.changeComment,table.changeColor,table.sort,column.add,column.remove,column.changeName,column.changeComment,column.changeDataType,column.changeDefault,column.changeAutoIncrement,column.changePrimaryKey,column.changeUnique,column.changeNotNull,column.move,relationship.add,relationship.remove,relationship.changeType,index.add,index.remove,index.changeName,index.changeUnique,indexColumn.add,indexColumn.remove,indexColumn.move,indexColumn.changeOrderType,memo.add,memo.move,memo.moveTo,memo.remove,memo.changeValue,memo.changeColor,memo.resize,settings.changeDatabaseName,settings.changeZoomLevel,settings.streamZoomLevel,settings.scrollTo,settings.streamScrollTo,settings.changeShow,settings.changeDatabase,settings.changeCanvasType,settings.changeLanguage,settings.changeTableNameCase,settings.changeColumnNameCase,settings.changeBracketType,settings.changeRelationshipDataTypeSync,settings.changeRelationshipOptimization,settings.changeColumnOrder,settings.changeMaxWidthComment,settings.changeIgnoreSaveSettings,editor.loadJson,editor.clear`.split(`,`),dj=V([`settings.changeZoomLevel`,`settings.streamZoomLevel`,`settings.scrollTo`,`settings.streamScrollTo`,`settings.changeDatabase`,`settings.changeCanvasType`,`settings.changeLanguage`,`settings.changeTableNameCase`,`settings.changeColumnNameCase`,`settings.changeBracketType`]),fj=[...uj.filter(e=>!dj(e))],pj=V([`editor.loadJson`,`editor.clear`]),mj=[...fj.filter(e=>!pj(e))],hj=[`editor.sharedMouseTracker`,`editor.sharedFocusTracker`,`editor.sharedSelectionTracker`,`editor.sharedDragSelectTracker`];[...uj,...hj];const gj=[`table.move`,`memo.move`],_j=[`table.changeColor`,`memo.changeColor`],vj=[`settings.streamZoomLevel`,`settings.streamScrollTo`],yj=[...Object.keys(WC)],bj=[...Object.keys(UC),...yj];function xj(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}function Sj(e,t,n){xj(e,t),t.set(e,n)}function Cj(e,t,n){if(typeof e==`function`?e===t:e.has(t))return arguments.length<3?t:n;throw TypeError(`Private element is not present on this object`)}function wj(e,t){return e.get(Cj(e,t))}function Tj(e,t,n){return e.set(Cj(e,t),n),n}var Ej=new WeakMap,Dj=class{constructor(){Sj(this,Ej,0),fi(this,`getVersion`,()=>wj(Ej,this)),fi(this,`getNextVersion`,()=>this.getVersion()+1),fi(this,`merge`,e=>(!x(e)||!Number.isInteger(e)||this.getVersion()<e&&Tj(Ej,this,e),this))}};function Oj(e){return{...e,clock:new Dj}}function kj({notify:e,dispatch:t,getNextVersion:n},r){let i=r?.commands??[],a=r?.cursor??-1,o=r?.limit??0,s=!0,c=()=>a!==-1,l=()=>a<i.length-1,u=e=>o=e,d=()=>({hasRedo:l(),hasUndo:c()}),f=(e,r)=>{s=!1,e[r](t,n),s=!0};return Object.freeze({get cursor(){return a},get size(){return i.length},hasUndo:c,hasRedo:l,push:t=>{s&&(i.splice(a+1,i.length-a),i.push(t),o!==0&&i.length>o&&(i=i.slice(i.length-o,i.length)),a=i.length-1,e(d()))},undo:()=>{if(!c())return;let t=i[a];f(t,`undo`),a--,e(d())},redo:()=>{if(!l())return;let t=i[a+1];f(t,`redo`),a++,e(d())},clear:()=>{let t=i.length;i=[],a=-1,t>0&&e(d())},setLimit:u,clone:e=>kj(e,{commands:[...i],cursor:a,limit:o})})}const Aj=De(e=>!!e.length),jj=e=>{let t=V(e);return e=>new C(n=>e.subscribe({next:e=>n.next(e.filter(e=>t(e.type))),error:e=>n.error(e),complete:()=>n.complete()})).pipe(Aj)},Mj=`@@none-stream`,Nj=(e,t)=>n=>{let r=t.find(([,e])=>e(n));return r?r[0]:e(n)?n:Mj},Pj=(e,t=[],n=Te(200))=>{let r=V(e),i=t.map(([e,t])=>[e,V(t)]),a=Nj(r,i);return e=>new C(t=>e.subscribe({next:e=>{let n=e.reduce((e,t)=>{let n=a(t.type);return e[n]||(e[n]=[]),e[n].push(t),e},{});Object.values(n).forEach(e=>t.next(e))},error:e=>t.error(e),complete:()=>t.complete()})).pipe(Aj,ke(e=>a(e[0].type)),Me(e=>e.key===Mj?e:e.pipe(we(e.pipe(n)),Ae(e=>e.flat()))))},Fj=e=>{let t=t=>y(t.tags)||!e.some(e=>G(t.tags,e));return e=>new C(n=>e.subscribe({next:e=>n.next(e.filter(t)),error:e=>n.error(e),complete:()=>n.complete()})).pipe(Aj)};V(yj),V(hj);const Ij=(e,t=[])=>{let n=V(fj),r=e=>!y(e.tags)&&t.some(t=>G(e.tags,t))||!n(e.type);return t=>new C(n=>t.subscribe({next:t=>{n.next(e()?t.filter(r):t)},error:e=>n.error(e),complete:()=>n.complete()})).pipe(Aj)},Lj={[K.scrollTo]:P.viewScrollTo,[K.streamScrollTo]:P.viewStreamScrollTo,[K.changeZoomLevel]:P.viewChangeZoomLevel,[K.streamZoomLevel]:P.viewStreamZoomLevel},Rj=({tags:e})=>!y(e)&&(G(e,Ig.shared)||G(e,Ig.following)),zj=e=>{let t=Lj[e.type];return t&&!Rj(e)?{...e,type:t}:e},Bj=e=>t=>new C(n=>t.subscribe({next:t=>{n.next(e()?t.map(zj):t)},error:e=>n.error(e),complete:()=>n.complete()})),Vj=(e,t=[])=>{let n=V(mj),r=e=>!y(e.tags)&&t.some(t=>G(e.tags,t))||!n(e.type);return t=>new C(n=>t.subscribe({next:t=>{n.next(e()?t.filter(r):t)},error:e=>n.error(e),complete:()=>n.complete()})).pipe(Aj)};function Hj(e,t){return Pu({context:e,state:{...Hp({}),editor:rg(),lww:{}},reducers:{...Gb,...qS,...OC,...Yx,...mS,...Lv,...ox,...wx},enableObservable:t??!0})}const Uj=new WeakMap,Wj=()=>({boxes:new Map,entries:new Map});function Gj(e,t=`document`){let n=Uj.get(e);return n||(n={document:Wj(),flow:Wj()},Uj.set(e,n)),n[t]}function Kj(e,t){return{left:e.left[t],top:e.top[t],right:e.right[t],bottom:e.bottom[t]}}function qj(e,t){return{left:Math.min(e.left,t.left),top:Math.min(e.top,t.top),right:Math.max(e.right,t.right),bottom:Math.max(e.bottom,t.bottom)}}function Jj(e,t){return e.left===t.left&&e.top===t.top&&e.right===t.right&&e.bottom===t.bottom}function Yj(e){let t=1/0,n=1/0,r=-1/0,i=-1/0;for(let{x:a,y:o}of e)a<t&&(t=a),a>r&&(r=a),o<n&&(n=o),o>i&&(i=o);return{left:t,top:n,right:r,bottom:i}}function Xj(e,t){return e.left<=t.right&&e.right>=t.left&&e.top<=t.bottom&&e.bottom>=t.top}function Zj(e,t){let n={left:e.left-40,top:e.top-40,right:e.right+40,bottom:e.bottom+40};for(let e of t)if(Xj(n,e))return!0;return!1}function Qj(){let e=new Map,t=new Map,n=(n,r,i,a,o)=>{let s=n?e:t,c=Math.floor(Math.min(r,i)/64),l=Math.floor(Math.max(r,i)/64);for(let e=c;e<=l;e++){let t=s.get(e);t?t.push(r,i,a,o):s.set(e,[r,i,a,o])}};return{markSpan:n,markBox(e){n(!0,e.left,e.right,e.top,e.bottom),n(!1,e.top,e.bottom,e.left,e.right)},hits(n,r,i,a,o){let s=n?e:t;if(!s.size)return!1;let c=Math.min(r,i)-64,l=Math.max(r,i)+64,u=Math.floor(c/64),d=Math.floor(l/64);for(let e=u;e<=d;e++){let t=s.get(e);if(t){for(let e=0;e<t.length;e+=4)if(!(t[e+1]<c||t[e]>l)&&!(t[e+3]<a-16)&&!(t[e+2]>o+16))return!0}}return!1}}}function $j(e,t){for(let n=1;n<t.length;n++){let r=t[n-1],i=t[n];Math.abs(r.x-i.x)<.5?e.markSpan(!0,r.x,i.x,Math.min(r.y,i.y),Math.max(r.y,i.y)):e.markSpan(!1,r.y,i.y,Math.min(r.x,i.x),Math.max(r.x,i.x))}}function eM(e,t){let n=e.boxes,r=new Map,i=[],a=!1;for(let e=0;e<t.ids.length;e++){let o=t.ids[e],s=Kj(t,e);if(r.set(o,s),a)continue;let c=n.get(o);c?Jj(c,s)||i.push(qj(c,s)):i.push(s),i.length>64&&(a=!0)}if(!a){for(let[e,t]of n)if(!r.has(e)&&(i.push(t),i.length>64)){a=!0;break}}return e.boxes=r,a||n.size===0?null:i}function tM(e){return 50+e%4*12}function nM(e,t){return e.tableId===t.tableId?null:e.direction===R.right&&t.direction===R.left?t.x-e.x:e.direction===R.left&&t.direction===R.right?e.x-t.x:e.direction===R.bottom&&t.direction===R.top?t.y-e.y:e.direction===R.top&&t.direction===R.bottom?e.y-t.y:null}function rM(e,t){return t===null||t<=0?e:Math.max(36,Math.min(e,t/2-1))}function iM(e){return e===R.left||e===R.right}function aM(e){return e===R.right||e===R.bottom?1:-1}function oM(e,t,n){let r=aM(t);return iM(t)?{x:e.x+r*n,y:e.y}:{x:e.x,y:e.y+r*n}}function sM({start:e,end:t},[n,r]){let i=nM(e,t),a=rM(tM(n),i),o=rM(tM(r),i);return{m:oM(e,e.direction,a),l:oM(t,t.direction,o),startStub:a,endStub:o}}function cM(e,t=`document`){let{tableIds:n}=Kg(e,t),r=N(e.collections).collection(`tableEntities`).selectByIds(n),i=r.length,a={ids:Array(i),left:new Float64Array(i),top:new Float64Array(i),right:new Float64Array(i),bottom:new Float64Array(i)};return r.forEach((n,r)=>{let i=C_(e,n,t);a.ids[r]=n.id,a.left[r]=i.lt.x+2,a.top[r]=i.lt.y+2,a.right[r]=i.rb.x-2,a.bottom[r]=i.rb.y-2}),a}function lM(e,t,n,r,i,a,o,s){let c=0,l=1,u=n-e,d=r-t,f=(e,t)=>{if(e===0)return t>=0;let n=t/e;if(e<0){if(n>l)return!1;n>c&&(c=n)}else{if(n<c)return!1;n<l&&(l=n)}return!0};return f(-u,e-i)&&f(u,o-e)&&f(-d,t-a)&&f(d,s-t)&&c<=l}function uM(e,t,n,r){let i=0,a=1/0,o=-1/0,s=1/0,c=-1/0;for(let t=0;t<e.length;t++){let n=e[t];n.x<a&&(a=n.x),n.x>o&&(o=n.x),n.y<s&&(s=n.y),n.y>c&&(c=n.y)}for(let l=0;l<t.ids.length;l++){let u=t.left[l],d=t.right[l],f=t.top[l],p=t.bottom[l];if(o<u||a>d||c<f||s>p)continue;let m=t.ids[l];if(m!==n&&m!==r)for(let t=1;t<e.length;t++){let n=e[t-1],r=e[t];if(!(Math.max(n.x,r.x)<u||Math.min(n.x,r.x)>d)&&!(Math.max(n.y,r.y)<f||Math.min(n.y,r.y)>p)&&lM(n.x,n.y,r.x,r.y,u,f,d,p)){i++;break}}}return i}function dM(e){let t=0;for(let n=1;n<e.length;n++)t+=Math.abs(e[n].x-e[n-1].x)+Math.abs(e[n].y-e[n-1].y);return t}function fM(e,t,n,r,i,a){let o=(e+t)/2,s=n[r?`left`:`top`],c=n[r?`right`:`bottom`],l=n[r?`top`:`left`],u=n[r?`bottom`:`right`],d=[];for(let e=0;e<n.ids.length;e++)u[e]<i||l[e]>a||d.push(s[e]-16,c[e]+16);return d.sort((e,t)=>Math.abs(e-o)-Math.abs(t-o)),[o,...d.slice(0,6)]}function pM(e,t,n,r,i){let a=iM(t),o=iM(r),s=aM(t),c=aM(r),l=Math.min(e.x,n.x,e.y,n.y),u=Math.max(e.x,n.x,e.y,n.y),d=[],f=e=>{let t=[e[0]];for(let n=1;n<e.length;n++){let r=t[t.length-1],i=e[n];Math.abs(i.x-r.x)<.5&&Math.abs(i.y-r.y)<.5||t.push(i)}t.length<2||d.push({points:t,bends:t.length-2})};if(a&&o){let t=fM(e.x,n.x,i,!0,l,u);for(let r of t)(r-e.x)*s<0||(r-n.x)*c<0||f([e,{x:r,y:e.y},{x:r,y:n.y},n]);let r=fM(e.y,n.y,i,!1,l,u);for(let t of r){let r=e.x+s*16,i=n.x+c*16;f([e,{x:r,y:e.y},{x:r,y:t},{x:i,y:t},{x:i,y:n.y},n])}}else if(!a&&!o){let t=fM(e.y,n.y,i,!1,l,u);for(let r of t)(r-e.y)*s<0||(r-n.y)*c<0||f([e,{x:e.x,y:r},{x:n.x,y:r},n]);let r=fM(e.x,n.x,i,!0,l,u);for(let t of r){let r=e.y+s*16,i=n.y+c*16;f([e,{x:e.x,y:r},{x:t,y:r},{x:t,y:i},{x:n.x,y:i},n])}}else if(a){(n.x-e.x)*s>=0&&(e.y-n.y)*c>=0&&f([e,{x:n.x,y:e.y},n]);let t=fM(e.x,n.x,i,!0,l,u).filter(t=>(t-e.x)*s>=0).slice(0,4),r=fM(e.y,n.y,i,!1,l,u).filter(e=>(e-n.y)*c>=0).slice(0,4);for(let i of t)for(let t of r)f([e,{x:i,y:e.y},{x:i,y:t},{x:n.x,y:t},n])}else{(n.y-e.y)*s>=0&&(e.x-n.x)*c>=0&&f([e,{x:e.x,y:n.y},n]);let t=fM(e.y,n.y,i,!1,l,u).filter(t=>(t-e.y)*s>=0).slice(0,4),r=fM(e.x,n.x,i,!0,l,u).filter(e=>(e-n.x)*c>=0).slice(0,4);for(let i of t)for(let t of r)f([e,{x:e.x,y:i},{x:t,y:i},{x:t,y:n.y},n])}return d}function mM(e,t,n,r,i,a,o){let s=pM(e,t,n,r,i),c=null,l=1/0;for(let e of s){let t=uM(e.points,i,a,o)*1e5+e.bends*36+dM(e.points);t<l&&(l=t,c=e.points)}return c||(iM(t)?[e,{x:(e.x+n.x)/2,y:e.y},{x:(e.x+n.x)/2,y:n.y},n]:[e,{x:e.x,y:(e.y+n.y)/2},{x:n.x,y:(e.y+n.y)/2},n])}const hM=[10,7,4],gM=hM[hM.length-1]-.5;function _M(e){let t=[];for(let[n,r]of e)for(let e=0;e<r.length-1;e++){let i=r[e],a=r[e+1],o=Math.abs(i.x-a.x)<.5;o!==Math.abs(i.y-a.y)<.5&&t.push({relationshipId:n,points:r,index:e,movable:e>0&&e<r.length-2,vertical:o,coordinate:o?i.x:i.y,low:o?Math.min(i.y,a.y):Math.min(i.x,a.x),high:o?Math.max(i.y,a.y):Math.max(i.x,a.x)})}return t}function vM(e,t){return e.relationshipId===t.relationshipId?e.index-t.index:e.relationshipId<t.relationshipId?-1:1}function yM(e){let t=e.points[e.index-1];return e.vertical?t.y:t.x}function bM(e){for(let t of e){let e=t.points[t.index],n=t.points[t.index+1];t.low=t.vertical?Math.min(e.y,n.y):Math.min(e.x,n.x),t.high=t.vertical?Math.max(e.y,n.y):Math.max(e.x,n.x)}}function xM(e,t){let n=e.points[e.index],r=e.points[e.index+1];e.vertical?(n.x=t,r.x=t):(n.y=t,r.y=t)}function SM(e,t,n,r){let i=[],a=[];for(let t of _M(e))(t.vertical?i:a).push(t);for(let e of[i,a]){bM(e);let i=e.filter(e=>e.movable);if(i.length<2)continue;i.sort((e,t)=>e.coordinate-t.coordinate||vM(e,t));let a=[],o=()=>{a.length>1&&CM(a,e,t,n,r),a=[]};for(let e of i){let t=a[a.length-1];t&&e.coordinate-t.coordinate>10.5&&o(),a.push(e)}o()}}function CM(e,t,n,r,i){e.sort((e,t)=>e.low-t.low||vM(e,t));let a=[],o=-1/0,s=()=>{a.length>1&&kM(a,t,n,r,i),a=[],o=-1/0};for(let t of e)a.length&&t.low>=o&&s(),a.push(t),o=Math.max(o,t.high);s()}function wM(e,t){return e.high+10>t.low&&t.high+10>e.low}function TM(e,t){return Math.abs(e.coordinate-t.coordinate)>=gM?0:Math.max(0,Math.min(e.high,t.high)-Math.max(e.low,t.low))}function EM(e,t){let n=0;for(let r=0;r<e.length;r++){let i=e[r];for(let t=r+1;t<e.length;t++)n+=TM(i,e[t]);for(let e of t)n+=TM(i,e)}return n}function DM(e,t){let n=new Set(e),r=1/0,i=-1/0;for(let t of e)t.coordinate<r&&(r=t.coordinate),t.coordinate>i&&(i=t.coordinate);let a=10*(e.length-1)/2+gM,o=[];for(let e of t)e.coordinate<r-a||e.coordinate>i+a||n.has(e)||o.push(e);return o}function OM(e){let t=[];for(let n of e){let e=t.find(e=>!wM(e[e.length-1],n));e?e.push(n):t.push([n])}return t}function kM(e,t,n,r,i){if(!i){AM(e,t,n,r);return}if(jM(e,i))return;let a=e.map(e=>e.coordinate);AM(e,t,n,r),MM(e,a,i)}function AM(e,t,n,r){let i=DM(e,t),a=EM(e,i);if(!a)return;let o=new Map,s=e.map(e=>(o.set(e,zM(e,n,r)),e.coordinate)),c=s.reduce((e,t)=>e+t,0)/s.length,l=NM(e),u=null,d=1/0;for(let t of hM){let a=null,f=1/0;for(let p of l){RM(p,t,c,o,n,r);let l=EM(e,i);if(l)l<d&&(u=e.map(e=>e.coordinate),d=l);else{let t=IM(e,s);t<f&&(f=t,a=e.map(e=>e.coordinate))}LM(e,s)}if(a){LM(e,a);return}}u&&d<a&&LM(e,u)}function jM(e,t){let n=[];for(let r of e){if(t.dirty.has(r.relationshipId))return!1;let e=t.coordinate(r.relationshipId,r.index,r.vertical);if(e===void 0||t.lanes.hits(r.vertical,r.coordinate,e,r.low,r.high))return!1;n.push(e)}return LM(e,n),!0}function MM(e,t,n){e.forEach((e,r)=>{let i=t[r],a=e.coordinate;if(Math.abs(a-i)<.5)return;n.lanes.markSpan(e.vertical,i,a,e.low,e.high);let o=e.points[e.index],s=e.points[e.index+1],c=Math.min(i,a),l=Math.max(i,a),u=e.vertical?o.y:o.x,d=e.vertical?s.y:s.x;n.lanes.markSpan(!e.vertical,u,u,c,l),n.lanes.markSpan(!e.vertical,d,d,c,l)})}function NM(e){let t=OM(e),n=PM(t);return t.length===e.length?n:[...n,...PM(e.map(e=>[e]))]}function PM(e){let t=(e,t)=>e.reduce((e,n)=>e+t(n),0)/e.length,n=[...e].sort((e,n)=>t(e,yM)-t(n,yM)||t(e,FM)-t(n,FM)||vM(e[0],n[0])),r=[...e].sort((e,n)=>t(e,FM)-t(n,FM)||t(e,yM)-t(n,yM)||vM(e[0],n[0]));return n.every((e,t)=>e===r[t])?[n]:[n,r]}function FM(e){return e.coordinate}function IM(e,t){return e.reduce((e,n,r)=>e+Math.abs(n.coordinate-t[r]),0)}function LM(e,t){e.forEach((e,n)=>{xM(e,t[n]),e.coordinate=t[n]})}function RM(e,t,n,r,i,a){let o=n-t*(e.length-1)/2,s=e.map(()=>[]);e.forEach((n,c)=>{for(let l of n){let n=r.get(l);if(!n)continue;let u=r=>{if(r<0||r>=e.length||s[r].some(e=>wM(l,e)))return!1;let c=o+r*t;return xM(l,c),UM(l,i,a,n)?(l.coordinate=c,s[r].push(l),!0):!1},d=!1;for(let e=0;e<=3&&!d;e++)d=u(c-e)||e>0&&u(c+e);d||xM(l,l.coordinate)}})}function zM(e,t,n){let r=n.get(e.relationshipId),i=[];for(let e=0;e<t.ids.length;e++){let n=t.ids[e];(n===r?.[0]||n===r?.[1])&&i.push(e)}return{blocked:uM(e.points,t,r?.[0]??``,r?.[1]??``),crossed:WM(e.points),own:i,intruded:HM(e.points,t,i),beforeDelta:BM(e,-1),afterDelta:BM(e,1)}}function BM(e,t){let n=e.points[t<0?e.index:e.index+1],r=e.points[t<0?e.index-1:e.index+2];return e.vertical?r.x-n.x:r.y-n.y}function VM(e,t){return Math.abs(t)>=.5&&e*t<=0}function HM(e,t,n){let r=0;for(let i of n){let n=t.left[i],a=t.top[i],o=t.right[i],s=t.bottom[i];for(let t=1;t<e.length;t++){let i=e[t-1],c=e[t];if(lM(i.x,i.y,c.x,c.y,n,a,o,s)){r++;break}}}return r}function UM(e,t,n,r){let i=e.points[e.index-1],a=e.points[e.index],o=e.points[e.index+1],s=e.points[e.index+2];if((e.vertical?Math.abs(i.x-a.x)<.5||Math.abs(s.x-o.x)<.5:Math.abs(i.y-a.y)<.5||Math.abs(s.y-o.y)<.5)||e.index===1&&VM(BM(e,-1),r.beforeDelta)||e.index+2===e.points.length-1&&VM(BM(e,1),r.afterDelta)||HM(e.points,t,r.own)>r.intruded||!r.crossed&&WM(e.points))return!1;let c=n.get(e.relationshipId);return uM(e.points,t,c?.[0]??``,c?.[1]??``)<=r.blocked}function WM(e){for(let t=0;t+1<e.length;t++)for(let n=t+2;n+1<e.length;n++)if(GM(e[t],e[t+1],e[n],e[n+1]))return!0;return!1}function GM(e,t,n,r){let i=Math.abs(e.x-t.x)<.5;if(i===Math.abs(n.x-r.x)<.5)return!1;let a=i?e:n,o=i?t:r,s=i?n:e,c=i?r:t;return a.x>Math.min(s.x,c.x)&&a.x<Math.max(s.x,c.x)&&s.y>Math.min(a.y,o.y)&&s.y<Math.max(a.y,o.y)}const KM={[H.top]:R.top,[H.bottom]:R.bottom,[H.left]:R.left,[H.right]:R.right},qM=Math.PI*2,JM=.15,YM={[H.top]:-Math.PI,[H.right]:-Math.PI/2,[H.bottom]:0,[H.left]:Math.PI/2},XM={[H.top]:!1,[H.right]:!1,[H.bottom]:!0,[H.left]:!0};function ZM(e,t=`document`){Oh(t);let{tableIds:n,relationshipIds:r}=Kg(e,t),{collections:i}=e,a=V(n),o=N(i).collection(`tableEntities`),s=N(i).collection(`relationshipEntities`).selectByIds(r).filter(({start:e,end:t})=>a(e.tableId)&&a(t.tableId)),c=new Map,l=new Map,u=new Map,d=lN(s);for(let n of s){let r=cN(n),{start:i,end:a}=r,s=o.selectById(i.tableId),f=o.selectById(a.tableId);if(!(!s||!f)){if(l.set(n,r),u.set(r.id,[0,0]),i.tableId===a.tableId)iN(rN(e,c,s,t),r);else{let n=rN(e,c,s,t),o=rN(e,c,f,t),[l,u]=pN(n.objectPoint,o.objectPoint,r);n[l].push({id:r.id,isStart:!0,point:i,angle:fN(l,n,o),tie:d.tieAt(r.id,i.tableId,a.tableId)}),o[u].push({id:r.id,isStart:!1,point:a,angle:fN(u,o,n),tie:d.tieAt(r.id,a.tableId,i.tableId)})}}}for(let e of c.values())for(let t of dh)mN(t,e,u);for(let[e,n]of l.entries())wh(e,u.get(n.id)??[0,0],t),Ah(e,n,t);t===`document`?$M(e,l,u):QM(l,u,t)}function QM(e,t,n){for(let[r,i]of e.entries()){let{id:e,start:a,end:o}=i;if(a.tableId===o.tableId)continue;let{m:s,l:c}=sM(i,t.get(e)??[0,0]);Eh(r,[s,c],n)}}function $M(e,t,n){let r=cM(e),i=Gj(e),a=eM(i,r),o=i.entries,s=new Map,c=new Set,l=Qj();if(a)for(let e of a)l.markBox(e);let u=new Map,d=new Map,f=new Map;for(let[e,i]of t.entries()){let{id:t,start:p,end:m}=i;if(p.tableId===m.tableId)continue;let{m:h,l:g}=sM(i,n.get(t)??[0,0]),_=o.get(t),v,ee;a!==null&&_!==void 0&&nN(_,h,g,p,m)&&!Zj(_.bounds,a)?(v=_.pristine,ee=eN(v)):(ee=mM(h,p.direction,g,m.direction,r,p.tableId,m.tableId),v=eN(ee),c.add(t),_&&$j(l,_.nudged),$j(l,v)),u.set(t,ee),d.set(t,[p.tableId,m.tableId]),f.set(t,e),s.set(t,{mx:h.x,my:h.y,mDirection:p.direction,lx:g.x,ly:g.y,lDirection:m.direction,startTableId:p.tableId,endTableId:m.tableId,pristine:v,nudged:ee,bounds:Yj(v)})}if(a)for(let[e,t]of o)s.has(e)||$j(l,t.nudged);SM(u,r,d,a===null?void 0:tN(o,c,l));for(let[e,t]of u){let n=f.get(e);n&&Eh(n,t)}i.entries=s}function eN(e){return e.map(({x:e,y:t})=>({x:e,y:t}))}function tN(e,t,n){return{dirty:t,lanes:n,coordinate(t,n,r){let i=e.get(t)?.nudged[n];if(i)return r?i.x:i.y}}}function nN(e,t,n,r,i){return e.mx===t.x&&e.my===t.y&&e.lx===n.x&&e.ly===n.y&&e.mDirection===r.direction&&e.lDirection===i.direction&&e.startTableId===r.tableId&&e.endTableId===i.tableId}function rN(e,t,n,r){let i=t.get(n.id);if(!i){let a=C_(e,n,r);i={tableId:n.id,centerX:a.top.x,centerY:a.left.y,objectPoint:a,selfCount:0,top:[],bottom:[],left:[],right:[]},t.set(n.id,i)}return i}function iN(e,t){let{rt:n,width:r,height:i}=e.objectPoint,a=e.selfCount++,o=sN(Math.min(r,i)*JM,20,60)+a*14;t.start.direction=R.top,t.start.x=n.x-o,t.start.y=n.y,t.end.direction=R.right,t.end.x=n.x,t.end.y=n.y+o}function aN(e,t){let{width:n,height:r}=e.objectPoint;return sN(Math.min(n,r)*JM,20,60)+t*14}function oN(e){return e.selfCount?aN(e,e.selfCount-1)+8:0}function sN(e,t,n){return Math.min(Math.max(e,t),n)}function cN({id:e,start:t,end:n}){return{id:e,start:ph(t),end:ph(n)}}function lN(e){let t=new Map;for(let{id:n,start:r,end:i}of e){let e=uN(r.tableId,i.tableId),a=t.get(e);a?a.push(n):t.set(e,[n])}let n=new Map,r=new Map,i=!1;for(let e of t.values())e.length<2||(i=!0,e.sort(),e.forEach((t,i)=>{n.set(t,i),r.set(t,e.length)}));return{tieAt(e,t,a){if(!i)return 0;let o=n.get(e)??0;return t<=a?o:(r.get(e)??1)-1-o}}}function uN(e,t){return e<t?`${e}|${t}`:`${t}|${e}`}function dN(e){let t=e%qM;return t<0?t+qM:t}function fN(e,t,n){return dN(Math.atan2(n.centerY-t.centerY,n.centerX-t.centerX)-YM[e])}function pN(e,t,n){let r=[H.bottom,H.bottom],i=w_(e.bottom,t.bottom);n.start.x=e.bottom.x,n.start.y=e.bottom.y,n.end.x=t.bottom.x,n.end.y=t.bottom.y,n.start.direction=R.bottom,n.end.direction=R.bottom;for(let a of dh)for(let o of dh){let s=a,c=o,l=w_(e[s],t[c]);i<=l||(i=l,r[0]=s,r[1]=c,n.start.x=e[s].x,n.start.y=e[s].y,n.start.direction=KM[s],n.end.x=t[c].x,n.end.y=t[c].y,n.end.direction=KM[c])}return r}function mN(e,t,n){let r=t[e];if(!r.length)return;r.sort((e,t)=>e.angle-t.angle||e.tie-t.tie||(e.id<t.id?-1:1));let{objectPoint:i}=t,a=e===H.top||e===H.bottom,o=(a?i.lt.x:i.lt.y)+12,s=(a?i.rb.x:i.rb.y)-12,c=oN(t);if(c&&(e===H.top?s-=c:e===H.right&&(o+=c)),s<o){let e=(o+s)/2;o=e,s=e}let l=s-o,u=(o+s)/2,d=r.length,f=d>1?Math.min(l/(d-1),120):0,p=u-f*(d-1)/2;r.forEach((t,r)=>{let o=XM[e]?d-1-r:r,s=p+o*f;a?(t.point.x=s,t.point.y=e===H.top?i.top.y:i.bottom.y):(t.point.y=s,t.point.x=e===H.left?i.left.x:i.right.x);let c=n.get(t.id);c&&(c[+!t.isStart]=r)})}const hN=(e,t)=>e.pipe(Re(10,void 0,{leading:!1,trailing:!0})).subscribe(()=>{let{doc:e,collections:n}=t(),r=N(n).collection(`relationshipEntities`).selectByIds(e.relationshipIds);for(let e of r){let{end:t,identification:r}=e,i=N(n).collection(`tableEntities`).selectById(t.tableId);if(!i)continue;let a=V(i.columnIds),o=N(n).collection(`tableColumnEntities`).selectByIds(t.columnIds).filter(e=>a(e.id));if(!o.length)continue;let s=o.every(e=>G(e.options,z.primaryKey));s!==r&&(e.identification=s)}}),gN=(e,t)=>e.pipe(Re(10,void 0,{leading:!1,trailing:!0})).subscribe(()=>{let{doc:e,collections:n}=t(),r=N(n).collection(`relationshipEntities`).selectByIds(e.relationshipIds);for(let e of r){let{end:t,startRelationshipType:r}=e,i=N(n).collection(`tableEntities`).selectById(t.tableId);if(!i)continue;let a=V(i.columnIds),o=N(n).collection(`tableColumnEntities`).selectByIds(t.columnIds).filter(e=>a(e.id));if(!o.length)continue;let s=o.every(e=>G(e.options,z.notNull))?Qm.dash:Qm.ring;s!==r&&(e.startRelationshipType=s)}}),_N=V([jS.type,NS.type,Fx.type]),vN=(e,t)=>e.pipe(Le(e=>{_N(e.type)||o_()}),Re(5,void 0,{leading:!1,trailing:!0})).subscribe(()=>{ZM(t())}),yN=V([pv.type,Nv.type,Fx.type]),bN=V([gg.type,vg.type,bg.type,Sg.type]),xN=({id:e})=>[e],SN=({ids:e})=>e,CN=({tableId:e})=>[e],wN=(e,{kind:t})=>t,TN=()=>eg.flow,EN=(e,{kind:t})=>t??ag(e)?.kind??null,DN={[fg.type]:wN,[mg.type]:wN,[Eg.type]:wN,[Ag.type]:TN,[Og.type]:EN,[wg.type]:EN},ON={[kS.type]:xN,[FS.type]:xN,[NS.type]:xN,[LS.type]:xN,[zS.type]:xN,[cS.type]:xN,[uS.type]:xN,[jS.type]:SN,[wg.type]:SN,[oC.type]:CN,[cC.type]:CN,[uC.type]:CN,[fC.type]:CN,[mC.type]:CN,[gC.type]:CN,[bC.type]:CN};function kN(e,t){let{tableIds:n,relationshipIds:r}=Kg(e,t);return new Set([...n,...r])}function AN(e,t,n,r){if(yN(t.type)||bN(t.type))return!1;let i=DN[t.type];if(i&&i(e,t.payload)!==r)return!1;let a=ON[t.type];if(!a)return!0;let o=kN(e,r);return a(t.payload).some(e=>o.has(e)||n.has(e))}const jN=[eg.flow],MN=(e,t)=>{let n={flow:new Set},r=new Set;return e.pipe(De(e=>{let i=t(),a=!1;for(let t of jN)og(i,t)&&AN(i,e,n[t],t)&&(r.add(t),a=!0);return a}),Re(5,void 0,{leading:!1,trailing:!0})).subscribe(()=>{let e=t(),i=[...r];r.clear();for(let t of i)og(e,t)&&(ZM(e,t),n[t]=kN(e,t))})},NN=[pv,Nv,cS,uS,Fx,kS,FS,jS,NS,LS,zS,oC,cC,uC,fC,mC,gC,GS],PN=[bC],FN=[fg,mg,gg,vg,bg,Sg,wg,Eg,Og,Ag],IN=[[[cC,bC,Fy,zy],hN],[[cC,wC,Fy,zy],gN],[NN,vN],[[...NN,...PN,...FN],MN]],LN=[[[Fy,zy],(e,t,n)=>e.pipe(Re(5,void 0,{leading:!1,trailing:!0})).subscribe(()=>{let e=t();v_(e,n),ZM(e)})]],RN=e=>e.pipe(Ne(Ce)),zN=[[[bC],(e,t)=>RN(e).subscribe(({payload:{id:e}})=>{let{collections:n}=t(),r=N(n).collection(`tableColumnEntities`).selectById(e);r&&G(r.options,z.primaryKey)&&(G(r.options,z.notNull)||(r.options|=z.notNull))})],[[cS],(e,t)=>RN(e).subscribe(({payload:{id:e,end:n}})=>{let{doc:{relationshipIds:r},collections:i}=t();if(!r.includes(e))return;let a=N(i).collection(`tableColumnEntities`).selectByIds(n.columnIds);for(let e of a)e.ui.keys=e.ui.keys|B.foreignKey})],[[uS],(e,t)=>RN(e).subscribe(({payload:{id:e}})=>{let{doc:{relationshipIds:n},collections:r}=t();if(n.includes(e))return;let i=N(r).collection(`relationshipEntities`).selectById(e);if(!i)return;let a=N(r).collection(`tableColumnEntities`).selectByIds(i.end.columnIds);for(let e of a)e.ui.keys=e.ui.keys&~B.foreignKey})],[[Fy,zy],(e,t)=>RN(e).subscribe(()=>{let{doc:e,collections:n}=t(),r=N(n).collection(`relationshipEntities`).selectByIds(e.relationshipIds),i=N(n).collection(`tableEntities`).selectByIds(e.tableIds),a=new Set,o=N(n).collection(`tableColumnEntities`);for(let{end:e}of r){let t=o.selectByIds(e.columnIds);for(let e of t)e.ui.keys=e.ui.keys|B.foreignKey,a.add(e.id)}for(let e of i){let t=o.selectByIds(e.columnIds);for(let e of t)G(e.ui.keys,B.foreignKey)&&!a.has(e.id)&&(e.ui.keys=e.ui.keys&~B.foreignKey)}})]],BN=[...LN,...zN,...IN];function VN(e){let t=()=>e.state,n=BN.map(([n,r])=>{let i=new xe;return{pattern:V(n.map(String)),action$:i,subscription:r(i,t,e.context)}}),r=e.subscribe(e=>{for(let t of e)for(let e of n)e.pattern(t.type)&&e.action$.next(t)});return{destroy:()=>{n.forEach(({action$:e,subscription:t})=>{t.unsubscribe(),e.complete()}),n.splice(0,n.length),r()}}}function HN(e,{getReadonly:t=()=>!1,getHistory:n}={}){let r=new Set,i=Hj(e),a=VN(i),o={notify:e=>i.dispatch(Sy(e)),dispatch:i.dispatchSync,getNextVersion:()=>e.clock.getNextVersion()},s=n?.(o)??kj(o);s.setLimit(2048);let c=()=>ag(i.state),l=new xe,u=l.pipe(Bj(c)),d=u.pipe(jj(bj),Fj([Ig.changeOnly,Ig.shared]),Ij(t),Vj(c),Pj(yj,[[`@@move`,gj],[`@@scroll`,vj],[`@@color`,_j]])),f=new C(e=>i.subscribe(t=>e.next(t))).pipe(jj(uj),Ij(t,[Ig.shared]),Te(200)),p=(...t)=>{let n=e.clock.getNextVersion();return Au(i.state,i.context,t).map(e=>(y(e.version)&&(e.version=n),e))},m=(...e)=>{let t=p(e);l.next(t)},h=(...e)=>{queueMicrotask(()=>m(e))},g=()=>{Array.from(r).forEach(e=>ue(e)?e():e.unsubscribe()),r.clear(),i.destroy(),a.destroy(),s.clear(),l.complete()},_=()=>{t()||c()||s.undo()},v=()=>{t()||c()||s.redo()};return r.add(d.subscribe(qC(i,s))).add(u.pipe(Ij(t,[Ig.shared]),Vj(c,[Ig.shared])).subscribe(i.dispatchSync)).add(i.subscribe(t=>{t.forEach(t=>e.clock.merge(t.version))})),Object.freeze({...i,dispatch:h,dispatchSync:m,destroy:g,undo:_,redo:v,history:s,change$:f})}const UN={openColorPicker:`openColorPicker`,closeColorPicker:`closeColorPicker`,openToast:`openToast`,openTableProperties:`openTableProperties`,dragendColumnAll:`dragendColumnAll`,copy:`copy`,paste:`paste`,schemaGC:`schemaGC`,toggleSearch:`toggleSearch`,openThemeBuilder:`openThemeBuilder`,setThemeOptions:`setThemeOptions`,mouseTrackerStart:`mouseTrackerStart`,mouseTrackerEnd:`mouseTrackerEnd`,openDiffViewer:`openDiffViewer`,openAutomaticTablePlacement:`openAutomaticTablePlacement`,duplicateDragStart:`duplicateDragStart`,dragSelectStart:`dragSelectStart`};var WN=new WeakMap,GN=class{constructor(){Sj(this,WN,new Set)}on(e){return wj(WN,this).has(e)||wj(WN,this).add(e),()=>{wj(WN,this).delete(e)}}emit(e){wj(WN,this).forEach(t=>{HC(Reflect.get(t,e.type),e)})}clear(){wj(WN,this).clear()}};const KN=k(UN.openColorPicker);k(UN.closeColorPicker),k(UN.openToast),k(UN.openTableProperties);const qN=k(UN.dragendColumnAll);k(UN.copy),k(UN.paste),k(UN.schemaGC),k(UN.toggleSearch),k(UN.openThemeBuilder),k(UN.setThemeOptions),k(UN.mouseTrackerStart),k(UN.mouseTrackerEnd),k(UN.openDiffViewer),k(UN.openAutomaticTablePlacement);const JN=k(UN.duplicateDragStart);k(UN.dragSelectStart);const YN=Ke();let XN=YN.os.name===`mac`,ZN=YN.os.name===`ios`;YN.os.name,YN.os.name,YN.browser.name,YN.browser.name,YN.browser.name,qe(e=>{XN=e.os.name===`mac`,ZN=e.os.name===`ios`,e.os.name,e.os.name,e.browser.name,e.browser.name,e.browser.name});const QN=()=>XN||ZN,$N={edit:`edit`,stop:`stop`,search:`search`,undo:`undo`,redo:`redo`,addTable:`addTable`,addColumn:`addColumn`,addMemo:`addMemo`,removeTable:`removeTable`,removeColumn:`removeColumn`,primaryKey:`primaryKey`,selectAllTable:`selectAllTable`,selectAllColumn:`selectAllColumn`,relationshipZeroOne:`relationshipZeroOne`,relationshipZeroN:`relationshipZeroN`,relationshipOneOnly:`relationshipOneOnly`,relationshipOneN:`relationshipOneN`,tableProperties:`tableProperties`,focusView:`focusView`,zoomIn:`zoomIn`,zoomOut:`zoomOut`,zoomReset:`zoomReset`,handTool:`handTool`,zenMode:`zenMode`};Object.values($N);const eP=()=>({[$N.edit]:[{shortcut:`Enter`}],[$N.stop]:[{shortcut:`Escape`}],[$N.search]:[{shortcut:`$mod+KeyK`,preventDefault:!0,stopPropagation:!0}],[$N.undo]:[{shortcut:`$mod+KeyZ`,preventDefault:!0,stopPropagation:!0}],[$N.redo]:[{shortcut:`$mod+Shift+KeyZ`,preventDefault:!0,stopPropagation:!0}],[$N.addTable]:[{shortcut:`Alt+KeyN`,preventDefault:!0}],[$N.addColumn]:[{shortcut:`Alt+Enter`,preventDefault:!0}],[$N.addMemo]:[{shortcut:`Alt+KeyM`,preventDefault:!0}],[$N.removeTable]:[{shortcut:`$mod+Backspace`,preventDefault:!0},{shortcut:`$mod+Delete`,preventDefault:!0}],[$N.removeColumn]:[{shortcut:`Alt+Backspace`,preventDefault:!0},{shortcut:`Alt+Delete`,preventDefault:!0}],[$N.primaryKey]:[{shortcut:`Alt+KeyK`,preventDefault:!0}],[$N.selectAllTable]:[{shortcut:`$mod+KeyA`,preventDefault:!0},{shortcut:`$mod+Alt+KeyA`,preventDefault:!0}],[$N.selectAllColumn]:[{shortcut:`Alt+KeyA`,preventDefault:!0}],[$N.relationshipZeroOne]:[{shortcut:`$mod+Alt+Digit1`,preventDefault:!0}],[$N.relationshipZeroN]:[{shortcut:`$mod+Alt+Digit2`,preventDefault:!0}],[$N.relationshipOneOnly]:[{shortcut:`$mod+Alt+Digit3`,preventDefault:!0}],[$N.relationshipOneN]:[{shortcut:`$mod+Alt+Digit4`,preventDefault:!0}],[$N.tableProperties]:[{shortcut:`Alt+Space`,preventDefault:!0}],[$N.focusView]:[{shortcut:`Alt+KeyF`,preventDefault:!0,stopPropagation:!0}],[$N.zoomIn]:[{shortcut:`$mod+Equal`,preventDefault:!0,stopPropagation:!0}],[$N.zoomOut]:[{shortcut:`$mod+Minus`,preventDefault:!0,stopPropagation:!0}],[$N.zoomReset]:[{shortcut:`$mod+Digit0`,preventDefault:!0,stopPropagation:!0}],[$N.handTool]:[{shortcut:`Space`,preventDefault:!0}],[$N.zenMode]:[{shortcut:`Alt+KeyZ`,preventDefault:!0,stopPropagation:!0}]}),tP={Shift:`Shift`,Meta:`Meta`,Alt:`Alt`,Control:`Control`};tP.Shift,tP.Meta,tP.Alt,tP.Control,tP.Shift,tP.Meta,tP.Alt,tP.Control;function nP(e){return QN()?e.metaKey:e.ctrlKey}function rP(e,t){let{devtools:n=!0,...r}=t??{},i=Oj(e),a=HN(i,r),o=Ea(eP(),{shallow:!0}),s=new xe,c=new xe,l=new GN;return Object.freeze({...i,actions:lj,store:a,keyBindingMap:o,shortcut$:s,keydown$:c,emitter:l})}const iP=gi({}),aP=(e,t)=>Va(e,{...iP,value:t??iP.value});function oP(e){e.store.dispatchSync(Ly()),e.store.destroy(),e.keydown$.complete(),e.shortcut$.complete(),e.emitter.clear()}const sP=[`table`,`memo`,`relationship`],cP=e=>typeof e==`string`&&sP.includes(e);function lP(e){let t=e;if(typeof t.clientX==`number`)return{x:t.clientX,y:t.clientY};let n=e.touches?.[0];return n?{x:n.clientX,y:n.clientY}:null}const uP=(e,t)=>!!(e&&t&&e.x===t.x&&e.y===t.y),dP=new WeakMap,fP=`mousedown.sceneHit touchstart.sceneHit contextmenu.sceneHit`;function pP(e){return e.on(fP,t=>{let n=t.evt,r=lP(n),i=dP.get(e),a=t.target===e?null:hP(t.target),o=n.type===`contextmenu`&&uP(i?.point,r)?i?.hit??null:null;dP.set(e,{evt:n,hit:a??o,point:r})}),()=>{e.off(fP),dP.delete(e)}}function mP(e,t){let n=`${t}-`,r=e.id();if(r.startsWith(n))return r.slice(n.length);let[i,a=``]=e.name().split(/\s+/);return i===t?a:``}function hP(e){let t=e;for(;t;){let e=t.getAttr(`kind`);if(cP(e))return{kind:e,id:mP(t,e)};t=t.getParent()}return null}const gP=gi({}),_P=e=>Va(e,gP);function vP({app:e,container:t,scene:n,width:r,height:i,theme:a}){let o=new ee({container:t,width:r,height:i}),s={host:o.container(),parentElement:null},c=Ha(s,iP,e),l=a?Ha(s,gP,a):null,u=pP(o);return Hf(o,n),{stage:o,destroy:()=>{u(),Hf(o,null),l?.destroy(),c.destroy(),o.destroy()}}}const yP=e=>new Promise(t=>setTimeout(t,e)),bP=32767;function xP(e,t,n){let r=Math.max(t,n),i=t*n;return r<=0||i<=0?e:Math.min(e,bP/r,16384/Math.sqrt(i))}function SP({x:e,y:t,width:n,height:r},i){return{x:e-i,y:t-i,width:n+i*2,height:r+i*2}}function CP(e){let{settings:{show:t},doc:{relationshipIds:n},collections:r}=e,i=A_(e);if(G(t,F.relationship)){let e=N(r).collection(`relationshipEntities`).selectByIds(n);for(let t of e){let e=Ph(t);i=i?k_(i,e):e}}return SP(i??{x:0,y:0,width:0,height:0},80)}function wP({width:e,height:t},n=1){let r=n>0?n:1,i=Math.max(e,t),a=e*t;return i<=0||a<=0?r:Math.min(r,bP/i,Math.sqrt(268435456/a))}const TP={"arrow-right":Je,atom:Ye,braces:Xe,brackets:Ze,"case-sensitive":Qe,check:$e,"chevron-down":et,"chevron-right":tt,code:nt,contrast:rt,copy:it,database:at,diff:ot,"external-link":st,eye:ct,"file-diff":lt,"file-image":ut,"file-input":dt,"file-output":ft,fullscreen:pt,"grip-vertical":mt,hand:ht,"key-round":gt,maximize:_t,minimize:vt,minus:yt,"moon-star":bt,"mouse-pointer-2":xt,network:St,palette:Ct,plus:wt,"redo-2":Tt,"refresh-cw":Et,"rotate-ccw-clock":Dt,search:Ot,settings:kt,"share-2":At,spline:jt,"sticky-note":Mt,sun:Nt,table:Pt,"table-2":Ft,"table-properties":It,"undo-2":Lt,"wand-sparkles":Rt,waypoints:zt,workflow:Bt,x:Vt},EP={ZeroOneN:[[`circle`,{cx:`7`,cy:`12`,r:`5`}],[`path`,{d:`M12 12h10`}],[`path`,{d:`M15 6v12`}],[`path`,{d:`M16 12l6-6`}],[`path`,{d:`M16 12l6 6`}]],ZeroOne:[[`path`,{d:`M2 12h3`}],[`circle`,{cx:`10`,cy:`12`,r:`5`}],[`path`,{d:`M15 12h7`}],[`path`,{d:`M20 6v12`}]],ZeroN:[[`path`,{d:`M2 12h3`}],[`circle`,{cx:`10`,cy:`12`,r:`5`}],[`path`,{d:`M15 12h7`}],[`path`,{d:`M15 12l7-6`}],[`path`,{d:`M15 12l7 6`}]],OneOnly:[[`path`,{d:`M2 12h20`}],[`path`,{d:`M14 6v12`}],[`path`,{d:`M19 6v12`}]],OneN:[[`path`,{d:`M2 12h20`}],[`path`,{d:`M14 6v12`}],[`path`,{d:`M15 12l7-6`}],[`path`,{d:`M15 12l7 6`}]],One:[[`path`,{d:`M2 12h20`}],[`path`,{d:`M14 6v12`}]],N:[[`path`,{d:`M2 12h20`}],[`path`,{d:`M15 12l7-6`}],[`path`,{d:`M15 12l7 6`}]]},DP={};OP();function OP(){for(let e of Object.keys(TP))DP[e]={name:e,node:TP[e]};for(let e of Object.keys(EP))DP[e]={name:e,node:EP[e]}}function kP(e){return DP[e]}const AP=`-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', 'Open Sans', system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'`;Id.global`
|
|
27
27
|
:host {
|
|
28
|
-
--text-font-family: ${
|
|
28
|
+
--text-font-family: ${AP};
|
|
29
29
|
--code-font-family: ${`'Menlo', 'Consolas', 'Bitstream Vera Sans Mono', monospace, 'Apple Color Emoji', 'Segoe UI Emoji'`};
|
|
30
30
|
}
|
|
31
|
-
`;const
|
|
31
|
+
`;const jP=AP,MP=e=>`normal normal 12px ${e}`;MP(jP);const NP={ascent:0,descent:0},PP=new Map;function FP(e=jP){let t=PP.get(e);if(t)return t;if(typeof document>`u`)return NP;let n=document.createElement(`canvas`).getContext(`2d`);if(!n)return NP;n.font=MP(e);let r=n.measureText(`M`),i=r.fontBoundingBoxAscent??r.actualBoundingBoxAscent,a=r.fontBoundingBoxDescent??r.actualBoundingBoxDescent;if(!Number.isFinite(i)||!Number.isFinite(a))return NP;let o={ascent:i,descent:a};return PP.set(e,o),o}const IP=[20,24,28,35,60],LP=1.5,RP=Number(`0 0 24 24`.split(` `)[2]),zP=`transparent`,BP=zP,VP=`pointer`;function HP(e,t){let n=e.target?.getStage()?.container();n&&(n.style.cursor=t)}function UP(e){return e instanceof MouseEvent}function WP(e,t,n,r){if(!UP(t)||!t.altKey||t.button!==0)return!1;let{store:i,emitter:a}=e;return i.state.editor.selectedMap[n]||i.dispatchSync(r===Qh.memo?XC(n,!1):aw(n,!1)),t.preventDefault(),a.emit(JN()),!0}const GP=Ea({active:{}});function KP(e,t=`document`){GP.active[q_(e,t)]=!0,Y_(e,t)}function qP(e,t=`document`){Reflect.deleteProperty(GP.active,q_(e,t)),X_(e,t)}function JP(e,t){let n=e??null;for(;n;){let e=n.getAttr(`kind`);if(typeof e==`string`&&t.includes(e))return!0;n=n.getParent()}return!1}const YP={focus:`@dineug/erd-editor/internal-focus`,forceFocus:`@dineug/erd-editor/internal-force-focus`,forwardMoveStart:`@dineug/erd-editor/internal-forward-move-start`};function XP(e,t){function n(n,r){return new CustomEvent(e,{detail:n,...t,...r})}return n.toString=()=>`${e}`,n.type=e,n}XP(YP.focus),XP(YP.forceFocus);const ZP=XP(YP.forwardMoveStart,{bubbles:!0,composed:!0});function QP(e){return Ee(()=>Oe(window,e))}QP(`keyup`);const $P=QP(`mousedown`),eF=QP(`mousemove`),tF=QP(`mouseup`),nF=QP(`touchstart`),rF=QP(`touchmove`),iF=QP(`touchend`),aF=QP(`dragstart`),oF=QP(`pointercancel`),sF=QP(`blur`);Se().pipe(Pe());const cF=QP(ZP.type).pipe(Ae(e=>e.detail.originEvent)),lF=je($P,nF,cF),uF=je(tF,iF,aF,oF,sF);let dF=0,fF=0;typeof window<`u`&&lF.subscribe(e=>{UP(e)?(dF=e.clientX,fF=e.clientY):(dF=e.touches[0].clientX,fF=e.touches[0].clientY)});const pF=je(eF.pipe(Ae(e=>{let t=e.clientX,n=e.clientY,r=t-dF,i=n-fF;return dF=t,fF=n,{event:e,movementX:r,movementY:i,x:t,y:n}})),rF.pipe(De(e=>e.touches.length===1),Ae(e=>{let t=e.touches[0].clientX,n=e.touches[0].clientY,r=t-dF,i=n-fF;return dF=t,fF=n,{event:e,movementX:r,movementY:i,x:t,y:n}}))).pipe(Ie(uF));function mF(e,t){let n=aP(e),r=e=>({event:t,movementX:r,movementY:i})=>{t.type===`mousemove`&&t.preventDefault();let{store:a}=n.value;a.dispatch(PA(r,i,e))};return{onMoveStart:e=>{if(!e?.target)return;let{store:i}=n.value,a=t.entityId(),o=t.source.value,s=!JP(e.target,t.blockedKinds(o));if(s&&WP(n.value,e.evt,a,t.selectType))return;let c=nP(e.evt)||!!i.state.editor.selectedMap[a];i.dispatch(t.selectType===Qh.memo?XC(a,c):aw(a,c)),s&&(KP(i.state,o),pF.subscribe(r(o)).add(()=>qP(i.state,o)))}}}const hF=[`table-header-color`,`column-row`,`icon`,`input-padding`],gF=[`icon`];function _F(e,t,n){return mF(e,{entityId:()=>t.table.id,selectType:Qh.table,blockedKinds:e=>e===`document`?hF:gF,source:n})}function vF(){let e=new Set;return oa(()=>{Array.from(e).forEach(e=>ue(e)?e():e.unsubscribe()),e.clear()}),{addUnsubscribe:(...t)=>{t.forEach(t=>e.add(t))}}}function yF(e,t,n,r=null){if(!e||n!==e.tableId)return!1;switch(t){case`tableName`:case`tableComment`:return t===e.focusType}return r===e.columnId&&t===e.focusType}const bF=(e,t,n)=>e?.tableId===t&&e.selectColumnIds.includes(n);function xF(e,t,n,r=null){if(e?.tableId!==n)return!1;switch(t){case W.tableName:case W.tableComment:return t===e.focusType&&e.edit}return r===e.columnId&&t===e.focusType&&e.edit}const SF={grayColor1:`gray-1`,grayColor2:`gray-2`,grayColor3:`gray-3`,grayColor4:`gray-4`,grayColor5:`gray-5`,grayColor6:`gray-6`,grayColor7:`gray-7`,grayColor8:`gray-8`,grayColor9:`gray-9`,grayColor10:`gray-10`,grayColor11:`gray-11`,grayColor12:`gray-12`,accentColor1:`accent-1`,accentColor2:`accent-2`,accentColor3:`accent-3`,accentColor4:`accent-4`,accentColor5:`accent-5`,accentColor6:`accent-6`,accentColor7:`accent-7`,accentColor8:`accent-8`,accentColor9:`accent-9`,accentColor10:`accent-10`,accentColor11:`accent-11`,accentColor12:`accent-12`,canvasBackground:`gray-3`,canvasBoundaryBackground:`gray-1`,tableBackground:`gray-2`,tableSelect:`accent-8`,tableBorder:`gray-6`,memoBackground:`gray-2`,memoSelect:`accent-8`,memoBorder:`gray-6`,columnSelect:`gray-5`,columnHover:`gray-4`,relationshipHover:`accent-8`,toolbarBackground:`gray-1`,contextMenuBackground:`gray-2`,contextMenuSelect:`gray-4`,contextMenuHover:`accent-7`,contextMenuBorder:`gray-6`,minimapBorder:`override-black`,minimapShadow:`override-black`,minimapViewportBorder:`accent-7`,minimapViewportBorderHover:`accent-8`,toastBackground:`gray-2`,toastBorder:`gray-6`,dragSelectBackground:`accent-5`,dragSelectBorder:`accent-8`,scrollbarTrack:`grayA-3`,scrollbarThumb:`gray-9`,scrollbarThumbHover:`gray-10`,foreground:`gray-11`,active:`gray-12`,placeholder:`grayA-10`,focus:`accent-8`,inputActive:`accent-10`,keyPK:`custom-amber--9`,keyFK:`custom-ruby--9`,keyPFK:`custom-cyan--9`,diffInsertBackground:`custom-green--4`,diffDeleteBackground:`custom-red--4`,diffCrossBackground:`custom-blue--4`,diffInsertForeground:`custom-green--11`,diffDeleteForeground:`custom-red--11`,diffCrossForeground:`custom-blue--11`},CF={amber:Ht,amberA:Ut,amberDark:Wt,amberDarkA:Gt,blue:Kt,blueA:qt,blueDark:Jt,blueDarkA:Yt,bronze:Xt,bronzeA:Zt,bronzeDark:Qt,bronzeDarkA:$t,brown:en,brownA:tn,brownDark:nn,brownDarkA:rn,crimson:an,crimsonA:on,crimsonDark:sn,crimsonDarkA:cn,cyan:ln,cyanA:un,cyanDark:dn,cyanDarkA:fn,gold:pn,goldA:mn,goldDark:hn,goldDarkA:gn,grass:_n,grassA:vn,grassDark:yn,grassDarkA:bn,gray:xn,grayA:Sn,grayDark:Cn,grayDarkA:wn,green:Tn,greenA:En,greenDark:Dn,greenDarkA:On,indigo:kn,indigoA:An,indigoDark:jn,indigoDarkA:Mn,iris:Nn,irisA:Pn,irisDark:Fn,irisDarkA:In,jade:Ln,jadeA:Rn,jadeDark:zn,jadeDarkA:Bn,lime:Vn,limeA:Hn,limeDark:Un,limeDarkA:Wn,mauve:Gn,mauveA:Kn,mauveDark:qn,mauveDarkA:Jn,mint:Yn,mintA:Xn,mintDark:Zn,mintDarkA:Qn,olive:$n,oliveA:er,oliveDark:tr,oliveDarkA:nr,orange:rr,orangeA:ir,orangeDark:ar,orangeDarkA:or,pink:sr,pinkA:cr,pinkDark:lr,pinkDarkA:ur,plum:dr,plumA:fr,plumDark:pr,plumDarkA:mr,purple:hr,purpleA:gr,purpleDark:_r,purpleDarkA:vr,red:yr,redA:br,redDark:xr,redDarkA:Sr,ruby:Cr,rubyA:wr,rubyDark:Tr,rubyDarkA:Er,sage:Dr,sageA:Or,sageDark:kr,sageDarkA:Ar,sand:jr,sandA:Mr,sandDark:Nr,sandDarkA:Pr,sky:Fr,skyA:Ir,skyDark:Lr,skyDarkA:Rr,slate:zr,slateA:Br,slateDark:Vr,slateDarkA:Hr,teal:Ur,tealA:Wr,tealDark:Gr,tealDarkA:Kr,tomato:qr,tomatoA:Jr,tomatoDark:Yr,tomatoDarkA:Xr,violet:Zr,violetA:Qr,violetDark:$r,violetDarkA:ei,yellow:ti,yellowA:ni,yellowDark:ri,yellowDarkA:ii};Object.values({dark:`dark`,light:`light`}),Object.values({gray:`gray`,mauve:`mauve`,slate:`slate`,sage:`sage`,olive:`olive`,sand:`sand`}),Object.values({gray:`gray`,gold:`gold`,bronze:`bronze`,brown:`brown`,yellow:`yellow`,amber:`amber`,orange:`orange`,tomato:`tomato`,red:`red`,ruby:`ruby`,crimson:`crimson`,pink:`pink`,plum:`plum`,purple:`purple`,violet:`violet`,iris:`iris`,indigo:`indigo`,blue:`blue`,cyan:`cyan`,teal:`teal`,jade:`jade`,green:`green`,grass:`grass`,lime:`lime`,mint:`mint`,sky:`sky`}),Object.keys(SF);const wF=[`tomato`,`gold`,`grass`,`teal`,`iris`,`purple`,`plum`,`pink`].map(e=>ze(CF,`${e}.${e}9`)??``);function TF(e){let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)|0;return wF[Math.abs(t)%wF.length]}function EF(e,t){let n=aP(e),{addUnsubscribe:r}=vF(),i=Ea({force:!1}),a=()=>{i.force=!i.force};aa(()=>{let{store:e}=n.value,{editor:{sharedFocusTrackerMap:t}}=e.state;r(Da(t).subscribe(a))});let o=()=>{let{store:e}=n.value;return i.force,Object.values(e.state.editor.sharedFocusTrackerMap)};return{sharedFocusTableColor:()=>{let e=o().find(e=>e.tableId===t);return e?TF(e.id):null},sharedFocusColor:(e,n)=>{let r=o().find(r=>yF(r,e,t,n));return r?TF(r.id):null}}}function DF(e,t){let n=aP(e),{addUnsubscribe:r}=vF(),i=Ea({force:!1}),a=()=>{i.force=!i.force};return aa(()=>{let{store:e}=n.value,{editor:{sharedSelectionTrackerMap:t}}=e.state;r(Da(t).subscribe(a))}),{sharedSelectColor:()=>{let{store:e}=n.value;i.force;let r=Object.values(e.state.editor.sharedSelectionTrackerMap).find(e=>e.selectedIds.includes(t));return r?TF(r.id):null}}}const OF=gi(`document`),kF=e=>Va(e,OF),AF=e=>e>.6?IP[0]:e>.5?IP[1]:e>.4?IP[2]:e>.3?IP[3]:IP[4],jF=(e,t)=>{let n=aP(t),r=_P(t),i=kF(t),{sharedFocusTableColor:a}=EF(t,e.table.id),{sharedSelectColor:o}=DF(t,e.table.id),{onMoveStart:s}=_F(t,e,i),c=t=>{let{emitter:r}=n.value;r.emit(KN({x:t.evt.clientX,y:t.evt.clientY,color:e.table.ui.color}))};return()=>{let{store:t}=n.value,{editor:l}=t.state,{table:u}=e,d=r.value,f=i.value,p=!!l.selectedMap[u.id],m=T_(t.state,u,f),{zoomLevel:h}=F_(t.state,f),g=Be(u.name.trim()),_=a(),v=o(),ee=_??v;return A`<k-group id=${e.preview?``:`table-${u.id}`} name="table high-level-table" kind="table" visible=${e.visible??!0} selected=${p} sharedFocus=${_} sharedSelect=${v} x=${m.x} y=${m.y} @mousedown=${s} @touchstart=${s}><k-rect name="table-body" x=${1/2} y=${1/2} width=${m.width-1} height=${m.height-1} cornerRadius=${6} fill=${d.tableBackground} stroke=${p?d.tableSelect:d.tableBorder} strokeWidth=${1} />${ee?A`<k-rect name="table-ring" x=${-1/2} y=${-1/2} width=${m.width+1} height=${m.height+1} cornerRadius=${6} stroke=${ee} strokeWidth=${1} />`:null}<k-rect name="table-header-color" kind="table-header-color" x=${1} y=${0} width=${m.width-2} height=${4} cornerRadius=${[6,6,0,0]} fill=${u.ui.color} @click=${c} @mouseenter=${e=>{HP(e,VP)}} @mouseleave=${e=>{HP(e,``)}} /><k-text name="high-level-table-name" x=${1} y=${9} width=${m.width-2} height=${m.height-18} text=${g?`unnamed`:u.name} fill=${g?d.placeholder:d.active} fontFamily=${jP} fontSize=${AF(h)} fontStyle="bold" align="center" verticalAlign="middle" wrap="char" /></k-group>`}};Id`
|
|
32
32
|
position: absolute;
|
|
33
33
|
|
|
34
34
|
&.vertical {
|
|
@@ -47,8 +47,8 @@ import*as e from"comlink";import{CHARSET as t,DECLARATION as n,IMPORT as r,LAYER
|
|
|
47
47
|
width: ${5}px;
|
|
48
48
|
height: ${5}px;
|
|
49
49
|
}
|
|
50
|
-
`;const
|
|
51
|
-
`),document.body.append(e);let t=e.getBoundingClientRect().height;return e.remove(),
|
|
52
|
-
`)}function
|
|
53
|
-
`&&(r+=1),n.push({text:i,start:t})}return n}function
|
|
54
|
-
`),oe=e.preview?0:qN(ee,_),{width:se,height:ce}=Vh(_),le=1/2;return O`<k-group id=${e.preview?``:`memo-${_.id}`} name="memo" kind="memo" selected=${ne} sharedSelect=${re} x=${_.ui.x} y=${_.ui.y} @mousedown=${a} @touchstart=${a} @mouseenter=${s} @mouseleave=${c}><k-rect name="memo-shared-select" kind="memo-shared-select" x=${-.5} y=${-.5} width=${se+1} height=${ce+1} cornerRadius=${7} stroke=${re??``} strokeWidth=${1} listening=${!1} /><k-rect name="memo-body" kind="memo-body" x=${le} y=${le} width=${se-1} height=${ce-1} cornerRadius=${6} fill=${te.memoBackground} stroke=${ne?te.memoSelect:te.memoBorder} strokeWidth=${1} /><k-group name="memo-container" kind="memo-container" x=${1} y=${1}><k-rect name="memo-header-color" kind="memo-header-color" x=${0} y=${-1} width=${se-2} height=${4} cornerRadius=${[6,6,0,0]} fill=${_.ui.color} @click=${f} @mouseenter=${e=>{FM(e,PM)}} @mouseleave=${e=>{FM(e,``)}} />${cP({icon:`x`,name:`memo-remove`,kind:`icon`,size:12,color:o.hover?o.removeHover?te.active:te.foreground:MM,x:8+_.ui.width-12,y:8,click:d,mouseenter:l,mouseleave:u})}<k-group name="memo-text-clip" kind="memo-textarea" x=${8} y=${24} clipX=${0} clipY=${0} clipWidth=${_.ui.width} clipHeight=${_.ui.height} @click=${p} @mouseenter=${m} @mouseleave=${h} @wheel=${g}><k-rect name="memo-textarea-hit" kind="memo-textarea" x=${0} y=${0} width=${_.ui.width} height=${_.ui.height} fill=${NM} /><k-text name="memo-textarea" kind="memo-textarea" offsetY=${oe} text=${ae} visible=${!ie} fill=${te.active} fontFamily=${wM} fontSize=${12} fontStyle=${`400`} lineHeight=${PN()} wrap="none" /></k-group><${kN} .memo=${_} .top=${ce} .left=${se} /></k-group></k-group>`}};function uP(e,t,n){return Math.abs(e.x-t.x)<.5?{x:e.x,y:e.y+Math.sign(t.y-e.y)*n}:{x:e.x+Math.sign(t.x-e.x)*n,y:e.y}}function dP(e,t){if(e.length<3||t<=0)return e;let n=[e[0]],r=e=>{let t=n[n.length-1];Math.abs(t.x-e.x)<.5&&Math.abs(t.y-e.y)<.5||n.push(e)};for(let n=1;n<e.length-1;n++){let i=e[n-1],a=e[n],o=e[n+1];if(Math.abs(a.x-i.x)<.5==Math.abs(o.x-a.x)<.5){r(a);continue}let s=Math.abs(a.x-i.x)+Math.abs(a.y-i.y),c=Math.abs(o.x-a.x)+Math.abs(o.y-a.y),l=Math.min(t,s/2,c/2);if(l<2){r(a);continue}r(uP(a,i,l)),r(uP(a,o,l))}return r(e[e.length-1]),n}function fP(e){let{start:t,end:n}=e,[r,i]=Ug(e),a=hA(t,n);return{path:pP(t,n,gA(mA(r),a),gA(mA(i),a),Kg(e)),line:mP(t,n)}}function pP(e,t,n,r,i){let a={start:{x1:e.x,y1:e.y,x2:e.x,y2:e.y},end:{x1:t.x,y1:t.y,x2:t.x,y2:t.y}},o={M:{x:0,y:0},L:{x:0,y:0},Q:{x:0,y:0},d(){return e.tableId===t.tableId?[[{x:this.M.x,y:this.M.y},{x:this.L.x,y:this.L.y}]]:_P(dP(i&&i.length>1?i:vP(this.M,this.L,e.direction),8))}},s=1;return e.direction===I.left||e.direction===I.right?(e.direction===I.left&&(s*=-1),a.start.x2=e.x+s*n,a.start.x1+=s*25,o.M.x=a.start.x2,o.M.y=e.y):(e.direction===I.top||e.direction===I.bottom)&&(e.direction===I.top&&(s*=-1),a.start.y2=e.y+s*n,a.start.y1+=s*25,o.M.x=e.x,o.M.y=a.start.y2),s=1,t.direction===I.left||t.direction===I.right?(t.direction===I.left&&(s*=-1),a.end.x2=t.x+s*r,a.end.x1+=s*25,o.L.x=a.end.x2,o.L.y=t.y):(t.direction===I.top||t.direction===I.bottom)&&(t.direction===I.top&&(s*=-1),a.end.y2=t.y+s*r,a.end.y1+=s*25,o.L.x=t.x,o.L.y=a.end.y2),{line:a,path:o}}function mP(e,t){let n={start:{base:{x1:e.x,y1:e.y,x2:e.x,y2:e.y},base2:{x1:e.x,y1:e.y,x2:e.x,y2:e.y},center:{x1:e.x,y1:e.y,x2:e.x,y2:e.y},center2:{x1:e.x,y1:e.y,x2:e.x,y2:e.y}},end:{base:{x1:t.x,y1:t.y,x2:t.x,y2:t.y},base2:{x1:t.x,y1:t.y,x2:t.x,y2:t.y},left:{x1:t.x,y1:t.y,x2:t.x,y2:t.y},center:{x1:t.x,y1:t.y,x2:t.x,y2:t.y},center2:{x1:t.x,y1:t.y,x2:t.x,y2:t.y},right:{x1:t.x,y1:t.y,x2:t.x,y2:t.y}}},r={cx:t.x,cy:t.y},i={cx:e.x,cy:e.y},a=1;return e.direction===I.left||e.direction===I.right?(e.direction===I.left&&(a*=-1),n.start.base.x1=n.start.base.x2+=a*11,n.start.base2.x1=n.start.base2.x2+=a*18,n.start.center.x1=n.start.base.x1,n.start.base.y1-=7,n.start.base.y2+=7,n.start.base2.y1-=7,n.start.base2.y2+=7,n.start.center2.x1+=a*25,i.cx+=a*18):(e.direction===I.top||e.direction===I.bottom)&&(e.direction===I.top&&(a*=-1),n.start.base.y1=n.start.base.y2+=a*11,n.start.base2.y1=n.start.base2.y2+=a*18,n.start.center.y1=n.start.base.y1,n.start.base.x1-=7,n.start.base.x2+=7,n.start.base2.x1-=7,n.start.base2.x2+=7,n.start.center2.y1+=a*25,i.cy+=a*18),a=1,t.direction===I.left||t.direction===I.right?(t.direction===I.left&&(a*=-1),n.end.base.x1=n.end.base.x2+=a*11,n.end.base2.x1=n.end.base2.x2+=a*18,n.end.center.x1=n.end.left.x1=n.end.right.x1=n.end.base.x1,n.end.base.y1-=7,n.end.base.y2+=7,n.end.base2.y1-=7,n.end.base2.y2+=7,n.end.left.y2+=7,n.end.right.y2-=7,n.end.center2.x1+=a*25,r.cx+=a*18):(t.direction===I.top||t.direction===I.bottom)&&(t.direction===I.top&&(a*=-1),n.end.base.y1=n.end.base.y2+=a*11,n.end.base2.y1=n.end.base2.y2+=a*18,n.end.center.y1=n.end.left.y1=n.end.right.y1=n.end.base.y1,n.end.base.x1-=7,n.end.base.x2+=7,n.end.base2.x1-=7,n.end.base2.x2+=7,n.end.left.x2+=7,n.end.right.x2-=7,n.end.center2.y1+=a*25,r.cy+=a*18),{line:n,circle:r,startCircle:i}}function hP(e){if(!e.length)return``;let[[t]]=e,n=`M${gP(t.x)} ${gP(t.y)}`;for(let[,t]of e)n+=`L${gP(t.x)} ${gP(t.y)}`;return n}function gP(e){return Math.round(e*100)/100}function _P(e){let t=[];for(let n=1;n<e.length;n++)t.push([e[n-1],e[n]]);return t}function vP(e,t,n){if(_A(n)){if(Math.abs(e.y-t.y)<.5)return[e,t];let n=(e.x+t.x)/2;return[e,{x:n,y:e.y},{x:n,y:t.y},t]}if(Math.abs(e.x-t.x)<.5)return[e,t];let r=(e.y+t.y)/2;return[e,{x:e.x,y:r},{x:t.x,y:r},t]}const yP=`relationship-decoration`,bP=({x1:e,y1:t,x2:n,y2:r})=>[e,t,n,r];function xP(e,t){return O`<k-line name=${yP} kind=${yP} points=${bP(e)} stroke=${t} strokeWidth=${2} listening=${!1} />`}function SP({cx:e,cy:t},n){return O`<k-circle name=${yP} kind=${yP} x=${e} y=${t} radius=${6} stroke=${n} strokeWidth=${2} listening=${!1} />`}const CP={1:{ring:!0,ticks:[`base`,`left`,`center`,`right`]},[Ym.ZeroOne]:{ring:!0,ticks:[`base`,`center`]},[Ym.ZeroN]:{ring:!0,ticks:[`left`,`center`,`right`]},[Ym.OneOnly]:{ring:!1,ticks:[`base`,`base2`,`center2`]},[Ym.OneN]:{ring:!1,ticks:[`base`,`left`,`center2`,`right`]},32:{ring:!1,ticks:[`base`,`center2`]},64:{ring:!1,ticks:[`left`,`center2`,`right`]}};function wP(e,{path:t,line:n},r){let i=CP[e];return i?O`${xP(t.line.end,r)}${i.ring?SP(n.circle,r):null}${i.ticks.map(e=>xP(n.line.end[e],r))}`:null}const TP=[10,10],EP=[];function DP({direction:e}){let t=e===I.left||e===I.top?-1:1;return e===I.left||e===I.right?{along:{x:t,y:0},across:{x:0,y:1}}:{along:{x:0,y:t},across:{x:1,y:0}}}function OP({x:e,y:t},{along:n,across:r},i,a){return{x:e+n.x*i+r.x*a,y:t+n.y*i+r.y*a}}function kP({x:e,y:t},n){return`M${e-n} ${t}A${n} ${n} 0 0 1 ${e+n} ${t}A${n} ${n} 0 0 1 ${e-n} ${t}`}function AP(e){let t=DP(e),n=(n,r)=>OP(e,t,n,r),r=n(11,0);return[hP([[n(11,-7),n(11,7)]]),hP([[n(18,-7),n(18,7)]]),hP([[r,n(0,7)]]),hP([[r,n(0,-7)]]),kP(n(18,0),6)].join(``)}function jP({start:e,end:t},{line:n},r){return`${hP([[{x:e.x,y:e.y},{x:n.start.x2,y:n.start.y2}],...r,[{x:n.end.x2,y:n.end.y2},{x:t.x,y:t.y}]])}${AP(e)}${AP(t)}`}function MP(e){return 8/(e>0?e:1)}const NP=(e,t)=>{let n=Qj(t),r=uM(t),i=wa({hover:!1}),a=()=>{let{relationship:t}=e,{store:r}=n.value;i.hover=!0,r.dispatch(Bv({columnIds:[...t.start.columnIds,...t.end.columnIds]}))},o=()=>{let{store:e}=n.value;i.hover=!1,e.dispatch(Bv({columnIds:[]}))};return()=>{let{store:t}=n.value,{editor:s,settings:c}=t.state,{relationship:l,strokeWidth:u}=e,d=r.value,f=fP(l),{path:p,line:m}=f,h=p.path.d(),g=!!s.hoverRelationshipMap[l.id],ee=i.hover||g?d.relationshipHover:l.identification?d.keyPFK:d.keyFK,_=wP(l.relationshipType,f,ee);return O`<k-group name=${`relationship ${l.id}`} kind="relationship" @mouseenter=${a} @mouseleave=${o}><k-path name="relationship-hit-area" kind="relationship-hit-area" data=${jP(l,p,h)} hitStrokeWidth=${MP(c.zoomLevel)} lineCap="round" /><k-path name="relationship-route" kind="relationship-route" data=${hP(h)} dash=${l.identification?EP:TP} stroke=${ee} strokeWidth=${u} listening=${!1} />${xP(p.line.start,ee)}${xP(m.line.start.base,ee)}${l.startRelationshipType===Xm.ring?O`${SP(m.startCircle,ee)}${xP(m.line.start.center,ee)}`:O`${xP(m.line.start.base2,ee)}${xP(m.line.start.center2,ee)}`}${_}</k-group>`}},PP=e=>()=>{let{relationships:t,viewport:n}=e,r=e.strokeWidth??2,i=n?t.filter(e=>o_(n,e,r)):t;return O`<k-group name="relationship-group" kind="relationship-group">${su(i,e=>e.id,e=>O`<${NP} .relationship=${e} .strokeWidth=${r} />`)}</k-group>`},FP=e=>e.evt?.detail??0;function IP(){let e=null;return{track(t,n){FP(n)<=1&&(e=t)},isDouble(t,n){return FP(n)>=2&&e===t}}}const LP=(e,t)=>{let n=z(e,R.primaryKey),r=z(e,R.foreignKey);return n&&r?t.keyPFK:n?t.keyPK:r?t.keyFK:MM},RP=(e,t,n)=>t?e.columnSelect:n?e.columnHover:MM,zP=(e,t)=>{let n=Qj(t),r=uM(t),i=wa({hover:!1,removeHover:!1}),{addUnsubscribe:a}=uN(),o=IP(),s=null,c=()=>{s?.unsubscribe(),s=null};a(c);let l=t=>{if(e.preview||e.ghost||t.evt.button!==0)return;c();let n=!1,r=oN.subscribe({next:()=>{n||(n=!0,e.onDragstart?.(e.column.id,t))},complete:()=>{s===r&&(s=null),n&&e.onDragend?.()}});s=r},u=()=>{i.hover=!0},d=()=>{i.hover=!1},f=e=>{i.removeHover=!0,FM(e,PM)},p=e=>{i.removeHover=!1,FM(e,``)},m=(e,t)=>t?i.removeHover?e.active:e.foreground:MM,h=(t,r)=>{let{store:i}=n.value,{column:a}=e;i.dispatch(mv({tableId:a.tableId,columnId:a.id,focusType:t,$mod:Yj(r.evt),shiftKey:r.evt.shiftKey}))},g=(t,r)=>{if(!o.isDouble(t,r))return;let{store:i}=n.value,{column:a}=e;i.dispatch(MS(t)?IS(t,a.tableId,a.id):bv())},ee=()=>{let{store:t}=n.value,{column:r}=e;t.dispatch(FS(r.tableId,[r.id]))},_=()=>{let{column:t}=e;if(t.ui.keys===0)return;let{store:r}=n.value;r.dispatch(Sk(t.id))},te=()=>{let{store:e}=n.value;e.dispatch(Ck())},ne=({focusType:t,x:n,width:i,text:a,fill:s,focus:c,edit:l,sharedFocus:u,ellipsis:d})=>O`<k-group name=${`column-col ${t}`} kind="column-col" sharedFocus=${u} x=${n} y=${0} @mousedown=${e=>{h(t,e),o.track(t,e)}} @dblclick=${e=>{g(t,e)}}><k-text name="cell-text" y=${2} width=${i} height=${QN()} text=${a} fill=${s} fontFamily=${wM} fontSize=${12} verticalAlign="middle" wrap="none" ellipsis=${d} visible=${!l} hitFunc=${iP} />${c?O`<k-rect name="cell-focus-border" y=${20.5} width=${i} height=${AM} fill=${XN(r.value,l,e.editorFocused)} listening=${!1} />`:null}${u?O`<k-rect name="cell-shared-focus-border" y=${22.5} width=${i+8} height=${AM} fill=${u} listening=${!1} />`:null}</k-group>`,re=({columnType:t,focusType:n,x:i,width:a})=>{let{column:o}=e,s=r.value;switch(t){case P.columnName:return ne({focusType:n,x:i,width:a,text:o.name.trim()?o.name:`column`,fill:o.name.trim()?s.active:s.placeholder,focus:e.focusName,edit:e.editName,sharedFocus:e.sharedFocusName,ellipsis:!0});case P.columnDefault:return ne({focusType:n,x:i,width:a,text:o.default.trim()?o.default:`default`,fill:o.default.trim()?s.active:s.placeholder,focus:e.focusDefault,edit:e.editDefault,sharedFocus:e.sharedFocusDefault,ellipsis:!0});case P.columnComment:return ne({focusType:n,x:i,width:a,text:o.comment.trim()?o.comment:`comment`,fill:o.comment.trim()?s.active:s.placeholder,focus:e.focusComment,edit:e.editComment,sharedFocus:e.sharedFocusComment,ellipsis:!0});case P.columnDataType:return ne({focusType:n,x:i,width:a,text:o.dataType.trim()?o.dataType:`dataType`,fill:o.dataType.trim()?s.active:s.placeholder,focus:e.focusDataType,edit:e.editDataType,sharedFocus:e.sharedFocusDataType,ellipsis:!0});case P.columnNotNull:return ne({focusType:n,x:i,width:a,text:z(o.options,L.notNull)?`N-N`:`NULL`,fill:s.active,focus:e.focusNotNull,edit:!1,sharedFocus:e.sharedFocusNotNull,ellipsis:!1});case P.columnUnique:return ne({focusType:n,x:i,width:a,text:`UQ`,fill:z(o.options,L.unique)?s.active:s.placeholder,focus:e.focusUnique,edit:!1,sharedFocus:e.sharedFocusUnique,ellipsis:!1});case P.columnAutoIncrement:return ne({focusType:n,x:i,width:a,text:`AI`,fill:z(o.options,L.autoIncrement)?s.active:s.placeholder,focus:e.focusAutoIncrement,edit:!1,sharedFocus:e.sharedFocusAutoIncrement,ellipsis:!1})}return null},ie=()=>{let{store:t}=n.value;return nP(t.state,{name:e.widthName,comment:e.widthComment,dataType:e.widthDataType,default:e.widthDefault}).map(e=>({columnType:e.columnType,template:re(e)})).filter(({template:e})=>!!e)};return()=>{let{store:t}=n.value,{editor:a}=t.state,{column:o,selected:s,width:c}=e,h=r.value,g=!!(e.hovered||i.hover||a.hoverColumnMap[o.id]),ne=!!a.draggingColumnMap[o.id],re=c-18,ae=RP(h,s,g);return O`<k-group id=${e.preview?``:`column-${o.id}`} name="column-row" kind="column-row" tableId=${o.tableId} selected=${s} y=${e.y} opacity=${ne?.5:1} visible=${!e.ghost} @mousedown=${l} @mouseenter=${u} @mouseleave=${d}><k-rect name="column-row-background" x=${1} width=${c-2} height=${24} fill=${ae} />${cP({icon:`key-round`,name:`column-col column-key`,kind:`column-col`,size:12,color:LP(o.ui.keys,h),x:9,y:6,mouseenter:_,mouseleave:te})}${su(ie(),({columnType:e})=>e,({template:e})=>e)}${cP({icon:`x`,name:`column-remove`,kind:`icon`,size:12,color:m(h,g),x:9+re-12,y:6,click:ee,mouseenter:f,mouseleave:p})}</k-group>`}};function BP(e,t){let{collections:n,doc:r}=e,i=r_(e),a=j(n).collection(`tableEntities`).selectByIds(r.tableIds).filter(t=>a_(i,e,t)).sort((e,t)=>t.ui.zIndex-e.ui.zIndex);for(let n of a){let r=Rh(e,n);if(!(t.x>=r.x&&t.x<=r.x+r.width&&t.y>=r.y&&t.y<=r.y+r.height))continue;let i=Bh(e,n,0).y;if(t.y<i)return null;let a=Math.floor((t.y-i)/24),o=n.columnIds[a];return o?{tableId:n.id,columnId:o,index:a}:null}return null}function VP(e,t){let n=e.getAbsolutePosition(),r=e.getAbsoluteScale();return{x:(n.x-t.x)/(r.x||1),y:(n.y-t.y)/(r.y||1)}}function HP(e){let t=new Map,n=null,r=null,i=(e,n,r,i)=>{t.get(e)?.(),e.offsetX(r),e.offsetY(i),Qd(n);let a=!1,o=-1,s=()=>{a||(a=!0,clearTimeout(o),t.delete(e),$d(n))},c=new si({node:e,offsetX:0,offsetY:0,duration:.3,easing:oi.EaseInOut,onFinish:s,onReset:s});t.set(e,()=>{c.destroy(),e.offsetX(0),e.offsetY(0),s()}),o=setTimeout(()=>t.get(e)?.(),500),c.play()},a=()=>{let e=n;return n=null,r?.(),r=null,e},o=()=>{let e=a();if(e)for(let t of e){let{node:e}=t,n=e.getLayer();if(!n||!e.getStage())continue;let{x:r,y:a}=VP(e,t);!r&&!a||i(e,n,r,a)}};return{snapshot(){n=e().map(e=>{let{x:t,y:n}=e.getAbsolutePosition();return{node:e,x:t,y:n}}),r??=Jd(o)},cancel(){a(),[...t.values()].forEach(e=>e())}}}function UP(e,t){let n=Qj(e),r=()=>n.value.store.state.editor.focusTable;return{hasFocus:(e,n)=>dN(r(),e,t,n),hasEdit:(e,n)=>pN(r(),e,t,n),hasSelectColumn:e=>fN(r(),t,e)}}const WP=(e,t)=>{let n=Qj(t),r=uM(t),{hasEdit:i,hasFocus:a,hasSelectColumn:o}=UP(t,e.table.id),{sharedFocusColor:s,sharedFocusTableColor:c}=vN(t,e.table.id),{sharedSelectColor:l}=yN(t,e.table.id),{onMoveStart:u}=lN(t,e),{addUnsubscribe:d}=uN(),f=wa({hover:!1,iconHover:null,dragstartId:null}),p=IP(),m=null,h=null,g=null,ee=()=>{f.hover=!0},_=()=>{f.hover=!1},te=e=>t=>{f.iconHover=e,FM(t,PM)},ne=e=>{f.iconHover=null,FM(e,``)},re=(e,t,n)=>n?f.iconHover===t?e.active:e.foreground:MM,ie=(t,n)=>n?e.editorFocused===!1?t.placeholder:t.tableSelect:t.tableBorder,ae=t=>{let{emitter:r}=n.value;r.emit(Bj({x:t.evt.clientX,y:t.evt.clientY,color:e.table.ui.color}))},oe=()=>{let{store:t}=n.value;t.dispatch(PS(e.table.id))},se=()=>{let{store:t}=n.value;t.dispatch(OS(e.table.id))},ce=t=>{let{store:r}=n.value;r.dispatch(fv({tableId:e.table.id,focusType:t}))},le=(e,t)=>{if(!p.isDouble(e,t))return;let{store:r}=n.value;r.dispatch(bv())},ue=e=>{let t=h,n=t?.findOne(`.scene`);if(!t||!n)return null;t.setPointersPositions(e);let r=t.getPointerPosition();return r?n.getAbsoluteTransform().copy().invert().point(r):null},de=e=>{let{store:t}=n.value,r=ue(e);if(!r)return;let i=BP(t.state,r);if(!i)return;let{editor:{draggableColumn:a}}=t.state;!a||a.columnIds.includes(i.columnId)||(g?.snapshot(),t.dispatch(xk(i.columnId,i.tableId)))},v=()=>{let{store:e,emitter:t}=n.value;!m&&f.dragstartId===null||(m?.unsubscribe(),m=null,h=null,f.dragstartId=null,e.dispatch(Qv()),t.emit(Vj()))},fe=(e,t)=>{let{store:r}=n.value,{editor:{focusTable:i}}=r.state;if(!i||!i.columnId)return;let a=t.target?.getStage()??null;a&&(m?.unsubscribe(),h=a,f.dragstartId=e,g??=HP(()=>a.find(`.column-row`)),r.dispatch(bk(Yj(t.evt))),m=oN.subscribe({next:({event:e})=>{de(e)},complete:v}))};ra(()=>{let{emitter:e}=n.value;d(e.on({dragendColumnAll:()=>{m?.unsubscribe(),m=null}}),()=>{m?.unsubscribe(),m=null,g?.cancel()})});let y=({focusType:t,x:n,width:i,text:a,fill:o,focus:s,edit:c,sharedFocus:l})=>O`<k-group name=${`input-padding ${t}`} kind="input-padding" sharedFocus=${l} x=${n} y=${0} @mousedown=${e=>{ce(t),p.track(t,e)}} @dblclick=${e=>{le(t,e)}}><k-text name="cell-text" y=${2} width=${i} height=${QN()} text=${a} fill=${o} fontFamily=${wM} fontSize=${12} verticalAlign="middle" wrap="none" ellipsis=${!0} visible=${!c} hitFunc=${aP} />${s?O`<k-rect name="cell-focus-border" y=${20.5} width=${i} height=${AM} fill=${XN(r.value,c,e.editorFocused)} listening=${!1} />`:null}${l?O`<k-rect name="cell-shared-focus-border" y=${22.5} width=${i+8} height=${AM} fill=${l} listening=${!1} />`:null}</k-group>`;return()=>{let{store:t}=n.value,{editor:d,collections:p}=t.state,{table:m}=e,h=r.value,g=!!d.selectedMap[m.id],ce=zh(t.state,m),le=Rh(t.state,m),ue=le.width-18,de=!!(e.hovered||f.hover),pe=e.ghostColumnId??f.dragstartId,b=pe!==null&&!m.columnIds.includes(pe)?pe:null,me=c(),he=l(),ge=s(W.tableName),_e=s(W.tableComment),ve=me??he,ye=eP(t.state,m),be=ye.find(e=>e.focusType===W.tableName),xe=ye.find(e=>e.focusType===W.tableComment),Se=j(p).collection(`tableColumnEntities`).selectByIds(b?[...m.columnIds,b]:m.columnIds);return O`<k-group id=${e.preview?``:`table-${m.id}`} name="table" kind="table" visible=${e.visible??!0} selected=${g} sharedFocus=${me} sharedSelect=${he} x=${le.x} y=${le.y} @mousedown=${u} @touchstart=${u} @mouseenter=${ee} @mouseleave=${_}><k-rect name="table-body" x=${1/2} y=${1/2} width=${le.width-1} height=${le.height-1} cornerRadius=${6} fill=${h.tableBackground} stroke=${ie(h,g)} strokeWidth=${1} />${ve?O`<k-rect name="table-ring" x=${-1/2} y=${-1/2} width=${le.width+1} height=${le.height+1} cornerRadius=${6} stroke=${ve} strokeWidth=${1} listening=${!1} />`:null}<k-rect name="table-header-color" kind="table-header-color" x=${1} y=${0} width=${le.width-2} height=${4} cornerRadius=${[6,6,0,0]} fill=${m.ui.color} @click=${ae} @mouseenter=${e=>{FM(e,PM)}} @mouseleave=${e=>{FM(e,``)}} /><k-group name="table-header" x=${9} y=${9}>${cP({icon:`plus`,name:`table-add-column`,kind:`icon`,size:12,color:re(h,`plus`,de),mouseenter:te(`plus`),mouseleave:ne,x:ue-24-4,y:0,click:oe})}${cP({icon:`x`,name:`table-remove`,kind:`icon`,size:12,color:re(h,`x`,de),mouseenter:te(`x`),mouseleave:ne,x:ue-12,y:0,click:se})}<k-group name="table-header-inputs" y=${14}>${be?y({...be,text:m.name.trim()?m.name:`table`,fill:m.name.trim()?h.active:h.placeholder,focus:a(W.tableName),edit:i(W.tableName),sharedFocus:ge}):null}${xe?y({...xe,text:m.comment.trim()?m.comment:`comment`,fill:m.comment.trim()?h.active:h.placeholder,focus:a(W.tableComment),edit:i(W.tableComment),sharedFocus:_e}):null}</k-group></k-group><k-group name="table-columns">${su(Se,e=>e.id,(n,r)=>O`<${zP} .column=${n} .y=${Bh(t.state,m,r).y-le.y} .width=${le.width} .selected=${o(n.id)} .hovered=${n.id===e.hoveredColumnId} .widthName=${ce.name} .widthDataType=${ce.dataType} .widthDefault=${ce.default} .widthComment=${ce.comment} .focusName=${a(W.columnName,n.id)} .focusDataType=${a(W.columnDataType,n.id)} .focusNotNull=${a(W.columnNotNull,n.id)} .focusDefault=${a(W.columnDefault,n.id)} .focusComment=${a(W.columnComment,n.id)} .focusUnique=${a(W.columnUnique,n.id)} .focusAutoIncrement=${a(W.columnAutoIncrement,n.id)} .editName=${i(W.columnName,n.id)} .editDataType=${i(W.columnDataType,n.id)} .editDefault=${i(W.columnDefault,n.id)} .editComment=${i(W.columnComment,n.id)} .sharedFocusName=${s(W.columnName,n.id)} .sharedFocusDataType=${s(W.columnDataType,n.id)} .sharedFocusNotNull=${s(W.columnNotNull,n.id)} .sharedFocusDefault=${s(W.columnDefault,n.id)} .sharedFocusComment=${s(W.columnComment,n.id)} .sharedFocusUnique=${s(W.columnUnique,n.id)} .sharedFocusAutoIncrement=${s(W.columnAutoIncrement,n.id)} .ghost=${n.id===b} .preview=${e.preview} .editorFocused=${e.editorFocused} .onDragstart=${fe} .onDragend=${v} />`)}</k-group></k-group>`}},GP=(e,t)=>e.ui.zIndex-t.ui.zIndex,KP=(e,t)=>{let n=Qj(t),r=uM(t);return()=>{let{store:t}=n.value,{box:i,scale:a}=e,{settings:{show:o,zoomLevel:s},doc:{tableIds:c,memoIds:l,relationshipIds:u},collections:d}=t.state,f=r.value,p=j(d).collection(`tableEntities`).selectByIds(c).sort(GP),m=j(d).collection(`memoEntities`).selectByIds(l).sort(GP),h=j(d).collection(`relationshipEntities`).selectByIds(u),g=wh(s);return O`<k-layer name="export-scene" listening=${!1} x=${-i.x*a} y=${-i.y*a} scaleX=${a} scaleY=${a}><k-rect name="export-background" x=${i.x} y=${i.y} width=${i.width} height=${i.height} fill=${f.canvasBackground} />${z(o,N.relationship)?O`<${PP} .relationships=${h} />`:null}${su(p,e=>e.id,e=>g?O`<${xN} .table=${e} />`:O`<${WP} .table=${e} />`)}${su(m,e=>e.id,e=>O`<${lP} .memo=${e} />`)}</k-layer>`}};async function qP({doc:e,theme:t,toWidth:n,zoomLevel:r}){let i=Xj({toWidth:n},{devtools:!1});i.store.dispatchSync(tk(e)),y(r)&&i.store.dispatchSync(rg({value:r})),await fM(32);let a=i.store.state.settings.zoomLevel,o=gM(i.store.state),s=_M(o,a),c=dM({app:i,container:document.createElement(`div`),scene:O`<${KP} .box=${o} .scale=${s} />`,width:o.width*s,height:o.height*s,theme:t});return await tf(),{stage:c.stage,box:o,scale:s,zoomLevel:a,destroy:()=>{c.destroy(),$j(i)}}}function JP(e){return`convertToBlob`in e?e.convertToBlob({type:`image/png`}):new Promise((t,n)=>{e.toBlob(e=>{e?t(e):n(Error(`[export-png] the canvas encoded no png`))},`image/png`)})}async function YP({doc:e,theme:t,pixelRatio:n,zoomLevel:r,toWidth:i}){let a=await qP({doc:e,theme:t,toWidth:i,zoomLevel:r});try{let e=mM(n,a.stage.width(),a.stage.height()),t=a.stage.toCanvas({pixelRatio:e}),r=await JP(t),{width:i,height:o}=t;return{blob:r,width:i,height:o,reduction:a.scale*e<n*a.zoomLevel?{documentWidth:a.box.width,documentHeight:a.box.height,width:i,height:o}:null}}finally{a.destroy()}}const XP=`400 12px ${CM}`,ZP=[`ERD editor 0123456789`,`가나다 漢字 テスト`,`—…€· iIlL1`];function QP(){if(typeof OffscreenCanvas>`u`)return null;let e=new OffscreenCanvas(1,1).getContext(`2d`);return e?(e.font=XP,t=>Math.round(e.measureText(t).width)+2):null}function $P(e){return ZP.map(t=>e(t))}function eF(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}const tF=new class{async probeFontWidths(){return $P(this.createToWidth())}async render(e){let t=this.createToWidth(),n=$P(t);if(!eF(n,e.fontProbe))throw Error(`[export-png] this realm measures text differently: ${n.join()} against ${e.fontProbe.join()}`);return YP({...e,toWidth:t})}createToWidth(){let e=QP();if(!e)throw Error(`[export-png] this realm has no 2d context to measure by`);return e}};self.onconnect=t=>{let n=t.ports[0];e.expose(tF,n)};
|
|
50
|
+
`;const MF={left:`left`,right:`right`,bottom:`bottom`,lt:`lt`,rt:`rt`,lb:`lb`,rb:`rb`},NF={vertical:`vertical`,horizontal:`horizontal`,edge:`edge`},PF={left:`ew-resize`,right:`ew-resize`,bottom:`ns-resize`,lt:`nwse-resize`,rt:`nesw-resize`,lb:`nesw-resize`,rb:`nwse-resize`},FF=(e,t)=>[{shape:NF.vertical,position:MF.left},{shape:NF.vertical,position:MF.right,left:t},{shape:NF.horizontal,position:MF.bottom,top:e},{shape:NF.edge,position:MF.lt},{shape:NF.edge,position:MF.rt,left:t},{shape:NF.edge,position:MF.lb,top:e},{shape:NF.edge,position:MF.rb,top:e,left:t}],IF=({shape:e,top:t=0})=>t===0&&e===NF.vertical?t:t-5/2,LF=({shape:e,left:t=0})=>t===0&&e===NF.horizontal?t:t-5/2,RF=e=>UP(e.evt)?{x:e.evt.clientX,y:e.evt.clientY}:{x:e.evt.touches[0]?.clientX??0,y:e.evt.touches[0]?.clientY??0},zF=(e,t)=>{let n=aP(t),r=0,i=0,a=({movementX:t,x:i},a)=>{let{zoomLevel:o}=n.value.store.state.settings,s=Object.assign({change:!1},e.memo.ui),c=t/o,l=a===H.left?s.width-c:s.width+c;return 116<l&&(t<0?i<r:i>r)&&(a===H.left&&(s.x+=c),r+=t,s.width=l,s.change=!0),s},o=({movementY:t,y:r},a)=>{let{zoomLevel:o}=n.value.store.state.settings,s=Object.assign({change:!1},e.memo.ui),c=t/o,l=a===H.top?s.height-c:s.height+c;return 100<l&&(t<0?r<i:r>i)&&(a===H.top&&(s.y+=c),i+=t,s.height=l,s.change=!0),s},s=(t,r)=>{t.event.type===`mousemove`&&t.event.preventDefault();let{store:i}=n.value,s=null,c=null;switch(r){case MF.left:case MF.right:s=a(t,r);break;case MF.bottom:c=o(t,H.bottom);break;case MF.lt:s=a(t,H.left),c=o(t,H.top);break;case MF.rt:s=a(t,H.right),c=o(t,H.top);break;case MF.lb:s=a(t,H.left),c=o(t,H.bottom);break;case MF.rb:s=a(t,H.right),c=o(t,H.bottom)}if(!s?.change&&!c?.change)return;let{id:l,ui:u}=e.memo,d=s?.change?s:u,f=c?.change?c:u;i.dispatch(Gx({id:l,x:d.x,y:f.y,width:d.width,height:f.height}))},c=(e,t)=>{let n=RF(e);r=n.x,i=n.y,pF.subscribe(e=>s(e,t))};return()=>{let t=e.left-2,n=e.top-2;return A`${FF(e.top,e.left).map(e=>A`<k-rect name=${`memo-sash memo-sash-${e.position}`} kind="sash" x=${LF(e)} y=${IF(e)} width=${e.shape===NF.horizontal?t:5} height=${e.shape===NF.vertical?n:5} fill=${BP} @mousedown=${t=>{c(t,e.position)}} @touchstart=${t=>{c(t,e.position)}} @mouseenter=${t=>{HP(t,PF[e.position])}} @mouseleave=${e=>{HP(e,``)}} />`)}`}},BF=`400 12px ${jP}`,VF=12*1.2;let HF=null;function UF(){if(HF!==null)return HF;if(typeof document>`u`||!document.body)return VF;let e=document.createElement(`div`);e.setAttribute(`aria-hidden`,`true`),e.style.cssText=`position:absolute;visibility:hidden;top:-10000px;left:0;margin:0;padding:0;border:0;font:${BF};line-height:normal;white-space:pre`,e.textContent=Array.from({length:10},()=>`M`).join(`
|
|
51
|
+
`),document.body.append(e);let t=e.getBoundingClientRect().height;return e.remove(),HF=t/10||VF,HF}function WF(){return UF()/12}const GF={whiteSpace:`pre-wrap`,wordBreak:`normal`},KF=new Map;function qF(e,t){let n=`${t} ${e}`,r=KF.get(n);if(r)return r;let i=oi(e,BF,GF),{lines:a}=ai(i,t,UF()),o=a.map(e=>e.text);return KF.size>=256&&KF.clear(),KF.set(n,o),o}function JF(){let e=typeof document>`u`?null:document.createElement(`canvas`).getContext(`2d`);return e?(e.font=BF,t=>e.measureText(t).width):()=>0}let YF=null;function XF(e){return YF??=JF(),YF(e)}function ZF(e){return e.replace(/\r\n?/g,`
|
|
52
|
+
`)}function QF(e,t){let n=[],r=0;for(let i of qF(e,t)){let t=r;r+=i.length,e[r]===`
|
|
53
|
+
`&&(r+=1),n.push({text:i,start:t})}return n}function $F(e,t){let n=0,r=Math.abs(t),i=``;for(let a of Array.from(e.text)){i+=a;let e=Math.abs(t-XF(i));if(e>r)break;n=i.length,r=e}return n}function eI(e,t,n,r){let i=ZF(e),a=QF(i,t);if(!a.length)return 0;let o=Math.max(0,Math.floor(r/UF()));if(o>=a.length)return i.length;let s=a[o];return s.start+$F(s,n)}function tI(e){let t=qF(e.value,e.ui.width).length;return Math.max(0,t*UF()-e.ui.height)}function nI(e,t){return Math.min(Math.max(0,t),tI(e))}function rI(e,t){return nI(t,e.memoScrollTopMap[t.id]??0)}const iI=[`memo-header-color`,`memo-textarea`,`icon`,`sash`];function aI(e,t,n){return mF(e,{entityId:()=>t.memo.id,selectType:Qh.memo,blockedKinds:()=>iI,source:n})}function oI(e=`document`){return e===`document`?23:9}function sI(e=`document`){return e===`document`?2:0}function cI(e=`document`){return e===`document`?mI():16}function lI(e=`document`){return e===`document`?2:8}function uI(e=`document`,t){return e===`document`?mI(t):16}function dI(){return g_(`document`)-lI(`document`)*2-LP}function fI(e,t,n){return t?e.inputActive:n===!1?e.placeholder:e.focus}function pI(e){let{ascent:t,descent:n}=FP(e);return Math.round(18.5/2+(t-n)/2)}function mI(e){let{ascent:t,descent:n}=FP(e);return(pI(e)-(t-n)/2)*2}function hI(e=`document`){return e===`document`?29:31}function gI(e,t){let{maxWidthComment:n}=e.settings;return n===-1||n>=t.ui.widthComment?t.ui.widthComment:n}function _I(e,t,n=`document`){let r=n!==`document`,i=[{focusType:W.tableName,x:r?20:0,width:r?p_(t.ui.widthName):t.ui.widthName}];return!r&&G(e.settings.show,F.tableComment)&&i.push({focusType:W.tableComment,x:t.ui.widthName+8,width:gI(e,t)}),i}const vI=[{columnType:I.columnName,focusType:W.columnName,show:null,width:e=>e.name},{columnType:I.columnDefault,focusType:W.columnDefault,show:F.columnDefault,width:e=>e.default},{columnType:I.columnComment,focusType:W.columnComment,show:F.columnComment,width:e=>e.comment},{columnType:I.columnDataType,focusType:W.columnDataType,show:F.columnDataType,width:e=>e.dataType},{columnType:I.columnNotNull,focusType:W.columnNotNull,show:F.columnNotNull,width:()=>35},{columnType:I.columnUnique,focusType:W.columnUnique,show:F.columnUnique,width:()=>22},{columnType:I.columnAutoIncrement,focusType:W.columnAutoIncrement,show:F.columnAutoIncrement,width:()=>15}],yI=[I.columnName,I.columnDataType];function bI(e,t,n=`document`){let{settings:r}=e,i=[],a=hI(n),o=n===`document`?r.columnOrder:yI;for(let e of o){let o=vI.find(t=>t.columnType===e);if(!o||n===`document`&&o.show!==null&&!G(r.show,o.show))continue;let s=o.width(t);i.push({columnType:e,focusType:o.focusType,x:a,width:s}),a+=s+8}return i}function xI(e,t,n,r,i,a){e.beginPath(),e.rect(n,r,i,a),e.closePath(),e.fillShape(t)}function SI(e){return(t,n)=>{xI(t,n,0,-lI(e),n.width()+8,g_(e))}}const CI={document:SI(`document`),flow:SI(`flow`)};function wI(e){let t=0-sI(e);return(e,n)=>{xI(e,n,0,t,n.width()+8,24)}}const TI={document:wI(`document`),flow:wI(`flow`)},EI=(e,t)=>{xI(e,t,-t.x(),-t.y(),RP,RP)},DI=([e,t],n,r)=>e===`circle`?A`<k-circle x=${Number(t.cx)} y=${Number(t.cy)} radius=${Number(t.r)} fill=${n} stroke=${n} strokeWidth=${2} listening=${r} hitFunc=${r?EI:void 0} />`:A`<k-path data=${String(t.d)} stroke=${n} strokeWidth=${2} lineCap="round" lineJoin="round" listening=${r} hitFunc=${r?EI:void 0} />`;function OI({icon:e,name:t,kind:n,size:r,color:i,x:a,y:o,click:s,mouseenter:c,mouseleave:l}){let u=kP(e);if(!u)return null;let d=r/RP;return A`<k-group name=${t} kind=${n} x=${a} y=${o} scaleX=${d} scaleY=${d} @click=${s} @mouseenter=${c} @mouseleave=${l}>${u.node.map((e,t)=>DI(e,i,t===0))}</k-group>`}const kI=(e,t)=>{let n=aP(t),r=_P(t),i=kF(t),{sharedSelectColor:a}=DF(t,e.memo.id),{onMoveStart:o}=aI(t,e,i),s=Ea({hover:!1,removeHover:!1}),c=()=>{s.hover=!0},l=()=>{s.hover=!1},u=e=>{s.removeHover=!0,HP(e,VP)},d=e=>{s.removeHover=!1,HP(e,``)},f=()=>{let{store:t}=n.value;t.dispatch(YC(e.memo.id))},p=t=>{let{emitter:r}=n.value;r.emit(KN({x:t.evt.clientX,y:t.evt.clientY,color:e.memo.ui.color}))},m=t=>{if(e.preview)return;let{store:r}=n.value,{memo:i}=e,a=t.currentTarget.getRelativePointerPosition();if(a){let e=rI(r.state.editor,i);i.id,eI(i.value,i.ui.width,a.x,a.y+e)}r.dispatch($y({id:i.id}))},h=t=>{HP(t,e.preview?``:`text`)},g=e=>{HP(e,``)},_=t=>{if(t.evt.stopPropagation(),t.evt.preventDefault(),e.preview||nP(t.evt))return;let{store:r}=n.value,{memo:i}=e,a=rI(r.state.editor,i),o=nI(i,a+t.evt.deltaY);o!==a&&r.dispatch(rb({id:i.id,scrollTop:o}))};return()=>{let{store:t}=n.value,{editor:i}=t.state,{memo:v}=e,ee=r.value,te=!!i.selectedMap[v.id],ne=a(),re=!e.preview&&i.editMemoId===v.id,ie=qF(v.value,v.ui.width).join(`
|
|
54
|
+
`),ae=e.preview?0:rI(i,v),{width:oe,height:se}=O_(v),ce=1/2;return A`<k-group id=${e.preview?``:`memo-${v.id}`} name="memo" kind="memo" selected=${te} sharedSelect=${ne} x=${v.ui.x} y=${v.ui.y} @mousedown=${o} @touchstart=${o} @mouseenter=${c} @mouseleave=${l}><k-rect name="memo-shared-select" kind="memo-shared-select" x=${-.5} y=${-.5} width=${oe+1} height=${se+1} cornerRadius=${7} stroke=${ne??``} strokeWidth=${1} listening=${!1} /><k-rect name="memo-body" kind="memo-body" x=${ce} y=${ce} width=${oe-1} height=${se-1} cornerRadius=${6} fill=${ee.memoBackground} stroke=${te?ee.memoSelect:ee.memoBorder} strokeWidth=${1} /><k-group name="memo-container" kind="memo-container" x=${1} y=${1}><k-rect name="memo-header-color" kind="memo-header-color" x=${0} y=${-1} width=${oe-2} height=${4} cornerRadius=${[6,6,0,0]} fill=${v.ui.color} @click=${p} @mouseenter=${e=>{HP(e,VP)}} @mouseleave=${e=>{HP(e,``)}} />${OI({icon:`x`,name:`memo-remove`,kind:`icon`,size:12,color:s.hover?s.removeHover?ee.active:ee.foreground:zP,x:8+v.ui.width-12,y:8,click:f,mouseenter:u,mouseleave:d})}<k-group name="memo-text-clip" kind="memo-textarea" x=${8} y=${24} clipX=${0} clipY=${0} clipWidth=${v.ui.width} clipHeight=${v.ui.height} @click=${m} @mouseenter=${h} @mouseleave=${g} @wheel=${_}><k-rect name="memo-textarea-hit" kind="memo-textarea" x=${0} y=${0} width=${v.ui.width} height=${v.ui.height} fill=${BP} /><k-text name="memo-textarea" kind="memo-textarea" offsetY=${ae} text=${ie} visible=${!re} fill=${ee.active} fontFamily=${jP} fontSize=${12} fontStyle=${`400`} lineHeight=${WF()} wrap="none" /></k-group><${zF} .memo=${v} .top=${se} .left=${oe} /></k-group></k-group>`}},AI={now:()=>performance.now(),requestFrame:e=>requestAnimationFrame(e),cancelFrame:e=>cancelAnimationFrame(e)},jI=new Map,MI=new Map,NI=Ea({});let PI=AI,FI=null;function II(e){let t=1-e;return 1-t*t*t}function LI(){FI===null&&MI.size!==0&&(FI=PI.requestFrame(RI))}function RI(){FI=null;let e=PI.now();for(let[t,n]of[...MI]){let r=e-n.startedAt,{from:i,to:a}=n;if(r>=300){MI.delete(t),NI[t]=a;continue}let o=r>0?r/300:0;NI[t]=i+(a-i)*II(o)}LI()}function zI(e,t,n){return`${e} ${t}:${n}`}function BI(e){let t=NI[e];if(t!==void 0)return t;let n=MI.get(e);return n?n.from:jI.get(e)??0}function VI(e,t){let n=jI.get(e);if(n===t)return;if(n===void 0){jI.set(e,t);return}let r=BI(e);jI.set(e,t),MI.set(e,{from:r,to:t,startedAt:PI.now()}),LI()}const HI=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i;function UI(e){let t=HI.exec(e.trim());if(!t)return null;let n=t[1],r=n.length===6?n:[...n].map(e=>`${e}${e}`).join(``);return[0,2,4].map(e=>parseInt(r.slice(e,e+2),16))}function WI(e,t,n){if(!(n>0))return e;if(n>=1)return t;let r=UI(e),i=UI(t);return!r||!i?n<.5?e:t:`#${r.map((e,t)=>Math.round(e+(i[t]-e)*n)).map(e=>e.toString(16).padStart(2,`0`)).join(``)}`}function GI(e,t,n){return Math.abs(e.x-t.x)<.5?{x:e.x,y:e.y+Math.sign(t.y-e.y)*n}:{x:e.x+Math.sign(t.x-e.x)*n,y:e.y}}function KI(e,t){if(e.length<3||t<=0)return e;let n=[e[0]],r=e=>{let t=n[n.length-1];Math.abs(t.x-e.x)<.5&&Math.abs(t.y-e.y)<.5||n.push(e)};for(let n=1;n<e.length-1;n++){let i=e[n-1],a=e[n],o=e[n+1];if(Math.abs(a.x-i.x)<.5==Math.abs(o.x-a.x)<.5){r(a);continue}let s=Math.abs(a.x-i.x)+Math.abs(a.y-i.y),c=Math.abs(o.x-a.x)+Math.abs(o.y-a.y),l=Math.min(t,s/2,c/2);if(l<2){r(a);continue}r(GI(a,i,l)),r(GI(a,o,l))}return r(e[e.length-1]),n}function qI(e,t=`document`){let{start:n,end:r}=kh(e,t),[i,a]=Th(e,t),o=nM(n,r);return{path:JI(n,r,rM(tM(i),o),rM(tM(a),o),Dh(e,t),t),line:YI(n,r)}}function JI(e,t,n,r,i,a){let o={start:{x1:e.x,y1:e.y,x2:e.x,y2:e.y},end:{x1:t.x,y1:t.y,x2:t.x,y2:t.y}},s={M:{x:0,y:0},L:{x:0,y:0},Q:{x:0,y:0},d(){return e.tableId===t.tableId?[[{x:this.M.x,y:this.M.y},{x:this.L.x,y:this.L.y}]]:QI(a===`document`?KI(i&&i.length>1?i:eL(this.M,this.L,e.direction),8):lh(this.M,$I(e.direction),this.L,$I(t.direction)))}},c=1;return e.direction===R.left||e.direction===R.right?(e.direction===R.left&&(c*=-1),o.start.x2=e.x+c*n,o.start.x1+=c*25,s.M.x=o.start.x2,s.M.y=e.y):(e.direction===R.top||e.direction===R.bottom)&&(e.direction===R.top&&(c*=-1),o.start.y2=e.y+c*n,o.start.y1+=c*25,s.M.x=e.x,s.M.y=o.start.y2),c=1,t.direction===R.left||t.direction===R.right?(t.direction===R.left&&(c*=-1),o.end.x2=t.x+c*r,o.end.x1+=c*25,s.L.x=o.end.x2,s.L.y=t.y):(t.direction===R.top||t.direction===R.bottom)&&(t.direction===R.top&&(c*=-1),o.end.y2=t.y+c*r,o.end.y1+=c*25,s.L.x=t.x,s.L.y=o.end.y2),{line:o,path:s}}function YI(e,t){let n={start:{base:{x1:e.x,y1:e.y,x2:e.x,y2:e.y},base2:{x1:e.x,y1:e.y,x2:e.x,y2:e.y},center:{x1:e.x,y1:e.y,x2:e.x,y2:e.y},center2:{x1:e.x,y1:e.y,x2:e.x,y2:e.y}},end:{base:{x1:t.x,y1:t.y,x2:t.x,y2:t.y},base2:{x1:t.x,y1:t.y,x2:t.x,y2:t.y},left:{x1:t.x,y1:t.y,x2:t.x,y2:t.y},center:{x1:t.x,y1:t.y,x2:t.x,y2:t.y},center2:{x1:t.x,y1:t.y,x2:t.x,y2:t.y},right:{x1:t.x,y1:t.y,x2:t.x,y2:t.y}}},r={cx:t.x,cy:t.y},i={cx:e.x,cy:e.y},a=1;return e.direction===R.left||e.direction===R.right?(e.direction===R.left&&(a*=-1),n.start.base.x1=n.start.base.x2+=a*11,n.start.base2.x1=n.start.base2.x2+=a*18,n.start.center.x1=n.start.base.x1,n.start.base.y1-=7,n.start.base.y2+=7,n.start.base2.y1-=7,n.start.base2.y2+=7,n.start.center2.x1+=a*25,i.cx+=a*18):(e.direction===R.top||e.direction===R.bottom)&&(e.direction===R.top&&(a*=-1),n.start.base.y1=n.start.base.y2+=a*11,n.start.base2.y1=n.start.base2.y2+=a*18,n.start.center.y1=n.start.base.y1,n.start.base.x1-=7,n.start.base.x2+=7,n.start.base2.x1-=7,n.start.base2.x2+=7,n.start.center2.y1+=a*25,i.cy+=a*18),a=1,t.direction===R.left||t.direction===R.right?(t.direction===R.left&&(a*=-1),n.end.base.x1=n.end.base.x2+=a*11,n.end.base2.x1=n.end.base2.x2+=a*18,n.end.center.x1=n.end.left.x1=n.end.right.x1=n.end.base.x1,n.end.base.y1-=7,n.end.base.y2+=7,n.end.base2.y1-=7,n.end.base2.y2+=7,n.end.left.y2+=7,n.end.right.y2-=7,n.end.center2.x1+=a*25,r.cx+=a*18):(t.direction===R.top||t.direction===R.bottom)&&(t.direction===R.top&&(a*=-1),n.end.base.y1=n.end.base.y2+=a*11,n.end.base2.y1=n.end.base2.y2+=a*18,n.end.center.y1=n.end.left.y1=n.end.right.y1=n.end.base.y1,n.end.base.x1-=7,n.end.base.x2+=7,n.end.base2.x1-=7,n.end.base2.x2+=7,n.end.left.x2+=7,n.end.right.x2-=7,n.end.center2.y1+=a*25,r.cy+=a*18),{line:n,circle:r,startCircle:i}}function XI(e){if(!e.length)return``;let[[t]]=e,n=`M${ZI(t.x)} ${ZI(t.y)}`;for(let[,t]of e)n+=`L${ZI(t.x)} ${ZI(t.y)}`;return n}function ZI(e){return Math.round(e*100)/100}function QI(e){let t=[];for(let n=1;n<e.length;n++)t.push([e[n-1],e[n]]);return t}function $I(e){let t=aM(e);return iM(e)?{x:t,y:0}:{x:0,y:t}}function eL(e,t,n){if(iM(n)){if(Math.abs(e.y-t.y)<.5)return[e,t];let n=(e.x+t.x)/2;return[e,{x:n,y:e.y},{x:n,y:t.y},t]}if(Math.abs(e.x-t.x)<.5)return[e,t];let r=(e.y+t.y)/2;return[e,{x:e.x,y:r},{x:t.x,y:r},t]}const tL=`relationship-decoration`,nL=({x1:e,y1:t,x2:n,y2:r})=>[e,t,n,r];function rL(e,t,n){return A`<k-line name=${tL} kind=${tL} points=${nL(e)} stroke=${t} strokeWidth=${n} listening=${!1} />`}function iL({cx:e,cy:t},n,r){return A`<k-circle name=${tL} kind=${tL} x=${e} y=${t} radius=${6} stroke=${n} strokeWidth=${r} listening=${!1} />`}const aL={1:{ring:!0,ticks:[`base`,`left`,`center`,`right`]},[Zm.ZeroOne]:{ring:!0,ticks:[`base`,`center`]},[Zm.ZeroN]:{ring:!0,ticks:[`left`,`center`,`right`]},[Zm.OneOnly]:{ring:!1,ticks:[`base`,`base2`,`center2`]},[Zm.OneN]:{ring:!1,ticks:[`base`,`left`,`center2`,`right`]},32:{ring:!1,ticks:[`base`,`center2`]},64:{ring:!1,ticks:[`left`,`center2`,`right`]}};function oL(e,{path:t,line:n},r,i){let a=aL[e];return a?A`${rL(t.line.end,r,i)}${a.ring?iL(n.circle,r,i):null}${a.ticks.map(e=>rL(n.line.end[e],r,i))}`:null}const sL=[10,10],cL=[];function lL({direction:e}){let t=e===R.left||e===R.top?-1:1;return e===R.left||e===R.right?{along:{x:t,y:0},across:{x:0,y:1}}:{along:{x:0,y:t},across:{x:1,y:0}}}function uL({x:e,y:t},{along:n,across:r},i,a){return{x:e+n.x*i+r.x*a,y:t+n.y*i+r.y*a}}function dL({x:e,y:t},n){return`M${e-n} ${t}A${n} ${n} 0 0 1 ${e+n} ${t}A${n} ${n} 0 0 1 ${e-n} ${t}`}function fL(e){let t=lL(e),n=(n,r)=>uL(e,t,n,r),r=n(11,0);return[XI([[n(11,-7),n(11,7)]]),XI([[n(18,-7),n(18,7)]]),XI([[r,n(0,7)]]),XI([[r,n(0,-7)]]),dL(n(18,0),6)].join(``)}function pL({start:e,end:t},{line:n},r){return`${XI([[{x:e.x,y:e.y},{x:n.start.x2,y:n.start.y2}],...r,[{x:n.end.x2,y:n.end.y2},{x:t.x,y:t.y}]])}${fL(e)}${fL(t)}`}function mL(e){return 8/(e>0?e:1)}const hL=(e,t)=>{let n=aP(t),r=_P(t),i=kF(t),a=Ea({hover:!1}),o=()=>{let{relationship:t}=e,{store:r}=n.value;a.hover=!0,r.dispatch(hb({columnIds:[...t.start.columnIds,...t.end.columnIds]}))},s=()=>{let{store:e}=n.value;a.hover=!1,e.dispatch(hb({columnIds:[]}))};return()=>{let{store:t}=n.value,{editor:c}=t.state,{relationship:l,strokeWidth:u}=e,d=r.value,f=i.value,{zoomLevel:p}=F_(t.state,f),m=kh(l,f),h=qI(l,f),{path:g,line:_}=h,v=g.path.d(),ee=!!c.hoverRelationshipMap[l.id],te=a.hover||ee,ne=f!==`document`,re=ne?d.grayColor8:l.identification?d.keyPFK:d.keyFK,ie=te?d.relationshipHover:re,ae=zI(c.id,`relationship`,l.id),oe=0;ne&&(VI(ae,+!!e.lit),oe=BI(ae));let se=WI(ie,d.accentColor9,oe),ce=oL(l.relationshipType,h,se,u);return A`<k-group name=${`relationship ${l.id}`} kind="relationship" @mouseenter=${o} @mouseleave=${s}><k-path name="relationship-hit-area" kind="relationship-hit-area" data=${pL(m,g,v)} hitStrokeWidth=${mL(p)} lineCap="round" /><k-path name="relationship-route" kind="relationship-route" data=${XI(v)} dash=${ne||l.identification?cL:sL} stroke=${se} strokeWidth=${u} listening=${!1} />${rL(g.line.start,se,u)}${rL(_.line.start.base,se,u)}${l.startRelationshipType===Qm.ring?A`${iL(_.startCircle,se,u)}${rL(_.line.start.center,se,u)}`:A`${rL(_.line.start.base2,se,u)}${rL(_.line.start.center2,se,u)}`}${ce}</k-group>`}},gL=(e,t)=>{let n=kF(t);return()=>{let{relationships:t,viewport:r,litIds:i}=e,a=n.value,o=e.strokeWidth??Nh(a),s=r?t.filter(e=>G_(r,e,o,a)):t;return A`<k-group name="relationship-group" kind="relationship-group">${lu(s,e=>e.id,e=>A`<${hL} .relationship=${e} .strokeWidth=${o} .lit=${i?.has(e.id)??!1} />`)}</k-group>`}},_L=e=>e.evt?.detail??0;function vL(){let e=null;return{track(t,n){_L(n)<=1&&(e=t)},isDouble(t,n){return _L(n)>=2&&e===t}}}const yL=(e,t)=>{let n=G(e,B.primaryKey),r=G(e,B.foreignKey);return n&&r?t.keyPFK:n?t.keyPK:r?t.keyFK:zP},bL=(e,t,n,r,i)=>!t&&n?e.columnSelect:r?e.columnHover:i>0?WI(e.tableBackground,e.accentColor3,i):zP,xL=(e,t)=>{let n=aP(t),r=_P(t),i=Ea({hover:!1,removeHover:!1}),{addUnsubscribe:a}=vF(),o=vL(),s=null,c=()=>{s?.unsubscribe(),s=null};a(c);let l=t=>{if(e.preview||e.ghost||t.evt.button!==0||e.source!==`document`)return;c();let n=!1,r=pF.subscribe({next:()=>{n||(n=!0,e.onDragstart?.(e.column.id,t))},complete:()=>{s===r&&(s=null),n&&e.onDragend?.()}});s=r},u=()=>{i.hover=!0},d=()=>{i.hover=!1},f=e=>{i.removeHover=!0,HP(e,VP)},p=e=>{i.removeHover=!1,HP(e,``)},m=(e,t)=>t?i.removeHover?e.active:e.foreground:zP,h=(t,r)=>{if(e.source!==`document`)return;let{store:i}=n.value,{column:a}=e;i.dispatch(Uy({tableId:a.tableId,columnId:a.id,focusType:t,$mod:nP(r.evt),shiftKey:r.evt.shiftKey}))},g=(t,r)=>{if(!o.isDouble(t,r)||e.source!==`document`)return;let{store:i}=n.value,{column:a}=e;i.dispatch(cw(t)?fw(t,a.tableId,a.id):Yy())},_=()=>{let{store:t}=n.value,{column:r}=e;t.dispatch(dw(r.tableId,[r.id]))},v=()=>{let{column:t}=e;if(t.ui.keys===0)return;let{store:r}=n.value;r.dispatch(ej(t.id))},ee=()=>{let{store:e}=n.value;e.dispatch(tj())},te=({focusType:t,x:n,width:i,text:a,fill:s,focus:c,edit:l,sharedFocus:u,ellipsis:d,opacity:f=1,align:p,fontFamily:m=jP})=>A`<k-group name=${`column-col ${t}`} kind="column-col" sharedFocus=${u} x=${n} y=${0} opacity=${f} listening=${f>0} @mousedown=${e=>{h(t,e),o.track(t,e)}} @dblclick=${e=>{g(t,e)}}><k-text name="cell-text" y=${lI(e.source)} width=${i} height=${uI(e.source,m)} text=${a} fill=${s} fontFamily=${m} fontSize=${12} align=${p} verticalAlign="middle" wrap="none" ellipsis=${d} visible=${!l} hitFunc=${CI[e.source]} />${c&&e.source===`document`?A`<k-rect name="cell-focus-border" y=${lI(e.source)+dI()} width=${i} height=${LP} fill=${fI(r.value,l,e.editorFocused)} listening=${!1} />`:null}${u?A`<k-rect name="cell-shared-focus-border" y=${g_(e.source)-LP} width=${i+8} height=${LP} fill=${u} listening=${!1} />`:null}</k-group>`,ne=({columnType:t,focusType:n,x:i,width:a})=>{let{column:o}=e,s=r.value,c=e.source!==`document`;switch(t){case I.columnName:return te({focusType:n,x:i,width:a,text:o.name.trim()?o.name:`column`,fill:o.name.trim()?s.active:s.placeholder,focus:e.focusName,edit:e.editName,sharedFocus:e.sharedFocusName,ellipsis:!0});case I.columnDefault:return te({focusType:n,x:i,width:a,text:o.default.trim()?o.default:`default`,fill:o.default.trim()?s.active:s.placeholder,focus:e.focusDefault,edit:e.editDefault,sharedFocus:e.sharedFocusDefault,ellipsis:!0});case I.columnComment:return te({focusType:n,x:i,width:a,text:o.comment.trim()?o.comment:`comment`,fill:o.comment.trim()?s.active:s.placeholder,focus:e.focusComment,edit:e.editComment,sharedFocus:e.sharedFocusComment,ellipsis:!0});case I.columnDataType:return te({focusType:n,x:i,width:a,text:o.dataType.trim()?o.dataType:`dataType`,fill:o.dataType.trim()?s.active:s.placeholder,focus:e.focusDataType,edit:e.editDataType,sharedFocus:e.sharedFocusDataType,ellipsis:!0,opacity:c?e.litAlpha??0:1,align:c?`right`:void 0,fontFamily:c?`'Menlo', 'Consolas', 'Bitstream Vera Sans Mono', monospace, 'Apple Color Emoji', 'Segoe UI Emoji'`:void 0});case I.columnNotNull:return te({focusType:n,x:i,width:a,text:G(o.options,z.notNull)?`N-N`:`NULL`,fill:s.active,focus:e.focusNotNull,edit:!1,sharedFocus:e.sharedFocusNotNull,ellipsis:!1});case I.columnUnique:return te({focusType:n,x:i,width:a,text:`UQ`,fill:G(o.options,z.unique)?s.active:s.placeholder,focus:e.focusUnique,edit:!1,sharedFocus:e.sharedFocusUnique,ellipsis:!1});case I.columnAutoIncrement:return te({focusType:n,x:i,width:a,text:`AI`,fill:G(o.options,z.autoIncrement)?s.active:s.placeholder,focus:e.focusAutoIncrement,edit:!1,sharedFocus:e.sharedFocusAutoIncrement,ellipsis:!1})}return null},re=()=>{let{store:t}=n.value;return bI(t.state,{name:e.widthName,comment:e.widthComment,dataType:e.widthDataType,default:e.widthDefault},e.source).map(e=>({columnType:e.columnType,template:ne(e)})).filter(({template:e})=>!!e)};return()=>{let{store:t}=n.value,{editor:a}=t.state,{column:o,selected:s,width:c}=e,h=r.value,g=!!(e.hovered||i.hover||a.hoverColumnMap[o.id]),te=!!a.draggingColumnMap[o.id],ne=c-18,ie=e.source!==`document`,ae=bL(h,ie,s,g,ie&&e.related?e.litAlpha??0:0),oe=g_(e.source),se=ie?16:12;return A`<k-group id=${e.preview?``:`column-${o.id}`} name="column-row" kind="column-row" tableId=${o.tableId} selected=${s} y=${e.y} opacity=${te?.5:1} visible=${!e.ghost} @mousedown=${l} @mouseenter=${u} @mouseleave=${d}><k-rect name="column-row-background" x=${1} width=${c-2} height=${oe} cornerRadius=${ie&&e.last?[0,0,6,6]:0} fill=${ae} />${OI({icon:`key-round`,name:`column-col column-key`,kind:`column-col`,size:se,color:yL(o.ui.keys,h),x:9,y:(oe-se)/2,mouseenter:v,mouseleave:ee})}${lu(re(),({columnType:e})=>e,({template:e})=>e)}${ie&&e.divider?A`<k-line name="column-row-divider" points=${[1,oe,c-1,oe]} stroke=${h.tableBorder} strokeWidth=${1} listening=${!1} />`:null}${ie?null:OI({icon:`x`,name:`column-remove`,kind:`icon`,size:12,color:m(h,g),x:9+ne-12,y:6,click:_,mouseenter:f,mouseleave:p})}</k-group>`}};function SL(e,t){let{settings:n}=e,{viewport:r}=e.editor,i=R_(n,t),a=R_(n,{x:t.x+t.width,y:t.y+t.height});return i.x>=0&&i.y>=0&&a.x<=r.width&&a.y<=r.height}const CL=e=>function*(t){let{viewport:n}=t.editor,r=N(t.collections).collection(`tableEntities`).selectById(e);if(!r)return;let i=T_(t,r);if(!SL(t,i)){let e=B_(t.settings.zoomLevel,{x:i.x+i.width/2,y:i.y+i.height/2},{x:n.width/2,y:n.height/2});yield lv({originX:e.x,originY:e.y})}yield aw(e,!1)};function wL(e,t){e.dispatchSync(_v({value:Um.ERD})),e.dispatchSync(CL(t))}function TL(e,t){e.store.dispatchSync(Ag({tableIds:t,kind:eg.flow}))}function EL(e,t,n=`document`){let{collections:r}=e,i=H_(e,n),a=N(r).collection(`tableEntities`).selectByIds(Kg(e,n).tableIds).filter(t=>W_(i,e,t,n)).sort((e,t)=>t.ui.zIndex-e.ui.zIndex);for(let r of a){let i=T_(e,r,n);if(!(t.x>=i.x&&t.x<=i.x+i.width&&t.y>=i.y&&t.y<=i.y+i.height))continue;let a=D_(e,r,0,n);if(t.y<a.y)return null;let o=Math.floor((t.y-a.y)/a.height),s=Wg(e,r,n)[o];return s?{tableId:r.id,columnId:s,index:o}:null}return null}function DL(e,t){let n=e.getAbsolutePosition(),r=e.getAbsoluteScale();return{x:(n.x-t.x)/(r.x||1),y:(n.y-t.y)/(r.y||1)}}function OL(e){let t=new Map,n=null,r=null,i=(e,n,r,i)=>{t.get(e)?.(),e.offsetX(r),e.offsetY(i),ef(n);let a=!1,o=-1,s=()=>{a||(a=!0,clearTimeout(o),t.delete(e),tf(n))},c=new ci({node:e,offsetX:0,offsetY:0,duration:.3,easing:si.EaseInOut,onFinish:s,onReset:s});t.set(e,()=>{c.destroy(),e.offsetX(0),e.offsetY(0),s()}),o=setTimeout(()=>t.get(e)?.(),500),c.play()},a=()=>{let e=n;return n=null,r?.(),r=null,e},o=()=>{let e=a();if(e)for(let t of e){let{node:e}=t,n=e.getLayer();if(!n||!e.getStage())continue;let{x:r,y:a}=DL(e,t);!r&&!a||i(e,n,r,a)}};return{snapshot(){n=e().map(e=>{let{x:t,y:n}=e.getAbsolutePosition();return{node:e,x:t,y:n}}),r??=Xd(o)},cancel(){a(),[...t.values()].forEach(e=>e())}}}function kL(e,t){let n=aP(e),r=()=>n.value.store.state.editor.focusTable;return{hasFocus:(e,n)=>yF(r(),e,t,n),hasEdit:(e,n)=>xF(r(),e,t,n),hasSelectColumn:e=>bF(r(),t,e)}}function AL(e){if(UP(e))return{x:e.clientX,y:e.clientY};let{touches:t,changedTouches:n}=e,r=t?.[0]??n?.[0];return r?{x:r.clientX,y:r.clientY}:null}const jL=({type:e})=>e===`mouseup`||e===`touchend`;function ML(e,t){return Math.abs(t.x-e.x)<=4&&Math.abs(t.y-e.y)<=4}function NL(e){return!nP(e)&&(!UP(e)||e.button===0)}function PL(e,t){let n=AL(e);n&&uF.pipe(Fe(1)).subscribe(e=>{let r=jL(e)?AL(e):null;r&&ML(n,r)&&t()})}function FL(e,t,n){return{onPress:r=>{let{evt:i}=r,a=n.value;if(a===`document`||!NL(i))return;let o=e.value.store.state.editor.views[a];if(!o)return;let{id:s}=t.table;PL(i,()=>{let{store:t}=e.value;t.state.editor.views[a]===o&&t_(t.state,s,a)})}}}const IL=[`icon`],LL=(e,t,n)=>t.trim()?n?e.foreground:e.active:e.placeholder,RL=(e,t)=>{let n=aP(t),r=_P(t),i=kF(t),{hasEdit:a,hasFocus:o,hasSelectColumn:s}=kL(t,e.table.id),{sharedFocusColor:c,sharedFocusTableColor:l}=EF(t,e.table.id),{sharedSelectColor:u}=DF(t,e.table.id),{onMoveStart:d}=_F(t,e,i),f=FL(n,e,i),{addUnsubscribe:p}=vF(),m=Ea({hover:!1,iconHover:null,dragstartId:null}),h=vL(),g=null,_=null,v=null,ee=()=>{m.hover=!0,i.value!==`document`&&Xg(n.value.store.state,e.table.id,i.value)},te=()=>{m.hover=!1,i.value!==`document`&&Xg(n.value.store.state,null,i.value)};p(()=>{i.value!==`document`&&Zg(n.value.store.state,e.table.id,i.value)});let ne=e=>t=>{m.iconHover=e,HP(t,VP)},re=e=>{m.iconHover=null,HP(e,``)},ie=(e,t,n)=>n?m.iconHover===t?e.active:e.foreground:zP,ae=(t,n)=>n?e.editorFocused===!1?t.placeholder:t.tableSelect:t.tableBorder,oe=e=>{d(e),!JP(e.target,IL)&&f.onPress(e)},se=t=>{let{emitter:r}=n.value;r.emit(KN({x:t.evt.clientX,y:t.evt.clientY,color:e.table.ui.color}))},ce=()=>{let{store:t}=n.value;t.dispatch(uw(e.table.id))},le=()=>{let{store:t}=n.value;t.dispatch(iw(e.table.id))},ue=()=>{TL(n.value,[e.table.id])},y=()=>{wL(n.value.store,e.table.id)},b=t=>{if(i.value!==`document`)return;let{store:r}=n.value;r.dispatch(Vy({tableId:e.table.id,focusType:t}))},x=(e,t)=>{if(!h.isDouble(e,t)||i.value!==`document`)return;let{store:r}=n.value;r.dispatch(Yy())},de=e=>{let t=_,n=t?.findOne(`.scene`);if(!t||!n)return null;t.setPointersPositions(e);let r=t.getPointerPosition();return r?n.getAbsoluteTransform().copy().invert().point(r):null},S=e=>{let{store:t}=n.value,r=de(e);if(!r)return;let a=EL(t.state,r,i.value);if(!a)return;let{editor:{draggableColumn:o}}=t.state;!o||o.columnIds.includes(a.columnId)||(v?.snapshot(),t.dispatch($A(a.columnId,a.tableId)))},fe=()=>{let{store:e,emitter:t}=n.value;!g&&m.dragstartId===null||(g?.unsubscribe(),g=null,_=null,m.dragstartId=null,e.dispatch(Db()),t.emit(qN()))},pe=(e,t)=>{let{store:r}=n.value;if(i.value!==`document`)return;let{editor:{focusTable:a}}=r.state;if(!a||!a.columnId)return;let o=t.target?.getStage()??null;o&&(g?.unsubscribe(),_=o,m.dragstartId=e,v??=OL(()=>o.find(`.column-row`)),r.dispatch(QA(nP(t.evt))),g=pF.subscribe({next:({event:e})=>{S(e)},complete:fe}))};aa(()=>{let{emitter:e}=n.value;p(e.on({dragendColumnAll:()=>{g?.unsubscribe(),g=null}}),()=>{g?.unsubscribe(),g=null,v?.cancel()})});let me=({focusType:t,x:n,width:a,text:o,fill:s,focus:c,edit:l,sharedFocus:u})=>{let d=i.value,f=d!==`document`;return A`<k-group name=${`input-padding ${t}`} kind="input-padding" sharedFocus=${u} x=${n} y=${0} @mousedown=${e=>{b(t),h.track(t,e)}} @dblclick=${e=>{x(t,e)}}><k-text name="cell-text" y=${sI(d)} width=${a} height=${cI(d)} text=${o} fill=${s} fontFamily=${jP} fontSize=${f?14:12} fontStyle=${f?`500`:`normal`} verticalAlign="middle" wrap="none" ellipsis=${!0} visible=${!l} hitFunc=${TI[d]} />${c&&!f?A`<k-rect name="cell-focus-border" y=${sI(d)+18.5} width=${a} height=${LP} fill=${fI(r.value,l,e.editorFocused)} listening=${!1} />`:null}${u?A`<k-rect name="cell-shared-focus-border" y=${22.5} width=${a+8} height=${LP} fill=${u} listening=${!1} />`:null}</k-group>`};return()=>{let{store:t}=n.value,{editor:d,collections:f}=t.state,{table:p}=e,h=r.value,g=!!d.selectedMap[p.id],_=i.value,v=E_(t.state,p,_),b=T_(t.state,p,_),x=b.width-18,de=!!(e.hovered||m.hover),S=e.ghostColumnId??m.dragstartId,he=S!==null&&!p.columnIds.includes(S)?S:null,ge=l(),_e=u(),ve=c(W.tableName),ye=c(W.tableComment),be=ge??_e,C=_!==`document`,xe=C&&de,Se=(e,t)=>!C&&a(e,t),Ce=_I(t.state,p,_),we=Ce.find(e=>e.focusType===W.tableName),Te=Ce.find(e=>e.focusType===W.tableComment),Ee=Wg(t.state,p,_),De=C&&Ee.length===0,Oe=C&&!!e.lit,ke=zI(d.id,`table`,p.id),Ae=0;C&&(VI(ke,+!!Oe),Ae=BI(ke));let je=N(f).collection(`tableColumnEntities`).selectByIds(he?[...Ee,he]:Ee);return A`<k-group id=${e.preview?``:`table-${p.id}`} name="table" kind="table" visible=${e.visible??!0} selected=${g} sharedFocus=${ge} sharedSelect=${_e} x=${b.x} y=${b.y} @mousedown=${oe} @touchstart=${oe} @mouseenter=${ee} @mouseleave=${te}><k-rect name="table-body" x=${1/2} y=${1/2} width=${b.width-1} height=${b.height-1} cornerRadius=${6} fill=${h.tableBackground} stroke=${WI(ae(h,g),h.accentColor9,Ae)} strokeWidth=${1} shadowColor=${C?h.minimapShadow:void 0} shadowBlur=${C?20:void 0} shadowOffsetX=${C?0:void 0} shadowOffsetY=${C?2:void 0} shadowOpacity=${C?.4:void 0} shadowForStrokeEnabled=${!C&&void 0} @mouseenter=${e=>{C&&HP(e,`pointer`)}} @mouseleave=${e=>{C&&HP(e,``)}} />${C?A`<k-rect name="table-header-band" x=${1} y=${1} width=${b.width-2} height=${De?b.height-2:32} cornerRadius=${De?6:[6,6,0,0]} fill=${h.grayColor3} listening=${!1} />`:null}${Ae>0?A`<k-rect name="table-glow" x=${-1/2} y=${-1/2} width=${b.width+1} height=${b.height+1} cornerRadius=${6} opacity=${Ae} stroke=${h.accentColor9} strokeWidth=${1} shadowColor=${h.accentColor9} shadowBlur=${14} shadowOpacity=${.55} shadowForStrokeEnabled=${!0} listening=${!1} />`:null}${be?A`<k-rect name="table-ring" x=${-1/2} y=${-1/2} width=${b.width+1} height=${b.height+1} cornerRadius=${6} stroke=${be} strokeWidth=${1} listening=${!1} />`:null}<k-rect name="table-header-color" kind="table-header-color" x=${1} y=${0} width=${b.width-2} height=${4} cornerRadius=${[6,6,0,0]} fill=${p.ui.color} listening=${!C} @click=${se} @mouseenter=${e=>{HP(e,VP)}} @mouseleave=${e=>{HP(e,``)}} /><k-group name="table-header" x=${9} y=${9}>${C?null:OI({icon:`plus`,name:`table-add-column`,kind:`icon`,size:12,color:ie(h,`plus`,de),mouseenter:ne(`plus`),mouseleave:re,x:x-24-4,y:0,click:ce})}${C?null:OI({icon:`x`,name:`table-remove`,kind:`icon`,size:12,color:ie(h,`x`,de),mouseenter:ne(`x`),mouseleave:re,x:x-12,y:0,click:le})}<k-group name="table-header-inputs" y=${oI(_)-9}>${C?OI({icon:`table-2`,name:`table-header-icon`,kind:`table-header-icon`,size:16,color:h.foreground,x:0,y:0}):null}${we?me({...we,text:p.name.trim()?p.name:`table`,fill:LL(h,p.name,C),focus:o(W.tableName),edit:Se(W.tableName),sharedFocus:ve}):null}${Te?me({...Te,text:p.comment.trim()?p.comment:`comment`,fill:p.comment.trim()?h.active:h.placeholder,focus:o(W.tableComment),edit:Se(W.tableComment),sharedFocus:ye}):null}</k-group>${xe?OI({icon:`waypoints`,name:`table-related`,kind:`icon`,size:12,color:ie(h,`waypoints`,de),mouseenter:ne(`waypoints`),mouseleave:re,x:x-28,y:2,click:ue}):null}${xe?OI({icon:`external-link`,name:`table-go-to-erd`,kind:`icon`,size:12,color:ie(h,`external-link`,de),mouseenter:ne(`external-link`),mouseleave:re,x:x-12,y:2,click:y}):null}</k-group><k-group name="table-columns">${lu(je,e=>e.id,(n,r)=>A`<${xL} .column=${n} .source=${_} .related=${e.relatedColumnIds?.has(n.id)??!1} .litAlpha=${Ae} .divider=${C&&r<je.length-1} .last=${C&&r===je.length-1} .y=${D_(t.state,p,r,_).y-b.y} .width=${b.width} .selected=${s(n.id)} .hovered=${n.id===e.hoveredColumnId} .widthName=${v.name} .widthDataType=${v.dataType} .widthDefault=${v.default} .widthComment=${v.comment} .focusName=${o(W.columnName,n.id)} .focusDataType=${o(W.columnDataType,n.id)} .focusNotNull=${o(W.columnNotNull,n.id)} .focusDefault=${o(W.columnDefault,n.id)} .focusComment=${o(W.columnComment,n.id)} .focusUnique=${o(W.columnUnique,n.id)} .focusAutoIncrement=${o(W.columnAutoIncrement,n.id)} .editName=${Se(W.columnName,n.id)} .editDataType=${Se(W.columnDataType,n.id)} .editDefault=${Se(W.columnDefault,n.id)} .editComment=${Se(W.columnComment,n.id)} .sharedFocusName=${c(W.columnName,n.id)} .sharedFocusDataType=${c(W.columnDataType,n.id)} .sharedFocusNotNull=${c(W.columnNotNull,n.id)} .sharedFocusDefault=${c(W.columnDefault,n.id)} .sharedFocusComment=${c(W.columnComment,n.id)} .sharedFocusUnique=${c(W.columnUnique,n.id)} .sharedFocusAutoIncrement=${c(W.columnAutoIncrement,n.id)} .ghost=${n.id===he} .preview=${e.preview} .editorFocused=${e.editorFocused} .onDragstart=${pe} .onDragend=${fe} />`)}</k-group></k-group>`}},zL=(e,t)=>e.ui.zIndex-t.ui.zIndex,BL=(e,t)=>{let n=aP(t),r=_P(t);return()=>{let{store:t}=n.value,{box:i,scale:a}=e,{settings:{show:o,zoomLevel:s},doc:{tableIds:c,memoIds:l,relationshipIds:u},collections:d}=t.state,f=r.value,p=N(d).collection(`tableEntities`).selectByIds(c).sort(zL),m=N(d).collection(`memoEntities`).selectByIds(l).sort(zL),h=N(d).collection(`relationshipEntities`).selectByIds(u),g=Zh(s);return A`<k-layer name="export-scene" listening=${!1} x=${-i.x*a} y=${-i.y*a} scaleX=${a} scaleY=${a}><k-rect name="export-background" x=${i.x} y=${i.y} width=${i.width} height=${i.height} fill=${f.canvasBackground} />${G(o,F.relationship)?A`<${gL} .relationships=${h} />`:null}${lu(p,e=>e.id,e=>g?A`<${jF} .table=${e} />`:A`<${RL} .table=${e} />`)}${lu(m,e=>e.id,e=>A`<${kI} .memo=${e} />`)}</k-layer>`}};async function VL({doc:e,theme:t,toWidth:n,zoomLevel:r}){let i=rP({toWidth:n},{devtools:!1});i.store.dispatchSync(NA(e)),x(r)&&i.store.dispatchSync(rv({value:r})),await yP(32);let a=i.store.state.settings.zoomLevel,o=CP(i.store.state),s=wP(o,a),c=vP({app:i,container:document.createElement(`div`),scene:A`<${BL} .box=${o} .scale=${s} />`,width:o.width*s,height:o.height*s,theme:t});return await rf(),{stage:c.stage,box:o,scale:s,zoomLevel:a,destroy:()=>{c.destroy(),oP(i)}}}function HL(e){return`convertToBlob`in e?e.convertToBlob({type:`image/png`}):new Promise((t,n)=>{e.toBlob(e=>{e?t(e):n(Error(`[export-png] the canvas encoded no png`))},`image/png`)})}async function UL({doc:e,theme:t,pixelRatio:n,zoomLevel:r,toWidth:i}){let a=await VL({doc:e,theme:t,toWidth:i,zoomLevel:r});try{let e=xP(n,a.stage.width(),a.stage.height()),t=a.stage.toCanvas({pixelRatio:e}),r=await HL(t),{width:i,height:o}=t;return{blob:r,width:i,height:o,reduction:a.scale*e<n*a.zoomLevel?{documentWidth:a.box.width,documentHeight:a.box.height,width:i,height:o}:null}}finally{a.destroy()}}const WL=`400 12px ${AP}`,GL=[`ERD editor 0123456789`,`가나다 漢字 テスト`,`—…€· iIlL1`];function KL(){if(typeof OffscreenCanvas>`u`)return null;let e=new OffscreenCanvas(1,1).getContext(`2d`);return e?(e.font=WL,t=>Math.round(e.measureText(t).width)+2):null}function qL(e){return GL.map(t=>e(t))}function JL(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}const YL=new class{async probeFontWidths(){return qL(this.createToWidth())}async render(e){let t=this.createToWidth(),n=qL(t);if(!JL(n,e.fontProbe))throw Error(`[export-png] this realm measures text differently: ${n.join()} against ${e.fontProbe.join()}`);return UL({...e,toWidth:t})}createToWidth(){let e=KL();if(!e)throw Error(`[export-png] this realm has no 2d context to measure by`);return e}};self.onconnect=t=>{let n=t.ports[0];e.expose(YL,n)};
|