@dineug/erd-editor 3.9.1 → 3.9.2

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.
@@ -23,7 +23,7 @@ import*as e from"comlink";import{CHARSET as t,DECLARATION as n,IMPORT as r,LAYER
23
23
  `)}const wE=/^[0-9a-z ]+$/,TE=/'/g,EE=/\?/g;function DE(e){try{return{ok:!0,model:kE(bE(e))}}catch(e){return{ok:!1,message:e instanceof Error?e.message:`Invalid DBML`}}}function OE(e){let t=0;return{peek:(n=0)=>e[t+n]??null,next:()=>e[t++]??null,atEnd:()=>t>=e.length}}function kE(e){let t=OE(e),n={tables:[],refs:[],enums:{},skipped:[]},r=new Map,i=new Set,a=e=>{i.has(e)||(i.add(e),n.skipped.push(e)),eD(t)};for(;!t.atEnd();){if(nD(t))continue;let e=t.peek();if(!e)break;if(!rD(e)){t.next();continue}let i=e.value.toLowerCase();if(i===`table`&&e.kind===X.identifier){t.next();let e=AE(t,r);e&&n.tables.push(e);continue}if(i===`tablepartial`&&e.kind===X.identifier){t.next();let e=AE(t,r);e&&r.set(e.name,e.columns);continue}if(i===`ref`&&e.kind===X.identifier){t.next(),n.refs.push(...IE(t));continue}if(i===`enum`&&e.kind===X.identifier){t.next(),BE(t,n.enums);continue}a(i)}return n}function AE(e,t){let{schemaName:n,name:r}=JE(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=YE(e)),WE(i,VE(e)),!QE(e))return r===``?null:i;for(;!e.atEnd();){if(nD(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(YE(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=XE(e);continue}if(t===`note`&&r&&Z(r,`{`)){e.next(),e.next(),i.comment=ZE(e);continue}if(t===`indexes`&&r&&Z(r,`{`)){e.next(),e.next(),i.indexes.push(...PE(e));continue}if(r&&Z(r,`{`)){e.next(),e.next(),$E(e);continue}}let r=jE(e);r&&i.columns.push(r)}return i}function jE(e){let t=e.peek();if(!t||!rD(t))return tD(e),null;e.next();let n={name:t.value,comment:``,typeName:``,typeSchemaName:``,primaryKey:!1,unique:!1,notNull:!1,autoIncrement:!1,default:``,inlineRefs:[]},r=ME(e);return n.typeName=r.name,n.typeSchemaName=r.schemaName,HE(n,VE(e)),tD(e),n.typeName===``?null:n}function ME(e){let{schemaName:t,name:n}=JE(e);if(n===``)return{name:``,schemaName:``};let r=[n],i=e.peek();i&&Z(i,`(`)&&(e.next(),r.push(`(${NE(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 NE(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 PE(e){let t=[];for(;!e.atEnd();){if(nD(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(...FE(e))):rD(n)?(e.next(),r.columnNames.push(n.value)):e.next(),UE(r,VE(e)),tD(e),r.columnNames.length!==0&&t.push(r)}return t}function FE(e){let t=[];for(;!e.atEnd();){let n=e.next();if(!n||Z(n,`)`))break;rD(n)&&t.push(n.value)}return t}function IE(e){let t=e.peek();if(t&&rD(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=LE(e);return tD(e),t?[t]:[]}if(!QE(e))return tD(e),[];let r=[];for(;!e.atEnd();){if(nD(e))continue;let t=e.peek();if(!t)break;if(Z(t,`}`)){e.next();break}let n=LE(e);n?r.push(n):tD(e)}return r}function LE(e){let t=zE(e),n=RE(e);if(n===``)return null;let r=zE(e);return VE(e),t.tableName===``||r.tableName===``?null:{operator:n,left:t,right:r}}function RE(e){let t=e.peek();return t?t.kind===X.operator?(e.next(),t.value.replace(EE,``)):Z(t,`-`)?(e.next(),`-`):``:``}function zE(e){let t=[],n=[];for(;!e.atEnd();){let r=e.peek();if(!r||!rD(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(...FE(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 BE(e,t){let{schemaName:n,name:r}=JE(e);if(VE(e),!QE(e)){tD(e);return}let i=[];for(;!e.atEnd();){if(nD(e))continue;let t=e.peek();if(!t)break;if(Z(t,`}`)){e.next();break}rD(t)?(e.next(),i.push(t.value),VE(e)):e.next(),tD(e)}r!==``&&(t[n?`${n}.${r}`:r]=i,n&&!(r in t)&&(t[r]=i))}function VE(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(rD(t)&&wE.test(t.value.toLowerCase())){r.push(t.value);continue}a=!0,i.push(t)}return o(),n}function HE(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=KE(n);break;case`default`:e.default=qE(n);break;case`ref`:{let t=GE(n);t&&e.inlineRefs.push(t);break}}})}function UE(e,t){t.forEach(({key:t,tokens:n})=>{switch(t){case`name`:e.name=KE(n);break;case`unique`:e.unique=!0;break;case`pk`:case`primary key`:e.primaryKey=!0}})}function WE(e,t){t.forEach(({key:t,tokens:n})=>{t===`note`&&(e.comment=KE(n))})}function GE(e){let t=OE(e),n=RE(t);if(n===``)return null;let r=zE(t);return r.tableName===``?null:{operator:n,target:r}}function KE(e){let t=e.find(e=>e.kind===X.string||e.kind===X.quoted||e.kind===X.identifier);return t?t.value:``}function qE(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(TE,`''`)}'`;case X.expression:case X.number:case X.identifier:case X.quoted:return n.value;default:return t.map(e=>e.value).join(``)}}function JE(e){let t=YE(e);if(t===``)return{schemaName:``,name:``};let n=e.peek();return!n||!Z(n,`.`)?{schemaName:``,name:t}:(e.next(),{schemaName:t,name:YE(e)})}function YE(e){let t=e.peek();return!t||!rD(t)?``:(e.next(),t.value)}function XE(e){let t=e.peek();return t&&(t.kind===X.string||t.kind===X.quoted)?(e.next(),t.value):``}function ZE(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 QE(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 $E(e){let t=1;for(;!e.atEnd()&&t!==0;){let n=e.next();if(!n)break;Z(n,`{`)?t+=1:Z(n,`}`)&&--t}}function eD(e){if(QE(e)){$E(e);return}for(;!e.atEnd();){let t=e.next();if(!t||t.kind===X.newline)return;if(Z(t,`{`)){$E(e);return}}}function tD(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 nD(e){let t=e.peek();return t&&t.kind===X.newline?(e.next(),!0):!1}function rD(e){return e.kind===X.identifier||e.kind===X.quoted}function Z(e,t){return e.kind===X.punctuation&&e.value===t}const iD={tables:[],refs:[],enums:{},skipped:[]};function aD(e,t,n){let r=DE(e),i=r.ok?r.model:iD,a=qp({}),o=qh(i.tables.length*100);a.settings.width=o,a.settings.height=o;let{settings:s}=n?n(a):a,c=nE(i,t,s.database);return c.settings=s,qm(c)}const oD={[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)`},sD={[L.MariaDB]:`INT`,[L.MSSQL]:`int`,[L.MySQL]:`INT`,[L.Oracle]:`INTEGER`,[L.PostgreSQL]:`integer`,[L.SQLite]:`INTEGER`,[L.Databricks]:`INT`,[L.Snowflake]:`INT`},cD={[L.MariaDB]:`SMALLINT`,[L.MSSQL]:`smallint`,[L.MySQL]:`SMALLINT`,[L.Oracle]:`SMALLINT`,[L.PostgreSQL]:`smallint`,[L.SQLite]:`SMALLINT`,[L.Databricks]:`SMALLINT`,[L.Snowflake]:`SMALLINT`},lD={[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`},uD={[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`},dD={[L.MariaDB]:`DECIMAL`,[L.MSSQL]:`decimal`,[L.MySQL]:`DECIMAL`,[L.Oracle]:`DECIMAL`,[L.PostgreSQL]:`numeric`,[L.SQLite]:`DECIMAL`,[L.Databricks]:`DECIMAL`,[L.Snowflake]:`DECIMAL`},fD={[L.MariaDB]:`BOOLEAN`,[L.MSSQL]:`bit`,[L.MySQL]:`BOOLEAN`,[L.Oracle]:`BOOLEAN`,[L.PostgreSQL]:`boolean`,[L.SQLite]:`BOOLEAN`,[L.Databricks]:`BOOLEAN`,[L.Snowflake]:`BOOLEAN`},pD={[L.MariaDB]:`DATE`,[L.MSSQL]:`date`,[L.MySQL]:`DATE`,[L.Oracle]:`DATE`,[L.PostgreSQL]:`date`,[L.SQLite]:`DATE`,[L.Databricks]:`DATE`,[L.Snowflake]:`DATE`},mD={[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`},hD={[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`},gD={[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`},_D={[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)`},vD={[L.MariaDB]:`JSON`,[L.MSSQL]:`json`,[L.MySQL]:`JSON`,[L.Oracle]:`JSON`,[L.PostgreSQL]:`jsonb`,[L.SQLite]:`TEXT`,[L.Databricks]:`VARIANT`,[L.Snowflake]:`VARIANT`},yD={[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`},bD={[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`},xD={id:oD,string:oD,boolean:fD,int:sD,float:uD,positiveint:sD,nonnegativeint:sD,unsignedint:sD,short:cD,smallint:cD,positivefloat:uD,nonnegativefloat:uD,bigint:lD,biginteger:lD,long:lD,int8:lD,safeint:lD,decimal:dD,bigdecimal:dD,numeric:dD,money:dD,datetime:hD,datetimeiso:hD,localdatetime:hD,timestamp:hD,timestamptz:gD,date:pD,localdate:pD,time:mD,localtime:mD,timetz:mD,duration:_D,iso8601duration:_D,interval:_D,json:vD,jsonb:vD,jsonobject:vD,uuid:yD,guid:yD,byte:bD,bytes:bD,bytea:bD,binary:bD,email:oD,emailaddress:oD,url:oD,uri:oD,void:oD};function SD(e,t,n){let r=oD[t]??``,i=ED(n.enums,e);return i?wD(i,t)??r:ED(n.unions,e)?r:xD[e.toLowerCase()]?.[t]??r}function CD(e,t,n){let r=ED(t.enums,e);if(r)return n!==void 0&&wD(r,n)!==void 0?``:TD(e,r);let i=ED(t.unions,e);return i?TD(e,i):``}function wD(e,t){if(t===L.MySQL||t===L.MariaDB)return`ENUM(${e.map(e=>`'${e.replace(/'/g,`''`)}'`).join(`,`)})`}function TD(e,t){return` ${e}: ${t.join(` | `)}`}function ED(e,t){let n=e[t];return Array.isArray(n)&&n.length?n:void 0}function DD(e,t,n){let r=qp({}),i=OD(e.tables),a=new Set(e.skipped),o=e.tables.map(o=>kD(r,t,e,n,o,i,a));return PD(r,t,o),WD(r,o),r}function OD(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 kD({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(AD(l)),f=tg(a.name),p=tg(a.comment),m=PS({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=>{ND(t,h,jD(n,r,i,m.id,e,d.has(e)))}),e.tableIds.push(m.id),N(t).collection(`tableEntities`).setOne(m),h}function AD(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 jD({toWidth:e},t,n,r,i,a){let{named:o,nonNull:s}=i.typeRef,c=tg(i.name),l=tg(i.dataType)||SD(o,n,t),u=tg(i.default),d=MD(i,t,n);return dC({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 MD(e,t,n){let{named:r,isList:i}=e.typeRef,a=[],o=tg(e.comment);return o&&a.push(o),i&&a.push(`list of ${r}`),`${a.join(` `)}${CD(r,t,n)}`.trim()}function ND(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 PD(e,t,n){let r=OD(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=FD(i,n);n.consumed=!0,r&&(r.consumed=!0);let o=!!r?.field.typeRef.isList;LD(e,t,a,{parent:n.target,child:n.source,field:n.field,childSide:!0,relationshipType:n.field.typeRef.nonNull?o?nh.OneN:nh.OneOnly:o?nh.ZeroN:nh.ZeroOne})}),i.filter(e=>e.field.typeRef.isList).forEach(r=>{if(r.consumed)return;let o=ID(i,r);if(r.consumed=!0,o){o.consumed=!0,HD(e,t,n,r);return}LD(e,t,a,{parent:r.source,child:r.target,field:r.field,childSide:!1,relationshipType:r.field.typeRef.nonNull?nh.OneN:nh.ZeroN})})}function FD(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 ID(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 LD(e,t,n,r){let{doc:i,collections:a}=e,{parent:o,child:s,relationshipType:c}=r,l=Cw(o.columns);if(!l.length)return;let{startColumns:u,endColumns:d}=RD(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=mS({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 RD(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=Tw(i.columns,n),l=a.relationReferences[o],u=l?Tw(r.columns,l):s[o]??null;!c||!u||(e.push(u),t.push(c))}),t.length)return{startColumns:e,endColumns:t}}let c=o?tg(a.name):pe(r.name),l=new Set,u=[],d=[];return s.forEach(o=>{let s=zD(c,r.name,o.name),f=BD(i.columns,s,e=>l.has(e)?!0:n.claimedColumnIds.has(e))??VD(e,t,i,a,o,s[0]);l.add(f.id),u.push(o),d.push(f)}),{startColumns:u,endColumns:d}}function zD(e,t,n){return[`${e}${Qv(n)}`,`${ve(e)}_${ve(n)}`,`${t}${Qv(n)}`,`${ve(t)}_${ve(n)}`,`${e}Id`,`${ve(e)}_id`]}function BD(e,t,n){for(let r of t){let t=Tw(e,r);if(t&&!n(t.id))return t}return null}function VD({collections:e},{toWidth:t},n,r,i,a){let o=ww(n.columns,``,a),{dataType:s}=i,c=dC({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 ND(e,n,c),c}function HD(e,t,n,r){let{doc:i,collections:a}=e,{toWidth:o}=t,s=r.source,c=r.target,l=Cw(s.columns),u=Cw(c.columns);if(!l.length||!u.length)return;let d=ww(n.map(e=>e.table),``,`${s.name}_${c.name}`),f=`Junction table inferred from ${s.name} <-> ${c.name}`,p=PS({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),UD(e,t,m,s,l),UD(e,t,m,c,u)}function UD(e,{toWidth:t},n,r,i){let{doc:a,collections:o}=e,s=i.map(e=>{let i=ww(n.columns,``,`${pe(r.name)}${Qv(e.name)}`),{dataType:a}=e,s=dC({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 ND(o,n,s),s}),c=mS({identification:!0,relationshipType:nh.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 WD({doc:e,collections:t},n){n.forEach(({source:n,table:r,columns:i})=>{n.indexes.forEach(n=>{let a=ix({name:tg(n.name),tableId:r.id,unique:n.unique}),o=[];n.fieldNames.forEach(e=>{let t=Tw(i,e);t&&o.push(xx({indexId:a.id,columnId:t.id,orderType:ih.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 GD=[`Query`,`Mutation`,`Subscription`],KD=[`PageInfo`],qD=[`Connection`,`Edge`],JD=[`_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`],YD=[`_Service`,`_Entity`,`_Any`,`_FieldSet`],XD=[`autoincrement`,`autoincrement()`],ZD=/[_A-Za-z]/,QD=/[_0-9A-Za-z]/;function $D(e){try{return{ok:!0,model:nO(eO(e))}}catch(e){return{ok:!1,message:tO(e)}}}function eO(e){try{return Xe(e)}catch(t){let n=xO(e);if(n===e)throw t;try{return Xe(n)}catch{throw t}}}function tO(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 nO(e){let t={},n={},r=[],i=new Map,a=new Map,o=new Set;for(let s of e.definitions)switch(s.kind){case Je.OBJECT_TYPE_DEFINITION:case Je.OBJECT_TYPE_EXTENSION:iO(a,s);break;case Je.INTERFACE_TYPE_DEFINITION:case Je.INTERFACE_TYPE_EXTENSION:{let e=s.name.value,t=i.get(e)??[];t.push(...s.fields??[]),i.set(e,t);break}case Je.SCHEMA_DEFINITION:case Je.SCHEMA_EXTENSION:for(let e of s.operationTypes??[])o.add(e.type.name.value);break;case Je.ENUM_TYPE_DEFINITION:t[s.name.value]=(s.values??[]).map(e=>e.name.value);break;case Je.UNION_TYPE_DEFINITION:n[s.name.value]=(s.types??[]).map(e=>e.name.value);break;case Je.SCALAR_TYPE_DEFINITION:r.push(s.name.value)}let s=o.size?o:new Set(GD),c=[],l=[],u=new Map;for(let e of a.values()){if(_O(e.name,s)){l.push(e.name);continue}let t=aO(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 rO(c,u),{tables:c,enums:t,customScalars:r,unions:n,skipped:l}}function rO(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 iO(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||=yO(t);return}e.set(n,{name:n,comment:yO(t),interfaceNames:r,fieldNodes:[...t.fields??[]],directives:[...t.directives??[]]})}function aO(e,t){let n=oO(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(sO).filter(ue),indexes:[]};for(let t of e.directives)uO(a,t);return a}function oO(e){let t=new Set;return e.filter(e=>{let n=e.name.value;return!t.has(n)&&(t.add(n),!0)})}function sO(e){if(e.name.value.startsWith(`__`))return null;let t={name:e.name.value,comment:yO(e),typeRef:cO(e.type),primaryKey:!1,unique:!1,autoIncrement:!1,default:``,dataType:``,relationName:``,relationFields:[],relationReferences:[],hasArguments:(e.arguments??[]).length>0};for(let n of e.directives??[])lO(t,n);return t}function cO(e){let t=e.kind===Je.NON_NULL_TYPE,n=t?e.type:e,r=n.kind===Je.LIST_TYPE,i=r?n.type:n,a=r&&i.kind===Je.NON_NULL_TYPE,o=i;for(;o.kind!==Je.NAMED_TYPE;)o=o.type;return{named:o.name.value,nonNull:t,isList:r,itemNonNull:a}}function lO(e,t){let n=t.name.value;if(n.startsWith(`db_`)){e.dataType=dO(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=fO(t,`value`);if(!n)break;let r=hO(n);XD.includes(r.toLowerCase())?e.autoIncrement=!0:e.default=r;break}case`map`:{let n=pO(t,`name`)||pO(t,`value`);n&&(e.name=n);break}case`relation`:{let n=pO(t,`name`)||pO(t,`value`);n&&(e.relationName=n);let r=fO(t,`fields`);r&&(e.relationFields=gO(r));let i=fO(t,`references`);i&&(e.relationReferences=gO(i));break}case`column`:{let n=pO(t,`name`);n&&(e.name=n);let r=pO(t,`dataType`);r&&(e.dataType=r);let i=fO(t,`default`);i&&(e.default=hO(i));let a=mO(t,`autoIncrement`);a!==null&&(e.autoIncrement=a);let o=mO(t,`unique`);o!==null&&(e.unique=o);let s=mO(t,`primaryKey`);s!==null&&(e.primaryKey=s);break}}}function uO(e,t){switch(t.name.value){case`map`:{let n=pO(t,`name`)||pO(t,`value`);n&&(e.name=n);break}case`table`:{let n=pO(t,`name`);n&&(e.name=n);let r=fO(t,`comment`);r&&(e.comment=hO(r));break}case`index`:{let n=fO(t,`fields`),r=n?gO(n):[];if(!r.length)break;let i={name:pO(t,`name`),unique:mO(t,`unique`)??!1,fieldNames:r};e.indexes.push(i);break}}}function dO(e,t){let n=e.slice(3),r=t.arguments??[];return r.length?`${n}(${r.map(e=>hO(e.value)).join(`, `)})`:n}function fO(e,t){let n=(e.arguments??[]).find(e=>e.name.value===t);return n?n.value:null}function pO(e,t){let n=fO(e,t);return n?hO(n):``}function mO(e,t){let n=fO(e,t);return n?hO(n)===`true`:null}function hO(e){switch(e.kind){case Je.STRING:case Je.INT:case Je.FLOAT:case Je.ENUM:return e.value;case Je.BOOLEAN:return e.value?`true`:`false`;case Je.NULL:return`null`;case Je.LIST:return e.values.map(hO).join(`, `);default:return``}}function gO(e){return(e.kind===Je.LIST?e.values:[e]).map(hO).filter(e=>e!==``)}function _O(e,t){return t.has(e)||e.startsWith(`__`)||YD.includes(e)||KD.includes(e)||qD.some(t=>vO(e,t))||JD.some(t=>vO(e,t))}function vO(e,t){return e.length>t.length&&e.endsWith(t)}function yO(e){if(e.description)return bO(e.description.value);if(!e.loc)return``;let t=[],n=e.loc.startToken.line-1,r=e.loc.startToken.prev;for(;r&&r.kind===Ye.COMMENT&&r.line===n&&(!r.prev||r.prev.line<r.line);)t.unshift(r.value??``),--n,r=r.prev;return bO(t.join(` `))}function bO(e){return e.replace(/\s+/g,` `).trim()}function xO(e){let t=``,n=0,r=!1;for(;n<e.length;){let i=e[n];if(i===`#`){let r=wO(e,n);t+=e.slice(n,r),n=r;continue}if(i===`"`){let r=TO(e,n);t+=e.slice(n,r),n=r;continue}if(i!==`@`||!ZD.test(e[n+1]??``)){t+=i,n+=1;continue}let a=CO(e,n+1),o=e.slice(n+1,a);for(;e[a]===`.`&&ZD.test(e[a+1]??``);){let t=CO(e,a+1);o+=`_${e.slice(a+1,t)}`,a=t,r=!0}t+=`@${o}`,n=a;let s=DO(e,n);if(e[s]===`(`){t+=e.slice(n,s+1),n=s+1;for(let i=0;n<e.length;i++){let a=DO(e,n);if(t+=e.slice(n,a),n=a,e[n]===`)`||n>=e.length)break;let o=SO(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(EO(e,DO(e,n)),n+1);t+=e.slice(n,s),n=s}}}return r?t:e}function SO(e,t){if(!ZD.test(e[t]??``))return-1;let n=DO(e,CO(e,t));return e[n]===`:`?n:-1}function CO(e,t){let n=t;for(;n<e.length&&QD.test(e[n]);)n+=1;return n}function wO(e,t){let n=e.indexOf(`
24
24
  `,t);return n===-1?e.length:n}function TO(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
25
  `)return n;if(t===`"`)return n+1;n+=1}return n}function EO(e,t){let n=[],r=t;for(;r<e.length;){let t=e[r];if(t===`"`){r=TO(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 DO(e,t){let n=t;for(;n<e.length;){let t=e[n];if(t===`#`){n=wO(e,n);continue}if(!/[\s,]/.test(t))break;n+=1}return n}const OO={tables:[],enums:{},customScalars:[],unions:{},skipped:[]};function kO(e,t,n){let r=$D(e),i=r.ok?r.model:OO,a=qp({}),o=qh(i.tables.length*100);a.settings.width=o,a.settings.height=o;let{settings:s}=n?n(a):a,c=DD(i,t,s.database);return c.settings=s,qm(c)}var AO={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`},jO={asc:`ASC`,desc:`DESC`},MO={string:`string`,leftParent:`leftParent`,rightParent:`rightParent`,leftBracket:`leftBracket`,rightBracket:`rightBracket`,comma:`comma`,period:`period`,equal:`equal`,semicolon:`semicolon`},NO={doubleQuote:`"`,dash:`-`,slash:`/`,asterisk:`*`,newLine:`
26
- `,singleQuote:`'`,backtick:"`",whiteSpace:/\s/,string:/\S/,breakString:/;|,|\(|\)|\[|\]|\.|=/,equal:`=`,period:`.`,comma:`,`,semicolon:`;`,leftParent:`(`,rightParent:`)`,leftBracket:`[`,rightBracket:`]`},PO=e=>t=>e===t,FO=e=>t=>e.test(t),Q={doubleQuote:PO(NO.doubleQuote),dash:PO(NO.dash),slash:PO(NO.slash),asterisk:PO(NO.asterisk),newLine:PO(NO.newLine),singleQuote:PO(NO.singleQuote),backtick:PO(NO.backtick),whiteSpace:FO(NO.whiteSpace),string:FO(NO.string),breakString:FO(NO.breakString),equal:PO(NO.equal),period:PO(NO.period),comma:PO(NO.comma),semicolon:PO(NO.semicolon),leftParent:PO(NO.leftParent),rightParent:PO(NO.rightParent),leftBracket:PO(NO.leftBracket),rightBracket:PO(NO.rightBracket)};function IO(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:MO.leftParent,value:i}),n++;continue}if(Q.rightParent(i)){t.push({type:MO.rightParent,value:i}),n++;continue}if(Q.comma(i)){t.push({type:MO.comma,value:i}),n++;continue}if(Q.period(i)){t.push({type:MO.period,value:i}),n++;continue}if(Q.equal(i)){t.push({type:MO.equal,value:i}),n++;continue}if(Q.semicolon(i)){t.push({type:MO.semicolon,value:i}),n++;continue}if(Q.rightBracket(i)){t.push({type:MO.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:MO.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:MO.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:MO.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:MO.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:MO.string,value:a});continue}n++}return t}var LO=`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(`.`),RO=`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(`.`),zO=`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(`.`),BO=`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(`.`),VO=`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(`.`),HO=`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(`.`),UO=`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(`.`),WO=`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(`.`),GO=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}},KO=GO(MO.string),qO=GO(MO.equal),JO=GO(MO.period),YO=GO(MO.comma),XO=GO(MO.semicolon),ZO=GO(MO.leftParent),QO=GO(MO.rightParent);MO.leftBracket,MO.rightBracket;var $O=$(`CREATE`),ek=$(`ALTER`),tk=$(`DROP`),nk=$(`USE`),rk=$(`RENAME`),ik=$(`DELETE`),ak=$(`SELECT`),ok=$(`TABLE`),sk=$(`INDEX`),ck=$(`UNIQUE`),lk=$(`ADD`),uk=$(`PRIMARY`),dk=$(`KEY`),fk=$(`CONSTRAINT`),pk=$(`FOREIGN`),mk=$(`NOT`),hk=$(`NULL`),gk=$(`DEFAULT`),_k=$(`COMMENT`),vk=$(`REFERENCES`),yk=$(`ASC`),bk=$(`DESC`),xk=$(`ON`),Sk=$(`AUTO_INCREMENT`),Ck=$(`AUTOINCREMENT`),wk=$(`IF`),Tk=$(`EXISTS`),Ek=$(`ONLY`),Dk=$(`IS`),Ok=$(`COLUMN`),kk=$(`CHARACTER`),Ak=$(`SET`),jk=$(`COLLATE`),Mk=$(`ENFORCED`),Nk=$(`RELY`),Pk=$(`NORELY`),Fk=$(`DEFERRABLE`),Ik=$(`INITIALLY`),Lk=$(`DEFERRED`),Rk=$(`IMMEDIATE`),zk=$(`IDENTITY`),Bk=$(`FUNCTION`),Vk=$(`CLUSTER`),Hk=$(`BY`),Uk=$(`FULLTEXT`),Wk=$(`SPATIAL`),Gk=e=>{let t=Mk(e),n=Nk(e),r=Pk(e),i=Fk(e),a=Ik(e),o=Lk(e),s=Rk(e);return e=>t(e)||n(e)||r(e)||i(e)||a(e)||o(e)||s(e)},Kk=[[`SET`,`NULL`],[`SET`,`DEFAULT`],[`NO`,`ACTION`],[`CASCADE`],[`RESTRICT`]],qk=[`FULL`,`PARTIAL`,`SIMPLE`],Jk=e=>{let t=t=>{let n=e[t];return n&&n.type===MO.string&&!n.quoted?n.value.toUpperCase():``};return e=>t(e)===`ON`&&[`DELETE`,`UPDATE`].includes(t(e+1))?2+(Kk.find(n=>n.every((n,r)=>t(e+2+r)===n))?.length??0):t(e)===`MATCH`&&qk.includes(t(e+1))?2:0},Yk=e=>{let t=Uk(e),n=Wk(e),r=sk(e),i=dk(e);return e=>(t(e)||n(e))&&(r(e+1)||i(e+1))},Xk=[`ARRAY`,`MAP`,`STRUCT`],Zk=e=>{let t=KO(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||!Xk.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}},Qk=e=>{let t=Sk(e),n=Ck(e),r=zk(e);return e=>t(e)||n(e)||r(e)},$k=e=>{let t=Vk(e),n=Hk(e);return e=>t(e)&&n(e+1)},eA=e=>{let t=_k(e),n=xk(e);return e=>t(e)&&n(e+1)},tA=e=>{let t=eA(e),n=ok(e);return e=>t(e)&&n(e+2)},nA=e=>{let t=eA(e),n=Ok(e);return e=>t(e)&&n(e+2)},rA=e=>{let t=$O(e),n=ek(e),r=tk(e),i=nk(e),a=rk(e),o=ik(e),s=ak(e),c=eA(e);return e=>t(e)||n(e)||r(e)||i(e)||a(e)||o(e)||s(e)||c(e)},iA=[`OR`,`REPLACE`,`TRANSIENT`,`TEMPORARY`,`TEMP`,`LOCAL`,`GLOBAL`,`VOLATILE`,`UNLOGGED`,`HYBRID`,`ICEBERG`,`DYNAMIC`,`EXTERNAL`],aA=e=>{let t=$O(e),n=ok(e),r=KO(e),i=Bk(e),a=wk(e),o=mk(e),s=Tk(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||!iA.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)}},oA=e=>{let t=kk(e),n=Ak(e);return e=>t(e)&&n(e+1)},sA=e=>{let t=aA(e);return e=>t(e)>0},cA=e=>{let t=$O(e),n=sk(e),r=ck(e);return e=>t(e)&&r(e+1)&&n(e+2)},lA=e=>{let t=$O(e),n=sk(e),r=cA(e);return e=>t(e)&&n(e+1)||r(e)},uA=e=>{let t=ek(e),n=ok(e);return e=>t(e)&&n(e+1)},dA=e=>{let t=KO(e),n=JO(e);return e=>{if(!t(e))return 0;let r=e+1;for(;n(r)&&t(r+1);)r+=2;return r-e}},fA=e=>{let t=uA(e),n=Ek(e),r=lk(e),i=fk(e),a=KO(e),o=dA(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}}},pA=e=>{let t=fA(e);return e=>t(e).length},mA=e=>{let t=fA(e);return e=>t(e).only},hA=e=>{let t=pA(e),n=uk(e),r=dk(e);return e=>{let i=t(e);return i>0&&n(e+i)&&r(e+i+1)}},gA=e=>{let t=pA(e),n=pk(e),r=dk(e);return e=>{let i=t(e);return i>0&&n(e+i)&&r(e+i+1)}},_A=e=>{let t=pA(e),n=ck(e);return e=>{let r=t(e);return r>0&&n(e+r)}},vA=Array.from(new Set([...LO,...RO,...zO,...BO,...VO,...HO,...UO,...WO].map(e=>e.toUpperCase()))),yA=(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})(vA),bA=e=>{let t=KO(e),n=ZO(e),r=QO(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 yA.get(i)??[]){let t=a(n,e);if(t)return t}return+!!vA.includes(i)}};function xA(e,t){let n=rA(e),r=KO(e),i=ZO(e),a=QO(e),o=JO(e),s=XO(e),c=qO(e),l=_k(e),u=$k(e),d=aA(e),f=()=>t.value<e.length,p={type:AO.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}=SA(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 SA(e,t){let n=KO(e),r=ZO(e),i=QO(e),a=YO(e),o=fk(e),s=sk(e),c=uk(e),l=pk(e),u=Qk(e),d=ck(e),f=hk(e),p=mk(e),m=gk(e),h=_k(e),g=bk(e),_=yk(e),v=dk(e),y=qO(e),ee=oA(e),te=jk(e),ne=Gk(e),re=bA(e),ie=Zk(e),ae=Jk(e),b=Yk(e),oe=()=>t.value<e.length,se=e=>o(e)||c(e)||l(e)||d(e)||s(e)||v(e)||b(e),ce=()=>{let o=[],s={name:``,sort:jO.asc},c=!1;for(t.value++;oe()&&!i(t.value);){if(r(t.value)){c||=!s.name;let e=0;for(;oe();){if(r(t.value))e++;else if(i(t.value)&&--e===0)break;t.value++}}n(t.value)&&!g(t.value)&&!_(t.value)&&(s.name=e[t.value].value),g(t.value)&&(s.sort=jO.desc),a(t.value)&&(o.push(s),s={name:``,sort:jO.asc}),t.value++}return s.name!==``&&o.push(s),t.value++,c?[]:o},le=[],x=[],ue=[],S=[],de=[],C={name:``,dataType:``,default:``,comment:``,primaryKey:!1,autoIncrement:!1,unique:!1,nullable:!0},fe=!1;for(;oe();){let g=e[t.value],_=ie(t.value);if(_){let n=t.value+_,r=[];for(;t.value<n;)r.push(a(t.value)?`,`:e[t.value].value),t.value++;C.dataType=r.reduce((e,t)=>!e||t===`,`?e+t:`${e} ${t}`,``);continue}let pe=ae(t.value);if(pe){t.value+=pe;continue}if(!C.name&&se(t.value)&&(fe=!0),fe&&b(t.value)){t.value++;continue}if(n(t.value)&&!fe&&!C.name&&!p(t.value)&&!ne(t.value)){C.name=g.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)){g=e[++t.value],n(t.value)&&t.value++;continue}if(c(t.value)){if(g=e[++t.value],v(t.value)){if(g=e[++t.value],fe&&n(t.value)&&(g=e[++t.value]),r(t.value)){for(g=e[++t.value];oe()&&!i(t.value);)n(t.value)&&S.push(g.value.toUpperCase()),g=e[++t.value];t.value++}else C.primaryKey=!0}continue}if(l(t.value)){let n=CA(e,t);n&&ue.push(n);continue}if(s(t.value)||v(t.value)){if(g=e[++t.value],n(t.value)){let n=g.value;if(g=e[++t.value],r(t.value)){let e=ce();e.length&&x.push({name:n,unique:!1,columns:e})}}continue}if(d(t.value)){g=e[++t.value];let a=s(t.value);(v(t.value)||a)&&(g=e[++t.value]);let o=``;if(!C.name&&n(t.value)&&(o=g.value,g=e[++t.value]),a&&o&&r(t.value)){let e=ce();e.length>1?x.push({name:o,unique:!0,columns:e}):de.push(...e.map(e=>e.name.toUpperCase()));continue}if(r(t.value)){for(g=e[++t.value];oe()&&!i(t.value);)n(t.value)&&de.push(g.value.toUpperCase()),g=e[++t.value];t.value++}else C.unique=!0;continue}if(p(t.value)){g=e[++t.value],f(t.value)?(C.nullable=!1,t.value++):ne(t.value)&&t.value++;continue}if(ne(t.value)){t.value++;continue}if(m(t.value)){g=e[++t.value],n(t.value)&&(C.default=g.quoted?`'${g.value.replaceAll(`'`,`''`)}'`:g.value,t.value++);continue}if(h(t.value)){g=e[++t.value],y(t.value)&&(g=e[++t.value]),n(t.value)&&(C.comment=g.value,t.value++);continue}if(u(t.value)){C.autoIncrement=!0,t.value++;continue}if(ee(t.value)){t.value+=2,n(t.value)&&t.value++;continue}if(te(t.value)){t.value++,y(t.value)&&t.value++,n(t.value)&&t.value++;continue}let me=re(t.value);if(me&&(fe||C.dataType)){t.value+=me;continue}if(me){let a=t.value+me,o=``,s=0;for(;t.value<a;)g=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))?` ${g.value}`:g.value:o?` ${g.value}`:g.value,t.value++;for(;s>0;)o+=`)`,s--;C.dataType=o;continue}if(a(t.value)){(C.name||C.dataType)&&le.push(C),C={name:``,dataType:``,default:``,comment:``,primaryKey:!1,autoIncrement:!1,unique:!1,nullable:!0},fe=!1,t.value++;continue}if(i(t.value)){t.value++;break}t.value++}return!le.includes(C)&&(C.name||C.dataType)&&le.push(C),le.forEach(e=>{S.includes(e.name.toUpperCase())&&(e.primaryKey=!0),de.includes(e.name.toUpperCase())&&(e.unique=!0)}),{columns:le,indexes:x,foreignKeys:ue}}function CA(e,t){let n=KO(e),r=ZO(e),i=QO(e),a=vk(e),o=JO(e),s=dk(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 wA(e,t){let n=rA(e),r=XO(e),i=KO(e),a=fk(e),o=JO(e),s=ok(e),c=pk(e),l=mA(e)(t.value),u=()=>t.value<e.length,d={type:AO.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=CA(e,t);n&&(d.columnNames=n.columnNames,d.refTableName=n.refTableName,d.refColumnNames=n.refColumnNames);continue}t.value++}return d}function TA(e,t){let n=rA(e),r=XO(e),i=KO(e),a=ZO(e),o=QO(e),s=fk(e),c=uk(e),l=JO(e),u=dk(e),d=ok(e),f=mA(e)(t.value),p=()=>t.value<e.length,m={type:AO.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 EA(e,t){let n=rA(e),r=XO(e),i=KO(e),a=fk(e),o=JO(e),s=ok(e),c=ck(e),l=ZO(e),u=QO(e),d=mA(e)(t.value),f=()=>t.value<e.length,p={type:AO.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 DA(e,t){let n=rA(e),r=KO(e),i=JO(e),a=XO(e),o=Dk(e),s=hk(e),c=()=>t.value<e.length,l={type:AO.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 OA(e,t){let n=rA(e),r=KO(e),i=JO(e),a=XO(e),o=Dk(e),s=hk(e),c=()=>t.value<e.length,l={type:AO.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 kA(e,t){let n=rA(e),r=XO(e),i=ck(e),a=KO(e),o=ZO(e),s=QO(e),c=YO(e),l=sk(e),u=xk(e),d=bk(e),f=yk(e),p=cA(e),m=()=>t.value<e.length,h={type:AO.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:jO.asc};for(;m()&&!s(t.value);)a(t.value)&&!d(t.value)&&!f(t.value)&&(r.name=n.value),d(t.value)&&(r.sort=jO.desc),c(t.value)&&(h.columns.push(r),r={name:``,sort:jO.asc}),n=e[++t.value];!h.columns.includes(r)&&r.name!==``&&h.columns.push(r),t.value++}continue}t.value++}return h}function AA(e){let t=[],n={value:0},r=()=>n.value<e.length,i=sA(e),a=lA(e),o=hA(e),s=gA(e),c=_A(e),l=tA(e),u=nA(e);for(;r();){if(i(n.value)){t.push(xA(e,n));continue}if(a(n.value)){t.push(kA(e,n));continue}if(o(n.value)){t.push(TA(e,n));continue}if(s(n.value)){t.push(wA(e,n));continue}if(c(n.value)){t.push(EA(e,n));continue}if(l(n.value)){t.push(OA(e,n));continue}if(u(n.value)){t.push(DA(e,n));continue}n.value++}return t}var jA=e=>AA(IO(e));function MA(e,t,n){let r=qp({}),i=PA(NA(jA(e))),a=qh(i.length*100);return r.settings.width=a,r.settings.height=a,i.forEach(e=>FA(r,e,t)),IA(r,i),LA(r,i),qm(n?n(r):r)}function NA(e){let t={tables:[],indexes:[],primaryKeys:[],foreignKeys:[],uniques:[],tableComments:[],columnComments:[]};for(let n of e)switch(n.type){case AO.createTable:n.name&&t.tables.push(n);break;case AO.createIndex:n.tableName&&n.columns.length&&t.indexes.push(n);break;case AO.alterTableAddPrimaryKey:n.name&&n.columnNames.length&&t.primaryKeys.push(n);break;case AO.alterTableAddForeignKey:n.name&&n.columnNames.length&&n.refTableName&&n.refColumnNames.length&&n.columnNames.length===n.refColumnNames.length&&t.foreignKeys.push(n);break;case AO.alterTableAddUnique:n.name&&n.columnNames.length&&t.uniques.push(n);break;case AO.commentOnTable:n.name&&t.tableComments.push(n);break;case AO.commentOnColumn:n.tableName&&n.columnName&&t.columnComments.push(n)}return t}function PA({tables:e,indexes:t,primaryKeys:n,foreignKeys:r,uniques:i,tableComments:a,columnComments:o}){return t.forEach(t=>{let n=Tw(e,t.tableName);n&&n.indexes.push({name:t.name,unique:t.unique,columns:t.columns})}),n.forEach(t=>{let n=Tw(e,t.name);n&&t.columnNames.forEach(e=>{let t=Tw(n.columns,e);t&&(t.primaryKey=!0)})}),i.forEach(t=>{let n=Tw(e,t.name);n&&t.columnNames.forEach(e=>{let t=Tw(n.columns,e);t&&(t.unique=!0)})}),r.forEach(t=>{let n=Tw(e,t.name);n&&n.foreignKeys.push({columnNames:t.columnNames,refTableName:t.refTableName,refColumnNames:t.refColumnNames})}),a.forEach(({name:t,comment:n})=>{let r=Tw(e,t);r&&(r.comment=n)}),o.forEach(({tableName:t,columnName:n,comment:r})=>{let i=Tw(e,t);if(!i)return;let a=Tw(i.columns,n);a&&(a.comment=r)}),e}function FA({doc:e,collections:t},n,{toWidth:r}){let i=PS({name:n.name,comment:n.comment,ui:{widthName:U(r(n.name)),widthComment:U(r(n.comment))}});n.columns.forEach(e=>{let n=dC({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 IA({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=Tw(r,n.name);if(!a)return;let o=i.selectByIds(a.columnIds);n.foreignKeys.forEach(n=>{let s=Tw(r,n.refTableName);if(!s)return;let c=i.selectByIds(s.columnIds),l=[],u=[];n.refColumnNames.forEach(e=>{let t=Tw(c,e);t&&l.push(t)}),n.columnNames.forEach(e=>{let t=Tw(o,e);t&&(u.push(t),G(t.ui.keys,B.primaryKey)?t.ui.keys|=B.foreignKey:t.ui.keys=B.foreignKey)});let d=mS({identification:!u.some(e=>!(G(e.ui.keys,B.primaryKey)&&G(e.ui.keys,B.foreignKey))),relationshipType:nh.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 LA({doc:e,collections:t},n){let r=N(t).collection(`tableEntities`).selectByIds(e.tableIds);n.forEach(n=>{n.indexes.forEach(i=>{let a=Tw(r,n.name);if(!a)return;let o=N(t).collection(`tableColumnEntities`).selectByIds(a.columnIds),s=[],c=ix({name:i.name,tableId:a.id,unique:i.unique});i.columns.forEach(e=>{let t=Tw(o,e.name);if(!t)return;let n=xx({indexId:c.id,columnId:t.id,orderType:e.sort===jO.asc?ih.ASC:ih.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 RA({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 zA({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 BA({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(FS({id:n,ui:{x:e.x,y:e.y,zIndex:e.zIndex,color:t.ui.color}}),US({id:n,value:t.name}),GS({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(fC(r),gC({...r,value:t.name}),bC({...r,value:t.dataType}),SC({...r,value:t.default}),vC({...r,value:t.comment}),EC({...r,value:G(t.options,z.primaryKey)}),AC({...r,value:G(t.options,z.notNull)}),OC({...r,value:G(t.options,z.unique)}),wC({...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=VA(e.start.columnIds,d),i=VA(e.end.columnIds,d);!r||!i||o.push(hS({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=VA(e.indexColumns.map(({columnId:e})=>e),d);if(!n)continue;let r=w();o.push(ax({id:r,tableId:t}),lx({id:r,tableId:t,value:e.name}),dx({id:r,tableId:t,value:e.unique})),e.indexColumns.forEach(({orderType:e},i)=>{let a=w(),s=n[i];o.push(Cx({id:a,indexId:r,tableId:t,columnId:s}),kx({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(Bx({id:n,ui:{x:t.x,y:t.y,zIndex:t.zIndex,color:e.ui.color,width:e.ui.width,height:e.ui.height}}),Jx({id:n,value:e.value}))}return{actions:o,tableIds:s,memoIds:c}}function VA(e,t){let n=[];for(let r of e){let e=t.get(r);if(!e)return null;n.push(e)}return n}function HA(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]})}}})),HA(e,t,n)),n}const UA=ag.flow,WA={focusFlowTableAction$:e=>function*({editor:t,settings:n}){e.length&&(n.canvasType!==Jm.visualization&&(yield wv({value:Jm.visualization})),t.visualizationMode!==og.flow&&(yield Lg({value:og.flow})),yield t.views.flow?Fg({tableIds:e,kind:UA}):_g({kind:UA,centerIds:e}))}};function GA(e){return Object.entries(e).reduce((e,[t,n])=>(n===rg.table?e.tableIds.push(t):n===rg.memo&&e.memoIds.push(t),e),{tableIds:[],memoIds:[]})}const KA=e=>function*(){yield zy(),yield Hy({value:e})},qA=e=>function*(){yield Wy(),yield Ky({value:e})},JA=(e,t,n=`document`)=>function*(r){let{tableIds:i,memoIds:a}=GA(r.editor.selectedMap),{zoomLevel:o}=V_(r,n),s=e/o,c=t/o;if(n!==`document`){i.length&&(yield Hg(Vg.drag,kg({ids:i,movementX:s,movementY:c,kind:n})));return}i.length&&(yield Hg(Vg.drag,LS({ids:i,movementX:s,movementY:c}))),a.length&&(yield Hg(Vg.drag,Hx({ids:a,movementX:s,movementY:c})))},YA=()=>function*(){yield dw(),yield tw()},XA=(e,t)=>function*(n){yield*QA(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})},ZA=({tableIds:e,memoIds:t,offset:n,escapeCollision:r})=>function*(i){yield*QA(i,{input:tj(i,{tableIds:e??[],memoIds:t??[]}),offset:{x:Ke(n.x,4),y:Ke(n.y,4)},escapeCollision:r})};function*QA(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}=BA(t,ej(cw({entities:[...t.tables.map($A),...t.memos.map($A)],offset:n,escapeCollision:r,settings:i,tables:c.selectByIds(a),memos:l.selectByIds(o),findSource:e=>c.selectById(e)??l.selectById(e)})));yield rj(),yield u,yield Fy({...d.reduce((e,t)=>(e[t]=rg.table,e),{}),...f.reduce((e,t)=>(e[t]=rg.memo,e),{})})}const $A=({sourceId:e,ui:{x:t,y:n,zIndex:r}})=>({sourceId:e,ui:{x:t,y:n,zIndex:r}});function ej(e){return new Map(Array.from(e,([e,{x:t,y:n,zIndex:r}])=>[e,{x:Ke(t,4),y:Ke(n,4),zIndex:r}]))}function tj(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:RA(e,s),indexes:zA(e,s)}}const nj=(e,t=`document`)=>function*(n){let{collections:r}=n,{tableIds:i,memoIds:a}=Xg(n,t),o={...N(r).collection(`tableEntities`).selectByIds(i).reduce((r,i)=>{let a=j_(n,i,t);return Sw(e,{x:a.x+a.width/2-15,y:a.y+a.height/2-15,w:15,h:15})&&(r[i.id]=rg.table),r},{}),...N(r).collection(`memoEntities`).selectByIds(a).reduce((t,n)=>{let r=o_(n),i=s_(n);return Sw(e,{x:n.ui.x+r/2-15,y:n.ui.y+i/2-15,w:15,h:15})&&(t[n.id]=rg.memo),t},{})};yield rj(),Ge(o)||(yield Fy(o))},rj=()=>function*(){yield Ny(),yield Qy()},ij=(e,t)=>function*(n){let{editor:{focusTable:r}}=n;r&&(e===sg.Tab&&!t&&(yy(r.focusType)&&_y(n)&&!oy(n)||!yy(r.focusType)&&sy(n)&&ly(n))?yield _w(r.tableId):yield eb({moveKey:e,shiftKey:t}))},aj=e=>function*({editor:t}){t.drawRelationship?.relationshipType===e?yield vb():yield mb({relationshipType:e})},oj=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 fC({tableId:e,id:t}),yield EC({tableId:e,id:t,value:!0}),yield Xy({tableId:e,columnId:t,focusType:W.columnName,$mod:!1,shiftKey:!1})}yield gb({tableId:e})}},sj=e=>function*({editor:{selectedMap:t},collections:n}){let{tableIds:r,memoIds:i}=GA(t),a=N(n).collection(`tableEntities`).selectByIds(r),o=N(n).collection(`memoEntities`).selectByIds(i);yield a.map(t=>qS({id:t.id,color:e,prevColor:t.ui.color})),yield o.map(t=>Xx({id:t.id,color:e,prevColor:t.ui.color}))},cj=e=>function*({settings:t},n){yield KA(MA(e,n,e=>(e.settings={...e.settings,...he(ie(t),[`width`,`height`,`originX`,`originY`,`scrollTop`,`scrollLeft`,`zoomLevel`])},e))),yield ZS()},lj=e=>function*({settings:t},n){yield KA(kO(e,n,e=>(e.settings={...e.settings,...he(ie(t),[`width`,`height`,`originX`,`originY`,`scrollTop`,`scrollLeft`,`zoomLevel`])},e))),yield ZS()},uj=e=>function*({settings:t},n){yield KA(aD(e,n,e=>(e.settings={...e.settings,...he(ie(t),[`width`,`height`,`originX`,`originY`,`scrollTop`,`scrollLeft`,`zoomLevel`])},e))),yield ZS()},dj=e=>function*({settings:t},n){yield KA(YT(e,n,e=>(e.settings={...e.settings,...he(ie(t),[`width`,`height`,`originX`,`originY`,`scrollTop`,`scrollLeft`,`zoomLevel`])},e))),yield ZS()},fj=e=>function*({editor:{focusTable:t}}){!t||!t.columnId||(yield Mb({tableId:t.tableId,columnIds:e?[...t.selectColumnIds]:[t.columnId]}))};function pj(e,t,n){let r=[...t],i=[];for(let t of n){let n=r.indexOf(t);if(n===-1)return[];let a=r[r.length-1];t!==a&&(r.splice(n,1),r.push(t),i.push(MC({tableId:e,id:t,targetId:a})))}return ce(r,t)?[]:i}const mj=(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;if(e===null){yield pj(i,s.columnIds,a);return}let n=s.columnIds.indexOf(e);if(n===-1)return;let r=a.map(t=>MC({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 vw(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[fC(a),gC({...a,value:r.name}),bC({...a,value:r.dataType}),SC({...a,value:r.default}),vC({...a,value:r.comment}),EC({...a,value:G(r.options,z.primaryKey)}),AC({...a,value:G(r.options,z.notNull)}),OC({...a,value:G(r.options,z.unique)}),wC({...a,value:G(r.options,z.autoIncrement)}),...e===null?[]:[MC({...a,targetId:e})],Xy({tableId:t,columnId:i,focusType:W.columnName,$mod:!0,shiftKey:!1})]}yield Mb({tableId:t,columnIds:l})},hj=e=>function*(t){let{columnIds:n,relationshipIds:r}=HA([{columnId:e,relationshipIds:[]}],t).reduce((e,{columnId:t,relationshipIds:n})=>(e.columnIds.push(t),e.relationshipIds.push(...n),e),{columnIds:[],relationshipIds:[]});yield Sb({columnIds:ye(n)}),yield wb({relationshipIds:ye(r)})},gj=()=>function*(){yield Sb({columnIds:[]}),yield wb({relationshipIds:[]})},_j={loadJsonAction$:KA,initialLoadJsonAction$:qA,moveAllAction$:JA,removeSelectedAction$:YA,pasteEntitiesAction$:XA,duplicateAction$:ZA,dragSelectAction$:nj,unselectAllAction$:rj,focusMoveTableAction$:ij,drawStartRelationshipAction$:aj,drawStartAddRelationshipAction$:oj,changeColorAllAction$:sj,loadSchemaSQLAction$:cj,loadSchemaGraphQLAction$:lj,loadSchemaDBMLAction$:uj,loadSchemaAMLAction$:dj,dragstartColumnAction$:fj,dragoverColumnAction$:mj,columnKeyHoverStartAction$:hj,columnKeyHoverEndAction$:gj,...WA},vj={addIndexAction$:e=>function*(){yield ax({id:w(),tableId:e})},changeIndexUniqueAction$:e=>function*({collections:t}){let n=N(t).collection(`indexEntities`).selectById(e);n&&(yield dx({id:e,tableId:n.tableId,value:!n.unique}))}},yj={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 Cx({id:i.id,indexId:e,tableId:r.tableId,columnId:t}):yield Cx({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 Tx({id:t.id,indexId:e,tableId:r.tableId})},changeIndexColumnOrderTypeAction$:e=>function*({collections:t}){let n=N(t).collection(`indexColumnEntities`).selectById(e);n&&(yield kx({id:e,indexId:n.indexId,columnId:n.columnId,value:n.orderType===ih.ASC?ih.DESC:ih.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 Dx({id:e,indexId:r.indexId,tableId:i.tableId,targetId:t}))}},bj={addRelationshipAction$:(e,t,n)=>function*({doc:{tableIds:r},collections:i}){let a=N(i).collection(`tableEntities`).selectByIds(r),o=a.find(({id:t})=>t===e),s=a.find(({id:e})=>e===t);if(!o||!s)return;let c=N(i).collection(`tableColumnEntities`).selectByIds(o.columnIds).filter(({options:e})=>G(e,z.primaryKey)),l=c.length?null:dC({tableId:o.id}),u=l?[l]:c,d=u.map(()=>w());yield[...l?[fC({id:l.id,tableId:o.id}),EC({id:l.id,tableId:o.id,value:!0})]:[],...iw(u,s.id,d),hS({id:w(),relationshipType:n,start:{tableId:o.id,columnIds:u.map(({id:e})=>e)},end:{tableId:s.id,columnIds:d}})]}};function xj(e,t,n,r){let i=G_({...e,zoomLevel:t},n);return{movementX:Ke(r.x-i.x,4),movementY:Ke(r.y-i.y,4)}}function Sj(e,t,n){let{viewport:r}=e.editor,i={x:r.width/2,y:r.height/2};return xj(t,n,K_(t,i),i)}const Cj={changeZoomLevelAction$:(e,t)=>function*(n){let r=H_(n,t),{originX:i,originY:a}=r,{movementX:o,movementY:s}=Sj(n,r,Jh(e)),c={originX:i+o,originY:a+s};if(t&&t!==`document`){yield Tg({value:e,kind:t}),yield xg({...c,kind:t});return}yield uv({value:e}),yield gv(c)},streamZoomLevelAction$:(e,t)=>function*(n){let r=H_(n,t),i=Sj(n,r,Jh(r.zoomLevel+e));if(t&&t!==`document`){yield Dg({value:e,kind:t}),yield Cg({...i,kind:t});return}yield fv({value:e}),yield vv(i)}},wj=Object.freeze({...$b,..._j,...mx,...vj,...Mx,...yj,...rS,...rw,...SS,...bj,...Gv,...Cj,...eC,...pw,...FC,...xw}),Tj=`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(`,`),Ej=V([`settings.changeZoomLevel`,`settings.streamZoomLevel`,`settings.scrollTo`,`settings.streamScrollTo`,`settings.changeDatabase`,`settings.changeCanvasType`,`settings.changeLanguage`,`settings.changeTableNameCase`,`settings.changeColumnNameCase`,`settings.changeBracketType`]),Dj=[...Tj.filter(e=>!Ej(e))],Oj=V([`editor.loadJson`,`editor.clear`]),kj=[...Dj.filter(e=>!Oj(e))],Aj=[`editor.sharedMouseTracker`,`editor.sharedFocusTracker`,`editor.sharedSelectionTracker`,`editor.sharedDragSelectTracker`];[...Tj,...Aj];const jj=[`table.move`,`memo.move`],Mj=[`table.changeColor`,`memo.changeColor`],Nj=[`settings.streamZoomLevel`,`settings.streamScrollTo`],Pj=[...Object.keys(XC)],Fj=[...Object.keys(YC),...Pj];function Ij(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}function Lj(e,t,n){Ij(e,t),t.set(e,n)}function Rj(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 zj(e,t){return e.get(Rj(e,t))}function Bj(e,t,n){return e.set(Rj(e,t),n),n}var Vj=new WeakMap,Hj=class{constructor(){Lj(this,Vj,0),_i(this,`getVersion`,()=>zj(Vj,this)),_i(this,`getNextVersion`,()=>this.getVersion()+1),_i(this,`merge`,e=>(!S(e)||!Number.isInteger(e)||this.getVersion()<e&&Bj(Vj,this,e),this))}};function Uj(e){return{...e,clock:new Hj}}function Wj({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=>Wj(e,{commands:[...i],cursor:a,limit:o})})}const Gj=Oe(e=>!!e.length),Kj=e=>{let t=V(e);return e=>new xe(n=>e.subscribe({next:e=>n.next(e.filter(e=>t(e.type))),error:e=>n.error(e),complete:()=>n.complete()})).pipe(Gj)},qj=`@@none-stream`,Jj=(e,t)=>n=>{let r=t.find(([,e])=>e(n));return r?r[0]:e(n)?n:qj},Yj=(e,t=[],n=Ee(200))=>{let r=V(e),i=t.map(([e,t])=>[e,V(t)]),a=Jj(r,i);return e=>new xe(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(Gj,Ae(e=>a(e[0].type)),Ne(e=>e.key===qj?e:e.pipe(Te(e.pipe(n)),je(e=>e.flat()))))},Xj=e=>{let t=t=>x(t.tags)||!e.some(e=>G(t.tags,e));return e=>new xe(n=>e.subscribe({next:e=>n.next(e.filter(t)),error:e=>n.error(e),complete:()=>n.complete()})).pipe(Gj)};V(Pj),V(Aj);const Zj=e=>t=>t.pipe(Le(t=>e.pipe(Re(1),je(()=>t)))),Qj=(e,t=[])=>{let n=V(Dj),r=e=>!x(e.tags)&&t.some(t=>G(e.tags,t))||!n(e.type);return t=>new xe(n=>t.subscribe({next:t=>{n.next(e()?t.filter(r):t)},error:e=>n.error(e),complete:()=>n.complete()})).pipe(Gj)},$j={[K.scrollTo]:P.viewScrollTo,[K.streamScrollTo]:P.viewStreamScrollTo,[K.changeZoomLevel]:P.viewChangeZoomLevel,[K.streamZoomLevel]:P.viewStreamZoomLevel},eM=({tags:e})=>!x(e)&&(G(e,Vg.shared)||G(e,Vg.following)),tM=e=>{let t=$j[e.type];return t&&!eM(e)?{...e,type:t}:e},nM=e=>t=>new xe(n=>t.subscribe({next:t=>{n.next(e()?t.map(tM):t)},error:e=>n.error(e),complete:()=>n.complete()})),rM=(e,t=[])=>{let n=V(kj),r=e=>!x(e.tags)&&t.some(t=>G(e.tags,t))||!n(e.type);return t=>new xe(n=>t.subscribe({next:t=>{n.next(e()?t.filter(r):t)},error:e=>n.error(e),complete:()=>n.complete()})).pipe(Gj)};function iM(e,t){return zu({context:e,state:{...qp({}),editor:cg(),lww:{}},reducers:{...Qb,...$S,...PC,...nS,...xS,...Wv,...px,...jx},enableObservable:t??!0})}const aM=new WeakMap,oM=()=>({boxes:new Map,entries:new Map});function sM(e,t=`document`){let n=aM.get(e);return n||(n={document:oM(),flow:oM()},aM.set(e,n)),n[t]}function cM(e,t){return{left:e.left[t],top:e.top[t],right:e.right[t],bottom:e.bottom[t]}}function lM(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 uM(e,t){return e.left===t.left&&e.top===t.top&&e.right===t.right&&e.bottom===t.bottom}function dM(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 fM(e,t){return e.left<=t.right&&e.right>=t.left&&e.top<=t.bottom&&e.bottom>=t.top}function pM(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(fM(n,e))return!0;return!1}function mM(){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 hM(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 gM(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=cM(t,e);if(r.set(o,s),a)continue;let c=n.get(o);c?uM(c,s)||i.push(lM(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 _M(e){return 50+e%4*12}function vM(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 yM(e,t){return t===null||t<=0?e:Math.max(36,Math.min(e,t/2-1))}function bM(e){return e===R.left||e===R.right}function xM(e){return e===R.right||e===R.bottom?1:-1}function SM(e,t,n){let r=xM(t);return bM(t)?{x:e.x+r*n,y:e.y}:{x:e.x,y:e.y+r*n}}function CM({start:e,end:t},[n,r]){let i=vM(e,t),a=yM(_M(n),i),o=yM(_M(r),i);return{m:SM(e,e.direction,a),l:SM(t,t.direction,o),startStub:a,endStub:o}}function wM(e,t=`document`){let{tableIds:n}=Xg(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=k_(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 TM(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 EM(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)&&TM(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 OM(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 kM(e,t,n,r,i){let a=bM(t),o=bM(r),s=xM(t),c=xM(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=OM(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=OM(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=OM(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=OM(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=OM(e.x,n.x,i,!0,l,u).filter(t=>(t-e.x)*s>=0).slice(0,4),r=OM(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=OM(e.y,n.y,i,!1,l,u).filter(t=>(t-e.y)*s>=0).slice(0,4),r=OM(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 AM(e,t,n,r,i,a,o){let s=kM(e,t,n,r,i),c=null,l=1/0;for(let e of s){let t=EM(e.points,i,a,o)*1e5+e.bends*36+DM(e.points);t<l&&(l=t,c=e.points)}return c||(bM(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 jM=[10,7,4],MM=jM[jM.length-1]-.5;function NM(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 PM(e,t){return e.relationshipId===t.relationshipId?e.index-t.index:e.relationshipId<t.relationshipId?-1:1}function FM(e){let t=e.points[e.index-1];return e.vertical?t.y:t.x}function IM(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 LM(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 RM(e,t,n,r){let i=[],a=[];for(let t of NM(e))(t.vertical?i:a).push(t);for(let e of[i,a]){IM(e);let i=e.filter(e=>e.movable);if(i.length<2)continue;i.sort((e,t)=>e.coordinate-t.coordinate||PM(e,t));let a=[],o=()=>{a.length>1&&zM(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 zM(e,t,n,r,i){e.sort((e,t)=>e.low-t.low||PM(e,t));let a=[],o=-1/0,s=()=>{a.length>1&&GM(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 BM(e,t){return e.high+10>t.low&&t.high+10>e.low}function VM(e,t){return Math.abs(e.coordinate-t.coordinate)>=MM?0:Math.max(0,Math.min(e.high,t.high)-Math.max(e.low,t.low))}function HM(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+=VM(i,e[t]);for(let e of t)n+=VM(i,e)}return n}function UM(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+MM,o=[];for(let e of t)e.coordinate<r-a||e.coordinate>i+a||n.has(e)||o.push(e);return o}function WM(e){let t=[];for(let n of e){let e=t.find(e=>!BM(e[e.length-1],n));e?e.push(n):t.push([n])}return t}function GM(e,t,n,r,i){if(!i){KM(e,t,n,r);return}if(qM(e,i))return;let a=e.map(e=>e.coordinate);KM(e,t,n,r),JM(e,a,i)}function KM(e,t,n,r){let i=UM(e,t),a=HM(e,i);if(!a)return;let o=new Map,s=e.map(e=>(o.set(e,tN(e,n,r)),e.coordinate)),c=s.reduce((e,t)=>e+t,0)/s.length,l=YM(e),u=null,d=1/0;for(let t of jM){let a=null,f=1/0;for(let p of l){eN(p,t,c,o,n,r);let l=HM(e,i);if(l)l<d&&(u=e.map(e=>e.coordinate),d=l);else{let t=QM(e,s);t<f&&(f=t,a=e.map(e=>e.coordinate))}$M(e,s)}if(a){$M(e,a);return}}u&&d<a&&$M(e,u)}function qM(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 $M(e,n),!0}function JM(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 YM(e){let t=WM(e),n=XM(t);return t.length===e.length?n:[...n,...XM(e.map(e=>[e]))]}function XM(e){let t=(e,t)=>e.reduce((e,n)=>e+t(n),0)/e.length,n=[...e].sort((e,n)=>t(e,FM)-t(n,FM)||t(e,ZM)-t(n,ZM)||PM(e[0],n[0])),r=[...e].sort((e,n)=>t(e,ZM)-t(n,ZM)||t(e,FM)-t(n,FM)||PM(e[0],n[0]));return n.every((e,t)=>e===r[t])?[n]:[n,r]}function ZM(e){return e.coordinate}function QM(e,t){return e.reduce((e,n,r)=>e+Math.abs(n.coordinate-t[r]),0)}function $M(e,t){e.forEach((e,n)=>{LM(e,t[n]),e.coordinate=t[n]})}function eN(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=>BM(l,e)))return!1;let c=o+r*t;return LM(l,c),aN(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||LM(l,l.coordinate)}})}function tN(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:EM(e.points,t,r?.[0]??``,r?.[1]??``),crossed:oN(e.points),own:i,intruded:iN(e.points,t,i),beforeDelta:nN(e,-1),afterDelta:nN(e,1)}}function nN(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 rN(e,t){return Math.abs(t)>=.5&&e*t<=0}function iN(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(TM(i.x,i.y,c.x,c.y,n,a,o,s)){r++;break}}}return r}function aN(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&&rN(nN(e,-1),r.beforeDelta)||e.index+2===e.points.length-1&&rN(nN(e,1),r.afterDelta)||iN(e.points,t,r.own)>r.intruded||!r.crossed&&oN(e.points))return!1;let c=n.get(e.relationshipId);return EM(e.points,t,c?.[0]??``,c?.[1]??``)<=r.blocked}function oN(e){for(let t=0;t+1<e.length;t++)for(let n=t+2;n+1<e.length;n++)if(sN(e[t],e[t+1],e[n],e[n+1]))return!0;return!1}function sN(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 cN={[H.top]:R.top,[H.bottom]:R.bottom,[H.left]:R.left,[H.right]:R.right},lN=Math.PI*2,uN=.15,dN={[H.top]:-Math.PI,[H.right]:-Math.PI/2,[H.bottom]:0,[H.left]:Math.PI/2},fN={[H.top]:!1,[H.right]:!1,[H.bottom]:!0,[H.left]:!0};function pN(e,t=`document`){Nh(t);let{tableIds:n,relationshipIds:r}=Xg(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=TN(s);for(let n of s){let r=wN(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)bN(yN(e,c,s,t),r);else{let n=yN(e,c,s,t),o=yN(e,c,f,t),[l,u]=kN(n.objectPoint,o.objectPoint,r);n[l].push({id:r.id,isStart:!0,point:i,angle:ON(l,n,o),tie:d.tieAt(r.id,i.tableId,a.tableId)}),o[u].push({id:r.id,isStart:!1,point:a,angle:ON(u,o,n),tie:d.tieAt(r.id,a.tableId,i.tableId)})}}}for(let e of c.values())for(let t of gh)AN(t,e,u);for(let[e,n]of l.entries())kh(e,u.get(n.id)??[0,0],t),Fh(e,n,t);t===`document`?hN(e,l,u):mN(l,u,t)}function mN(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}=CM(i,t.get(e)??[0,0]);jh(r,[s,c],n)}}function hN(e,t,n){let r=wM(e),i=sM(e),a=gM(i,r),o=i.entries,s=new Map,c=new Set,l=mM();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}=CM(i,n.get(t)??[0,0]),_=o.get(t),v,y;a!==null&&_!==void 0&&vN(_,h,g,p,m)&&!pM(_.bounds,a)?(v=_.pristine,y=gN(v)):(y=AM(h,p.direction,g,m.direction,r,p.tableId,m.tableId),v=gN(y),c.add(t),_&&hM(l,_.nudged),hM(l,v)),u.set(t,y),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:y,bounds:dM(v)})}if(a)for(let[e,t]of o)s.has(e)||hM(l,t.nudged);RM(u,r,d,a===null?void 0:_N(o,c,l));for(let[e,t]of u){let n=f.get(e);n&&jh(n,t)}i.entries=s}function gN(e){return e.map(({x:e,y:t})=>({x:e,y:t}))}function _N(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 vN(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 yN(e,t,n,r){let i=t.get(n.id);if(!i){let a=k_(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 bN(e,t){let{rt:n,width:r,height:i}=e.objectPoint,a=e.selfCount++,o=CN(Math.min(r,i)*uN,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 xN(e,t){let{width:n,height:r}=e.objectPoint;return CN(Math.min(n,r)*uN,20,60)+t*14}function SN(e){return e.selfCount?xN(e,e.selfCount-1)+8:0}function CN(e,t,n){return Math.min(Math.max(e,t),n)}function wN({id:e,start:t,end:n}){return{id:e,start:vh(t),end:vh(n)}}function TN(e){let t=new Map;for(let{id:n,start:r,end:i}of e){let e=EN(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 EN(e,t){return e<t?`${e}|${t}`:`${t}|${e}`}function DN(e){let t=e%lN;return t<0?t+lN:t}function ON(e,t,n){return DN(Math.atan2(n.centerY-t.centerY,n.centerX-t.centerX)-dN[e])}function kN(e,t,n){let r=[H.bottom,H.bottom],i=A_(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 gh)for(let o of gh){let s=a,c=o,l=A_(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=cN[s],n.end.x=t[c].x,n.end.y=t[c].y,n.end.direction=cN[c])}return r}function AN(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=SN(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=fN[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 jN=(e,t)=>e.pipe(He(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)}}),MN=(e,t)=>e.pipe(He(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))?rh.dash:rh.ring;s!==r&&(e.startRelationshipType=s)}}),NN=V([LS.type,zS.type,Hx.type]),PN=({tags:e})=>!x(e)&&G(e,Vg.drag)?Ue(5):Ue(0,we),FN=(e,t)=>e.pipe(Be(e=>{NN(e.type)||u_()}),Ve(PN,{leading:!1,trailing:!0})).subscribe(()=>{pN(t())}),IN=V([bv.type,Bv.type,Hx.type]),LN=V([xg.type,Cg.type,Tg.type,Dg.type]),RN=({id:e})=>[e],zN=({ids:e})=>e,BN=({tableId:e})=>[e],VN=(e,{kind:t})=>t,HN=()=>ag.flow,UN=(e,{kind:t})=>t??ug(e)?.kind??null,WN={[_g.type]:VN,[yg.type]:VN,[jg.type]:VN,[Fg.type]:HN,[Ng.type]:UN,[kg.type]:UN},GN={[FS.type]:RN,[VS.type]:RN,[zS.type]:RN,[US.type]:RN,[GS.type]:RN,[hS.type]:RN,[_S.type]:RN,[LS.type]:zN,[kg.type]:zN,[fC.type]:BN,[mC.type]:BN,[gC.type]:BN,[vC.type]:BN,[bC.type]:BN,[SC.type]:BN,[EC.type]:BN};function KN(e,t){let{tableIds:n,relationshipIds:r}=Xg(e,t);return new Set([...n,...r])}function qN(e,t,n,r){if(IN(t.type)||LN(t.type))return!1;let i=WN[t.type];if(i&&i(e,t.payload)!==r)return!1;let a=GN[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=[ag.flow],YN=(e,t)=>{let n={flow:new Set},r=new Set;return e.pipe(Oe(e=>{let i=t(),a=!1;for(let t of JN)dg(i,t)&&qN(i,e,n[t],t)&&(r.add(t),a=!0);return a}),Ve(PN,{leading:!1,trailing:!0})).subscribe(()=>{let e=t(),i=[...r];r.clear();for(let t of i)dg(e,t)&&(pN(e,t),n[t]=KN(e,t))})},XN=[bv,Bv,hS,_S,Hx,FS,VS,LS,zS,US,GS,fC,mC,gC,vC,bC,SC,ZS],ZN=[EC],QN=[_g,yg,xg,Cg,Tg,Dg,kg,jg,Ng,Fg],$N=[[[mC,EC,Hy,Ky],jN],[[mC,AC,Hy,Ky],MN],[XN,FN],[[...XN,...ZN,...QN],YN]],eP=[[[Hy,Ky],(e,t,n)=>e.pipe(He(5,void 0,{leading:!1,trailing:!0})).subscribe(()=>{let e=t();w_(e,n),pN(e)})],[[VS],(e,t)=>e.pipe(Pe(we)).subscribe(()=>{let{doc:e,editor:n}=t(),r=n.drawRelationship?.start;!r||e.tableIds.includes(r.tableId)||(n.drawRelationship=null)})]],tP=e=>e.pipe(Pe(we)),nP=[[[EC],(e,t)=>tP(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))})],[[hS],(e,t)=>tP(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})],[[_S],(e,t)=>tP(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})],[[Hy,Ky],(e,t)=>tP(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)}})]],rP=[...eP,...nP,...$N];function iP(e){let t=()=>e.state,n=rP.map(([n,r])=>{let i=new Se;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 aP(e,{getReadonly:t=()=>!1,getHistory:n,manualStreamFlush:r=!1,observable:i=!0}={}){let a=new Set,o=iM(e,i),s=iP(o),c={notify:e=>o.dispatch(ky(e)),dispatch:o.dispatchSync,getNextVersion:()=>e.clock.getNextVersion()},l=n?.(c)??Wj(c);l.setLimit(2048);let u=()=>ug(o.state),d=new Se,f=d.pipe(nM(u)),p=new Se,m=new Se,h=new Se,g=m.pipe(Ie(void 0),Le(()=>p.pipe(Yj(Pj,[[`@@move`,jj],[`@@scroll`,Nj],[`@@color`,Mj]],r?Zj(h):void 0)))),_=new xe(e=>o.subscribe(t=>e.next(t))).pipe(Kj(Tj),Qj(t,[Vg.shared]),Ee(200)),v=(...t)=>{let n=e.clock.getNextVersion();return Fu(o.state,o.context,t).map(e=>(x(e.version)&&(e.version=n),e))},y=(...e)=>{let t=v(e);d.next(t)},ee=(...e)=>{queueMicrotask(()=>y(e))},te=()=>{Array.from(a).forEach(e=>le(e)?e():e.unsubscribe()),a.clear(),o.destroy(),s.destroy(),l.clear(),d.complete(),h.complete()},ne=()=>{m.next(),l.clear()},re=()=>{t()||u()||l.undo()},ie=()=>{t()||u()||l.redo()},ae=()=>{r&&h.next()};return a.add(g.subscribe($C(o,l))).add(f.pipe(Kj(Fj),Xj([Vg.changeOnly,Vg.shared]),Qj(t),rM(u)).subscribe(p)).add(f.pipe(Qj(t,[Vg.shared]),rM(u,[Vg.shared])).subscribe(o.dispatchSync)).add(o.subscribe(t=>{t.forEach(t=>e.clock.merge(t.version))})),Object.freeze({...o,dispatch:ee,dispatchSync:y,destroy:te,undo:re,redo:ie,history:l,resetHistory:ne,change$:_,flushStreamBuffers:ae})}const oP={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 sP=new WeakMap,cP=class{constructor(){Lj(this,sP,new Set)}on(e){return zj(sP,this).has(e)||zj(sP,this).add(e),()=>{zj(sP,this).delete(e)}}emit(e){zj(sP,this).forEach(t=>{JC(Reflect.get(t,e.type),e)})}clear(){zj(sP,this).clear()}};const lP=k(oP.openColorPicker);k(oP.closeColorPicker),k(oP.openToast),k(oP.openTableProperties);const uP=k(oP.dragendColumnAll);k(oP.copy),k(oP.paste),k(oP.schemaGC),k(oP.toggleSearch),k(oP.openThemeBuilder),k(oP.setThemeOptions),k(oP.mouseTrackerStart),k(oP.mouseTrackerEnd),k(oP.openDiffViewer),k(oP.openAutomaticTablePlacement);const dP=k(oP.duplicateDragStart);k(oP.dragSelectStart);const fP=Ze();let pP=fP.os.name===`mac`,mP=fP.os.name===`ios`;fP.os.name,fP.os.name,fP.browser.name,fP.browser.name,fP.browser.name,Qe(e=>{pP=e.os.name===`mac`,mP=e.os.name===`ios`,e.os.name,e.os.name,e.browser.name,e.browser.name,e.browser.name});const hP=()=>pP||mP,gP={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(gP);const _P=()=>({[gP.edit]:[{shortcut:`Enter`}],[gP.stop]:[{shortcut:`Escape`}],[gP.search]:[{shortcut:`$mod+KeyK`,preventDefault:!0,stopPropagation:!0}],[gP.undo]:[{shortcut:`$mod+KeyZ`,preventDefault:!0,stopPropagation:!0}],[gP.redo]:[{shortcut:`$mod+Shift+KeyZ`,preventDefault:!0,stopPropagation:!0}],[gP.addTable]:[{shortcut:`Alt+KeyN`,preventDefault:!0}],[gP.addColumn]:[{shortcut:`Alt+Enter`,preventDefault:!0}],[gP.addMemo]:[{shortcut:`Alt+KeyM`,preventDefault:!0}],[gP.removeTable]:[{shortcut:`$mod+Backspace`,preventDefault:!0},{shortcut:`$mod+Delete`,preventDefault:!0}],[gP.removeColumn]:[{shortcut:`Alt+Backspace`,preventDefault:!0},{shortcut:`Alt+Delete`,preventDefault:!0}],[gP.primaryKey]:[{shortcut:`Alt+KeyK`,preventDefault:!0}],[gP.selectAllTable]:[{shortcut:`$mod+KeyA`,preventDefault:!0},{shortcut:`$mod+Alt+KeyA`,preventDefault:!0}],[gP.selectAllColumn]:[{shortcut:`Alt+KeyA`,preventDefault:!0}],[gP.relationshipZeroOne]:[{shortcut:`$mod+Alt+Digit1`,preventDefault:!0}],[gP.relationshipZeroN]:[{shortcut:`$mod+Alt+Digit2`,preventDefault:!0}],[gP.relationshipOneOnly]:[{shortcut:`$mod+Alt+Digit3`,preventDefault:!0}],[gP.relationshipOneN]:[{shortcut:`$mod+Alt+Digit4`,preventDefault:!0}],[gP.tableProperties]:[{shortcut:`Alt+Space`,preventDefault:!0}],[gP.focusView]:[{shortcut:`Alt+KeyF`,preventDefault:!0,stopPropagation:!0}],[gP.zoomIn]:[{shortcut:`$mod+Equal`,preventDefault:!0,stopPropagation:!0}],[gP.zoomOut]:[{shortcut:`$mod+Minus`,preventDefault:!0,stopPropagation:!0}],[gP.zoomReset]:[{shortcut:`$mod+Digit0`,preventDefault:!0,stopPropagation:!0}],[gP.handTool]:[{shortcut:`Space`,preventDefault:!0}],[gP.zenMode]:[{shortcut:`Alt+KeyZ`,preventDefault:!0,stopPropagation:!0}]}),vP={Shift:`Shift`,Meta:`Meta`,Alt:`Alt`,Control:`Control`};vP.Shift,vP.Meta,vP.Alt,vP.Control,vP.Shift,vP.Meta,vP.Alt,vP.Control;function yP(e){return hP()?e.metaKey:e.ctrlKey}function bP(e,t){let{devtools:n=!0,...r}=t??{},i=Uj(e),a=aP(i,r),o=ja(_P(),{shallow:!0}),s=new Se,c=new Se,l=new cP;return Object.freeze({...i,actions:wj,store:a,keyBindingMap:o,shortcut$:s,keydown$:c,emitter:l})}const xP=xi({}),SP=(e,t)=>Ka(e,{...xP,value:t??xP.value});function CP(e){e.store.dispatchSync(Wy()),e.store.destroy(),e.keydown$.complete(),e.shortcut$.complete(),e.emitter.clear()}const wP=[`table`,`memo`,`relationship`],TP=e=>typeof e==`string`&&wP.includes(e);function EP(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 DP=(e,t)=>!!(e&&t&&e.x===t.x&&e.y===t.y),OP=new WeakMap,kP=`mousedown.sceneHit touchstart.sceneHit contextmenu.sceneHit`;function AP(e){return e.on(kP,t=>{let n=t.evt,r=EP(n),i=OP.get(e),a=t.target===e?null:MP(t.target),o=n.type===`contextmenu`&&DP(i?.point,r)?i?.hit??null:null;OP.set(e,{evt:n,hit:a??o,point:r})}),()=>{e.off(kP),OP.delete(e)}}function jP(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 MP(e){let t=e;for(;t;){let e=t.getAttr(`kind`);if(TP(e))return{kind:e,id:jP(t,e)};t=t.getParent()}return null}const NP=xi({}),PP=e=>Ka(e,NP);function FP({app:e,container:t,scene:n,width:r,height:i,theme:a}){let o=new y({container:t,width:r,height:i}),s={host:o.container(),parentElement:null},c=qa(s,xP,e),l=a?qa(s,NP,a):null,u=AP(o);return qf(o,n),{stage:o,destroy:()=>{u(),qf(o,null),l?.destroy(),c.destroy(),o.destroy()}}}const IP=e=>new Promise(t=>setTimeout(t,e)),LP=32767;function RP(e,t,n){let r=Math.max(t,n),i=t*n;return r<=0||i<=0?e:Math.min(e,LP/r,16384/Math.sqrt(i))}function zP({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 BP(e){let{settings:{show:t},doc:{relationshipIds:n},collections:r}=e,i=I_(e);if(G(t,F.relationship)){let e=N(r).collection(`relationshipEntities`).selectByIds(n);for(let t of e){let e=zh(t);i=i?F_(i,e):e}}return zP(i??{x:0,y:0,width:0,height:0},80)}function VP({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,LP/i,Math.sqrt(268435456/a))}const HP={"arrow-right":$e,atom:et,braces:tt,brackets:nt,"case-sensitive":rt,check:it,"chevron-down":at,"chevron-right":ot,code:st,contrast:ct,copy:lt,database:ut,diff:dt,"external-link":ft,eye:pt,"file-diff":mt,"file-image":ht,"file-input":gt,"file-output":_t,fullscreen:vt,"grip-vertical":yt,hand:bt,"key-round":xt,maximize:St,minimize:Ct,minus:wt,"moon-star":Tt,"mouse-pointer-2":Et,network:Dt,palette:Ot,plus:kt,"redo-2":At,"refresh-cw":jt,"rotate-ccw-clock":Mt,search:Nt,settings:Pt,"share-2":Ft,spline:It,"sticky-note":Lt,sun:Rt,table:zt,"table-2":Bt,"table-properties":Vt,"undo-2":Ht,"wand-sparkles":Ut,waypoints:Wt,workflow:Gt,x:Kt},UP={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`}]]},WP={};GP();function GP(){for(let e of Object.keys(HP))WP[e]={name:e,node:HP[e]};for(let e of Object.keys(UP))WP[e]={name:e,node:UP[e]}}function KP(e){return WP[e]}const qP=`-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', 'Open Sans', system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'`;Vd.global`
26
+ `,singleQuote:`'`,backtick:"`",whiteSpace:/\s/,string:/\S/,breakString:/;|,|\(|\)|\[|\]|\.|=/,equal:`=`,period:`.`,comma:`,`,semicolon:`;`,leftParent:`(`,rightParent:`)`,leftBracket:`[`,rightBracket:`]`},PO=e=>t=>e===t,FO=e=>t=>e.test(t),Q={doubleQuote:PO(NO.doubleQuote),dash:PO(NO.dash),slash:PO(NO.slash),asterisk:PO(NO.asterisk),newLine:PO(NO.newLine),singleQuote:PO(NO.singleQuote),backtick:PO(NO.backtick),whiteSpace:FO(NO.whiteSpace),string:FO(NO.string),breakString:FO(NO.breakString),equal:PO(NO.equal),period:PO(NO.period),comma:PO(NO.comma),semicolon:PO(NO.semicolon),leftParent:PO(NO.leftParent),rightParent:PO(NO.rightParent),leftBracket:PO(NO.leftBracket),rightBracket:PO(NO.rightBracket)};function IO(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:MO.leftParent,value:i}),n++;continue}if(Q.rightParent(i)){t.push({type:MO.rightParent,value:i}),n++;continue}if(Q.comma(i)){t.push({type:MO.comma,value:i}),n++;continue}if(Q.period(i)){t.push({type:MO.period,value:i}),n++;continue}if(Q.equal(i)){t.push({type:MO.equal,value:i}),n++;continue}if(Q.semicolon(i)){t.push({type:MO.semicolon,value:i}),n++;continue}if(Q.rightBracket(i)){t.push({type:MO.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:MO.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:MO.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:MO.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:MO.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:MO.string,value:a});continue}n++}return t}var LO=`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(`.`),RO=`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(`.`),zO=`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(`.`),BO=`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(`.`),VO=`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(`.`),HO=`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(`.`),UO=`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(`.`),WO=`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(`.`),GO=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}},KO=GO(MO.string),qO=GO(MO.equal),JO=GO(MO.period),YO=GO(MO.comma),XO=GO(MO.semicolon),ZO=GO(MO.leftParent),QO=GO(MO.rightParent);MO.leftBracket,MO.rightBracket;var $O=$(`CREATE`),ek=$(`ALTER`),tk=$(`DROP`),nk=$(`USE`),rk=$(`RENAME`),ik=$(`DELETE`),ak=$(`SELECT`),ok=$(`TABLE`),sk=$(`INDEX`),ck=$(`UNIQUE`),lk=$(`ADD`),uk=$(`PRIMARY`),dk=$(`KEY`),fk=$(`CONSTRAINT`),pk=$(`FOREIGN`),mk=$(`NOT`),hk=$(`NULL`),gk=$(`DEFAULT`),_k=$(`COMMENT`),vk=$(`REFERENCES`),yk=$(`ASC`),bk=$(`DESC`),xk=$(`ON`),Sk=$(`AUTO_INCREMENT`),Ck=$(`AUTOINCREMENT`),wk=$(`IF`),Tk=$(`EXISTS`),Ek=$(`ONLY`),Dk=$(`IS`),Ok=$(`COLUMN`),kk=$(`CHARACTER`),Ak=$(`SET`),jk=$(`COLLATE`),Mk=$(`ENFORCED`),Nk=$(`RELY`),Pk=$(`NORELY`),Fk=$(`DEFERRABLE`),Ik=$(`INITIALLY`),Lk=$(`DEFERRED`),Rk=$(`IMMEDIATE`),zk=$(`IDENTITY`),Bk=$(`FUNCTION`),Vk=$(`CLUSTER`),Hk=$(`BY`),Uk=$(`FULLTEXT`),Wk=$(`SPATIAL`),Gk=e=>{let t=Mk(e),n=Nk(e),r=Pk(e),i=Fk(e),a=Ik(e),o=Lk(e),s=Rk(e);return e=>t(e)||n(e)||r(e)||i(e)||a(e)||o(e)||s(e)},Kk=[[`SET`,`NULL`],[`SET`,`DEFAULT`],[`NO`,`ACTION`],[`CASCADE`],[`RESTRICT`]],qk=[`FULL`,`PARTIAL`,`SIMPLE`],Jk=e=>{let t=t=>{let n=e[t];return n&&n.type===MO.string&&!n.quoted?n.value.toUpperCase():``};return e=>t(e)===`ON`&&[`DELETE`,`UPDATE`].includes(t(e+1))?2+(Kk.find(n=>n.every((n,r)=>t(e+2+r)===n))?.length??0):t(e)===`MATCH`&&qk.includes(t(e+1))?2:0},Yk=e=>{let t=Uk(e),n=Wk(e),r=sk(e),i=dk(e);return e=>(t(e)||n(e))&&(r(e+1)||i(e+1))},Xk=[`ARRAY`,`MAP`,`STRUCT`],Zk=e=>{let t=KO(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||!Xk.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}},Qk=e=>{let t=Sk(e),n=Ck(e),r=zk(e);return e=>t(e)||n(e)||r(e)},$k=e=>{let t=Vk(e),n=Hk(e);return e=>t(e)&&n(e+1)},eA=e=>{let t=_k(e),n=xk(e);return e=>t(e)&&n(e+1)},tA=e=>{let t=eA(e),n=ok(e);return e=>t(e)&&n(e+2)},nA=e=>{let t=eA(e),n=Ok(e);return e=>t(e)&&n(e+2)},rA=e=>{let t=$O(e),n=ek(e),r=tk(e),i=nk(e),a=rk(e),o=ik(e),s=ak(e),c=eA(e);return e=>t(e)||n(e)||r(e)||i(e)||a(e)||o(e)||s(e)||c(e)},iA=[`OR`,`REPLACE`,`TRANSIENT`,`TEMPORARY`,`TEMP`,`LOCAL`,`GLOBAL`,`VOLATILE`,`UNLOGGED`,`HYBRID`,`ICEBERG`,`DYNAMIC`,`EXTERNAL`],aA=e=>{let t=$O(e),n=ok(e),r=KO(e),i=Bk(e),a=wk(e),o=mk(e),s=Tk(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||!iA.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)}},oA=e=>{let t=kk(e),n=Ak(e);return e=>t(e)&&n(e+1)},sA=e=>{let t=aA(e);return e=>t(e)>0},cA=e=>{let t=$O(e),n=sk(e),r=ck(e);return e=>t(e)&&r(e+1)&&n(e+2)},lA=e=>{let t=$O(e),n=sk(e),r=cA(e);return e=>t(e)&&n(e+1)||r(e)},uA=e=>{let t=ek(e),n=ok(e);return e=>t(e)&&n(e+1)},dA=e=>{let t=KO(e),n=JO(e);return e=>{if(!t(e))return 0;let r=e+1;for(;n(r)&&t(r+1);)r+=2;return r-e}},fA=e=>{let t=uA(e),n=Ek(e),r=lk(e),i=fk(e),a=KO(e),o=dA(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}}},pA=e=>{let t=fA(e);return e=>t(e).length},mA=e=>{let t=fA(e);return e=>t(e).only},hA=e=>{let t=pA(e),n=uk(e),r=dk(e);return e=>{let i=t(e);return i>0&&n(e+i)&&r(e+i+1)}},gA=e=>{let t=pA(e),n=pk(e),r=dk(e);return e=>{let i=t(e);return i>0&&n(e+i)&&r(e+i+1)}},_A=e=>{let t=pA(e),n=ck(e);return e=>{let r=t(e);return r>0&&n(e+r)}},vA=Array.from(new Set([...LO,...RO,...zO,...BO,...VO,...HO,...UO,...WO].map(e=>e.toUpperCase()))),yA=(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})(vA),bA=e=>{let t=KO(e),n=ZO(e),r=QO(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 yA.get(i)??[]){let t=a(n,e);if(t)return t}return+!!vA.includes(i)}};function xA(e,t){let n=rA(e),r=KO(e),i=ZO(e),a=QO(e),o=JO(e),s=XO(e),c=qO(e),l=_k(e),u=$k(e),d=aA(e),f=()=>t.value<e.length,p={type:AO.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}=SA(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 SA(e,t){let n=KO(e),r=ZO(e),i=QO(e),a=YO(e),o=fk(e),s=sk(e),c=uk(e),l=pk(e),u=Qk(e),d=ck(e),f=hk(e),p=mk(e),m=gk(e),h=_k(e),g=bk(e),_=yk(e),v=dk(e),y=qO(e),ee=oA(e),te=jk(e),ne=Gk(e),re=bA(e),ie=Zk(e),ae=Jk(e),b=Yk(e),oe=()=>t.value<e.length,se=e=>o(e)||c(e)||l(e)||d(e)||s(e)||v(e)||b(e),ce=()=>{let o=[],s={name:``,sort:jO.asc},c=!1;for(t.value++;oe()&&!i(t.value);){if(r(t.value)){c||=!s.name;let e=0;for(;oe();){if(r(t.value))e++;else if(i(t.value)&&--e===0)break;t.value++}}n(t.value)&&!g(t.value)&&!_(t.value)&&(s.name=e[t.value].value),g(t.value)&&(s.sort=jO.desc),a(t.value)&&(o.push(s),s={name:``,sort:jO.asc}),t.value++}return s.name!==``&&o.push(s),t.value++,c?[]:o},le=[],x=[],ue=[],S=[],de=[],C={name:``,dataType:``,default:``,comment:``,primaryKey:!1,autoIncrement:!1,unique:!1,nullable:!0},fe=!1;for(;oe();){let g=e[t.value],_=ie(t.value);if(_){let n=t.value+_,r=[];for(;t.value<n;)r.push(a(t.value)?`,`:e[t.value].value),t.value++;C.dataType=r.reduce((e,t)=>!e||t===`,`?e+t:`${e} ${t}`,``);continue}let pe=ae(t.value);if(pe){t.value+=pe;continue}if(!C.name&&se(t.value)&&(fe=!0),fe&&b(t.value)){t.value++;continue}if(n(t.value)&&!fe&&!C.name&&!p(t.value)&&!ne(t.value)){C.name=g.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)){g=e[++t.value],n(t.value)&&t.value++;continue}if(c(t.value)){if(g=e[++t.value],v(t.value)){if(g=e[++t.value],fe&&n(t.value)&&(g=e[++t.value]),r(t.value)){for(g=e[++t.value];oe()&&!i(t.value);)n(t.value)&&S.push(g.value.toUpperCase()),g=e[++t.value];t.value++}else C.primaryKey=!0}continue}if(l(t.value)){let n=CA(e,t);n&&ue.push(n);continue}if(s(t.value)||v(t.value)){if(g=e[++t.value],n(t.value)){let n=g.value;if(g=e[++t.value],r(t.value)){let e=ce();e.length&&x.push({name:n,unique:!1,columns:e})}}continue}if(d(t.value)){g=e[++t.value];let a=s(t.value);(v(t.value)||a)&&(g=e[++t.value]);let o=``;if(!C.name&&n(t.value)&&(o=g.value,g=e[++t.value]),a&&o&&r(t.value)){let e=ce();e.length>1?x.push({name:o,unique:!0,columns:e}):de.push(...e.map(e=>e.name.toUpperCase()));continue}if(r(t.value)){for(g=e[++t.value];oe()&&!i(t.value);)n(t.value)&&de.push(g.value.toUpperCase()),g=e[++t.value];t.value++}else C.unique=!0;continue}if(p(t.value)){g=e[++t.value],f(t.value)?(C.nullable=!1,t.value++):ne(t.value)&&t.value++;continue}if(ne(t.value)){t.value++;continue}if(m(t.value)){g=e[++t.value],n(t.value)&&(C.default=g.quoted?`'${g.value.replaceAll(`'`,`''`)}'`:g.value,t.value++);continue}if(h(t.value)){g=e[++t.value],y(t.value)&&(g=e[++t.value]),n(t.value)&&(C.comment=g.value,t.value++);continue}if(u(t.value)){C.autoIncrement=!0,t.value++;continue}if(ee(t.value)){t.value+=2,n(t.value)&&t.value++;continue}if(te(t.value)){t.value++,y(t.value)&&t.value++,n(t.value)&&t.value++;continue}let me=re(t.value);if(me&&(fe||C.dataType)){t.value+=me;continue}if(me){let a=t.value+me,o=``,s=0;for(;t.value<a;)g=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))?` ${g.value}`:g.value:o?` ${g.value}`:g.value,t.value++;for(;s>0;)o+=`)`,s--;C.dataType=o;continue}if(a(t.value)){(C.name||C.dataType)&&le.push(C),C={name:``,dataType:``,default:``,comment:``,primaryKey:!1,autoIncrement:!1,unique:!1,nullable:!0},fe=!1,t.value++;continue}if(i(t.value)){t.value++;break}t.value++}return!le.includes(C)&&(C.name||C.dataType)&&le.push(C),le.forEach(e=>{S.includes(e.name.toUpperCase())&&(e.primaryKey=!0),de.includes(e.name.toUpperCase())&&(e.unique=!0)}),{columns:le,indexes:x,foreignKeys:ue}}function CA(e,t){let n=KO(e),r=ZO(e),i=QO(e),a=vk(e),o=JO(e),s=dk(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 wA(e,t){let n=rA(e),r=XO(e),i=KO(e),a=fk(e),o=JO(e),s=ok(e),c=pk(e),l=mA(e)(t.value),u=()=>t.value<e.length,d={type:AO.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=CA(e,t);n&&(d.columnNames=n.columnNames,d.refTableName=n.refTableName,d.refColumnNames=n.refColumnNames);continue}t.value++}return d}function TA(e,t){let n=rA(e),r=XO(e),i=KO(e),a=ZO(e),o=QO(e),s=fk(e),c=uk(e),l=JO(e),u=dk(e),d=ok(e),f=mA(e)(t.value),p=()=>t.value<e.length,m={type:AO.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 EA(e,t){let n=rA(e),r=XO(e),i=KO(e),a=fk(e),o=JO(e),s=ok(e),c=ck(e),l=ZO(e),u=QO(e),d=mA(e)(t.value),f=()=>t.value<e.length,p={type:AO.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 DA(e,t){let n=rA(e),r=KO(e),i=JO(e),a=XO(e),o=Dk(e),s=hk(e),c=()=>t.value<e.length,l={type:AO.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 OA(e,t){let n=rA(e),r=KO(e),i=JO(e),a=XO(e),o=Dk(e),s=hk(e),c=()=>t.value<e.length,l={type:AO.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 kA(e,t){let n=rA(e),r=XO(e),i=ck(e),a=KO(e),o=ZO(e),s=QO(e),c=YO(e),l=sk(e),u=xk(e),d=bk(e),f=yk(e),p=cA(e),m=()=>t.value<e.length,h={type:AO.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:jO.asc};for(;m()&&!s(t.value);)a(t.value)&&!d(t.value)&&!f(t.value)&&(r.name=n.value),d(t.value)&&(r.sort=jO.desc),c(t.value)&&(h.columns.push(r),r={name:``,sort:jO.asc}),n=e[++t.value];!h.columns.includes(r)&&r.name!==``&&h.columns.push(r),t.value++}continue}t.value++}return h}function AA(e){let t=[],n={value:0},r=()=>n.value<e.length,i=sA(e),a=lA(e),o=hA(e),s=gA(e),c=_A(e),l=tA(e),u=nA(e);for(;r();){if(i(n.value)){t.push(xA(e,n));continue}if(a(n.value)){t.push(kA(e,n));continue}if(o(n.value)){t.push(TA(e,n));continue}if(s(n.value)){t.push(wA(e,n));continue}if(c(n.value)){t.push(EA(e,n));continue}if(l(n.value)){t.push(OA(e,n));continue}if(u(n.value)){t.push(DA(e,n));continue}n.value++}return t}var jA=e=>AA(IO(e));function MA(e,t,n){let r=qp({}),i=PA(NA(jA(e))),a=qh(i.length*100);return r.settings.width=a,r.settings.height=a,i.forEach(e=>FA(r,e,t)),IA(r,i),LA(r,i),qm(n?n(r):r)}function NA(e){let t={tables:[],indexes:[],primaryKeys:[],foreignKeys:[],uniques:[],tableComments:[],columnComments:[]};for(let n of e)switch(n.type){case AO.createTable:n.name&&t.tables.push(n);break;case AO.createIndex:n.tableName&&n.columns.length&&t.indexes.push(n);break;case AO.alterTableAddPrimaryKey:n.name&&n.columnNames.length&&t.primaryKeys.push(n);break;case AO.alterTableAddForeignKey:n.name&&n.columnNames.length&&n.refTableName&&n.refColumnNames.length&&n.columnNames.length===n.refColumnNames.length&&t.foreignKeys.push(n);break;case AO.alterTableAddUnique:n.name&&n.columnNames.length&&t.uniques.push(n);break;case AO.commentOnTable:n.name&&t.tableComments.push(n);break;case AO.commentOnColumn:n.tableName&&n.columnName&&t.columnComments.push(n)}return t}function PA({tables:e,indexes:t,primaryKeys:n,foreignKeys:r,uniques:i,tableComments:a,columnComments:o}){return t.forEach(t=>{let n=Tw(e,t.tableName);n&&n.indexes.push({name:t.name,unique:t.unique,columns:t.columns})}),n.forEach(t=>{let n=Tw(e,t.name);n&&t.columnNames.forEach(e=>{let t=Tw(n.columns,e);t&&(t.primaryKey=!0)})}),i.forEach(t=>{let n=Tw(e,t.name);n&&t.columnNames.forEach(e=>{let t=Tw(n.columns,e);t&&(t.unique=!0)})}),r.forEach(t=>{let n=Tw(e,t.name);n&&n.foreignKeys.push({columnNames:t.columnNames,refTableName:t.refTableName,refColumnNames:t.refColumnNames})}),a.forEach(({name:t,comment:n})=>{let r=Tw(e,t);r&&(r.comment=n)}),o.forEach(({tableName:t,columnName:n,comment:r})=>{let i=Tw(e,t);if(!i)return;let a=Tw(i.columns,n);a&&(a.comment=r)}),e}function FA({doc:e,collections:t},n,{toWidth:r}){let i=PS({name:n.name,comment:n.comment,ui:{widthName:U(r(n.name)),widthComment:U(r(n.comment))}});n.columns.forEach(e=>{let n=dC({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 IA({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=Tw(r,n.name);if(!a)return;let o=i.selectByIds(a.columnIds);n.foreignKeys.forEach(n=>{let s=Tw(r,n.refTableName);if(!s)return;let c=i.selectByIds(s.columnIds),l=[],u=[];n.refColumnNames.forEach(e=>{let t=Tw(c,e);t&&l.push(t)}),n.columnNames.forEach(e=>{let t=Tw(o,e);t&&(u.push(t),G(t.ui.keys,B.primaryKey)?t.ui.keys|=B.foreignKey:t.ui.keys=B.foreignKey)});let d=mS({identification:!u.some(e=>!(G(e.ui.keys,B.primaryKey)&&G(e.ui.keys,B.foreignKey))),relationshipType:nh.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 LA({doc:e,collections:t},n){let r=N(t).collection(`tableEntities`).selectByIds(e.tableIds);n.forEach(n=>{n.indexes.forEach(i=>{let a=Tw(r,n.name);if(!a)return;let o=N(t).collection(`tableColumnEntities`).selectByIds(a.columnIds),s=[],c=ix({name:i.name,tableId:a.id,unique:i.unique});i.columns.forEach(e=>{let t=Tw(o,e.name);if(!t)return;let n=xx({indexId:c.id,columnId:t.id,orderType:e.sort===jO.asc?ih.ASC:ih.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 RA({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 zA({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 BA({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(FS({id:n,ui:{x:e.x,y:e.y,zIndex:e.zIndex,color:t.ui.color}}),US({id:n,value:t.name}),GS({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(fC(r),gC({...r,value:t.name}),bC({...r,value:t.dataType}),SC({...r,value:t.default}),vC({...r,value:t.comment}),EC({...r,value:G(t.options,z.primaryKey)}),AC({...r,value:G(t.options,z.notNull)}),OC({...r,value:G(t.options,z.unique)}),wC({...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=VA(e.start.columnIds,d),i=VA(e.end.columnIds,d);!r||!i||o.push(hS({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=VA(e.indexColumns.map(({columnId:e})=>e),d);if(!n)continue;let r=w();o.push(ax({id:r,tableId:t}),lx({id:r,tableId:t,value:e.name}),dx({id:r,tableId:t,value:e.unique})),e.indexColumns.forEach(({orderType:e},i)=>{let a=w(),s=n[i];o.push(Cx({id:a,indexId:r,tableId:t,columnId:s}),kx({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(Bx({id:n,ui:{x:t.x,y:t.y,zIndex:t.zIndex,color:e.ui.color,width:e.ui.width,height:e.ui.height}}),Jx({id:n,value:e.value}))}return{actions:o,tableIds:s,memoIds:c}}function VA(e,t){let n=[];for(let r of e){let e=t.get(r);if(!e)return null;n.push(e)}return n}function HA(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]})}}})),HA(e,t,n)),n}const UA=ag.flow,WA={focusFlowTableAction$:e=>function*({editor:t,settings:n}){e.length&&(n.canvasType!==Jm.visualization&&(yield wv({value:Jm.visualization})),t.visualizationMode!==og.flow&&(yield Lg({value:og.flow})),yield t.views.flow?Fg({tableIds:e,kind:UA}):_g({kind:UA,centerIds:e}))}};function GA(e){return Object.entries(e).reduce((e,[t,n])=>(n===rg.table?e.tableIds.push(t):n===rg.memo&&e.memoIds.push(t),e),{tableIds:[],memoIds:[]})}const KA=e=>function*(){yield zy(),yield Hy({value:e})},qA=e=>function*(){yield Wy(),yield Ky({value:e})},JA=(e,t,n=`document`)=>function*(r){let{tableIds:i,memoIds:a}=GA(r.editor.selectedMap),{zoomLevel:o}=V_(r,n),s=e/o,c=t/o;if(n!==`document`){i.length&&(yield Hg(Vg.drag,kg({ids:i,movementX:s,movementY:c,kind:n})));return}i.length&&(yield Hg(Vg.drag,LS({ids:i,movementX:s,movementY:c}))),a.length&&(yield Hg(Vg.drag,Hx({ids:a,movementX:s,movementY:c})))},YA=()=>function*(){yield dw(),yield tw()},XA=(e,t)=>function*(n){yield*QA(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})},ZA=({tableIds:e,memoIds:t,offset:n,escapeCollision:r})=>function*(i){yield*QA(i,{input:tj(i,{tableIds:e??[],memoIds:t??[]}),offset:{x:Ke(n.x,4),y:Ke(n.y,4)},escapeCollision:r})};function*QA(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}=BA(t,ej(cw({entities:[...t.tables.map($A),...t.memos.map($A)],offset:n,escapeCollision:r,settings:i,tables:c.selectByIds(a),memos:l.selectByIds(o),findSource:e=>c.selectById(e)??l.selectById(e)})));yield rj(),yield u,yield Fy({...d.reduce((e,t)=>(e[t]=rg.table,e),{}),...f.reduce((e,t)=>(e[t]=rg.memo,e),{})})}const $A=({sourceId:e,ui:{x:t,y:n,zIndex:r}})=>({sourceId:e,ui:{x:t,y:n,zIndex:r}});function ej(e){return new Map(Array.from(e,([e,{x:t,y:n,zIndex:r}])=>[e,{x:Ke(t,4),y:Ke(n,4),zIndex:r}]))}function tj(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:RA(e,s),indexes:zA(e,s)}}const nj=(e,t=`document`)=>function*(n){let{collections:r}=n,{tableIds:i,memoIds:a}=Xg(n,t),o={...N(r).collection(`tableEntities`).selectByIds(i).reduce((r,i)=>{let a=j_(n,i,t);return Sw(e,{x:a.x+a.width/2-15,y:a.y+a.height/2-15,w:15,h:15})&&(r[i.id]=rg.table),r},{}),...N(r).collection(`memoEntities`).selectByIds(a).reduce((t,n)=>{let r=o_(n),i=s_(n);return Sw(e,{x:n.ui.x+r/2-15,y:n.ui.y+i/2-15,w:15,h:15})&&(t[n.id]=rg.memo),t},{})};yield rj(),Ge(o)||(yield Fy(o))},rj=()=>function*(){yield Ny(),yield Qy()},ij=(e,t)=>function*(n){let{editor:{focusTable:r}}=n;r&&(e===sg.Tab&&!t&&(yy(r.focusType)&&_y(n)&&!oy(n)||!yy(r.focusType)&&sy(n)&&ly(n))?yield _w(r.tableId):yield eb({moveKey:e,shiftKey:t}))},aj=e=>function*({editor:t}){t.drawRelationship?.relationshipType===e?yield vb():yield mb({relationshipType:e})},oj=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 fC({tableId:e,id:t}),yield EC({tableId:e,id:t,value:!0}),yield Xy({tableId:e,columnId:t,focusType:W.columnName,$mod:!1,shiftKey:!1})}yield gb({tableId:e})}},sj=e=>function*({editor:{selectedMap:t},collections:n}){let{tableIds:r,memoIds:i}=GA(t),a=N(n).collection(`tableEntities`).selectByIds(r),o=N(n).collection(`memoEntities`).selectByIds(i);yield a.map(t=>qS({id:t.id,color:e,prevColor:t.ui.color})),yield o.map(t=>Xx({id:t.id,color:e,prevColor:t.ui.color}))},cj=e=>function*({settings:t},n){yield KA(MA(e,n,e=>(e.settings={...e.settings,...he(ie(t),[`width`,`height`,`originX`,`originY`,`scrollTop`,`scrollLeft`,`zoomLevel`])},e))),yield ZS()},lj=e=>function*({settings:t},n){yield KA(kO(e,n,e=>(e.settings={...e.settings,...he(ie(t),[`width`,`height`,`originX`,`originY`,`scrollTop`,`scrollLeft`,`zoomLevel`])},e))),yield ZS()},uj=e=>function*({settings:t},n){yield KA(aD(e,n,e=>(e.settings={...e.settings,...he(ie(t),[`width`,`height`,`originX`,`originY`,`scrollTop`,`scrollLeft`,`zoomLevel`])},e))),yield ZS()},dj=e=>function*({settings:t},n){yield KA(YT(e,n,e=>(e.settings={...e.settings,...he(ie(t),[`width`,`height`,`originX`,`originY`,`scrollTop`,`scrollLeft`,`zoomLevel`])},e))),yield ZS()},fj=e=>function*({editor:{focusTable:t}}){!t||!t.columnId||(yield Mb({tableId:t.tableId,columnIds:e?[...t.selectColumnIds]:[t.columnId]}))};function pj(e,t,n){let r=[...t],i=[];for(let t of n){let n=r.indexOf(t);if(n===-1)return[];let a=r[r.length-1];t!==a&&(r.splice(n,1),r.push(t),i.push(MC({tableId:e,id:t,targetId:a})))}return ce(r,t)?[]:i}const mj=(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;if(e===null){yield pj(i,s.columnIds,a);return}let n=s.columnIds.indexOf(e);if(n===-1)return;let r=a.map(t=>MC({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 vw(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[fC(a),gC({...a,value:r.name}),bC({...a,value:r.dataType}),SC({...a,value:r.default}),vC({...a,value:r.comment}),EC({...a,value:G(r.options,z.primaryKey)}),AC({...a,value:G(r.options,z.notNull)}),OC({...a,value:G(r.options,z.unique)}),wC({...a,value:G(r.options,z.autoIncrement)}),...e===null?[]:[MC({...a,targetId:e})],Xy({tableId:t,columnId:i,focusType:W.columnName,$mod:!0,shiftKey:!1})]}yield Mb({tableId:t,columnIds:l})},hj=e=>function*(t){let{columnIds:n,relationshipIds:r}=HA([{columnId:e,relationshipIds:[]}],t).reduce((e,{columnId:t,relationshipIds:n})=>(e.columnIds.push(t),e.relationshipIds.push(...n),e),{columnIds:[],relationshipIds:[]});yield Sb({columnIds:ye(n)}),yield wb({relationshipIds:ye(r)})},gj=()=>function*(){yield Sb({columnIds:[]}),yield wb({relationshipIds:[]})},_j={loadJsonAction$:KA,initialLoadJsonAction$:qA,moveAllAction$:JA,removeSelectedAction$:YA,pasteEntitiesAction$:XA,duplicateAction$:ZA,dragSelectAction$:nj,unselectAllAction$:rj,focusMoveTableAction$:ij,drawStartRelationshipAction$:aj,drawStartAddRelationshipAction$:oj,changeColorAllAction$:sj,loadSchemaSQLAction$:cj,loadSchemaGraphQLAction$:lj,loadSchemaDBMLAction$:uj,loadSchemaAMLAction$:dj,dragstartColumnAction$:fj,dragoverColumnAction$:mj,columnKeyHoverStartAction$:hj,columnKeyHoverEndAction$:gj,...WA},vj={addIndexAction$:e=>function*(){yield ax({id:w(),tableId:e})},changeIndexUniqueAction$:e=>function*({collections:t}){let n=N(t).collection(`indexEntities`).selectById(e);n&&(yield dx({id:e,tableId:n.tableId,value:!n.unique}))}},yj={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 Cx({id:i.id,indexId:e,tableId:r.tableId,columnId:t}):yield Cx({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 Tx({id:t.id,indexId:e,tableId:r.tableId})},changeIndexColumnOrderTypeAction$:e=>function*({collections:t}){let n=N(t).collection(`indexColumnEntities`).selectById(e);n&&(yield kx({id:e,indexId:n.indexId,columnId:n.columnId,value:n.orderType===ih.ASC?ih.DESC:ih.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 Dx({id:e,indexId:r.indexId,tableId:i.tableId,targetId:t}))}},bj={addRelationshipAction$:(e,t,n)=>function*({doc:{tableIds:r},collections:i}){let a=N(i).collection(`tableEntities`).selectByIds(r),o=a.find(({id:t})=>t===e),s=a.find(({id:e})=>e===t);if(!o||!s)return;let c=N(i).collection(`tableColumnEntities`).selectByIds(o.columnIds).filter(({options:e})=>G(e,z.primaryKey)),l=c.length?null:dC({tableId:o.id}),u=l?[l]:c,d=u.map(()=>w());yield[...l?[fC({id:l.id,tableId:o.id}),EC({id:l.id,tableId:o.id,value:!0})]:[],...iw(u,s.id,d),hS({id:w(),relationshipType:n,start:{tableId:o.id,columnIds:u.map(({id:e})=>e)},end:{tableId:s.id,columnIds:d}})]}};function xj(e,t,n,r){let i=G_({...e,zoomLevel:t},n);return{movementX:Ke(r.x-i.x,4),movementY:Ke(r.y-i.y,4)}}function Sj(e,t,n){let{viewport:r}=e.editor,i={x:r.width/2,y:r.height/2};return xj(t,n,K_(t,i),i)}const Cj={changeZoomLevelAction$:(e,t)=>function*(n){let r=H_(n,t),{originX:i,originY:a}=r,{movementX:o,movementY:s}=Sj(n,r,Jh(e)),c={originX:i+o,originY:a+s};if(t&&t!==`document`){yield Tg({value:e,kind:t}),yield xg({...c,kind:t});return}yield uv({value:e}),yield gv(c)},streamZoomLevelAction$:(e,t)=>function*(n){let r=H_(n,t),i=Sj(n,r,Jh(r.zoomLevel+e));if(t&&t!==`document`){yield Dg({value:e,kind:t}),yield Cg({...i,kind:t});return}yield fv({value:e}),yield vv(i)}},wj=Object.freeze({...$b,..._j,...mx,...vj,...Mx,...yj,...rS,...rw,...SS,...bj,...Gv,...Cj,...eC,...pw,...FC,...xw}),Tj=`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(`,`),Ej=V([`settings.changeZoomLevel`,`settings.streamZoomLevel`,`settings.scrollTo`,`settings.streamScrollTo`,`settings.changeDatabase`,`settings.changeCanvasType`,`settings.changeLanguage`,`settings.changeTableNameCase`,`settings.changeColumnNameCase`,`settings.changeBracketType`]),Dj=[...Tj.filter(e=>!Ej(e))],Oj=V([`editor.loadJson`,`editor.clear`]),kj=[...Dj.filter(e=>!Oj(e))],Aj=[`editor.sharedMouseTracker`,`editor.sharedFocusTracker`,`editor.sharedSelectionTracker`,`editor.sharedDragSelectTracker`];[...Tj,...Aj];const jj=[`table.move`,`memo.move`],Mj=[`table.changeColor`,`memo.changeColor`],Nj=[`settings.streamZoomLevel`,`settings.streamScrollTo`],Pj=[...Object.keys(XC)],Fj=[...Object.keys(YC),...Pj];function Ij(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}function Lj(e,t,n){Ij(e,t),t.set(e,n)}function Rj(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 zj(e,t){return e.get(Rj(e,t))}function Bj(e,t,n){return e.set(Rj(e,t),n),n}var Vj=new WeakMap,Hj=class{constructor(){Lj(this,Vj,0),_i(this,`getVersion`,()=>zj(Vj,this)),_i(this,`getNextVersion`,()=>this.getVersion()+1),_i(this,`merge`,e=>(!S(e)||!Number.isInteger(e)||this.getVersion()<e&&Bj(Vj,this,e),this))}};function Uj(e){return{...e,clock:new Hj}}function Wj({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=>Wj(e,{commands:[...i],cursor:a,limit:o})})}const Gj=Oe(e=>!!e.length),Kj=e=>{let t=V(e);return e=>new xe(n=>e.subscribe({next:e=>n.next(e.filter(e=>t(e.type))),error:e=>n.error(e),complete:()=>n.complete()})).pipe(Gj)},qj=`@@none-stream`,Jj=(e,t)=>n=>{let r=t.find(([,e])=>e(n));return r?r[0]:e(n)?n:qj},Yj=(e,t=[],n=Ee(200))=>{let r=V(e),i=t.map(([e,t])=>[e,V(t)]),a=Jj(r,i);return e=>new xe(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(Gj,Ae(e=>a(e[0].type)),Ne(e=>e.key===qj?e:e.pipe(Te(e.pipe(n)),je(e=>e.flat()))))},Xj=e=>{let t=t=>x(t.tags)||!e.some(e=>G(t.tags,e));return e=>new xe(n=>e.subscribe({next:e=>n.next(e.filter(t)),error:e=>n.error(e),complete:()=>n.complete()})).pipe(Gj)};V(Pj),V(Aj);const Zj=e=>t=>t.pipe(Le(t=>e.pipe(Re(1),je(()=>t)))),Qj=(e,t=[])=>{let n=V(Dj),r=e=>!x(e.tags)&&t.some(t=>G(e.tags,t))||!n(e.type);return t=>new xe(n=>t.subscribe({next:t=>{n.next(e()?t.filter(r):t)},error:e=>n.error(e),complete:()=>n.complete()})).pipe(Gj)},$j={[K.scrollTo]:P.viewScrollTo,[K.streamScrollTo]:P.viewStreamScrollTo,[K.changeZoomLevel]:P.viewChangeZoomLevel,[K.streamZoomLevel]:P.viewStreamZoomLevel},eM=({tags:e})=>!x(e)&&(G(e,Vg.shared)||G(e,Vg.following)),tM=e=>{let t=$j[e.type];return t&&!eM(e)?{...e,type:t}:e},nM=e=>t=>new xe(n=>t.subscribe({next:t=>{n.next(e()?t.map(tM):t)},error:e=>n.error(e),complete:()=>n.complete()})),rM=(e,t=[])=>{let n=V(kj),r=e=>!x(e.tags)&&t.some(t=>G(e.tags,t))||!n(e.type);return t=>new xe(n=>t.subscribe({next:t=>{n.next(e()?t.filter(r):t)},error:e=>n.error(e),complete:()=>n.complete()})).pipe(Gj)};function iM(e,t){return zu({context:e,state:{...qp({}),editor:cg(),lww:{}},reducers:{...Qb,...$S,...PC,...nS,...xS,...Wv,...px,...jx},enableObservable:t??!0})}const aM=new WeakMap,oM=()=>({boxes:new Map,entries:new Map});function sM(e,t=`document`){let n=aM.get(e);return n||(n={document:oM(),flow:oM()},aM.set(e,n)),n[t]}function cM(e,t){return{left:e.left[t],top:e.top[t],right:e.right[t],bottom:e.bottom[t]}}function lM(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 uM(e,t){return e.left===t.left&&e.top===t.top&&e.right===t.right&&e.bottom===t.bottom}function dM(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 fM(e,t){return e.left<=t.right&&e.right>=t.left&&e.top<=t.bottom&&e.bottom>=t.top}function pM(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(fM(n,e))return!0;return!1}function mM(){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 hM(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 gM(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=cM(t,e);if(r.set(o,s),a)continue;let c=n.get(o);c?uM(c,s)||i.push(lM(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 _M(e){return 50+e%4*12}function vM(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 yM(e,t){return t===null||t<=0?e:Math.max(36,Math.min(e,t/2-1))}function bM(e){return e===R.left||e===R.right}function xM(e){return e===R.right||e===R.bottom?1:-1}function SM(e,t,n){let r=xM(t);return bM(t)?{x:e.x+r*n,y:e.y}:{x:e.x,y:e.y+r*n}}function CM({start:e,end:t},[n,r]){let i=vM(e,t),a=yM(_M(n),i),o=yM(_M(r),i);return{m:SM(e,e.direction,a),l:SM(t,t.direction,o),startStub:a,endStub:o}}function wM(e,t=`document`){let{tableIds:n}=Xg(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=k_(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 TM(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 EM(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)&&TM(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 OM(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 kM(e,t,n,r,i){let a=bM(t),o=bM(r),s=xM(t),c=xM(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=OM(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=OM(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=OM(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=OM(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=OM(e.x,n.x,i,!0,l,u).filter(t=>(t-e.x)*s>=0).slice(0,4),r=OM(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=OM(e.y,n.y,i,!1,l,u).filter(t=>(t-e.y)*s>=0).slice(0,4),r=OM(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 AM(e,t,n,r,i,a,o){let s=kM(e,t,n,r,i),c=null,l=1/0;for(let e of s){let t=EM(e.points,i,a,o)*1e5+e.bends*36+DM(e.points);t<l&&(l=t,c=e.points)}return c||(bM(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 jM=[10,7,4],MM=jM[jM.length-1]-.5;function NM(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 PM(e,t){return e.relationshipId===t.relationshipId?e.index-t.index:e.relationshipId<t.relationshipId?-1:1}function FM(e){let t=e.points[e.index-1];return e.vertical?t.y:t.x}function IM(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 LM(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 RM(e,t,n,r){let i=[],a=[];for(let t of NM(e))(t.vertical?i:a).push(t);for(let e of[i,a]){IM(e);let i=e.filter(e=>e.movable);if(i.length<2)continue;i.sort((e,t)=>e.coordinate-t.coordinate||PM(e,t));let a=[],o=()=>{a.length>1&&zM(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 zM(e,t,n,r,i){e.sort((e,t)=>e.low-t.low||PM(e,t));let a=[],o=-1/0,s=()=>{a.length>1&&GM(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 BM(e,t){return e.high+10>t.low&&t.high+10>e.low}function VM(e,t){return Math.abs(e.coordinate-t.coordinate)>=MM?0:Math.max(0,Math.min(e.high,t.high)-Math.max(e.low,t.low))}function HM(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+=VM(i,e[t]);for(let e of t)n+=VM(i,e)}return n}function UM(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+MM,o=[];for(let e of t)e.coordinate<r-a||e.coordinate>i+a||n.has(e)||o.push(e);return o}function WM(e){let t=[];for(let n of e){let e=t.find(e=>!BM(e[e.length-1],n));e?e.push(n):t.push([n])}return t}function GM(e,t,n,r,i){if(!i){KM(e,t,n,r);return}if(qM(e,i))return;let a=e.map(e=>e.coordinate);KM(e,t,n,r),JM(e,a,i)}function KM(e,t,n,r){let i=UM(e,t),a=HM(e,i);if(!a)return;let o=new Map,s=e.map(e=>(o.set(e,tN(e,n,r)),e.coordinate)),c=s.reduce((e,t)=>e+t,0)/s.length,l=YM(e),u=null,d=1/0;for(let t of jM){let a=null,f=1/0;for(let p of l){eN(p,t,c,o,n,r);let l=HM(e,i);if(l)l<d&&(u=e.map(e=>e.coordinate),d=l);else{let t=QM(e,s);t<f&&(f=t,a=e.map(e=>e.coordinate))}$M(e,s)}if(a){$M(e,a);return}}u&&d<a&&$M(e,u)}function qM(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 $M(e,n),!0}function JM(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 YM(e){let t=WM(e),n=XM(t);return t.length===e.length?n:[...n,...XM(e.map(e=>[e]))]}function XM(e){let t=(e,t)=>e.reduce((e,n)=>e+t(n),0)/e.length,n=[...e].sort((e,n)=>t(e,FM)-t(n,FM)||t(e,ZM)-t(n,ZM)||PM(e[0],n[0])),r=[...e].sort((e,n)=>t(e,ZM)-t(n,ZM)||t(e,FM)-t(n,FM)||PM(e[0],n[0]));return n.every((e,t)=>e===r[t])?[n]:[n,r]}function ZM(e){return e.coordinate}function QM(e,t){return e.reduce((e,n,r)=>e+Math.abs(n.coordinate-t[r]),0)}function $M(e,t){e.forEach((e,n)=>{LM(e,t[n]),e.coordinate=t[n]})}function eN(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=>BM(l,e)))return!1;let c=o+r*t;return LM(l,c),aN(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||LM(l,l.coordinate)}})}function tN(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:EM(e.points,t,r?.[0]??``,r?.[1]??``),crossed:oN(e.points),own:i,intruded:iN(e.points,t,i),beforeDelta:nN(e,-1),afterDelta:nN(e,1)}}function nN(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 rN(e,t){return Math.abs(t)>=.5&&e*t<=0}function iN(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(TM(i.x,i.y,c.x,c.y,n,a,o,s)){r++;break}}}return r}function aN(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&&rN(nN(e,-1),r.beforeDelta)||e.index+2===e.points.length-1&&rN(nN(e,1),r.afterDelta)||iN(e.points,t,r.own)>r.intruded||!r.crossed&&oN(e.points))return!1;let c=n.get(e.relationshipId);return EM(e.points,t,c?.[0]??``,c?.[1]??``)<=r.blocked}function oN(e){for(let t=0;t+1<e.length;t++)for(let n=t+2;n+1<e.length;n++)if(sN(e[t],e[t+1],e[n],e[n+1]))return!0;return!1}function sN(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 cN={[H.top]:R.top,[H.bottom]:R.bottom,[H.left]:R.left,[H.right]:R.right},lN=Math.PI*2,uN=.15,dN={[H.top]:-Math.PI,[H.right]:-Math.PI/2,[H.bottom]:0,[H.left]:Math.PI/2},fN={[H.top]:!1,[H.right]:!1,[H.bottom]:!0,[H.left]:!0};function pN(e,t=`document`){Nh(t);let{tableIds:n,relationshipIds:r}=Xg(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=TN(s);for(let n of s){let r=wN(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)bN(yN(e,c,s,t),r);else{let n=yN(e,c,s,t),o=yN(e,c,f,t),[l,u]=kN(n.objectPoint,o.objectPoint,r);n[l].push({id:r.id,isStart:!0,point:i,angle:ON(l,n,o),tie:d.tieAt(r.id,i.tableId,a.tableId)}),o[u].push({id:r.id,isStart:!1,point:a,angle:ON(u,o,n),tie:d.tieAt(r.id,a.tableId,i.tableId)})}}}for(let e of c.values())for(let t of gh)AN(t,e,u);for(let[e,n]of l.entries())kh(e,u.get(n.id)??[0,0],t),Fh(e,n,t);t===`document`?hN(e,l,u):mN(l,u,t)}function mN(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}=CM(i,t.get(e)??[0,0]);jh(r,[s,c],n)}}function hN(e,t,n){let r=wM(e),i=sM(e),a=gM(i,r),o=i.entries,s=new Map,c=new Set,l=mM();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}=CM(i,n.get(t)??[0,0]),_=o.get(t),v,y;a!==null&&_!==void 0&&vN(_,h,g,p,m)&&!pM(_.bounds,a)?(v=_.pristine,y=gN(v)):(y=AM(h,p.direction,g,m.direction,r,p.tableId,m.tableId),v=gN(y),c.add(t),_&&hM(l,_.nudged),hM(l,v)),u.set(t,y),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:y,bounds:dM(v)})}if(a)for(let[e,t]of o)s.has(e)||hM(l,t.nudged);RM(u,r,d,a===null?void 0:_N(o,c,l));for(let[e,t]of u){let n=f.get(e);n&&jh(n,t)}i.entries=s}function gN(e){return e.map(({x:e,y:t})=>({x:e,y:t}))}function _N(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 vN(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 yN(e,t,n,r){let i=t.get(n.id);if(!i){let a=k_(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 bN(e,t){let{rt:n,width:r,height:i}=e.objectPoint,a=e.selfCount++,o=CN(Math.min(r,i)*uN,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 xN(e,t){let{width:n,height:r}=e.objectPoint;return CN(Math.min(n,r)*uN,20,60)+t*14}function SN(e){return e.selfCount?xN(e,e.selfCount-1)+8:0}function CN(e,t,n){return Math.min(Math.max(e,t),n)}function wN({id:e,start:t,end:n}){return{id:e,start:vh(t),end:vh(n)}}function TN(e){let t=new Map;for(let{id:n,start:r,end:i}of e){let e=EN(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 EN(e,t){return e<t?`${e}|${t}`:`${t}|${e}`}function DN(e){let t=e%lN;return t<0?t+lN:t}function ON(e,t,n){return DN(Math.atan2(n.centerY-t.centerY,n.centerX-t.centerX)-dN[e])}function kN(e,t,n){let r=[H.bottom,H.bottom],i=A_(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 gh)for(let o of gh){let s=a,c=o,l=A_(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=cN[s],n.end.x=t[c].x,n.end.y=t[c].y,n.end.direction=cN[c])}return r}function AN(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=SN(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=fN[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 jN=(e,t)=>e.pipe(He(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)}}),MN=(e,t)=>e.pipe(He(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))?rh.dash:rh.ring;s!==r&&(e.startRelationshipType=s)}}),NN=V([LS.type,zS.type,Hx.type]),PN=({tags:e})=>!x(e)&&G(e,Vg.drag)?Ue(5):Ue(0,we),FN=(e,t)=>e.pipe(Be(e=>{NN(e.type)||u_()}),Ve(PN,{leading:!1,trailing:!0})).subscribe(()=>{pN(t())}),IN=V([bv.type,Bv.type,Hx.type]),LN=V([xg.type,Cg.type,Tg.type,Dg.type]),RN=({id:e})=>[e],zN=({ids:e})=>e,BN=({tableId:e})=>[e],VN=(e,{kind:t})=>t,HN=()=>ag.flow,UN=(e,{kind:t})=>t??ug(e)?.kind??null,WN={[_g.type]:VN,[yg.type]:VN,[jg.type]:VN,[Fg.type]:HN,[Ng.type]:UN,[kg.type]:UN},GN={[FS.type]:RN,[VS.type]:RN,[zS.type]:RN,[US.type]:RN,[GS.type]:RN,[hS.type]:RN,[_S.type]:RN,[LS.type]:zN,[kg.type]:zN,[fC.type]:BN,[mC.type]:BN,[gC.type]:BN,[vC.type]:BN,[bC.type]:BN,[SC.type]:BN,[EC.type]:BN};function KN(e,t){let{tableIds:n,relationshipIds:r}=Xg(e,t);return new Set([...n,...r])}function qN(e,t,n,r){if(IN(t.type)||LN(t.type))return!1;let i=WN[t.type];if(i&&i(e,t.payload)!==r)return!1;let a=GN[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=[ag.flow],YN=(e,t)=>{let n={flow:new Set},r=new Set;return e.pipe(Oe(e=>{let i=t(),a=!1;for(let t of JN)dg(i,t)&&qN(i,e,n[t],t)&&(r.add(t),a=!0);return a}),Ve(PN,{leading:!1,trailing:!0})).subscribe(()=>{let e=t(),i=[...r];r.clear();for(let t of i)dg(e,t)&&(pN(e,t),n[t]=KN(e,t))})},XN=[bv,Bv,hS,_S,Hx,FS,VS,LS,zS,US,GS,fC,mC,gC,vC,bC,SC,ZS],ZN=[EC],QN=[_g,yg,xg,Cg,Tg,Dg,kg,jg,Ng,Fg],$N=[[[mC,EC,Hy,Ky],jN],[[mC,AC,Hy,Ky],MN],[XN,FN],[[...XN,...ZN,...QN],YN]],eP=[[[Hy,Ky],(e,t,n)=>e.pipe(He(5,void 0,{leading:!1,trailing:!0})).subscribe(()=>{let e=t();w_(e,n),pN(e)})],[[VS],(e,t)=>e.pipe(Pe(we)).subscribe(()=>{let{doc:e,editor:n}=t(),r=n.drawRelationship?.start;!r||e.tableIds.includes(r.tableId)||(n.drawRelationship=null)})]],tP=e=>e.pipe(Pe(we)),nP=[[[EC],(e,t)=>tP(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))})],[[hS],(e,t)=>tP(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})],[[_S],(e,t)=>tP(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})],[[Hy,Ky],(e,t)=>tP(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)}})]],rP=[...eP,...nP,...$N];function iP(e){let t=()=>e.state,n=rP.map(([n,r])=>{let i=new Se;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 aP(e,{getReadonly:t=()=>!1,getHistory:n,manualStreamFlush:r=!1,observable:i=!0}={}){let a=new Set,o=iM(e,i),s=iP(o),c={notify:e=>o.dispatch(ky(e)),dispatch:o.dispatchSync,getNextVersion:()=>e.clock.getNextVersion()},l=n?.(c)??Wj(c);l.setLimit(2048);let u=()=>ug(o.state),d=new Se,f=d.pipe(nM(u)),p=new Se,m=new Se,h=new Se,g=m.pipe(Ie(void 0),Le(()=>p.pipe(Yj(Pj,[[`@@move`,jj],[`@@scroll`,Nj],[`@@color`,Mj]],r?Zj(h):void 0)))),_=new xe(e=>o.subscribe(t=>e.next(t))).pipe(Kj(Tj),Qj(t,[Vg.shared]),Ee(200)),v=(...t)=>{let n=e.clock.getNextVersion();return Fu(o.state,o.context,t).map(e=>(x(e.version)&&(e.version=n),e))},y=(...e)=>{let t=v(e);d.next(t)},ee=(...e)=>{queueMicrotask(()=>y(e))},te=()=>{Array.from(a).forEach(e=>le(e)?e():e.unsubscribe()),a.clear(),o.destroy(),s.destroy(),l.clear(),d.complete(),h.complete()},ne=()=>{m.next(),l.clear()},re=()=>{t()||u()||l.undo()},ie=()=>{t()||u()||l.redo()},ae=()=>{r&&h.next()};return a.add(g.subscribe($C(o,l))).add(f.pipe(Kj(Fj),Xj([Vg.changeOnly,Vg.shared]),Qj(t),rM(u)).subscribe(p)).add(f.pipe(Qj(t,[Vg.shared]),rM(u,[Vg.shared])).subscribe(o.dispatchSync)).add(o.subscribe(t=>{t.forEach(t=>e.clock.merge(t.version))})),Object.freeze({...o,dispatch:ee,dispatchSync:y,destroy:te,undo:re,redo:ie,history:l,resetHistory:ne,change$:_,flushStreamBuffers:ae})}const oP={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 sP=new WeakMap,cP=class{constructor(){Lj(this,sP,new Set)}on(e){return zj(sP,this).has(e)||zj(sP,this).add(e),()=>{zj(sP,this).delete(e)}}emit(e){zj(sP,this).forEach(t=>{JC(Reflect.get(t,e.type),e)})}clear(){zj(sP,this).clear()}};const lP=k(oP.openColorPicker);k(oP.closeColorPicker),k(oP.openToast),k(oP.openTableProperties);const uP=k(oP.dragendColumnAll);k(oP.copy),k(oP.paste),k(oP.schemaGC),k(oP.toggleSearch),k(oP.openThemeBuilder),k(oP.setThemeOptions),k(oP.mouseTrackerStart),k(oP.mouseTrackerEnd),k(oP.openDiffViewer),k(oP.openAutomaticTablePlacement);const dP=k(oP.duplicateDragStart);k(oP.dragSelectStart);const fP=Ze();let pP=fP.os.name===`mac`,mP=fP.os.name===`ios`;fP.os.name,fP.os.name,fP.browser.name,fP.browser.name,fP.browser.name,Qe(e=>{pP=e.os.name===`mac`,mP=e.os.name===`ios`,e.os.name,e.os.name,e.browser.name,e.browser.name,e.browser.name});const hP=()=>pP||mP,gP={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(gP);const _P=()=>({[gP.edit]:[{shortcut:`Enter`}],[gP.stop]:[{shortcut:`Escape`}],[gP.search]:[{shortcut:`$mod+KeyK`,preventDefault:!0,stopPropagation:!0}],[gP.undo]:[{shortcut:`$mod+KeyZ`,preventDefault:!0,stopPropagation:!0}],[gP.redo]:[{shortcut:`$mod+Shift+KeyZ`,preventDefault:!0,stopPropagation:!0}],[gP.addTable]:[{shortcut:`Alt+KeyN`,preventDefault:!0}],[gP.addColumn]:[{shortcut:`Alt+Enter`,preventDefault:!0}],[gP.addMemo]:[{shortcut:`Alt+KeyM`,preventDefault:!0}],[gP.removeTable]:[{shortcut:`$mod+Backspace`,preventDefault:!0},{shortcut:`$mod+Delete`,preventDefault:!0}],[gP.removeColumn]:[{shortcut:`Alt+Backspace`,preventDefault:!0},{shortcut:`Alt+Delete`,preventDefault:!0}],[gP.primaryKey]:[{shortcut:`Alt+KeyK`,preventDefault:!0}],[gP.selectAllTable]:[{shortcut:`$mod+KeyA`,preventDefault:!0},{shortcut:`$mod+Alt+KeyA`,preventDefault:!0}],[gP.selectAllColumn]:[{shortcut:`Alt+KeyA`,preventDefault:!0}],[gP.relationshipZeroOne]:[{shortcut:`$mod+Alt+Digit1`,preventDefault:!0}],[gP.relationshipZeroN]:[{shortcut:`$mod+Alt+Digit2`,preventDefault:!0}],[gP.relationshipOneOnly]:[{shortcut:`$mod+Alt+Digit3`,preventDefault:!0}],[gP.relationshipOneN]:[{shortcut:`$mod+Alt+Digit4`,preventDefault:!0}],[gP.tableProperties]:[{shortcut:`Alt+Space`,preventDefault:!0}],[gP.focusView]:[{shortcut:`Alt+KeyF`,preventDefault:!0,stopPropagation:!0}],[gP.zoomIn]:[{shortcut:`$mod+Equal`,preventDefault:!0,stopPropagation:!0}],[gP.zoomOut]:[{shortcut:`$mod+Minus`,preventDefault:!0,stopPropagation:!0}],[gP.zoomReset]:[{shortcut:`$mod+Digit0`,preventDefault:!0,stopPropagation:!0}],[gP.handTool]:[{shortcut:`Space`,preventDefault:!0}],[gP.zenMode]:[{shortcut:`Alt+KeyZ`,preventDefault:!0,stopPropagation:!0}]}),vP={Shift:`Shift`,Meta:`Meta`,Alt:`Alt`,Control:`Control`};vP.Shift,vP.Meta,vP.Alt,vP.Control,vP.Shift,vP.Meta,vP.Alt,vP.Control;function yP(e){return hP()?e.metaKey:e.ctrlKey}function bP(e,t){let{devtools:n=!0,...r}=t??{},i=Uj(e),a=aP(i,r),o=ja(_P(),{shallow:!0}),s=new Se,c=new Se,l=new cP;return Object.freeze({...i,actions:wj,store:a,keyBindingMap:o,shortcut$:s,keydown$:c,emitter:l})}const xP=xi({}),SP=(e,t)=>Ka(e,{...xP,value:t??xP.value});function CP(e){e.store.dispatchSync(Wy()),e.store.destroy(),e.keydown$.complete(),e.shortcut$.complete(),e.emitter.clear()}const wP=[`table`,`memo`,`relationship`],TP=e=>typeof e==`string`&&wP.includes(e);function EP(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 DP=(e,t)=>!!(e&&t&&e.x===t.x&&e.y===t.y),OP=new WeakMap,kP=`mousedown.sceneHit touchstart.sceneHit contextmenu.sceneHit`;function AP(e){return e.on(kP,t=>{let n=t.evt,r=EP(n),i=OP.get(e),a=n.type===`contextmenu`&&DP(i?.point,r)?i?.hit??null:t.target===e?null:MP(t.target);OP.set(e,{evt:n,hit:a,point:r})}),()=>{e.off(kP),OP.delete(e)}}function jP(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 MP(e){let t=e;for(;t;){let e=t.getAttr(`kind`);if(TP(e))return{kind:e,id:jP(t,e)};t=t.getParent()}return null}const NP=xi({}),PP=e=>Ka(e,NP);function FP({app:e,container:t,scene:n,width:r,height:i,theme:a}){let o=new y({container:t,width:r,height:i}),s={host:o.container(),parentElement:null},c=qa(s,xP,e),l=a?qa(s,NP,a):null,u=AP(o);return qf(o,n),{stage:o,destroy:()=>{u(),qf(o,null),l?.destroy(),c.destroy(),o.destroy()}}}const IP=e=>new Promise(t=>setTimeout(t,e)),LP=32767;function RP(e,t,n){let r=Math.max(t,n),i=t*n;return r<=0||i<=0?e:Math.min(e,LP/r,16384/Math.sqrt(i))}function zP({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 BP(e){let{settings:{show:t},doc:{relationshipIds:n},collections:r}=e,i=I_(e);if(G(t,F.relationship)){let e=N(r).collection(`relationshipEntities`).selectByIds(n);for(let t of e){let e=zh(t);i=i?F_(i,e):e}}return zP(i??{x:0,y:0,width:0,height:0},80)}function VP({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,LP/i,Math.sqrt(268435456/a))}const HP={"arrow-right":$e,atom:et,braces:tt,brackets:nt,"case-sensitive":rt,check:it,"chevron-down":at,"chevron-right":ot,code:st,contrast:ct,copy:lt,database:ut,diff:dt,"external-link":ft,eye:pt,"file-diff":mt,"file-image":ht,"file-input":gt,"file-output":_t,fullscreen:vt,"grip-vertical":yt,hand:bt,"key-round":xt,maximize:St,minimize:Ct,minus:wt,"moon-star":Tt,"mouse-pointer-2":Et,network:Dt,palette:Ot,plus:kt,"redo-2":At,"refresh-cw":jt,"rotate-ccw-clock":Mt,search:Nt,settings:Pt,"share-2":Ft,spline:It,"sticky-note":Lt,sun:Rt,table:zt,"table-2":Bt,"table-properties":Vt,"undo-2":Ht,"wand-sparkles":Ut,waypoints:Wt,workflow:Gt,x:Kt},UP={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`}]]},WP={};GP();function GP(){for(let e of Object.keys(HP))WP[e]={name:e,node:HP[e]};for(let e of Object.keys(UP))WP[e]={name:e,node:UP[e]}}function KP(e){return WP[e]}const qP=`-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', 'Open Sans', system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'`;Vd.global`
27
27
  :host {
28
28
  --text-font-family: ${qP};
29
29
  --code-font-family: ${`'Menlo', 'Consolas', 'Bitstream Vera Sans Mono', monospace, 'Apple Color Emoji', 'Segoe UI Emoji'`};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dineug/erd-editor",
3
- "version": "3.9.1",
3
+ "version": "3.9.2",
4
4
  "description": "Entity-Relationship Diagram Editor",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -93,9 +93,9 @@
93
93
  "vite-plus": "0.2.9",
94
94
  "vitest": "4.1.10",
95
95
  "@dineug/erd-editor-schema": "0.1.0",
96
- "@dineug/vite-plugin-r-html": "0.1.0",
97
96
  "@dineug/r-html": "0.1.3",
98
- "@dineug/schema-sql-parser": "0.1.0"
97
+ "@dineug/schema-sql-parser": "0.1.0",
98
+ "@dineug/vite-plugin-r-html": "0.1.0"
99
99
  },
100
100
  "scripts": {
101
101
  "dev": "vp run --filter @dineug/erd-editor... --filter !@dineug/erd-editor build && vp dev",