@dineug/erd-editor 3.6.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/README.md +21 -24
- package/dist/components/erd/automatic-table-placement/AutomaticTablePlacement.d.ts +5 -15
- package/dist/components/erd/automatic-table-placement/runElkPlacement.d.ts +23 -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/erd-context-menu/menus/tablePlacementMenus.d.ts +24 -0
- 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/code-block/CodeBlock.d.ts +2 -2
- package/dist/components/primitives/icon/icons.d.ts +7 -0
- 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 +16 -0
- 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.d.ts +0 -1
- package/dist/index.dev.d.ts +0 -1
- package/dist/index.js +6238 -4937
- 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 +83 -0
- package/dist/services/elk-layout/elkLayout.shared-worker.d.ts +2 -0
- package/dist/services/elk-layout/elkLayoutOptions.d.ts +46 -0
- package/dist/services/elk-layout/elkLayoutService.d.ts +25 -0
- package/dist/services/elk-layout/elkWorkerRealm.d.ts +2 -0
- package/dist/services/elk-layout/index.d.ts +19 -0
- package/dist/services/shiki/index.d.ts +10 -0
- package/dist/services/shiki/shiki.shared-worker.d.ts +2 -0
- package/dist/services/shiki/shikiService.d.ts +18 -0
- package/dist/utils/calcTable.d.ts +27 -1
- package/dist/utils/clickGesture.d.ts +19 -0
- package/dist/utils/domEvent.d.ts +12 -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 +18 -7
- package/dist/utils/globalEventObservable.d.ts +6 -1
- package/dist/utils/keyboard-shortcut/index.d.ts +2 -1
- package/dist/utils/promise.d.ts +6 -0
- package/dist/workers/elkLayout.shared-worker.js +1 -0
- package/dist/workers/exportPng.shared-worker.js +26 -26
- package/dist/workers/shiki.shared-worker.js +1 -0
- package/dist/workers/spawn.d.ts +5 -3
- package/dist/workers/spawn.inline.d.ts +2 -0
- package/package.json +7 -4
- package/dist/services/shikiService.d.ts +0 -9
|
@@ -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{ArrowRight as Xe,Atom as Ze,Braces as Qe,Brackets as $e,CaseSensitive as et,Check as tt,ChevronRight as nt,Code as rt,Contrast as it,Copy as at,Database as ot,Diff as st,Eye as ct,FileDiff as lt,FileImage as ut,FileInput as dt,FileOutput as ft,GripVertical as pt,Hand as mt,KeyRound as ht,Maximize as gt,Minimize as _t,Minus as vt,MoonStar as yt,MousePointer2 as bt,Palette as xt,Plus as St,Redo2 as Ct,RefreshCw as wt,RotateCcwClock as Tt,Search as Et,Settings as Dt,Share2 as Ot,Spline as kt,StickyNote as At,Sun as jt,Table as Mt,TableProperties as Nt,Undo2 as Pt,Workflow as Ft,X as It}from"lucide";import{amber as Lt,amberA as Rt,amberDark as zt,amberDarkA as Bt,blue as Vt,blueA as Ht,blueDark as Ut,blueDarkA as Wt,bronze as Gt,bronzeA as Kt,bronzeDark as qt,bronzeDarkA as Jt,brown as Yt,brownA as Xt,brownDark as Zt,brownDarkA as Qt,crimson as $t,crimsonA as en,crimsonDark as tn,crimsonDarkA as nn,cyan as rn,cyanA as an,cyanDark as on,cyanDarkA as sn,gold as cn,goldA as ln,goldDark as un,goldDarkA as dn,grass as fn,grassA as pn,grassDark as mn,grassDarkA as hn,gray as gn,grayA as _n,grayDark as vn,grayDarkA as yn,green as bn,greenA as xn,greenDark as Sn,greenDarkA as Cn,indigo as wn,indigoA as Tn,indigoDark as En,indigoDarkA as Dn,iris as On,irisA as kn,irisDark as An,irisDarkA as jn,jade as Mn,jadeA as Nn,jadeDark as Pn,jadeDarkA as Fn,lime as In,limeA as Ln,limeDark as Rn,limeDarkA as zn,mauve as Bn,mauveA as Vn,mauveDark as Hn,mauveDarkA as Un,mint as Wn,mintA as Gn,mintDark as Kn,mintDarkA as qn,olive as Jn,oliveA as Yn,oliveDark as Xn,oliveDarkA as Zn,orange as Qn,orangeA as $n,orangeDark as er,orangeDarkA as tr,pink as nr,pinkA as rr,pinkDark as ir,pinkDarkA as ar,plum as or,plumA as sr,plumDark as cr,plumDarkA as lr,purple as ur,purpleA as dr,purpleDark as fr,purpleDarkA as pr,red as mr,redA as hr,redDark as gr,redDarkA as _r,ruby as vr,rubyA as yr,rubyDark as br,rubyDarkA as xr,sage as Sr,sageA as Cr,sageDark as wr,sageDarkA as Tr,sand as Er,sandA as Dr,sandDark as Or,sandDarkA as kr,sky as Ar,skyA as jr,skyDark as Mr,skyDarkA as Nr,slate as Pr,slateA as Fr,slateDark as Ir,slateDarkA as Lr,teal as Rr,tealA as zr,tealDark as Br,tealDarkA as Vr,tomato as Hr,tomatoA as Ur,tomatoDark as Wr,tomatoDarkA as Gr,violet as Kr,violetA as qr,violetDark as Jr,violetDarkA as Yr,yellow as Xr,yellowA as Zr,yellowDark as Qr,yellowDarkA as $r}from"@radix-ui/colors";import{layoutWithLines as ei,prepareWithSegments as ti}from"@chenglou/pretext";import{Easings as ni,Tween as ri}from"konva/lib/Tween";function ii(e){"@babel/helpers - typeof";return ii=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},ii(e)}function ai(e,t){if(ii(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(ii(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function oi(e){var t=ai(e,`string`);return ii(t)==`symbol`?t:t+``}function si(e,t,n){return(t=oi(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ci=class extends EventTarget{constructor(...e){super(...e),si(this,`textContent`,``)}},li=class{};function ui(){let e=new OffscreenCanvas(1,1);return e.style??={},e}typeof document>`u`&&(Reflect.set(globalThis,`document`,{createElement:e=>e===`canvas`?ui():new ci}),Reflect.set(globalThis,`Node`,li),Reflect.set(globalThis,`HTMLElement`,li));function di(e,t){return Object.freeze({key:t??Symbol(),value:e})}var fi={subscribe:`@@r-html/context-subscribe`,unsubscribe:`@@r-html/context-unsubscribe`};function pi(e,t){function n(n,r){return new CustomEvent(e,{detail:n,...t,...r})}return n.toString=()=>`${e}`,n.type=e,n}var mi=pi(fi.subscribe,{bubbles:!0,composed:!0}),hi=pi(fi.unsubscribe,{bubbles:!0,composed:!0});function gi(e,t){let n=e=>{let n=e;t.dispatchEvent(mi(n.detail))},r=e=>{let n=e;t.dispatchEvent(hi(n.detail))};return e.addEventListener(mi.type,n),e.addEventListener(hi.type,r),()=>{e.removeEventListener(mi.type,n),e.removeEventListener(hi.type,r)}}function _i(e,...t){try{return e?.(...t)}catch(e){console.error(e)}}var vi=queueMicrotask??(e=>{Promise.resolve().then(e)}),yi=e=>t=>typeof t===e,bi=yi(`object`),xi=yi(`bigint`),Si=yi(`boolean`),Ci=yi(`function`),wi=yi(`number`),Ti=yi(`string`),Ei=yi(`symbol`),Di=yi(`undefined`),Oi=e=>e===null,{isArray:ki}=Array,Ai=e=>bi(e)&&!Oi(e)&&!ki(e),ji=e=>xi(e)||Si(e)||wi(e)||Ti(e)||Ei(e)||Di(e)||Oi(e);function Mi(){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 Ni=`...`,Pi=`@@r-html-${Math.random().toString().substring(2,8)}`,Fi=`${Ni}${Pi}`,Ii=RegExp(`${Pi}_(\\d+)_`,`g`),Li=RegExp(`^${Pi}_\\d+_$`),Ri=/^\n/,S=function(e){return e.attribute=`attribute`,e.boolean=`boolean`,e.event=`event`,e.property=`property`,e.spread=`spread`,e.directive=`directive`,e}({}),zi=Symbol.for(`https://github.com/dineug/r-html#beforeMount`),Bi=Symbol.for(`https://github.com/dineug/r-html#mounted`),Vi=Symbol.for(`https://github.com/dineug/r-html#unmounted`),Hi=Symbol.for(`https://github.com/dineug/r-html#beforeFirstUpdate`),Ui=Symbol.for(`https://github.com/dineug/r-html#beforeUpdate`),Wi=Symbol.for(`https://github.com/dineug/r-html#firstUpdated`),Gi=Symbol.for(`https://github.com/dineug/r-html#updated`),Ki=[zi,Bi,Vi,Hi,Ui,Wi,Gi],qi=Symbol.for(`https://github.com/dineug/r-html#Directive`),Ji=Symbol.for(`https://github.com/dineug/r-html#TemplateLiterals`),Yi=null;function Xi(e){Yi=e}var Zi=e=>t=>{Yi&&(Yi[e]??(Yi[e]=[])).push(t)},Qi=Zi(zi),$i=Zi(Bi),ea=Zi(Vi);function ta(e,t){let n=Reflect.get(e,t,e);ki(n)&&n.forEach(_i)}function na(e){Ki.forEach(t=>Reflect.set(e,t,null,e))}function ra(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}function C(e,t,n){ra(e,t),t.set(e,n)}function ia(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(ia(e,t),n),n}function T(e,t){return e.get(ia(e,t))}var aa=Mi(),oa=e=>e,sa=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=oa(e);super.commit(n),w(t,this,e)}hmr(){w(n,this,aa.subscribe(e=>T(t,this).includes(e)&&this.commit(T(t,this))))}destroy(){T(n,this)?.call(this),super.destroy?.()}}},ca=new WeakMap,la=new WeakMap,ua=new WeakMap,da=new WeakMap,fa=new WeakMap,pa={shallow:!1},ma=null;function ha(e){return ma=e,_i(e),ma=null,()=>ga(e)}function ga(e){Aa(e);let t=fa.get(e);if(t)for(let[n]of t.entries())la.get(n)?.delete(e);t&&fa.delete(e)}function _a(e){if(!ma)return;let t=la.get(e);t?t.has(ma)||t.add(ma):la.set(e,new Set([ma]))}function va(e,t){if(!ma)return;let n=fa.get(ma);if(n){let r=n.get(e);r?r.has(t)||r.add(t):n.set(e,new Set([t]))}else fa.set(ma,new Map([[e,new Set([t])]]))}var ya=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||(ki(e)||Ai(e))&&Object.isFrozen(e);function ba(e,t={}){let{shallow:n}=Object.assign({},pa,t),r=new Proxy(e,{get(r,i,a){let o=Reflect.get(r,i,a);return ya(o)?o:(_a(e),va(e,i),!n&&(Ai(o)||ki(o))&&!ua.has(o)?ca.has(o)?ca.get(o):ba(o,t):o)},set(e,t,n,r){let i=Reflect.get(e,t,r),a=Reflect.set(e,t,n,r);return(!ki(e)&&i!==n||t===`length`)&&(ja(e,t),Pa(e,t)),a},deleteProperty(e,t){let n=Reflect.deleteProperty(e,t);return ja(e,t),Pa(e,t),n}});return ca.set(e,r),ua.set(r,e),r}function xa(e){return(da.get(e)??da.set(e,Mi()).get(e)).asReadonly()}var Sa=[],Ca=new Map,wa=new Map,Ta=!0;function Ea(e,t,n){let r=fa.get(n);if(!r)return!1;let i=r.get(e);return i?i.has(t):!1}var Da=e=>t=>{let n=Ca.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()}};Sa.push(n),Ca.set(t,n)}return Ta&&=(vi(Na),!1),i},Oa=Da(`observer`),ka=Da(`nextTick`);function Aa(e){let t=Ca.get(e);if(!t)return;let n=Sa.indexOf(t);n===-1||Sa.splice(n,1),Ca.delete(e),t.resolve()}var ja=(e,t)=>la.get(e)?.forEach(n=>Ea(e,t,n)&&Oa(n));function Ma(){let e=Sa.shift();if(e){if(Ca.delete(e.fn),e.type===`observer`)ga(e.fn),ha(e.fn),e.resolve();else if(e.type===`nextTick`){let t=_i(e.fn);t instanceof Promise?t.finally(e.resolve):e.resolve()}}}function Na(){for(;Sa.length;)Ma();Ta=!0}function Pa(e,t){let n=ca.get(e);if(!n)return;let r=da.get(n);if(!r)return;let i=wa.get(n);i?i.has(t)||i.add(t):(wa.set(n,new Set([t])),ka(()=>{let e=wa.get(n);e&&(wa.delete(n),e.forEach(e=>r.next(e)))}))}function Fa(e,t){let n=ba({value:t.value},{shallow:!0}),r=e=>{n.value=e},i=()=>e instanceof HTMLElement?e:e.parentElement??e.host,a=()=>{i().dispatchEvent(mi({context:t,observer:r}))};return a(),Qi(a),ea(()=>{i().dispatchEvent(hi({context:t,observer:r}))}),n}function Ia(e,t,n){let r=e instanceof HTMLElement?e:e.parentElement??e.host,i=Mi(),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(mi.type,o),r.addEventListener(hi.type,s),{set:e=>{i.next(e)},destroy:()=>{r.removeEventListener(mi.type,o),r.removeEventListener(hi.type,s);for(let e of a.values())e();a.clear()}}}var La=function(e){return e.node=`node`,e.attribute=`attribute`,e}({});function Ra(e,t){return Reflect.set(t,qi,e),t}function za(e,t,n){let r={startNode:e,endNode:t};return Reflect.defineProperty(r,"helper",{value:n}),r}function Ba(e,t){return(...n)=>Ra(La.node,[e(...n),t])}var Va=function(e){return e.html=`html`,e.svg=`svg`,e.css=`css`,e}({}),Ha=new Set(Object.values(Va)),Ua=Symbol.for(`https://github.com/dineug/r-html#CSSSource`),Wa=new WeakMap,Ga=new WeakMap,Ka=new Set([Va.svg]),qa=e=>`${Pi}_${e}_`,Ja=e=>ki(e)&&ki(e.raw),Ya=e=>Ai(e)&&Ja(e.strings)&&ki(e.values)&&Ha.has(Reflect.get(e,Ji)??``),Xa=e=>Ya(e)&&e[Ji]===Va.css,Za=(e,t=!0,n=!1)=>r=>t?!!r?.trimStart().startsWith(e):n?!!r?.trimEnd().endsWith(e):new RegExp(e).test(r??``),Qa=Za(Fi),$a=Za(`.`),eo=Za(`?`),to=Za(`@`),no=Za(`on`),ro=Za(Pi,!1),io=e=>ro(e)&&Li.test(e?.trim()??``),ao=({type:e,value:t})=>e===S.spread||e===S.directive||ro(t),oo=e=>Ka.has(e),so=e=>io(e)?S.directive:Qa(e)?S.spread:$a(e)?S.property:to(e)||no(e)?S.event:eo(e)?S.boolean:S.attribute,co=e=>Qa(e)?e.substring(3):io(e)?e:$a(e)||to(e)||eo(e)?e.substring(1):no(e)?e.substring(2):e;function lo(e){let t=[],n=Ii.exec(e);for(;n;){let r=Number(n[1]);t.push([n[0],Number.isInteger(r)?r:-1]),n=Ii.exec(e)}return t}var uo=Symbol(`https://github.com/dineug/r-html.git#hostBridge`);function fo(e,t){if(t instanceof ShadowRoot){let n=t.host;Reflect.set(e,uo,n)}return()=>{Reflect.deleteProperty(e,uo)}}function po(e){return Reflect.get(e,uo)??null}function mo(e){return ji(e)&&!Oi(e)&&!Di(e)||Xa(e)?String(e):``}var ho={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?mo(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=po(r);e&&(n.host=e)}return n},bridgeFragment(e,t){let n=gi(e,t),r=fo(e,t);return()=>{n(),r()}}};function go(e){"@babel/helpers - typeof";return go=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},go(e)}function _o(e,t){if(go(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(go(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function vo(e){var t=_o(e,`string`);return go(t)==`symbol`?t:t+``}function yo(e,t,n){return(t=vo(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var bo,xo=function(e){return e.element=`element`,e.text=`text`,e.comment=`comment`,e}({});bo=Symbol.iterator;var So=class{constructor(e={}){yo(this,`type`,`comment`),yo(this,`value`,``),yo(this,`attrs`,void 0),yo(this,`parent`,null),yo(this,`children`,void 0),Object.assign(this,e)}*iterParent(){yield this,this.parent&&(yield*this.parent.iterParent())}*[bo](){if(yield this,this.children)for(let e of this.children)yield*e}},Co=e=>!!e&&e!==`false`;function wo(e){let t=({type:t,value:n},r=!1)=>t===xo.element?e.createElement(n,r):t===xo.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:Co(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=wo(ho);E.setAttr,E.insertBeforeNode,E.insertAfterNode,E.removeNode,E.rangeNodes,E.removeRange;var To=E.isHostNode;function Eo(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,Co(r))}}var Do=(e,t)=>e.length===t.length&&e.every((e,n)=>e===t[n]);function Oo(e,t){if(e===t)return!0;let n=Ai(e)?e:{},r=Ai(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 ko=e=>ki(e)&&Ci(e[0])&&(Di(e[1])||Si(e[1])||Ai(e[1])),Ao=()=>{},jo=e=>e instanceof HTMLElement,Mo=e=>e instanceof SVGElement,No=e=>e instanceof Promise,Po=new WeakMap,Fo=new WeakMap,Io=new WeakMap,Lo=new WeakMap,Ro=new WeakMap,zo=new WeakMap,Bo=new WeakMap,Vo=new WeakMap,Ho=new WeakMap,Uo=class{constructor(e,{name:t,value:n},r=E){C(this,Po,void 0),C(this,Fo,void 0),C(this,Io,void 0),C(this,Lo,void 0),C(this,Ro,[]),C(this,zo,[]),C(this,Bo,void 0),C(this,Vo,null),C(this,Ho,null),w(Po,this,r),w(Fo,this,e),w(Io,this,t),w(Lo,this,n),w(Ro,this,lo(n??``)),w(Bo,this,T(Ro,this).length===1&&(n??``).trim()===T(Ro,this)[0][0])}commit(e){let t=T(Ro,this).map(([t,n])=>e[n]);if(Do(T(zo,this),t))return;let n=t[t.length-1];if(T(Io,this)===`class`)this.classCommit(n);else if(T(Io,this)===`style`)this.styleCommit(n);else if(T(Bo,this))T(Po,this).setAttribute(T(Fo,this),T(Io,this),t[0],!0);else{let e=t.reduce((e,t,n)=>e.replace(new RegExp(T(Ro,this)[n][0]),mo(t)),T(Lo,this)??``);T(Po,this).setAttribute(T(Fo,this),T(Io,this),e.trim(),!1)}w(zo,this,t)}classCommit(e){let t=T(Fo,this);if(!jo(t)&&!Mo(t))return;let n=T(zo,this)[T(zo,this).length-1];if(n===e||ki(n)&&ki(e)&&Do(n,e)||Ai(n)&&Ai(e)&&Oo(n,e))return;let r=[...t.classList],i=Go(e);if(Oi(T(Ho,this)))w(Ho,this,r);else{let e=T(Ho,this),n=r.filter(t=>!e.includes(t)&&!i.includes(t));t.classList.remove(...n)}t.classList.add(...i)}styleCommit(e){let t=T(Fo,this);if(!jo(t)&&!Mo(t))return;let n=T(zo,this)[T(zo,this).length-1];if(Oo(n,e))return;let r=Wo(t),i=Ai(e)?e:{};if(Oi(T(Vo,this)))w(Vo,this,r);else{let e=T(Vo,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 Wo(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 Go(e,t=[]){if(!e)return t;if(Xa(e))return t.push(mo(e)),t;if(ji(e))t.push(mo(e));else if(bi(e)){if(ki(e))for(let n=0;n<e.length;n++)e[n]&&Go(e[n],t);else for(let n in e)e[n]&&t.push(mo(n))}return t}var Ko=new WeakMap,qo=new WeakMap,Jo=new WeakMap,Yo=new WeakMap,Xo=new WeakMap,Zo=class{constructor(e,{name:t,value:n},r=E){C(this,Ko,void 0),C(this,qo,void 0),C(this,Jo,void 0),C(this,Yo,[]),C(this,Xo,[]),w(Ko,this,r),w(qo,this,e),w(Jo,this,t),w(Yo,this,lo(n??``))}commit(e){let t=T(Yo,this).map(([t,n])=>e[n]);if(Do(T(Xo,this),t))return;let n=t[t.length-1];Co(n)?T(Ko,this).setAttribute(T(qo,this),T(Jo,this),``,!1):T(Ko,this).removeAttribute(T(qo,this),T(Jo,this)),w(Xo,this,t)}},Qo=e=>ki(e)&&Reflect.get(e,qi)===La.attribute,$o=new WeakMap,es=new WeakMap,ts=new WeakMap,ns=new WeakMap,rs=new WeakMap,is=class{constructor(e,{name:t}){C(this,$o,void 0),C(this,es,void 0),C(this,ts,null),C(this,ns,null),C(this,rs,null),w($o,this,e),w(es,this,lo(t)[0])}commit(e){let[,t]=T(es,this),n=e[t];if(!Qo(n))return;let[r,i]=n;if(T(ts,this)!==i)T(rs,this)?.call(this),w(ns,this,i({node:T($o,this)})),w(ts,this,i),w(rs,this,T(ns,this)?.call(this,r));else{let e=T(ns,this)?.call(this,r);T(rs,this)!==e&&(T(rs,this)?.call(this),w(rs,this,e))}}destroy(){T(rs,this)?.call(this)}},as=new WeakMap,os=new WeakMap,ss=new WeakMap,cs=new WeakMap,ls=new WeakMap,us=class{constructor(e,{name:t,value:n},r=E){C(this,as,void 0),C(this,os,void 0),C(this,ss,void 0),C(this,cs,[]),C(this,ls,[]),w(as,this,r),w(os,this,e),w(ss,this,t),w(cs,this,lo(n??``))}commit(e){let t=T(cs,this).map(([t,n])=>e[n]).filter(e=>Ci(e)||ko(e));Do(T(ls,this),t)||(this.clear(),t.forEach(e=>{let[t,n]=ds(e);T(as,this).addEventListener(T(os,this),T(ss,this),t,n)}),w(ls,this,t))}clear(){T(ls,this).forEach(e=>{let[t,n]=ds(e);T(as,this).removeEventListener(T(os,this),T(ss,this),t,n)})}destroy(){this.clear()}};function ds(e){return Ci(e)?[e,void 0]:e}var fs=new WeakMap,ps=new WeakMap,ms=new WeakMap,hs=new WeakMap,gs=class{constructor(e,{name:t,value:n}){C(this,fs,void 0),C(this,ps,void 0),C(this,ms,[]),C(this,hs,[]),w(fs,this,e),w(ps,this,t),w(ms,this,lo(n??``))}commit(e){let t=T(ms,this).map(([t,n])=>e[n]);if(Do(T(hs,this),t))return;let n=t[t.length-1];Reflect.set(T(fs,this),T(ps,this),n,T(fs,this)),w(hs,this,t)}},_s=new WeakMap,vs=new WeakMap,ys=new WeakMap,bs=class{constructor(e,{name:t}){C(this,_s,void 0),C(this,vs,void 0),C(this,ys,null),w(_s,this,e),w(vs,this,lo(t)[0])}commit(e){let[,t]=T(vs,this),n=e[t];!Ai(n)||Oo(T(ys,this),n)||(Object.keys(n).forEach(e=>Reflect.set(T(_s,this),e,n[e],T(_s,this))),w(ys,this,n))}},xs=(e,t,n=E)=>t.type===S.attribute?new Uo(e,t,n):t.type===S.boolean?new Zo(e,t,n):t.type===S.event?new us(e,t,n):t.type===S.property?new gs(e,t):t.type===S.spread?new bs(e,t):new is(e,t),Ss=new WeakMap,Cs=new WeakMap,ws=new WeakMap,Ts=new WeakMap,Es=new WeakMap,Ds=class{constructor(e,{value:t},n=E){C(this,Ss,void 0),C(this,Cs,void 0),C(this,ws,void 0),C(this,Ts,[]),C(this,Es,[]),w(Ss,this,n),w(Cs,this,e),w(ws,this,t),Ti(t)&&w(Ts,this,lo(t))}commit(e){let t=T(Ts,this).map(([t,n])=>e[n]);if(Do(T(Es,this),t))return;w(Es,this,t);let n=T(Es,this).reduce((e,t,n)=>e.replace(new RegExp(T(Ts,this)[n][0]),ji(t)&&!Oi(t)&&!Di(t)?String(t):``),T(ws,this)??``);T(Ss,this).setText(T(Cs,this),n)}},Os=new WeakMap,ks=new WeakMap,As=new WeakMap,js=new WeakMap,Ms=class{constructor(e,{name:t,value:n}){C(this,Os,void 0),C(this,ks,void 0),C(this,As,[]),C(this,js,[]),w(Os,this,e),w(ks,this,t),w(As,this,lo(n??``))}commit(e){let t=T(As,this).map(([t,n])=>e[n]);if(Do(T(js,this),t))return;let n=t[t.length-1];Reflect.set(T(Os,this),T(ks,this),n),w(js,this,t)}},Ns=function(e){return e.create=`create`,e.move=`move`,e}({});function Ps(e){let t=[],n=new Map;return e.forEach(({type:e,value:r},i)=>{let a={type:e,key:e===bc.templateLiterals?r.strings:r};t.push(a),n.set(a,i)}),{items:t,itemToIndex:n}}function Fs(e){let t=[],n=new Map;return e.forEach((e,r)=>{let i=Ac(e),a={type:i,key:i===bc.templateLiterals?e.strings:e};t.push(a),n.set(a,r)}),{items:t,itemToIndex:n}}function Is(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 Ls=new WeakMap,Rs=new WeakMap,zs=new WeakMap,Bs=new WeakMap,Vs=class{constructor(e,t,n=E){C(this,Ls,void 0),C(this,Rs,void 0),C(this,zs,void 0),C(this,Bs,[]),w(Rs,this,e),w(zs,this,t),w(Ls,this,n)}commit(e){let t=Is(Ps(T(Bs,this)),Fs(e)),n={length:e.length};t.update.forEach(({action:t,from:r,to:i})=>{switch(t){case Ns.create:let t=T(Ls,this).createMarker(``);i===0?T(Ls,this).insertAfterNode(t,T(Rs,this)):T(Bs,this).length?T(Ls,this).insertAfterNode(t,n[i-1]?n[i-1].endNode:T(Bs,this)[i-1].endNode):T(Ls,this).insertBeforeNode(t,T(zs,this)),n[i]=new Ws(t,e[i],T(Ls,this));break;case Ns.move:if(n[i]=T(Bs,this)[r],i===r)return;i===0?T(Bs,this)[r].insert(`after`,T(Rs,this)):T(Bs,this)[r].insert(`after`,n[i-1]?n[i-1].endNode:T(Bs,this)[i-1].endNode)}}),t.delete.forEach(({from:e})=>T(Bs,this)[e].destroy()),w(Bs,this,Array.from(n)),T(Bs,this).forEach((t,n)=>t.commit(e[n]))}destroy(){T(Bs,this).forEach(e=>e.destroy())}},Hs=new WeakMap,Us=new WeakMap,Ws=class{constructor(e,t,n=E){C(this,Hs,void 0),C(this,Us,void 0),yo(this,`startNode`,void 0),yo(this,`endNode`,void 0),yo(this,`type`,void 0),yo(this,`value`,void 0),w(Us,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=Ac(t),w(Hs,this,Pc(this.type,this.startNode,this.endNode,n))}commit(e){T(Hs,this).commit(e),this.value=e}insert(e,t){let n=[this.startNode,...T(Us,this).rangeNodes(this.startNode,this.endNode),this.endNode];e===`before`?n.forEach(e=>T(Us,this).insertBeforeNode(e,t)):n.reverse().forEach(e=>T(Us,this).insertAfterNode(e,t))}destroy(){T(Hs,this).destroy?.(),T(Us,this).removeRange(this.startNode,this.endNode),T(Us,this).removeNode(this.startNode),T(Us,this).removeNode(this.endNode)}},Gs=new WeakMap,Ks=new WeakMap,qs=new WeakMap,Js=new WeakMap,Ys=new WeakMap,Xs=new WeakMap,Zs=class{constructor(e,t,n=E){C(this,Gs,void 0),C(this,Ks,void 0),C(this,qs,void 0),C(this,Js,null),C(this,Ys,null),C(this,Xs,void 0),w(Ks,this,e),w(qs,this,t),w(Gs,this,n)}commit(e){if(!xc(e))return;let[t,n]=e;if(T(Js,this)!==n)this.clear(),w(Ys,this,n(za(T(Ks,this),T(qs,this),T(Gs,this)))),w(Js,this,n),w(Xs,this,T(Ys,this)?.call(this,t));else{let e=T(Ys,this)?.call(this,t);T(Xs,this)!==e&&(this.clear(),w(Xs,this,e))}}clear(){T(Xs,this)?.call(this),T(Gs,this).removeRange(T(Ks,this),T(qs,this))}destroy(){this.clear()}},Qs=class{constructor(e,t){}commit(e){}},$s=new WeakMap,ec=new WeakMap,tc=new WeakMap,nc=class{constructor(e,t,n=E){C(this,$s,void 0),C(this,ec,void 0),C(this,tc,null),w(ec,this,t),w($s,this,n)}commit(e){T(tc,this)!==e&&(T(tc,this)&&T($s,this).removeNode(T(tc,this)),T($s,this).insertBeforeNode(e,T(ec,this)),w(tc,this,e))}},rc=new WeakMap,ic=new WeakMap,ac=new WeakMap,oc=new WeakMap,sc=new WeakMap,cc=new WeakMap,lc=class{constructor(e,t,n=E){C(this,rc,void 0),C(this,ic,void 0),C(this,ac,void 0),C(this,oc,null),C(this,sc,null),C(this,cc,Ao),w(ic,this,e),w(ac,this,t),w(rc,this,n)}commit(e){T(oc,this)!==e&&(this.clear(),No(e)&&this.promiseCommit(e))}promiseCommit(e){let[t,n]=uc(e);w(cc,this,n),t.then(e=>{let t=Ac(e);w(sc,this,Pc(t,T(ic,this),T(ac,this),T(rc,this))),T(sc,this)?.commit(e)}),w(oc,this,e)}partClear(){T(sc,this)?.destroy?.(),T(rc,this).removeRange(T(ic,this),T(ac,this))}clear(){T(cc,this).call(this),this.partClear(),w(cc,this,Ao)}destroy(){this.clear()}};function uc(e){let t=Ao,n=new Promise((e,n)=>t=n);return[Promise.race([n,e]),()=>t()]}var dc=new WeakMap,fc=new WeakMap,pc=new WeakMap,mc=class{constructor(e,t,n=E){C(this,dc,void 0),C(this,fc,void 0),C(this,pc,null),w(dc,this,n),w(fc,this,n.createText(``)),n.insertAfterNode(T(fc,this),e)}commit(e){T(pc,this)!==e&&(T(dc,this).setText(T(fc,this),Oi(e)||Di(e)?``:String(e)),w(pc,this,e))}},hc=new WeakMap,gc=new WeakMap,_c=new WeakMap,vc=new WeakMap,yc=class{constructor(e,t,n=E){C(this,hc,void 0),C(this,gc,void 0),C(this,_c,void 0),C(this,vc,null),w(gc,this,e),w(_c,this,t),w(hc,this,n)}commit(e){let{strings:t,values:n}=e;T(vc,this)&&!T(vc,this).equalStrings(t)&&(T(vc,this).destroy(),w(vc,this,null)),T(vc,this)||(w(vc,this,new hl(e,T(gc,this),T(_c,this),T(hc,this))),T(vc,this).insert(`before`,T(_c,this))),T(vc,this).commit(n)}destroy(){T(vc,this)?.destroy()}},bc=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}({}),xc=e=>ki(e)&&Reflect.get(e,qi)===La.node,Sc=e=>t=>t instanceof e,Cc=Sc(mc),wc=Sc(yc),Tc=Sc(Vs),Ec=Sc(nc),Dc=Sc(lc),Oc=Sc(Qs),kc=Sc(Zs),Ac=e=>ji(e)?`primitive`:Ya(e)?`templateLiterals`:xc(e)?`directive`:ki(e)?`array`:To(e)?`node`:Ci(e)?`function`:`object`,jc={primitive:Cc,templateLiterals:wc,array:Tc,node:Ec,function:Oc,object:Dc,directive:kc},Mc={primitive:mc,templateLiterals:yc,array:Vs,node:nc,function:Qs,object:lc,directive:Zs},Nc=(e,t)=>jc[e](t),Pc=(e,t,n,r=E)=>new Mc[e](t,n,r),Fc=new WeakMap,Ic=new WeakMap,Lc=new WeakMap,Rc=new WeakMap,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=class{constructor(e,t,n,r,i=E){C(this,Fc,void 0),C(this,Ic,void 0),C(this,Lc,void 0),C(this,Rc,void 0),C(this,zc,void 0),C(this,Bc,[]),C(this,Vc,[]),C(this,Hc,null),C(this,Uc,ba({},{shallow:!0})),C(this,Wc,null),C(this,Gc,null),C(this,Kc,void 0),w(Fc,this,i),w(Kc,this,i.createEventBus()),w(Ic,this,e),w(Lc,this,t),w(zc,this,n),w(Rc,this,lo(n.value)[0]),n.staticAttrs&&n.staticAttrs.forEach(e=>Eo(T(Uc,this),e)),n.attrs?.forEach(e=>{e.type===S.directive?T(Bc,this).push(e):e.type===S.spread?r.push(new bs(T(Uc,this),e)):e.type===S.event?r.push(new us(T(Kc,this),e,i)):r.push(new Ms(T(Uc,this),e))})}createContext(){return T(Fc,this).createComponentContext(T(Ic,this),T(Kc,this))}commit(e){let[,t]=T(Rc,this),n=e[t];if(!Ci(n)||T(Wc,this)===n){T(Vc,this).forEach(t=>t.commit(e));return}let r=this.createContext();this.clear(),Xi(this);let i=n.call(r,T(Uc,this),r);Xi(null),T(Bc,this).length&&T(Vc,this).push(...T(Bc,this).map(e=>new is(r,e))),ta(this,zi);let a=!1;w(Gc,this,ha(()=>{let e=i(),t=Ac(e);Nc(t,T(Hc,this))||(this.partClear(),w(Hc,this,Pc(t,T(Ic,this),T(Lc,this),T(Fc,this)))),ta(this,a?Ui:Hi),T(Hc,this)?.commit(e),a?ta(this,Gi):(ta(this,Wi),a=!0)})),T(Vc,this).forEach(t=>t.commit(e)),ta(this,Bi),w(Wc,this,n)}partClear(){T(Hc,this)?.destroy?.(),T(Fc,this).removeRange(T(Ic,this),T(Lc,this))}clear(){T(Fc,this).removeRange(T(Ic,this),T(Lc,this)),ta(this,Vi),T(Vc,this).forEach(e=>e.destroy?.()),T(Gc,this)?.call(this),w(Vc,this,[]),w(Gc,this,null),na(this)}destroy(){this.clear(),this.partClear()}},Jc,Yc,Xc,Zc,Qc=sa((Jc=new WeakMap,Yc=new WeakMap,Xc=new WeakMap,Zc=new WeakMap,class{constructor(e,t,n,r=E){C(this,Jc,void 0),C(this,Yc,void 0),C(this,Xc,void 0),C(this,Zc,void 0),w(Jc,this,r),w(Yc,this,r.createMarker(``)),w(Xc,this,r.createMarker(``)),w(Zc,this,new qc(T(Yc,this),T(Xc,this),t,n,r)),r.insertBeforeNode(T(Yc,this),e),r.insertAfterNode(T(Xc,this),e),r.removeNode(e)}commit(e){T(Zc,this).commit(e)}destroy(){T(Zc,this).destroy?.(),T(Jc,this).removeNode(T(Yc,this)),T(Jc,this).removeNode(T(Xc,this))}})),$c=new WeakMap,el=new WeakMap,tl=new WeakMap,nl=new WeakMap,rl=new WeakMap,il=new WeakMap,al=class{constructor(e,{value:t},n=E){C(this,$c,void 0),C(this,el,void 0),C(this,tl,void 0),C(this,nl,void 0),C(this,rl,null),C(this,il,null),w($c,this,n),w(el,this,n.createMarker(``)),w(tl,this,n.createMarker(``)),w(nl,this,lo(t)[0]),n.insertBeforeNode(T(el,this),e),n.insertAfterNode(T(tl,this),e),n.removeNode(e)}commit(e){let[,t]=T(nl,this),n=e[t];if(T(rl,this)===n)return;let r=Ac(n);Nc(r,T(il,this))||(Oi(T(il,this))||this.clear(),w(il,this,Pc(r,T(el,this),T(tl,this),T($c,this)))),T(il,this)?.commit(n),w(rl,this,n)}clear(){T(il,this)?.destroy?.(),T($c,this).removeRange(T(el,this),T(tl,this))}destroy(){this.clear(),T($c,this).removeNode(T(el,this)),T($c,this).removeNode(T(tl,this))}};function ol(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 Qc(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 Ds(a,e,i)),i.isText(a)&&e.isMarkerOnly&&r.push(new al(a,e,i)),i.isElement(a)&&(e.staticAttrs&&e.staticAttrs.forEach(e=>i.setAttr(a,e)),e.attrs&&r.push(...e.attrs.map(e=>xs(a,e,i))),e.children&&ol(e.children,a,e.isSvg||n,r,i))}),r}function sl(e,t=!1,n=E){let r=n.createFragment();return[r,ol(e.children,r,t,[],n)]}var cl=new WeakMap,ll=new WeakMap,ul=new WeakMap,dl=new WeakMap,fl=new WeakMap,pl=new WeakMap,ml=new WeakMap,hl=class{constructor(e,t,n,r=E){if(C(this,cl,void 0),C(this,ll,void 0),C(this,ul,void 0),C(this,dl,null),C(this,fl,[]),C(this,pl,void 0),C(this,ml,!1),w(cl,this,r),w(ll,this,r.createMarker(``)),w(ul,this,r.createMarker(``)),w(pl,this,e.strings),e[Ji]!==Va.html&&e[Ji]!==Va.svg)return;let[i,a]=sl(e.template.node,oo(e[Ji]),r);w(dl,this,i),w(fl,this,a),t&&n?(w(ll,this,t),w(ul,this,n),w(ml,this,!0)):(r.prependChild(i,T(ll,this)),r.appendChild(i,T(ul,this)))}equalStrings(e){return T(pl,this)===e}commit(e){T(fl,this).forEach(t=>t.commit(e))}insert(e,t){T(dl,this)&&(e===`before`?T(cl,this).insertBeforeNode(T(dl,this),t):e===`after`?T(cl,this).insertAfterNode(T(dl,this),t):T(cl,this).appendChild(t,T(dl,this)),w(dl,this,null))}destroy(){T(fl,this).forEach(e=>e.destroy?.()),T(cl,this).removeRange(T(ll,this),T(ul,this)),T(ml,this)||(T(cl,this).removeNode(T(ll,this)),T(cl,this).removeNode(T(ul,this)))}},gl=function(e){return e.string=`string`,e.whiteSpace=`whiteSpace`,e.lt=`lt`,e.gt=`gt`,e.slash=`slash`,e.equal=`equal`,e}({}),_l={doubleQuote:`"`,singleQuote:`'`,whiteSpace:/\s/,string:/\S/,breakString:/<|>|=/,lt:`<`,gt:`>`,slash:`/`,equal:`=`,hyphen:`-`,exclamationPoint:`!`},vl=e=>t=>e===t,yl=e=>t=>e.test(t),bl={doubleQuote:vl(_l.doubleQuote),singleQuote:vl(_l.singleQuote),whiteSpace:yl(_l.whiteSpace),string:yl(_l.string),breakString:yl(_l.breakString),lt:vl(_l.lt),gt:vl(_l.gt),slash:vl(_l.slash),equal:vl(_l.equal),hyphen:vl(_l.hyphen),exclamationPoint:vl(_l.exclamationPoint)},xl=e=>t=>bl.lt(e[t])&&bl.exclamationPoint(e[t+1])&&bl.hyphen(e[t+2])&&bl.hyphen(e[t+3]);function Sl(e){let t=[],n=0,r=()=>n<e.length,i=xl(e),a=(o=`text`)=>{for(;r();){let s=e[n];if(bl.whiteSpace(s)){let i=``;for(;r()&&bl.whiteSpace(s);)i+=s,s=e[++n];o!==`element`&&t.push({type:`whiteSpace`,value:i});continue}if(o===`element`){if(bl.lt(s)){t.push({type:`lt`,value:s}),n++;continue}if(bl.gt(s)){t.push({type:`gt`,value:s}),n++;break}if(bl.slash(s)){t.push({type:`slash`,value:s}),n++;continue}if(bl.equal(s)){t.push({type:`equal`,value:s}),n++;continue}if(bl.doubleQuote(s)){let i=``;for(s=e[++n];r()&&!bl.doubleQuote(s);)i+=s,s=e[++n];t.push({type:`string`,value:i}),n++;continue}if(bl.singleQuote(s)){let i=``;for(s=e[++n];r()&&!bl.singleQuote(s);)i+=s,s=e[++n];t.push({type:`string`,value:i}),n++;continue}}else if(o===`comment`){if(bl.lt(s)){t.push({type:`lt`,value:s}),n++;continue}if(bl.gt(s)){t.push({type:`gt`,value:s}),n++;break}}else if(bl.lt(s)){a(i(n)?`comment`:`element`);continue}if(bl.string(s)){let i=``;for(;r()&&bl.string(s)&&!bl.breakString(s);)i+=s,s=e[++n];t.push({type:`string`,value:i});continue}n++}};return a(),t}var Cl=/^(area|base|br|col|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/i,wl=e=>t=>n=>r=>n[r]?n[r][e]===t:!1,Tl=wl(`type`),El=wl(`value`),Dl=Tl(gl.lt),Ol=Tl(gl.gt),kl=Tl(gl.slash),Al=Tl(gl.equal),jl=Tl(gl.string),Ml=Tl(gl.whiteSpace),Nl=El(`!--`),Pl=El(`--`),Fl=e=>{let t=Dl(e),n=jl(e);return e=>t(e)&&n(e+1)},Il=e=>{let t=Dl(e),n=kl(e),r=jl(e),i=Ol(e);return e=>t(e)&&n(e+1)&&r(e+2)&&i(e+3)},Ll=e=>{let t=Dl(e),n=kl(e),r=Ol(e);return e=>t(e)&&n(e+1)&&n(e+2)&&r(e+3)},Rl=e=>{let t=kl(e),n=Ol(e);return e=>t(e)&&n(e+1)},zl=e=>Cl.test(e),Bl=e=>{let t=Dl(e),n=jl(e),r=Nl(e);return e=>t(e)&&n(e+1)&&r(e+1)},Vl=e=>{let t=jl(e),n=Pl(e),r=Ol(e);return e=>t(e)&&n(e)&&r(e+1)},Hl=e=>t=>n=>{n&&(t[e]?t[e]?.push(n):t[e]=[n])},Ul=Hl(`attrs`),Wl=Hl(`children`);function Gl(e){let t=new So({type:xo.element,value:`template`,children:[]}),n=0,r=()=>n<e.length,i=Fl(e),a=Il(e),o=Ll(e),s=Rl(e),c=Bl(e),l=Vl(e),u=Dl(e),d=Ol(e),f=Al(e),p=Ml(e),m=jl(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 So({parent:t,type:xo.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 So({parent:t,type:xo.comment,value:i})}if(i(n)){f=e[++n];let i=zl(f.value),c=new So({parent:t,type:xo.element,value:f.value.toLowerCase()});for(n++;r()&&!d(n)&&!s(n);){if(m(n)){Ul(c)(h());continue}n++}if(s(n))return n+=2,c;for(f=e[++n];r()&&!a(n)&&!o(n)&&!i;)Wl(c)(g(c));return(a(n)||o(n))&&(n+=4),c}return n++,null};for(;r();)Wl(t)(g(t));return t}var Kl=e=>Gl(Sl(e)),ql=(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)),Jl=Symbol.iterator,Yl=class e{get isMarker(){return ro(this.value)}get isMarkerOnly(){return io(this.value)}get isSvg(){return this.type===xo.element&&/^svg$/i.test(this.value)}get isComponent(){return this.type===xo.element&&this.isMarkerOnly}constructor(t,n=null){if(yo(this,`type`,xo.comment),yo(this,`value`,``),yo(this,`staticAttrs`,void 0),yo(this,`attrs`,void 0),yo(this,`parent`,null),yo(this,`children`,void 0),this.type=t.type,this.value=t.value,this.parent=n,t.attrs){let[e,n]=Ql(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())}*[Jl](){if(yield this,this.children)for(let e of this.children)yield*e}};function Xl(e){let t=new Yl(e);for(let e of t)e.type===xo.text&&!io(e.value)&&Zl(e);return t}function Zl(e){let t=lo(e.value);e.value.replace(Ii,Pi).split(Pi).reduce((n,r,i)=>(i<t.length?n.push(new Yl(new So({type:xo.text,value:r}),e.parent),new Yl(new So({type:xo.text,value:t[i][0]}),e.parent)):n.push(new Yl(new So({type:xo.text,value:r}),e.parent)),n),[]).filter(e=>e.value!==``&&!(!e.value.trim()&&Ri.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 Ql(e=[]){let t=ql(e,e=>co(e.name));return Object.keys(t).map(e=>t[e]).reduce((e,t)=>{let[n,r]=e,i=t[t.length-1],a=so(i.name);if(a===S.event)r.push(...t.filter(e=>!!e.value).map(e=>({type:so(e.name),name:co(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:co(i.name)};e&&(o.value=e),ao(o)?r.push(o):n.push(o)}else{let e={type:a,name:co(i.name)};i.value&&(e.value=i.value),ao(e)?r.push(e):n.push(e)}return e},[[],[]])}var $l=e=>(t,...n)=>{let r={strings:t,values:n,[Ji]:e};if(Wa.has(t))return r.template=Wa.get(t),r;let i=Xl(Kl(t.reduce((e,t,r)=>(r<n.length?e.push(t,qa(r)):e.push(t),e),[]).join(``)));return r.template=Object.freeze({node:i}),Wa.set(t,r.template),r},eu=$l(Va.html),tu=$l(Va.svg);function nu(e){let t=wo(e),n=new WeakMap;return{html:eu,svg:tu,render:(e,r)=>{if(!Ya(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 hl(r,void 0,void 0,t);o?.destroy(),n.set(e,i),i.insert(`children`,e),i.commit(a)}}}}var ru=Ba((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=cu(a,o,s),l=c.values,u=Is(su(r),c,{strict:!0}),d={length:l.length};return u.update.forEach(({action:i,from:a,to:o})=>{switch(i){case Ns.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 ou(i,l[o].value,l[o].key,n);break;case Ns.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}}),iu=new WeakMap,au=new WeakMap,ou=class{constructor(e,t,n,r=E){C(this,iu,void 0),C(this,au,void 0),yo(this,`startNode`,void 0),yo(this,`endNode`,void 0),yo(this,`type`,void 0),yo(this,`key`,void 0),w(au,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=Ac(t),w(iu,this,Pc(this.type,this.startNode,this.endNode,r))}commit(e){T(iu,this).commit(e)}insert(e,t){let n=[this.startNode,...T(au,this).rangeNodes(this.startNode,this.endNode),this.endNode];e===`before`?n.forEach(e=>T(au,this).insertBeforeNode(e,t)):n.reverse().forEach(e=>T(au,this).insertAfterNode(e,t))}destroy(){T(iu,this).destroy?.(),T(au,this).removeRange(this.startNode,this.endNode),T(au,this).removeNode(this.startNode),T(au,this).removeNode(this.endNode)}};function su(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 cu(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:Ac(c.value),key:c.key};a.push(c),r.push(l),i.set(l,o)}),{items:r,itemToIndex:i,values:a}}var lu={vCSSStyleSheetMap:new Map,hostContextMap:new Map,globalOrder:[],orderedSheets:null},uu=globalThis.ShadowRoot&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,du=null;function fu(){return du===null&&(du=pu()),du}function pu(){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 mu(){return lu}function hu(e){let t=mu(),{identifier:n,cssText:r,mode:i}=e;if(!r||t.vCSSStyleSheetMap.has(n))return n;let a=uu?new CSSStyleSheet:null,o=uu?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),bu(s),n}function gu(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 _u(e){return e.orderedSheets||=gu(e).map(({sheet:e})=>e).filter(Boolean),e.orderedSheets}function vu(e,t){e.adoptedStyleSheets=[...t]}function yu(){let e=mu(),t=_u(e);e.hostContextMap.forEach((e,n)=>vu(n,t))}function bu(e){if(!uu){xu();return}let t=mu(),{mode:n,sheet:r}=e,i=t.orderedSheets;if(!r||n===`global`||!i){t.orderedSheets=null,yu();return}if(i.push(r),!fu()){yu();return}t.hostContextMap.forEach((e,t)=>t.adoptedStyleSheets.push(r))}function xu(){let e=mu(),t=gu(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=Su(t,i+1,n);o?e.insertBefore(a,o):e.appendChild(a),n.set(r,a)})})}function Su(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*Cu(e,t,n){for(let r of n)r?.[Symbol.iterator]?yield*Cu(e,t,r):Ci(r)?yield*Cu(e,t,r(e,t)):yield r}var wu=(e,t,n)=>[...Cu(e,t,n)],Tu=(...e)=>t=>e.reduce((e,t)=>t(e),t);function*Eu(e){yield e}var Du=function*(e){for(let t of e)t.length&&(yield t)};function Ou({context:e,state:t,reducers:n,enableObservable:r=!0}){let i=r?ba(t):t,a=Mi(),o=Mi(),s=Tu(Du),c=t=>{_i(Reflect.get(n,t.type,n),i,t,e)},l=(...t)=>{let n=wu(i,e,t);a.next(n)},u=(...e)=>{vi(()=>l(...e))},d=a.subscribe(e=>{let t=s(Eu(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=Tu(...e,Du),()=>{s=Tu(Du)}),destroy:()=>{d(),f()}}}var ku=`__RHTML_CSS_DIAGNOSTICS__`,Au=({line:e,column:t})=>e===void 0?``:` (${e}:${t??1})`,ju=(e,t)=>{let n=`[r-html] ${t.mode===`global`?`css.global`:`css`} ${t.identifier}${Au(e)} ${e.code}: ${e.message}`;e.severity===`error`?console.error(n):console.warn(n)},Mu;function Nu(){if(Mu!==void 0)return Mu;let e=Reflect.get(globalThis,ku);return e?typeof e==`function`?e:ju:null}function Pu(){return Nu()!==null}function Fu(e,t){if(e.length===0)return;let n=Nu();if(n)for(let r of e)n(r,t)}var Iu=[``];function Lu(e){return{value:``,root:null,parent:null,type:o,props:e.slice(),children:[],line:1,column:1,length:0,return:``,siblings:[]}}function Ru(e,t={}){let n=t.rules??Iu,r=t.rules===void 0?null:Lu(n),i=s(e);return c(l(``,null,null,r??null,n,i,0,[0],i))}var zu=`rhtml-scope`;function Bu(e,t){return e.split(zu).join(t)}var Vu=/^(?::host\b|::slotted\()/;function Hu(e){return Vu.test(e.trim())}function Uu(e){return e.type===o}function Wu(e){return e.type===n}function Gu(e){return e.type.charCodeAt(0)===64}function Ku(e){return Array.isArray(e.children)?e.children:[]}function qu(e){return e.value.charCodeAt(e.value.length-1)===59?e.value.slice(0,-1):e.value}function Ju(e){let t=[];for(let n of Ku(e))Wu(n)&&t.push(qu(n));return t}function Yu(e){return Ku(e).filter(Uu)}function Xu(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 Zu=new Set([r,t,a,i]);function Qu(e,t,n){let i=[],a=new Set,o=!1,s=(e,t)=>{for(let n of e){if(Uu(n)){o=!0,$u(n,t,i);continue}if(Gu(n)){if(Ku(n).length===0){if(!Zu.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,Xu(n.type)){s(Ku(n),t);continue}Yu(n).length>0&&ed(n,a,i),s(Ku(n),!1)}}};s(e,n.scoped),!n.scoped&&e.some(Wu)&&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.`}),td(t,i);let c=rd(n.source);return c&&i.push(c),i}function $u(e,t,n){if(e.props.every(e=>e.length===0)){let t=Ju(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 nd(e.value)){let r=t.trim();if(Hu(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 ed(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 td(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 \`${zu}\`. The sentinel is only substituted in selectors, so it will reach the browser as written.`})}function nd(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 rd(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 id(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+=ad(i,t.scope)}for(let e=0;e<r.length;e++)n+=`}`;return n}function ad(e,t){return e.body===void 0?`${e.prelude??od(e.selectors,t)}{${e.declarations.join(`;`)};}`:`${e.prelude}{${e.body}}`}function od(e,t){return(t===void 0?e:e.map(e=>Bu(e,t))).join(`,`)}var sd=[],cd=e=>e.length>0;function ld(e,t){let n=[];return dd(e,sd,t.rules,n),(t.plugins??[]).reduce((e,t)=>e.flatMap(e=>t(e)),n).filter(ud)}function ud(e){let t=e.selectors.length>0||e.prelude!==void 0,n=e.declarations.length>0||!!e.body;return t&&n}function dd(e,t,n,r){let i=r.length,a=[];for(let i of e)Wu(i)?a.push(qu(i)):Uu(i)?fd(i,t,r):Gu(i)&&pd(i,t,n,r);if(a.length===0)return;let o=n.filter(cd);o.length!==0&&r.splice(i,0,{conditions:t,selectors:o,declarations:a})}function fd(e,t,n){let r=e.props.filter(cd);if(r.length===0)return;let i=Ju(e);i.length!==0&&n.push({conditions:t,selectors:r,declarations:i})}function pd(e,t,n,r){let i=Ku(e);if(i.length===0)return;if(Xu(e.type)){let a=[];if(dd(i,[...t,e.value],n,a),a.length===0)return;for(let e of a)r.push(e);return}let a=Yu(e);if(a.length>0){let n=[];for(let e of a)fd(e,sd,n);let i=id(n);i&&r.push({conditions:t,selectors:[],prelude:e.value,declarations:[],body:i});return}let o=Ju(e);o.length!==0&&r.push({conditions:t,selectors:[],prelude:e.value,declarations:o})}function md(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 hd=7;function gd(e){return`_${md(e).toString(36).padStart(hd,`0`)}`}var _d=[];function vd(e,t={}){let n=t.mode!==`global`,r=n?[zu]:[``],i=Ru(e,{rules:r}),a=ld(i,{rules:r,plugins:t.plugins}),o=id(a),s=gd(o);return{rules:a,canonicalText:o,identifier:s,cssText:id(a,{scope:`.${s}`}),diagnostics:t.dev?Qu(i,a,{source:e,scoped:n}):_d}}function yd(e){let t=/[;{}][^;{}]*$/.exec(e);return t?t[0].slice(1):e}function bd(e){let t=e.search(/[;}\n]/);return t===-1?e:e.slice(0,t)}function xd(e){let t=[];for(let n=0;n<e.length-1;n++){let r=yd(e[n]),i=bd(e[n+1]),a=!r.includes(`:`)&&!i.includes(`{`)?`statement`:`inline`;t.push({kind:a,provable:r.trim().length===0})}return t}function Sd(e){let t=e.trimEnd();return!t||t.endsWith(`;`)||t.endsWith(`}`)?e:`${e};`}function Cd(e,t){return Xa(e)?t===`statement`?Sd(e[Ua]??``):`.${String(e)}`:ji(e)&&!Oi(e)&&!Di(e)?String(e):``}function wd(e,t,n){if(Xa(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}(Td(n,`'`)||Td(n,`"`))&&console.warn(`[r-html] interpolated value has an unbalanced quote and is substituted before compiling: ${n}`)}function Td(e,t){let n=0;for(let r of e)r===t&&n++;return n%2==1}function Ed(e,t,n){let r=``;for(let i=0;i<e.length;i++){if(r+=e[i],i>=t.length)continue;let a=Cd(n[i],t[i].kind);wd(t[i],n[i],a),r+=a}return r}var Dd=32,Od=`\0`;function kd(e){return(t,...n)=>{let r=jd(t,e),i=Md(r.node,n),a=hu(i);return{strings:t,values:n,template:r,[Ji]:Va.css,[Ua]:i.source,toString:()=>a}}}var Ad=Object.assign(kd(`scoped`),{global:kd(`global`)});function jd(e,t){let n=Ga.get(e);if(n&&n.node.mode===t)return n;let r=e.raw,i={raw:r,slots:xd(r),mode:t,memo:new Map},a=Object.freeze({node:i});return Ga.set(e,a),a}function Md(e,t){let n=e.slots.map((e,n)=>Cd(t[n],e.kind)).join(Od),r=e.memo.get(n);if(r)return r;let i=Ed(e.raw,e.slots,t),{rules:a,canonicalText:o,identifier:s,cssText:c,diagnostics:l}=vd(i,{mode:e.mode,dev:Pu()}),u={source:i,mode:e.mode,rules:a,canonicalText:o,identifier:s,cssText:c};if(Fu(l,{source:i,identifier:s,mode:e.mode}),e.memo.set(n,u),e.memo.size>Dd){let[t]=e.memo.keys();e.memo.delete(t)}return u}re.autoDrawEnabled=!1,Reflect.set(re,`DD`,ne);const Nd=new Set,Pd=new Set,Fd=new Map,Id=[],Ld=[],Rd=new Set;let zd=!1,Bd=!1,Vd=0;function Hd(){return Vd}function Ud(){Vd+=1;try{Rd.forEach(e=>e())}finally{zd=!1,Bd=!1;for(let e of Nd){if(Fd.has(e)){Pd.add(e);continue}e.getStage()instanceof te&&e.batchDraw()}Nd.clear(),Id.splice(0).forEach(e=>e())}}function Wd(e){return Rd.add(e),()=>{Rd.delete(e)}}function Gd(){queueMicrotask(()=>{if(Bd){Bd=!1,Gd();return}Ud()})}function Kd(){Bd=!0,!zd&&(zd=!0,Gd())}function qd(e){if(Fd.has(e)){Pd.add(e);return}Nd.add(e),Kd()}function Jd(e){Fd.set(e,(Fd.get(e)??0)+1)}function Yd(e){let t=(Fd.get(e)??0)-1;t>0?Fd.set(e,t):Fd.delete(e),Ld.splice(0).forEach(e=>e()),t<=0&&Pd.delete(e)&&qd(e)}function Xd(){return new Promise(e=>{Ld.push(()=>e())})}function Zd(){return Fd.size?Xd().then(Zd):zd?new Promise(e=>{Id.push(()=>e())}):Promise.resolve()}const Qd=Symbol(`r-html/konva-slot`),$d=Symbol(`r-html/konva-ledger`),ef=Symbol(`r-html/konva-virtual`),tf=Symbol(`r-html/konva-fragment`),nf=new Set([`class`,`style`,`zIndex`]),rf={reconcile:0,scan:0,attach:0,drop:0,order:0,setZIndex:0},af={"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 of(){}function sf(){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 cf(e,t=``){let n={kind:e,data:t};return Reflect.set(n,ef,e),Object.defineProperty(n,"nextSibling",{get:sf}),Object.defineProperty(n,"parentNode",{get:sf}),n}const lf=e=>e&&typeof e==`object`?Reflect.get(e,ef)??null:null,uf=e=>e instanceof p,df=e=>uf(e)&&Reflect.get(e,tf)===!0,ff=e=>Reflect.get(e,Qd);function pf(e){let t=ff(e);if(t)return t;let n={node:e,parent:null,prev:null,next:null,doomed:!1};return Reflect.set(e,Qd,n),n}function mf(e){let t=Reflect.get(e,$d);if(t)return t;let n={first:null,last:null,dirty:!1,reconciledAt:-1};return Reflect.set(e,$d,n),n}const hf=e=>ff(e)?.parent??null,gf=e=>ff(e)?.next?.node??null,_f=new Set,vf=new WeakMap;function yf(e){let t=e;for(;t;){if(t instanceof f)return t;t=hf(t)}return null}function bf(e){let t=yf(e);t&&qd(t)}function xf(e){mf(e).dirty=!0,_f.add(e),bf(e),Kd()}function Sf(e){let t=e.parent;if(!t)return;let n=mf(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,xf(t)}function Cf(e,t,n){Sf(t);let r=mf(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,xf(e)}function wf(e,t){if(!(!uf(t)||df(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(uf(e)&&!(e instanceof u))throw Error(`[konva-host] ${e.getClassName()} is a shape and holds no children`)}}function Tf(e,t,n){if(t===n)return;let r=n?pf(n):null;if(!df(t)){wf(e,t),Cf(e,pf(t),r);return}let i=[];for(let e=mf(t).first;e;e=e.next)i.push(e);for(let t of i)wf(e,t.node),Cf(e,t,r)}function Ef(e){_f.delete(e),Reflect.deleteProperty(e,Qd),Reflect.deleteProperty(e,$d),e.destroy()}function Df(e,t){let n=t.getParent();n!==e&&(n&&_f.has(n)&&Mf(n),rf.attach+=1,e.add(t))}function Of(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 kf(e,t){t.forEach((t,n)=>{e.children[n]!==t&&(rf.setZIndex+=1,t.setZIndex(n))})}function Af(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 jf(e){if(rf.reconcile+=1,!(e instanceof u))return;let t=[];for(let n=mf(e).first;n;n=n.next)rf.scan+=1,uf(n.node)&&t.push(n.node);for(let n of t)Df(e,n);let n=new Set(t),r=e.children.filter(e=>!n.has(e));if(!(!r.length&&Of(e.children,t))){rf.order+=1,e instanceof te?(r.forEach(e=>e.remove()),kf(e,t)):(r.forEach(e=>{e.parent=null,e.index=0,e.remove()}),Af(e,t));for(let e of r)rf.drop+=1,pf(e).doomed&&Ef(e)}}function Mf(e){let t=mf(e);!t.dirty&&t.reconciledAt===Hd()||(t.dirty=!1,t.reconciledAt=Hd(),jf(e))}Wd(()=>{for(let e of _f)Mf(e);_f.clear()});function Nf(e){let t=e,n=hf(t);for(;n;)t=n,n=hf(t);return vf.get(t)??t}function Pf(e,t){if(!t)return;let n=Nf(e);if(uf(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 Ff=nu({createElement(e){let t=af[e.toLowerCase()];if(!t)throw Error(`[konva-host] unknown konva tag <${e}>`);return t()},createText:e=>cf(`text`,e),createMarker:e=>cf(`marker`,e),createFragment(){let e=new d;return Reflect.set(e,tf,!0),Reflect.set(e,`_validateAdd`,of),e},createEventBus:()=>new EventTarget,insertBefore(e,t){let n=hf(t);n&&Tf(n,e,t)},appendChild(e,t){Tf(e,t,null)},prependChild(e,t){Tf(e,t,mf(e).first?.node??null)},removeChild(e){let t=pf(e);Sf(t),uf(e)&&(t.doomed=!0,e.getParent()||Ef(e))},parentOf:hf,nextSiblingOf:gf,setText(e,t){if(lf(e)!==`text`)throw Error(`[konva-host] a konva tree has no text node to write`);e.data=t},setAttribute(e,t,n,r){if(!uf(e))return;if(nf.has(t))throw Error(`[konva-host] "${t}" is not a konva attribute a template may write`);let i=r?n:String(n);t===`id`&&Pf(e,i),e.attrs[t]!==i&&(e.setAttrs({[t]:i}),bf(e))},removeAttribute(e,t){!uf(e)||e.attrs[t]===void 0||(e.setAttrs({[t]:void 0}),bf(e))},isHostNode:e=>uf(e)||lf(e)!==null,isMarker:e=>lf(e)===`marker`,isText:e=>lf(e)===`text`,isElement:e=>uf(e)&&!df(e),isFragment:e=>df(e),addEventListener(e,t,n,r){uf(e)?e.on(`${t}.rhtml`,n):e.addEventListener(t,n,r)},removeEventListener(e,t,n,r){uf(e)?e.off(`${t}.rhtml`,n):e.removeEventListener(t,n,r)},getRoot:Nf,createComponentContext(e,t){return{get host(){let n=Nf(e);return n instanceof te?n.container():t},get parentElement(){return null},dispatchEvent:e=>t.dispatchEvent(e)}},bridgeFragment(e,t){return vf.set(e,t),()=>{vf.delete(e)}}}),O=Ff.html;function If(e,t){if(!(e instanceof te))throw Error(`[konva-host] a konva template renders into a Stage`);Ff.render(e,t)}var Lf=(e,t)=>e*(1-t)/2;function Rf(e){return{originX:Ue(e.scrollLeft+Lf(e.width,e.zoomLevel),4),originY:Ue(e.scrollTop+Lf(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 zf(e){return t=>b(t)&&e.includes(t)}function Bf(e){return t=>y(t)&&e.includes(t)}function Vf(e,t,n){return Reflect.get(e,t)??n}function Hf(){let e=Date.now();return{updateAt:e,createAt:e}}function Uf(e,t){let n=k(y,e,t);n(`updateAt`),n(`createAt`)}var Wf=()=>({tableIds:[],relationshipIds:[],indexIds:[],memoIds:[]});function Gf(e){let t=Wf();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 Kf=()=>({id:``,name:``,tableId:``,indexColumnIds:[],seqIndexColumnIds:[],unique:!1,meta:Hf()});function qf(e){let t={};if(!pe(e)||v(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=Kf(),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`),Uf(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var Jf={ASC:1,DESC:2},Yf=Object.values(Jf),Xf=()=>({id:``,indexId:``,columnId:``,orderType:Jf.ASC,meta:Hf()});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);r(`id`),r(`indexId`),r(`columnId`),k(Bf(Yf),e,n)(`orderType`),Uf(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var Qf=()=>({id:``,value:``,ui:{x:200,y:100,zIndex:2,width:116,height:100,color:``},meta:Hf()});function $f(e){let t={};if(!pe(e)||v(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=Qf(),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`),Uf(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var ep={ZeroOne:2,ZeroN:4,OneOnly:8,OneN:16},tp=Object.values(ep),np={ring:1,dash:2},rp=Object.values(np),ip={left:1,right:2,top:4,bottom:8},ap=Object.values(ip),op=()=>({id:``,identification:!1,relationshipType:ep.ZeroN,startRelationshipType:np.dash,start:{tableId:``,columnIds:[],x:0,y:0,direction:ip.bottom},end:{tableId:``,columnIds:[],x:0,y:0,direction:ip.bottom},meta:Hf()});function sp(e){let t={};if(!pe(e)||v(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=op(),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(Bf(tp),e,n)(`relationshipType`),k(Bf(rp),e,n)(`startRelationshipType`),o(`tableId`),a(`x`),a(`y`),k(Bf(ap),e.start,n.start)(`direction`),k(Array.isArray,e.start,n.start)(`columnIds`),c(`tableId`),s(`x`),s(`y`),k(Bf(ap),e.end,n.end)(`direction`),k(Array.isArray,e.end,n.end)(`columnIds`),Uf(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var cp={ERD:`ERD`,visualization:`@dineug/erd-editor/builtin-visualization`,schemaSQL:`@dineug/erd-editor/builtin-schema-sql`,generatorCode:`@dineug/erd-editor/builtin-generator-code`,settings:`settings`},lp=Object.values(cp),up={tableComment:1,columnComment:2,columnDataType:4,columnDefault:8,columnAutoIncrement:16,columnPrimaryKey:32,columnUnique:64,columnNotNull:128,relationship:256},dp={columnName:1,columnDataType:2,columnNotNull:4,columnUnique:8,columnAutoIncrement:16,columnDefault:32,columnComment:64},fp=Object.values(dp),pp={MariaDB:1,MSSQL:2,MySQL:4,Oracle:8,PostgreSQL:16,SQLite:32,Databricks:64,Snowflake:128},mp=Object.values(pp),hp={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},gp=Object.values(hp),_p={none:1,camelCase:2,pascalCase:4,snakeCase:8},vp=Object.values(_p),yp={none:1,doubleQuote:2,singleQuote:4,backtick:8},bp=Object.values(yp),xp={scroll:1,zoomLevel:2},Sp=.1,Cp=1.5,wp=2e3,Tp=2e4,Ep=up.tableComment|up.columnComment|up.columnDataType|up.columnDefault|up.columnPrimaryKey|up.columnNotNull|up.relationship,Dp=()=>({width:2e3,height:2e3,scrollTop:0,scrollLeft:0,originX:0,originY:0,zoomLevel:1,show:Ep,database:pp.MySQL,databaseName:``,canvasType:cp.ERD,language:hp.GraphQL,tableNameCase:_p.pascalCase,columnNameCase:_p.camelCase,bracketType:yp.none,relationshipDataTypeSync:!0,relationshipOptimization:!1,columnOrder:[dp.columnName,dp.columnDataType,dp.columnNotNull,dp.columnUnique,dp.columnAutoIncrement,dp.columnDefault,dp.columnComment],maxWidthComment:-1,ignoreSaveSettings:0}),Op=e=>ae(e,wp,Tp),kp=e=>ae(e,Sp,Cp),Ap=e=>ae(e,60,200);function jp(e){let t=Dp();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=Op(e.width)),y(e.height)&&(t.height=Op(e.height)),y(e.zoomLevel)&&(t.zoomLevel=kp(e.zoomLevel)),y(e.maxWidthComment)&&e.maxWidthComment!==-1&&(t.maxWidthComment=Ap(e.maxWidthComment)),n(`scrollTop`),n(`scrollLeft`),n(`show`),n(`ignoreSaveSettings`),r(`databaseName`),r(`canvasType`),i(`relationshipDataTypeSync`),i(`relationshipOptimization`),k(Bf(mp),t,e)(`database`),k(Bf(gp),t,e)(`language`),k(Bf(vp),t,e)(`tableNameCase`),k(Bf(vp),t,e)(`columnNameCase`),k(Bf(bp),t,e)(`bracketType`),Array.isArray(e.columnOrder)&&fp.length===e.columnOrder.length&&se(fp,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}=Rf(t);t.originX=e,t.originY=n}return t}var Mp=()=>({id:``,name:``,comment:``,columnIds:[],seqColumnIds:[],ui:{x:200,y:100,zIndex:2,widthName:60,widthComment:60,color:``},meta:Hf()});function Np(e){let t={};if(!pe(e)||v(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=Mp(),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`),Uf(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}var Pp=()=>({id:``,tableId:``,name:``,comment:``,dataType:``,default:``,options:0,ui:{keys:0,widthName:60,widthComment:60,widthDataType:60,widthDefault:60},meta:Hf()});function Fp(e){let t={};if(!pe(e)||v(e))return t;for(let n of Object.values(e)){if(!n)continue;let e=Pp(),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`),Uf(e.meta,n.meta),e.id&&(t[e.id]=e)}return t}function Ip(e){let t=e;return{$schema:`https://raw.githubusercontent.com/dineug/erd-editor/main/json-schema/schema.json`,version:`3.0.0`,settings:jp(t.settings),doc:Gf(t.doc),collections:{tableEntities:Np(t.collections?.tableEntities),tableColumnEntities:Fp(t.collections?.tableColumnEntities),relationshipEntities:sp(t.collections?.relationshipEntities),indexEntities:qf(t.collections?.indexEntities),indexColumnEntities:Zf(t.collections?.indexColumnEntities),memoEntities:$f(t.collections?.memoEntities)}}}var A={CanvasType:cp,CanvasTypeList:lp,Show:up,ColumnType:dp,ColumnTypeList:fp,Database:pp,DatabaseList:mp,Language:hp,LanguageList:gp,NameCase:_p,NameCaseList:vp,BracketType:yp,BracketTypeList:bp,RelationshipType:ep,RelationshipTypeList:tp,StartRelationshipType:np,StartRelationshipTypeList:rp,Direction:ip,DirectionList:ap,ColumnOption:{autoIncrement:1,primaryKey:2,unique:4,notNull:8},ColumnUIKey:{primaryKey:1,foreignKey:2},OrderType:Jf,OrderTypeList:Yf,SaveSettingType:xp,CANVAS_SIZE_MAX:Tp,CANVAS_SIZE_MIN:wp,CANVAS_ZOOM_MAX:Cp,CANVAS_ZOOM_MIN:Sp};function Lp(e){return[e,-1,-1,{}]}function Rp(e,t,n){return e[t]||(e[t]=Lp(n),e[t])}function zp(e,t,n,r,i){let a=Rp(e,n,r),o=a[1],s=a[2];o<t&&(a[1]=t),s<t&&i()}function Bp(e,t,n,r,i){let a=Rp(e,n,r),o=a[2],s=a[1];o<t&&(a[2]=t),s<=t&&i()}function Vp(e,t,n,r,i,a){let o=Rp(e,n,r);(o[3][i]??-1)<=t&&(o[3][i]=t,a())}function Hp(e){"@babel/helpers - typeof";return Hp=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},Hp(e)}function Up(e,t){if(Hp(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(Hp(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Wp(e){var t=Up(e,`string`);return Hp(t)==`symbol`?t:t+``}function Gp(e,t,n){return(t=Wp(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Kp=class{constructor(e){Gp(this,`collections`,void 0),this.collections=e}collection(e){return new qp(this.collections[e],e)}},qp=class{constructor(e,t){Gp(this,`collection`,void 0),Gp(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 zp(e,t,n,this.collectionKey,r),this}removeOperator(e,t,n,r){return Bp(e,t,n,this.collectionKey,r),this}replaceOperator(e,t,n,r,i){return Vp(e,t,n,this.collectionKey,r,i),this}},j=e=>new Kp(e),Jp=Object.values({columnUnique:`columnUnique`,columnAutoIncrement:`columnAutoIncrement`,columnName:`columnName`,columnDataType:`columnDataType`,columnNotNull:`columnNotNull`,columnDefault:`columnDefault`,columnComment:`columnComment`}),Yp=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`}),Xp=Object.values({MariaDB:`MariaDB`,MSSQL:`MSSQL`,MySQL:`MySQL`,Oracle:`Oracle`,PostgreSQL:`PostgreSQL`,SQLite:`SQLite`}),Zp=Object.values({GraphQL:`GraphQL`,"C#":`C#`,Java:`Java`,Kotlin:`Kotlin`,TypeScript:`TypeScript`,JPA:`JPA`,Scala:`Scala`}),Qp=Object.values({none:`none`,camelCase:`camelCase`,pascalCase:`pascalCase`,snakeCase:`snakeCase`}),$p=Object.values({AtomOneDark:`AtomOneDark`,AtomOneLight:`AtomOneLight`,MonokaiSublime:`MonokaiSublime`,GithubGist:`GithubGist`,VS2015:`VS2015`}),em=Object.values({none:`none`,doubleQuote:`doubleQuote`,singleQuote:`singleQuote`,backtick:`backtick`}),tm=.1,nm=2e3,rm=2e4,im=()=>({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:{}}),am=e=>ae(e,nm,rm),om=e=>ae(e,tm,1);function sm(e){let t=im();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=am(e.width)),y(e.height)&&(t.height=am(e.height)),y(e.zoomLevel)&&(t.zoomLevel=om(e.zoomLevel)),r(`version`),r(`databaseName`),n(`scrollTop`),n(`scrollLeft`),k(zf(Xp),t,e)(`database`),k(zf(Yp),t,e)(`canvasType`),k(zf(Zp),t,e)(`language`),k(zf(Qp),t,e)(`tableCase`),k(zf(Qp),t,e)(`columnCase`),k(zf($p),t,e)(`highlightTheme`),k(zf(em),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&&Jp.length===e.setting.columnOrder.length&&se(Jp,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 cm=()=>({memos:[]}),lm=()=>({id:``,value:``,ui:{active:!1,left:200,top:200,zIndex:2,width:127,height:127}});function um(e){let t=cm();if(v(e)||!Array.isArray(e.memos))return t;for(let n of e.memos){let e=lm(),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 dm=[`ZeroOneN`,`One`,`N`],fm={ZeroOneN:`ZeroN`,One:`OneOnly`,N:`OneN`},pm=e=>dm.includes(e)?fm[e]:e,mm=Object.values({ZeroOneN:`ZeroOneN`,ZeroOne:`ZeroOne`,ZeroN:`ZeroN`,OneOnly:`OneOnly`,OneN:`OneN`,One:`One`,N:`N`}),hm=Object.values({Ring:`Ring`,Dash:`Dash`}),gm=Object.values({left:`left`,right:`right`,top:`top`,bottom:`bottom`}),_m=()=>({relationships:[]}),vm=()=>({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 ym(e){let t=_m();if(v(e)||!Array.isArray(e.relationships))return t;for(let n of e.relationships){let e=vm(),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(zf(mm),e,n)(`relationshipType`),e.relationshipType=pm(e.relationshipType),k(zf(hm),e,n)(`startRelationshipType`),o(`tableId`),a(`x`),a(`y`),k(zf(gm),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(zf(gm),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 bm={ASC:`ASC`,DESC:`DESC`},xm=Object.values(bm),Sm=()=>({tables:[],indexes:[]}),Cm=()=>({id:``,name:``,comment:``,columns:[],ui:{active:!1,left:200,top:100,zIndex:2,widthName:60,widthComment:60},visible:!0}),wm=()=>({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}}),Tm=()=>({id:``,name:``,tableId:``,columns:[],unique:!1}),Em=()=>({id:``,orderType:bm.ASC});function Dm(e){let t=Sm();if(v(e))return t;if(Array.isArray(e.tables))for(let n of e.tables){let e=Cm(),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=wm(),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=Tm(),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=Em();k(b,n,t)(`id`),k(zf(xm),n,t)(`orderType`),e.columns.push(n)}t.indexes.push(e)}return t}function Om(e){let t=e;return{canvas:sm(t.canvas),table:Dm(t.table),relationship:ym(t.relationship),memo:um(t.memo)}}function km(e){let t=Ip({});return Am(t.settings,e.canvas),jm(t,e.table),Mm(t,e.memo),Nm(t,e.relationship),t}function Am(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}=Rf(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)=>Vf(t.show,n,!1)?e|Vf(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:Vf(A.Language,t.language,A.Language.GraphQL),e.tableNameCase=Vf(A.NameCase,t.tableCase,A.NameCase.pascalCase),e.columnNameCase=Vf(A.NameCase,t.columnCase,A.NameCase.camelCase),e.bracketType=Vf(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 jm(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=Mp();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=Pp();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)=>Vf(n.option,t,!1)?e|Vf(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=Kf();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=Xf();n.indexColumnIds.push(i),n.seqIndexColumnIds.push(i),a.id=i,a.indexId=t.id,a.columnId=r.id,a.orderType=Vf(A.OrderType,r.orderType,A.OrderType.ASC),e.collections.indexColumnEntities[a.id]=a}e.collections.indexEntities[n.id]=n}}function Mm(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=Qf();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 Nm(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=op();n.id=t.id,n.identification=t.identification,n.relationshipType=Vf(A.RelationshipType,t.relationshipType,A.RelationshipType.ZeroN),n.startRelationshipType=Vf(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=Vf(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=Vf(A.Direction,t.end.direction,A.Direction.bottom),e.collections.relationshipEntities[n.id]=n}}function Pm(e,t){return(e&t)===t}function Fm(e){let t=JSON.parse(e);return Reflect.get(t,`version`)===`3.0.0`?Ip(t):km(Om(t))}function Im(e){let t=ve(e,[`$schema`,`version`,`settings`,`doc`,`collections`]),n={...t.settings};return t.settings=n,Pm(n.ignoreSaveSettings,A.SaveSettingType.scroll)&&(n.originX=0,n.originY=0),Pm(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`},Lm=A.CanvasType,Rm=A.CanvasTypeList,N=A.Show,P=A.ColumnType,zm=A.ColumnTypeList,F=A.Database,Bm=A.DatabaseList;A.Language;const Vm=A.LanguageList;A.NameCase;const Hm=A.NameCaseList,Um=A.BracketType,Wm=A.BracketTypeList,Gm=A.RelationshipType;A.RelationshipTypeList;const Km=A.StartRelationshipType;A.StartRelationshipTypeList;const I=A.Direction;A.DirectionList;const L=A.ColumnOption,R=A.ColumnUIKey,qm=A.OrderType;A.OrderTypeList,A.SaveSettingType;const Jm=A.CANVAS_SIZE_MAX,Ym=A.CANVAS_SIZE_MIN,Xm=A.CANVAS_ZOOM_MAX,Zm=A.CANVAS_ZOOM_MIN;Um.none,Um.backtick,Um.doubleQuote,Um.singleQuote,P.columnName,P.columnDataType,P.columnDefault,P.columnComment,P.columnAutoIncrement,P.columnUnique,P.columnNotNull;const Qm={shared:1,changeOnly:2,following:4};function $m(e,t){return{...oe(t),tags:y(t.tags)&&Number.isInteger(t.tags)?t.tags|e:e}}function eh(e,t){return t.map(t=>$m(e,t))}(e=>(...t)=>function*(n,r){yield eh(e,wu(n,r,t))})(Qm.changeOnly);const th=1200;function nh(e){return 9+e.ui.width+8+1}function rh(e){return 25+e.ui.height+8+1}function z(e,t){return(e&t)===t}const ih={Databricks:`Databricks`,MariaDB:`MariaDB`,MSSQL:`MSSQL`,MySQL:`MySQL`,Oracle:`Oracle`,PostgreSQL:`PostgreSQL`,Snowflake:`Snowflake`,SQLite:`SQLite`},ah=Object.values(ih);ih.Databricks,F.Databricks,ih.MariaDB,F.MariaDB,ih.MSSQL,F.MSSQL,ih.MySQL,F.MySQL,ih.Oracle,F.Oracle,ih.PostgreSQL,F.PostgreSQL,ih.Snowflake,F.Snowflake,ih.SQLite,F.SQLite;function B(e){let t=new Set(e);return e=>t.has(e)}const oh=/[^0-9]/g,sh=e=>e.replace(oh,``),ch=e=>ae(e,Ym,Jm),lh=e=>ae(e,Zm,Xm),uh=e=>ae(e,60,200);function dh(e){let t=b(e)?Number(sh(e)):e;return ch(t)}function fh(e){return Ue(lh(e),2)}const ph=B(Bm),mh=B(Hm),hh=B(Wm),gh=B(Vm),_h=B(zm);B(ah);const vh=B(Rm);function V(e){return Math.max(e,60)}function yh(e){return b(e)?e.trim():``}function bh(e){return e<=.7}let xh=0;function Sh(){return xh}function Ch(){xh++}function wh(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=Eh(t);i<a&&(i=a);let o=Dh(j(r).collection(`tableColumnEntities`).selectByIds(e.columnIds),t,n);return i<o.width&&(i=o.width),{...o,width:9+i+8+1}}const Th=[{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 Eh(e){return Th.reduce((t,{key:n,width:r})=>z(e,n)?t+r+8:t,100)}function Dh(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 Oh(e){return 47+e.columnIds.length*24+8+1}function kh({doc:{tableIds:e},collections:t},{toWidth:n}){Ch();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 Ah=new WeakMap;function jh(e,t){let{settings:n}=e,r=`${Sh()}|${n.show}|${n.maxWidthComment}|${t.ui.widthName}|${t.ui.widthComment}|${t.columnIds.length}`,i=Ah.get(t);if(i?.key===r)return i;let a={key:r,width:wh(t,e).width,height:Oh(t)};return Ah.set(t,a),a}function Mh(e,t){let{width:n,height:r}=jh(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 Nh(e,t){return Math.sqrt((e.x-t.x)**2+(e.y-t.y)**2)}function Ph(e,t){let{width:n,height:r}=Mh(e,t),{x:i,y:a}=t.ui;return{x:i,y:a,width:n,height:r}}function Fh(e,t){return wh(t,e)}function Ih(e,t,n){let{x:r,y:i,width:a}=Ph(e,t);return{x:r+9,y:i+9+38+n*24,width:a-18,height:24}}function Lh(e){let{x:t,y:n}=e.ui;return{x:t,y:n,width:nh(e),height:rh(e)}}function Rh(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 zh(e){return Vh(e,[])}function Bh(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?Ph(e,{...t,ui:{...t.ui,x:n.x,y:n.y}}):Ph(e,t)}),...o.map(Lh)]}function Vh(e,t){let n=Bh(e,t);return n.length?n.reduce(Rh):null}const Hh=ba({frozen:{}}),Uh=e=>e.editor.id,Wh=e=>Hh.frozen[Uh(e)]??null;function Gh(e){let{originX:t,originY:n}=e.settings;Hh.frozen[Uh(e)]={content:zh(e),origin:{x:t,y:n}}}function Kh(e){Reflect.deleteProperty(Hh.frozen,Uh(e))}function qh(e){let t=Wh(e);return t?t.content:zh(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`},Jh=e=>e+0;function Yh(e,t,n,r){let i=-t*r,a=n-e*r;return{min:Jh(Math.min(i,a)),max:Jh(Math.max(i,a))}}function Xh(e,t,n,r,i){let{min:a,max:o}=Yh(t,n,r,i);if(a<e&&e<o)return e;let s=Math.min(r,(n-t)*i);return Jh(Math.min(Math.max(e,a+s),o-s))}const Zh=D(H.changeDatabaseName),Qh=({settings:e,lww:t},{payload:{value:n},version:r},{clock:i})=>{Vp(t,r??i.getVersion(),`settings.databaseName`,`settings`,`databaseName`,()=>{e.databaseName=n})},$h=D(H.changeZoomLevel),eg=({settings:e},{payload:{value:t},tags:n})=>{!v(n)&&z(n,Qm.following)||(e.zoomLevel=fh(t))},tg=D(H.streamZoomLevel),ng=({settings:e},{payload:{value:t},tags:n})=>{!v(n)&&z(n,Qm.following)||(e.zoomLevel=fh(e.zoomLevel+t))},rg=({width:e,height:t})=>e>0&&t>0;function ig(e){let{settings:{originX:t,originY:n,zoomLevel:r},editor:{viewport:i}}=e,a=qh(e);return!a||!rg(i)?{x:t,y:n}:{x:Xh(t,a.x,a.x+a.width,i.width,r),y:Xh(n,a.y,a.y+a.height,i.height,r)}}const ag=D(H.scrollTo),og=({settings:e},{payload:{originX:t,originY:n},tags:r})=>{!v(r)&&z(r,Qm.following)||(e.originX=Ue(t,4),e.originY=Ue(n,4))},sg=D(H.streamScrollTo),cg=({settings:e},{payload:{movementX:t,movementY:n},tags:r})=>{!v(r)&&z(r,Qm.following)||(e.originX=Ue(e.originX+t,4),e.originY=Ue(e.originY+n,4))},lg=D(H.changeShow),ug=({settings:e},{payload:{show:t,value:n}})=>{e.show=n?e.show|t:e.show&~t},dg=D(H.changeDatabase),fg=({settings:e},{payload:{value:t}})=>{ph(t)&&(e.database=t)},pg=D(H.changeCanvasType),mg=({settings:e},{payload:{value:t},tags:n})=>{!v(n)&&z(n,Qm.following)||(e.canvasType=t)},hg=D(H.changeLanguage),gg=({settings:e},{payload:{value:t}})=>{gh(t)&&(e.language=t)},_g=D(H.changeTableNameCase),vg=({settings:e},{payload:{value:t}})=>{mh(t)&&(e.tableNameCase=t)},yg=D(H.changeColumnNameCase),bg=({settings:e},{payload:{value:t}})=>{mh(t)&&(e.columnNameCase=t)},xg=D(H.changeBracketType),Sg=({settings:e},{payload:{value:t}})=>{hh(t)&&(e.bracketType=t)},Cg=D(H.changeRelationshipDataTypeSync),wg=({settings:e},{payload:{value:t}})=>{e.relationshipDataTypeSync=t},Tg=D(H.changeRelationshipOptimization),Eg=({settings:e},{payload:{value:t}})=>{e.relationshipOptimization=t},Dg=D(H.changeColumnOrder),Og=({settings:e},{payload:{value:t,target:n}})=>{if(t===n||!_h(t)||!_h(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))},kg=D(H.changeMaxWidthComment),Ag=({settings:e},{payload:{value:t}})=>{e.maxWidthComment=t===-1?t:uh(t)},jg=D(H.changeIgnoreSaveSettings),Mg=({settings:e},{payload:{saveSettingType:t,value:n}})=>{e.ignoreSaveSettings=n?e.ignoreSaveSettings|t:e.ignoreSaveSettings&~t},Ng={[H.changeDatabaseName]:Qh,[H.changeZoomLevel]:eg,[H.streamZoomLevel]:ng,[H.scrollTo]:og,[H.streamScrollTo]:cg,[H.changeShow]:ug,[H.changeDatabase]:fg,[H.changeCanvasType]:mg,[H.changeLanguage]:gg,[H.changeTableNameCase]:vg,[H.changeColumnNameCase]:bg,[H.changeBracketType]:Sg,[H.changeRelationshipDataTypeSync]:wg,[H.changeRelationshipOptimization]:Eg,[H.changeColumnOrder]:Og,[H.changeMaxWidthComment]:Ag,[H.changeIgnoreSaveSettings]:Mg},Pg={changeDatabaseNameAction:Zh,changeZoomLevelAction:$h,streamZoomLevelAction:tg,scrollToAction:ag,streamScrollToAction:sg,changeShowAction:lg,changeDatabaseAction:dg,changeCanvasTypeAction:pg,changeLanguageAction:hg,changeTableNameCaseAction:_g,changeColumnNameCaseAction:yg,changeBracketTypeAction:xg,changeRelationshipDataTypeSyncAction:Cg,changeRelationshipOptimizationAction:Tg,changeColumnOrderAction:Dg,changeMaxWidthCommentAction:kg,changeIgnoreSaveSettingsAction:jg},U={left:`left`,right:`right`,top:`top`,bottom:`bottom`},Fg=Object.values(U);B([U.top,U.bottom,U.left,U.right]);const Ig=[0,0],Lg=new WeakMap;function Rg(e,t){Lg.set(e,t)}function zg(e){return Lg.get(e)??Ig}const Bg=new WeakMap;function Vg(e,t){Bg.set(e,{points:t,epoch:Ug})}function Hg(e){return Bg.get(e)?.points}let Ug=0;function Wg(){Ug+=1}function Gg(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 Kg({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 qg(e,t=2){let{start:n,end:r}=e,i=Bg.get(e),a=i&&i.epoch===Ug?i.points:null;return Kg(Gg(a?[...a,n,r]:[n,r]),25+t+(a?0:86))}function Jg({originX:e,originY:t}){return{x:e,y:t}}const Yg=e=>e>0?e:1;function Xg(e,t){let n=Jg(e);return{x:n.x+t.x*e.zoomLevel,y:n.y+t.y*e.zoomLevel}}function Zg(e,t){let n=Yg(e.zoomLevel),r=Jg({...e,zoomLevel:n});return{x:(t.x-r.x)/n,y:(t.y-r.y)/n}}function Qg(e){let{viewportWidth:t,viewportHeight:n}=e,r=Yg(e.zoomLevel),i=Jg({...e,zoomLevel:r}),a=(t>0?t:th)/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 $g(e){let{settings:{originX:t,originY:n,zoomLevel:r},editor:{viewport:i}}=e;return Qg({originX:t,originY:n,zoomLevel:r,viewportWidth:i.width,viewportHeight:i.height})}function e_(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 t_(e,t,n){return e_(e,Ph(t,n))}function n_(e,t,n){return e_(e,qg(t,n))}const r_={table:`table`,memo:`memo`},W={tableName:`tableName`,tableComment:`tableComment`,columnName:`columnName`,columnDataType:`columnDataType`,columnNotNull:`columnNotNull`,columnUnique:`columnUnique`,columnAutoIncrement:`columnAutoIncrement`,columnDefault:`columnDefault`,columnComment:`columnComment`},i_={ArrowUp:`ArrowUp`,ArrowRight:`ArrowRight`,ArrowDown:`ArrowDown`,ArrowLeft:`ArrowLeft`,Tab:`Tab`};B(Object.values(i_));const a_=()=>({id:x(),selectedMap:{},hasUndo:!1,hasRedo:!1,viewport:{width:th,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}),o_=e=>e.ui.zIndex,s_=(e,t)=>Math.max(1,...e.map(o_),...t.map(o_))+1,c_=e=>t=>e.y===t.y&&e.x===t.x;function l_(e,t,n){let r=Zg(e,{x:200,y:100}),i=[...t,...n].map(({ui:e})=>e);for(;i.some(c_(r));)r.x+=50,r.y+=50;return r}function u_(){let e=Date.now();return{updateAt:e,createAt:e}}function d_(e,t){return e<t?ye(e,t+1):ye(t,e+1)}function f_(e){return Se(ie(e??``))}function p_(e,t){return xe([...e,t])}function m_(e,t,n){if(!t||t===n)return[n];let r=e.indexOf(t),i=e.indexOf(n);return r===-1?[n]:d_(r,i).map(t=>e[t])}function h_(e,t,n,r){return xe([...t,...m_(e,n,r)])}const g_={[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},__={[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},v_=[W.tableName,W.tableComment];function y_({settings:{show:e,columnOrder:t}}){return t.filter(t=>{let n=g_[t];return n===!0||z(e,n)}).map(e=>__[e])}function b_({collections:e,editor:{focusTable:t}}){return t?!!j(e).collection(`tableEntities`).selectById(t.tableId)?.columnIds.length:!1}function x_(e){let{editor:{focusTable:t}}=e;if(!t)return!0;let n=y_(e);return n.indexOf(t.focusType)===n.length-1}function S_(e){let{editor:{focusTable:t}}=e;return!t||y_(e).indexOf(t.focusType)===0}function C_({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 w_({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 T_(e){let t=y_(e);return t[t.length-1]}function E_(e){return y_(e)[0]}function D_(e){let{editor:{focusTable:t}}=e;if(!t)return W.columnName;let n=y_(e),r=n.indexOf(t.focusType);return x_(e)?n[0]:n[r+1]}function O_(e){let{editor:{focusTable:t}}=e;if(!t)return W.columnName;let n=y_(e),r=n.indexOf(t.focusType);return S_(e)?n[n.length-1]:n[r-1]}function k_(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 A_({settings:{show:e}}){return z(e,N.tableComment)?v_:[W.tableName]}function j_(e){let{editor:{focusTable:t}}=e;if(!t)return!0;let n=A_(e);return n.indexOf(t.focusType)===n.length-1}function M_(e){let{editor:{focusTable:t}}=e;return!t||A_(e).indexOf(t.focusType)===0}const N_=B(v_);function P_(e){let{editor:{focusTable:t}}=e;if(!t)return W.tableName;let n=A_(e),r=n.indexOf(t.focusType);return j_(e)?n[0]:n[r+1]}function F_(e){let{editor:{focusTable:t}}=e;if(!t)return W.tableName;let n=A_(e),r=n.indexOf(t.focusType);return M_(e)?n[n.length-1]:n[r-1]}function I_(e,t){let{collections:n,editor:{focusTable:r}}=e;if(!r)return;let i=j(n).collection(`tableEntities`).selectById(r.tableId);if(i){if(N_(r.focusType)){if(b_(e)){let t=i.columnIds[i.columnIds.length-1];r.focusType=T_(e),r.columnId=t,r.prevSelectColumnId=t,r.selectColumnIds=[t]}}else if(w_(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!==i_.Tab?p_(r.selectColumnIds,n):[n]}}}function L_(e,t){let{collections:n,editor:{focusTable:r}}=e;if(!r)return;let i=j(n).collection(`tableEntities`).selectById(r.tableId);if(i){if(N_(r.focusType)){if(b_(e)){let t=i.columnIds[0];r.focusType=E_(e),r.columnId=t,r.prevSelectColumnId=t,r.selectColumnIds=[t]}}else if(C_(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!==i_.Tab?p_(r.selectColumnIds,n):[n]}}}function R_(e,t){let{collections:n,editor:{focusTable:r}}=e;if(!r)return;let i=j(n).collection(`tableEntities`).selectById(r.tableId);if(i){if(N_(r.focusType)){if(M_(e)){if(b_(e)){let t=i.columnIds[i.columnIds.length-1];r.focusType=T_(e),r.columnId=t,r.prevSelectColumnId=t,r.selectColumnIds=[t]}else r.focusType=F_(e)}else r.focusType=F_(e)}else if(S_(e)){if(w_(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=T_(e),r.columnId=a,r.prevSelectColumnId=a,r.selectColumnIds=t.shiftKey&&t.moveKey!==i_.Tab?p_(r.selectColumnIds,a):[a]}}else r.focusType=O_(e),!t.shiftKey&&r.columnId&&(r.prevSelectColumnId=r.columnId,r.selectColumnIds=[r.columnId])}}function z_(e,t){let{collections:n,editor:{focusTable:r}}=e;if(!r)return;let i=j(n).collection(`tableEntities`).selectById(r.tableId);if(i){if(N_(r.focusType)){if(j_(e)){if(b_(e)){let t=i.columnIds[0];r.focusType=E_(e),r.columnId=t,r.prevSelectColumnId=t,r.selectColumnIds=[t]}else r.focusType=P_(e)}else r.focusType=P_(e)}else if(x_(e)){if(C_(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=E_(e),r.columnId=a,r.prevSelectColumnId=a,r.selectColumnIds=t.shiftKey&&t.moveKey!==i_.Tab?p_(r.selectColumnIds,a):[a]}}else r.focusType=D_(e),!t.shiftKey&&r.columnId&&(r.prevSelectColumnId=r.columnId,r.selectColumnIds=[r.columnId])}}const B_=3e4,V_=9e4,H_=3e3,U_=D(M.changeHasHistory),W_=({editor:e},{payload:{hasRedo:t,hasUndo:n}})=>{e.hasRedo=t,e.hasUndo=n},G_=D(M.selectAll),K_=({editor:e,doc:t})=>{let n=t.tableIds.reduce((e,t)=>(e[t]=r_.table,e),{});e.selectedMap={...t.memoIds.reduce((e,t)=>(e[t]=r_.memo,e),{}),...n}},q_=D(M.unselectAll),J_=({editor:e})=>{Object.keys(e.selectedMap).forEach(t=>{Reflect.deleteProperty(e.selectedMap,t)})},Y_=D(M.select),X_=({editor:e},{payload:t})=>{Object.assign(e.selectedMap,t)},Z_=D(M.changeViewport),Q_=(e,{payload:{width:t,height:n}})=>{e.editor.viewport.width=t,e.editor.viewport.height=n,e.editor.scrollPullPending&&tv(e)},$_=D(M.clear),ev=e=>{let{doc:t,collections:n}=Ip({});e.doc=t,e.collections=n,e.editor.scrollPullPending=!1};function tv(e){let{settings:t,editor:n}=e;if(!rg(n.viewport)){n.scrollPullPending=!0;return}let r=ig(e);t.originX=Ue(r.x,4),t.originY=Ue(r.y,4),n.scrollPullPending=!1}const nv=D(M.loadJson),rv=(e,{payload:{value:t}})=>{let{version:n,settings:r,doc:i,collections:a}=Fm(t);vh(r.canvasType)||(r.canvasType=Lm.ERD),Object.assign(e.settings,r),e.version=n,e.doc=i,e.collections=a,tv(e)},iv=D(M.initialClear),av=e=>{let{doc:t,collections:n}=Ip({});e.doc=t,e.collections=n,e.editor.scrollPullPending=!1},ov=D(M.initialLoadJson),sv=(e,{payload:{value:t}})=>{let{version:n,settings:r,doc:i,collections:a}=Fm(t);vh(r.canvasType)||(r.canvasType=Lm.ERD),Object.assign(e.settings,r),e.version=n,e.doc=i,e.collections=a,tv(e)},cv=D(M.focusTable),lv=({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}}},uv=D(M.focusColumn),dv=({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?h_(t.columnIds,i.selectColumnIds,i.prevSelectColumnId,i.columnId):n.shiftKey?m_(t.columnIds,i.prevSelectColumnId,i.columnId):n.$mod?p_(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}}},fv=D(M.focusTableEnd),pv=({editor:e})=>{e.focusTable=null},mv=D(M.focusMoveTable),hv=(e,{payload:t})=>{let{editor:{focusTable:n}}=e;if(n)switch(n.edit=!1,t.moveKey){case i_.ArrowUp:I_(e,t);break;case i_.ArrowDown:L_(e,t);break;case i_.ArrowLeft:R_(e,t);break;case i_.ArrowRight:z_(e,t);break;case i_.Tab:t.shiftKey?R_(e,t):z_(e,t)}},gv=D(M.editTable),_v=({editor:{focusTable:e}})=>{e&&(e.edit=!0)},vv=D(M.editTableEnd),yv=({editor:{focusTable:e}})=>{e&&(e.edit=!1)},bv=D(M.editMemo),xv=({editor:e},{payload:{id:t}})=>{e.editMemoId=t},Sv=D(M.editMemoEnd),Cv=({editor:e})=>{e.editMemoId=null},wv=D(M.scrollMemo),Tv=({editor:e},{payload:{id:t,scrollTop:n}})=>{e.memoScrollTopMap[t]=Number.isFinite(n)?Math.max(0,n):0},Ev=D(M.selectAllColumn),Dv=({collections:e,editor:{focusTable:t}})=>{if(!t)return;let n=j(e).collection(`tableEntities`).selectById(t.tableId);n&&(t.selectColumnIds=[...n.columnIds])},Ov=D(M.drawStartRelationship),kv=({editor:e},{payload:{relationshipType:t}})=>{e.drawRelationship={relationshipType:t,start:null,end:{x:0,y:0}}},Av=D(M.drawStartAddRelationship),jv=({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})},Mv=D(M.drawEndRelationship),Nv=({editor:e})=>{e.drawRelationship=null},Pv=D(M.drawRelationship),Fv=({editor:{drawRelationship:e},settings:t},{payload:{x:n,y:r}})=>{if(!e?.start)return;let i=Zg(t,{x:n,y:r});e.end.x=i.x,e.end.y=i.y},Iv=D(M.hoverColumnMap),Lv=({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},Rv=D(M.hoverRelationshipMap),zv=({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},Bv=D(M.changeOpenMap),Vv=({editor:e},{payload:t})=>{Object.assign(e.openMap,t)},Hv=D(M.changeHandTool),Uv=({editor:e},{payload:{value:t}})=>{e.handTool=t,t&&(e.drawRelationship=null)},Wv=D(M.changeZenMode),Gv=({editor:e},{payload:{value:t}})=>{e.zenMode=t},Kv=D(M.dragstartColumn),qv=({editor:e},{payload:t})=>{e.draggableColumn=t,t.columnIds.forEach(t=>{e.draggingColumnMap[t]=!0})},Jv=D(M.dragendColumn),Yv=({editor:e})=>{e.draggableColumn=null,Object.keys(e.draggingColumnMap).forEach(t=>{Reflect.deleteProperty(e.draggingColumnMap,t)})},Xv=D(M.sharedMouseTracker),Zv=({editor:e},{payload:t,tags:n,meta:r})=>{if(v(n)||!z(n,Qm.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)},B_)):e.sharedMouseTrackerMap[r.editorId]={...t,id:r.editorId,nickname:a,timeoutId:setTimeout(()=>{Reflect.deleteProperty(e.sharedMouseTrackerMap,r.editorId)},B_)}},Qv=D(M.sharedFocusTracker),$v=({editor:e},{payload:{focus:t},tags:n,meta:r})=>{if(v(n)||!z(n,Qm.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)},V_)):e.sharedFocusTrackerMap[r.editorId]={...t,id:r.editorId,timeoutId:setTimeout(()=>{Reflect.deleteProperty(e.sharedFocusTrackerMap,r.editorId)},V_)}},ey=D(M.sharedSelectionTracker),ty=({editor:e},{payload:{selectedIds:t},tags:n,meta:r})=>{if(v(n)||!z(n,Qm.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)},V_)):e.sharedSelectionTrackerMap[r.editorId]={id:r.editorId,selectedIds:t,timeoutId:setTimeout(()=>{Reflect.deleteProperty(e.sharedSelectionTrackerMap,r.editorId)},V_)}},ny=D(M.sharedDragSelectTracker),ry=({editor:e},{payload:{rect:t},tags:n,meta:r})=>{if(v(n)||!z(n,Qm.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)},H_)):e.sharedDragSelectTrackerMap[r.editorId]={...t,id:r.editorId,timeoutId:setTimeout(()=>{Reflect.deleteProperty(e.sharedDragSelectTrackerMap,r.editorId)},H_)}},iy=D(M.dragSelectRect),ay=({editor:e},{payload:{rect:t}})=>{e.dragSelect=t},oy=D(M.validationIds),sy=({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))})},cy=D(M.getLWW),ly=ge,uy=D(M.mergeLWW),dy=({lww:e},{payload:{lww:t}})=>{Object.entries(t).forEach(([t,[n,r,i,a]])=>{zp(e,r,t,n,ge),Bp(e,i,t,n,ge),Object.entries(a).forEach(([r,i])=>{Vp(e,i,t,n,r,ge)})})},fy={[M.changeHasHistory]:W_,[M.selectAll]:K_,[M.unselectAll]:J_,[M.select]:X_,[M.changeViewport]:Q_,[M.clear]:ev,[M.loadJson]:rv,[M.initialClear]:av,[M.initialLoadJson]:sv,[M.focusTable]:lv,[M.focusColumn]:dv,[M.focusTableEnd]:pv,[M.focusMoveTable]:hv,[M.editTable]:_v,[M.editTableEnd]:yv,[M.editMemo]:xv,[M.editMemoEnd]:Cv,[M.scrollMemo]:Tv,[M.selectAllColumn]:Dv,[M.drawStartRelationship]:kv,[M.drawStartAddRelationship]:jv,[M.drawEndRelationship]:Nv,[M.drawRelationship]:Fv,[M.hoverColumnMap]:Lv,[M.hoverRelationshipMap]:zv,[M.changeOpenMap]:Vv,[M.changeHandTool]:Uv,[M.changeZenMode]:Gv,[M.dragstartColumn]:qv,[M.dragendColumn]:Yv,[M.sharedMouseTracker]:Zv,[M.sharedFocusTracker]:$v,[M.sharedSelectionTracker]:ty,[M.sharedDragSelectTracker]:ry,[M.dragSelectRect]:ay,[M.validationIds]:sy,[M.getLWW]:ly,[M.mergeLWW]:dy},py={changeHasHistoryAction:U_,selectAllAction:G_,unselectAllAction:q_,selectAction:Y_,changeViewportAction:Z_,clearAction:$_,loadJsonAction:nv,initialClearAction:iv,initialLoadJsonAction:ov,focusTableAction:cv,focusColumnAction:uv,focusTableEndAction:fv,focusMoveTableAction:mv,editTableAction:gv,editTableEndAction:vv,editMemoAction:bv,editMemoEndAction:Sv,scrollMemoAction:wv,selectAllColumnAction:Ev,drawStartRelationshipAction:Ov,drawStartAddRelationshipAction:Av,drawEndRelationshipAction:Mv,drawRelationshipAction:Pv,hoverColumnMapAction:Iv,hoverRelationshipMapAction:Rv,changeOpenMapAction:Bv,changeHandToolAction:Hv,changeZenModeAction:Wv,dragstartColumnAction:Kv,dragendColumnAction:Jv,sharedMouseTrackerAction:Xv,sharedFocusTrackerAction:Qv,sharedSelectionTrackerAction:ey,sharedDragSelectTrackerAction:ny,dragSelectRectAction:iy,validationIdsAction:oy,getLWWAction:cy,mergeLWWAction:uy},my=(e,t,n)=>{e.push($_(),nv({value:Im(n)}))},hy=(e,t,n)=>{e.push(nv({value:Im(n)}))},gy={[M.loadJson]:my,[M.clear]:hy},_y={addIndex:`index.add`,removeIndex:`index.remove`,changeIndexName:`index.changeName`,changeIndexUnique:`index.changeUnique`},vy=e=>We({id:x(),name:``,tableId:``,indexColumnIds:[],seqIndexColumnIds:[],unique:!1,meta:u_()},e??{}),yy=D(_y.addIndex),by=({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(vy({id:r,tableId:i})).addOperator(n,s,r,()=>{B(e.indexIds)(r)||e.indexIds.push(r)})},xy=D(_y.removeIndex),Sy=({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)})},Cy=D(_y.changeIndexName),wy=({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=>vy({id:e,tableId:r})),c.replaceOperator(t,s,n,`name`,()=>{c.updateOne(n,e=>{e.name=i})})},Ty=D(_y.changeIndexUnique),Ey=({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=>vy({id:e,tableId:r})),c.replaceOperator(t,s,n,`unique`,()=>{c.updateOne(n,e=>{e.unique=i})})},Dy={[_y.addIndex]:by,[_y.removeIndex]:Sy,[_y.changeIndexName]:wy,[_y.changeIndexUnique]:Ey},Oy={addIndexAction:yy,removeIndexAction:xy,changeIndexNameAction:Cy,changeIndexUniqueAction:Ty},ky=(e,{payload:{id:t}})=>{e.push(xy({id:t}))},Ay=(e,{payload:{id:t}},{collections:n})=>{let r=j(n).collection(`indexEntities`).selectById(t);r&&e.push(yy({id:t,tableId:r.tableId}))},jy=(e,{payload:{id:t,tableId:n}},{collections:r})=>{let i=j(r).collection(`indexEntities`).selectById(t);i&&e.push(Cy({id:t,tableId:n,value:i.name}))},My=(e,{payload:{id:t,tableId:n,value:r}},{collections:i})=>{j(i).collection(`indexEntities`).selectById(t)&&e.push(Ty({id:t,tableId:n,value:!r}))},Ny={[_y.addIndex]:ky,[_y.removeIndex]:Ay,[_y.changeIndexName]:jy,[_y.changeIndexUnique]:My},Py={addIndexColumn:`indexColumn.add`,removeIndexColumn:`indexColumn.remove`,moveIndexColumn:`indexColumn.move`,changeIndexColumnOrderType:`indexColumn.changeOrderType`},Fy=e=>We({id:x(),indexId:``,columnId:``,orderType:qm.ASC,meta:u_()},e??{});function Iy(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 Ly=D(Py.addIndexColumn),Ry=({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=>vy({id:e,tableId:i}));j(e).collection(`indexColumnEntities`).addOne(Fy({id:n,indexId:r,columnId:a})).addOperator(t,c,n,()=>{B(u.indexColumnIds)(n)||l.updateOne(r,e=>{Iy(e.indexColumnIds,e.seqIndexColumnIds,n)})})},zy=D(Py.removeIndexColumn),By=({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=>vy({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)})})},Vy=D(Py.moveIndexColumn),Hy=({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=>vy({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))})},Uy=D(Py.changeIndexColumnOrderType),Wy=({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=>Fy({id:e,indexId:r,columnId:i})),l.replaceOperator(t,c,n,`orderType`,()=>{l.updateOne(n,e=>{e.orderType=a})})},Gy={[Py.addIndexColumn]:Ry,[Py.removeIndexColumn]:By,[Py.moveIndexColumn]:Hy,[Py.changeIndexColumnOrderType]:Wy},Ky={addIndexColumnAction:Ly,removeIndexColumnAction:zy,moveIndexColumnAction:Vy,changeIndexColumnOrderTypeAction:Uy},qy=(e,{payload:{id:t,indexId:n,tableId:r}})=>{e.push(zy({id:t,indexId:n,tableId:r}))},Jy=(e,{payload:{id:t,indexId:n,tableId:r}},{collections:i})=>{let a=j(i).collection(`indexColumnEntities`).selectById(t);a&&e.push(Ly({id:t,indexId:n,tableId:r,columnId:a.columnId}))},Yy=(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(Vy({indexId:n,tableId:r,id:t,targetId:u}))},Xy=(e,{payload:{id:t,indexId:n,columnId:r}},{collections:i})=>{let a=j(i).collection(`indexColumnEntities`).selectById(t);a&&e.push(Uy({id:t,indexId:n,columnId:r,value:a.orderType}))},Zy={[Py.addIndexColumn]:qy,[Py.removeIndexColumn]:Jy,[Py.moveIndexColumn]:Yy,[Py.changeIndexColumnOrderType]:Xy},Qy={addMemo:`memo.add`,moveMemo:`memo.move`,moveToMemo:`memo.moveTo`,removeMemo:`memo.remove`,changeMemoValue:`memo.changeValue`,changeMemoColor:`memo.changeColor`,resizeMemo:`memo.resize`,changeZIndex:`memo.changeZIndex`},$y=e=>We({id:x(),value:``,ui:{x:200,y:100,zIndex:2,width:116,height:100,color:``},meta:u_()},e??{}),eb=D(Qy.addMemo),tb=({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($y({id:r,ui:i})).addOperator(n,s,r,()=>{B(e.memoIds)(r)||e.memoIds.push(r)})},nb=D(Qy.moveMemo),rb=({collections:e},{payload:{ids:t,movementX:n,movementY:r}})=>{let i=j(e).collection(`memoEntities`);for(let e of t)i.getOrCreate(e,e=>$y({id:e}));i.updateMany(t,e=>{e.ui.x=Ue(e.ui.x+n,4),e.ui.y=Ue(e.ui.y+r,4)})},ib=D(Qy.moveToMemo),ab=({collections:e},{payload:{id:t,x:n,y:r}})=>{let i=j(e).collection(`memoEntities`);i.getOrCreate(t,e=>$y({id:e})),i.updateOne(t,e=>{e.ui.x=n,e.ui.y=r})},ob=D(Qy.removeMemo),sb=({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)})},cb=D(Qy.changeMemoValue),lb=({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=>$y({id:e})),s.replaceOperator(t,o,n,`value`,()=>{s.updateOne(n,e=>{e.value=r})})},ub=D(Qy.changeMemoColor),db=({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=>$y({id:e})),s.replaceOperator(t,o,n,`ui.color`,()=>{s.updateOne(n,e=>{e.ui.color=r})})},fb=D(Qy.resizeMemo),pb=({collections:e},{payload:{id:t,x:n,y:r,width:i,height:a}})=>{let o=j(e).collection(`memoEntities`);o.getOrCreate(t,e=>$y({id:e})),o.updateOne(t,e=>{e.ui.x=n,e.ui.y=r,e.ui.width=i,e.ui.height=a})},mb=D(Qy.changeZIndex),hb=({collections:e},{payload:{id:t,zIndex:n}})=>{let r=j(e).collection(`memoEntities`);r.getOrCreate(t,e=>$y({id:e})),r.updateOne(t,e=>{e.ui.zIndex=n})},gb={[Qy.addMemo]:tb,[Qy.moveMemo]:rb,[Qy.moveToMemo]:ab,[Qy.removeMemo]:sb,[Qy.changeMemoValue]:lb,[Qy.changeMemoColor]:db,[Qy.resizeMemo]:pb,[Qy.changeZIndex]:hb},_b={addMemoAction:eb,moveMemoAction:nb,moveToMemoAction:ib,removeMemoAction:ob,changeMemoValueAction:cb,changeMemoColorAction:ub,resizeMemoAction:fb,changeZIndexAction:mb},vb=(e,{payload:{id:t}})=>{e.push(ob({id:t}))},yb=(e,{payload:{id:t}},{collections:n})=>{let r=j(n).collection(`memoEntities`).selectById(t);r&&e.push(eb({id:r.id,ui:ve(r.ui,[`x`,`y`,`zIndex`])}))},bb=(e,{payload:{id:t}},{collections:n})=>{let r=j(n).collection(`memoEntities`).selectById(t);r&&e.push(cb({id:t,value:r.value}))},xb=(e,{payload:{id:t}},{collections:n})=>{let r=j(n).collection(`memoEntities`).selectById(t);r&&e.push(ib({id:t,x:r.ui.x,y:r.ui.y}))},Sb={[Qy.addMemo]:vb,[Qy.removeMemo]:yb,[Qy.changeMemoValue]:bb,[Qy.moveToMemo]:xb},Cb=(e,t,n)=>{let r=n.filter(e=>e.type===nb.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(nb({ids:r,movementX:-1*i,movementY:-1*a})),t.push(nb({ids:r,movementX:i,movementY:a})))}},wb=(e,t,n)=>{let r=n.filter(({type:e})=>e===ub.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(ub({id:n,color:i.payload.prevColor,prevColor:a.payload.color})),t.push(ub({id:n,color:a.payload.color,prevColor:i.payload.prevColor}))}},Tb=(e,t,n)=>{let r=n.filter(e=>e.type===fb.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)}},Eb={[Qy.moveMemo]:Cb,[Qy.changeMemoColor]:wb,[Qy.resizeMemo]:Tb},Db={addRelationship:`relationship.add`,removeRelationship:`relationship.remove`,changeRelationshipType:`relationship.changeType`},Ob=e=>We({id:x(),identification:!1,relationshipType:Gm.ZeroN,startRelationshipType:Km.dash,start:{tableId:``,columnIds:[],x:0,y:0,direction:I.bottom},end:{tableId:``,columnIds:[],x:0,y:0,direction:I.bottom},meta:u_()},e??{}),kb=D(Db.addRelationship),Ab=({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(Ob({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)})},jb=D(Db.removeRelationship),Mb=({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)})},Nb=D(Db.changeRelationshipType),Pb=({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})})},Fb={[Db.addRelationship]:Ab,[Db.removeRelationship]:Mb,[Db.changeRelationshipType]:Pb},Ib={addRelationshipAction:kb,removeRelationshipAction:jb,changeRelationshipTypeAction:Nb},Lb=(e,{payload:{id:t}})=>{e.push(jb({id:t}))},Rb=(e,{payload:{id:t}},{collections:n})=>{let r=j(n).collection(`relationshipEntities`).selectById(t);r&&e.push(kb({id:r.id,relationshipType:r.relationshipType,start:ve(r.start,[`tableId`,`columnIds`]),end:ve(r.end,[`tableId`,`columnIds`])}))},zb=(e,{payload:{id:t}},{collections:n})=>{let r=j(n).collection(`relationshipEntities`).selectById(t);r&&e.push(Nb({id:t,value:r.relationshipType}))},Bb={[Db.addRelationship]:Lb,[Db.removeRelationship]:Rb,[Db.changeRelationshipType]:zb},Vb=(e,t,{settings:n})=>{e.push(ag({originX:n.originX,originY:n.originY}))},Hb=(e,{payload:{show:t,value:n}})=>{e.push(lg({show:t,value:!n}))},Ub=(e,t,{settings:n})=>{e.push($h({value:n.zoomLevel}))},Wb={[H.scrollTo]:Vb,[H.changeShow]:Hb,[H.changeZoomLevel]:Ub},Gb=(e,t,n)=>{let r=n.filter(e=>e.type===sg.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(sg({movementX:-1*i,movementY:-1*a})),t.push(sg({movementX:i,movementY:a})))},Kb=(e,t,n)=>{let r=n.filter(e=>e.type===tg.type);if(!r.length)return;let i=r.reduce((e,{payload:{value:t}})=>e+t,0);e.push(tg({value:-1*i})),t.push(tg({value:i}))},qb={[H.streamScrollTo]:Gb,[H.streamZoomLevel]:Kb},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`},Jb=e=>We({id:x(),name:``,comment:``,columnIds:[],seqColumnIds:[],ui:{x:200,y:100,zIndex:2,widthName:60,widthComment:60,color:``},meta:u_()},e??{}),Yb=D(G.addTable),Xb=({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(Jb({id:r,ui:i})).addOperator(n,s,r,()=>{B(e.tableIds)(r)||e.tableIds.push(r)})},Zb=D(G.moveTable),Qb=({collections:e},{payload:{ids:t,movementX:n,movementY:r}})=>{let i=j(e).collection(`tableEntities`);for(let e of t)i.getOrCreate(e,e=>Jb({id:e}));i.updateMany(t,e=>{e.ui.x=Ue(e.ui.x+n,4),e.ui.y=Ue(e.ui.y+r,4)})},$b=D(G.moveToTable),ex=({collections:e},{payload:{id:t,x:n,y:r}})=>{let i=j(e).collection(`tableEntities`);i.getOrCreate(t,e=>Jb({id:e})),i.updateOne(t,e=>{e.ui.x=n,e.ui.y=r})},tx=D(G.removeTable),nx=({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)})},rx=D(G.changeTableName),ix=({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=>Jb({id:e})),c.replaceOperator(t,s,n,`name`,()=>{c.updateOne(n,e=>{e.name=r,e.ui.widthName=V(a(r))})})},ax=D(G.changeTableComment),ox=({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=>Jb({id:e})),c.replaceOperator(t,s,n,`comment`,()=>{c.updateOne(n,e=>{e.comment=r,e.ui.widthComment=V(a(r))})})},sx=D(G.changeTableColor),cx=({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=>Jb({id:e})),s.replaceOperator(t,o,n,`ui.color`,()=>{s.updateOne(n,e=>{e.ui.color=r})})},lx=D(G.changeZIndex),ux=({collections:e},{payload:{id:t,zIndex:n}})=>{let r=j(e).collection(`tableEntities`);r.getOrCreate(t,e=>Jb({id:e})),r.updateOne(t,e=>{e.ui.zIndex=n})},dx=D(G.sortTable),fx=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=wh(t,e).width+80,r=Oh(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})},px={[G.addTable]:Xb,[G.moveTable]:Qb,[G.moveToTable]:ex,[G.removeTable]:nx,[G.changeTableName]:ix,[G.changeTableComment]:ox,[G.changeTableColor]:cx,[G.changeZIndex]:ux,[G.sortTable]:fx},mx={addTableAction:Yb,moveTableAction:Zb,moveToTableAction:$b,removeTableAction:tx,changeTableNameAction:rx,changeTableCommentAction:ax,changeTableColorAction:sx,changeZIndexAction:lx,sortTableAction:dx},hx=(e,{payload:{id:t}})=>{e.push(tx({id:t}))},gx=(e,{payload:{id:t}},{collections:n})=>{let r=j(n).collection(`tableEntities`).selectById(t);r&&e.push(Yb({id:r.id,ui:ve(r.ui,[`x`,`y`,`zIndex`])}))},_x=(e,{payload:{id:t}},{collections:n})=>{let r=j(n).collection(`tableEntities`).selectById(t);r&&e.push(rx({id:t,value:r.name}))},vx=(e,{payload:{id:t}},{collections:n})=>{let r=j(n).collection(`tableEntities`).selectById(t);r&&e.push(ax({id:t,value:r.comment}))},yx=(e,{payload:{id:t}},{collections:n})=>{let r=j(n).collection(`tableEntities`).selectById(t);r&&e.push($b({id:t,x:r.ui.x,y:r.ui.y}))},bx=()=>{},xx={[G.addTable]:hx,[G.removeTable]:gx,[G.changeTableName]:_x,[G.changeTableComment]:vx,[G.moveToTable]:yx,[G.sortTable]:bx},Sx=(e,t,n)=>{let r=n.filter(e=>e.type===Zb.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(Zb({ids:r,movementX:-1*i,movementY:-1*a})),t.push(Zb({ids:r,movementX:i,movementY:a})))}},Cx=(e,t,n)=>{let r=n.filter(({type:e})=>e===sx.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(sx({id:n,color:i.payload.prevColor,prevColor:a.payload.color})),t.push(sx({id:n,color:a.payload.color,prevColor:i.payload.prevColor}))}},wx={[G.moveTable]:Sx,[G.changeTableColor]:Cx},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`},Tx=e=>We({id:x(),tableId:``,name:``,comment:``,dataType:``,default:``,options:0,ui:{keys:0,widthName:60,widthComment:60,widthDataType:60,widthDefault:60},meta:u_()},e??{}),Ex=D(K.addColumn),Dx=({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=>Jb({id:e}));j(e).collection(`tableColumnEntities`).addOne(Tx({id:n,tableId:r})).addOperator(t,o,n,()=>{B(c.columnIds)(n)||s.updateOne(r,e=>{Iy(e.columnIds,e.seqColumnIds,n)})})},Ox=D(K.removeColumn),kx=({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=>Jb({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)})})},Ax=D(K.changeColumnName),jx=({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=>Tx({id:e})),c.replaceOperator(t,s,n,`name`,()=>{c.updateOne(n,e=>{e.name=r,e.ui.widthName=V(a(r))})})},Mx=D(K.changeColumnComment),Nx=({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=>Tx({id:e})),c.replaceOperator(t,s,n,`comment`,()=>{c.updateOne(n,e=>{e.comment=r,e.ui.widthComment=V(a(r))})})},Px=D(K.changeColumnDataType),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=>Tx({id:e})),c.replaceOperator(t,s,n,`dataType`,()=>{c.updateOne(n,e=>{e.dataType=r,e.ui.widthDataType=V(a(r))})})},Ix=D(K.changeColumnDefault),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=>Tx({id:e})),c.replaceOperator(t,s,n,`default`,()=>{c.updateOne(n,e=>{e.default=r,e.ui.widthDefault=V(a(r))})})},Rx=D(K.changeColumnAutoIncrement),zx=({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=>Tx({id:e})),s.replaceOperator(t,o,n,`options(autoIncrement)`,()=>{s.updateOne(n,e=>{e.options=r?e.options|L.autoIncrement:e.options&~L.autoIncrement})})},Bx=D(K.changeColumnPrimaryKey),Vx=({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=>Tx({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})})},Hx=D(K.changeColumnUnique),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=>Tx({id:e})),s.replaceOperator(t,o,n,`options(unique)`,()=>{s.updateOne(n,e=>{e.options=r?e.options|L.unique:e.options&~L.unique})})},Wx=D(K.changeColumnNotNull),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=>Tx({id:e})),s.replaceOperator(t,o,n,`options(notNull)`,()=>{s.updateOne(n,e=>{e.options=r?e.options|L.notNull:e.options&~L.notNull})})},Kx=D(K.moveColumn),qx=({collections:e},{payload:{id:t,tableId:n,targetId:r}})=>{if(t===r)return;let i=j(e).collection(`tableEntities`),a=i.getOrCreate(n,e=>Jb({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))})},Jx={[K.addColumn]:Dx,[K.removeColumn]:kx,[K.changeColumnName]:jx,[K.changeColumnComment]:Nx,[K.changeColumnDataType]:Fx,[K.changeColumnDefault]:Lx,[K.changeColumnAutoIncrement]:zx,[K.changeColumnPrimaryKey]:Vx,[K.changeColumnUnique]:Ux,[K.changeColumnNotNull]:Gx,[K.moveColumn]:qx},Yx={addColumnAction:Ex,removeColumnAction:Ox,changeColumnNameAction:Ax,changeColumnCommentAction:Mx,changeColumnDataTypeAction:Px,changeColumnDefaultAction:Ix,changeColumnAutoIncrementAction:Rx,changeColumnPrimaryKeyAction:Bx,changeColumnUniqueAction:Hx,changeColumnNotNullAction:Wx,moveColumnAction:Kx},Xx=(e,{payload:{id:t,tableId:n}})=>{e.push(Ox({id:t,tableId:n}))},Zx=(e,{payload:{id:t,tableId:n}})=>{e.push(Ex({id:t,tableId:n}))},Qx=(e,{payload:{id:t,tableId:n}},{collections:r})=>{let i=j(r).collection(`tableColumnEntities`).selectById(t);i&&e.push(Ax({id:t,tableId:n,value:i.name}))},$x=(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.dataType}))},eS=(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.default}))},tS=(e,{payload:{id:t,tableId:n}},{collections:r})=>{let i=j(r).collection(`tableColumnEntities`).selectById(t);i&&e.push(Mx({id:t,tableId:n,value:i.comment}))},nS=(e,{payload:{id:t,tableId:n,value:r}},{collections:i})=>{j(i).collection(`tableColumnEntities`).selectById(t)&&e.push(Rx({id:t,tableId:n,value:!r}))},rS=(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}))},iS=(e,{payload:{id:t,tableId:n,value:r}},{collections:i})=>{j(i).collection(`tableColumnEntities`).selectById(t)&&e.push(Bx({id:t,tableId:n,value:!r}))},aS=(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}))},oS=(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(Kx({id:t,tableId:n,targetId:l}))},sS={[K.addColumn]:Xx,[K.removeColumn]:Zx,[K.changeColumnName]:Qx,[K.changeColumnDataType]:$x,[K.changeColumnDefault]:eS,[K.changeColumnComment]:tS,[K.changeColumnAutoIncrement]:nS,[K.changeColumnNotNull]:rS,[K.changeColumnPrimaryKey]:iS,[K.changeColumnUnique]:aS,[K.moveColumn]:oS};function cS(e,...t){try{return e?.(...t)}catch(e){console.error(e)}}const lS={...xx,...sS,...Bb,...Sb,...Wb,...gy,...Ny,...Zy},uS={...wx,...Eb,...qb};function dS(e,t,n){let r=[],i=[];for(let t of n){let n=lS[t.type];n&&(n(r,t,e.state),i.push(oe(t)))}for(let e of Object.keys(uS))uS[e](r,i,n);!r.length||!i.length||t.push({undo:(e,t)=>{e(r.map(fS(t())))},redo:(e,t)=>{e(i.map(fS(t())))}})}function fS(e){return t=>({...oe(t),version:e})}const pS=(e,t)=>n=>{cS(dS,e,t,n)},mS=()=>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=l_(e,i,a),s=x();yield sk(),yield Y_({[s]:r_.memo}),yield eb({id:s,ui:{...o,zIndex:s_(i,a)}})},hS=e=>function*({editor:{selectedMap:t}}){if(e){yield ob({id:e});return}let n=Object.entries(t).filter(([,e])=>e===r_.memo);for(let[e]of n)yield ob({id:e})},gS=(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 sk()),yield Y_({[e]:r_.memo}),yield mb({id:e,zIndex:s_(a,o)})},_S={addMemoAction$:mS,removeMemoAction$:hS,selectMemoAction$:gS};B(Object.values({tables:`tables`,columns:`columns`}));const vS=({x:e,y:t})=>`${e},${t}`,yS=(e,t)=>e<t?-1:+(e>t),bS=e=>e.ui.zIndex??0;function xS({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})=>vS(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=l_(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)=>yS(e.sourceId,t.sourceId));for(let{sourceId:e}of t){let t=l.get(e);if(t){for(;c.has(vS(t));)t.x+=50,t.y+=50;c.add(vS(t))}}}let d=s_(i,a);return[...e].sort((e,t)=>bS(e)-bS(t)||yS(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 SS(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 CS=()=>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=l_(e,i,a),s=x();yield q_(),yield Y_({[s]:r_.table}),yield Yb({id:s,ui:{...o,zIndex:s_(i,a)}}),yield cv({tableId:s})},wS=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 xy({id:e});for(let{id:e}of t)yield jb({id:e});yield tx({id:e});return}let s=Object.entries(r).filter(([,e])=>e===r_.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 xy({id:e});for(let{id:e}of l)yield jb({id:e});for(let e of s)yield tx({id:e})},TS=(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 q_()),yield Y_({[e]:r_.table}),yield lx({id:e,zIndex:s_(s,c)}),yield cv({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[Ex(i),Wx({...i,value:!0}),Ax({...i,value:t.name}),Px({...i,value:t.dataType}),Ix({...i,value:t.default}),Mx({...i,value:t.comment})]}yield kb({id:x(),relationshipType:a.relationshipType,start:{tableId:t.id,columnIds:r.map(({id:e})=>e)},end:{tableId:n.id,columnIds:s}}),yield Mv()}else yield uk(e)}},ES={addTableAction$:CS,removeTableAction$:wS,selectTableAction$:TS,pasteTableAction$:e=>function*({editor:{selectedMap:t,focusTable:n},settings:{show:r,columnOrder:i},collections:a}){let o=n&&!N_(n.focusType),s=Object.entries(t).filter(([,e])=>e===r_.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[Ex(e),Ax({...e,value:n.name}),Px({...e,value:n.dataType}),Ix({...e,value:n.default}),Mx({...e,value:n.comment}),Wx({...e,value:z(n.options,L.notNull)}),Hx({...e,value:z(n.options,L.unique)}),Rx({...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=SS(r,i);yield fv();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 Ax({...a,value:i.name});case P.columnDataType:return Px({...a,value:i.dataType});case P.columnDefault:return Ix({...a,value:i.default});case P.columnComment:return Mx({...a,value:i.comment});case P.columnAutoIncrement:return Rx({...a,value:z(i.options,L.autoIncrement)});case P.columnUnique:return Hx({...a,value:z(i.options,L.unique)});case P.columnNotNull:return Wx({...a,value:z(i.options,L.notNull)});default:return null}}).filter(Boolean),uv({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[Ex(r),...f.map(t=>{switch(t){case P.columnName:return Ax({...r,value:e.name});case P.columnDataType:return Px({...r,value:e.dataType});case P.columnDefault:return Ix({...r,value:e.default});case P.columnComment:return Mx({...r,value:e.comment});case P.columnAutoIncrement:return Rx({...r,value:z(e.options,L.autoIncrement)});case P.columnUnique:return Hx({...r,value:z(e.options,L.unique)});case P.columnNotNull:return Wx({...r,value:z(e.options,L.notNull)});default:return null}}).filter(Boolean),uv({tableId:c.id,columnId:t,focusType:n.focusType,$mod:!0,shiftKey:!1})]}}};function DS(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})}}})),DS(e,t,n,r)),r}const OS=B([W.columnNotNull,W.columnUnique,W.columnAutoIncrement]),kS=B([W.columnName,W.columnDataType,W.columnDefault,W.columnComment]),AS=e=>function*({editor:{selectedMap:t}}){if(e){let t=x();yield Ex({id:t,tableId:e}),yield uv({tableId:e,columnId:t,focusType:W.columnName,$mod:!1,shiftKey:!1});return}let n=Object.entries(t).filter(([,e])=>e===r_.table).map(([e])=>({tableId:e,id:x()}));for(let e of n)yield Ex(e);let r=me(n);r&&(yield uv({tableId:r.tableId,columnId:r.id,focusType:W.columnName,$mod:!1,shiftKey:!1}))},jS=(e,t)=>function*(n){let{doc:{relationshipIds:r,indexIds:i},editor:{focusTable:a},collections:o}=n;if(a?.columnId){let e=k_(n,t);e?yield uv({tableId:a.tableId,columnId:e,focusType:a.focusType,$mod:!1,shiftKey:!1}):yield cv({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 xy({id:e});for(let{id:e}of c)yield jb({id:e});for(let n of t)yield Ox({id:n,tableId:e})},MS=(e,t,n)=>function*({collections:r}){if(!OS(e))return;let i=j(r).collection(`tableColumnEntities`).selectById(n);if(i)switch(e){case W.columnNotNull:yield Wx({id:n,tableId:t,value:!z(i.options,L.notNull)});break;case W.columnUnique:yield Hx({id:n,tableId:t,value:!z(i.options,L.unique)});break;case W.columnAutoIncrement:yield Rx({id:n,tableId:t,value:!z(i.options,L.autoIncrement)})}},NS=e=>function*(t){let{settings:{relationshipDataTypeSync:n}}=t,r=[e];n&&(r=DS([e],t,e)),yield r.map(Px)},PS={addColumnAction$:AS,removeColumnAction$:jS,toggleColumnValueAction$:MS,changeColumnDataTypeAction$:NS,changeColumnValueAction$:(e,t,n,r)=>function*({collections:i}){if(!kS(e)||!j(i).collection(`tableColumnEntities`).selectById(n))return;let a={id:n,tableId:t,value:r};switch(e){case W.columnName:yield Ax(a);break;case W.columnDataType:yield NS(a);break;case W.columnDefault:yield Ix(a);break;case W.columnComment:yield Mx(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 Bx({tableId:e,id:t,value:!i})}};function FS(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 IS(e){return e.filter(({options:e})=>z(e,L.primaryKey))}function LS(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:LS(e,t,n.replace(/[0-9]/g,``)+r,r+1)}function RS(e,t){for(let n of e)if(n.name.toUpperCase()===t.toUpperCase())return n;return null}const zS={[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 BS(e,t,n,r=[]){let i=US(e,n,r);return i.members?HS(i.members,t)??zS[t]??i.typeName:i.typeName}function VS(e,t,n,r=[]){let{members:i}=US(e,t,r);return!i||HS(i,n)!==void 0?``:` ${e}: ${i.join(` | `)}`}function HS(e,t){if(t===F.MySQL||t===F.MariaDB)return`ENUM(${e.map(e=>`'${e.replace(/'/g,`''`)}'`).join(`,`)})`}function US(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=WS(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 WS(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 GS={database:``,catalog:``,schema:``},KS=YS(GS);function qS(e,t,n){let r=Ip({}),i=JS(e.entities),a=e.entities.map(a=>QS(r,t,e,n,a,i(a)));return tC(r,t,a,e,ZS(e.entities,a)),oC(r,a),r}function JS(e){let t=new Set(e.map(e=>YS(e.namespace)));return e=>{let n=YS(e.namespace);return t.size>1&&n!==KS?`${XS(e.namespace)}_${e.name}`:e.name}}function YS({database:e,catalog:t,schema:n}){return`${e}.${t}.${n}`}function XS({database:e,catalog:t,schema:n}){return[e,t,n].filter(e=>e!==``).join(`_`)}function ZS(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=YS(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=YS(e.namespace);return n.get(`${t}.${e.entityName}`.toLowerCase())??(t===KS?n.get(e.entityName.toLowerCase())??null:null)}}function QS({doc:e,collections:t},n,r,i,a,o){let{toWidth:s}=n,c=yh(o),l=yh(a.comment),u=Jb({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=yh(e.path),a=BS(e.typeName,i,r,e.enumValues),o=`${yh(e.comment)}${VS(e.typeName,r,i,e.enumValues)}`.trim(),c=yh(e.default);eC(t,d,Tx({tableId:u.id,name:n,comment:o,dataType:a,default:c,options:(e.autoIncrement?L.autoIncrement:0)|(e.primaryKey?L.primaryKey:0)|($S(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 $S(e){return e.indexes.some(e=>e.unique&&e.name===``)}function eC(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 tC(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=nC(o,r.src),l=nC(s,r.ref);if(c.length!==0&&l.length!==0&&c.length===l.length){if(r.srcCardinality===`n`&&r.refCardinality===`n`){iC(e,t,n,o,s);return}rC(e,t,a,{parent:s,parentColumns:l,child:o,childColumns:c,toMany:r.refCardinality===`n`})}})}function nC(e,t){if(t.attributePaths.length===0)return IS(e.columns);let n=[];for(let r of t.attributePaths){let t=RS(e.columns,r);if(!t)return[];n.push(t)}return n}function rC({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=Ob({identification:s.every(e=>z(e.ui.keys,R.primaryKey)&&z(e.ui.keys,R.foreignKey)),relationshipType:c?u?Gm.OneN:Gm.ZeroN:u?Gm.OneOnly:Gm.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 iC(e,t,n,r,i){let{doc:a,collections:o}=e,{toWidth:s}=t,c=IS(r.columns),l=IS(i.columns);if(!c.length||!l.length)return;let u=LS(n.map(e=>e.table),``,`${r.table.name}_${i.table.name}`),d=`Junction table inferred from ${r.table.name} <-> ${i.table.name}`,f=Jb({name:u,comment:d,ui:{widthName:V(s(u)),widthComment:V(s(d))}}),p={source:{namespace:GS,name:u,alias:``,comment:d,attributes:[]},table:f,columns:[]};a.tableIds.push(f.id),j(o).collection(`tableEntities`).setOne(f),n.push(p),aC(e,t,p,r,c),aC(e,t,p,i,l)}function aC(e,{toWidth:t},n,r,i){let{doc:a,collections:o}=e,s=i.map(e=>{let i=LS(n.columns,``,`${r.table.name}_${e.name}`),{dataType:a}=e,s=Tx({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 eC(o,n,s),s}),c=Ob({identification:!0,relationshipType:Gm.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 oC({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:vy({name:yh(e.name),tableId:r.id}),indexColumns:[]};s.index.unique=s.index.unique||e.unique,s.indexColumns.push(Fy({indexId:s.index.id,columnId:n.id,orderType:qm.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},sC=/[ \t\f\v]/,cC=/[0-9]/,lC=/[A-Za-z_\u0080-\uffff]/,uC=/[0-9A-Za-z_#\u0080-\uffff]/,dC=/^[ \t]*/,fC=/\\#/g,pC={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 xC=new Set([`as`,`check`,`false`,`fk`,`index`,`namespace`,`null`,`nullable`,`pk`,`rel`,`true`,`type`,`unique`]),SC=new Set([`false`,`null`,`true`]),CC=/^-?\d+$/;function wC(e){try{return{ok:!0,model:DC(TC(mC(e)))}}catch(e){return{ok:!1,message:e instanceof Error?e.message:`Invalid AML`}}}function TC(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 EC(e){let t=0;return{peek:(n=0)=>e[t+n]??null,next:()=>e[t++]??null,atEnd:()=>t>=e.length}}function DC(e){let t={entities:[],relations:[],types:{},skipped:[]},n=new Set,r=e=>{e!==``&&!n.has(e)&&(n.add(e),t.skipped.push(e))},i=GS,a=null,o={path:[],depth:0};return e.forEach(e=>{let n=EC(e.tokens),s=n.peek();if(!s)return;if(e.depth>=0){a!==null&&kC(n,e.depth,a,o,t,r);return}let c=s.kind===q.identifier?s.value.toLowerCase():``;if(c===`namespace`){n.next(),i=WC(n);return}if(c===`rel`||c===`fk`){n.next();let e=FC(n,i,r);e&&t.relations.push(e);return}if(c===`type`){n.next(),UC(n,i,t,r);return}if(!rw(s))return;let l=OC(n,i,r);l&&(t.entities.push(l),a=l,o={path:[],depth:0})}),t}function OC(e,t,n){let r=GC(e);if(r.name===``)return null;let i=e.peek();i&&J(i,`*`)&&(e.next(),n(`view`));let a=qC(e),o=JC(e,n);return{namespace:ew(t,r.namespace),name:r.name,alias:a,comment:o.doc||o.comment,attributes:[]}}function kC(e,t,n,r,i,a){let o=$C(e);if(o===``)return;let s=jC(e),c={path:AC(r,t,o),comment:``,typeName:s.typeName,enumValues:s.enumValues,notNull:!0,primaryKey:!1,indexes:[],default:s.default,autoIncrement:!1},l=e.peek();l&&iw(l,`nullable`)&&(e.next(),c.notNull=!1),MC(e,c,n,i,a);let u=JC(e,a);c.comment=u.doc||u.comment,c.autoIncrement=u.autoIncrement,n.attributes.push(c)}function AC(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 jC(e){let t=$C(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}=ZC(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:QC(e)}):{typeName:n,enumValues:r,default:``}}function MC(e,t,n,r,i){let a=()=>{let i=IC(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(),PC(e),t.primaryKey=!0;continue}if(r===`unique`||r===`index`){e.next(),t.indexes.push({name:PC(e),unique:r===`unique`});continue}if(r===`check`){e.next(),NC(e),i(`check`);continue}if(r===`fk`&&a())continue;return}if(!(aw(n)&&a()))return}}function NC(e){let t=e.peek();t&&J(t,`(`)&&(e.next(),nw(e,`(`,`)`)),PC(e)}function PC(e){let t=e.peek();return!t||!J(t,`=`)?``:(e.next(),$C(e))}function FC(e,t,n){let r=zC(e),i=IC(e);return JC(e,n),!i||r.entityName===``?null:{src:tw(r.namespace)?{...r,namespace:t}:r,...i}}function IC(e){let t=e.peek();if(t&&iw(t,`fk`)){e.next();let t=zC(e);return t.entityName===``?null:{ref:t,srcCardinality:`n`,refCardinality:`1`,polymorphic:!1}}let n=LC(e);if(n===null)return null;let r=RC(e);r&&(VC(e),e.next(),QC(e));let i=LC(e)??`n`,a=zC(e);return a.entityName===``?null:{ref:a,srcCardinality:i,refCardinality:n,polymorphic:r}}function LC(e){let t=e.peek();return!t||!aw(t)?null:(e.next(),t.value===`-`?`1`:`n`)}function RC(e){let t=0;for(;;){let n=e.peek(t);if(!n||!rw(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 zC(e){let t=GC(e),n=e.peek();if(n&&J(n,`(`))return e.next(),{namespace:t.namespace,entityName:t.name,attributePaths:BC(e)};if(t.namespace.schema===``)return{namespace:GS,entityName:t.name,attributePaths:[]};let r=[t.name,...HC(e)].join(`.`);return{namespace:{database:``,catalog:``,schema:t.namespace.catalog},entityName:t.namespace.schema,attributePaths:[r]}}function BC(e){let t=[];for(;!e.atEnd();){let n=e.peek();if(!n||J(n,`)`)){e.next();break}if(rw(n)){t.push(VC(e));continue}e.next()}return t}function VC(e){let t=[$C(e)];for(;!e.atEnd();){let n=e.peek();if(!n||!J(n,`.`))break;e.next();let r=$C(e);if(r===``)break;t.push(r)}return t.join(`.`)}function HC(e){let t=[];for(;!e.atEnd();){let n=e.peek();if(!n||!J(n,`:`))break;e.next();let r=$C(e);if(r===``)break;t.push(r)}return t}function UC(e,t,n,r){let i=GC(e);if(i.name===``)return;let a={values:[],alias:``},o=e.peek();o&&J(o,`(`)?(e.next(),a.values=ZC(e).values):o&&J(o,`{`)?(e.next(),nw(e,`{`,`}`),r(`struct type`)):o&&o.kind===q.expression?(e.next(),r(`custom type`)):o&&rw(o)&&(a.alias=$C(e)),JC(e,r);let s=ew(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 WC(e){let t=$C(e);if(t===``)return GS;let n=KC(e),r=KC(e);return n&&r?{database:t,catalog:n.name,schema:r.name}:n?{database:``,catalog:t,schema:n.name}:{database:``,catalog:``,schema:t}}function GC(e){let t=$C(e);if(t===``)return{namespace:GS,name:``};let n=KC(e),r=KC(e),i=KC(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:GS,name:t}}function KC(e){let t=e.peek();return!t||!J(t,`.`)?null:(e.next(),{name:$C(e)})}function qC(e){let t=e.peek();return!t||!iw(t,`as`)?``:(e.next(),$C(e))}function JC(e,t){let n={autoIncrement:!1,doc:``,comment:``};for(;!e.atEnd();){let r=e.next();if(!r)break;if(J(r,`{`)){YC(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 YC(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(),XC(e)),r.value.toLowerCase()===`autoincrement`?t.autoIncrement=!0:n(r.value)}}function XC(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 ZC(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=QC(e);t.push(i),n=n&&r.kind!==q.quoted&&CC.test(i)}return{values:t,numeric:n}}function QC(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 SC.has(t.value.toLowerCase())?t.value.toLowerCase():t.value;default:return t.value}}function $C(e){let t=e.peek();return!t||!rw(t)?``:(e.next(),t.value)}function ew(e,t){return{database:t.database||e.database,catalog:t.catalog||e.catalog,schema:t.schema||e.schema}}function tw(e){return e.database===``&&e.catalog===``&&e.schema===``}function nw(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 rw(e){return e.kind===q.quoted||e.kind===q.identifier&&!xC.has(e.value.toLowerCase())}function iw(e,t){return e.kind===q.identifier&&e.value.toLowerCase()===t}function aw(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 ow={entities:[],relations:[],types:{},skipped:[]};function sw(e,t,n){let r=wC(e),i=r.ok?r.model:ow,a=Ip({}),o=dh(i.entities.length*100);a.settings.width=o,a.settings.height=o;let{settings:s}=n?n(a):a,c=qS(i,t,s.database);return c.settings=s,Im(c)}const cw={[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 lw(e,t,n,r){let i=fw(e,t,r);return i?dw(i,n)??cw[n]??e:e}function uw(e,t,n,r){let i=fw(e,t,n);return!i||dw(i,r)!==void 0?``:` ${e}: ${i.join(` | `)}`}function dw(e,t){if(t===F.MySQL||t===F.MariaDB)return`ENUM(${e.map(e=>`'${e.replace(/'/g,`''`)}'`).join(`,`)})`}function fw(e,t,n){let r=t?`${t}.${e}`:``;return n.enums[r]??n.enums[e]??null}const pw=`public`;function mw(e,t,n){let r=Ip({}),i=hw(e.tables),a=e.tables.map(a=>vw(r,t,e,n,a,i(a)));return bw(r,t,a,e,_w(e.tables,a)),Tw(r,a),r}function hw(e){let t=new Set(e.map(e=>gw(e.schemaName)));return e=>{let n=gw(e.schemaName);return t.size>1&&n!==pw?`${n}_${e.name}`:e.name}}function gw(e){return e===``?pw:e}function _w(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=gw(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=gw(e.schemaName);return n.get(`${t}.${e.tableName}`.toLowerCase())??(e.schemaName===``?n.get(e.tableName.toLowerCase())??null:null)}}function vw({doc:e,collections:t},n,r,i,a,o){let{toWidth:s}=n,c=yh(o),l=yh(a.comment),u=Jb({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=yh(e.name),a=e.primaryKey||f.has(n.toUpperCase()),o=lw(e.typeName,e.typeSchemaName,i,r),c=`${yh(e.comment)}${uw(e.typeName,e.typeSchemaName,r,i)}`.trim(),l=yh(e.default);yw(t,d,Tx({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 yw(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 bw(e,t,n,r,i){let a=new Set,o=t=>Sw(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=xw(s,a.target);if(l.length!==1)return;if(a.operator===`<>`){Cw(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=xw(a,r.left),l=xw(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===`<>`){Cw(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 xw(e,t){let n=[];for(let r of t.columnNames){let t=RS(e.columns,r);if(!t)return[];n.push(t)}return n}function Sw({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=Ob({identification:o.every(e=>z(e.ui.keys,R.primaryKey)&&z(e.ui.keys,R.foreignKey)),relationshipType:s?l?Gm.OneN:Gm.ZeroN:l?Gm.OneOnly:Gm.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 Cw(e,t,n,r,i){let{doc:a,collections:o}=e,{toWidth:s}=t,c=IS(r.columns),l=IS(i.columns);if(!c.length||!l.length)return;let u=LS(n.map(e=>e.table),``,`${r.table.name}_${i.table.name}`),d=`Junction table inferred from ${r.table.name} <-> ${i.table.name}`,f=Jb({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),ww(e,t,p,r,c),ww(e,t,p,i,l)}function ww(e,{toWidth:t},n,r,i){let{doc:a,collections:o}=e,s=i.map(e=>{let i=LS(n.columns,``,`${r.table.name}_${e.name}`),{dataType:a}=e,s=Tx({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 yw(o,n,s),s}),c=Ob({identification:!0,relationshipType:Gm.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 Tw({doc:e,collections:t},n){n.forEach(({source:n,table:r,columns:i})=>{n.indexes.forEach(n=>{if(n.primaryKey)return;let a=vy({name:yh(n.name),tableId:r.id,unique:n.unique}),o=[];n.columnNames.forEach(e=>{let t=RS(i,e);t&&o.push(Fy({indexId:a.id,columnId:t.id,orderType:qm.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},Ew=/[ \t\f\v]/,Dw=/[0-9]/,Ow=/[A-Za-z_\u0080-\uffff]/,kw=/[0-9A-Za-z_\u0080-\uffff]/,Aw=/^[ \t]*/,jw={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 Iw=/^[0-9a-z ]+$/,Lw=/'/g,Rw=/\?/g;function zw(e){try{return{ok:!0,model:Vw(Mw(e))}}catch(e){return{ok:!1,message:e instanceof Error?e.message:`Invalid DBML`}}}function Bw(e){let t=0;return{peek:(n=0)=>e[t+n]??null,next:()=>e[t++]??null,atEnd:()=>t>=e.length}}function Vw(e){let t=Bw(e),n={tables:[],refs:[],enums:{},skipped:[]},r=new Map,i=new Set,a=e=>{i.has(e)||(i.add(e),n.skipped.push(e)),fT(t)};for(;!t.atEnd();){if(mT(t))continue;let e=t.peek();if(!e)break;if(!hT(e)){t.next();continue}let i=e.value.toLowerCase();if(i===`table`&&e.kind===Y.identifier){t.next();let e=Hw(t,r);e&&n.tables.push(e);continue}if(i===`tablepartial`&&e.kind===Y.identifier){t.next();let e=Hw(t,r);e&&r.set(e.name,e.columns);continue}if(i===`ref`&&e.kind===Y.identifier){t.next(),n.refs.push(...Jw(t));continue}if(i===`enum`&&e.kind===Y.identifier){t.next(),Qw(t,n.enums);continue}a(i)}return n}function Hw(e,t){let{schemaName:n,name:r}=oT(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=sT(e)),nT(i,$w(e)),!uT(e))return r===``?null:i;for(;!e.atEnd();){if(mT(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(sT(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=cT(e);continue}if(t===`note`&&r&&X(r,`{`)){e.next(),e.next(),i.comment=lT(e);continue}if(t===`indexes`&&r&&X(r,`{`)){e.next(),e.next(),i.indexes.push(...Kw(e));continue}if(r&&X(r,`{`)){e.next(),e.next(),dT(e);continue}}let r=Uw(e);r&&i.columns.push(r)}return i}function Uw(e){let t=e.peek();if(!t||!hT(t))return pT(e),null;e.next();let n={name:t.value,comment:``,typeName:``,typeSchemaName:``,primaryKey:!1,unique:!1,notNull:!1,autoIncrement:!1,default:``,inlineRefs:[]},r=Ww(e);return n.typeName=r.name,n.typeSchemaName=r.schemaName,eT(n,$w(e)),pT(e),n.typeName===``?null:n}function Ww(e){let{schemaName:t,name:n}=oT(e);if(n===``)return{name:``,schemaName:``};let r=[n],i=e.peek();i&&X(i,`(`)&&(e.next(),r.push(`(${Gw(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 Gw(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 Kw(e){let t=[];for(;!e.atEnd();){if(mT(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(...qw(e))):hT(n)?(e.next(),r.columnNames.push(n.value)):e.next(),tT(r,$w(e)),pT(e),r.columnNames.length!==0&&t.push(r)}return t}function qw(e){let t=[];for(;!e.atEnd();){let n=e.next();if(!n||X(n,`)`))break;hT(n)&&t.push(n.value)}return t}function Jw(e){let t=e.peek();if(t&&hT(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=Yw(e);return pT(e),t?[t]:[]}if(!uT(e))return pT(e),[];let r=[];for(;!e.atEnd();){if(mT(e))continue;let t=e.peek();if(!t)break;if(X(t,`}`)){e.next();break}let n=Yw(e);n?r.push(n):pT(e)}return r}function Yw(e){let t=Zw(e),n=Xw(e);if(n===``)return null;let r=Zw(e);return $w(e),t.tableName===``||r.tableName===``?null:{operator:n,left:t,right:r}}function Xw(e){let t=e.peek();return t?t.kind===Y.operator?(e.next(),t.value.replace(Rw,``)):X(t,`-`)?(e.next(),`-`):``:``}function Zw(e){let t=[],n=[];for(;!e.atEnd();){let r=e.peek();if(!r||!hT(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(...qw(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 Qw(e,t){let{schemaName:n,name:r}=oT(e);if($w(e),!uT(e)){pT(e);return}let i=[];for(;!e.atEnd();){if(mT(e))continue;let t=e.peek();if(!t)break;if(X(t,`}`)){e.next();break}hT(t)?(e.next(),i.push(t.value),$w(e)):e.next(),pT(e)}r!==``&&(t[n?`${n}.${r}`:r]=i,n&&!(r in t)&&(t[r]=i))}function $w(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(hT(t)&&Iw.test(t.value.toLowerCase())){r.push(t.value);continue}a=!0,i.push(t)}return o(),n}function eT(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=iT(n);break;case`default`:e.default=aT(n);break;case`ref`:{let t=rT(n);t&&e.inlineRefs.push(t);break}}})}function tT(e,t){t.forEach(({key:t,tokens:n})=>{switch(t){case`name`:e.name=iT(n);break;case`unique`:e.unique=!0;break;case`pk`:case`primary key`:e.primaryKey=!0}})}function nT(e,t){t.forEach(({key:t,tokens:n})=>{t===`note`&&(e.comment=iT(n))})}function rT(e){let t=Bw(e),n=Xw(t);if(n===``)return null;let r=Zw(t);return r.tableName===``?null:{operator:n,target:r}}function iT(e){let t=e.find(e=>e.kind===Y.string||e.kind===Y.quoted||e.kind===Y.identifier);return t?t.value:``}function aT(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(Lw,`''`)}'`;case Y.expression:case Y.number:case Y.identifier:case Y.quoted:return n.value;default:return t.map(e=>e.value).join(``)}}function oT(e){let t=sT(e);if(t===``)return{schemaName:``,name:``};let n=e.peek();return!n||!X(n,`.`)?{schemaName:``,name:t}:(e.next(),{schemaName:t,name:sT(e)})}function sT(e){let t=e.peek();return!t||!hT(t)?``:(e.next(),t.value)}function cT(e){let t=e.peek();return t&&(t.kind===Y.string||t.kind===Y.quoted)?(e.next(),t.value):``}function lT(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 uT(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 dT(e){let t=1;for(;!e.atEnd()&&t!==0;){let n=e.next();if(!n)break;X(n,`{`)?t+=1:X(n,`}`)&&--t}}function fT(e){if(uT(e)){dT(e);return}for(;!e.atEnd();){let t=e.next();if(!t||t.kind===Y.newline)return;if(X(t,`{`)){dT(e);return}}}function pT(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 mT(e){let t=e.peek();return t&&t.kind===Y.newline?(e.next(),!0):!1}function hT(e){return e.kind===Y.identifier||e.kind===Y.quoted}function X(e,t){return e.kind===Y.punctuation&&e.value===t}const gT={tables:[],refs:[],enums:{},skipped:[]};function _T(e,t,n){let r=zw(e),i=r.ok?r.model:gT,a=Ip({}),o=dh(i.tables.length*100);a.settings.width=o,a.settings.height=o;let{settings:s}=n?n(a):a,c=mw(i,t,s.database);return c.settings=s,Im(c)}const vT={[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)`},yT={[F.MariaDB]:`INT`,[F.MSSQL]:`int`,[F.MySQL]:`INT`,[F.Oracle]:`INTEGER`,[F.PostgreSQL]:`integer`,[F.SQLite]:`INTEGER`,[F.Databricks]:`INT`,[F.Snowflake]:`INT`},bT={[F.MariaDB]:`SMALLINT`,[F.MSSQL]:`smallint`,[F.MySQL]:`SMALLINT`,[F.Oracle]:`SMALLINT`,[F.PostgreSQL]:`smallint`,[F.SQLite]:`SMALLINT`,[F.Databricks]:`SMALLINT`,[F.Snowflake]:`SMALLINT`},xT={[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`},ST={[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`},CT={[F.MariaDB]:`DECIMAL`,[F.MSSQL]:`decimal`,[F.MySQL]:`DECIMAL`,[F.Oracle]:`DECIMAL`,[F.PostgreSQL]:`numeric`,[F.SQLite]:`DECIMAL`,[F.Databricks]:`DECIMAL`,[F.Snowflake]:`DECIMAL`},wT={[F.MariaDB]:`BOOLEAN`,[F.MSSQL]:`bit`,[F.MySQL]:`BOOLEAN`,[F.Oracle]:`BOOLEAN`,[F.PostgreSQL]:`boolean`,[F.SQLite]:`BOOLEAN`,[F.Databricks]:`BOOLEAN`,[F.Snowflake]:`BOOLEAN`},TT={[F.MariaDB]:`DATE`,[F.MSSQL]:`date`,[F.MySQL]:`DATE`,[F.Oracle]:`DATE`,[F.PostgreSQL]:`date`,[F.SQLite]:`DATE`,[F.Databricks]:`DATE`,[F.Snowflake]:`DATE`},ET={[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`},DT={[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`},OT={[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`},kT={[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)`},AT={[F.MariaDB]:`JSON`,[F.MSSQL]:`json`,[F.MySQL]:`JSON`,[F.Oracle]:`JSON`,[F.PostgreSQL]:`jsonb`,[F.SQLite]:`TEXT`,[F.Databricks]:`VARIANT`,[F.Snowflake]:`VARIANT`},jT={[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`},MT={[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`},NT={id:vT,string:vT,boolean:wT,int:yT,float:ST,positiveint:yT,nonnegativeint:yT,unsignedint:yT,short:bT,smallint:bT,positivefloat:ST,nonnegativefloat:ST,bigint:xT,biginteger:xT,long:xT,int8:xT,safeint:xT,decimal:CT,bigdecimal:CT,numeric:CT,money:CT,datetime:DT,datetimeiso:DT,localdatetime:DT,timestamp:DT,timestamptz:OT,date:TT,localdate:TT,time:ET,localtime:ET,timetz:ET,duration:kT,iso8601duration:kT,interval:kT,json:AT,jsonb:AT,jsonobject:AT,uuid:jT,guid:jT,byte:MT,bytes:MT,bytea:MT,binary:MT,email:vT,emailaddress:vT,url:vT,uri:vT,void:vT};function PT(e,t,n){let r=vT[t]??``,i=RT(n.enums,e);return i?IT(i,t)??r:RT(n.unions,e)?r:NT[e.toLowerCase()]?.[t]??r}function FT(e,t,n){let r=RT(t.enums,e);if(r)return n!==void 0&&IT(r,n)!==void 0?``:LT(e,r);let i=RT(t.unions,e);return i?LT(e,i):``}function IT(e,t){if(t===F.MySQL||t===F.MariaDB)return`ENUM(${e.map(e=>`'${e.replace(/'/g,`''`)}'`).join(`,`)})`}function LT(e,t){return` ${e}: ${t.join(` | `)}`}function RT(e,t){let n=e[t];return Array.isArray(n)&&n.length?n:void 0}function zT(e,t,n){let r=Ip({}),i=BT(e.tables),a=new Set(e.skipped),o=e.tables.map(o=>VT(r,t,e,n,o,i,a));return KT(r,t,o),nE(r,o),r}function BT(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 VT({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(HT(l)),f=yh(a.name),p=yh(a.comment),m=Jb({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=>{GT(t,h,UT(n,r,i,m.id,e,d.has(e)))}),e.tableIds.push(m.id),j(t).collection(`tableEntities`).setOne(m),h}function HT(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 UT({toWidth:e},t,n,r,i,a){let{named:o,nonNull:s}=i.typeRef,c=yh(i.name),l=yh(i.dataType)||PT(o,n,t),u=yh(i.default),d=WT(i,t,n);return Tx({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 WT(e,t,n){let{named:r,isList:i}=e.typeRef,a=[],o=yh(e.comment);return o&&a.push(o),i&&a.push(`list of ${r}`),`${a.join(` `)}${FT(r,t,n)}`.trim()}function GT(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 KT(e,t,n){let r=BT(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=qT(i,n);n.consumed=!0,r&&(r.consumed=!0);let o=!!r?.field.typeRef.isList;YT(e,t,a,{parent:n.target,child:n.source,field:n.field,childSide:!0,relationshipType:n.field.typeRef.nonNull?o?Gm.OneN:Gm.OneOnly:o?Gm.ZeroN:Gm.ZeroOne})}),i.filter(e=>e.field.typeRef.isList).forEach(r=>{if(r.consumed)return;let o=JT(i,r);if(r.consumed=!0,o){o.consumed=!0,eE(e,t,n,r);return}YT(e,t,a,{parent:r.source,child:r.target,field:r.field,childSide:!1,relationshipType:r.field.typeRef.nonNull?Gm.OneN:Gm.ZeroN})})}function qT(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 JT(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 YT(e,t,n,r){let{doc:i,collections:a}=e,{parent:o,child:s,relationshipType:c}=r,l=IS(o.columns);if(!l.length)return;let{startColumns:u,endColumns:d}=XT(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=Ob({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 XT(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=RS(i.columns,n),l=a.relationReferences[o],u=l?RS(r.columns,l):s[o]??null;!c||!u||(e.push(u),t.push(c))}),t.length)return{startColumns:e,endColumns:t}}let c=o?yh(a.name):he(r.name),l=new Set,u=[],d=[];return s.forEach(o=>{let s=ZT(c,r.name,o.name),f=QT(i.columns,s,e=>l.has(e)?!0:n.claimedColumnIds.has(e))??$T(e,t,i,a,o,s[0]);l.add(f.id),u.push(o),d.push(f)}),{startColumns:u,endColumns:d}}function ZT(e,t,n){return[`${e}${f_(n)}`,`${be(e)}_${be(n)}`,`${t}${f_(n)}`,`${be(t)}_${be(n)}`,`${e}Id`,`${be(e)}_id`]}function QT(e,t,n){for(let r of t){let t=RS(e,r);if(t&&!n(t.id))return t}return null}function $T({collections:e},{toWidth:t},n,r,i,a){let o=LS(n.columns,``,a),{dataType:s}=i,c=Tx({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 GT(e,n,c),c}function eE(e,t,n,r){let{doc:i,collections:a}=e,{toWidth:o}=t,s=r.source,c=r.target,l=IS(s.columns),u=IS(c.columns);if(!l.length||!u.length)return;let d=LS(n.map(e=>e.table),``,`${s.name}_${c.name}`),f=`Junction table inferred from ${s.name} <-> ${c.name}`,p=Jb({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),tE(e,t,m,s,l),tE(e,t,m,c,u)}function tE(e,{toWidth:t},n,r,i){let{doc:a,collections:o}=e,s=i.map(e=>{let i=LS(n.columns,``,`${he(r.name)}${f_(e.name)}`),{dataType:a}=e,s=Tx({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 GT(o,n,s),s}),c=Ob({identification:!0,relationshipType:Gm.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 nE({doc:e,collections:t},n){n.forEach(({source:n,table:r,columns:i})=>{n.indexes.forEach(n=>{let a=vy({name:yh(n.name),tableId:r.id,unique:n.unique}),o=[];n.fieldNames.forEach(e=>{let t=RS(i,e);t&&o.push(Fy({indexId:a.id,columnId:t.id,orderType:qm.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 rE=[`Query`,`Mutation`,`Subscription`],iE=[`PageInfo`],aE=[`Connection`,`Edge`],oE=[`_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`],sE=[`_Service`,`_Entity`,`_Any`,`_FieldSet`],cE=[`autoincrement`,`autoincrement()`],lE=/[_A-Za-z]/,uE=/[_0-9A-Za-z]/;function dE(e){try{return{ok:!0,model:mE(fE(e))}}catch(e){return{ok:!1,message:pE(e)}}}function fE(e){try{return qe(e)}catch(t){let n=NE(e);if(n===e)throw t;try{return qe(n)}catch{throw t}}}function pE(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 mE(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:gE(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(rE),c=[],l=[],u=new Map;for(let e of a.values()){if(kE(e.name,s)){l.push(e.name);continue}let t=_E(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 hE(c,u),{tables:c,enums:t,customScalars:r,unions:n,skipped:l}}function hE(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 gE(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||=jE(t);return}e.set(n,{name:n,comment:jE(t),interfaceNames:r,fieldNodes:[...t.fields??[]],directives:[...t.directives??[]]})}function _E(e,t){let n=vE(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(yE).filter(fe),indexes:[]};for(let t of e.directives)SE(a,t);return a}function vE(e){let t=new Set;return e.filter(e=>{let n=e.name.value;return!t.has(n)&&(t.add(n),!0)})}function yE(e){if(e.name.value.startsWith(`__`))return null;let t={name:e.name.value,comment:jE(e),typeRef:bE(e.type),primaryKey:!1,unique:!1,autoIncrement:!1,default:``,dataType:``,relationName:``,relationFields:[],relationReferences:[],hasArguments:(e.arguments??[]).length>0};for(let n of e.directives??[])xE(t,n);return t}function bE(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 xE(e,t){let n=t.name.value;if(n.startsWith(`db_`)){e.dataType=CE(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=wE(t,`value`);if(!n)break;let r=DE(n);cE.includes(r.toLowerCase())?e.autoIncrement=!0:e.default=r;break}case`map`:{let n=TE(t,`name`)||TE(t,`value`);n&&(e.name=n);break}case`relation`:{let n=TE(t,`name`)||TE(t,`value`);n&&(e.relationName=n);let r=wE(t,`fields`);r&&(e.relationFields=OE(r));let i=wE(t,`references`);i&&(e.relationReferences=OE(i));break}case`column`:{let n=TE(t,`name`);n&&(e.name=n);let r=TE(t,`dataType`);r&&(e.dataType=r);let i=wE(t,`default`);i&&(e.default=DE(i));let a=EE(t,`autoIncrement`);a!==null&&(e.autoIncrement=a);let o=EE(t,`unique`);o!==null&&(e.unique=o);let s=EE(t,`primaryKey`);s!==null&&(e.primaryKey=s);break}}}function SE(e,t){switch(t.name.value){case`map`:{let n=TE(t,`name`)||TE(t,`value`);n&&(e.name=n);break}case`table`:{let n=TE(t,`name`);n&&(e.name=n);let r=wE(t,`comment`);r&&(e.comment=DE(r));break}case`index`:{let n=wE(t,`fields`),r=n?OE(n):[];if(!r.length)break;let i={name:TE(t,`name`),unique:EE(t,`unique`)??!1,fieldNames:r};e.indexes.push(i);break}}}function CE(e,t){let n=e.slice(3),r=t.arguments??[];return r.length?`${n}(${r.map(e=>DE(e.value)).join(`, `)})`:n}function wE(e,t){let n=(e.arguments??[]).find(e=>e.name.value===t);return n?n.value:null}function TE(e,t){let n=wE(e,t);return n?DE(n):``}function EE(e,t){let n=wE(e,t);return n?DE(n)===`true`:null}function DE(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(DE).join(`, `);default:return``}}function OE(e){return(e.kind===Ge.LIST?e.values:[e]).map(DE).filter(e=>e!==``)}function kE(e,t){return t.has(e)||e.startsWith(`__`)||sE.includes(e)||iE.includes(e)||aE.some(t=>AE(e,t))||oE.some(t=>AE(e,t))}function AE(e,t){return e.length>t.length&&e.endsWith(t)}function jE(e){if(e.description)return ME(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 ME(t.join(` `))}function ME(e){return e.replace(/\s+/g,` `).trim()}function NE(e){let t=``,n=0,r=!1;for(;n<e.length;){let i=e[n];if(i===`#`){let r=IE(e,n);t+=e.slice(n,r),n=r;continue}if(i===`"`){let r=LE(e,n);t+=e.slice(n,r),n=r;continue}if(i!==`@`||!lE.test(e[n+1]??``)){t+=i,n+=1;continue}let a=FE(e,n+1),o=e.slice(n+1,a);for(;e[a]===`.`&&lE.test(e[a+1]??``);){let t=FE(e,a+1);o+=`_${e.slice(a+1,t)}`,a=t,r=!0}t+=`@${o}`,n=a;let s=zE(e,n);if(e[s]===`(`){t+=e.slice(n,s+1),n=s+1;for(let i=0;n<e.length;i++){let a=zE(e,n);if(t+=e.slice(n,a),n=a,e[n]===`)`||n>=e.length)break;let o=PE(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(RE(e,zE(e,n)),n+1);t+=e.slice(n,s),n=s}}}return r?t:e}function PE(e,t){if(!lE.test(e[t]??``))return-1;let n=zE(e,FE(e,t));return e[n]===`:`?n:-1}function FE(e,t){let n=t;for(;n<e.length&&uE.test(e[n]);)n+=1;return n}function IE(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:`]`},KE=e=>t=>e===t,qE=e=>t=>e.test(t),Z={doubleQuote:KE(GE.doubleQuote),dash:KE(GE.dash),slash:KE(GE.slash),asterisk:KE(GE.asterisk),newLine:KE(GE.newLine),singleQuote:KE(GE.singleQuote),backtick:KE(GE.backtick),whiteSpace:qE(GE.whiteSpace),string:qE(GE.string),breakString:qE(GE.breakString),equal:KE(GE.equal),period:KE(GE.period),comma:KE(GE.comma),semicolon:KE(GE.semicolon),leftParent:KE(GE.leftParent),rightParent:KE(GE.rightParent),leftBracket:KE(GE.leftBracket),rightBracket:KE(GE.rightBracket)};function JE(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:WE.leftParent,value:i}),n++;continue}if(Z.rightParent(i)){t.push({type:WE.rightParent,value:i}),n++;continue}if(Z.comma(i)){t.push({type:WE.comma,value:i}),n++;continue}if(Z.period(i)){t.push({type:WE.period,value:i}),n++;continue}if(Z.equal(i)){t.push({type:WE.equal,value:i}),n++;continue}if(Z.semicolon(i)){t.push({type:WE.semicolon,value:i}),n++;continue}if(Z.rightBracket(i)){t.push({type:WE.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:WE.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:WE.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:WE.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:WE.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:WE.string,value:a});continue}n++}return t}var YE=`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(`.`),XE=`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(`.`),ZE=`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(`.`),QE=`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(`.`),$E=`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(`.`),eD=`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(`.`),tD=`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(`.`),nD=`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(`.`),rD=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}},iD=rD(WE.string),aD=rD(WE.equal),oD=rD(WE.period),sD=rD(WE.comma),cD=rD(WE.semicolon),lD=rD(WE.leftParent),uD=rD(WE.rightParent);WE.leftBracket,WE.rightBracket;var dD=Q(`CREATE`),fD=Q(`ALTER`),pD=Q(`DROP`),mD=Q(`USE`),hD=Q(`RENAME`),gD=Q(`DELETE`),_D=Q(`SELECT`),vD=Q(`TABLE`),yD=Q(`INDEX`),bD=Q(`UNIQUE`),xD=Q(`ADD`),SD=Q(`PRIMARY`),CD=Q(`KEY`),wD=Q(`CONSTRAINT`),TD=Q(`FOREIGN`),ED=Q(`NOT`),DD=Q(`NULL`),OD=Q(`DEFAULT`),kD=Q(`COMMENT`),AD=Q(`REFERENCES`),jD=Q(`ASC`),MD=Q(`DESC`),ND=Q(`ON`),PD=Q(`AUTO_INCREMENT`),FD=Q(`AUTOINCREMENT`),ID=Q(`IF`),LD=Q(`EXISTS`),RD=Q(`ONLY`),zD=Q(`IS`),BD=Q(`COLUMN`),VD=Q(`CHARACTER`),HD=Q(`SET`),UD=Q(`COLLATE`),WD=Q(`ENFORCED`),GD=Q(`RELY`),KD=Q(`NORELY`),qD=Q(`DEFERRABLE`),JD=Q(`INITIALLY`),YD=Q(`DEFERRED`),XD=Q(`IMMEDIATE`),ZD=Q(`IDENTITY`),QD=Q(`FUNCTION`),$D=Q(`CLUSTER`),eO=Q(`BY`),tO=e=>{let t=WD(e),n=GD(e),r=KD(e),i=qD(e),a=JD(e),o=YD(e),s=XD(e);return e=>t(e)||n(e)||r(e)||i(e)||a(e)||o(e)||s(e)},nO=[`ARRAY`,`MAP`,`STRUCT`],rO=e=>{let t=iD(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||!nO.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}},iO=e=>{let t=PD(e),n=FD(e),r=ZD(e);return e=>t(e)||n(e)||r(e)},aO=e=>{let t=$D(e),n=eO(e);return e=>t(e)&&n(e+1)},oO=e=>{let t=kD(e),n=ND(e);return e=>t(e)&&n(e+1)},sO=e=>{let t=oO(e),n=vD(e);return e=>t(e)&&n(e+2)},cO=e=>{let t=oO(e),n=BD(e);return e=>t(e)&&n(e+2)},lO=e=>{let t=dD(e),n=fD(e),r=pD(e),i=mD(e),a=hD(e),o=gD(e),s=_D(e),c=oO(e);return e=>t(e)||n(e)||r(e)||i(e)||a(e)||o(e)||s(e)||c(e)},uO=[`OR`,`REPLACE`,`TRANSIENT`,`TEMPORARY`,`TEMP`,`LOCAL`,`GLOBAL`,`VOLATILE`,`UNLOGGED`,`HYBRID`,`ICEBERG`,`DYNAMIC`,`EXTERNAL`],dO=e=>{let t=dD(e),n=vD(e),r=iD(e),i=QD(e),a=ID(e),o=ED(e),s=LD(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||!uO.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)}},fO=e=>{let t=VD(e),n=HD(e);return e=>t(e)&&n(e+1)},pO=e=>{let t=dO(e);return e=>t(e)>0},mO=e=>{let t=dD(e),n=yD(e),r=bD(e);return e=>t(e)&&r(e+1)&&n(e+2)},hO=e=>{let t=dD(e),n=yD(e),r=mO(e);return e=>t(e)&&n(e+1)||r(e)},gO=e=>{let t=fD(e),n=vD(e);return e=>t(e)&&n(e+1)},_O=e=>{let t=iD(e),n=oD(e);return e=>{if(!t(e))return 0;let r=e+1;for(;n(r)&&t(r+1);)r+=2;return r-e}},vO=e=>{let t=gO(e),n=RD(e),r=xD(e),i=wD(e),a=iD(e),o=_O(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}}},yO=e=>{let t=vO(e);return e=>t(e).length},bO=e=>{let t=vO(e);return e=>t(e).only},xO=e=>{let t=yO(e),n=SD(e),r=CD(e);return e=>{let i=t(e);return i>0&&n(e+i)&&r(e+i+1)}},SO=e=>{let t=yO(e),n=TD(e),r=CD(e);return e=>{let i=t(e);return i>0&&n(e+i)&&r(e+i+1)}},CO=e=>{let t=yO(e),n=bD(e);return e=>{let r=t(e);return r>0&&n(e+r)}},wO=Array.from(new Set([...YE,...XE,...ZE,...QE,...$E,...eD,...tD,...nD].map(e=>e.toUpperCase()))),TO=(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})(wO),EO=e=>{let t=iD(e),n=lD(e),r=uD(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 TO.get(i)??[]){let t=a(n,e);if(t)return t}return+!!wO.includes(i)}};function DO(e,t){let n=lO(e),r=iD(e),i=lD(e),a=uD(e),o=oD(e),s=cD(e),c=aD(e),l=kD(e),u=aO(e),d=dO(e),f=()=>t.value<e.length,p={type:HE.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}=OO(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 OO(e,t){let n=iD(e),r=lD(e),i=uD(e),a=sD(e),o=wD(e),s=yD(e),c=SD(e),l=TD(e),u=iO(e),d=bD(e),f=DD(e),p=ED(e),m=OD(e),h=kD(e),g=MD(e),ee=jD(e),_=CD(e),te=aD(e),ne=fO(e),re=UD(e),ie=tO(e),ae=EO(e),oe=rO(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=kO(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:UE.asc};for(;se()&&!i(t.value);)n(t.value)&&!g(t.value)&&!ee(t.value)&&(r.name=y.value),g(t.value)&&(r.sort=UE.desc),a(t.value)&&(s.push(r),r={name:``,sort:UE.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 kO(e,t){let n=iD(e),r=lD(e),i=uD(e),a=AD(e),o=oD(e),s=CD(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 AO(e,t){let n=lO(e),r=cD(e),i=iD(e),a=wD(e),o=oD(e),s=vD(e),c=TD(e),l=bO(e)(t.value),u=()=>t.value<e.length,d={type:HE.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=kO(e,t);n&&(d.columnNames=n.columnNames,d.refTableName=n.refTableName,d.refColumnNames=n.refColumnNames);continue}t.value++}return d}function jO(e,t){let n=lO(e),r=cD(e),i=iD(e),a=lD(e),o=uD(e),s=wD(e),c=SD(e),l=oD(e),u=CD(e),d=vD(e),f=bO(e)(t.value),p=()=>t.value<e.length,m={type:HE.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 MO(e,t){let n=lO(e),r=cD(e),i=iD(e),a=wD(e),o=oD(e),s=vD(e),c=bD(e),l=lD(e),u=uD(e),d=bO(e)(t.value),f=()=>t.value<e.length,p={type:HE.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 NO(e,t){let n=lO(e),r=iD(e),i=oD(e),a=cD(e),o=zD(e),s=DD(e),c=()=>t.value<e.length,l={type:HE.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 PO(e,t){let n=lO(e),r=iD(e),i=oD(e),a=cD(e),o=zD(e),s=DD(e),c=()=>t.value<e.length,l={type:HE.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 FO(e,t){let n=lO(e),r=cD(e),i=bD(e),a=iD(e),o=lD(e),s=uD(e),c=sD(e),l=yD(e),u=ND(e),d=MD(e),f=jD(e),p=mO(e),m=()=>t.value<e.length,h={type:HE.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:UE.asc};for(;m()&&!s(t.value);)a(t.value)&&!d(t.value)&&!f(t.value)&&(r.name=n.value),d(t.value)&&(r.sort=UE.desc),c(t.value)&&(h.columns.push(r),r={name:``,sort:UE.asc}),n=e[++t.value];!h.columns.includes(r)&&r.name!==``&&h.columns.push(r),t.value++}continue}t.value++}return h}function IO(e){let t=[],n={value:0},r=()=>n.value<e.length,i=pO(e),a=hO(e),o=xO(e),s=SO(e),c=CO(e),l=sO(e),u=cO(e);for(;r();){if(i(n.value)){t.push(DO(e,n));continue}if(a(n.value)){t.push(FO(e,n));continue}if(o(n.value)){t.push(jO(e,n));continue}if(s(n.value)){t.push(AO(e,n));continue}if(c(n.value)){t.push(MO(e,n));continue}if(l(n.value)){t.push(PO(e,n));continue}if(u(n.value)){t.push(NO(e,n));continue}n.value++}return t}var LO=e=>IO(JE(e));function RO(e,t,n){let r=Ip({}),i=BO(zO(LO(e))),a=dh(i.length*100);return r.settings.width=a,r.settings.height=a,i.forEach(e=>VO(r,e,t)),HO(r,i),UO(r,i),Im(n?n(r):r)}function zO(e){let t={tables:[],indexes:[],primaryKeys:[],foreignKeys:[],uniques:[],tableComments:[],columnComments:[]};for(let n of e)switch(n.type){case HE.createTable:n.name&&t.tables.push(n);break;case HE.createIndex:n.tableName&&n.columns.length&&t.indexes.push(n);break;case HE.alterTableAddPrimaryKey:n.name&&n.columnNames.length&&t.primaryKeys.push(n);break;case HE.alterTableAddForeignKey:n.name&&n.columnNames.length&&n.refTableName&&n.refColumnNames.length&&n.columnNames.length===n.refColumnNames.length&&t.foreignKeys.push(n);break;case HE.alterTableAddUnique:n.name&&n.columnNames.length&&t.uniques.push(n);break;case HE.commentOnTable:n.name&&t.tableComments.push(n);break;case HE.commentOnColumn:n.tableName&&n.columnName&&t.columnComments.push(n)}return t}function BO({tables:e,indexes:t,primaryKeys:n,foreignKeys:r,uniques:i,tableComments:a,columnComments:o}){return t.forEach(t=>{let n=RS(e,t.tableName);n&&n.indexes.push({name:t.name,unique:t.unique,columns:t.columns})}),n.forEach(t=>{let n=RS(e,t.name);n&&t.columnNames.forEach(e=>{let t=RS(n.columns,e);t&&(t.primaryKey=!0)})}),i.forEach(t=>{let n=RS(e,t.name);n&&t.columnNames.forEach(e=>{let t=RS(n.columns,e);t&&(t.unique=!0)})}),r.forEach(t=>{let n=RS(e,t.name);n&&n.foreignKeys.push({columnNames:t.columnNames,refTableName:t.refTableName,refColumnNames:t.refColumnNames})}),a.forEach(({name:t,comment:n})=>{let r=RS(e,t);r&&(r.comment=n)}),o.forEach(({tableName:t,columnName:n,comment:r})=>{let i=RS(e,t);if(!i)return;let a=RS(i.columns,n);a&&(a.comment=r)}),e}function VO({doc:e,collections:t},n,{toWidth:r}){let i=Jb({name:n.name,comment:n.comment,ui:{widthName:V(r(n.name)),widthComment:V(r(n.comment))}});n.columns.forEach(e=>{let n=Tx({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 HO({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=RS(r,n.name);if(!a)return;let o=i.selectByIds(a.columnIds);n.foreignKeys.forEach(n=>{let s=RS(r,n.refTableName);if(!s)return;let c=i.selectByIds(s.columnIds),l=[],u=[];n.refColumnNames.forEach(e=>{let t=RS(c,e);t&&l.push(t)}),n.columnNames.forEach(e=>{let t=RS(o,e);t&&(u.push(t),z(t.ui.keys,R.primaryKey)?t.ui.keys|=R.foreignKey:t.ui.keys=R.foreignKey)});let d=Ob({identification:!u.some(e=>!(z(e.ui.keys,R.primaryKey)&&z(e.ui.keys,R.foreignKey))),relationshipType:Gm.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 UO({doc:e,collections:t},n){let r=j(t).collection(`tableEntities`).selectByIds(e.tableIds);n.forEach(n=>{n.indexes.forEach(i=>{let a=RS(r,n.name);if(!a)return;let o=j(t).collection(`tableColumnEntities`).selectByIds(a.columnIds),s=[],c=vy({name:i.name,tableId:a.id,unique:i.unique});i.columns.forEach(e=>{let t=RS(o,e.name);if(!t)return;let n=Fy({indexId:c.id,columnId:t.id,orderType:e.sort===UE.asc?qm.ASC:qm.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 WO({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 GO({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 KO({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(Yb({id:n,ui:{x:e.x,y:e.y,zIndex:e.zIndex,color:t.ui.color}}),rx({id:n,value:t.name}),ax({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(Ex(r),Ax({...r,value:t.name}),Px({...r,value:t.dataType}),Ix({...r,value:t.default}),Mx({...r,value:t.comment}),Bx({...r,value:z(t.options,L.primaryKey)}),Wx({...r,value:z(t.options,L.notNull)}),Hx({...r,value:z(t.options,L.unique)}),Rx({...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=qO(e.start.columnIds,d),i=qO(e.end.columnIds,d);!r||!i||o.push(kb({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=qO(e.indexColumns.map(({columnId:e})=>e),d);if(!n)continue;let r=x();o.push(yy({id:r,tableId:t}),Cy({id:r,tableId:t,value:e.name}),Ty({id:r,tableId:t,value:e.unique})),e.indexColumns.forEach(({orderType:e},i)=>{let a=x(),s=n[i];o.push(Ly({id:a,indexId:r,tableId:t,columnId:s}),Uy({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(eb({id:n,ui:{x:t.x,y:t.y,zIndex:t.zIndex,color:e.ui.color,width:e.ui.width,height:e.ui.height}}),cb({id:n,value:e.value}))}return{actions:o,tableIds:s,memoIds:c}}function qO(e,t){let n=[];for(let r of e){let e=t.get(r);if(!e)return null;n.push(e)}return n}function JO(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]})}}})),JO(e,t,n)),n}function YO(e){return Object.entries(e).reduce((e,[t,n])=>(n===r_.table?e.tableIds.push(t):n===r_.memo&&e.memoIds.push(t),e),{tableIds:[],memoIds:[]})}const XO=e=>function*(){yield $_(),yield nv({value:e})},ZO=e=>function*(){yield iv(),yield ov({value:e})},QO=(e,t)=>function*({editor:{selectedMap:n},settings:{zoomLevel:r}}){let{tableIds:i,memoIds:a}=YO(n),o=e/r,s=t/r;i.length&&(yield Zb({ids:i,movementX:o,movementY:s})),a.length&&(yield nb({ids:a,movementX:o,movementY:s}))},$O=()=>function*(){yield wS(),yield hS()},ek=(e,t)=>function*(n){yield*nk(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})},tk=({tableIds:e,memoIds:t,offset:n,escapeCollision:r})=>function*(i){yield*nk(i,{input:ak(i,{tableIds:e??[],memoIds:t??[]}),offset:{x:Ue(n.x,4),y:Ue(n.y,4)},escapeCollision:r})};function*nk(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}=KO(t,ik(xS({entities:[...t.tables.map(rk),...t.memos.map(rk)],offset:n,escapeCollision:r,settings:i,tables:c.selectByIds(a),memos:l.selectByIds(o),findSource:e=>c.selectById(e)??l.selectById(e)})));yield sk(),yield u,yield Y_({...d.reduce((e,t)=>(e[t]=r_.table,e),{}),...f.reduce((e,t)=>(e[t]=r_.memo,e),{})})}const rk=({sourceId:e,ui:{x:t,y:n,zIndex:r}})=>({sourceId:e,ui:{x:t,y:n,zIndex:r}});function ik(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 ak(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:WO(e,s),indexes:GO(e,s)}}const ok=e=>function*(t){let{doc:{tableIds:n,memoIds:r},collections:i}=t,a={...j(i).collection(`tableEntities`).selectByIds(n).reduce((n,r)=>{let i=wh(r,t).width,a=Oh(r);return FS(e,{x:r.ui.x+i/2-15,y:r.ui.y+a/2-15,w:15,h:15})&&(n[r.id]=r_.table),n},{}),...j(i).collection(`memoEntities`).selectByIds(r).reduce((t,n)=>{let r=nh(n),i=rh(n);return FS(e,{x:n.ui.x+r/2-15,y:n.ui.y+i/2-15,w:15,h:15})&&(t[n.id]=r_.memo),t},{})};yield sk(),He(a)||(yield Y_(a))},sk=()=>function*(){yield q_(),yield fv()},ck=(e,t)=>function*(n){let{editor:{focusTable:r}}=n;r&&(e===i_.Tab&&!t&&(N_(r.focusType)&&j_(n)&&!b_(n)||!N_(r.focusType)&&x_(n)&&C_(n))?yield AS(r.tableId):yield mv({moveKey:e,shiftKey:t}))},lk=e=>function*({editor:t}){t.drawRelationship?.relationshipType===e?yield Mv():yield Ov({relationshipType:e})},uk=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 Ex({tableId:e,id:t}),yield Bx({tableId:e,id:t,value:!0}),yield uv({tableId:e,columnId:t,focusType:W.columnName,$mod:!1,shiftKey:!1})}yield Av({tableId:e})}},dk=e=>function*({editor:{selectedMap:t},collections:n}){let{tableIds:r,memoIds:i}=YO(t),a=j(n).collection(`tableEntities`).selectByIds(r),o=j(n).collection(`memoEntities`).selectByIds(i);yield a.map(t=>sx({id:t.id,color:e,prevColor:t.ui.color})),yield o.map(t=>ub({id:t.id,color:e,prevColor:t.ui.color}))},fk=e=>function*({settings:t},n){yield XO(RO(e,n,e=>(e.settings={...e.settings,..._e(oe(t),[`width`,`height`,`originX`,`originY`,`scrollTop`,`scrollLeft`,`zoomLevel`])},e))),yield dx()},pk=e=>function*({settings:t},n){yield XO(VE(e,n,e=>(e.settings={...e.settings,..._e(oe(t),[`width`,`height`,`originX`,`originY`,`scrollTop`,`scrollLeft`,`zoomLevel`])},e))),yield dx()},mk=e=>function*({settings:t},n){yield XO(_T(e,n,e=>(e.settings={...e.settings,..._e(oe(t),[`width`,`height`,`originX`,`originY`,`scrollTop`,`scrollLeft`,`zoomLevel`])},e))),yield dx()},hk=e=>function*({settings:t},n){yield XO(sw(e,n,e=>(e.settings={...e.settings,..._e(oe(t),[`width`,`height`,`originX`,`originY`,`scrollTop`,`scrollLeft`,`zoomLevel`])},e))),yield dx()},gk=e=>function*({editor:{focusTable:t}}){!t||!t.columnId||(yield Kv({tableId:t.tableId,columnIds:e?[...t.selectColumnIds]:[t.columnId]}))},_k=(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=>Kx({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 jS(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[Ex(a),Ax({...a,value:r.name}),Px({...a,value:r.dataType}),Ix({...a,value:r.default}),Mx({...a,value:r.comment}),Bx({...a,value:z(r.options,L.primaryKey)}),Wx({...a,value:z(r.options,L.notNull)}),Hx({...a,value:z(r.options,L.unique)}),Rx({...a,value:z(r.options,L.autoIncrement)}),Kx({...a,targetId:e}),uv({tableId:t,columnId:i,focusType:W.columnName,$mod:!0,shiftKey:!1})]}yield Kv({tableId:t,columnIds:l})},vk=e=>function*(t){let{columnIds:n,relationshipIds:r}=JO([{columnId:e,relationshipIds:[]}],t).reduce((e,{columnId:t,relationshipIds:n})=>(e.columnIds.push(t),e.relationshipIds.push(...n),e),{columnIds:[],relationshipIds:[]});yield Iv({columnIds:xe(n)}),yield Rv({relationshipIds:xe(r)})},yk=()=>function*(){yield Iv({columnIds:[]}),yield Rv({relationshipIds:[]})},bk={loadJsonAction$:XO,initialLoadJsonAction$:ZO,moveAllAction$:QO,removeSelectedAction$:$O,pasteEntitiesAction$:ek,duplicateAction$:tk,dragSelectAction$:ok,unselectAllAction$:sk,focusMoveTableAction$:ck,drawStartRelationshipAction$:lk,drawStartAddRelationshipAction$:uk,changeColorAllAction$:dk,loadSchemaSQLAction$:fk,loadSchemaGraphQLAction$:pk,loadSchemaDBMLAction$:mk,loadSchemaAMLAction$:hk,dragstartColumnAction$:gk,dragoverColumnAction$:_k,columnKeyHoverStartAction$:vk,columnKeyHoverEndAction$:yk},xk={addIndexAction$:e=>function*(){yield yy({id:x(),tableId:e})},changeIndexUniqueAction$:e=>function*({collections:t}){let n=j(t).collection(`indexEntities`).selectById(e);n&&(yield Ty({id:e,tableId:n.tableId,value:!n.unique}))}},Sk={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 Ly({id:i.id,indexId:e,tableId:r.tableId,columnId:t}):yield Ly({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 zy({id:t.id,indexId:e,tableId:r.tableId})},changeIndexColumnOrderTypeAction$:e=>function*({collections:t}){let n=j(t).collection(`indexColumnEntities`).selectById(e);n&&(yield Uy({id:e,indexId:n.indexId,columnId:n.columnId,value:n.orderType===qm.ASC?qm.DESC:qm.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 Vy({id:e,indexId:r.indexId,tableId:i.tableId,targetId:t}))}},Ck={};function wk({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=Zg(a,o),c=Xg({...a,zoomLevel:i},s);return{movementX:Ue(o.x-c.x,4),movementY:Ue(o.y-c.y,4)}}const Tk={changeZoomLevelAction$:e=>function*(t){let{settings:{originX:n,originY:r}}=t,{movementX:i,movementY:a}=wk(t,fh(e));yield $h({value:e}),yield ag({originX:n+i,originY:r+a})},streamZoomLevelAction$:e=>function*(t){let{settings:{zoomLevel:n}}=t,{movementX:r,movementY:i}=wk(t,fh(n+e));yield tg({value:e}),yield sg({movementX:r,movementY:i})}},Ek=Object.freeze({...py,...bk,...Oy,...xk,...Ky,...Sk,..._b,..._S,...Ib,...Ck,...Pg,...Tk,...mx,...ES,...Yx,...PS}),Dk=`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(`,`),Ok=B([`settings.changeZoomLevel`,`settings.streamZoomLevel`,`settings.scrollTo`,`settings.streamScrollTo`,`settings.changeDatabase`,`settings.changeCanvasType`,`settings.changeLanguage`,`settings.changeTableNameCase`,`settings.changeColumnNameCase`,`settings.changeBracketType`]),kk=[...Dk.filter(e=>!Ok(e))],Ak=[`editor.sharedMouseTracker`,`editor.sharedFocusTracker`,`editor.sharedSelectionTracker`,`editor.sharedDragSelectTracker`];[...Dk,...Ak];const jk=[`table.move`,`memo.move`],Mk=[`table.changeColor`,`memo.changeColor`],Nk=[`settings.streamZoomLevel`,`settings.streamScrollTo`],Pk=[...Object.keys(uS)],Fk=[...Object.keys(lS),...Pk];function Ik(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}function Lk(e,t,n){Ik(e,t),t.set(e,n)}function Rk(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 zk(e,t){return e.get(Rk(e,t))}function Bk(e,t,n){return e.set(Rk(e,t),n),n}var Vk=new WeakMap,Hk=class{constructor(){Lk(this,Vk,0),si(this,`getVersion`,()=>zk(Vk,this)),si(this,`getNextVersion`,()=>this.getVersion()+1),si(this,`merge`,e=>(!y(e)||!Number.isInteger(e)||this.getVersion()<e&&Bk(Vk,this,e),this))}};function Uk(e){return{...e,clock:new Hk}}function Wk({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=>Wk(e,{commands:[...i],cursor:a,limit:o})})}const Gk=Ae(e=>!!e.length),Kk=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(Gk)},qk=`@@none-stream`,Jk=(e,t)=>n=>{let r=t.find(([,e])=>e(n));return r?r[0]:e(n)?n:qk},Yk=(e,t=[],n=Oe(200))=>{let r=B(e),i=t.map(([e,t])=>[e,B(t)]),a=Jk(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(Gk,Me(e=>a(e[0].type)),Fe(e=>e.key===qk?e:e.pipe(De(e.pipe(n)),Ne(e=>e.flat()))))},Xk=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(Gk)};B(Pk),B(Ak);const Zk=(e,t=[])=>{let n=B(kk),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(Gk)};function Qk(e,t){return Ou({context:e,state:{...Ip({}),editor:a_(),lww:{}},reducers:{...fy,...px,...Jx,...gb,...Fb,...Ng,...Dy,...Gy},enableObservable:t??!0})}const $k=new WeakMap;function eA(e){let t=$k.get(e);return t||(t={boxes:new Map,entries:new Map},$k.set(e,t)),t}function tA(e,t){return{left:e.left[t],top:e.top[t],right:e.right[t],bottom:e.bottom[t]}}function nA(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 rA(e,t){return e.left===t.left&&e.top===t.top&&e.right===t.right&&e.bottom===t.bottom}function iA(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 aA(e,t){return e.left<=t.right&&e.right>=t.left&&e.top<=t.bottom&&e.bottom>=t.top}function oA(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(aA(n,e))return!0;return!1}function sA(){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 cA(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 lA(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=tA(t,e);if(r.set(o,s),a)continue;let c=n.get(o);c?rA(c,s)||i.push(nA(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 uA(e){return 50+e%4*12}function dA(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 fA(e,t){return t===null||t<=0?e:Math.max(36,Math.min(e,t/2-1))}function pA(e){return e===I.left||e===I.right}function mA(e){return e===I.right||e===I.bottom?1:-1}function hA(e,t,n){let r=mA(t);return pA(t)?{x:e.x+r*n,y:e.y}:{x:e.x,y:e.y+r*n}}function gA(e){let{start:t,end:n}=e,[r,i]=zg(e),a=dA(t,n),o=fA(uA(r),a),s=fA(uA(i),a);return{m:hA(t,t.direction,o),l:hA(n,n.direction,s),startStub:o,endStub:s}}function _A(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=Mh(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 vA(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 yA(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)&&vA(n.x,n.y,r.x,r.y,u,f,d,p)){i++;break}}}return i}function bA(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 xA(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 SA(e,t,n,r,i){let a=pA(t),o=pA(r),s=mA(t),c=mA(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=xA(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=xA(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=xA(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=xA(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=xA(e.x,n.x,i,!0,l,u).filter(t=>(t-e.x)*s>=0).slice(0,4),r=xA(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=xA(e.y,n.y,i,!1,l,u).filter(t=>(t-e.y)*s>=0).slice(0,4),r=xA(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 CA(e,t,n,r,i,a,o){let s=SA(e,t,n,r,i),c=null,l=1/0;for(let e of s){let t=yA(e.points,i,a,o)*1e5+e.bends*36+bA(e.points);t<l&&(l=t,c=e.points)}return c||(pA(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 wA=[10,7,4],TA=wA[wA.length-1]-.5;function EA(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 DA(e,t){return e.relationshipId===t.relationshipId?e.index-t.index:e.relationshipId<t.relationshipId?-1:1}function OA(e){let t=e.points[e.index-1];return e.vertical?t.y:t.x}function kA(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 AA(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 jA(e,t,n,r){let i=[],a=[];for(let t of EA(e))(t.vertical?i:a).push(t);for(let e of[i,a]){kA(e);let i=e.filter(e=>e.movable);if(i.length<2)continue;i.sort((e,t)=>e.coordinate-t.coordinate||DA(e,t));let a=[],o=()=>{a.length>1&&MA(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 MA(e,t,n,r,i){e.sort((e,t)=>e.low-t.low||DA(e,t));let a=[],o=-1/0,s=()=>{a.length>1&&RA(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 NA(e,t){return e.high+10>t.low&&t.high+10>e.low}function PA(e,t){return Math.abs(e.coordinate-t.coordinate)>=TA?0:Math.max(0,Math.min(e.high,t.high)-Math.max(e.low,t.low))}function FA(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+=PA(i,e[t]);for(let e of t)n+=PA(i,e)}return n}function IA(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+TA,o=[];for(let e of t)e.coordinate<r-a||e.coordinate>i+a||n.has(e)||o.push(e);return o}function LA(e){let t=[];for(let n of e){let e=t.find(e=>!NA(e[e.length-1],n));e?e.push(n):t.push([n])}return t}function RA(e,t,n,r,i){if(!i){zA(e,t,n,r);return}if(BA(e,i))return;let a=e.map(e=>e.coordinate);zA(e,t,n,r),VA(e,a,i)}function zA(e,t,n,r){let i=IA(e,t),a=FA(e,i);if(!a)return;let o=new Map,s=e.map(e=>(o.set(e,JA(e,n,r)),e.coordinate)),c=s.reduce((e,t)=>e+t,0)/s.length,l=HA(e),u=null,d=1/0;for(let t of wA){let a=null,f=1/0;for(let p of l){qA(p,t,c,o,n,r);let l=FA(e,i);if(l)l<d&&(u=e.map(e=>e.coordinate),d=l);else{let t=GA(e,s);t<f&&(f=t,a=e.map(e=>e.coordinate))}KA(e,s)}if(a){KA(e,a);return}}u&&d<a&&KA(e,u)}function BA(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 KA(e,n),!0}function VA(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 HA(e){let t=LA(e),n=UA(t);return t.length===e.length?n:[...n,...UA(e.map(e=>[e]))]}function UA(e){let t=(e,t)=>e.reduce((e,n)=>e+t(n),0)/e.length,n=[...e].sort((e,n)=>t(e,OA)-t(n,OA)||t(e,WA)-t(n,WA)||DA(e[0],n[0])),r=[...e].sort((e,n)=>t(e,WA)-t(n,WA)||t(e,OA)-t(n,OA)||DA(e[0],n[0]));return n.every((e,t)=>e===r[t])?[n]:[n,r]}function WA(e){return e.coordinate}function GA(e,t){return e.reduce((e,n,r)=>e+Math.abs(n.coordinate-t[r]),0)}function KA(e,t){e.forEach((e,n)=>{AA(e,t[n]),e.coordinate=t[n]})}function qA(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=>NA(l,e)))return!1;let c=o+r*t;return AA(l,c),QA(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||AA(l,l.coordinate)}})}function JA(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:yA(e.points,t,r?.[0]??``,r?.[1]??``),crossed:$A(e.points),own:i,intruded:ZA(e.points,t,i),beforeDelta:YA(e,-1),afterDelta:YA(e,1)}}function YA(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 XA(e,t){return Math.abs(t)>=.5&&e*t<=0}function ZA(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(vA(i.x,i.y,c.x,c.y,n,a,o,s)){r++;break}}}return r}function QA(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&&XA(YA(e,-1),r.beforeDelta)||e.index+2===e.points.length-1&&XA(YA(e,1),r.afterDelta)||ZA(e.points,t,r.own)>r.intruded||!r.crossed&&$A(e.points))return!1;let c=n.get(e.relationshipId);return yA(e.points,t,c?.[0]??``,c?.[1]??``)<=r.blocked}function $A(e){for(let t=0;t+1<e.length;t++)for(let n=t+2;n+1<e.length;n++)if(ej(e[t],e[t+1],e[n],e[n+1]))return!0;return!1}function ej(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 tj={[U.top]:I.top,[U.bottom]:I.bottom,[U.left]:I.left,[U.right]:I.right},nj=Math.PI*2,rj=.15,ij={[U.top]:-Math.PI,[U.right]:-Math.PI/2,[U.bottom]:0,[U.left]:Math.PI/2},aj={[U.top]:!1,[U.right]:!1,[U.bottom]:!0,[U.left]:!0};function oj(e){Wg();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=_j(o);for(let t of o){let n=gj(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)fj(dj(e,s,o),n);else{let t=dj(e,s,o),a=dj(e,s,d),[c,l]=xj(t.objectPoint,a.objectPoint,n);t[c].push({id:n.id,isStart:!0,point:r,angle:bj(c,t,a),tie:u.tieAt(n.id,r.tableId,i.tableId)}),a[l].push({id:n.id,isStart:!1,point:i,angle:bj(l,a,t),tie:u.tieAt(n.id,i.tableId,r.tableId)})}}}for(let e of s.values())for(let t of Fg)Sj(t,e,l);for(let[e,t]of c.entries())Rg(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;sj(e,c)}function sj(e,t){let n=_A(e),r=eA(e),i=lA(r,n),a=r.entries,o=new Map,s=new Set,c=sA();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}=gA(e),m=a.get(e.id),h,g;i!==null&&m!==void 0&&uj(m,f,p,t,r)&&!oA(m.bounds,i)?(h=m.pristine,g=cj(h)):(g=CA(f,t.direction,p,r.direction,n,t.tableId,r.tableId),h=cj(g),s.add(e.id),m&&cA(c,m.nudged),cA(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:iA(h)})}if(i)for(let[e,t]of a)o.has(e)||cA(c,t.nudged);jA(l,n,u,i===null?void 0:lj(a,s,c));for(let[e,t]of l){let n=d.get(e);n&&Vg(n,t)}r.entries=o}function cj(e){return e.map(({x:e,y:t})=>({x:e,y:t}))}function lj(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 uj(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 dj(e,t,n){let r=t.get(n.id);if(!r){let i=Mh(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 fj(e,t){let{rt:n,width:r,height:i}=e.objectPoint,a=e.selfCount++,o=hj(Math.min(r,i)*rj,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 pj(e,t){let{width:n,height:r}=e.objectPoint;return hj(Math.min(n,r)*rj,20,60)+t*14}function mj(e){return e.selfCount?pj(e,e.selfCount-1)+8:0}function hj(e,t,n){return Math.min(Math.max(e,t),n)}function gj(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 _j(e){let t=new Map;for(let{id:n,start:r,end:i}of e){let e=vj(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 vj(e,t){return e<t?`${e}|${t}`:`${t}|${e}`}function yj(e){let t=e%nj;return t<0?t+nj:t}function bj(e,t,n){return yj(Math.atan2(n.centerY-t.centerY,n.centerX-t.centerX)-ij[e])}function xj(e,t,n){let r=[U.bottom,U.bottom],i=Nh(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 Fg)for(let o of Fg){let s=a,c=o,l=Nh(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=tj[s],n.end.x=t[c].x,n.end.y=t[c].y,n.end.direction=tj[c])}return r}function Sj(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=mj(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=aj[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 Cj=(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)}}),wj=(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))?Km.dash:Km.ring;s!==r&&(e.startRelationshipType=s)}}),Tj=B([Zb.type,$b.type,nb.type]),Ej=[[[Ox,Bx,nv,ov],Cj],[[Ox,Wx,nv,ov],wj],[[lg,kg,kb,jb,nb,Yb,tx,Zb,$b,rx,ax,Ex,Ox,Ax,Mx,Px,Ix,dx],(e,t)=>e.pipe(ze(e=>{Tj(e.type)||Ch()}),Be(5,void 0,{leading:!1,trailing:!0})).subscribe(()=>{oj(t())})]],Dj=[[[nv,ov],(e,t,n)=>e.pipe(Be(5,void 0,{leading:!1,trailing:!0})).subscribe(()=>{let e=t();kh(e,n),oj(e)})]],Oj=e=>e.pipe(Ie(Ee)),kj=[[[Bx],(e,t)=>Oj(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))})],[[kb],(e,t)=>Oj(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})],[[jb],(e,t)=>Oj(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})],[[nv,ov],(e,t)=>Oj(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)}})]],Aj=[...Dj,...kj,...Ej];function jj(e){let t=()=>e.state,n=Aj.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 Mj(e,{getReadonly:t=()=>!1,getHistory:n}={}){let r=new Set,i=Qk(e),a=jj(i),o={notify:e=>i.dispatch(U_(e)),dispatch:i.dispatchSync,getNextVersion:()=>e.clock.getNextVersion()},s=n?.(o)??Wk(o);s.setLimit(2048);let c=new we,l=c.pipe(Kk(Fk),Xk([Qm.changeOnly,Qm.shared]),Zk(t),Yk(Pk,[[`@@move`,jk],[`@@scroll`,Nk],[`@@color`,Mk]])),u=new Ce(e=>i.subscribe(t=>e.next(t))).pipe(Kk(Dk),Zk(t,[Qm.shared]),Oe(200)),d=(...t)=>{let n=e.clock.getNextVersion();return wu(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(pS(i,s))).add(c.pipe(Zk(t,[Qm.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 Nj={openColorPicker:`openColorPicker`,closeColorPicker:`closeColorPicker`,openToast:`openToast`,loadShikiService:`loadShikiService`,openTableProperties:`openTableProperties`,dragendColumnAll:`dragendColumnAll`,copy:`copy`,paste:`paste`,schemaGC:`schemaGC`,toggleSearch:`toggleSearch`,openThemeBuilder:`openThemeBuilder`,setThemeOptions:`setThemeOptions`,mouseTrackerStart:`mouseTrackerStart`,mouseTrackerEnd:`mouseTrackerEnd`,openDiffViewer:`openDiffViewer`,duplicateDragStart:`duplicateDragStart`,dragSelectStart:`dragSelectStart`};var Pj=new WeakMap,Fj=class{constructor(){Lk(this,Pj,new Set)}on(e){return zk(Pj,this).has(e)||zk(Pj,this).add(e),()=>{zk(Pj,this).delete(e)}}emit(e){zk(Pj,this).forEach(t=>{cS(Reflect.get(t,e.type),e)})}clear(){zk(Pj,this).clear()}};const Ij=D(Nj.openColorPicker);D(Nj.closeColorPicker),D(Nj.openToast),D(Nj.loadShikiService),D(Nj.openTableProperties);const Lj=D(Nj.dragendColumnAll);D(Nj.copy),D(Nj.paste),D(Nj.schemaGC),D(Nj.toggleSearch),D(Nj.openThemeBuilder),D(Nj.setThemeOptions),D(Nj.mouseTrackerStart),D(Nj.mouseTrackerEnd),D(Nj.openDiffViewer);const Rj=D(Nj.duplicateDragStart);D(Nj.dragSelectStart);const zj=Je();let Bj=zj.os.name===`mac`,Vj=zj.os.name===`ios`;zj.os.name,zj.os.name,zj.browser.name,zj.browser.name,zj.browser.name,Ye(e=>{Bj=e.os.name===`mac`,Vj=e.os.name===`ios`,e.os.name,e.os.name,e.browser.name,e.browser.name,e.browser.name});const Hj=()=>Bj||Vj,$={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 Uj=()=>({[$.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}]}),Wj={Shift:`Shift`,Meta:`Meta`,Alt:`Alt`,Control:`Control`};Wj.Shift,Wj.Meta,Wj.Alt,Wj.Control,Wj.Shift,Wj.Meta,Wj.Alt,Wj.Control;function Gj(e){return Hj()?e.metaKey:e.ctrlKey}function Kj(e,t){let{devtools:n=!0,...r}=t??{},i=Uk(e),a=Mj(i,r),o=ba(Uj(),{shallow:!0}),s=new we,c=new we,l=new Fj;return Object.freeze({...i,actions:Ek,store:a,keyBindingMap:o,shortcut$:s,keydown$:c,emitter:l})}const qj=di({}),Jj=(e,t)=>Fa(e,{...qj,value:t??qj.value});function Yj(e){e.store.dispatchSync(iv()),e.store.destroy(),e.keydown$.complete(),e.shortcut$.complete(),e.emitter.clear()}const Xj=[`table`,`memo`,`relationship`],Zj=e=>typeof e==`string`&&Xj.includes(e);function Qj(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 $j=(e,t)=>!!(e&&t&&e.x===t.x&&e.y===t.y),eM=new WeakMap,tM=`mousedown.sceneHit touchstart.sceneHit contextmenu.sceneHit`;function nM(e){return e.on(tM,t=>{let n=t.evt,r=Qj(n),i=eM.get(e),a=t.target===e?null:iM(t.target),o=n.type===`contextmenu`&&$j(i?.point,r)?i?.hit??null:null;eM.set(e,{evt:n,hit:a??o,point:r})}),()=>{e.off(tM),eM.delete(e)}}function rM(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 iM(e){let t=e;for(;t;){let e=t.getAttr(`kind`);if(Zj(e))return{kind:e,id:rM(t,e)};t=t.getParent()}return null}const aM=di({}),oM=e=>Fa(e,aM);function sM({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=Ia(s,qj,e),l=a?Ia(s,aM,a):null,u=nM(o);return If(o,n),{stage:o,destroy:()=>{u(),If(o,null),l?.destroy(),c.destroy(),o.destroy()}}}const cM=e=>new Promise(t=>setTimeout(t,e)),lM=32767;function uM(e,t,n){let r=Math.max(t,n),i=t*n;return r<=0||i<=0?e:Math.min(e,lM/r,16384/Math.sqrt(i))}function dM({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 fM(e){let{settings:{show:t},doc:{relationshipIds:n},collections:r}=e,i=zh(e);if(z(t,N.relationship)){let e=j(r).collection(`relationshipEntities`).selectByIds(n);for(let t of e){let e=qg(t);i=i?Rh(i,e):e}}return dM(i??{x:0,y:0,width:0,height:0},80)}function pM({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,lM/i,Math.sqrt(268435456/a))}const mM={"arrow-right":Xe,atom:Ze,braces:Qe,brackets:$e,"case-sensitive":et,check:tt,"chevron-right":nt,code:rt,contrast:it,copy:at,database:ot,diff:st,eye:ct,"file-diff":lt,"file-image":ut,"file-input":dt,"file-output":ft,"grip-vertical":pt,hand:mt,"key-round":ht,maximize:gt,minimize:_t,minus:vt,"moon-star":yt,"mouse-pointer-2":bt,palette:xt,plus:St,"redo-2":Ct,"refresh-cw":wt,"rotate-ccw-clock":Tt,search:Et,settings:Dt,"share-2":Ot,spline:kt,"sticky-note":At,sun:jt,table:Mt,"table-properties":Nt,"undo-2":Pt,workflow:Ft,x:It},hM={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`}]]},gM={};_M();function _M(){for(let e of Object.keys(mM))gM[e]={name:e,node:mM[e]};for(let e of Object.keys(hM))gM[e]={name:e,node:hM[e]}}function vM(e){return gM[e]}const yM=`-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', 'Open Sans', system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'`;Ad.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:BN(ee,_),{width:se,height:ce}=Lh(_),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=>{jM(e,AM)}} @mouseleave=${e=>{jM(e,``)}} />${tP({icon:`x`,name:`memo-remove`,kind:`icon`,size:12,color:o.hover?o.removeHover?te.active:te.foreground:OM,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=${kM} /><k-text name="memo-textarea" kind="memo-textarea" offsetY=${oe} text=${ae} visible=${!ie} fill=${te.active} fontFamily=${bM} fontSize=${12} fontStyle=${`400`} lineHeight=${DN()} wrap="none" /></k-group><${SN} .memo=${_} .top=${ce} .left=${se} /></k-group></k-group>`}};function rP(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 iP(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(rP(a,i,l)),r(rP(a,o,l))}return r(e[e.length-1]),n}function aP(e){let{start:t,end:n}=e,[r,i]=zg(e),a=dA(t,n);return{path:oP(t,n,fA(uA(r),a),fA(uA(i),a),Hg(e)),line:sP(t,n)}}function oP(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}]]:uP(iP(i&&i.length>1?i:dP(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 sP(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 cP(e){if(!e.length)return``;let[[t]]=e,n=`M${lP(t.x)} ${lP(t.y)}`;for(let[,t]of e)n+=`L${lP(t.x)} ${lP(t.y)}`;return n}function lP(e){return Math.round(e*100)/100}function uP(e){let t=[];for(let n=1;n<e.length;n++)t.push([e[n-1],e[n]]);return t}function dP(e,t,n){if(pA(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 fP=`relationship-decoration`,pP=({x1:e,y1:t,x2:n,y2:r})=>[e,t,n,r];function mP(e,t){return O`<k-line name=${fP} kind=${fP} points=${pP(e)} stroke=${t} strokeWidth=${2} listening=${!1} />`}function hP({cx:e,cy:t},n){return O`<k-circle name=${fP} kind=${fP} x=${e} y=${t} radius=${6} stroke=${n} strokeWidth=${2} listening=${!1} />`}const gP={1:{ring:!0,ticks:[`base`,`left`,`center`,`right`]},[Gm.ZeroOne]:{ring:!0,ticks:[`base`,`center`]},[Gm.ZeroN]:{ring:!0,ticks:[`left`,`center`,`right`]},[Gm.OneOnly]:{ring:!1,ticks:[`base`,`base2`,`center2`]},[Gm.OneN]:{ring:!1,ticks:[`base`,`left`,`center2`,`right`]},32:{ring:!1,ticks:[`base`,`center2`]},64:{ring:!1,ticks:[`left`,`center2`,`right`]}};function _P(e,{path:t,line:n},r){let i=gP[e];return i?O`${mP(t.line.end,r)}${i.ring?hP(n.circle,r):null}${i.ticks.map(e=>mP(n.line.end[e],r))}`:null}const vP=[10,10],yP=[];function bP({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 xP({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 SP({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 CP(e){let t=bP(e),n=(n,r)=>xP(e,t,n,r),r=n(11,0);return[cP([[n(11,-7),n(11,7)]]),cP([[n(18,-7),n(18,7)]]),cP([[r,n(0,7)]]),cP([[r,n(0,-7)]]),SP(n(18,0),6)].join(``)}function wP({start:e,end:t},{line:n},r){return`${cP([[{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}]])}${CP(e)}${CP(t)}`}function TP(e){return 8/(e>0?e:1)}const EP=(e,t)=>{let n=Jj(t),r=oM(t),i=ba({hover:!1}),a=()=>{let{relationship:t}=e,{store:r}=n.value;i.hover=!0,r.dispatch(Iv({columnIds:[...t.start.columnIds,...t.end.columnIds]}))},o=()=>{let{store:e}=n.value;i.hover=!1,e.dispatch(Iv({columnIds:[]}))};return()=>{let{store:t}=n.value,{editor:s,settings:c}=t.state,{relationship:l,strokeWidth:u}=e,d=r.value,f=aP(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,_=_P(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=${wP(l,p,h)} hitStrokeWidth=${TP(c.zoomLevel)} lineCap="round" /><k-path name="relationship-route" kind="relationship-route" data=${cP(h)} dash=${l.identification?yP:vP} stroke=${ee} strokeWidth=${u} listening=${!1} />${mP(p.line.start,ee)}${mP(m.line.start.base,ee)}${l.startRelationshipType===Km.ring?O`${hP(m.startCircle,ee)}${mP(m.line.start.center,ee)}`:O`${mP(m.line.start.base2,ee)}${mP(m.line.start.center2,ee)}`}${_}</k-group>`}},DP=e=>()=>{let{relationships:t,viewport:n}=e,r=e.strokeWidth??2,i=n?t.filter(e=>n_(n,e,r)):t;return O`<k-group name="relationship-group" kind="relationship-group">${ru(i,e=>e.id,e=>O`<${EP} .relationship=${e} .strokeWidth=${r} />`)}</k-group>`},OP=e=>e.evt?.detail??0;function kP(){let e=null;return{track(t,n){OP(n)<=1&&(e=t)},isDouble(t,n){return OP(n)>=2&&e===t}}}const AP=(e,t)=>{let n=z(e,R.primaryKey),r=z(e,R.foreignKey);return n&&r?t.keyPFK:n?t.keyPK:r?t.keyFK:OM},jP=(e,t,n)=>t?e.columnSelect:n?e.columnHover:OM,MP=(e,t)=>{let n=Jj(t),r=oM(t),i=ba({hover:!1,removeHover:!1}),{addUnsubscribe:a}=rN(),o=kP(),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=$M.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,jM(e,AM)},p=e=>{i.removeHover=!1,jM(e,``)},m=(e,t)=>t?i.removeHover?e.active:e.foreground:OM,h=(t,r)=>{let{store:i}=n.value,{column:a}=e;i.dispatch(uv({tableId:a.tableId,columnId:a.id,focusType:t,$mod:Gj(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(OS(t)?MS(t,a.tableId,a.id):gv())},ee=()=>{let{store:t}=n.value,{column:r}=e;t.dispatch(jS(r.tableId,[r.id]))},_=()=>{let{column:t}=e;if(t.ui.keys===0)return;let{store:r}=n.value;r.dispatch(vk(t.id))},te=()=>{let{store:e}=n.value;e.dispatch(yk())},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=${GN()} text=${a} fill=${s} fontFamily=${bM} fontSize=${12} verticalAlign="middle" wrap="none" ellipsis=${d} visible=${!l} hitFunc=${ZN} />${c?O`<k-rect name="cell-focus-border" y=${20.5} width=${i} height=${EM} fill=${UN(r.value,l,e.editorFocused)} listening=${!1} />`:null}${u?O`<k-rect name="cell-shared-focus-border" y=${22.5} width=${i+8} height=${EM} 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 YN(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=jP(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} />${tP({icon:`key-round`,name:`column-col column-key`,kind:`column-col`,size:12,color:AP(o.ui.keys,h),x:9,y:6,mouseenter:_,mouseleave:te})}${ru(ie(),({columnType:e})=>e,({template:e})=>e)}${tP({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 NP(e,t){let{collections:n,doc:r}=e,i=$g(e),a=j(n).collection(`tableEntities`).selectByIds(r.tableIds).filter(t=>t_(i,e,t)).sort((e,t)=>t.ui.zIndex-e.ui.zIndex);for(let n of a){let r=Ph(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=Ih(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 PP(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 FP(e){let t=new Map,n=null,r=null,i=(e,n,r,i)=>{t.get(e)?.(),e.offsetX(r),e.offsetY(i),Jd(n);let a=!1,o=-1,s=()=>{a||(a=!0,clearTimeout(o),t.delete(e),Yd(n))},c=new ri({node:e,offsetX:0,offsetY:0,duration:.3,easing:ni.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}=PP(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??=Wd(o)},cancel(){a(),[...t.values()].forEach(e=>e())}}}function IP(e,t){let n=Jj(e),r=()=>n.value.store.state.editor.focusTable;return{hasFocus:(e,n)=>iN(r(),e,t,n),hasEdit:(e,n)=>oN(r(),e,t,n),hasSelectColumn:e=>aN(r(),t,e)}}const LP=(e,t)=>{let n=Jj(t),r=oM(t),{hasEdit:i,hasFocus:a,hasSelectColumn:o}=IP(t,e.table.id),{sharedFocusColor:s,sharedFocusTableColor:c}=dN(t,e.table.id),{sharedSelectColor:l}=fN(t,e.table.id),{onMoveStart:u}=nN(t,e),{addUnsubscribe:d}=rN(),f=ba({hover:!1,iconHover:null,dragstartId:null}),p=kP(),m=null,h=null,g=null,ee=()=>{f.hover=!0},_=()=>{f.hover=!1},te=e=>t=>{f.iconHover=e,jM(t,AM)},ne=e=>{f.iconHover=null,jM(e,``)},re=(e,t,n)=>n?f.iconHover===t?e.active:e.foreground:OM,ie=(t,n)=>n?e.editorFocused===!1?t.placeholder:t.tableSelect:t.tableBorder,ae=t=>{let{emitter:r}=n.value;r.emit(Ij({x:t.evt.clientX,y:t.evt.clientY,color:e.table.ui.color}))},oe=()=>{let{store:t}=n.value;t.dispatch(AS(e.table.id))},se=()=>{let{store:t}=n.value;t.dispatch(wS(e.table.id))},ce=t=>{let{store:r}=n.value;r.dispatch(cv({tableId:e.table.id,focusType:t}))},le=(e,t)=>{if(!p.isDouble(e,t))return;let{store:r}=n.value;r.dispatch(gv())},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=NP(t.state,r);if(!i)return;let{editor:{draggableColumn:a}}=t.state;!a||a.columnIds.includes(i.columnId)||(g?.snapshot(),t.dispatch(_k(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(Jv()),t.emit(Lj()))},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??=FP(()=>a.find(`.column-row`)),r.dispatch(gk(Gj(t.evt))),m=$M.subscribe({next:({event:e})=>{de(e)},complete:v}))};$i(()=>{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=${GN()} text=${a} fill=${o} fontFamily=${bM} fontSize=${12} verticalAlign="middle" wrap="none" ellipsis=${!0} visible=${!c} hitFunc=${QN} />${s?O`<k-rect name="cell-focus-border" y=${20.5} width=${i} height=${EM} fill=${UN(r.value,c,e.editorFocused)} listening=${!1} />`:null}${l?O`<k-rect name="cell-shared-focus-border" y=${22.5} width=${i+8} height=${EM} 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=Fh(t.state,m),le=Ph(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=qN(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=>{jM(e,AM)}} @mouseleave=${e=>{jM(e,``)}} /><k-group name="table-header" x=${9} y=${9}>${tP({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})}${tP({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">${ru(Se,e=>e.id,(n,r)=>O`<${MP} .column=${n} .y=${Ih(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>`}},RP=(e,t)=>e.ui.zIndex-t.ui.zIndex,zP=(e,t)=>{let n=Jj(t),r=oM(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(RP),m=j(d).collection(`memoEntities`).selectByIds(l).sort(RP),h=j(d).collection(`relationshipEntities`).selectByIds(u),g=bh(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`<${DP} .relationships=${h} />`:null}${ru(p,e=>e.id,e=>g?O`<${mN} .table=${e} />`:O`<${LP} .table=${e} />`)}${ru(m,e=>e.id,e=>O`<${nP} .memo=${e} />`)}</k-layer>`}};async function BP({doc:e,theme:t,toWidth:n,zoomLevel:r}){let i=Kj({toWidth:n},{devtools:!1});i.store.dispatchSync(ZO(e)),y(r)&&i.store.dispatchSync($h({value:r})),await cM(32);let a=i.store.state.settings.zoomLevel,o=fM(i.store.state),s=pM(o,a),c=sM({app:i,container:document.createElement(`div`),scene:O`<${zP} .box=${o} .scale=${s} />`,width:o.width*s,height:o.height*s,theme:t});return await Zd(),{stage:c.stage,box:o,scale:s,zoomLevel:a,destroy:()=>{c.destroy(),Yj(i)}}}function VP(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 HP({doc:e,theme:t,pixelRatio:n,zoomLevel:r,toWidth:i}){let a=await BP({doc:e,theme:t,toWidth:i,zoomLevel:r});try{let e=uM(n,a.stage.width(),a.stage.height()),t=a.stage.toCanvas({pixelRatio:e}),r=await VP(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 UP=`400 12px ${yM}`,WP=[`ERD editor 0123456789`,`가나다 漢字 テスト`,`—…€· iIlL1`];function GP(){if(typeof OffscreenCanvas>`u`)return null;let e=new OffscreenCanvas(1,1).getContext(`2d`);return e?(e.font=UP,t=>Math.round(e.measureText(t).width)+2):null}function KP(e){return WP.map(t=>e(t))}function qP(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}const JP=new class{async probeFontWidths(){return KP(this.createToWidth())}async render(e){let t=this.createToWidth(),n=KP(t);if(!qP(n,e.fontProbe))throw Error(`[export-png] this realm measures text differently: ${n.join()} against ${e.fontProbe.join()}`);return HP({...e,toWidth:t})}createToWidth(){let e=GP();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(JP,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)};
|