@likec4/core 1.47.0 → 1.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/dist/THIRD-PARTY-LICENSES.md +1012 -0
- package/dist/_chunks/Builder.view-element.mjs +2 -0
- package/dist/_chunks/LikeC4Model.d.mts +1283 -0
- package/dist/_chunks/RichText.mjs +1 -0
- package/dist/_chunks/_types.d.mts +777 -0
- package/dist/_chunks/_types2.d.mts +36 -0
- package/dist/_chunks/assignTagColors.mjs +1 -0
- package/dist/_chunks/calcDriftsFromSnapshot.mjs +1 -0
- package/dist/_chunks/guards.d.mts +2026 -0
- package/dist/_chunks/guards.mjs +4 -0
- package/dist/_chunks/index.d.mts +288 -0
- package/dist/_chunks/libs/@mantine/colors-generator.mjs +15 -0
- package/dist/_chunks/libs/@radix-ui/colors.mjs +1 -0
- package/dist/_chunks/libs/@ungap/structured-clone.mjs +1 -0
- package/dist/_chunks/libs/bail.mjs +1 -0
- package/dist/_chunks/libs/ccount.mjs +1 -0
- package/dist/_chunks/libs/character-entities-html4.mjs +1 -0
- package/dist/_chunks/libs/character-entities-legacy.mjs +1 -0
- package/dist/_chunks/libs/character-entities.mjs +2 -0
- package/dist/_chunks/libs/comma-separated-tokens.mjs +1 -0
- package/dist/_chunks/libs/decode-named-character-reference.mjs +1 -0
- package/dist/_chunks/libs/defu.mjs +1 -0
- package/dist/_chunks/libs/devlop.mjs +1 -0
- package/dist/_chunks/libs/escape-string-regexp.mjs +1 -0
- package/dist/_chunks/libs/extend.mjs +1 -0
- package/dist/_chunks/libs/graphology-dag.mjs +1 -0
- package/dist/_chunks/libs/graphology.mjs +1 -0
- package/dist/_chunks/libs/hast-util-sanitize.mjs +1 -0
- package/dist/_chunks/libs/hast-util-to-html.mjs +9 -0
- package/dist/_chunks/libs/is-plain-obj.mjs +1 -0
- package/dist/_chunks/libs/longest-streak.mjs +1 -0
- package/dist/_chunks/libs/markdown-table.mjs +2 -0
- package/dist/_chunks/libs/mdast-util-find-and-replace.mjs +1 -0
- package/dist/_chunks/libs/mdast-util-from-markdown.mjs +3 -0
- package/dist/_chunks/libs/mdast-util-gfm.mjs +15 -0
- package/dist/_chunks/libs/mdast-util-to-hast.mjs +11 -0
- package/dist/_chunks/libs/micromark-extension-gfm.mjs +1 -0
- package/dist/_chunks/libs/mnemonist.d.mts +164 -0
- package/dist/_chunks/libs/mnemonist.mjs +1 -0
- package/dist/_chunks/libs/natural-compare-lite.mjs +9 -0
- package/dist/_chunks/libs/ohash.mjs +1 -0
- package/dist/_chunks/libs/rehype-sanitize.mjs +1 -0
- package/dist/_chunks/libs/rehype-stringify.mjs +1 -0
- package/dist/_chunks/libs/remark-gfm.mjs +1 -0
- package/dist/_chunks/libs/remark-github-blockquote-alert.mjs +3 -0
- package/dist/_chunks/libs/remark-parse.mjs +1 -0
- package/dist/_chunks/libs/remark-rehype.mjs +1 -0
- package/dist/_chunks/libs/remeda.mjs +1 -0
- package/dist/_chunks/libs/trough.mjs +1 -0
- package/dist/_chunks/libs/unified.mjs +1 -0
- package/dist/_chunks/rolldown-runtime.mjs +1 -0
- package/dist/_chunks/theme.d.mts +148 -0
- package/dist/_chunks/to-text.d.mts +404 -0
- package/dist/_chunks/to-text.mjs +1 -0
- package/dist/_chunks/vector.d.mts +198 -0
- package/dist/_chunks/vector.mjs +1 -0
- package/dist/builder/index.d.mts +5 -775
- package/dist/builder/index.mjs +1 -1053
- package/dist/compute-view/index.d.mts +156 -56
- package/dist/compute-view/index.mjs +2 -229
- package/dist/geometry/index.d.mts +2 -109
- package/dist/geometry/index.mjs +1 -328
- package/dist/index.d.mts +14 -20
- package/dist/index.mjs +1 -18
- package/dist/model/index.d.mts +5 -57
- package/dist/model/index.mjs +1 -4
- package/dist/styles/index.d.mts +3 -117
- package/dist/styles/index.mjs +1 -63
- package/dist/types/index.d.mts +3 -47
- package/dist/types/index.mjs +1 -17
- package/dist/utils/graphology/index.d.mts +2 -1864
- package/dist/utils/graphology/index.mjs +1 -1
- package/dist/utils/index.d.mts +4 -124
- package/dist/utils/index.mjs +1 -44
- package/package.json +20 -24
- package/compute-view/relationships/package.json +0 -4
- package/dist/compute-view/relationships-view/index.d.mts +0 -51
- package/dist/compute-view/relationships-view/index.mjs +0 -185
- package/dist/model/connection/deployment/index.d.mts +0 -15
- package/dist/model/connection/deployment/index.mjs +0 -2
- package/dist/model/connection/index.d.mts +0 -75
- package/dist/model/connection/index.mjs +0 -3
- package/dist/model/connection/model/index.d.mts +0 -15
- package/dist/model/connection/model/index.mjs +0 -2
- package/dist/shared/core.3ZhnKAlZ.mjs +0 -106
- package/dist/shared/core.78IWAHAE.mjs +0 -332
- package/dist/shared/core.B85MJLTf.mjs +0 -5
- package/dist/shared/core.BFd1lU9R.mjs +0 -29
- package/dist/shared/core.BKlholso.mjs +0 -3
- package/dist/shared/core.BNN-3vPH.mjs +0 -1255
- package/dist/shared/core.BPGOjone.d.mts +0 -46
- package/dist/shared/core.BP_QHEXs.mjs +0 -785
- package/dist/shared/core.BbE4y-yl.mjs +0 -177
- package/dist/shared/core.Bdy3hhTc.mjs +0 -28382
- package/dist/shared/core.BfCKSW-g.d.mts +0 -1266
- package/dist/shared/core.BhNcrwzK.mjs +0 -7
- package/dist/shared/core.BkVA6gjl.mjs +0 -5
- package/dist/shared/core.BoYfZOBm.mjs +0 -3
- package/dist/shared/core.BsSXS-_R.mjs +0 -7
- package/dist/shared/core.C3JowhaZ.mjs +0 -32
- package/dist/shared/core.C4x8aaWa.mjs +0 -27
- package/dist/shared/core.CAgYpDtM.d.mts +0 -98
- package/dist/shared/core.CHf8VEa3.mjs +0 -1206
- package/dist/shared/core.CLSZtnFh.mjs +0 -69
- package/dist/shared/core.C_3y3eqV.d.mts +0 -139
- package/dist/shared/core.CbT8JVYL.mjs +0 -5
- package/dist/shared/core.CdNCAwq7.mjs +0 -176
- package/dist/shared/core.CmGY9blO.mjs +0 -6717
- package/dist/shared/core.CmPXpJ8l.mjs +0 -21
- package/dist/shared/core.Coi_LOUZ.mjs +0 -7
- package/dist/shared/core.CqAJJpK_.mjs +0 -3
- package/dist/shared/core.CywrQs86.d.mts +0 -31
- package/dist/shared/core.D00YbOhQ.d.mts +0 -300
- package/dist/shared/core.D0WZutNd.mjs +0 -94
- package/dist/shared/core.D4npX2q8.mjs +0 -18
- package/dist/shared/core.DB0Ue5Wx.d.mts +0 -70
- package/dist/shared/core.DC5IAaDT.d.mts +0 -334
- package/dist/shared/core.DE9qzhn8.d.mts +0 -83
- package/dist/shared/core.DGcIbsj4.mjs +0 -3946
- package/dist/shared/core.DH7TXqXf.mjs +0 -136
- package/dist/shared/core.DKhRkHRN.d.mts +0 -41
- package/dist/shared/core.DRJma0Ol.mjs +0 -22
- package/dist/shared/core.DU5SRqNF.mjs +0 -2209
- package/dist/shared/core.DXhDWKFZ.d.mts +0 -3
- package/dist/shared/core.DbfO90vF.mjs +0 -434
- package/dist/shared/core.DcS-0zys.mjs +0 -10
- package/dist/shared/core.Dh119QSP.mjs +0 -4995
- package/dist/shared/core.DjcWextK.mjs +0 -1371
- package/dist/shared/core.Dojz4bvg.d.mts +0 -504
- package/dist/shared/core.FZ305VYd.mjs +0 -21
- package/dist/shared/core.OtRNdMxy.d.mts +0 -352
- package/dist/shared/core.RfnaEmgA.mjs +0 -7
- package/dist/shared/core.btEq3i3f.mjs +0 -300
- package/dist/shared/core.oSV6SRfk.mjs +0 -13
- package/dist/shared/core.om36dXXW.mjs +0 -41
- package/dist/shared/core.osFs8tU7.d.mts +0 -466
- package/dist/shared/core.q10OP9oJ.mjs +0 -5
- package/dist/shared/core.tpvDGvdC.d.mts +0 -87
- package/dist/shared/core.uFk_o9X6.mjs +0 -13
- package/dist/types/_aux.d.mts +0 -4
- package/dist/types/_aux.mjs +0 -8
- package/dist/types/expression-model.d.mts +0 -190
- package/dist/types/expression-model.mjs +0 -109
- package/dist/types/expression.d.mts +0 -6
- package/dist/types/expression.mjs +0 -113
- package/dist/types/fqnRef.d.mts +0 -60
- package/dist/types/fqnRef.mjs +0 -45
- package/dist/types/scalar.d.mts +0 -2
- package/dist/types/scalar.mjs +0 -4
- package/dist/utils/iterable/index.d.mts +0 -132
- package/dist/utils/iterable/index.mjs +0 -62
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{n as __exportAll}from"./rolldown-runtime.mjs";import{A as t,E as t$3,I as e$2,L as e$1,N as e$5,O as e,Q as t$1,T as t$6,X as t$4,c as t$8,et as t$5,i as n,l as t$7,m as e$4,r as t$2,s as e$3}from"./libs/remeda.mjs";import{A as LikeC4Styles,D as whereOperatorAsPredicate,J as FqnRef,Q as GlobalFqn,V as isDeploymentNode,_t as _type,bt as preferSummary,dt as isStepEdgeId,gt as _stage,lt as isGlobalFqn,pt as splitGlobalFqn,st as extractStep,t as RichText,ut as isGroupElementKind,vt as isOnStage,xt as exact,yt as preferDescription}from"./RichText.mjs";import{$ as nonNullable,A as ancestorsFqn,B as parentFqn,D as ifilter,E as ifind,F as hierarchyLevel,H as sortNaturalByFqn,I as isAncestor,J as compareNatural,L as isDescendantOf,Q as invariant,R as isSameHierarchy,S as ihead,U as sortParentsFirst,Y as compareNaturalHierarchically,a as difference,c as intersection,h as memoizeProp,j as commonAncestor,k as getOrCreate,o as equals,q as isString,r as stringHash,u as union,y as isome,z as nameFromFqn}from"./to-text.mjs";import{t as import_default_map}from"./libs/mnemonist.mjs";import{n as applyManualLayout,t as calcDriftsFromSnapshot}from"./calcDriftsFromSnapshot.mjs";var ElementModel=class{Aux;id;_literalId;hierarchyLevel;imported;constructor(r,i){this.$model=r,this.$element=i,this.id=this.$element.id,this._literalId=this.$element.id;let[a,o]=splitGlobalFqn(this.id);a?(this.imported={from:a,fqn:o},this.hierarchyLevel=hierarchyLevel(o)):(this.imported=null,this.hierarchyLevel=hierarchyLevel(this.id))}get name(){return nameFromFqn(this.id)}get parent(){return this.$model.parent(this)}get kind(){return this.$element.kind}get shape(){return this.style.shape}get color(){return this.style.color}get icon(){return this.style.icon??null}get tags(){return memoizeProp(this,Symbol.for(`tags`),()=>n([...this.$element.tags??[],...this.$model.specification.elements[this.$element.kind]?.tags??[]]))}get title(){return this.$element.title}get hasSummary(){return!!this.$element.summary&&!!this.$element.description&&!t(this.$element.summary,this.$element.description)}get summary(){return RichText.memoize(this,`summary`,preferSummary(this.$element))}get description(){return RichText.memoize(this,`description`,preferDescription(this.$element))}get technology(){return this.$element.technology??null}get links(){return this.$element.links??[]}get defaultView(){return memoizeProp(this,Symbol.for(`defaultView`),()=>ihead(this.scopedViews())??null)}get isRoot(){return this.parent===null}get style(){return memoizeProp(this,`style`,()=>exact({shape:this.$model.$styles.defaults.shape,color:this.$model.$styles.defaults.color,border:this.$model.$styles.defaults.border,opacity:this.$model.$styles.defaults.opacity,size:this.$model.$styles.defaults.size,padding:this.$model.$styles.defaults.padding,textSize:this.$model.$styles.defaults.text,iconPosition:this.$model.$styles.defaults.iconPosition,...this.$element.style}))}get projectId(){return this.imported?.from??this.$model.projectId}isAncestorOf(r){return isAncestor(this,r)}isDescendantOf(r){return isAncestor(r,this)}ancestors(){return this.$model.ancestors(this)}commonAncestor(r){let i=commonAncestor(this.id,r.id);return i?this.$model.element(i):null}children(){return this.$model.children(this)}descendants(r){return r?sortNaturalByFqn([...this.$model.descendants(this)],r)[Symbol.iterator]():this.$model.descendants(this)}siblings(){return this.$model.siblings(this)}*ascendingSiblings(){yield*this.siblings();for(let r of this.ancestors())yield*r.siblings()}*descendingSiblings(){for(let r of[...this.ancestors()].reverse())yield*r.siblings();yield*this.siblings()}incoming(r=`all`){return this.$model.incoming(this,r)}*incomers(r=`all`){let i=new Set;for(let a of this.incoming(r))i.has(a.source.id)||(i.add(a.source.id),yield a.source)}outgoing(r=`all`){return this.$model.outgoing(this,r)}*outgoers(r=`all`){let i=new Set;for(let a of this.outgoing(r))i.has(a.target.id)||(i.add(a.target.id),yield a.target)}get allOutgoing(){return memoizeProp(this,Symbol.for(`allOutgoing`),()=>new Set(this.outgoing()))}get allIncoming(){return memoizeProp(this,Symbol.for(`allIncoming`),()=>new Set(this.incoming()))}views(){return memoizeProp(this,Symbol.for(`views`),()=>{let r=new Set;for(let i of this.$model.views())i.includesElement(this.id)&&r.add(i);return r})}scopedViews(){return memoizeProp(this,Symbol.for(`scopedViews`),()=>{let r=new Set;for(let i of this.$model.views())i.isScopedElementView()&&i.viewOf.id===this.id&&r.add(i);return r})}isDeployed(){return e(ihead(this.deployments()))}deployments(){return this.$model.deployment.instancesOf(this)}hasMetadata(){return!!this.$element.metadata&&!e$1(this.$element.metadata)}getMetadata(r){return r?this.$element.metadata?.[r]:this.$element.metadata??{}}isTagged(r){return this.tags.includes(r)}},AbstractDeploymentElementModel=class{Aux;get style(){return memoizeProp(this,`style`,()=>exact({shape:this.$model.$styles.defaults.shape,color:this.$model.$styles.defaults.color,border:this.$model.$styles.defaults.border,opacity:this.$model.$styles.defaults.opacity,size:this.$model.$styles.defaults.size,padding:this.$model.$styles.defaults.padding,textSize:this.$model.$styles.defaults.text,iconPosition:this.$model.$styles.defaults.iconPosition,...this.$node.style}))}get name(){return nameFromFqn(this.id)}get shape(){return this.style.shape}get color(){return this.style.color}get icon(){return this.style.icon??null}get summary(){return RichText.memoize(this,`summary`,preferSummary(this.$node))}get description(){return RichText.memoize(this,`description`,preferDescription(this.$node))}get technology(){return this.$node.technology??null}get links(){return this.$node.links??[]}ancestors(){return this.$model.ancestors(this)}commonAncestor(r){let i=commonAncestor(this.id,r.id);return i?this.$model.node(i):null}siblings(){return this.$model.siblings(this)}isSibling(r){return this.parent===r.parent}*ascendingSiblings(){yield*this.siblings();for(let r of this.ancestors())yield*r.siblings()}*descendingSiblings(){for(let r of[...this.ancestors()].reverse())yield*r.siblings();yield*this.siblings()}incoming(r=`all`){return this.$model.incoming(this,r)}outgoing(r=`all`){return this.$model.outgoing(this,r)}*incomers(r=`all`){let i=new Set;for(let a of this.incoming(r))i.has(a.source.id)||(i.add(a.source.id),yield a.source)}*outgoers(r=`all`){let i=new Set;for(let a of this.outgoing(r))i.has(a.target.id)||(i.add(a.target.id),yield a.target)}*views(){for(let r of this.$model.views())r._type===`deployment`&&r.includesDeployment(this.id)&&(yield r)}isDeploymentNode(){return!1}isInstance(){return!1}get allOutgoing(){return memoizeProp(this,Symbol.for(`allOutgoing`),()=>RelationshipsAccum.from(new Set(this.outgoingModelRelationships()),new Set(this.outgoing())))}get allIncoming(){return memoizeProp(this,Symbol.for(`allIncoming`),()=>RelationshipsAccum.from(new Set(this.incomingModelRelationships()),new Set(this.incoming())))}hasMetadata(){return!!this.$node.metadata&&!e$1(this.$node.metadata)}getMetadata(r){return r?this.$node.metadata?.[r]:this.$node.metadata??{}}isTagged(r){return this.tags.includes(r)}},DeploymentNodeModel=class extends AbstractDeploymentElementModel{id;_literalId;title;hierarchyLevel;constructor(r,i){super(),this.$model=r,this.$node=i,this.id=i.id,this._literalId=i.id,this.title=i.title,this.hierarchyLevel=hierarchyLevel(i.id)}get parent(){return this.$model.parent(this)}get kind(){return this.$node.kind}get tags(){return memoizeProp(this,Symbol.for(`tags`),()=>n([...this.$node.tags??[],...this.$model.$model.specification.deployments[this.kind]?.tags??[]]))}children(){return this.$model.children(this)}descendants(r=`desc`){return this.$model.descendants(this,r)}isDeploymentNode(){return!0}*instances(){for(let r of this.descendants(`desc`))r.isInstance()&&(yield r)}onlyOneInstance(){let r=this.children();if(r.size!==1)return null;let i=ihead(r);return i?i.isInstance()?i:i.onlyOneInstance():null}_relationshipsFromInstances=null;relationshipsFromInstances(){if(this._relationshipsFromInstances)return this._relationshipsFromInstances;let{outgoing:r,incoming:i}=this._relationshipsFromInstances={outgoing:new Set,incoming:new Set};for(let a of this.instances()){for(let i of a.element.outgoing())r.add(i);for(let r of a.element.incoming())i.add(r)}return this._relationshipsFromInstances}outgoingModelRelationships(){return this.relationshipsFromInstances().outgoing.values()}incomingModelRelationships(){return this.relationshipsFromInstances().incoming.values()}internalModelRelationships(){let{outgoing:r,incoming:i}=this.relationshipsFromInstances();return intersection(i,r)}},DeployedInstanceModel=class extends AbstractDeploymentElementModel{id;_literalId;title;hierarchyLevel;constructor(r,i,a){super(),this.$model=r,this.$instance=i,this.element=a,this.id=i.id,this._literalId=i.id,this.title=i.title??a.title,this.hierarchyLevel=hierarchyLevel(i.id)}get $node(){return this.$instance}get parent(){return nonNullable(this.$model.parent(this),`Parent of ${this.id} not found`)}get style(){return memoizeProp(this,`style`,()=>exact({shape:this.$model.$styles.defaults.shape,color:this.$model.$styles.defaults.color,border:this.$model.$styles.defaults.border,opacity:this.$model.$styles.defaults.opacity,size:this.$model.$styles.defaults.size,padding:this.$model.$styles.defaults.padding,textSize:this.$model.$styles.defaults.text,iconPosition:this.$model.$styles.defaults.iconPosition,...this.element.$element.style,...this.$instance.style}))}get tags(){return memoizeProp(this,Symbol.for(`tags`),()=>n([...this.$instance.tags??[],...this.element.tags]))}get kind(){return this.element.kind}get summary(){return RichText.memoize(this,`summary`,preferSummary(this.$instance)??preferSummary(this.element.$element))}get description(){return RichText.memoize(this,`description`,preferDescription(this.$instance)??preferDescription(this.element.$element))}get technology(){return this.$instance.technology??this.element.technology??null}get links(){return this.$instance.links??this.element.links}isInstance(){return!0}outgoingModelRelationships(){return this.element.outgoing()}incomingModelRelationships(){return this.element.incoming()}*views(){for(let r of this.$model.views())if(r._type===`deployment`){if(r.includesDeployment(this.id)){yield r;continue}r.includesDeployment(this.parent.id)&&this.parent.onlyOneInstance()&&(yield r)}}},NestedElementOfDeployedInstanceModel=class{constructor(r,i){this.instance=r,this.element=i}get id(){return this.instance.id}get _literalId(){return this.instance.id}get style(){return memoizeProp(this,`style `,()=>({shape:this.element.shape,color:this.element.color,...this.element.$element.style}))}get shape(){return this.element.shape}get color(){return this.element.color}get title(){return this.element.title}get summary(){return this.element.summary}get description(){return this.element.description}get technology(){return this.element.technology}isDeploymentNode(){return!1}isInstance(){return!1}},DeploymentRelationModel=class{boundary;source;target;constructor(r,i){this.$model=r,this.$relationship=i,this.source=r.deploymentRef(i.source),this.target=r.deploymentRef(i.target);let a=commonAncestor(this.source.id,this.target.id);this.boundary=a?this.$model.node(a):null}get id(){return this.$relationship.id}get expression(){return`${this.source.id} -> ${this.target.id}`}get title(){return e(this.$relationship.title)?this.$relationship.title:null}get technology(){return e$2(this.$relationship.technology)?(this.kind&&this.$model.specification.relationships[this.kind])?.technology??null:this.$relationship.technology}get hasSummary(){return!!this.$relationship.summary&&!!this.$relationship.description&&!t(this.$relationship.summary,this.$relationship.description)}get summary(){return RichText.memoize(this,`summary`,preferSummary(this.$relationship))}get description(){return RichText.memoize(this,`description`,preferDescription(this.$relationship))}get tags(){return this.$relationship.tags??[]}get kind(){return this.$relationship.kind??null}get navigateTo(){return this.$relationship.navigateTo?this.$model.$model.view(this.$relationship.navigateTo):null}get links(){return this.$relationship.links??[]}get color(){return this.$relationship.color??this.$model.$styles.defaults.relationship.color}get line(){return this.$relationship.line??this.$model.$styles.defaults.relationship.line}get head(){return this.$relationship.head??this.$model.$styles.defaults.relationship.arrow}get tail(){return this.$relationship.tail}*views(){for(let r of this.$model.views())r.includesRelation(this.id)&&(yield r)}isDeploymentRelation(){return!0}isModelRelation(){return!1}hasMetadata(){return!!this.$relationship.metadata&&!e$1(this.$relationship.metadata)}getMetadata(r){return r?this.$relationship.metadata?.[r]:this.$relationship.metadata??{}}isTagged(r){return this.tags.includes(r)}},RelationshipsAccum=class r{static empty(){return new r}static from(i,a){return new r(new Set(i),new Set(a))}constructor(r=new Set,i=new Set){this.model=r,this.deployment=i}get isEmpty(){return this.model.size===0&&this.deployment.size===0}get nonEmpty(){return this.model.size>0||this.deployment.size>0}get size(){return this.model.size+this.deployment.size}intersect(i){return r.from(intersection(this.model,i.model),intersection(this.deployment,i.deployment))}difference(i){return r.from(difference(this.model,i.model),difference(this.deployment,i.deployment))}union(i){return r.from(union(this.model,i.model),union(this.deployment,i.deployment))}};const getId=r=>typeof r==`string`?r:r.id,VIEW_FOLDERS_SEPARATOR=`/`,splitViewTitle=r=>{if(invariant(!r.includes(`
|
|
2
|
+
`),`View title cannot contain newlines`),r.includes(`/`)){let i=r.split(`/`).map(r=>r.trim()).filter(r=>r.length>0);return t$1(i,1)?i:[``]}return[r.trim()]},normalizeViewPath=r=>splitViewTitle(r).join(`/`),getViewFolderPath=r=>{let i=splitViewTitle(r);return t$1(i,2)?i.slice(0,-1).join(`/`):null},extractViewTitleFromPath=r=>r.includes(`/`)?splitViewTitle(r).pop()??r:r.trim();var LikeC4DeploymentModel=class{#e=new Map;#t=new Map;#n=new import_default_map.default(()=>new Set);#r=new import_default_map.default(()=>new Set);#i=new Set;#a=new Map;#o=new import_default_map.default(()=>new Set);#s=new import_default_map.default(()=>new Set);#c=new import_default_map.default(()=>new Set);#l=new import_default_map.default(()=>new Set);#u=new Map;$deployments;constructor(r){this.$model=r;let i=this.$deployments=r.$data.deployments,a=t$2(i.elements);for(let r of sortParentsFirst(a)){let i=this.addElement(r);for(let r of i.tags)this.#l.get(r).add(i);i.isInstance()&&this.#r.get(i.element.id).add(i)}for(let r of t$2(i.relations)){let i=this.addRelation(r);for(let r of i.tags)this.#l.get(r).add(i)}}get $styles(){return this.$model.$styles}get projectId(){return this.$model.projectId}get project(){return this.$model.project}get specification(){return this.$model.specification}element(r){if(r instanceof DeploymentNodeModel||r instanceof DeployedInstanceModel)return r;let i=getId(r);return nonNullable(this.#e.get(i),`Element ${i} not found`)}findElement(r){return this.#e.get(r)??null}node(r){let i=this.element(r);return invariant(i.isDeploymentNode(),`Element ${i.id} is not a deployment node`),i}findNode(r){let i=this.findElement(r);return i?(invariant(i.isDeploymentNode(),`Element ${i?.id} is not a deployment node`),i):null}instance(r){let i=this.element(r);return invariant(i.isInstance(),`Element ${i.id} is not a deployed instance`),i}findInstance(r){let i=this.findElement(r);return i?(invariant(i.isInstance(),`Element ${i?.id} is not a deployed instance`),i):null}roots(){return this.#i.values()}elements(){return this.#e.values()}*nodes(){for(let r of this.#e.values())r.isDeploymentNode()&&(yield r)}*nodesOfKind(r){for(let i of this.#e.values())i.isDeploymentNode()&&i.kind===r&&(yield i)}*instances(){for(let r of this.#e.values())r.isInstance()&&(yield r)}*instancesOf(r){let i=getId(r),a=this.#r.get(i);a&&(yield*a)}deploymentRef(r){if(FqnRef.isInsideInstanceRef(r)){let{deployment:i,element:a}=r;return getOrCreate(this.#u,`${i}@${a}`,()=>new NestedElementOfDeployedInstanceModel(this.instance(i),this.$model.element(a)))}return this.element(r.deployment)}relationships(){return this.#a.values()}relationship(r){let i=getId(r);return nonNullable(this.#a.get(i),`DeploymentRelationModel ${i} not found`)}findRelationship(r){return this.#a.get(r)??null}*views(){for(let r of this.$model.views())r.isDeploymentView()&&(yield r)}parent(r){let i=getId(r);return this.#t.get(i)||null}children(r){let i=getId(r);return this.#n.get(i)}*siblings(r){let i=getId(r),a=this.parent(r)?.children()??this.roots();for(let r of a)r.id!==i&&(yield r)}*ancestors(r){let i=getId(r),a;for(;a=this.#t.get(i);)yield a,i=a.id}*descendants(r,i=`desc`){for(let a of this.children(r))i===`asc`?(yield a,yield*this.descendants(a.id)):(yield*this.descendants(a.id),yield a)}*incoming(r,i=`all`){let a=getId(r);for(let r of this.#o.get(a))switch(!0){case i===`all`:case i===`direct`&&r.target.id===a:case i===`to-descendants`&&r.target.id!==a:yield r;break}}*outgoing(r,i=`all`){let a=getId(r);for(let r of this.#s.get(a))switch(!0){case i===`all`:case i===`direct`&&r.source.id===a:case i===`from-descendants`&&r.source.id!==a:yield r;break}}addElement(r){if(this.#e.has(r.id))throw Error(`Element ${r.id} already exists`);let i=isDeploymentNode(r)?new DeploymentNodeModel(this,Object.freeze(r)):new DeployedInstanceModel(this,Object.freeze(r),this.$model.element(r.element));this.#e.set(i.id,i);let a=parentFqn(i.id);return a?(invariant(this.#e.has(a),`Parent ${a} of ${i.id} not found`),this.#t.set(i.id,this.node(a)),this.#n.get(a).add(i)):(invariant(i.isDeploymentNode(),`Root element ${i.id} is not a deployment node`),this.#i.add(i)),i}addRelation(r){if(this.#a.has(r.id))throw Error(`Relation ${r.id} already exists`);let i=new DeploymentRelationModel(this,Object.freeze(r));this.#a.set(i.id,i),this.#o.get(i.target.id).add(i),this.#s.get(i.source.id).add(i);let a=i.boundary?.id??null;if(a)for(let r of[a,...ancestorsFqn(a)])this.#c.get(r).add(i);for(let r of ancestorsFqn(i.source.id)){if(r===a)break;this.#s.get(r).add(i)}for(let r of ancestorsFqn(i.target.id)){if(r===a)break;this.#o.get(r).add(i)}return i}},RelationshipModel=class{source;target;boundary;constructor(r,i){this.model=r,this.$relationship=i,this.source=r.element(FqnRef.flatten(i.source)),this.target=r.element(FqnRef.flatten(i.target));let a=commonAncestor(this.source.id,this.target.id);this.boundary=a?this.model.element(a):null}get id(){return this.$relationship.id}get expression(){return`${this.source.id} -> ${this.target.id}`}get title(){return e$2(this.$relationship.title)?null:this.$relationship.title}get technology(){return e$2(this.$relationship.technology)?(this.kind&&this.model.specification.relationships[this.kind])?.technology??null:this.$relationship.technology}get hasSummary(){return!!this.$relationship.summary&&!!this.$relationship.description&&!t(this.$relationship.summary,this.$relationship.description)}get summary(){return RichText.memoize(this,`summary`,preferSummary(this.$relationship))}get description(){return RichText.memoize(this,`description`,preferDescription(this.$relationship))}get navigateTo(){return this.$relationship.navigateTo?this.model.view(this.$relationship.navigateTo):null}get tags(){return this.$relationship.tags??[]}get kind(){return this.$relationship.kind??null}get links(){return this.$relationship.links??[]}get color(){return this.$relationship.color??this.model.$styles.defaults.relationship.color}get line(){return this.$relationship.line??this.model.$styles.defaults.relationship.line}get head(){return this.$relationship.head??this.model.$styles.defaults.relationship.arrow}get tail(){return this.$relationship.tail}*views(){for(let r of this.model.views())r.includesRelation(this.id)&&(yield r)}isDeploymentRelation(){return!1}isModelRelation(){return!0}hasMetadata(){return!!this.$relationship.metadata&&!e$1(this.$relationship.metadata)}getMetadata(r){return r?this.$relationship.metadata?.[r]:this.$relationship.metadata??{}}isTagged(r){return this.tags.includes(r)}},EdgeModel=class{Aux;$viewModel;$view;$edge;constructor(r,i,a,o){this.source=a,this.target=o,this.$viewModel=r,this.$view=r.$view,this.$edge=i}get id(){return this.$edge.id}get parent(){return this.$edge.parent?this.$viewModel.node(this.$edge.parent):null}get label(){return this.$edge.label??null}get description(){return RichText.memoize(this,`description`,this.$edge.description)}get technology(){return this.$edge.technology??null}hasParent(){return this.$edge.parent!==null}get tags(){return this.$edge.tags??[]}get stepNumber(){return this.isStep()?extractStep(this.id):null}get navigateTo(){return this.$edge.navigateTo?this.$viewModel.$model.view(this.$edge.navigateTo):null}get color(){return this.$edge.color}get line(){return this.$edge.line??this.$viewModel.$styles.defaults.relationship.line}get head(){return this.$edge.head??this.$viewModel.$styles.defaults.relationship.arrow}get tail(){return this.$edge.tail}isStep(){return isStepEdgeId(this.id)}*relationships(r){for(let i of this.$edge.relations)if(r){let a=this.$viewModel.$model.findRelationship(i,r);a&&(yield a)}else yield this.$viewModel.$model.relationship(i)}includesRelation(r){let i=typeof r==`string`?r:r.id;return this.$edge.relations.includes(i)}isTagged(r){return this.tags.includes(r)}},NodeModel=class{Aux;$viewModel;$view;$node;constructor(r,i){this.$viewModel=r,this.$view=r.$view,this.$node=i}get id(){return this.$node.id}get title(){return this.$node.title}get kind(){return this.$node.kind}get description(){return RichText.memoize(this,`description`,this.$node.description)}get technology(){return this.$node.technology??null}get notes(){return RichText.memoize(this,`notes`,this.$node.notes)}get parent(){return this.$node.parent?this.$viewModel.node(this.$node.parent):null}get element(){let r=this.$node.modelRef;return r?this.$viewModel.$model.element(r):null}get deployment(){let r=this.$node.deploymentRef;return r?this.$viewModel.$model.deployment.element(r):null}get shape(){return this.$node.shape}get color(){return this.$node.color}get icon(){return this.$node.icon??null}get tags(){return this.$node.tags}get links(){return this.$node.links??[]}get navigateTo(){return this.$node.navigateTo?this.$viewModel.$model.view(this.$node.navigateTo):null}get style(){return this.$node.style}get x(){return`x`in this.$node?this.$node.x:void 0}get y(){return`y`in this.$node?this.$node.y:void 0}get width(){return`width`in this.$node?this.$node.width:void 0}get height(){return`height`in this.$node?this.$node.height:void 0}children(){return memoizeProp(this,`children`,()=>new Set(this.$node.children.map(r=>this.$viewModel.node(r))))}*ancestors(){let r=this.parent;for(;r;)yield r,r=r.parent}*siblings(){let r=this.parent?.children()??this.$viewModel.roots();for(let i of r)i.id!==this.id&&(yield i)}*incoming(r=`all`){for(let i of this.$node.inEdges){let a=this.$viewModel.edge(i);switch(!0){case r===`all`:case r===`direct`&&a.target.id===this.id:case r===`to-descendants`&&a.target.id!==this.id:yield a;break}}}*incomers(r=`all`){let i=new Set;for(let a of this.incoming(r))i.has(a.source.id)||(i.add(a.source.id),yield a.source)}*outgoing(r=`all`){for(let i of this.$node.outEdges){let a=this.$viewModel.edge(i);switch(!0){case r===`all`:case r===`direct`&&a.source.id===this.id:case r===`from-descendants`&&a.source.id!==this.id:yield a;break}}}*outgoers(r=`all`){let i=new Set;for(let a of this.outgoing(r))i.has(a.target.id)||(i.add(a.target.id),yield a.target)}isLayouted(){return`width`in this.$node&&`height`in this.$node}hasChildren(){return this.$node.children.length>0}hasParent(){return this.$node.parent!==null}hasElement(){return e(this.$node.modelRef)}hasDeployment(){return e(this.$node.deploymentRef)}hasDeployedInstance(){return this.hasElement()&&this.hasDeployment()}isGroup(){return isGroupElementKind(this.$node)}isTagged(r){return this.tags.includes(r)}},LikeC4ViewModel=class{Aux;#e;#t=new Set;#n=new Map;#r=new Map;#i=new Set;#a=new Set;#o=new Set;#s=new import_default_map.default(r=>new Set);#c;id;$model;title;folder;viewPath;constructor(r,i,a,o){this.$model=r,this.#e=a,this.id=a.id,this.folder=i,this.#c=o;for(let r of this.#e.nodes){let i=new NodeModel(this,Object.freeze(r));this.#n.set(r.id,i),r.parent||this.#t.add(i),r.deploymentRef&&this.#a.add(r.deploymentRef),r.modelRef&&this.#i.add(r.modelRef);for(let r of i.tags)this.#s.get(r).add(i)}for(let r of this.#e.edges){let i=new EdgeModel(this,Object.freeze(r),this.node(r.source),this.node(r.target));for(let r of i.tags)this.#s.get(r).add(i);for(let i of r.relations)this.#o.add(i);this.#r.set(r.id,i)}this.title=a.title?extractViewTitleFromPath(a.title):null,this.viewPath=a.title?normalizeViewPath(a.title):a.id}get $styles(){return this.$model.$styles}get _type(){return this.#e[_type]}get stage(){return this.#e[_stage]}get bounds(){if(`bounds`in this.#e)return this.#e.bounds;if(this.#c)return this.#c.bounds;throw Error(`View is not layouted`)}get titleOrId(){return this.title??this.viewOf?.title??this.id}get titleOrUntitled(){return this.title??`Untitled`}get breadcrumbs(){return memoizeProp(this,`breadcrumbs`,()=>this.folder.isRoot?[this]:[...this.folder.breadcrumbs,this])}get description(){return RichText.memoize(this,`description`,this.#e.description)}get tags(){return this.#e.tags??[]}get links(){return this.#e.links??[]}get viewOf(){if(this.isElementView()){let r=this.#e.viewOf;return r?this.$model.element(r):null}return null}get mode(){return this.isDynamicView()?this.#e.variant??`diagram`:null}get includedTags(){return[...this.#s.keys()]}get $view(){if(!this.isLayouted()||`drifts`in this.#e)return this.#e;let r=this.#c;return r?memoizeProp(this,`withDriftReasons`,()=>calcDriftsFromSnapshot(this.#e,r)):this.#e}get $layouted(){if(!this.isLayouted())throw Error(`View is not layouted`);return this.$manual??this.#e}get hasManualLayout(){return this.#c!==void 0}get hasLayoutDrifts(){if(!this.isLayouted())return!1;let r=this.$manual;return!!r?.drifts&&r.drifts.length>0}get $manual(){if(!this.isLayouted())return null;let r=this.#c;return r?memoizeProp(this,`snapshotWithManualLayout`,()=>applyManualLayout(this.#e,r)):null}get projectId(){return this.$model.projectId}roots(){return this.#t.values()}*compounds(){for(let r of this.#n.values())r.hasChildren()&&(yield r)}node(r){let i=getId(r);return nonNullable(this.#n.get(i),`Node ${i} not found in view ${this.#e.id}`)}findNode(r){return this.#n.get(getId(r))??null}findNodeWithElement(r){let i=getId(r);return this.#i.has(i)?ifind(this.#n.values(),r=>r.hasElement()&&r.element.id===i)??null:null}nodes(){return this.#n.values()}edge(r){let i=getId(r);return nonNullable(this.#r.get(i),`Edge ${i} not found in view ${this.#e.id}`)}findEdge(r){return this.#r.get(getId(r))??null}edges(){return this.#r.values()}*edgesWithRelation(r){for(let i of this.#r.values())i.includesRelation(r)&&(yield i)}*elements(){for(let r of this.#n.values())r.hasElement()&&(yield r)}isTagged(r){return this.tags.includes(r)}includesElement(r){return this.#i.has(getId(r))}includesDeployment(r){return this.#a.has(getId(r))}includesRelation(r){return this.#o.has(getId(r))}isComputed(){return this.#e[_stage]===`computed`}isLayouted(){return this.#e[_stage]===`layouted`}isDiagram(){return this.#e[_stage]===`layouted`}isElementView(){return this.#e[_type]===`element`}isScopedElementView(){return this.#e[_type]===`element`&&e(this.#e.viewOf)}isDeploymentView(){return this.#e[_type]===`deployment`}isDynamicView(){return this.#e[_type]===`dynamic`}},LikeC4ViewsFolder=class r{$model;path;title;isRoot;parentPath;defaultViewId;constructor(r,i,o){this.$model=r,this.path=i.join(`/`),this.isRoot=this.path===``,this.title=t$3(i),this.isRoot?this.parentPath=void 0:this.parentPath=i.slice(0,-1).join(`/`),this.defaultViewId=o}get defaultView(){return this.defaultViewId?this.$model.view(this.defaultViewId):null}get breadcrumbs(){return invariant(!this.isRoot,`Root view folder has no breadcrumbs`),memoizeProp(this,`breadcrumbs`,()=>{let r=this.parent;return r?r.isRoot?[r,this]:[...r.breadcrumbs,this]:[this]})}get parent(){return invariant(!this.isRoot,`Root view folder has no parent`),e$2(this.parentPath)?null:this.$model.viewFolder(this.parentPath)}get children(){return this.$model.viewFolderItems(this.path)}get folders(){return memoizeProp(this,`folders`,()=>{let i=[];for(let a of this.children)a instanceof r&&i.push(a);return i})}get views(){return memoizeProp(this,`views`,()=>{let r=[];for(let i of this.children)i instanceof LikeC4ViewModel&&r.push(i);return r})}},LikeC4Model=class r{Aux;_elements=new Map;_parents=new Map;_children=new import_default_map.default(()=>new Set);_rootElements=new Set;_relations=new Map;_incoming=new import_default_map.default(()=>new Set);_outgoing=new import_default_map.default(()=>new Set);_internal=new import_default_map.default(()=>new Set);_views=new Map;_rootViewFolder;_viewFolders=new Map;_viewFolderItems=new import_default_map.default(()=>new Set);_allTags=new import_default_map.default(()=>new Set);static fromParsed(i){return new r(i)}static create(i){return new r(i)}static fromDump(i){let{_stage:a=`layouted`,projectId:o=`unknown`,project:s,globals:c,imports:l,deployments:u,views:d,relations:f,elements:p,specification:m}=i;return new r({[_stage]:a,projectId:o,project:s,globals:{predicates:c?.predicates??{},dynamicPredicates:c?.dynamicPredicates??{},styles:c?.styles??{}},imports:l??{},deployments:{elements:u?.elements??{},relations:u?.relations??{}},views:d??{},relations:f??{},elements:p??{},specification:m})}deployment;$data;constructor(r){this.$data=r;for(let[,i]of t$4(r.elements)){let r=this.addElement(i);for(let i of r.tags)this._allTags.get(i).add(r)}for(let[i,a]of t$4(r.imports??{}))for(let r of sortParentsFirst(a)){let a=this.addImportedElement(i,r);for(let r of a.tags)this._allTags.get(r).add(a)}for(let i of t$2(r.relations)){let r=this.addRelation(i);for(let i of r.tags)this._allTags.get(i).add(r)}if(this.deployment=new LikeC4DeploymentModel(this),isOnStage(r,`computed`)||isOnStage(r,`layouted`)){let i=compareNaturalHierarchically(`/`),a=t$5(t$2(r.views),t$6(r=>({view:r,path:normalizeViewPath(r.title??r.id),folderPath:r.title&&getViewFolderPath(r.title)||``})),t$7((r,a)=>i(r.folderPath,a.folderPath))),o=r=>{let i=this._viewFolders.get(r);if(!i){let o=e$3(r,`/`);invariant(t$1(o,1),`View group path "${r}" must have at least one element`);let s;s=r===``?a.find(r=>r.view.id===`index`):a.find(i=>i.path===r),i=new LikeC4ViewsFolder(this,o,s?.view.id),this._viewFolders.set(r,i)}return i};this._rootViewFolder=o(``);for(let{folderPath:r}of a)this._viewFolders.has(r)||e$3(r,`/`).reduce((r,i)=>{let a=r.join(`/`),c=o(e$1(a)?i:a+`/`+i);return this._viewFolderItems.get(a).add(c),r.push(i),r},[]);for(let{view:i,folderPath:s}of a){let a=new LikeC4ViewModel(this,o(s),i,r.manualLayouts?.[i.id]);this._viewFolderItems.get(s).add(a),this._views.set(i.id,a);for(let r of a.tags)this._allTags.get(r).add(a)}}else this._rootViewFolder=new LikeC4ViewsFolder(this,[``],void 0),this._viewFolders.set(this._rootViewFolder.path,this._rootViewFolder)}get asParsed(){return this}get asComputed(){return this}get asLayouted(){return this}get $styles(){return memoizeProp(this,`styles`,()=>LikeC4Styles.from(this.project.styles,this.specification.customColors))}isParsed(){return this.stage===`parsed`}isLayouted(){return this.stage===`layouted`}isComputed(){return this.stage===`computed`}get $model(){return this.$data}get stage(){return this.$data[_stage]}get projectId(){return this.$data.projectId??`default`}get project(){return this.$data.project??memoizeProp(this,Symbol.for(`project`),()=>({id:this.projectId,styles:{},manualLayouts:{}}))}get specification(){return this.$data.specification}get globals(){return memoizeProp(this,Symbol.for(`globals`),()=>({predicates:{...this.$data.globals?.predicates},dynamicPredicates:{...this.$data.globals?.dynamicPredicates},styles:{...this.$data.globals?.styles}}))}element(r){if(r instanceof ElementModel)return r;let i=getId(r);return nonNullable(this._elements.get(i),`Element ${i} not found`)}findElement(r){return this._elements.get(getId(r))??null}roots(){return this._rootElements.values()}elements(){return this._elements.values()}relationships(){return this._relations.values()}relationship(r,i){if(i===`deployment`)return this.deployment.relationship(r);let a=getId(r),o=this._relations.get(a)??null;return o||i===`model`?nonNullable(o,`Model relation ${a} not found`):nonNullable(this.deployment.findRelationship(a),`No model/deployment relation ${a} not found`)}findRelationship(r,i){if(i===`deployment`)return this.deployment.findRelationship(r);let a=this._relations.get(getId(r))??null;return a||i===`model`?a:this.deployment.findRelationship(r)}views(){return this._views.values()}view(r){let i=getId(r);return nonNullable(this._views.get(i),`View ${i} not found`)}findView(r){return this._views.get(r)??null}findManualLayout(r){return`manualLayouts`in this.$data?this.$data.manualLayouts?.[r]??null:null}viewFolder(r){return nonNullable(this._viewFolders.get(r),`View folder ${r} not found`)}get rootViewFolder(){return this._rootViewFolder}get hasViewFolders(){return this._viewFolders.size>1}viewFolderItems(r){return invariant(this._viewFolders.has(r),`View folder ${r} not found`),this._viewFolderItems.get(r)}parent(r){let i=getId(r);return this._parents.get(i)||null}children(r){let i=getId(r);return this._children.get(i)}*siblings(r){let i=getId(r),a=this._parents.get(i),o=a?this._children.get(a.id).values():this.roots();for(let r of o)r.id!==i&&(yield r)}*ancestors(r){let i=getId(r),a;for(;a=this._parents.get(i);)yield a,i=a.id}*descendants(r){for(let i of this.children(r))yield i,yield*this.descendants(i.id)}*incoming(r,i=`all`){let a=getId(r);for(let r of this._incoming.get(a))switch(!0){case i===`all`:case i===`direct`&&r.target.id===a:case i===`to-descendants`&&r.target.id!==a:yield r;break}}*outgoing(r,i=`all`){let a=getId(r);for(let r of this._outgoing.get(a))switch(!0){case i===`all`:case i===`direct`&&r.source.id===a:case i===`from-descendants`&&r.source.id!==a:yield r;break}}get tags(){return memoizeProp(this,`tags`,()=>t$7([...this._allTags.keys()],compareNatural))}get tagsSortedByUsage(){return memoizeProp(this,`tagsSortedByUsage`,()=>t$5([...this._allTags.entries()],t$6(([r,i])=>({tag:r,count:i.size,tagged:i})),t$7((r,i)=>compareNatural(r.tag,i.tag)),t$8([e$4(`count`),`desc`])))}findByTag(r,i){return ifilter(this._allTags.get(r),r=>i===`elements`?r instanceof ElementModel:i===`views`?r instanceof LikeC4ViewModel:i===`relationships`?r instanceof RelationshipModel:!0)}*elementsOfKind(r){for(let i of this._elements.values())i.kind===r&&(yield i)}*elementsWhere(r){let i=whereOperatorAsPredicate(r);for(let r of this._elements.values())i(r)&&(yield r)}*relationshipsWhere(r){let i=whereOperatorAsPredicate(r);for(let r of this._relations.values())i(r)&&(yield r)}addElement(r){if(this._elements.has(r.id))throw Error(`Element ${r.id} already exists`);let i=new ElementModel(this,Object.freeze(r));this._elements.set(i.id,i);let a=parentFqn(i.id);return a?(invariant(this._elements.has(a),`Parent ${a} of ${i.id} not found`),this._parents.set(i.id,this.element(a)),this._children.get(a).add(i)):this._rootElements.add(i),i}addImportedElement(r,i){invariant(!isGlobalFqn(i.id),`Imported element already has global FQN`);let a=GlobalFqn(r,i.id);if(this._elements.has(a))throw Error(`Element ${a} already exists`);let o=new ElementModel(this,Object.freeze({...i,id:a}));this._elements.set(o.id,o);let s=parentFqn(o.id);for(;s;){if(s.includes(`.`)&&this._elements.has(s))return this._parents.set(o.id,this.element(s)),this._children.get(s).add(o),o;s=parentFqn(s)}return this._rootElements.add(o),o}addRelation(r){if(this._relations.has(r.id))throw Error(`Relation ${r.id} already exists`);let i=new RelationshipModel(this,Object.freeze(r)),{source:a,target:o}=i;this._relations.set(i.id,i),this._incoming.get(o.id).add(i),this._outgoing.get(a.id).add(i);let s=commonAncestor(a.id,o.id);if(s)for(let r of[s,...ancestorsFqn(s)])this._internal.get(r).add(i);for(let r of ancestorsFqn(a.id)){if(r===s)break;this._outgoing.get(r).add(i)}for(let r of ancestorsFqn(o.id)){if(r===s)break;this._incoming.get(r).add(i)}return i}};(function(r){r.EMPTY=LikeC4Model.create({_stage:`computed`,projectId:`default`,project:{id:`default`},specification:{elements:{},relationships:{},deployments:{},tags:{}},globals:{predicates:{},dynamicPredicates:{},styles:{}},deployments:{elements:{},relations:{}},elements:{},relations:{},views:{},imports:{}})})(LikeC4Model||={});let Connection;(function(r){r.isInside=r=>i=>isAncestor(r,i.source.id)&&isAncestor(r,i.target.id);let i=r.isDirectedBetween=(r,i)=>a=>(a.source.id===r||isAncestor(r,a.source.id))&&(a.target.id===i||isAncestor(i,a.target.id));r.isAnyBetween=(r,a)=>{let o=i(r,a),s=i(a,r);return r=>o(r)||s(r)};let a=r.isIncoming=r=>i=>(i.target.id===r||isAncestor(r,i.target.id))&&!isAncestor(r,i.source.id),o=r.isOutgoing=r=>i=>(i.source.id===r||isAncestor(r,i.source.id))&&!isAncestor(r,i.target.id);r.isAnyInOut=r=>{let i=a(r),s=o(r);return r=>i(r)||s(r)}})(Connection||={});const customInspectSymbol=Symbol.for(`nodejs.util.inspect.custom`);var DeploymentConnectionModel=class r{id;constructor(r,i,a){this.source=r,this.target=i,this.relations=a,this.id=stringHash(`deployment:${r.id}:${i.id}`)}get expression(){return`${this.source.id} -> ${this.target.id}`}_boundary;get boundary(){return this._boundary??=this.source.commonAncestor(this.target),this._boundary}nonEmpty(){return this.relations.nonEmpty}[customInspectSymbol](i,a,o){let s=this.toString();return Object.defineProperty(s,`constructor`,{value:r,enumerable:!1}),s}toString(){let r=[...this.relations.model].map(r=>` `+r.expression);r.length?r.unshift(` model:`):r.unshift(` model: []`);let i=[...this.relations.deployment].map(r=>` `+r.expression);return i.length?i.unshift(` deployment:`):i.unshift(` deployment: []`),[this.expression,...r,...i].join(`
|
|
3
|
+
`)}hasDirectDeploymentRelation(){for(let r of this.relations.deployment)if(r.source.id===this.source.id||r.target.id===this.target.id)return!0;return!1}*values(){yield*this.relations.model,yield*this.relations.deployment}mergeWith(i){return Array.isArray(i)?i.reduce((r,i)=>r.mergeWith(i),this):(invariant(this.source.id===i.source.id,`Cannot merge connections with different sources`),invariant(this.target.id===i.target.id,`Cannot merge connections with different targets`),new r(this.source,this.target,this.relations.union(i.relations)))}difference(i){return new r(this.source,this.target,this.relations.difference(i.relations))}intersect(i){return new r(this.source,this.target,this.relations.intersect(i.relations))}equals(i){return invariant(i instanceof r,`Other should ne DeploymentConnectionModel`),this.id===i.id&&this.source.id===i.source.id&&this.target.id===i.target.id&&equals(this.relations.model,i.relations.model)&&equals(this.relations.deployment,i.relations.deployment)}update(i){return i&&={model:this.relations.model,deployment:this.relations.deployment,...i},new r(this.source,this.target,i?new RelationshipsAccum(i.model??new Set,i.deployment??new Set):this.relations)}};function isNestedConnection(r,i){if(!i){let i=r;return r=>isNestedConnection(r,i)}let a=r.source===i.source,o=r.target===i.target;if(a&&o)return!1;let s=isAncestor(i.source.id,r.source.id),c=isAncestor(i.target.id,r.target.id);return s&&c||a&&c||o&&s}function findDeepestNestedConnection(r,i){let a=i;for(let i of r)isNestedConnection(i,a)&&(a=i);return a===i?null:a}function sortDeepestFirst(r){let i=[],a=r.slice(),o;for(;o=a.shift();){let r;for(;r=findDeepestNestedConnection(a,o);){let o=a.indexOf(r);i.push(a.splice(o,1)[0])}i.push(o)}return i}function boundaryHierarchy(r){return r.boundary?.id?`.${r.boundary.id}`:``}function sortConnectionsByBoundaryHierarchy(r,i){if(!r||isString(r)){let i=r??`asc`;return r=>_sortByBoundary(r,i)}return _sortByBoundary(r,i??`asc`)}function _sortByBoundary(r,i){return t$5(r,t$6(r=>({id:boundaryHierarchy(r),conn:r})),sortNaturalByFqn(i),t$6(r=>r.conn))}function findAscendingConnections(r,i){return r.filter(r=>isNestedConnection(i,r))}function findDescendantConnections(r,i){return r.filter(isNestedConnection(i))}function mergeConnections(r){let i=new Map;for(let a of r){let r=i.get(a.id);r?i.set(a.id,a.mergeWith(r)):i.set(a.id,a)}return[...i.values()]}function differenceConnections(r,i){let a=new Map([...i].map(r=>[r.id,r]));return[...r].reduce((r,i)=>{let o=a.get(i.id);if(!o)return r.push(i),r;let s=i.difference(o);return s.nonEmpty()&&r.push(s),r},[])}function hasSameSourceTarget(r,i){return i?r.source===i.source&&r.target===i.target:i=>r.source===i.source&&r.target===i.target}function hasSameSource(r,i){return i?r.source===i.source:i=>r.source===i.source}function hasSameTarget(r,i){return i?r.target===i.target:i=>r.target===i.target}function isOutgoing(r,i){if(!i){let i=r;return r=>isOutgoing(r,i)}let a=r;return isDescendantOf(a.source,i)&&!isDescendantOf(a.target,i)}function isIncoming(r,i){if(!i){let i=r;return r=>isIncoming(r,i)}let a=r;return isDescendantOf(a.target,i)&&!isDescendantOf(a.source,i)}function isAnyInOut(r,i){if(!i){let i=r;return r=>isAnyInOut(r,i)}let a=r;return isDescendantOf(a.source,i)!==isDescendantOf(a.target,i)}var ConnectionModel=class r{id;constructor(r,i,a=new Set){this.source=r,this.target=i,this.relations=a,this.id=stringHash(`model:${r.id}:${i.id}`)}_boundary;get boundary(){return this._boundary??=this.source.commonAncestor(this.target)}get expression(){return`${this.source.id} -> ${this.target.id}`}get isDirect(){return this.nonEmpty()&&!this.isImplicit}get isImplicit(){return this.nonEmpty()&&isome(this.relations,e$5(hasSameSourceTarget(this)))}get directRelations(){return new Set(ifilter(this.relations,hasSameSourceTarget(this)))}nonEmpty(){return this.relations.size>0}mergeWith(i){return invariant(this.source.id===i.source.id,`Cannot merge connections with different sources`),invariant(this.target.id===i.target.id,`Cannot merge connections with different targets`),new r(this.source,this.target,union(this.relations,i.relations))}difference(i){return new r(this.source,this.target,difference(this.relations,i.relations))}intersect(i){return invariant(i instanceof r,`Cannot intersect connection with different type`),new r(this.source,this.target,intersection(this.relations,i.relations))}equals(i){invariant(i instanceof r,`Cannot merge connection with different type`);let a=i;return this.id===a.id&&this.source.id===a.source.id&&this.target.id===a.target.id&&equals(this.relations,a.relations)}update(i){return new r(this.source,this.target,i)}[customInspectSymbol](i,a,o){let s=this.toString();return Object.defineProperty(s,`constructor`,{value:r,enumerable:!1}),s}toString(){return[this.expression,this.relations.size?` relations:`:` relations: [ ]`,...[...this.relations].map(r=>` `+r.expression)].join(`
|
|
4
|
+
`)}reversed(){return new r(this.target,this.source)}},find_exports$1=__exportAll({findConnection:()=>findConnection$1,findConnectionsBetween:()=>findConnectionsBetween$1,findConnectionsWithin:()=>findConnectionsWithin$1});function findConnection$1(r,i,a=`directed`){if(r===i||isSameHierarchy(r,i))return[];let o=r.allOutgoing.intersect(i.allIncoming),s=o.nonEmpty?[new DeploymentConnectionModel(r,i,o)]:[];return a===`directed`?s:[...s,...findConnection$1(i,r,`directed`)]}function findConnectionsBetween$1(r,i,a=`both`){if(r.allIncoming.isEmpty&&r.allOutgoing.isEmpty)return[];let o=[],s=[];for(let c of i)if(r!==c)for(let i of findConnection$1(r,c,a))i.source===r?o.push(i):s.push(i);return[...o,...s]}function findConnectionsWithin$1(r){return[...r].reduce((r,i,a,o)=>(a===o.length-1||r.push(...findConnectionsBetween$1(i,o.slice(a+1),`both`)),r),[])}var find_exports=__exportAll({findConnection:()=>findConnection,findConnectionsBetween:()=>findConnectionsBetween,findConnectionsWithin:()=>findConnectionsWithin});function findConnection(r,i,a=`directed`){if(r===i||isSameHierarchy(r,i))return[];let o=intersection(r.allOutgoing,i.allIncoming),s=o.size>0?new ConnectionModel(r,i,o):null;if(a===`directed`)return s?[s]:[];let c=intersection(r.allIncoming,i.allOutgoing),l=c.size>0?new ConnectionModel(i,r,c):null;return s&&l?[s,l]:s?[s]:l?[l]:[]}function findConnectionsBetween(r,i,a=`both`){if(r.allIncoming.size===0&&r.allOutgoing.size===0)return[];let o=[],s=[];for(let c of i)if(r!==c)for(let i of findConnection(r,c,a))i.source===r?o.push(i):s.push(i);return[...o,...s]}function findConnectionsWithin(r){return[...r].reduce((r,i,a,o)=>(a===o.length-1||r.push(...findConnectionsBetween(i,o.slice(a+1),`both`)),r),[])}function isDeploymentNodeModel(r){return r instanceof DeploymentNodeModel}function isDeployedInstanceModel(r){return r instanceof DeployedInstanceModel}function isDeploymentElementModel(r){return isDeploymentNodeModel(r)||isDeployedInstanceModel(r)}function isNestedElementOfDeployedInstanceModel(r){return r instanceof NestedElementOfDeployedInstanceModel}function isDeploymentRelationModel(r){return r instanceof DeploymentRelationModel}function isRelationModel(r){return r instanceof RelationshipModel}function isElementModel(r){return r instanceof ElementModel}function isLikeC4ViewModel(r){return r instanceof LikeC4ViewModel}function isNodeModel(r){return r instanceof NodeModel}function isEdgeModel(r){return r instanceof EdgeModel}export{DeploymentConnectionModel as A,VIEW_FOLDERS_SEPARATOR as B,isAnyInOut as C,mergeConnections as D,isOutgoing as E,LikeC4ViewModel as F,DeploymentNodeModel as G,getViewFolderPath as H,NodeModel as I,ElementModel as J,DeploymentRelationModel as K,EdgeModel as L,Connection as M,LikeC4Model as N,sortConnectionsByBoundaryHierarchy as O,LikeC4ViewsFolder as P,RelationshipModel as R,hasSameTarget as S,isNestedConnection as T,normalizeViewPath as U,extractViewTitleFromPath as V,DeployedInstanceModel as W,findAscendingConnections as _,isEdgeModel as a,hasSameSource as b,isNestedElementOfDeployedInstanceModel as c,findConnection as d,findConnectionsBetween as f,differenceConnections as g,ConnectionModel as h,isDeploymentRelationModel as i,customInspectSymbol as j,sortDeepestFirst as k,isNodeModel as l,find_exports$1 as m,isDeploymentElementModel as n,isElementModel as o,find_exports as p,RelationshipsAccum as q,isDeploymentNodeModel as r,isLikeC4ViewModel as s,isDeployedInstanceModel as t,isRelationModel as u,findDeepestNestedConnection as v,isIncoming as w,hasSameSourceTarget as x,findDescendantConnections as y,LikeC4DeploymentModel as z};
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
import { $i as IterableContainer, bi as Fqn, ea as IteratorLike, ii as Unknown, jr as Any, sa as ReorderedArray, zr as EdgeId } from "./guards.mjs";
|
|
2
|
+
import { C as ElementModel, S as NodeModel, T as RelationshipModel, a as DeploymentNodeModel, c as NestedElementOfDeployedInstanceModel, i as DeploymentElementModel, l as RelationshipsAccum, r as DeployedInstanceModel, s as DeploymentRelationModel, w as AnyRelationshipModel, x as EdgeModel, y as LikeC4ViewModel } from "./LikeC4Model.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/model/connection/Connection.d.ts
|
|
5
|
+
interface Connection<Elem = ElementModel<Any> | DeploymentElementModel<Any>, Id = string> {
|
|
6
|
+
readonly id: Id;
|
|
7
|
+
readonly source: Elem;
|
|
8
|
+
readonly target: Elem;
|
|
9
|
+
/**
|
|
10
|
+
* Common ancestor of the source and target elements.
|
|
11
|
+
* Represents the boundary of the connection.
|
|
12
|
+
*/
|
|
13
|
+
readonly boundary: Elem | null;
|
|
14
|
+
/**
|
|
15
|
+
* Human readable expression of the connection
|
|
16
|
+
* Mostly used for testing and debugging
|
|
17
|
+
*/
|
|
18
|
+
readonly expression: string;
|
|
19
|
+
mergeWith(this: Connection<Elem, Id>, other: typeof this): typeof this;
|
|
20
|
+
nonEmpty(): boolean;
|
|
21
|
+
difference(this: Connection<Elem, Id>, other: typeof this): typeof this;
|
|
22
|
+
intersect(this: Connection<Elem, Id>, other: typeof this): typeof this;
|
|
23
|
+
equals(other: Connection): boolean;
|
|
24
|
+
}
|
|
25
|
+
declare namespace Connection {
|
|
26
|
+
type ConnectionPredicate = <C extends Connection<{
|
|
27
|
+
id: string;
|
|
28
|
+
}, any>>(connection: C) => boolean;
|
|
29
|
+
type ElementId = Fqn | string;
|
|
30
|
+
export const isInside: (fqn: ElementId) => ConnectionPredicate;
|
|
31
|
+
export const isDirectedBetween: (source: ElementId, target: ElementId) => ConnectionPredicate;
|
|
32
|
+
export const isAnyBetween: (source: ElementId, target: ElementId) => ConnectionPredicate;
|
|
33
|
+
export const isIncoming: (target: ElementId) => ConnectionPredicate;
|
|
34
|
+
export const isOutgoing: (source: ElementId) => ConnectionPredicate;
|
|
35
|
+
export const isAnyInOut: (source: ElementId) => ConnectionPredicate;
|
|
36
|
+
export {};
|
|
37
|
+
}
|
|
38
|
+
//#endregion
|
|
39
|
+
//#region src/utils/const.d.ts
|
|
40
|
+
declare const customInspectSymbol: unique symbol;
|
|
41
|
+
//#endregion
|
|
42
|
+
//#region src/model/connection/deployment/DeploymentConnectionModel.d.ts
|
|
43
|
+
/**
|
|
44
|
+
* Connection is ephemeral entity, result of a resolving relationships between source and target.
|
|
45
|
+
* Includes direct relationships and/or between their nested elements.
|
|
46
|
+
*/
|
|
47
|
+
declare class DeploymentConnectionModel<A extends Any = Any> implements Connection<DeploymentElementModel<A>, EdgeId> {
|
|
48
|
+
readonly source: DeploymentElementModel<A>;
|
|
49
|
+
readonly target: DeploymentElementModel<A>;
|
|
50
|
+
readonly relations: RelationshipsAccum<A>;
|
|
51
|
+
readonly id: EdgeId;
|
|
52
|
+
constructor(source: DeploymentElementModel<A>, target: DeploymentElementModel<A>, relations: RelationshipsAccum<A>);
|
|
53
|
+
/**
|
|
54
|
+
* Human readable expression of the connection
|
|
55
|
+
* Mostly used for testing and debugging
|
|
56
|
+
*/
|
|
57
|
+
get expression(): string;
|
|
58
|
+
private _boundary;
|
|
59
|
+
/**
|
|
60
|
+
* Common ancestor of the source and target elements.
|
|
61
|
+
* Represents the boundary of the connection.
|
|
62
|
+
*/
|
|
63
|
+
get boundary(): DeploymentNodeModel<A> | null;
|
|
64
|
+
nonEmpty(): boolean;
|
|
65
|
+
[customInspectSymbol](_depth: any, _inspectOptions: any, _inspect: any): string;
|
|
66
|
+
toString(): string;
|
|
67
|
+
/**
|
|
68
|
+
* Check if connection contains deployment relation,
|
|
69
|
+
* that is directly connected to source or target.
|
|
70
|
+
*/
|
|
71
|
+
hasDirectDeploymentRelation(): boolean;
|
|
72
|
+
values(): IteratorLike<RelationshipModel<A> | DeploymentRelationModel<A>>;
|
|
73
|
+
/**
|
|
74
|
+
* Merge with another connections, if it has the same source and target.
|
|
75
|
+
* Returns new connection with union of relationships.
|
|
76
|
+
*/
|
|
77
|
+
mergeWith(others: DeploymentConnectionModel<A>[]): DeploymentConnectionModel<A>;
|
|
78
|
+
/**
|
|
79
|
+
* Merge with another connection, if it has the same source and target.
|
|
80
|
+
* Returns new connection with union of relationships.
|
|
81
|
+
*/
|
|
82
|
+
mergeWith(other: DeploymentConnectionModel<A>): DeploymentConnectionModel<A>;
|
|
83
|
+
difference(other: DeploymentConnectionModel<A>): DeploymentConnectionModel<A>;
|
|
84
|
+
intersect(other: DeploymentConnectionModel<A>): DeploymentConnectionModel<A>;
|
|
85
|
+
equals(other: Connection): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Creates a clone of the current `DeploymentConnectionModel` instance with optional overrides.
|
|
88
|
+
* if `null` is provided in overrides, the corresponding relation set will be empty.
|
|
89
|
+
*/
|
|
90
|
+
update(overrides?: {
|
|
91
|
+
model?: ReadonlySet<RelationshipModel<A>> | null;
|
|
92
|
+
deployment?: ReadonlySet<DeploymentRelationModel<A>> | null;
|
|
93
|
+
}): DeploymentConnectionModel<A>;
|
|
94
|
+
}
|
|
95
|
+
//#endregion
|
|
96
|
+
//#region src/model/connection/model/ConnectionModel.d.ts
|
|
97
|
+
/**
|
|
98
|
+
* Connection refers to any relationships between two elements,
|
|
99
|
+
* both direct and implicit ones (between their nested elements).
|
|
100
|
+
*
|
|
101
|
+
* Merges relationships together to an single edge on the diagram.
|
|
102
|
+
*/
|
|
103
|
+
declare class ConnectionModel<A extends Any = Unknown> implements Connection<ElementModel<A>, EdgeId> {
|
|
104
|
+
readonly source: ElementModel<A>;
|
|
105
|
+
readonly target: ElementModel<A>;
|
|
106
|
+
readonly relations: ReadonlySet<RelationshipModel<A>>;
|
|
107
|
+
readonly id: EdgeId;
|
|
108
|
+
constructor(source: ElementModel<A>, target: ElementModel<A>, relations?: ReadonlySet<RelationshipModel<A>>);
|
|
109
|
+
private _boundary;
|
|
110
|
+
/**
|
|
111
|
+
* Common ancestor of the source and target elements.
|
|
112
|
+
* Represents the boundary of the connection.
|
|
113
|
+
*/
|
|
114
|
+
get boundary(): ElementModel<A> | null;
|
|
115
|
+
/**
|
|
116
|
+
* Human readable expression of the connection
|
|
117
|
+
* Mostly used for testing and debugging
|
|
118
|
+
*/
|
|
119
|
+
get expression(): string;
|
|
120
|
+
/**
|
|
121
|
+
* Returns true if only includes relations between the source and target elements.
|
|
122
|
+
*/
|
|
123
|
+
get isDirect(): boolean;
|
|
124
|
+
/**
|
|
125
|
+
* Returns true if includes relations between nested elements of the source and target elements.
|
|
126
|
+
*/
|
|
127
|
+
get isImplicit(): boolean;
|
|
128
|
+
get directRelations(): ReadonlySet<RelationshipModel<A>>;
|
|
129
|
+
nonEmpty(): boolean;
|
|
130
|
+
mergeWith(other: ConnectionModel<A>): ConnectionModel<A>;
|
|
131
|
+
difference(other: ConnectionModel<A>): ConnectionModel<A>;
|
|
132
|
+
intersect(other: ConnectionModel<A>): ConnectionModel<A>;
|
|
133
|
+
equals(other: Connection): boolean;
|
|
134
|
+
/**
|
|
135
|
+
* Returns a new instance with the updated relations.
|
|
136
|
+
*
|
|
137
|
+
* @param relations - A readonly set of `RelationshipModel` instances representing the new relations.
|
|
138
|
+
* @returns A new `ConnectionModel` instance with the updated relations.
|
|
139
|
+
*/
|
|
140
|
+
update(relations: ReadonlySet<RelationshipModel<A>>): ConnectionModel<A>;
|
|
141
|
+
[customInspectSymbol](_depth: any, _inspectOptions: any, _inspect: any): string;
|
|
142
|
+
toString(): string;
|
|
143
|
+
/**
|
|
144
|
+
* Creates a new connection with reversed direction (target becomes source and vice versa)
|
|
145
|
+
*/
|
|
146
|
+
reversed(): ConnectionModel<A>;
|
|
147
|
+
}
|
|
148
|
+
//#endregion
|
|
149
|
+
//#region src/model/connection/ops.d.ts
|
|
150
|
+
/**
|
|
151
|
+
* Check if connection is nested inside another connection
|
|
152
|
+
* (i.e. between descendants)
|
|
153
|
+
*/
|
|
154
|
+
declare function isNestedConnection<T extends {
|
|
155
|
+
id: string;
|
|
156
|
+
}>(parent: WithSourceTarget<NoInfer<T>>): (nested: WithSourceTarget<T>) => boolean;
|
|
157
|
+
declare function isNestedConnection<T extends {
|
|
158
|
+
id: string;
|
|
159
|
+
}>(nested: WithSourceTarget<T>, parent: WithSourceTarget<T>): boolean;
|
|
160
|
+
type ConnectionElemId = Connection<{
|
|
161
|
+
readonly id: string;
|
|
162
|
+
}, any>;
|
|
163
|
+
declare function findDeepestNestedConnection<C extends ConnectionElemId>(connections: ReadonlyArray<C>, connection: C): C | null;
|
|
164
|
+
declare function sortDeepestFirst<C extends ConnectionElemId>(connections: ReadonlyArray<C>): C[];
|
|
165
|
+
type WithBoundary = {
|
|
166
|
+
id: string;
|
|
167
|
+
boundary: null | {
|
|
168
|
+
id: string;
|
|
169
|
+
};
|
|
170
|
+
};
|
|
171
|
+
declare function sortConnectionsByBoundaryHierarchy(sort?: 'asc' | 'desc'): <T extends WithBoundary, A extends IterableContainer<T>>(array: A) => ReorderedArray<A>;
|
|
172
|
+
declare function sortConnectionsByBoundaryHierarchy<T extends WithBoundary, A extends IterableContainer<T>>(array: A, sort?: 'asc' | 'desc'): ReorderedArray<A>;
|
|
173
|
+
/**
|
|
174
|
+
* Find connections that includes given connection (i.e between it's ancestors)
|
|
175
|
+
*/
|
|
176
|
+
declare function findAscendingConnections<C extends ConnectionElemId>(connections: ReadonlyArray<C>, connection: C): Array<C>;
|
|
177
|
+
/**
|
|
178
|
+
* Find connections that given connection includes (i.e between it's descendants)
|
|
179
|
+
*/
|
|
180
|
+
declare function findDescendantConnections<C extends ConnectionElemId>(connections: ReadonlyArray<C>, connection: C): Array<C>;
|
|
181
|
+
declare function mergeConnections<C extends IterableContainer<Connection<any, any>>>(connections: C): Array<C[number]>;
|
|
182
|
+
/**
|
|
183
|
+
* Excludes the values existing in `other` array.
|
|
184
|
+
* The output maintains the same order as the input.
|
|
185
|
+
*/
|
|
186
|
+
declare function differenceConnections<C extends Connection<any, any>>(source: Iterable<C>, exclude: Iterable<C>): C[];
|
|
187
|
+
type WithSourceTarget<T = unknown> = {
|
|
188
|
+
source: T;
|
|
189
|
+
target: T;
|
|
190
|
+
};
|
|
191
|
+
declare function hasSameSourceTarget<T>(a: WithSourceTarget<NoInfer<T>>): (b: WithSourceTarget<T>) => boolean;
|
|
192
|
+
declare function hasSameSourceTarget<T>(a: WithSourceTarget<T>, b: WithSourceTarget<T>): boolean;
|
|
193
|
+
declare function hasSameSource<T>(a: WithSourceTarget<NoInfer<T>>): (b: WithSourceTarget<T>) => boolean;
|
|
194
|
+
declare function hasSameSource<T>(a: WithSourceTarget<T>, b: WithSourceTarget<T>): boolean;
|
|
195
|
+
declare function hasSameTarget<T>(a: WithSourceTarget<NoInfer<T>>): (b: WithSourceTarget<T>) => boolean;
|
|
196
|
+
declare function hasSameTarget<T>(a: WithSourceTarget<T>, b: WithSourceTarget<T>): boolean;
|
|
197
|
+
type WithId<T> = {
|
|
198
|
+
id: T;
|
|
199
|
+
};
|
|
200
|
+
declare function isOutgoing<T extends string>(source: WithId<NoInfer<T>>): (a: WithSourceTarget<WithId<T>>) => boolean;
|
|
201
|
+
declare function isOutgoing<T extends string>(a: WithSourceTarget<WithId<T>>, source: WithId<T>): boolean;
|
|
202
|
+
declare function isIncoming<T extends string>(target: WithId<NoInfer<T>>): (a: WithSourceTarget<WithId<T>>) => boolean;
|
|
203
|
+
declare function isIncoming<T extends string>(a: WithSourceTarget<WithId<T>>, target: WithId<T>): boolean;
|
|
204
|
+
declare function isAnyInOut<T extends string>(source: WithId<NoInfer<T>>): (a: WithSourceTarget<WithId<T>>) => boolean;
|
|
205
|
+
declare function isAnyInOut<T extends string>(a: WithSourceTarget<WithId<T>>, source: WithId<T>): boolean;
|
|
206
|
+
declare namespace find_d_exports$1 {
|
|
207
|
+
export { findConnection$1 as findConnection, findConnectionsBetween$1 as findConnectionsBetween, findConnectionsWithin$1 as findConnectionsWithin };
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Resolve connection from source to target
|
|
211
|
+
* If direction is `both`, also look for reverse connection
|
|
212
|
+
*
|
|
213
|
+
* @default direction directed
|
|
214
|
+
*/
|
|
215
|
+
declare function findConnection$1<M extends Any>(source: DeploymentElementModel<M>, target: DeploymentElementModel<NoInfer<M>>, direction: 'directed'): readonly [DeploymentConnectionModel<M>] | readonly [];
|
|
216
|
+
declare function findConnection$1<M extends Any>(source: DeploymentElementModel<M>, target: DeploymentElementModel<NoInfer<M>>, direction: 'both'): readonly [DeploymentConnectionModel<M>, DeploymentConnectionModel<M>] | readonly [DeploymentConnectionModel<M>] | readonly [];
|
|
217
|
+
declare function findConnection$1<M extends Any>(source: DeploymentElementModel<M>, target: DeploymentElementModel<NoInfer<M>>, direction?: 'directed' | 'both'): readonly [DeploymentConnectionModel<M>, DeploymentConnectionModel<M>] | readonly [DeploymentConnectionModel<M>] | readonly [];
|
|
218
|
+
/**
|
|
219
|
+
* Resolve all connections between element and others
|
|
220
|
+
* By default, look for both directions.
|
|
221
|
+
*
|
|
222
|
+
* @default direction both
|
|
223
|
+
*/
|
|
224
|
+
declare function findConnectionsBetween$1<M extends Any>(element: DeploymentElementModel<M>, others: Iterable<DeploymentElementModel<NoInfer<M>>>, direction?: 'directed' | 'both'): readonly DeploymentConnectionModel<M>[];
|
|
225
|
+
/**
|
|
226
|
+
* Resolve all connections within a given set of elements
|
|
227
|
+
*/
|
|
228
|
+
declare function findConnectionsWithin$1<M extends Any>(elements: Iterable<DeploymentElementModel<M>>): readonly DeploymentConnectionModel<M>[];
|
|
229
|
+
declare namespace find_d_exports {
|
|
230
|
+
export { findConnection, findConnectionsBetween, findConnectionsWithin };
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Resolve connection from source to target
|
|
234
|
+
*
|
|
235
|
+
* @param direction - if 'both', also returns connection from target to source
|
|
236
|
+
* @default `directed`
|
|
237
|
+
*/
|
|
238
|
+
declare function findConnection<A extends Any>(source: ElementModel<A>, target: ElementModel<A>, direction?: 'directed' | 'both'): [ConnectionModel<A>, ConnectionModel<A>] | [ConnectionModel<A>] | [];
|
|
239
|
+
/**
|
|
240
|
+
* Resolve all connections between element and others
|
|
241
|
+
* @param direction - if 'directed', only look for outgoing connections from the element to others
|
|
242
|
+
* @default `both`
|
|
243
|
+
*/
|
|
244
|
+
declare function findConnectionsBetween<M extends Any>(element: ElementModel<M>, others: Iterable<ElementModel<M>>, direction?: 'directed' | 'both'): readonly ConnectionModel<M>[];
|
|
245
|
+
/**
|
|
246
|
+
* Resolve all connections within a given set of elements
|
|
247
|
+
*/
|
|
248
|
+
declare function findConnectionsWithin<M extends Any>(elements: Iterable<ElementModel<M>>): readonly ConnectionModel<M>[];
|
|
249
|
+
//#endregion
|
|
250
|
+
//#region src/model/guards.d.ts
|
|
251
|
+
type AnyModel<A extends Any> = DeploymentNodeModel<A> | DeployedInstanceModel<A> | DeploymentRelationModel<A> | AnyRelationshipModel<A> | NestedElementOfDeployedInstanceModel<A> | ElementModel<A> | RelationshipModel<A> | LikeC4ViewModel<A> | NodeModel<A> | EdgeModel<A>;
|
|
252
|
+
declare function isDeploymentNodeModel<M extends Any>(model: AnyModel<M>): model is DeploymentNodeModel<M>;
|
|
253
|
+
declare function isDeployedInstanceModel<M extends Any>(model: AnyModel<M>): model is DeployedInstanceModel<M>;
|
|
254
|
+
declare function isDeploymentElementModel<M extends Any>(model: AnyModel<M>): model is DeploymentElementModel<M>;
|
|
255
|
+
declare function isNestedElementOfDeployedInstanceModel<M extends Any>(model: AnyModel<M>): model is NestedElementOfDeployedInstanceModel<M>;
|
|
256
|
+
declare function isDeploymentRelationModel<M extends Any>(x: AnyModel<M>): x is DeploymentRelationModel<M>;
|
|
257
|
+
declare function isRelationModel<M extends Any>(x: AnyModel<M>): x is RelationshipModel<M>;
|
|
258
|
+
declare function isElementModel<M extends Any>(element: AnyModel<M>): element is ElementModel<M>;
|
|
259
|
+
declare function isLikeC4ViewModel<M extends Any>(view: AnyModel<M>): view is LikeC4ViewModel<M>;
|
|
260
|
+
declare function isNodeModel<M extends Any>(node: AnyModel<M>): node is NodeModel<M>;
|
|
261
|
+
declare function isEdgeModel<M extends Any>(edge: AnyModel<M>): edge is EdgeModel<M>;
|
|
262
|
+
//#endregion
|
|
263
|
+
//#region src/model/utils/view-title-path.d.ts
|
|
264
|
+
declare const VIEW_FOLDERS_SEPARATOR = "/";
|
|
265
|
+
/**
|
|
266
|
+
* Normalizes view path by removing spaces from segments, removing empty segments,
|
|
267
|
+
* and removing leading/trailing slashes
|
|
268
|
+
* @example
|
|
269
|
+
* normalizeViewPath('One / Tw o / Thre e') === 'One/Tw o/Thre e'
|
|
270
|
+
*/
|
|
271
|
+
declare const normalizeViewPath: (title: string) => string;
|
|
272
|
+
/**
|
|
273
|
+
* Returns view group path if it is used as a path
|
|
274
|
+
* Returns empty string if it is not a path
|
|
275
|
+
* @example
|
|
276
|
+
* getViewFolderPath('One / Tw o / Thre e') === 'One/Tw o'
|
|
277
|
+
* getViewFolderPath('One') === ''
|
|
278
|
+
*/
|
|
279
|
+
declare const getViewFolderPath: (title: string) => string | null;
|
|
280
|
+
/**
|
|
281
|
+
* Returns view title if it is used as a path
|
|
282
|
+
* @example
|
|
283
|
+
* getViewTitleFromPath('One / Tw o / Thre e') === 'Thre e'
|
|
284
|
+
* getViewTitleFromPath('One') === 'One'
|
|
285
|
+
*/
|
|
286
|
+
declare const extractViewTitleFromPath: (title: string) => string;
|
|
287
|
+
//#endregion
|
|
288
|
+
export { sortDeepestFirst as A, hasSameTarget as C, isOutgoing as D, isNestedConnection as E, DeploymentConnectionModel as M, Connection as N, mergeConnections as O, hasSameSourceTarget as S, isIncoming as T, differenceConnections as _, isDeployedInstanceModel as a, findDescendantConnections as b, isDeploymentRelationModel as c, isLikeC4ViewModel as d, isNestedElementOfDeployedInstanceModel as f, find_d_exports$1 as g, find_d_exports as h, normalizeViewPath as i, ConnectionModel as j, sortConnectionsByBoundaryHierarchy as k, isEdgeModel as l, isRelationModel as m, extractViewTitleFromPath as n, isDeploymentElementModel as o, isNodeModel as p, getViewFolderPath as r, isDeploymentNodeModel as s, VIEW_FOLDERS_SEPARATOR as t, isElementModel as u, findAscendingConnections as v, isAnyInOut as w, hasSameSource as x, findDeepestNestedConnection as y };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const{min:min$4,max:max$4}=Math;var limit_default=(n,r=0,i=1)=>min$4(max$4(r,n),i),clip_rgb_default=e=>{e._clipped=!1,e._unclipped=e.slice(0);for(let t=0;t<=3;t++)t<3?((e[t]<0||e[t]>255)&&(e._clipped=!0),e[t]=limit_default(e[t],0,255)):t===3&&(e[t]=limit_default(e[t],0,1));return e};const classToType={};for(let e of[`Boolean`,`Number`,`String`,`Function`,`Array`,`Date`,`RegExp`,`Undefined`,`Null`])classToType[`[object ${e}]`]=e.toLowerCase();function type_default(e){return classToType[Object.prototype.toString.call(e)]||`object`}var unpack_default=(e,t=null)=>e.length>=3?Array.prototype.slice.call(e):type_default(e[0])==`object`&&t?t.split(``).filter(t=>e[0][t]!==void 0).map(t=>e[0][t]):e[0].slice(0),last_default=e=>{if(e.length<2)return null;let t=e.length-1;return type_default(e[t])==`string`?e[t].toLowerCase():null};const{PI:PI$2,min:min$3,max:max$3}=Math,rnd2=e=>Math.round(e*100)/100,rnd3=e=>Math.round(e*100)/100,TWOPI=PI$2*2,PITHIRD=PI$2/3,DEG2RAD=PI$2/180,RAD2DEG=180/PI$2;function reverse3(e){return[...e.slice(0,3).reverse(),...e.slice(3)]}var input_default={format:{},autodetect:[]},Color=class{constructor(...e){let t=this;if(type_default(e[0])===`object`&&e[0].constructor&&e[0].constructor===this.constructor)return e[0];let n=last_default(e),i=!1;if(!n){i=!0,input_default.sorted||=(input_default.autodetect=input_default.autodetect.sort((e,t)=>t.p-e.p),!0);for(let t of input_default.autodetect)if(n=t.test(...e),n)break}if(input_default.format[n])t._rgb=clip_rgb_default(input_default.format[n].apply(null,i?e:e.slice(0,-1)));else throw Error(`unknown format: `+e);t._rgb.length===3&&t._rgb.push(1)}toString(){return type_default(this.hex)==`function`?this.hex():`[${this._rgb.join(`,`)}]`}};const chroma=(...e)=>new Color(...e);chroma.version=`3.2.0`;const w3cx11={aliceblue:`#f0f8ff`,antiquewhite:`#faebd7`,aqua:`#00ffff`,aquamarine:`#7fffd4`,azure:`#f0ffff`,beige:`#f5f5dc`,bisque:`#ffe4c4`,black:`#000000`,blanchedalmond:`#ffebcd`,blue:`#0000ff`,blueviolet:`#8a2be2`,brown:`#a52a2a`,burlywood:`#deb887`,cadetblue:`#5f9ea0`,chartreuse:`#7fff00`,chocolate:`#d2691e`,coral:`#ff7f50`,cornflowerblue:`#6495ed`,cornsilk:`#fff8dc`,crimson:`#dc143c`,cyan:`#00ffff`,darkblue:`#00008b`,darkcyan:`#008b8b`,darkgoldenrod:`#b8860b`,darkgray:`#a9a9a9`,darkgreen:`#006400`,darkgrey:`#a9a9a9`,darkkhaki:`#bdb76b`,darkmagenta:`#8b008b`,darkolivegreen:`#556b2f`,darkorange:`#ff8c00`,darkorchid:`#9932cc`,darkred:`#8b0000`,darksalmon:`#e9967a`,darkseagreen:`#8fbc8f`,darkslateblue:`#483d8b`,darkslategray:`#2f4f4f`,darkslategrey:`#2f4f4f`,darkturquoise:`#00ced1`,darkviolet:`#9400d3`,deeppink:`#ff1493`,deepskyblue:`#00bfff`,dimgray:`#696969`,dimgrey:`#696969`,dodgerblue:`#1e90ff`,firebrick:`#b22222`,floralwhite:`#fffaf0`,forestgreen:`#228b22`,fuchsia:`#ff00ff`,gainsboro:`#dcdcdc`,ghostwhite:`#f8f8ff`,gold:`#ffd700`,goldenrod:`#daa520`,gray:`#808080`,green:`#008000`,greenyellow:`#adff2f`,grey:`#808080`,honeydew:`#f0fff0`,hotpink:`#ff69b4`,indianred:`#cd5c5c`,indigo:`#4b0082`,ivory:`#fffff0`,khaki:`#f0e68c`,laserlemon:`#ffff54`,lavender:`#e6e6fa`,lavenderblush:`#fff0f5`,lawngreen:`#7cfc00`,lemonchiffon:`#fffacd`,lightblue:`#add8e6`,lightcoral:`#f08080`,lightcyan:`#e0ffff`,lightgoldenrod:`#fafad2`,lightgoldenrodyellow:`#fafad2`,lightgray:`#d3d3d3`,lightgreen:`#90ee90`,lightgrey:`#d3d3d3`,lightpink:`#ffb6c1`,lightsalmon:`#ffa07a`,lightseagreen:`#20b2aa`,lightskyblue:`#87cefa`,lightslategray:`#778899`,lightslategrey:`#778899`,lightsteelblue:`#b0c4de`,lightyellow:`#ffffe0`,lime:`#00ff00`,limegreen:`#32cd32`,linen:`#faf0e6`,magenta:`#ff00ff`,maroon:`#800000`,maroon2:`#7f0000`,maroon3:`#b03060`,mediumaquamarine:`#66cdaa`,mediumblue:`#0000cd`,mediumorchid:`#ba55d3`,mediumpurple:`#9370db`,mediumseagreen:`#3cb371`,mediumslateblue:`#7b68ee`,mediumspringgreen:`#00fa9a`,mediumturquoise:`#48d1cc`,mediumvioletred:`#c71585`,midnightblue:`#191970`,mintcream:`#f5fffa`,mistyrose:`#ffe4e1`,moccasin:`#ffe4b5`,navajowhite:`#ffdead`,navy:`#000080`,oldlace:`#fdf5e6`,olive:`#808000`,olivedrab:`#6b8e23`,orange:`#ffa500`,orangered:`#ff4500`,orchid:`#da70d6`,palegoldenrod:`#eee8aa`,palegreen:`#98fb98`,paleturquoise:`#afeeee`,palevioletred:`#db7093`,papayawhip:`#ffefd5`,peachpuff:`#ffdab9`,peru:`#cd853f`,pink:`#ffc0cb`,plum:`#dda0dd`,powderblue:`#b0e0e6`,purple:`#800080`,purple2:`#7f007f`,purple3:`#a020f0`,rebeccapurple:`#663399`,red:`#ff0000`,rosybrown:`#bc8f8f`,royalblue:`#4169e1`,saddlebrown:`#8b4513`,salmon:`#fa8072`,sandybrown:`#f4a460`,seagreen:`#2e8b57`,seashell:`#fff5ee`,sienna:`#a0522d`,silver:`#c0c0c0`,skyblue:`#87ceeb`,slateblue:`#6a5acd`,slategray:`#708090`,slategrey:`#708090`,snow:`#fffafa`,springgreen:`#00ff7f`,steelblue:`#4682b4`,tan:`#d2b48c`,teal:`#008080`,thistle:`#d8bfd8`,tomato:`#ff6347`,turquoise:`#40e0d0`,violet:`#ee82ee`,wheat:`#f5deb3`,white:`#ffffff`,whitesmoke:`#f5f5f5`,yellow:`#ffff00`,yellowgreen:`#9acd32`},RE_HEX=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,RE_HEXA=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,hex2rgb=e=>{if(e.match(RE_HEX)){(e.length===4||e.length===7)&&(e=e.substr(1)),e.length===3&&(e=e.split(``),e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]);let t=parseInt(e,16);return[t>>16,t>>8&255,t&255,1]}if(e.match(RE_HEXA)){(e.length===5||e.length===9)&&(e=e.substr(1)),e.length===4&&(e=e.split(``),e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]+e[3]+e[3]);let t=parseInt(e,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((t&255)/255*100)/100]}throw Error(`unknown hex color: ${e}`)},{round:round$5}=Math,rgb2hex=(...e)=>{let[t,n,r,i]=unpack_default(e,`rgba`),a=last_default(e)||`auto`;i===void 0&&(i=1),a===`auto`&&(a=i<1?`rgba`:`rgb`),t=round$5(t),n=round$5(n),r=round$5(r);let c=`000000`+(t<<16|n<<8|r).toString(16);c=c.substr(c.length-6);let l=`0`+round$5(i*255).toString(16);switch(l=l.substr(l.length-2),a.toLowerCase()){case`rgba`:return`#${c}${l}`;case`argb`:return`#${l}${c}`;default:return`#${c}`}};Color.prototype.name=function(){let e=rgb2hex(this._rgb,`rgb`);for(let t of Object.keys(w3cx11))if(w3cx11[t]===e)return t.toLowerCase();return e},input_default.format.named=e=>{if(e=e.toLowerCase(),w3cx11[e])return hex2rgb(w3cx11[e]);throw Error(`unknown color name: `+e)},input_default.autodetect.push({p:5,test:(e,...t)=>{if(!t.length&&type_default(e)===`string`&&w3cx11[e.toLowerCase()])return`named`}}),Color.prototype.alpha=function(e,t=!1){return e!==void 0&&type_default(e)===`number`?t?(this._rgb[3]=e,this):new Color([this._rgb[0],this._rgb[1],this._rgb[2],e],`rgb`):this._rgb[3]},Color.prototype.clipped=function(){return this._rgb._clipped||!1};const labConstants={Kn:18,labWhitePoint:`d65`,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452,kE:216/24389,kKE:8,kK:24389/27,RefWhiteRGB:{X:.95047,Y:1,Z:1.08883},MtxRGB2XYZ:{m00:.4124564390896922,m01:.21267285140562253,m02:.0193338955823293,m10:.357576077643909,m11:.715152155287818,m12:.11919202588130297,m20:.18043748326639894,m21:.07217499330655958,m22:.9503040785363679},MtxXYZ2RGB:{m00:3.2404541621141045,m01:-.9692660305051868,m02:.055643430959114726,m10:-1.5371385127977166,m11:1.8760108454466942,m12:-.2040259135167538,m20:-.498531409556016,m21:.041556017530349834,m22:1.0572251882231791},As:.9414285350000001,Bs:1.040417467,Cs:1.089532651,MtxAdaptMa:{m00:.8951,m01:-.7502,m02:.0389,m10:.2664,m11:1.7135,m12:-.0685,m20:-.1614,m21:.0367,m22:1.0296},MtxAdaptMaI:{m00:.9869929054667123,m01:.43230526972339456,m02:-.008528664575177328,m10:-.14705425642099013,m11:.5183602715367776,m12:.04004282165408487,m20:.15996265166373125,m21:.0492912282128556,m22:.9684866957875502}},ILLUMINANTS=new Map([[`a`,[1.0985,.35585]],[`b`,[1.0985,.35585]],[`c`,[.98074,1.18232]],[`d50`,[.96422,.82521]],[`d55`,[.95682,.92149]],[`d65`,[.95047,1.08883]],[`e`,[1,1,1]],[`f2`,[.99186,.67393]],[`f7`,[.95041,1.08747]],[`f11`,[1.00962,.6435]],[`icc`,[.96422,.82521]]]);function setLabWhitePoint(e){let t=ILLUMINANTS.get(String(e).toLowerCase());if(!t)throw Error(`unknown Lab illuminant `+e);labConstants.labWhitePoint=e,labConstants.Xn=t[0],labConstants.Zn=t[1]}function getLabWhitePoint(){return labConstants.labWhitePoint}const lab2rgb=(...e)=>{e=unpack_default(e,`lab`);let[t,n,r]=e,[i,a,s]=lab2xyz(t,n,r),[c,l,u]=xyz2rgb(i,a,s);return[c,l,u,e.length>3?e[3]:1]},lab2xyz=(e,t,n)=>{let{kE:r,kK:i,kKE:a,Xn:o,Yn:s,Zn:c}=labConstants,l=(e+16)/116,u=.002*t+l,d=l-.005*n,f=u*u*u,p=d*d*d,m=f>r?f:(116*u-16)/i,h=e>a?((e+16)/116)**3:e/i,g=p>r?p:(116*d-16)/i;return[m*o,h*s,g*c]},compand=e=>{let t=Math.sign(e);return e=Math.abs(e),(e<=.0031308?e*12.92:1.055*e**(1/2.4)-.055)*t},xyz2rgb=(e,t,n)=>{let{MtxAdaptMa:r,MtxAdaptMaI:i,MtxXYZ2RGB:a,RefWhiteRGB:o,Xn:s,Yn:c,Zn:l}=labConstants,u=s*r.m00+c*r.m10+l*r.m20,d=s*r.m01+c*r.m11+l*r.m21,f=s*r.m02+c*r.m12+l*r.m22,p=o.X*r.m00+o.Y*r.m10+o.Z*r.m20,m=o.X*r.m01+o.Y*r.m11+o.Z*r.m21,h=o.X*r.m02+o.Y*r.m12+o.Z*r.m22,g=(e*r.m00+t*r.m10+n*r.m20)*(p/u),_=(e*r.m01+t*r.m11+n*r.m21)*(m/d),v=(e*r.m02+t*r.m12+n*r.m22)*(h/f),y=g*i.m00+_*i.m10+v*i.m20,b=g*i.m01+_*i.m11+v*i.m21,x=g*i.m02+_*i.m12+v*i.m22,S=compand(y*a.m00+b*a.m10+x*a.m20),C=compand(y*a.m01+b*a.m11+x*a.m21),w=compand(y*a.m02+b*a.m12+x*a.m22);return[S*255,C*255,w*255]},rgb2lab=(...e)=>{let[t,n,r,...i]=unpack_default(e,`rgb`),[a,s,c]=rgb2xyz(t,n,r),[l,u,d]=xyz2lab(a,s,c);return[l,u,d,...i.length>0&&i[0]<1?[i[0]]:[]]};function xyz2lab(e,t,n){let{Xn:r,Yn:i,Zn:a,kE:o,kK:s}=labConstants,c=e/r,l=t/i,u=n/a,d=c>o?c**(1/3):(s*c+16)/116,f=l>o?l**(1/3):(s*l+16)/116,p=u>o?u**(1/3):(s*u+16)/116;return[116*f-16,500*(d-f),200*(f-p)]}function gammaAdjustSRGB(e){let t=Math.sign(e);return e=Math.abs(e),(e<=.04045?e/12.92:((e+.055)/1.055)**2.4)*t}const rgb2xyz=(e,t,n)=>{e=gammaAdjustSRGB(e/255),t=gammaAdjustSRGB(t/255),n=gammaAdjustSRGB(n/255);let{MtxRGB2XYZ:r,MtxAdaptMa:i,MtxAdaptMaI:a,Xn:o,Yn:s,Zn:c,As:l,Bs:u,Cs:d}=labConstants,f=e*r.m00+t*r.m10+n*r.m20,p=e*r.m01+t*r.m11+n*r.m21,m=e*r.m02+t*r.m12+n*r.m22,h=o*i.m00+s*i.m10+c*i.m20,g=o*i.m01+s*i.m11+c*i.m21,_=o*i.m02+s*i.m12+c*i.m22,v=f*i.m00+p*i.m10+m*i.m20,y=f*i.m01+p*i.m11+m*i.m21,b=f*i.m02+p*i.m12+m*i.m22;return v*=h/l,y*=g/u,b*=_/d,f=v*a.m00+y*a.m10+b*a.m20,p=v*a.m01+y*a.m11+b*a.m21,m=v*a.m02+y*a.m12+b*a.m22,[f,p,m]};Color.prototype.lab=function(){return rgb2lab(this._rgb)};const lab$1=(...e)=>new Color(...e,`lab`);Object.assign(chroma,{lab:lab$1,getLabWhitePoint,setLabWhitePoint}),input_default.format.lab=lab2rgb,input_default.autodetect.push({p:2,test:(...e)=>{if(e=unpack_default(e,`lab`),type_default(e)===`array`&&e.length===3)return`lab`}}),Color.prototype.darken=function(e=1){let t=this,n=t.lab();return n[0]-=labConstants.Kn*e,new Color(n,`lab`).alpha(t.alpha(),!0)},Color.prototype.brighten=function(e=1){return this.darken(-e)},Color.prototype.darker=Color.prototype.darken,Color.prototype.brighter=Color.prototype.brighten,Color.prototype.get=function(e){let[t,n]=e.split(`.`),r=this[t]();if(n){let e=t.indexOf(n)-(t.substr(0,2)===`ok`?2:0);if(e>-1)return r[e];throw Error(`unknown channel ${n} in mode ${t}`)}else return r};const{pow:pow$6}=Math;Color.prototype.luminance=function(e,t=`rgb`){if(e!==void 0&&type_default(e)===`number`){if(e===0)return new Color([0,0,0,this._rgb[3]],`rgb`);if(e===1)return new Color([255,255,255,this._rgb[3]],`rgb`);let n=this.luminance(),r=20,i=(n,a)=>{let o=n.interpolate(a,.5,t),s=o.luminance();return Math.abs(e-s)<1e-7||!r--?o:s>e?i(n,o):i(o,a)};return new Color([...(n>e?i(new Color([0,0,0]),this):i(this,new Color([255,255,255]))).rgb(),this._rgb[3]])}return rgb2luminance(...this._rgb.slice(0,3))};const rgb2luminance=(e,t,n)=>(e=luminance_x(e),t=luminance_x(t),n=luminance_x(n),.2126*e+.7152*t+.0722*n),luminance_x=e=>(e/=255,e<=.03928?e/12.92:pow$6((e+.055)/1.055,2.4));var interpolator_default={},mix_default=(e,t,n=.5,...r)=>{let i=r[0]||`lrgb`;if(!interpolator_default[i]&&!r.length&&(i=Object.keys(interpolator_default)[0]),!interpolator_default[i])throw Error(`interpolation mode ${i} is not defined`);return type_default(e)!==`object`&&(e=new Color(e)),type_default(t)!==`object`&&(t=new Color(t)),interpolator_default[i](e,t,n).alpha(e.alpha()+n*(t.alpha()-e.alpha()))};Color.prototype.mix=Color.prototype.interpolate=function(e,t=.5,...n){return mix_default(this,e,t,...n)},Color.prototype.premultiply=function(e=!1){let t=this._rgb,n=t[3];return e?(this._rgb=[t[0]*n,t[1]*n,t[2]*n,n],this):new Color([t[0]*n,t[1]*n,t[2]*n,n],`rgb`)};const{sin:sin$3,cos:cos$4}=Math,lch2lab=(...e)=>{let[t,n,r]=unpack_default(e,`lch`);return isNaN(r)&&(r=0),r*=DEG2RAD,[t,cos$4(r)*n,sin$3(r)*n]},lch2rgb=(...e)=>{e=unpack_default(e,`lch`);let[t,n,r]=e,[i,a,s]=lch2lab(t,n,r),[c,l,u]=lab2rgb(i,a,s);return[c,l,u,e.length>3?e[3]:1]},hcl2rgb=(...e)=>lch2rgb(...reverse3(unpack_default(e,`hcl`))),{sqrt:sqrt$4,atan2:atan2$2,round:round$4}=Math,lab2lch=(...e)=>{let[t,n,r]=unpack_default(e,`lab`),i=sqrt$4(n*n+r*r),a=(atan2$2(r,n)*RAD2DEG+360)%360;return round$4(i*1e4)===0&&(a=NaN),[t,i,a]},rgb2lch=(...e)=>{let[t,n,r,...i]=unpack_default(e,`rgb`),[a,s,c]=rgb2lab(t,n,r),[l,u,d]=lab2lch(a,s,c);return[l,u,d,...i.length>0&&i[0]<1?[i[0]]:[]]};Color.prototype.lch=function(){return rgb2lch(this._rgb)},Color.prototype.hcl=function(){return reverse3(rgb2lch(this._rgb))};const lch$1=(...e)=>new Color(...e,`lch`),hcl=(...e)=>new Color(...e,`hcl`);Object.assign(chroma,{lch:lch$1,hcl}),input_default.format.lch=lch2rgb,input_default.format.hcl=hcl2rgb,[`lch`,`hcl`].forEach(e=>input_default.autodetect.push({p:2,test:(...t)=>{if(t=unpack_default(t,e),type_default(t)===`array`&&t.length===3)return e}})),Color.prototype.saturate=function(e=1){let t=this,n=t.lch();return n[1]+=labConstants.Kn*e,n[1]<0&&(n[1]=0),new Color(n,`lch`).alpha(t.alpha(),!0)},Color.prototype.desaturate=function(e=1){return this.saturate(-e)},Color.prototype.set=function(e,t,n=!1){let[r,i]=e.split(`.`),o=this[r]();if(i){let e=r.indexOf(i)-(r.substr(0,2)===`ok`?2:0);if(e>-1){if(type_default(t)==`string`)switch(t.charAt(0)){case`+`:o[e]+=+t;break;case`-`:o[e]+=+t;break;case`*`:o[e]*=+t.substr(1);break;case`/`:o[e]/=+t.substr(1);break;default:o[e]=+t}else if(type_default(t)===`number`)o[e]=t;else throw Error(`unsupported value for Color.set`);let i=new Color(o,r);return n?(this._rgb=i._rgb,this):i}throw Error(`unknown channel ${i} in mode ${r}`)}else return o},Color.prototype.tint=function(e=.5,...t){return mix_default(this,`white`,e,...t)},Color.prototype.shade=function(e=.5,...t){return mix_default(this,`black`,e,...t)};const rgb$1=(e,t,n)=>{let r=e._rgb,i=t._rgb;return new Color(r[0]+n*(i[0]-r[0]),r[1]+n*(i[1]-r[1]),r[2]+n*(i[2]-r[2]),`rgb`)};interpolator_default.rgb=rgb$1;const{sqrt:sqrt$3,pow:pow$5}=Math,lrgb=(e,t,n)=>{let[r,i,a]=e._rgb,[o,s,c]=t._rgb;return new Color(sqrt$3(pow$5(r,2)*(1-n)+pow$5(o,2)*n),sqrt$3(pow$5(i,2)*(1-n)+pow$5(s,2)*n),sqrt$3(pow$5(a,2)*(1-n)+pow$5(c,2)*n),`rgb`)};interpolator_default.lrgb=lrgb;const lab=(e,t,n)=>{let r=e.lab(),i=t.lab();return new Color(r[0]+n*(i[0]-r[0]),r[1]+n*(i[1]-r[1]),r[2]+n*(i[2]-r[2]),`lab`)};interpolator_default.lab=lab;var _hsx_default=(e,t,n,r)=>{let i,a;r===`hsl`?(i=e.hsl(),a=t.hsl()):r===`hsv`?(i=e.hsv(),a=t.hsv()):r===`hcg`?(i=e.hcg(),a=t.hcg()):r===`hsi`?(i=e.hsi(),a=t.hsi()):r===`lch`||r===`hcl`?(r=`hcl`,i=e.hcl(),a=t.hcl()):r===`oklch`&&(i=e.oklch().reverse(),a=t.oklch().reverse());let o,s,c,l,u,d;(r.substr(0,1)===`h`||r===`oklch`)&&([o,c,u]=i,[s,l,d]=a);let f,p,m,h;return!isNaN(o)&&!isNaN(s)?(h=s>o&&s-o>180?s-(o+360):s<o&&o-s>180?s+360-o:s-o,p=o+n*h):isNaN(o)?isNaN(s)?p=NaN:(p=s,(u==1||u==0)&&r!=`hsv`&&(f=l)):(p=o,(d==1||d==0)&&r!=`hsv`&&(f=c)),f===void 0&&(f=c+n*(l-c)),m=u+n*(d-u),r===`oklch`?new Color([m,f,p],r):new Color([p,f,m],r)};const lch=(e,t,n)=>_hsx_default(e,t,n,`lch`);interpolator_default.lch=lch,interpolator_default.hcl=lch;const num2rgb=e=>{if(type_default(e)==`number`&&e>=0&&e<=16777215)return[e>>16,e>>8&255,e&255,1];throw Error(`unknown num color: `+e)},rgb2num=(...e)=>{let[t,n,r]=unpack_default(e,`rgb`);return(t<<16)+(n<<8)+r};Color.prototype.num=function(){return rgb2num(this._rgb)};const num$1=(...e)=>new Color(...e,`num`);Object.assign(chroma,{num:num$1}),input_default.format.num=num2rgb,input_default.autodetect.push({p:5,test:(...e)=>{if(e.length===1&&type_default(e[0])===`number`&&e[0]>=0&&e[0]<=16777215)return`num`}});const num=(e,t,n)=>{let r=e.num();return new Color(r+n*(t.num()-r),`num`)};interpolator_default.num=num;const{floor:floor$3}=Math,hcg2rgb=(...e)=>{e=unpack_default(e,`hcg`);let[t,n,r]=e,i,a,s;r*=255;let c=n*255;if(n===0)i=a=s=r;else{t===360&&(t=0),t>360&&(t-=360),t<0&&(t+=360),t/=60;let e=floor$3(t),o=t-e,l=r*(1-n),u=l+c*(1-o),d=l+c*o,f=l+c;switch(e){case 0:[i,a,s]=[f,d,l];break;case 1:[i,a,s]=[u,f,l];break;case 2:[i,a,s]=[l,f,d];break;case 3:[i,a,s]=[l,u,f];break;case 4:[i,a,s]=[d,l,f];break;case 5:[i,a,s]=[f,l,u];break}}return[i,a,s,e.length>3?e[3]:1]},rgb2hcg=(...e)=>{let[t,n,r]=unpack_default(e,`rgb`),i=min$3(t,n,r),a=max$3(t,n,r),s=a-i,c=s*100/255,d=i/(255-s)*100,f;return s===0?f=NaN:(t===a&&(f=(n-r)/s),n===a&&(f=2+(r-t)/s),r===a&&(f=4+(t-n)/s),f*=60,f<0&&(f+=360)),[f,c,d]};Color.prototype.hcg=function(){return rgb2hcg(this._rgb)};const hcg$1=(...e)=>new Color(...e,`hcg`);chroma.hcg=hcg$1,input_default.format.hcg=hcg2rgb,input_default.autodetect.push({p:1,test:(...e)=>{if(e=unpack_default(e,`hcg`),type_default(e)===`array`&&e.length===3)return`hcg`}});const hcg=(e,t,n)=>_hsx_default(e,t,n,`hcg`);interpolator_default.hcg=hcg;const{cos:cos$3}=Math,hsi2rgb=(...e)=>{e=unpack_default(e,`hsi`);let[t,r,i]=e,a,s,c;return isNaN(t)&&(t=0),isNaN(r)&&(r=0),t>360&&(t-=360),t<0&&(t+=360),t/=360,t<1/3?(c=(1-r)/3,a=(1+r*cos$3(TWOPI*t)/cos$3(PITHIRD-TWOPI*t))/3,s=1-(c+a)):t<2/3?(t-=1/3,a=(1-r)/3,s=(1+r*cos$3(TWOPI*t)/cos$3(PITHIRD-TWOPI*t))/3,c=1-(a+s)):(t-=2/3,s=(1-r)/3,c=(1+r*cos$3(TWOPI*t)/cos$3(PITHIRD-TWOPI*t))/3,a=1-(s+c)),a=limit_default(i*a*3),s=limit_default(i*s*3),c=limit_default(i*c*3),[a*255,s*255,c*255,e.length>3?e[3]:1]},{min:min$2,sqrt:sqrt$2,acos}=Math,rgb2hsi=(...e)=>{let[t,n,r]=unpack_default(e,`rgb`);t/=255,n/=255,r/=255;let i,a=min$2(t,n,r),s=(t+n+r)/3,c=s>0?1-a/s:0;return c===0?i=NaN:(i=(t-n+(t-r))/2,i/=sqrt$2((t-n)*(t-n)+(t-r)*(n-r)),i=acos(i),r>n&&(i=TWOPI-i),i/=TWOPI),[i*360,c,s]};Color.prototype.hsi=function(){return rgb2hsi(this._rgb)};const hsi$1=(...e)=>new Color(...e,`hsi`);chroma.hsi=hsi$1,input_default.format.hsi=hsi2rgb,input_default.autodetect.push({p:2,test:(...e)=>{if(e=unpack_default(e,`hsi`),type_default(e)===`array`&&e.length===3)return`hsi`}});const hsi=(e,t,n)=>_hsx_default(e,t,n,`hsi`);interpolator_default.hsi=hsi;const hsl2rgb=(...e)=>{e=unpack_default(e,`hsl`);let[t,n,r]=e,i,a,s;if(n===0)i=a=s=r*255;else{let e=[0,0,0],o=[0,0,0],c=r<.5?r*(1+n):r+n-r*n,l=2*r-c,u=t/360;e[0]=u+1/3,e[1]=u,e[2]=u-1/3;for(let t=0;t<3;t++)e[t]<0&&(e[t]+=1),e[t]>1&&--e[t],6*e[t]<1?o[t]=l+(c-l)*6*e[t]:2*e[t]<1?o[t]=c:3*e[t]<2?o[t]=l+(c-l)*(2/3-e[t])*6:o[t]=l;[i,a,s]=[o[0]*255,o[1]*255,o[2]*255]}return e.length>3?[i,a,s,e[3]]:[i,a,s,1]},rgb2hsl$1=(...e)=>{e=unpack_default(e,`rgba`);let[t,n,r]=e;t/=255,n/=255,r/=255;let i=min$3(t,n,r),a=max$3(t,n,r),s=(a+i)/2,c,d;return a===i?(c=0,d=NaN):c=s<.5?(a-i)/(a+i):(a-i)/(2-a-i),t==a?d=(n-r)/(a-i):n==a?d=2+(r-t)/(a-i):r==a&&(d=4+(t-n)/(a-i)),d*=60,d<0&&(d+=360),e.length>3&&e[3]!==void 0?[d,c,s,e[3]]:[d,c,s]};Color.prototype.hsl=function(){return rgb2hsl$1(this._rgb)};const hsl$1=(...e)=>new Color(...e,`hsl`);chroma.hsl=hsl$1,input_default.format.hsl=hsl2rgb,input_default.autodetect.push({p:2,test:(...e)=>{if(e=unpack_default(e,`hsl`),type_default(e)===`array`&&e.length===3)return`hsl`}});const hsl=(e,t,n)=>_hsx_default(e,t,n,`hsl`);interpolator_default.hsl=hsl;const{floor:floor$2}=Math,hsv2rgb=(...e)=>{e=unpack_default(e,`hsv`);let[t,n,r]=e,i,a,s;if(r*=255,n===0)i=a=s=r;else{t===360&&(t=0),t>360&&(t-=360),t<0&&(t+=360),t/=60;let e=floor$2(t),o=t-e,c=r*(1-n),l=r*(1-n*o),u=r*(1-n*(1-o));switch(e){case 0:[i,a,s]=[r,u,c];break;case 1:[i,a,s]=[l,r,c];break;case 2:[i,a,s]=[c,r,u];break;case 3:[i,a,s]=[c,l,r];break;case 4:[i,a,s]=[u,c,r];break;case 5:[i,a,s]=[r,c,l];break}}return[i,a,s,e.length>3?e[3]:1]},{min:min$1,max:max$2}=Math,rgb2hsl=(...e)=>{e=unpack_default(e,`rgb`);let[t,n,r]=e,i=min$1(t,n,r),a=max$2(t,n,r),s=a-i,c,l,u;return u=a/255,a===0?(c=NaN,l=0):(l=s/a,t===a&&(c=(n-r)/s),n===a&&(c=2+(r-t)/s),r===a&&(c=4+(t-n)/s),c*=60,c<0&&(c+=360)),[c,l,u]};Color.prototype.hsv=function(){return rgb2hsl(this._rgb)};const hsv$1=(...e)=>new Color(...e,`hsv`);chroma.hsv=hsv$1,input_default.format.hsv=hsv2rgb,input_default.autodetect.push({p:2,test:(...e)=>{if(e=unpack_default(e,`hsv`),type_default(e)===`array`&&e.length===3)return`hsv`}});const hsv=(e,t,n)=>_hsx_default(e,t,n,`hsv`);interpolator_default.hsv=hsv;function multiplyMatrices(e,t){let n=e.length;Array.isArray(e[0])||(e=[e]),Array.isArray(t[0])||(t=t.map(e=>[e]));let r=t[0].length,i=t[0].map((e,n)=>t.map(e=>e[n])),a=e.map(e=>i.map(t=>Array.isArray(e)?e.reduce((e,n,r)=>e+n*(t[r]||0),0):t.reduce((t,n)=>t+n*e,0)));return n===1&&(a=a[0]),r===1?a.map(e=>e[0]):a}const oklab2rgb=(...e)=>{e=unpack_default(e,`lab`);let[t,n,r,...i]=e,[a,s,c]=OKLab_to_XYZ([t,n,r]),[l,u,d]=xyz2rgb(a,s,c);return[l,u,d,...i.length>0&&i[0]<1?[i[0]]:[]]};function OKLab_to_XYZ(e){return multiplyMatrices([[1.2268798758459243,-.5578149944602171,.2813910456659647],[-.0405757452148008,1.112286803280317,-.0717110580655164],[-.0763729366746601,-.4214933324022432,1.5869240198367816]],multiplyMatrices([[1,.3963377773761749,.2158037573099136],[1,-.1055613458156586,-.0638541728258133],[1,-.0894841775298119,-1.2914855480194092]],e).map(e=>e**3))}const rgb2oklab=(...e)=>{let[t,n,r,...i]=unpack_default(e,`rgb`);return[...XYZ_to_OKLab(rgb2xyz(t,n,r)),...i.length>0&&i[0]<1?[i[0]]:[]]};function XYZ_to_OKLab(e){return multiplyMatrices([[.210454268309314,.7936177747023054,-.0040720430116193],[1.9779985324311684,-2.42859224204858,.450593709617411],[.0259040424655478,.7827717124575296,-.8086757549230774]],multiplyMatrices([[.819022437996703,.3619062600528904,-.1288737815209879],[.0329836539323885,.9292868615863434,.0361446663506424],[.0481771893596242,.2642395317527308,.6335478284694309]],e).map(e=>Math.cbrt(e)))}Color.prototype.oklab=function(){return rgb2oklab(this._rgb)};const oklab$1=(...e)=>new Color(...e,`oklab`);Object.assign(chroma,{oklab:oklab$1}),input_default.format.oklab=oklab2rgb,input_default.autodetect.push({p:2,test:(...e)=>{if(e=unpack_default(e,`oklab`),type_default(e)===`array`&&e.length===3)return`oklab`}});const oklab=(e,t,n)=>{let r=e.oklab(),i=t.oklab();return new Color(r[0]+n*(i[0]-r[0]),r[1]+n*(i[1]-r[1]),r[2]+n*(i[2]-r[2]),`oklab`)};interpolator_default.oklab=oklab;const oklch$1=(e,t,n)=>_hsx_default(e,t,n,`oklch`);interpolator_default.oklch=oklch$1;const{pow:pow$4,sqrt:sqrt$1,PI:PI$1,cos:cos$2,sin:sin$2,atan2:atan2$1}=Math;var average_default=(e,t=`lrgb`,n=null)=>{let r=e.length;n||=Array.from(Array(r)).map(()=>1);let i=r/n.reduce(function(e,t){return e+t});if(n.forEach((e,t)=>{n[t]*=i}),e=e.map(e=>new Color(e)),t===`lrgb`)return _average_lrgb(e,n);let a=e.shift(),o=a.get(t),s=[],c=0,l=0;for(let e=0;e<o.length;e++)if(o[e]=(o[e]||0)*n[0],s.push(isNaN(o[e])?0:n[0]),t.charAt(e)===`h`&&!isNaN(o[e])){let t=o[e]/180*PI$1;c+=cos$2(t)*n[0],l+=sin$2(t)*n[0]}let u=a.alpha()*n[0];e.forEach((e,r)=>{let i=e.get(t);u+=e.alpha()*n[r+1];for(let e=0;e<o.length;e++)if(!isNaN(i[e]))if(s[e]+=n[r+1],t.charAt(e)===`h`){let t=i[e]/180*PI$1;c+=cos$2(t)*n[r+1],l+=sin$2(t)*n[r+1]}else o[e]+=i[e]*n[r+1]});for(let e=0;e<o.length;e++)if(t.charAt(e)===`h`){let t=atan2$1(l/s[e],c/s[e])/PI$1*180;for(;t<0;)t+=360;for(;t>=360;)t-=360;o[e]=t}else o[e]=o[e]/s[e];return u/=r,new Color(o,t).alpha(u>.99999?1:u,!0)};const _average_lrgb=(e,t)=>{let n=e.length,i=[0,0,0,0];for(let r=0;r<e.length;r++){let a=e[r],o=t[r]/n,s=a._rgb;i[0]+=pow$4(s[0],2)*o,i[1]+=pow$4(s[1],2)*o,i[2]+=pow$4(s[2],2)*o,i[3]+=s[3]*o}return i[0]=sqrt$1(i[0]),i[1]=sqrt$1(i[1]),i[2]=sqrt$1(i[2]),i[3]>.9999999&&(i[3]=1),new Color(clip_rgb_default(i))},{pow:pow$3}=Math;function scale_default(e){let t=`rgb`,r=chroma(`#ccc`),i=0,o=[0,1],s=[0,1],c=[],l=[0,0],u=!1,d=[],f=!1,p=0,m=1,h=!1,g={},_=!0,v=1,y=function(e){if(e||=[`#fff`,`#000`],e&&type_default(e)===`string`&&chroma.brewer&&chroma.brewer[e.toLowerCase()]&&(e=chroma.brewer[e.toLowerCase()]),type_default(e)===`array`){e.length===1&&(e=[e[0],e[0]]),e=e.slice(0);for(let t=0;t<e.length;t++)e[t]=chroma(e[t]);c.length=0;for(let t=0;t<e.length;t++)c.push(t/(e.length-1))}return T(),d=e},x=function(e){if(u!=null){let t=u.length-1,n=0;for(;n<t&&e>=u[n];)n++;return n-1}return 0},S=e=>e,C=e=>e,w=function(e,i){let o,s;if(i??=!1,isNaN(e)||e===null)return r;s=i?e:u&&u.length>2?x(e)/(u.length-2):m===p?1:(e-p)/(m-p),s=C(s),i||(s=S(s)),v!==1&&(s=pow$3(s,v)),s=l[0]+s*(1-l[0]-l[1]),s=limit_default(s,0,1);let f=Math.floor(s*1e4);if(_&&g[f])o=g[f];else{if(type_default(d)===`array`)for(let e=0;e<c.length;e++){let n=c[e];if(s<=n){o=d[e];break}if(s>=n&&e===c.length-1){o=d[e];break}if(s>n&&s<c[e+1]){s=(s-n)/(c[e+1]-n),o=chroma.interpolate(d[e],d[e+1],s,t);break}}else type_default(d)===`function`&&(o=d(s));_&&(g[f]=o)}return o};var T=()=>g={};y(e);let E=function(e){let t=chroma(w(e));return f&&t[f]?t[f]():t};return E.classes=function(e){if(e!=null){if(type_default(e)===`array`)u=e,o=[e[0],e[e.length-1]];else{let t=chroma.analyze(o);u=e===0?[t.min,t.max]:chroma.limits(t,`e`,e)}return E}return u},E.domain=function(e){if(!arguments.length)return s;s=e.slice(0),p=e[0],m=e[e.length-1],c=[];let t=d.length;if(e.length===t&&p!==m)for(let t of Array.from(e))c.push((t-p)/(m-p));else{for(let e=0;e<t;e++)c.push(e/(t-1));if(e.length>2){let t=e.map((t,n)=>n/(e.length-1)),n=e.map(e=>(e-p)/(m-p));n.every((e,n)=>t[n]===e)||(C=e=>{if(e<=0||e>=1)return e;let r=0;for(;e>=n[r+1];)r++;let i=(e-n[r])/(n[r+1]-n[r]);return t[r]+i*(t[r+1]-t[r])})}}return o=[p,m],E},E.mode=function(e){return arguments.length?(t=e,T(),E):t},E.range=function(e,t){return y(e,t),E},E.out=function(e){return f=e,E},E.spread=function(e){return arguments.length?(i=e,E):i},E.correctLightness=function(e){return e??=!0,h=e,T(),S=h?function(e){let t=w(0,!0).lab()[0],n=w(1,!0).lab()[0],r=t>n,i=w(e,!0).lab()[0],a=t+(n-t)*e,o=i-a,s=0,c=1,l=20;for(;Math.abs(o)>.01&&l-- >0;)(function(){return r&&(o*=-1),o<0?(s=e,e+=(c-e)*.5):(c=e,e+=(s-e)*.5),i=w(e,!0).lab()[0],o=i-a})();return e}:e=>e,E},E.padding=function(e){return e==null?l:(type_default(e)===`number`&&(e=[e,e]),l=e,E)},E.colors=function(t,n){arguments.length<2&&(n=`hex`);let r=[];if(arguments.length===0)r=d.slice(0);else if(t===1)r=[E(.5)];else if(t>1){let e=o[0],n=o[1]-e;r=__range__(0,t,!1).map(r=>E(e+r/(t-1)*n))}else{e=[];let t=[];if(u&&u.length>2)for(let e=1,n=u.length,r=1<=n;r?e<n:e>n;r?e++:e--)t.push((u[e-1]+u[e])*.5);else t=o;r=t.map(e=>E(e))}return chroma[n]&&(r=r.map(e=>e[n]())),r},E.cache=function(e){return e==null?_:(_=e,E)},E.gamma=function(e){return e==null?v:(v=e,E)},E.nodata=function(e){return e==null?r:(r=chroma(e),E)},E}function __range__(e,t,n){let r=[],i=e<t,a=n?i?t+1:t-1:t;for(let t=e;i?t<a:t>a;i?t++:t--)r.push(t);return r}const binom_row=function(e){let t=[1,1];for(let n=1;n<e;n++){let e=[1];for(let n=1;n<=t.length;n++)e[n]=(t[n]||0)+t[n-1];t=e}return t},bezier=function(e){let t,n,r,i;if(e=e.map(e=>new Color(e)),e.length===2)[n,r]=e.map(e=>e.lab()),t=function(e){return new Color([0,1,2].map(t=>n[t]+e*(r[t]-n[t])),`lab`)};else if(e.length===3)[n,r,i]=e.map(e=>e.lab()),t=function(e){return new Color([0,1,2].map(t=>(1-e)*(1-e)*n[t]+2*(1-e)*e*r[t]+e*e*i[t]),`lab`)};else if(e.length===4){let a;[n,r,i,a]=e.map(e=>e.lab()),t=function(e){return new Color([0,1,2].map(t=>(1-e)*(1-e)*(1-e)*n[t]+3*(1-e)*(1-e)*e*r[t]+3*(1-e)*e*e*i[t]+e*e*e*a[t]),`lab`)}}else if(e.length>=5){let n,r,i;n=e.map(e=>e.lab()),i=e.length-1,r=binom_row(i),t=function(e){let t=1-e;return new Color([0,1,2].map(a=>n.reduce((n,o,s)=>n+r[s]*t**(i-s)*e**s*o[a],0)),`lab`)}}else throw RangeError(`No point in running bezier with only one color.`);return t};var bezier_default=e=>{let t=bezier(e);return t.scale=()=>scale_default(t),t};const{round:round$3}=Math;Color.prototype.rgb=function(e=!0){return e===!1?this._rgb.slice(0,3):this._rgb.slice(0,3).map(round$3)},Color.prototype.rgba=function(e=!0){return this._rgb.slice(0,4).map((t,n)=>n<3?e===!1?t:round$3(t):t)};const rgb=(...e)=>new Color(...e,`rgb`);Object.assign(chroma,{rgb}),input_default.format.rgb=(...e)=>{let t=unpack_default(e,`rgba`);return t[3]===void 0&&(t[3]=1),t},input_default.autodetect.push({p:3,test:(...e)=>{if(e=unpack_default(e,`rgba`),type_default(e)===`array`&&(e.length===3||e.length===4&&type_default(e[3])==`number`&&e[3]>=0&&e[3]<=1))return`rgb`}});const blend=(e,t,n)=>{if(!blend[n])throw Error(`unknown blend mode `+n);return blend[n](e,t)},blend_f=e=>(t,n)=>{let r=chroma(n).rgb(),i=chroma(t).rgb();return chroma.rgb(e(r,i))},each=e=>(t,n)=>{let r=[];return r[0]=e(t[0],n[0]),r[1]=e(t[1],n[1]),r[2]=e(t[2],n[2]),r},normal=e=>e,multiply=(e,t)=>e*t/255,darken=(e,t)=>e>t?t:e,lighten=(e,t)=>e>t?e:t,screen=(e,t)=>255*(1-(1-e/255)*(1-t/255)),overlay=(e,t)=>t<128?2*e*t/255:255*(1-2*(1-e/255)*(1-t/255)),burn=(e,t)=>255*(1-(1-t/255)/(e/255)),dodge=(e,t)=>e===255?255:(e=t/255*255/(1-e/255),e>255?255:e);blend.normal=blend_f(each(normal)),blend.multiply=blend_f(each(multiply)),blend.screen=blend_f(each(screen)),blend.overlay=blend_f(each(overlay)),blend.darken=blend_f(each(darken)),blend.lighten=blend_f(each(lighten)),blend.dodge=blend_f(each(dodge)),blend.burn=blend_f(each(burn));const{pow:pow$2,sin:sin$1,cos:cos$1}=Math;function cubehelix_default(e=300,t=-1.5,n=1,i=1,o=[0,1]){let s=0,c;type_default(o)===`array`?c=o[1]-o[0]:(c=0,o=[o,o]);let l=function(a){let l=TWOPI*((e+120)/360+t*a),u=pow$2(o[0]+c*a,i),d=(s===0?n:n[0]+a*s)*u*(1-u)/2,f=cos$1(l),m=sin$1(l),h=u+d*(-.14861*f+1.78277*m),g=u+d*(-.29227*f-.90649*m),_=u+1.97294*f*d;return chroma(clip_rgb_default([h*255,g*255,_*255,1]))};return l.start=function(t){return t==null?e:(e=t,l)},l.rotations=function(e){return e==null?t:(t=e,l)},l.gamma=function(e){return e==null?i:(i=e,l)},l.hue=function(e){return e==null?n:(n=e,type_default(n)===`array`?(s=n[1]-n[0],s===0&&(n=n[1])):s=0,l)},l.lightness=function(e){return e==null?o:(type_default(e)===`array`?(o=e,c=e[1]-e[0]):(o=[e,e],c=0),l)},l.scale=()=>chroma.scale(l),l.hue(n),l}const{floor:floor$1,random}=Math;var random_default=(e=random)=>{let t=`#`;for(let n=0;n<6;n++)t+=`0123456789abcdef`.charAt(floor$1(e()*16));return new Color(t,`hex`)};const{log:log$1,pow:pow$1,floor,abs:abs$1}=Math;function analyze(e,t=null){let n={min:Number.MAX_VALUE,max:Number.MAX_VALUE*-1,sum:0,values:[],count:0};return type_default(e)===`object`&&(e=Object.values(e)),e.forEach(e=>{t&&type_default(e)===`object`&&(e=e[t]),e!=null&&!isNaN(e)&&(n.values.push(e),n.sum+=e,e<n.min&&(n.min=e),e>n.max&&(n.max=e),n.count+=1)}),n.domain=[n.min,n.max],n.limits=(e,t)=>limits(n,e,t),n}function limits(e,t=`equal`,n=7){type_default(e)==`array`&&(e=analyze(e));let{min:r,max:i}=e,o=e.values.sort((e,t)=>e-t);if(n===1)return[r,i];let s=[];if(t.substr(0,1)===`c`&&(s.push(r),s.push(i)),t.substr(0,1)===`e`){s.push(r);for(let e=1;e<n;e++)s.push(r+e/n*(i-r));s.push(i)}else if(t.substr(0,1)===`l`){if(r<=0)throw Error(`Logarithmic scales are only possible for values > 0`);let e=Math.LOG10E*log$1(r),t=Math.LOG10E*log$1(i);s.push(r);for(let r=1;r<n;r++)s.push(pow$1(10,e+r/n*(t-e)));s.push(i)}else if(t.substr(0,1)===`q`){s.push(r);for(let e=1;e<n;e++){let t=(o.length-1)*e/n,r=floor(t);if(r===t)s.push(o[r]);else{let e=t-r;s.push(o[r]*(1-e)+o[r+1]*e)}}s.push(i)}else if(t.substr(0,1)===`k`){let e,t=o.length,a=Array(t),c=Array(n),l=!0,u=0,d=null;d=[],d.push(r);for(let e=1;e<n;e++)d.push(r+e/n*(i-r));for(d.push(i);l;){for(let e=0;e<n;e++)c[e]=0;for(let e=0;e<t;e++){let t=o[e],r=Number.MAX_VALUE,i;for(let o=0;o<n;o++){let n=abs$1(d[o]-t);n<r&&(r=n,i=o),c[i]++,a[e]=i}}let r=Array(n);for(let e=0;e<n;e++)r[e]=null;for(let n=0;n<t;n++)e=a[n],r[e]===null?r[e]=o[n]:r[e]+=o[n];for(let e=0;e<n;e++)r[e]*=1/c[e];l=!1;for(let e=0;e<n;e++)if(r[e]!==d[e]){l=!0;break}d=r,u++,u>200&&(l=!1)}let f={};for(let e=0;e<n;e++)f[e]=[];for(let n=0;n<t;n++)e=a[n],f[e].push(o[n]);let p=[];for(let e=0;e<n;e++)p.push(f[e][0]),p.push(f[e][f[e].length-1]);p=p.sort((e,t)=>e-t),s.push(p[0]);for(let e=1;e<p.length;e+=2){let t=p[e];!isNaN(t)&&s.indexOf(t)===-1&&s.push(t)}}return s}var contrast_default=(e,t)=>{e=new Color(e),t=new Color(t);let n=e.luminance(),r=t.luminance();return n>r?(n+.05)/(r+.05):(r+.05)/(n+.05)};
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
*
|
|
5
|
+
* The APCA contrast prediction algorithm is based of the formulas published
|
|
6
|
+
* in the APCA-1.0.98G specification by Myndex. The specification is available at:
|
|
7
|
+
* https://raw.githubusercontent.com/Myndex/apca-w3/master/images/APCAw3_0.1.17_APCA0.0.98G.svg
|
|
8
|
+
*
|
|
9
|
+
* Note that the APCA implementation is still beta, so please update to
|
|
10
|
+
* future versions of chroma.js when they become available.
|
|
11
|
+
*
|
|
12
|
+
* You can read more about the APCA Readability Criterion at
|
|
13
|
+
* https://readtech.org/ARC/
|
|
14
|
+
*/
|
|
15
|
+
const W_offset=.027,R_scale=1.14,B_threshold=.022,B_exp=1.414;var contrastAPCA_default=(e,t)=>{e=new Color(e),t=new Color(t),e.alpha()<1&&(e=mix_default(t,e,e.alpha(),`rgb`));let n=lum(...e.rgb()),r=lum(...t.rgb()),i=n>=B_threshold?n:n+(B_threshold-n)**+B_exp,a=r>=B_threshold?r:r+(B_threshold-r)**+B_exp,o=a**.56-i**.57,s=a**.65-i**.62,c=Math.abs(a-i)<5e-4?0:i<a?o*R_scale:s*R_scale;return(Math.abs(c)<.1?0:c>0?c-W_offset:c+W_offset)*100};function lum(e,t,n){return .2126729*(e/255)**2.4+.7151522*(t/255)**2.4+.072175*(n/255)**2.4}const{sqrt,pow,min,max:max$1,atan2,abs,cos,sin,exp,PI}=Math;function delta_e_default(e,t,n=1,r=1,i=1){var a=function(e){return 360*e/(2*PI)},o=function(e){return 2*PI*e/360};e=new Color(e),t=new Color(t);let[s,c,l]=Array.from(e.lab()),[u,d,f]=Array.from(t.lab()),p=(s+u)/2,m=(sqrt(pow(c,2)+pow(l,2))+sqrt(pow(d,2)+pow(f,2)))/2,h=.5*(1-sqrt(pow(m,7)/(pow(m,7)+pow(25,7)))),g=c*(1+h),_=d*(1+h),v=sqrt(pow(g,2)+pow(l,2)),b=sqrt(pow(_,2)+pow(f,2)),x=(v+b)/2,S=a(atan2(l,g)),C=a(atan2(f,_)),w=S>=0?S:S+360,T=C>=0?C:C+360,E=abs(w-T)>180?(w+T+360)/2:(w+T)/2,D=1-.17*cos(o(E-30))+.24*cos(o(2*E))+.32*cos(o(3*E+6))-.2*cos(o(4*E-63)),O=T-w;O=abs(O)<=180?O:T<=w?O+360:O-360,O=2*sqrt(v*b)*sin(o(O)/2);let k=u-s,A=b-v,j=1+.015*pow(p-50,2)/sqrt(20+pow(p-50,2)),M=1+.045*x,N=1+.015*x*D,P=30*exp(-pow((E-275)/25,2)),F=-(2*sqrt(pow(x,7)/(pow(x,7)+pow(25,7))))*sin(2*o(P));return max$1(0,min(100,sqrt(pow(k/(n*j),2)+pow(A/(r*M),2)+pow(O/(i*N),2)+F*(A/(r*M))*(O/(i*N)))))}function distance_default(e,t,n=`lab`){e=new Color(e),t=new Color(t);let r=e.get(n),i=t.get(n),a=0;for(let e in r){let t=(r[e]||0)-(i[e]||0);a+=t*t}return Math.sqrt(a)}var valid_default=(...e)=>{try{return new Color(...e),!0}catch{return!1}},scales_default={cool(){return scale_default([chroma.hsl(180,1,.9),chroma.hsl(250,.7,.4)])},hot(){return scale_default([`#000`,`#f00`,`#ff0`,`#fff`],[0,.25,.75,1]).mode(`rgb`)}};const colorbrewer={OrRd:[`#fff7ec`,`#fee8c8`,`#fdd49e`,`#fdbb84`,`#fc8d59`,`#ef6548`,`#d7301f`,`#b30000`,`#7f0000`],PuBu:[`#fff7fb`,`#ece7f2`,`#d0d1e6`,`#a6bddb`,`#74a9cf`,`#3690c0`,`#0570b0`,`#045a8d`,`#023858`],BuPu:[`#f7fcfd`,`#e0ecf4`,`#bfd3e6`,`#9ebcda`,`#8c96c6`,`#8c6bb1`,`#88419d`,`#810f7c`,`#4d004b`],Oranges:[`#fff5eb`,`#fee6ce`,`#fdd0a2`,`#fdae6b`,`#fd8d3c`,`#f16913`,`#d94801`,`#a63603`,`#7f2704`],BuGn:[`#f7fcfd`,`#e5f5f9`,`#ccece6`,`#99d8c9`,`#66c2a4`,`#41ae76`,`#238b45`,`#006d2c`,`#00441b`],YlOrBr:[`#ffffe5`,`#fff7bc`,`#fee391`,`#fec44f`,`#fe9929`,`#ec7014`,`#cc4c02`,`#993404`,`#662506`],YlGn:[`#ffffe5`,`#f7fcb9`,`#d9f0a3`,`#addd8e`,`#78c679`,`#41ab5d`,`#238443`,`#006837`,`#004529`],Reds:[`#fff5f0`,`#fee0d2`,`#fcbba1`,`#fc9272`,`#fb6a4a`,`#ef3b2c`,`#cb181d`,`#a50f15`,`#67000d`],RdPu:[`#fff7f3`,`#fde0dd`,`#fcc5c0`,`#fa9fb5`,`#f768a1`,`#dd3497`,`#ae017e`,`#7a0177`,`#49006a`],Greens:[`#f7fcf5`,`#e5f5e0`,`#c7e9c0`,`#a1d99b`,`#74c476`,`#41ab5d`,`#238b45`,`#006d2c`,`#00441b`],YlGnBu:[`#ffffd9`,`#edf8b1`,`#c7e9b4`,`#7fcdbb`,`#41b6c4`,`#1d91c0`,`#225ea8`,`#253494`,`#081d58`],Purples:[`#fcfbfd`,`#efedf5`,`#dadaeb`,`#bcbddc`,`#9e9ac8`,`#807dba`,`#6a51a3`,`#54278f`,`#3f007d`],GnBu:[`#f7fcf0`,`#e0f3db`,`#ccebc5`,`#a8ddb5`,`#7bccc4`,`#4eb3d3`,`#2b8cbe`,`#0868ac`,`#084081`],Greys:[`#ffffff`,`#f0f0f0`,`#d9d9d9`,`#bdbdbd`,`#969696`,`#737373`,`#525252`,`#252525`,`#000000`],YlOrRd:[`#ffffcc`,`#ffeda0`,`#fed976`,`#feb24c`,`#fd8d3c`,`#fc4e2a`,`#e31a1c`,`#bd0026`,`#800026`],PuRd:[`#f7f4f9`,`#e7e1ef`,`#d4b9da`,`#c994c7`,`#df65b0`,`#e7298a`,`#ce1256`,`#980043`,`#67001f`],Blues:[`#f7fbff`,`#deebf7`,`#c6dbef`,`#9ecae1`,`#6baed6`,`#4292c6`,`#2171b5`,`#08519c`,`#08306b`],PuBuGn:[`#fff7fb`,`#ece2f0`,`#d0d1e6`,`#a6bddb`,`#67a9cf`,`#3690c0`,`#02818a`,`#016c59`,`#014636`],Viridis:[`#440154`,`#482777`,`#3f4a8a`,`#31678e`,`#26838f`,`#1f9d8a`,`#6cce5a`,`#b6de2b`,`#fee825`],Spectral:[`#9e0142`,`#d53e4f`,`#f46d43`,`#fdae61`,`#fee08b`,`#ffffbf`,`#e6f598`,`#abdda4`,`#66c2a5`,`#3288bd`,`#5e4fa2`],RdYlGn:[`#a50026`,`#d73027`,`#f46d43`,`#fdae61`,`#fee08b`,`#ffffbf`,`#d9ef8b`,`#a6d96a`,`#66bd63`,`#1a9850`,`#006837`],RdBu:[`#67001f`,`#b2182b`,`#d6604d`,`#f4a582`,`#fddbc7`,`#f7f7f7`,`#d1e5f0`,`#92c5de`,`#4393c3`,`#2166ac`,`#053061`],PiYG:[`#8e0152`,`#c51b7d`,`#de77ae`,`#f1b6da`,`#fde0ef`,`#f7f7f7`,`#e6f5d0`,`#b8e186`,`#7fbc41`,`#4d9221`,`#276419`],PRGn:[`#40004b`,`#762a83`,`#9970ab`,`#c2a5cf`,`#e7d4e8`,`#f7f7f7`,`#d9f0d3`,`#a6dba0`,`#5aae61`,`#1b7837`,`#00441b`],RdYlBu:[`#a50026`,`#d73027`,`#f46d43`,`#fdae61`,`#fee090`,`#ffffbf`,`#e0f3f8`,`#abd9e9`,`#74add1`,`#4575b4`,`#313695`],BrBG:[`#543005`,`#8c510a`,`#bf812d`,`#dfc27d`,`#f6e8c3`,`#f5f5f5`,`#c7eae5`,`#80cdc1`,`#35978f`,`#01665e`,`#003c30`],RdGy:[`#67001f`,`#b2182b`,`#d6604d`,`#f4a582`,`#fddbc7`,`#ffffff`,`#e0e0e0`,`#bababa`,`#878787`,`#4d4d4d`,`#1a1a1a`],PuOr:[`#7f3b08`,`#b35806`,`#e08214`,`#fdb863`,`#fee0b6`,`#f7f7f7`,`#d8daeb`,`#b2abd2`,`#8073ac`,`#542788`,`#2d004b`],Set2:[`#66c2a5`,`#fc8d62`,`#8da0cb`,`#e78ac3`,`#a6d854`,`#ffd92f`,`#e5c494`,`#b3b3b3`],Accent:[`#7fc97f`,`#beaed4`,`#fdc086`,`#ffff99`,`#386cb0`,`#f0027f`,`#bf5b17`,`#666666`],Set1:[`#e41a1c`,`#377eb8`,`#4daf4a`,`#984ea3`,`#ff7f00`,`#ffff33`,`#a65628`,`#f781bf`,`#999999`],Set3:[`#8dd3c7`,`#ffffb3`,`#bebada`,`#fb8072`,`#80b1d3`,`#fdb462`,`#b3de69`,`#fccde5`,`#d9d9d9`,`#bc80bd`,`#ccebc5`,`#ffed6f`],Dark2:[`#1b9e77`,`#d95f02`,`#7570b3`,`#e7298a`,`#66a61e`,`#e6ab02`,`#a6761d`,`#666666`],Paired:[`#a6cee3`,`#1f78b4`,`#b2df8a`,`#33a02c`,`#fb9a99`,`#e31a1c`,`#fdbf6f`,`#ff7f00`,`#cab2d6`,`#6a3d9a`,`#ffff99`,`#b15928`],Pastel2:[`#b3e2cd`,`#fdcdac`,`#cbd5e8`,`#f4cae4`,`#e6f5c9`,`#fff2ae`,`#f1e2cc`,`#cccccc`],Pastel1:[`#fbb4ae`,`#b3cde3`,`#ccebc5`,`#decbe4`,`#fed9a6`,`#ffffcc`,`#e5d8bd`,`#fddaec`,`#f2f2f2`]},colorbrewerTypes=Object.keys(colorbrewer),typeMap=new Map(colorbrewerTypes.map(e=>[e.toLowerCase(),e])),colorbrewerProxy=typeof Proxy==`function`?new Proxy(colorbrewer,{get(e,t){let n=t.toLowerCase();if(typeMap.has(n))return e[typeMap.get(n)]},getOwnPropertyNames(){return Object.getOwnPropertyNames(colorbrewerTypes)}}):colorbrewer,cmyk2rgb=(...e)=>{e=unpack_default(e,`cmyk`);let[t,n,r,i]=e,a=e.length>4?e[4]:1;return i===1?[0,0,0,a]:[t>=1?0:255*(1-t)*(1-i),n>=1?0:255*(1-n)*(1-i),r>=1?0:255*(1-r)*(1-i),a]},{max}=Math,rgb2cmyk=(...e)=>{let[t,n,r]=unpack_default(e,`rgb`);t/=255,n/=255,r/=255;let i=1-max(t,max(n,r)),a=i<1?1/(1-i):0;return[(1-t-i)*a,(1-n-i)*a,(1-r-i)*a,i]};Color.prototype.cmyk=function(){return rgb2cmyk(this._rgb)};const cmyk=(...e)=>new Color(...e,`cmyk`);Object.assign(chroma,{cmyk}),input_default.format.cmyk=cmyk2rgb,input_default.autodetect.push({p:2,test:(...e)=>{if(e=unpack_default(e,`cmyk`),type_default(e)===`array`&&e.length===4)return`cmyk`}});const hsl2css=(...e)=>{let t=unpack_default(e,`hsla`),n=last_default(e)||`lsa`;return t[0]=rnd2(t[0]||0)+`deg`,t[1]=rnd2(t[1]*100)+`%`,t[2]=rnd2(t[2]*100)+`%`,n===`hsla`||t.length>3&&t[3]<1?(t[3]=`/ `+(t.length>3?t[3]:1),n=`hsla`):t.length=3,`${n.substr(0,3)}(${t.join(` `)})`},lab2css=(...e)=>{let t=unpack_default(e,`lab`),n=last_default(e)||`lab`;return t[0]=rnd2(t[0])+`%`,t[1]=rnd2(t[1]),t[2]=rnd2(t[2]),n===`laba`||t.length>3&&t[3]<1?t[3]=`/ `+(t.length>3?t[3]:1):t.length=3,`lab(${t.join(` `)})`},lch2css=(...e)=>{let t=unpack_default(e,`lch`),n=last_default(e)||`lab`;return t[0]=rnd2(t[0])+`%`,t[1]=rnd2(t[1]),t[2]=isNaN(t[2])?`none`:rnd2(t[2])+`deg`,n===`lcha`||t.length>3&&t[3]<1?t[3]=`/ `+(t.length>3?t[3]:1):t.length=3,`lch(${t.join(` `)})`},oklab2css=(...e)=>{let t=unpack_default(e,`lab`);return t[0]=rnd2(t[0]*100)+`%`,t[1]=rnd3(t[1]),t[2]=rnd3(t[2]),t.length>3&&t[3]<1?t[3]=`/ `+(t.length>3?t[3]:1):t.length=3,`oklab(${t.join(` `)})`},rgb2oklch=(...e)=>{let[t,n,r,...i]=unpack_default(e,`rgb`),[a,s,c]=rgb2oklab(t,n,r),[l,u,d]=lab2lch(a,s,c);return[l,u,d,...i.length>0&&i[0]<1?[i[0]]:[]]},oklch2css=(...e)=>{let t=unpack_default(e,`lch`);return t[0]=rnd2(t[0]*100)+`%`,t[1]=rnd3(t[1]),t[2]=isNaN(t[2])?`none`:rnd2(t[2])+`deg`,t.length>3&&t[3]<1?t[3]=`/ `+(t.length>3?t[3]:1):t.length=3,`oklch(${t.join(` `)})`},{round:round$2}=Math,rgb2css=(...e)=>{let t=unpack_default(e,`rgba`),n=last_default(e)||`rgb`;if(n.substr(0,3)===`hsl`)return hsl2css(rgb2hsl$1(t),n);if(n.substr(0,3)===`lab`){let e=getLabWhitePoint();setLabWhitePoint(`d50`);let r=lab2css(rgb2lab(t),n);return setLabWhitePoint(e),r}if(n.substr(0,3)===`lch`){let e=getLabWhitePoint();setLabWhitePoint(`d50`);let r=lch2css(rgb2lch(t),n);return setLabWhitePoint(e),r}return n.substr(0,5)===`oklab`?oklab2css(rgb2oklab(t)):n.substr(0,5)===`oklch`?oklch2css(rgb2oklch(t)):(t[0]=round$2(t[0]),t[1]=round$2(t[1]),t[2]=round$2(t[2]),(n===`rgba`||t.length>3&&t[3]<1)&&(t[3]=`/ `+(t.length>3?t[3]:1),n=`rgba`),`${n.substr(0,3)}(${t.slice(0,n===`rgb`?3:4).join(` `)})`)},oklch2rgb=(...e)=>{e=unpack_default(e,`lch`);let[t,n,r,...i]=e,[a,s,c]=lch2lab(t,n,r),[l,u,d]=oklab2rgb(a,s,c);return[l,u,d,...i.length>0&&i[0]<1?[i[0]]:[]]},INT_OR_PCT=`((?:-?\\d+)|(?:-?\\d+(?:\\.\\d+)?)%|none)`,FLOAT_OR_PCT=`((?:-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)%?)|none)`,PCT=`((?:-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)%)|none)`,COMMA=`\\s*,\\s*`,ANLGE=`((?:-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:deg)?)|none)`,ALPHA=`\\s*(?:\\/\\s*((?:[01]|[01]?\\.\\d+)|\\d+(?:\\.\\d+)?%))?`,RE_RGB=RegExp(`^rgba?\\(\\s*`+[INT_OR_PCT,INT_OR_PCT,INT_OR_PCT].join(`\\s+`)+ALPHA+`\\)$`),RE_RGB_LEGACY=RegExp(`^rgb\\(\\s*`+[INT_OR_PCT,INT_OR_PCT,INT_OR_PCT].join(COMMA)+`\\s*\\)$`),RE_RGBA_LEGACY=RegExp(`^rgba\\(\\s*`+[INT_OR_PCT,INT_OR_PCT,INT_OR_PCT,FLOAT_OR_PCT].join(COMMA)+`\\s*\\)$`),RE_HSL=RegExp(`^hsla?\\(\\s*`+[ANLGE,PCT,PCT].join(`\\s+`)+ALPHA+`\\)$`),RE_HSL_LEGACY=RegExp(`^hsl?\\(\\s*`+[ANLGE,PCT,PCT].join(COMMA)+`\\s*\\)$`),RE_HSLA_LEGACY=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,RE_LAB=RegExp(`^lab\\(\\s*`+[FLOAT_OR_PCT,FLOAT_OR_PCT,FLOAT_OR_PCT].join(`\\s+`)+ALPHA+`\\)$`),RE_LCH=RegExp(`^lch\\(\\s*`+[FLOAT_OR_PCT,FLOAT_OR_PCT,ANLGE].join(`\\s+`)+ALPHA+`\\)$`),RE_OKLAB=RegExp(`^oklab\\(\\s*`+[FLOAT_OR_PCT,FLOAT_OR_PCT,FLOAT_OR_PCT].join(`\\s+`)+ALPHA+`\\)$`),RE_OKLCH=RegExp(`^oklch\\(\\s*`+[FLOAT_OR_PCT,FLOAT_OR_PCT,ANLGE].join(`\\s+`)+ALPHA+`\\)$`),{round:round$1}=Math,roundRGB=e=>e.map((e,t)=>t<=2?limit_default(round$1(e),0,255):e),percentToAbsolute=(e,t=0,n=100,r=!1)=>(typeof e==`string`&&e.endsWith(`%`)&&(e=parseFloat(e.substring(0,e.length-1))/100,e=r?t+(e+1)*.5*(n-t):t+e*(n-t)),+e),noneToValue=(e,t)=>e===`none`?t:e,css2rgb=e=>{if(e=e.toLowerCase().trim(),e===`transparent`)return[0,0,0,0];let t;if(input_default.format.named)try{return input_default.format.named(e)}catch{}if((t=e.match(RE_RGB))||(t=e.match(RE_RGB_LEGACY))){let e=t.slice(1,4);for(let t=0;t<3;t++)e[t]=+percentToAbsolute(noneToValue(e[t],0),0,255);e=roundRGB(e);let n=t[4]===void 0?1:+percentToAbsolute(t[4],0,1);return e[3]=n,e}if(t=e.match(RE_RGBA_LEGACY)){let e=t.slice(1,5);for(let t=0;t<4;t++)e[t]=+percentToAbsolute(e[t],0,255);return e}if((t=e.match(RE_HSL))||(t=e.match(RE_HSL_LEGACY))){let e=t.slice(1,4);e[0]=+noneToValue(e[0].replace(`deg`,``),0),e[1]=percentToAbsolute(noneToValue(e[1],0),0,100)*.01,e[2]=percentToAbsolute(noneToValue(e[2],0),0,100)*.01;let n=roundRGB(hsl2rgb(e));return n[3]=t[4]===void 0?1:+percentToAbsolute(t[4],0,1),n}if(t=e.match(RE_HSLA_LEGACY)){let e=t.slice(1,4);e[1]*=.01,e[2]*=.01;let n=hsl2rgb(e);for(let e=0;e<3;e++)n[e]=round$1(n[e]);return n[3]=+t[4],n}if(t=e.match(RE_LAB)){let e=t.slice(1,4);e[0]=percentToAbsolute(noneToValue(e[0],0),0,100),e[1]=percentToAbsolute(noneToValue(e[1],0),-125,125,!0),e[2]=percentToAbsolute(noneToValue(e[2],0),-125,125,!0);let n=getLabWhitePoint();setLabWhitePoint(`d50`);let r=roundRGB(lab2rgb(e));return setLabWhitePoint(n),r[3]=t[4]===void 0?1:+percentToAbsolute(t[4],0,1),r}if(t=e.match(RE_LCH)){let e=t.slice(1,4);e[0]=percentToAbsolute(e[0],0,100),e[1]=percentToAbsolute(noneToValue(e[1],0),0,150,!1),e[2]=+noneToValue(e[2].replace(`deg`,``),0);let n=getLabWhitePoint();setLabWhitePoint(`d50`);let r=roundRGB(lch2rgb(e));return setLabWhitePoint(n),r[3]=t[4]===void 0?1:+percentToAbsolute(t[4],0,1),r}if(t=e.match(RE_OKLAB)){let e=t.slice(1,4);e[0]=percentToAbsolute(noneToValue(e[0],0),0,1),e[1]=percentToAbsolute(noneToValue(e[1],0),-.4,.4,!0),e[2]=percentToAbsolute(noneToValue(e[2],0),-.4,.4,!0);let n=roundRGB(oklab2rgb(e));return n[3]=t[4]===void 0?1:+percentToAbsolute(t[4],0,1),n}if(t=e.match(RE_OKLCH)){let e=t.slice(1,4);e[0]=percentToAbsolute(noneToValue(e[0],0),0,1),e[1]=percentToAbsolute(noneToValue(e[1],0),0,.4,!1),e[2]=+noneToValue(e[2].replace(`deg`,``),0);let n=roundRGB(oklch2rgb(e));return n[3]=t[4]===void 0?1:+percentToAbsolute(t[4],0,1),n}};css2rgb.test=e=>RE_RGB.test(e)||RE_HSL.test(e)||RE_LAB.test(e)||RE_LCH.test(e)||RE_OKLAB.test(e)||RE_OKLCH.test(e)||RE_RGB_LEGACY.test(e)||RE_RGBA_LEGACY.test(e)||RE_HSL_LEGACY.test(e)||RE_HSLA_LEGACY.test(e)||e===`transparent`,Color.prototype.css=function(e){return rgb2css(this._rgb,e)};const css=(...e)=>new Color(...e,`css`);chroma.css=css,input_default.format.css=css2rgb,input_default.autodetect.push({p:5,test:(e,...t)=>{if(!t.length&&type_default(e)===`string`&&css2rgb.test(e))return`css`}}),input_default.format.gl=(...e)=>{let t=unpack_default(e,`rgba`);return t[0]*=255,t[1]*=255,t[2]*=255,t};const gl=(...e)=>new Color(...e,`gl`);chroma.gl=gl,Color.prototype.gl=function(){let e=this._rgb;return[e[0]/255,e[1]/255,e[2]/255,e[3]]},Color.prototype.hex=function(e){return rgb2hex(this._rgb,e)};const hex=(...e)=>new Color(...e,`hex`);chroma.hex=hex,input_default.format.hex=hex2rgb,input_default.autodetect.push({p:4,test:(e,...t)=>{if(!t.length&&type_default(e)===`string`&&[3,4,5,6,7,8,9].indexOf(e.length)>=0)return`hex`}});const{log}=Math,temperature2rgb=e=>{let t=e/100,n,r,i;return t<66?(n=255,r=t<6?0:-155.25485562709179-.44596950469579133*(r=t-2)+104.49216199393888*log(r),i=t<20?0:-254.76935184120902+.8274096064007395*(i=t-10)+115.67994401066147*log(i)):(n=351.97690566805693+.114206453784165*(n=t-55)-40.25366309332127*log(n),r=325.4494125711974+.07943456536662342*(r=t-50)-28.0852963507957*log(r),i=255),[n,r,i,1]},{round}=Math,rgb2temperature=(...e)=>{let t=unpack_default(e,`rgb`),n=t[0],r=t[2],i=1e3,a=4e4,s;for(;a-i>.4;){s=(a+i)*.5;let e=temperature2rgb(s);e[2]/e[0]>=r/n?a=s:i=s}return round(s)};Color.prototype.temp=Color.prototype.kelvin=Color.prototype.temperature=function(){return rgb2temperature(this._rgb)};const temp=(...e)=>new Color(...e,`temp`);Object.assign(chroma,{temp,kelvin:temp,temperature:temp}),input_default.format.temp=input_default.format.kelvin=input_default.format.temperature=temperature2rgb,Color.prototype.oklch=function(){return rgb2oklch(this._rgb)};const oklch=(...e)=>new Color(...e,`oklch`);Object.assign(chroma,{oklch}),input_default.format.oklch=oklch2rgb,input_default.autodetect.push({p:2,test:(...e)=>{if(e=unpack_default(e,`oklch`),type_default(e)===`array`&&e.length===3)return`oklch`}}),Object.assign(chroma,{analyze,average:average_default,bezier:bezier_default,blend,brewer:colorbrewerProxy,Color,colors:w3cx11,contrast:contrast_default,contrastAPCA:contrastAPCA_default,cubehelix:cubehelix_default,deltaE:delta_e_default,distance:distance_default,input:input_default,interpolate:mix_default,limits,mix:mix_default,random:random_default,scale:scale_default,scales:scales_default,valid:valid_default});var chroma_js_default=chroma;const LIGHTNESS_MAP=[.96,.907,.805,.697,.605,.547,.518,.445,.395,.34],SATURATION_MAP=[.32,.16,.08,.04,0,0,.04,.08,.16,.32];function getClosestLightness(e){let t=e.get(`hsl.l`);return LIGHTNESS_MAP.reduce((e,n)=>Math.abs(n-t)<Math.abs(e-t)?n:e)}function generateColorsMap(e){let t=chroma_js_default(e),n=getClosestLightness(t),r=LIGHTNESS_MAP.findIndex(e=>e===n),i=LIGHTNESS_MAP.map(e=>t.set(`hsl.l`,e)).map(e=>chroma_js_default(e)).map((e,t)=>{let n=SATURATION_MAP[t]-SATURATION_MAP[r];return n>=0?e.saturate(n):e.desaturate(n*-1)});return i[r]=chroma_js_default(e),{baseColorIndex:r,colors:i}}function generateColors(e){return generateColorsMap(e).colors.map(e=>e.hex())}export{chroma_js_default as n,generateColors as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const tomato={tomato1:`#fffcfc`,tomato2:`#fff8f7`,tomato3:`#feebe7`,tomato4:`#ffdcd3`,tomato5:`#ffcdc2`,tomato6:`#fdbdaf`,tomato7:`#f5a898`,tomato8:`#ec8e7b`,tomato9:`#e54d2e`,tomato10:`#dd4425`,tomato11:`#d13415`,tomato12:`#5c271f`},red={red1:`#fffcfc`,red2:`#fff7f7`,red3:`#feebec`,red4:`#ffdbdc`,red5:`#ffcdce`,red6:`#fdbdbe`,red7:`#f4a9aa`,red8:`#eb8e90`,red9:`#e5484d`,red10:`#dc3e42`,red11:`#ce2c31`,red12:`#641723`},ruby={ruby1:`#fffcfd`,ruby2:`#fff7f8`,ruby3:`#feeaed`,ruby4:`#ffdce1`,ruby5:`#ffced6`,ruby6:`#f8bfc8`,ruby7:`#efacb8`,ruby8:`#e592a3`,ruby9:`#e54666`,ruby10:`#dc3b5d`,ruby11:`#ca244d`,ruby12:`#64172b`},crimson={crimson1:`#fffcfd`,crimson2:`#fef7f9`,crimson3:`#ffe9f0`,crimson4:`#fedce7`,crimson5:`#facedd`,crimson6:`#f3bed1`,crimson7:`#eaacc3`,crimson8:`#e093b2`,crimson9:`#e93d82`,crimson10:`#df3478`,crimson11:`#cb1d63`,crimson12:`#621639`},pink={pink1:`#fffcfe`,pink2:`#fef7fb`,pink3:`#fee9f5`,pink4:`#fbdcef`,pink5:`#f6cee7`,pink6:`#efbfdd`,pink7:`#e7acd0`,pink8:`#dd93c2`,pink9:`#d6409f`,pink10:`#cf3897`,pink11:`#c2298a`,pink12:`#651249`},purple={purple1:`#fefcfe`,purple2:`#fbf7fe`,purple3:`#f7edfe`,purple4:`#f2e2fc`,purple5:`#ead5f9`,purple6:`#e0c4f4`,purple7:`#d1afec`,purple8:`#be93e4`,purple9:`#8e4ec6`,purple10:`#8347b9`,purple11:`#8145b5`,purple12:`#402060`},violet={violet1:`#fdfcfe`,violet2:`#faf8ff`,violet3:`#f4f0fe`,violet4:`#ebe4ff`,violet5:`#e1d9ff`,violet6:`#d4cafe`,violet7:`#c2b5f5`,violet8:`#aa99ec`,violet9:`#6e56cf`,violet10:`#654dc4`,violet11:`#6550b9`,violet12:`#2f265f`},indigo={indigo1:`#fdfdfe`,indigo2:`#f7f9ff`,indigo3:`#edf2fe`,indigo4:`#e1e9ff`,indigo5:`#d2deff`,indigo6:`#c1d0ff`,indigo7:`#abbdf9`,indigo8:`#8da4ef`,indigo9:`#3e63dd`,indigo10:`#3358d4`,indigo11:`#3a5bc7`,indigo12:`#1f2d5c`},blue={blue1:`#fbfdff`,blue2:`#f4faff`,blue3:`#e6f4fe`,blue4:`#d5efff`,blue5:`#c2e5ff`,blue6:`#acd8fc`,blue7:`#8ec8f6`,blue8:`#5eb1ef`,blue9:`#0090ff`,blue10:`#0588f0`,blue11:`#0d74ce`,blue12:`#113264`},teal={teal1:`#fafefd`,teal2:`#f3fbf9`,teal3:`#e0f8f3`,teal4:`#ccf3ea`,teal5:`#b8eae0`,teal6:`#a1ded2`,teal7:`#83cdc1`,teal8:`#53b9ab`,teal9:`#12a594`,teal10:`#0d9b8a`,teal11:`#008573`,teal12:`#0d3d38`},grass={grass1:`#fbfefb`,grass2:`#f5fbf5`,grass3:`#e9f6e9`,grass4:`#daf1db`,grass5:`#c9e8ca`,grass6:`#b2ddb5`,grass7:`#94ce9a`,grass8:`#65ba74`,grass9:`#46a758`,grass10:`#3e9b4f`,grass11:`#2a7e3b`,grass12:`#203c25`},lime={lime1:`#fcfdfa`,lime2:`#f8faf3`,lime3:`#eef6d6`,lime4:`#e2f0bd`,lime5:`#d3e7a6`,lime6:`#c2da91`,lime7:`#abc978`,lime8:`#8db654`,lime9:`#bdee63`,lime10:`#b0e64c`,lime11:`#5c7c2f`,lime12:`#37401c`},yellow={yellow1:`#fdfdf9`,yellow2:`#fefce9`,yellow3:`#fffab8`,yellow4:`#fff394`,yellow5:`#ffe770`,yellow6:`#f3d768`,yellow7:`#e4c767`,yellow8:`#d5ae39`,yellow9:`#ffe629`,yellow10:`#ffdc00`,yellow11:`#9e6c00`,yellow12:`#473b1f`},amber={amber1:`#fefdfb`,amber2:`#fefbe9`,amber3:`#fff7c2`,amber4:`#ffee9c`,amber5:`#fbe577`,amber6:`#f3d673`,amber7:`#e9c162`,amber8:`#e2a336`,amber9:`#ffc53d`,amber10:`#ffba18`,amber11:`#ab6400`,amber12:`#4f3422`},orange={orange1:`#fefcfb`,orange2:`#fff7ed`,orange3:`#ffefd6`,orange4:`#ffdfb5`,orange5:`#ffd19a`,orange6:`#ffc182`,orange7:`#f5ae73`,orange8:`#ec9455`,orange9:`#f76b15`,orange10:`#ef5f00`,orange11:`#cc4e00`,orange12:`#582d1d`};export{indigo as a,pink as c,ruby as d,teal as f,yellow as h,grass as i,purple as l,violet as m,blue as n,lime as o,tomato as p,crimson as r,orange as s,amber as t,red as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const env=typeof self==`object`?self:globalThis,deserializer=(t,n)=>{let r=(e,n)=>(t.set(n,e),e),i=a=>{if(t.has(a))return t.get(a);let[o,s]=n[a];switch(o){case 0:case-1:return r(s,a);case 1:{let e=r([],a);for(let t of s)e.push(i(t));return e}case 2:{let e=r({},a);for(let[t,n]of s)e[i(t)]=i(n);return e}case 3:return r(new Date(s),a);case 4:{let{source:e,flags:t}=s;return r(new RegExp(e,t),a)}case 5:{let e=r(new Map,a);for(let[t,n]of s)e.set(i(t),i(n));return e}case 6:{let e=r(new Set,a);for(let t of s)e.add(i(t));return e}case 7:{let{name:t,message:n}=s;return r(new env[t](n),a)}case 8:return r(BigInt(s),a);case`BigInt`:return r(Object(BigInt(s)),a);case`ArrayBuffer`:return r(new Uint8Array(s).buffer,s);case`DataView`:{let{buffer:e}=new Uint8Array(s);return r(new DataView(e),s)}}return r(new env[o](s),a)};return i},deserialize=e=>deserializer(new Map,e)(0),{toString}={},{keys}=Object,typeOf=e=>{let t=typeof e;if(t!==`object`||!e)return[0,t];let n=toString.call(e).slice(8,-1);switch(n){case`Array`:return[1,``];case`Object`:return[2,``];case`Date`:return[3,``];case`RegExp`:return[4,``];case`Map`:return[5,``];case`Set`:return[6,``];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:n.includes(`Error`)?[7,n]:[2,n]},shouldSkip=([e,t])=>e===0&&(t===`function`||t===`symbol`),serializer=(e,t,n,r)=>{let s=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},c=r=>{if(n.has(r))return n.get(r);let[l,u]=typeOf(r);switch(l){case 0:{let t=r;switch(u){case`bigint`:l=8,t=r.toString();break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize `+u);t=null;break;case`undefined`:return s([-1],r)}return s([l,t],r)}case 1:{if(u){let e=r;return u===`DataView`?e=new Uint8Array(r.buffer):u===`ArrayBuffer`&&(e=new Uint8Array(r)),s([u,[...e]],r)}let e=[],t=s([l,e],r);for(let t of r)e.push(c(t));return t}case 2:{if(u)switch(u){case`BigInt`:return s([u,r.toString()],r);case`Boolean`:case`Number`:case`String`:return s([u,r.valueOf()],r)}if(t&&`toJSON`in r)return c(r.toJSON());let n=[],d=s([l,n],r);for(let t of keys(r))(e||!shouldSkip(typeOf(r[t])))&&n.push([c(t),c(r[t])]);return d}case 3:return s([l,r.toISOString()],r);case 4:{let{source:e,flags:t}=r;return s([l,{source:e,flags:t}],r)}case 5:{let t=[],n=s([l,t],r);for(let[n,i]of r)(e||!(shouldSkip(typeOf(n))||shouldSkip(typeOf(i))))&&t.push([c(n),c(i)]);return n}case 6:{let t=[],n=s([l,t],r);for(let n of r)(e||!shouldSkip(typeOf(n)))&&t.push(c(n));return n}}let{message:d}=r;return s([l,{name:u,message:d}],r)};return c},serialize=(e,{json:t,lossy:n}={})=>{let r=[];return serializer(!(t||n),!!t,new Map,r)(e),r};var esm_default=typeof structuredClone==`function`?(e,t)=>t&&(`json`in t||`lossy`in t)?deserialize(serialize(e,t)):structuredClone(e):(e,t)=>deserialize(serialize(e,t));export{esm_default as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function bail(e){if(e)throw e}export{bail as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function ccount(e,t){let n=String(e);if(typeof t!=`string`)throw TypeError(`Expected character`);let r=0,i=n.indexOf(t);for(;i!==-1;)r++,i=n.indexOf(t,i+t.length);return r}export{ccount as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const characterEntitiesHtml4={nbsp:`\xA0`,iexcl:`¡`,cent:`¢`,pound:`£`,curren:`¤`,yen:`¥`,brvbar:`¦`,sect:`§`,uml:`¨`,copy:`©`,ordf:`ª`,laquo:`«`,not:`¬`,shy:``,reg:`®`,macr:`¯`,deg:`°`,plusmn:`±`,sup2:`²`,sup3:`³`,acute:`´`,micro:`µ`,para:`¶`,middot:`·`,cedil:`¸`,sup1:`¹`,ordm:`º`,raquo:`»`,frac14:`¼`,frac12:`½`,frac34:`¾`,iquest:`¿`,Agrave:`À`,Aacute:`Á`,Acirc:`Â`,Atilde:`Ã`,Auml:`Ä`,Aring:`Å`,AElig:`Æ`,Ccedil:`Ç`,Egrave:`È`,Eacute:`É`,Ecirc:`Ê`,Euml:`Ë`,Igrave:`Ì`,Iacute:`Í`,Icirc:`Î`,Iuml:`Ï`,ETH:`Ð`,Ntilde:`Ñ`,Ograve:`Ò`,Oacute:`Ó`,Ocirc:`Ô`,Otilde:`Õ`,Ouml:`Ö`,times:`×`,Oslash:`Ø`,Ugrave:`Ù`,Uacute:`Ú`,Ucirc:`Û`,Uuml:`Ü`,Yacute:`Ý`,THORN:`Þ`,szlig:`ß`,agrave:`à`,aacute:`á`,acirc:`â`,atilde:`ã`,auml:`ä`,aring:`å`,aelig:`æ`,ccedil:`ç`,egrave:`è`,eacute:`é`,ecirc:`ê`,euml:`ë`,igrave:`ì`,iacute:`í`,icirc:`î`,iuml:`ï`,eth:`ð`,ntilde:`ñ`,ograve:`ò`,oacute:`ó`,ocirc:`ô`,otilde:`õ`,ouml:`ö`,divide:`÷`,oslash:`ø`,ugrave:`ù`,uacute:`ú`,ucirc:`û`,uuml:`ü`,yacute:`ý`,thorn:`þ`,yuml:`ÿ`,fnof:`ƒ`,Alpha:`Α`,Beta:`Β`,Gamma:`Γ`,Delta:`Δ`,Epsilon:`Ε`,Zeta:`Ζ`,Eta:`Η`,Theta:`Θ`,Iota:`Ι`,Kappa:`Κ`,Lambda:`Λ`,Mu:`Μ`,Nu:`Ν`,Xi:`Ξ`,Omicron:`Ο`,Pi:`Π`,Rho:`Ρ`,Sigma:`Σ`,Tau:`Τ`,Upsilon:`Υ`,Phi:`Φ`,Chi:`Χ`,Psi:`Ψ`,Omega:`Ω`,alpha:`α`,beta:`β`,gamma:`γ`,delta:`δ`,epsilon:`ε`,zeta:`ζ`,eta:`η`,theta:`θ`,iota:`ι`,kappa:`κ`,lambda:`λ`,mu:`μ`,nu:`ν`,xi:`ξ`,omicron:`ο`,pi:`π`,rho:`ρ`,sigmaf:`ς`,sigma:`σ`,tau:`τ`,upsilon:`υ`,phi:`φ`,chi:`χ`,psi:`ψ`,omega:`ω`,thetasym:`ϑ`,upsih:`ϒ`,piv:`ϖ`,bull:`•`,hellip:`…`,prime:`′`,Prime:`″`,oline:`‾`,frasl:`⁄`,weierp:`℘`,image:`ℑ`,real:`ℜ`,trade:`™`,alefsym:`ℵ`,larr:`←`,uarr:`↑`,rarr:`→`,darr:`↓`,harr:`↔`,crarr:`↵`,lArr:`⇐`,uArr:`⇑`,rArr:`⇒`,dArr:`⇓`,hArr:`⇔`,forall:`∀`,part:`∂`,exist:`∃`,empty:`∅`,nabla:`∇`,isin:`∈`,notin:`∉`,ni:`∋`,prod:`∏`,sum:`∑`,minus:`−`,lowast:`∗`,radic:`√`,prop:`∝`,infin:`∞`,ang:`∠`,and:`∧`,or:`∨`,cap:`∩`,cup:`∪`,int:`∫`,there4:`∴`,sim:`∼`,cong:`≅`,asymp:`≈`,ne:`≠`,equiv:`≡`,le:`≤`,ge:`≥`,sub:`⊂`,sup:`⊃`,nsub:`⊄`,sube:`⊆`,supe:`⊇`,oplus:`⊕`,otimes:`⊗`,perp:`⊥`,sdot:`⋅`,lceil:`⌈`,rceil:`⌉`,lfloor:`⌊`,rfloor:`⌋`,lang:`〈`,rang:`〉`,loz:`◊`,spades:`♠`,clubs:`♣`,hearts:`♥`,diams:`♦`,quot:`"`,amp:`&`,lt:`<`,gt:`>`,OElig:`Œ`,oelig:`œ`,Scaron:`Š`,scaron:`š`,Yuml:`Ÿ`,circ:`ˆ`,tilde:`˜`,ensp:` `,emsp:` `,thinsp:` `,zwnj:``,zwj:``,lrm:``,rlm:``,ndash:`–`,mdash:`—`,lsquo:`‘`,rsquo:`’`,sbquo:`‚`,ldquo:`“`,rdquo:`”`,bdquo:`„`,dagger:`†`,Dagger:`‡`,permil:`‰`,lsaquo:`‹`,rsaquo:`›`,euro:`€`};export{characterEntitiesHtml4 as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const characterEntitiesLegacy=`AElig.AMP.Aacute.Acirc.Agrave.Aring.Atilde.Auml.COPY.Ccedil.ETH.Eacute.Ecirc.Egrave.Euml.GT.Iacute.Icirc.Igrave.Iuml.LT.Ntilde.Oacute.Ocirc.Ograve.Oslash.Otilde.Ouml.QUOT.REG.THORN.Uacute.Ucirc.Ugrave.Uuml.Yacute.aacute.acirc.acute.aelig.agrave.amp.aring.atilde.auml.brvbar.ccedil.cedil.cent.copy.curren.deg.divide.eacute.ecirc.egrave.eth.euml.frac12.frac14.frac34.gt.iacute.icirc.iexcl.igrave.iquest.iuml.laquo.lt.macr.micro.middot.nbsp.not.ntilde.oacute.ocirc.ograve.ordf.ordm.oslash.otilde.ouml.para.plusmn.pound.quot.raquo.reg.sect.shy.sup1.sup2.sup3.szlig.thorn.times.uacute.ucirc.ugrave.uml.uuml.yacute.yen.yuml`.split(`.`);export{characterEntitiesLegacy as t};
|