@likec4/diagram 1.39.5 → 1.41.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.
Files changed (140) hide show
  1. package/bundle/{chunk-CW_KClZe.js → chunk-FGcODVxo.js} +1059 -1023
  2. package/bundle/custom.js +61 -60
  3. package/bundle/index.js +2932 -764
  4. package/dist/LikeC4Diagram.d.ts +1 -1
  5. package/dist/LikeC4Diagram.js +7 -4
  6. package/dist/LikeC4Diagram.props.d.ts +6 -1
  7. package/dist/base/const.d.ts +9 -0
  8. package/dist/base/const.js +10 -1
  9. package/dist/base/index.d.ts +1 -0
  10. package/dist/base/primitives/MarkdownBlock.js +2 -0
  11. package/dist/base/primitives/edge/EdgeLabel.js +2 -1
  12. package/dist/base/primitives/edge/EdgeLabelContainer.js +10 -4
  13. package/dist/base/primitives/edge/EdgePath.js +17 -8
  14. package/dist/base/primitives/edge/edge.css.d.ts +0 -1
  15. package/dist/base/primitives/edge/edge.css.js +6 -14
  16. package/dist/base/primitives/element/ElementActionButtons.js +1 -3
  17. package/dist/base/primitives/element/ElementNodeContainer.d.ts +0 -6
  18. package/dist/base/primitives/element/ElementNodeContainer.js +3 -26
  19. package/dist/base/primitives/element/ElementTitle.js +2 -2
  20. package/dist/base/types.d.ts +3 -3
  21. package/dist/bundle/LikeC4View.js +4 -12
  22. package/dist/bundle/LikeC4View.props.d.ts +12 -3
  23. package/dist/bundle/custom.js +1 -1
  24. package/dist/components/Link.js +28 -20
  25. package/dist/custom/customNodes.d.ts +6 -0
  26. package/dist/custom/customNodes.js +2 -1
  27. package/dist/custom/index.js +1 -1
  28. package/dist/hooks/useDiagram.d.ts +5 -1
  29. package/dist/hooks/useDiagram.js +3 -0
  30. package/dist/hooks/useXYFlow.d.ts +4 -439
  31. package/dist/likec4diagram/DiagramUI.js +1 -1
  32. package/dist/likec4diagram/DiagramXYFlow.js +8 -4
  33. package/dist/likec4diagram/convert-to-xyflow.d.ts +14 -0
  34. package/dist/likec4diagram/convert-to-xyflow.js +29 -0
  35. package/dist/likec4diagram/custom/edges/RelationshipEdge.d.ts +4 -4
  36. package/dist/likec4diagram/custom/edges/RelationshipEdge.js +0 -1
  37. package/dist/likec4diagram/custom/edges/SequenceStepEdge.d.ts +3 -0
  38. package/dist/likec4diagram/custom/edges/SequenceStepEdge.js +71 -0
  39. package/dist/likec4diagram/custom/index.js +7 -2
  40. package/dist/likec4diagram/custom/nodes/ElementActions.d.ts +2 -1
  41. package/dist/likec4diagram/custom/nodes/SequenceActorNode.d.ts +4 -0
  42. package/dist/likec4diagram/custom/nodes/SequenceActorNode.js +157 -0
  43. package/dist/likec4diagram/custom/nodes/index.d.ts +1 -0
  44. package/dist/likec4diagram/custom/nodes/nodes.d.ts +1 -2
  45. package/dist/likec4diagram/relationship-popover/RelationshipPopover.js +31 -27
  46. package/dist/likec4diagram/types.d.ts +41 -7
  47. package/dist/likec4diagram/xyflow-diagram/diagram-view.d.ts +11 -0
  48. package/dist/likec4diagram/{useViewToNodesEdges.js → xyflow-diagram/diagram-view.js} +4 -13
  49. package/dist/likec4diagram/xyflow-sequence/_types.d.ts +41 -0
  50. package/dist/likec4diagram/xyflow-sequence/const.d.ts +17 -0
  51. package/dist/likec4diagram/xyflow-sequence/const.js +16 -0
  52. package/dist/likec4diagram/xyflow-sequence/layouter.d.ts +46 -0
  53. package/dist/likec4diagram/xyflow-sequence/layouter.js +408 -0
  54. package/dist/likec4diagram/xyflow-sequence/sequence-view.d.ts +7 -0
  55. package/dist/likec4diagram/xyflow-sequence/sequence-view.js +273 -0
  56. package/dist/likec4diagram/xyflow-sequence/utils.d.ts +14 -0
  57. package/dist/likec4diagram/xyflow-sequence/utils.js +92 -0
  58. package/dist/navigationpanel/NavigationPanelControls.js +2 -2
  59. package/dist/navigationpanel/controls/ViewDetailsCard.js +27 -12
  60. package/dist/navigationpanel/dropdown/ProjectsMenu.js +53 -44
  61. package/dist/navigationpanel/walkthrough/ActiveWalkthroughControls.d.ts +1 -2
  62. package/dist/navigationpanel/walkthrough/ActiveWalkthroughControls.js +10 -41
  63. package/dist/navigationpanel/walkthrough/DynamicViewControls.d.ts +292 -0
  64. package/dist/navigationpanel/walkthrough/DynamicViewControls.js +119 -0
  65. package/dist/navigationpanel/walkthrough/index.d.ts +2 -1
  66. package/dist/overlays/element-details/ElementDetailsCard.css.js +7 -1
  67. package/dist/overlays/element-details/ElementDetailsCard.js +17 -19
  68. package/dist/overlays/relationship-details/RelationshipDetails.js +4 -1
  69. package/dist/overlays/relationship-details/layout.d.ts +3 -2
  70. package/dist/overlays/relationship-details/layout.js +1 -2
  71. package/dist/overlays/relationships-browser/RelationshipsBrowser.js +2 -1
  72. package/dist/overlays/relationships-browser/layout.js +1 -1
  73. package/dist/search/components/ElementsColumn.js +1 -1
  74. package/dist/state/DiagramActorProvider.d.ts +3 -2
  75. package/dist/state/DiagramActorProvider.js +40 -41
  76. package/dist/state/assign.js +11 -4
  77. package/dist/state/diagram-machine.d.ts +224 -194
  78. package/dist/state/diagram-machine.js +170 -63
  79. package/dist/state/utils.d.ts +7 -1
  80. package/dist/state/utils.js +67 -7
  81. package/dist/styles-min.css +1 -1
  82. package/dist/styles.css +1 -1
  83. package/dist/styles.css2.js +1 -1
  84. package/package.json +8 -7
  85. package/panda.buildinfo.json +45 -24
  86. package/src/LikeC4Diagram.props.ts +14 -1
  87. package/src/LikeC4Diagram.tsx +7 -4
  88. package/src/base/const.ts +12 -0
  89. package/src/base/index.ts +2 -0
  90. package/src/base/primitives/MarkdownBlock.tsx +2 -0
  91. package/src/base/primitives/edge/EdgeLabel.tsx +23 -19
  92. package/src/base/primitives/edge/EdgeLabelContainer.tsx +12 -7
  93. package/src/base/primitives/edge/EdgePath.tsx +25 -14
  94. package/src/base/primitives/edge/edge.css.ts +5 -14
  95. package/src/base/primitives/element/ElementActionButtons.tsx +1 -3
  96. package/src/base/primitives/element/ElementNodeContainer.tsx +3 -30
  97. package/src/base/primitives/element/ElementTitle.tsx +2 -3
  98. package/src/base/types.ts +7 -5
  99. package/src/bundle/LikeC4View.props.ts +14 -3
  100. package/src/bundle/LikeC4View.tsx +4 -14
  101. package/src/bundle/ReactLikeC4.tsx +1 -2
  102. package/src/components/Link.tsx +21 -18
  103. package/src/custom/customNodes.ts +7 -0
  104. package/src/hooks/useDiagram.ts +10 -0
  105. package/src/likec4diagram/DiagramUI.tsx +1 -1
  106. package/src/likec4diagram/DiagramXYFlow.tsx +10 -5
  107. package/src/likec4diagram/convert-to-xyflow.ts +45 -0
  108. package/src/likec4diagram/custom/edges/RelationshipEdge.tsx +0 -1
  109. package/src/likec4diagram/custom/edges/SequenceStepEdge.tsx +65 -0
  110. package/src/likec4diagram/custom/index.ts +7 -1
  111. package/src/likec4diagram/custom/nodes/ElementActions.tsx +4 -2
  112. package/src/likec4diagram/custom/nodes/SequenceActorNode.tsx +175 -0
  113. package/src/likec4diagram/custom/nodes/index.ts +1 -0
  114. package/src/likec4diagram/custom/nodes/nodes.tsx +1 -1
  115. package/src/likec4diagram/relationship-popover/RelationshipPopover.tsx +36 -30
  116. package/src/likec4diagram/types.ts +96 -13
  117. package/src/likec4diagram/{useViewToNodesEdges.ts → xyflow-diagram/diagram-view.ts} +7 -28
  118. package/src/likec4diagram/xyflow-sequence/_types.ts +45 -0
  119. package/src/likec4diagram/xyflow-sequence/const.ts +37 -0
  120. package/src/likec4diagram/xyflow-sequence/layouter.ts +567 -0
  121. package/src/likec4diagram/xyflow-sequence/sequence-view.ts +337 -0
  122. package/src/likec4diagram/xyflow-sequence/utils.ts +112 -0
  123. package/src/navigationpanel/NavigationPanelControls.tsx +2 -2
  124. package/src/navigationpanel/controls/ViewDetailsCard.tsx +29 -12
  125. package/src/navigationpanel/dropdown/ProjectsMenu.tsx +5 -1
  126. package/src/navigationpanel/walkthrough/ActiveWalkthroughControls.tsx +5 -40
  127. package/src/navigationpanel/walkthrough/DynamicViewControls.tsx +125 -0
  128. package/src/navigationpanel/walkthrough/index.tsx +2 -1
  129. package/src/overlays/element-details/ElementDetailsCard.css.ts +7 -1
  130. package/src/overlays/element-details/ElementDetailsCard.tsx +24 -25
  131. package/src/overlays/relationship-details/RelationshipDetails.tsx +5 -2
  132. package/src/overlays/relationship-details/layout.ts +4 -3
  133. package/src/overlays/relationships-browser/RelationshipsBrowser.tsx +2 -1
  134. package/src/overlays/relationships-browser/layout.ts +1 -1
  135. package/src/search/components/ElementsColumn.tsx +1 -1
  136. package/src/state/DiagramActorProvider.tsx +46 -51
  137. package/src/state/assign.ts +18 -5
  138. package/src/state/diagram-machine.ts +207 -75
  139. package/src/state/utils.ts +81 -7
  140. package/dist/likec4diagram/useViewToNodesEdges.d.ts +0 -12
@@ -1,11 +1,11 @@
1
1
  import * as React from "react";
2
2
  import React__default, { useState, Fragment, createContext, useContext, useRef, useEffect, useMemo, useCallback, useLayoutEffect, useId as useId$2, forwardRef, cloneElement, Children, createElement, useInsertionEffect as useInsertionEffect$1, memo as memo$1, createRef } from "react";
3
3
  import { jsx, jsxs, Fragment as Fragment$1 } from "react/jsx-runtime";
4
+ import { BBox, ensureSizes } from "@likec4/core/types";
5
+ import { invariant, nonNullable } from "@likec4/core/utils";
4
6
  import * as ReactDOM from "react-dom";
5
7
  import ReactDOM__default, { createPortal } from "react-dom";
6
8
  import { isTagColorSpecified, nonexhaustive, invariant as invariant$1, defaultTheme, ElementShapes } from "@likec4/core";
7
- import { DefaultShapeSize, DefaultTextSize, DefaultPaddingSize } from "@likec4/core/types";
8
- import { invariant } from "@likec4/core/utils";
9
9
  function isObject$1(value) {
10
10
  return typeof value == "object" && value != null && !Array.isArray(value);
11
11
  }
@@ -203,7 +203,7 @@ function sortConditions(paths) {
203
203
  return aa && !bb ? 1 : !aa && bb ? -1 : 0;
204
204
  });
205
205
  }
206
- const utilities = "aspectRatio:asp,boxDecorationBreak:bx-db,zIndex:z,boxSizing:bx-s,objectPosition:obj-p,objectFit:obj-f,overscrollBehavior:ovs-b,overscrollBehaviorX:ovs-bx,overscrollBehaviorY:ovs-by,position:pos/1,top:top,left:left,inset:inset,insetInline:inset-x/insetX,insetBlock:inset-y/insetY,insetBlockEnd:inset-be,insetBlockStart:inset-bs,insetInlineEnd:inset-e/insetEnd/end,insetInlineStart:inset-s/insetStart/start,right:right,bottom:bottom,float:float,visibility:vis,display:d,hideFrom:hide,hideBelow:show,flexBasis:flex-b,flex:flex,flexDirection:flex-d/flexDir,flexGrow:flex-g,flexShrink:flex-sh,gridTemplateColumns:grid-tc,gridTemplateRows:grid-tr,gridColumn:grid-c,gridRow:grid-r,gridColumnStart:grid-cs,gridColumnEnd:grid-ce,gridAutoFlow:grid-af,gridAutoColumns:grid-ac,gridAutoRows:grid-ar,gap:gap,gridGap:grid-g,gridRowGap:grid-rg,gridColumnGap:grid-cg,rowGap:rg,columnGap:cg,justifyContent:jc,alignContent:ac,alignItems:ai,alignSelf:as,padding:p/1,paddingLeft:pl/1,paddingRight:pr/1,paddingTop:pt/1,paddingBottom:pb/1,paddingBlock:py/1/paddingY,paddingBlockEnd:pbe,paddingBlockStart:pbs,paddingInline:px/paddingX/1,paddingInlineEnd:pe/1/paddingEnd,paddingInlineStart:ps/1/paddingStart,marginLeft:ml/1,marginRight:mr/1,marginTop:mt/1,marginBottom:mb/1,margin:m/1,marginBlock:my/1/marginY,marginBlockEnd:mbe,marginBlockStart:mbs,marginInline:mx/1/marginX,marginInlineEnd:me/1/marginEnd,marginInlineStart:ms/1/marginStart,spaceX:sx,spaceY:sy,outlineWidth:ring-w/ringWidth,outlineColor:ring-c/ringColor,outline:ring/1,outlineOffset:ring-o/ringOffset,divideX:dvd-x,divideY:dvd-y,divideColor:dvd-c,divideStyle:dvd-s,width:w/1,inlineSize:w-is,minWidth:min-w/minW,minInlineSize:min-w-is,maxWidth:max-w/maxW,maxInlineSize:max-w-is,height:h/1,blockSize:h-bs,minHeight:min-h/minH,minBlockSize:min-h-bs,maxHeight:max-h/maxH,maxBlockSize:max-b,boxSize:size,color:c,fontFamily:ff,fontSize:fs,fontSizeAdjust:fs-a,fontPalette:fp,fontKerning:fk,fontFeatureSettings:ff-s,fontWeight:fw,fontSmoothing:fsmt,fontVariant:fv,fontVariantAlternates:fv-alt,fontVariantCaps:fv-caps,fontVariationSettings:fv-s,fontVariantNumeric:fv-num,letterSpacing:ls,lineHeight:lh,textAlign:ta,textDecoration:td,textDecorationColor:td-c,textEmphasisColor:te-c,textDecorationStyle:td-s,textDecorationThickness:td-t,textUnderlineOffset:tu-o,textTransform:tt,textIndent:ti,textShadow:tsh,textShadowColor:tsh-c/textShadowColor,textOverflow:tov,verticalAlign:va,wordBreak:wb,textWrap:tw,truncate:trunc,lineClamp:lc,listStyleType:li-t,listStylePosition:li-pos,listStyleImage:li-img,listStyle:li-s,backgroundPosition:bg-p/bgPosition,backgroundPositionX:bg-p-x/bgPositionX,backgroundPositionY:bg-p-y/bgPositionY,backgroundAttachment:bg-a/bgAttachment,backgroundClip:bg-cp/bgClip,background:bg/1,backgroundColor:bg-c/bgColor,backgroundOrigin:bg-o/bgOrigin,backgroundImage:bg-i/bgImage,backgroundRepeat:bg-r/bgRepeat,backgroundBlendMode:bg-bm/bgBlendMode,backgroundSize:bg-s/bgSize,backgroundGradient:bg-grad/bgGradient,backgroundLinear:bg-linear/bgLinear,backgroundRadial:bg-radial/bgRadial,backgroundConic:bg-conic/bgConic,textGradient:txt-grad,gradientFromPosition:grad-from-pos,gradientToPosition:grad-to-pos,gradientFrom:grad-from,gradientTo:grad-to,gradientVia:grad-via,gradientViaPosition:grad-via-pos,borderRadius:bdr/rounded,borderTopLeftRadius:bdr-tl/roundedTopLeft,borderTopRightRadius:bdr-tr/roundedTopRight,borderBottomRightRadius:bdr-br/roundedBottomRight,borderBottomLeftRadius:bdr-bl/roundedBottomLeft,borderTopRadius:bdr-t/roundedTop,borderRightRadius:bdr-r/roundedRight,borderBottomRadius:bdr-b/roundedBottom,borderLeftRadius:bdr-l/roundedLeft,borderStartStartRadius:bdr-ss/roundedStartStart,borderStartEndRadius:bdr-se/roundedStartEnd,borderStartRadius:bdr-s/roundedStart,borderEndStartRadius:bdr-es/roundedEndStart,borderEndEndRadius:bdr-ee/roundedEndEnd,borderEndRadius:bdr-e/roundedEnd,border:bd,borderWidth:bd-w,borderTopWidth:bd-t-w,borderLeftWidth:bd-l-w,borderRightWidth:bd-r-w,borderBottomWidth:bd-b-w,borderBlockStartWidth:bd-bs-w,borderBlockEndWidth:bd-be-w,borderColor:bd-c,borderInline:bd-x/borderX,borderInlineWidth:bd-x-w/borderXWidth,borderInlineColor:bd-x-c/borderXColor,borderBlock:bd-y/borderY,borderBlockWidth:bd-y-w/borderYWidth,borderBlockColor:bd-y-c/borderYColor,borderLeft:bd-l,borderLeftColor:bd-l-c,borderInlineStart:bd-s/borderStart,borderInlineStartWidth:bd-s-w/borderStartWidth,borderInlineStartColor:bd-s-c/borderStartColor,borderRight:bd-r,borderRightColor:bd-r-c,borderInlineEnd:bd-e/borderEnd,borderInlineEndWidth:bd-e-w/borderEndWidth,borderInlineEndColor:bd-e-c/borderEndColor,borderTop:bd-t,borderTopColor:bd-t-c,borderBottom:bd-b,borderBottomColor:bd-b-c,borderBlockEnd:bd-be,borderBlockEndColor:bd-be-c,borderBlockStart:bd-bs,borderBlockStartColor:bd-bs-c,opacity:op,boxShadow:bx-sh/shadow,boxShadowColor:bx-sh-c/shadowColor,mixBlendMode:mix-bm,filter:filter,brightness:brightness,contrast:contrast,grayscale:grayscale,hueRotate:hue-rotate,invert:invert,saturate:saturate,sepia:sepia,dropShadow:drop-shadow,blur:blur,backdropFilter:bkdp,backdropBlur:bkdp-blur,backdropBrightness:bkdp-brightness,backdropContrast:bkdp-contrast,backdropGrayscale:bkdp-grayscale,backdropHueRotate:bkdp-hue-rotate,backdropInvert:bkdp-invert,backdropOpacity:bkdp-opacity,backdropSaturate:bkdp-saturate,backdropSepia:bkdp-sepia,borderCollapse:bd-cl,borderSpacing:bd-sp,borderSpacingX:bd-sx,borderSpacingY:bd-sy,tableLayout:tbl,transitionTimingFunction:trs-tmf,transitionDelay:trs-dly,transitionDuration:trs-dur,transitionProperty:trs-prop,transition:transition,animation:anim,animationName:anim-n,animationTimingFunction:anim-tmf,animationDuration:anim-dur,animationDelay:anim-dly,animationPlayState:anim-ps,animationComposition:anim-comp,animationFillMode:anim-fm,animationDirection:anim-dir,animationIterationCount:anim-ic,animationRange:anim-r,animationState:anim-s,animationRangeStart:anim-rs,animationRangeEnd:anim-re,animationTimeline:anim-tl,transformOrigin:trf-o,transformBox:trf-b,transformStyle:trf-s,transform:trf,rotate:rotate,rotateX:rotate-x,rotateY:rotate-y,rotateZ:rotate-z,scale:scale,scaleX:scale-x,scaleY:scale-y,translate:translate,translateX:translate-x/x,translateY:translate-y/y,translateZ:translate-z/z,accentColor:ac-c,caretColor:ca-c,scrollBehavior:scr-bhv,scrollbar:scr-bar,scrollbarColor:scr-bar-c,scrollbarGutter:scr-bar-g,scrollbarWidth:scr-bar-w,scrollMargin:scr-m,scrollMarginLeft:scr-ml,scrollMarginRight:scr-mr,scrollMarginTop:scr-mt,scrollMarginBottom:scr-mb,scrollMarginBlock:scr-my/scrollMarginY,scrollMarginBlockEnd:scr-mbe,scrollMarginBlockStart:scr-mbt,scrollMarginInline:scr-mx/scrollMarginX,scrollMarginInlineEnd:scr-me,scrollMarginInlineStart:scr-ms,scrollPadding:scr-p,scrollPaddingBlock:scr-py/scrollPaddingY,scrollPaddingBlockStart:scr-pbs,scrollPaddingBlockEnd:scr-pbe,scrollPaddingInline:scr-px/scrollPaddingX,scrollPaddingInlineEnd:scr-pe,scrollPaddingInlineStart:scr-ps,scrollPaddingLeft:scr-pl,scrollPaddingRight:scr-pr,scrollPaddingTop:scr-pt,scrollPaddingBottom:scr-pb,scrollSnapAlign:scr-sa,scrollSnapStop:scrs-s,scrollSnapType:scrs-t,scrollSnapStrictness:scrs-strt,scrollSnapMargin:scrs-m,scrollSnapMarginTop:scrs-mt,scrollSnapMarginBottom:scrs-mb,scrollSnapMarginLeft:scrs-ml,scrollSnapMarginRight:scrs-mr,scrollSnapCoordinate:scrs-c,scrollSnapDestination:scrs-d,scrollSnapPointsX:scrs-px,scrollSnapPointsY:scrs-py,scrollSnapTypeX:scrs-tx,scrollSnapTypeY:scrs-ty,scrollTimeline:scrtl,scrollTimelineAxis:scrtl-a,scrollTimelineName:scrtl-n,touchAction:tch-a,userSelect:us,overflow:ov,overflowWrap:ov-wrap,overflowX:ov-x,overflowY:ov-y,overflowAnchor:ov-a,overflowBlock:ov-b,overflowInline:ov-i,overflowClipBox:ovcp-bx,overflowClipMargin:ovcp-m,overscrollBehaviorBlock:ovs-bb,overscrollBehaviorInline:ovs-bi,fill:fill,stroke:stk,strokeWidth:stk-w,strokeDasharray:stk-dsh,strokeDashoffset:stk-do,strokeLinecap:stk-lc,strokeLinejoin:stk-lj,strokeMiterlimit:stk-ml,strokeOpacity:stk-op,srOnly:sr,debug:debug,appearance:ap,backfaceVisibility:bfv,clipPath:cp-path,hyphens:hy,mask:msk,maskImage:msk-i,maskSize:msk-s,textSizeAdjust:txt-adj,container:cq,containerName:cq-n,containerType:cq-t,cursor:cursor,textStyle:textStyle,layerStyle:layerStyle,animationStyle:animationStyle", classNameByProp = /* @__PURE__ */ new Map(), shorthands = /* @__PURE__ */ new Map();
206
+ const utilities = "aspectRatio:asp,boxDecorationBreak:bx-db,zIndex:z,boxSizing:bx-s,objectPosition:obj-p,objectFit:obj-f,overscrollBehavior:ovs-b,overscrollBehaviorX:ovs-bx,overscrollBehaviorY:ovs-by,position:pos/1,top:top,left:left,inset:inset,insetInline:inset-x/insetX,insetBlock:inset-y/insetY,insetBlockEnd:inset-be,insetBlockStart:inset-bs,insetInlineEnd:inset-e/insetEnd/end,insetInlineStart:inset-s/insetStart/start,right:right,bottom:bottom,float:float,visibility:vis,display:d,hideFrom:hide,hideBelow:show,flexBasis:flex-b,flex:flex,flexDirection:flex-d/flexDir,flexGrow:flex-g,flexShrink:flex-sh,gridTemplateColumns:grid-tc,gridTemplateRows:grid-tr,gridColumn:grid-c,gridRow:grid-r,gridColumnStart:grid-cs,gridColumnEnd:grid-ce,gridAutoFlow:grid-af,gridAutoColumns:grid-ac,gridAutoRows:grid-ar,gap:gap,gridGap:grid-g,gridRowGap:grid-rg,gridColumnGap:grid-cg,rowGap:rg,columnGap:cg,justifyContent:jc,alignContent:ac,alignItems:ai,alignSelf:as,padding:p/1,paddingLeft:pl/1,paddingRight:pr/1,paddingTop:pt/1,paddingBottom:pb/1,paddingBlock:py/1/paddingY,paddingBlockEnd:pbe,paddingBlockStart:pbs,paddingInline:px/paddingX/1,paddingInlineEnd:pe/1/paddingEnd,paddingInlineStart:ps/1/paddingStart,marginLeft:ml/1,marginRight:mr/1,marginTop:mt/1,marginBottom:mb/1,margin:m/1,marginBlock:my/1/marginY,marginBlockEnd:mbe,marginBlockStart:mbs,marginInline:mx/1/marginX,marginInlineEnd:me/1/marginEnd,marginInlineStart:ms/1/marginStart,spaceX:sx,spaceY:sy,outlineWidth:ring-w/ringWidth,outlineColor:ring-c/ringColor,outline:ring/1,outlineOffset:ring-o/ringOffset,focusRing:focus-ring,focusVisibleRing:focus-v-ring,focusRingColor:focus-ring-c,focusRingOffset:focus-ring-o,focusRingWidth:focus-ring-w,focusRingStyle:focus-ring-s,divideX:dvd-x,divideY:dvd-y,divideColor:dvd-c,divideStyle:dvd-s,width:w/1,inlineSize:w-is,minWidth:min-w/minW,minInlineSize:min-w-is,maxWidth:max-w/maxW,maxInlineSize:max-w-is,height:h/1,blockSize:h-bs,minHeight:min-h/minH,minBlockSize:min-h-bs,maxHeight:max-h/maxH,maxBlockSize:max-b,boxSize:size,color:c,fontFamily:ff,fontSize:fs,fontSizeAdjust:fs-a,fontPalette:fp,fontKerning:fk,fontFeatureSettings:ff-s,fontWeight:fw,fontSmoothing:fsmt,fontVariant:fv,fontVariantAlternates:fv-alt,fontVariantCaps:fv-caps,fontVariationSettings:fv-s,fontVariantNumeric:fv-num,letterSpacing:ls,lineHeight:lh,textAlign:ta,textDecoration:td,textDecorationColor:td-c,textEmphasisColor:te-c,textDecorationStyle:td-s,textDecorationThickness:td-t,textUnderlineOffset:tu-o,textTransform:tt,textIndent:ti,textShadow:tsh,textShadowColor:tsh-c/textShadowColor,textOverflow:tov,verticalAlign:va,wordBreak:wb,textWrap:tw,truncate:trunc,lineClamp:lc,listStyleType:li-t,listStylePosition:li-pos,listStyleImage:li-img,listStyle:li-s,backgroundPosition:bg-p/bgPosition,backgroundPositionX:bg-p-x/bgPositionX,backgroundPositionY:bg-p-y/bgPositionY,backgroundAttachment:bg-a/bgAttachment,backgroundClip:bg-cp/bgClip,background:bg/1,backgroundColor:bg-c/bgColor,backgroundOrigin:bg-o/bgOrigin,backgroundImage:bg-i/bgImage,backgroundRepeat:bg-r/bgRepeat,backgroundBlendMode:bg-bm/bgBlendMode,backgroundSize:bg-s/bgSize,backgroundGradient:bg-grad/bgGradient,backgroundLinear:bg-linear/bgLinear,backgroundRadial:bg-radial/bgRadial,backgroundConic:bg-conic/bgConic,textGradient:txt-grad,gradientFromPosition:grad-from-pos,gradientToPosition:grad-to-pos,gradientFrom:grad-from,gradientTo:grad-to,gradientVia:grad-via,gradientViaPosition:grad-via-pos,borderRadius:bdr/rounded,borderTopLeftRadius:bdr-tl/roundedTopLeft,borderTopRightRadius:bdr-tr/roundedTopRight,borderBottomRightRadius:bdr-br/roundedBottomRight,borderBottomLeftRadius:bdr-bl/roundedBottomLeft,borderTopRadius:bdr-t/roundedTop,borderRightRadius:bdr-r/roundedRight,borderBottomRadius:bdr-b/roundedBottom,borderLeftRadius:bdr-l/roundedLeft,borderStartStartRadius:bdr-ss/roundedStartStart,borderStartEndRadius:bdr-se/roundedStartEnd,borderStartRadius:bdr-s/roundedStart,borderEndStartRadius:bdr-es/roundedEndStart,borderEndEndRadius:bdr-ee/roundedEndEnd,borderEndRadius:bdr-e/roundedEnd,border:bd,borderWidth:bd-w,borderTopWidth:bd-t-w,borderLeftWidth:bd-l-w,borderRightWidth:bd-r-w,borderBottomWidth:bd-b-w,borderBlockStartWidth:bd-bs-w,borderBlockEndWidth:bd-be-w,borderColor:bd-c,borderInline:bd-x/borderX,borderInlineWidth:bd-x-w/borderXWidth,borderInlineColor:bd-x-c/borderXColor,borderBlock:bd-y/borderY,borderBlockWidth:bd-y-w/borderYWidth,borderBlockColor:bd-y-c/borderYColor,borderLeft:bd-l,borderLeftColor:bd-l-c,borderInlineStart:bd-s/borderStart,borderInlineStartWidth:bd-s-w/borderStartWidth,borderInlineStartColor:bd-s-c/borderStartColor,borderRight:bd-r,borderRightColor:bd-r-c,borderInlineEnd:bd-e/borderEnd,borderInlineEndWidth:bd-e-w/borderEndWidth,borderInlineEndColor:bd-e-c/borderEndColor,borderTop:bd-t,borderTopColor:bd-t-c,borderBottom:bd-b,borderBottomColor:bd-b-c,borderBlockEnd:bd-be,borderBlockEndColor:bd-be-c,borderBlockStart:bd-bs,borderBlockStartColor:bd-bs-c,opacity:op,boxShadow:bx-sh/shadow,boxShadowColor:bx-sh-c/shadowColor,mixBlendMode:mix-bm,filter:filter,brightness:brightness,contrast:contrast,grayscale:grayscale,hueRotate:hue-rotate,invert:invert,saturate:saturate,sepia:sepia,dropShadow:drop-shadow,blur:blur,backdropFilter:bkdp,backdropBlur:bkdp-blur,backdropBrightness:bkdp-brightness,backdropContrast:bkdp-contrast,backdropGrayscale:bkdp-grayscale,backdropHueRotate:bkdp-hue-rotate,backdropInvert:bkdp-invert,backdropOpacity:bkdp-opacity,backdropSaturate:bkdp-saturate,backdropSepia:bkdp-sepia,borderCollapse:bd-cl,borderSpacing:bd-sp,borderSpacingX:bd-sx,borderSpacingY:bd-sy,tableLayout:tbl,transitionTimingFunction:trs-tmf,transitionDelay:trs-dly,transitionDuration:trs-dur,transitionProperty:trs-prop,transition:transition,animation:anim,animationName:anim-n,animationTimingFunction:anim-tmf,animationDuration:anim-dur,animationDelay:anim-dly,animationPlayState:anim-ps,animationComposition:anim-comp,animationFillMode:anim-fm,animationDirection:anim-dir,animationIterationCount:anim-ic,animationRange:anim-r,animationState:anim-s,animationRangeStart:anim-rs,animationRangeEnd:anim-re,animationTimeline:anim-tl,transformOrigin:trf-o,transformBox:trf-b,transformStyle:trf-s,transform:trf,rotate:rotate,rotateX:rotate-x,rotateY:rotate-y,rotateZ:rotate-z,scale:scale,scaleX:scale-x,scaleY:scale-y,translate:translate,translateX:translate-x/x,translateY:translate-y/y,translateZ:translate-z/z,accentColor:ac-c,caretColor:ca-c,scrollBehavior:scr-bhv,scrollbar:scr-bar,scrollbarColor:scr-bar-c,scrollbarGutter:scr-bar-g,scrollbarWidth:scr-bar-w,scrollMargin:scr-m,scrollMarginLeft:scr-ml,scrollMarginRight:scr-mr,scrollMarginTop:scr-mt,scrollMarginBottom:scr-mb,scrollMarginBlock:scr-my/scrollMarginY,scrollMarginBlockEnd:scr-mbe,scrollMarginBlockStart:scr-mbt,scrollMarginInline:scr-mx/scrollMarginX,scrollMarginInlineEnd:scr-me,scrollMarginInlineStart:scr-ms,scrollPadding:scr-p,scrollPaddingBlock:scr-py/scrollPaddingY,scrollPaddingBlockStart:scr-pbs,scrollPaddingBlockEnd:scr-pbe,scrollPaddingInline:scr-px/scrollPaddingX,scrollPaddingInlineEnd:scr-pe,scrollPaddingInlineStart:scr-ps,scrollPaddingLeft:scr-pl,scrollPaddingRight:scr-pr,scrollPaddingTop:scr-pt,scrollPaddingBottom:scr-pb,scrollSnapAlign:scr-sa,scrollSnapStop:scrs-s,scrollSnapType:scrs-t,scrollSnapStrictness:scrs-strt,scrollSnapMargin:scrs-m,scrollSnapMarginTop:scrs-mt,scrollSnapMarginBottom:scrs-mb,scrollSnapMarginLeft:scrs-ml,scrollSnapMarginRight:scrs-mr,scrollSnapCoordinate:scrs-c,scrollSnapDestination:scrs-d,scrollSnapPointsX:scrs-px,scrollSnapPointsY:scrs-py,scrollSnapTypeX:scrs-tx,scrollSnapTypeY:scrs-ty,scrollTimeline:scrtl,scrollTimelineAxis:scrtl-a,scrollTimelineName:scrtl-n,touchAction:tch-a,userSelect:us,overflow:ov,overflowWrap:ov-wrap,overflowX:ov-x,overflowY:ov-y,overflowAnchor:ov-a,overflowBlock:ov-b,overflowInline:ov-i,overflowClipBox:ovcp-bx,overflowClipMargin:ovcp-m,overscrollBehaviorBlock:ovs-bb,overscrollBehaviorInline:ovs-bi,fill:fill,stroke:stk,strokeWidth:stk-w,strokeDasharray:stk-dsh,strokeDashoffset:stk-do,strokeLinecap:stk-lc,strokeLinejoin:stk-lj,strokeMiterlimit:stk-ml,strokeOpacity:stk-op,srOnly:sr,debug:debug,appearance:ap,backfaceVisibility:bfv,clipPath:cp-path,hyphens:hy,mask:msk,maskImage:msk-i,maskSize:msk-s,textSizeAdjust:txt-adj,container:cq,containerName:cq-n,containerType:cq-t,cursor:cursor,textStyle:textStyle,layerStyle:layerStyle,animationStyle:animationStyle", classNameByProp = /* @__PURE__ */ new Map(), shorthands = /* @__PURE__ */ new Map();
207
207
  utilities.split(",").forEach((utility) => {
208
208
  const [prop, meta] = utility.split(":"), [className, ...shorthandList] = meta.split("/");
209
209
  classNameByProp.set(prop, className), shorthandList.length && shorthandList.forEach((shorthand) => {
@@ -15827,37 +15827,6 @@ const useCustomCompareMemo = (factory2, deps, comparator) => {
15827
15827
  function useDeepCompareMemo(factory2, deps) {
15828
15828
  return useCustomCompareMemo(factory2, deps, isEqual);
15829
15829
  }
15830
- const HandlerNames = [
15831
- "onBurgerMenuClick",
15832
- "onNavigateTo",
15833
- "onOpenSource",
15834
- "onCanvasClick",
15835
- "onCanvasContextMenu",
15836
- "onEdgeClick",
15837
- "onEdgeContextMenu",
15838
- "onNodeClick",
15839
- "onNodeContextMenu",
15840
- "onChange",
15841
- "onCanvasDblClick"
15842
- ], DiagramEventHandlersReactContext = createContext({
15843
- ...t$1(HandlerNames, (name) => [name, null]),
15844
- handlersRef: {
15845
- current: {}
15846
- }
15847
- });
15848
- function DiagramEventHandlers({
15849
- handlers,
15850
- children: children2
15851
- }) {
15852
- const handlersRef = useSyncedRef(handlers), deps = HandlerNames.map((name) => e$2(handlers[name])), value = useMemo(() => ({
15853
- ...t$1(HandlerNames, (name) => handlersRef.current[name] ? [name, (...args) => handlersRef.current[name]?.(...args)] : [name, null]),
15854
- handlersRef
15855
- }), [handlersRef, ...deps]);
15856
- return /* @__PURE__ */ jsx(DiagramEventHandlersReactContext.Provider, { value, children: children2 });
15857
- }
15858
- function useDiagramEventHandlers() {
15859
- return useContext(DiagramEventHandlersReactContext);
15860
- }
15861
15830
  var getOwnPropertyNames = Object.getOwnPropertyNames, getOwnPropertySymbols = Object.getOwnPropertySymbols, hasOwnProperty = Object.prototype.hasOwnProperty;
15862
15831
  function combineComparators(comparatorA, comparatorB) {
15863
15832
  return function(a, b, state) {
@@ -16120,515 +16089,133 @@ function createCustomEqual(options) {
16120
16089
  var _a = options.circular, circular = _a === void 0 ? !1 : _a, createCustomInternalComparator = options.createInternalComparator, createState = options.createState, _b = options.strict, strict = _b === void 0 ? !1 : _b, config = createEqualityComparatorConfig(options), comparator = createEqualityComparator(config), equals = createCustomInternalComparator ? createCustomInternalComparator(comparator) : createInternalEqualityComparator(comparator);
16121
16090
  return createIsEqual({ circular, comparator, createState, equals, strict });
16122
16091
  }
16123
- const FeatureNames = [
16124
- "Controls",
16125
- "ReadOnly",
16126
- "FocusMode",
16127
- "NavigateTo",
16128
- "ElementDetails",
16129
- "RelationshipDetails",
16130
- "RelationshipBrowser",
16131
- "Search",
16132
- "NavigationButtons",
16133
- "Notations",
16134
- "DynamicViewWalkthrough",
16135
- "EdgeEditing",
16136
- "ViewTitle",
16137
- "FitView",
16138
- /**
16139
- * Running in VSCode
16140
- */
16141
- "Vscode",
16142
- "ElementTags"
16143
- ], AllDisabled = t$1(
16144
- FeatureNames,
16145
- (name) => [`enable${name}`, !1]
16146
- ), DiagramFeaturesContext = createContext(AllDisabled), validate = (features) => {
16147
- let {
16148
- enableReadOnly,
16149
- enableEdgeEditing,
16150
- ...rest
16151
- } = features;
16152
- return enableReadOnly && (enableEdgeEditing = !1), {
16153
- enableReadOnly,
16154
- enableEdgeEditing,
16155
- ...rest
16156
- };
16092
+ const noop = () => {
16093
+ }, depsShallowEqual = (d1, d2) => {
16094
+ if (d1 === d2)
16095
+ return !0;
16096
+ if (d1.length !== d2.length)
16097
+ return !1;
16098
+ for (const [i2, element] of d1.entries())
16099
+ if (element !== d2[i2] && !shallowEqual(element, d2[i2]))
16100
+ return !1;
16101
+ return !0;
16157
16102
  };
16158
- function DiagramFeatures({
16159
- children: children2,
16160
- features,
16161
- overrides
16162
- }) {
16163
- const outerScope = useContext(DiagramFeaturesContext), [scope, setScope] = useState(outerScope);
16164
- return useEffect(
16165
- () => {
16166
- setScope((current) => {
16167
- const next = validate({
16168
- ...outerScope,
16169
- ...features,
16170
- ...overrides
16171
- });
16172
- return shallowEqual(current, next) ? current : next;
16173
- });
16174
- },
16175
- [outerScope, features, overrides]
16176
- ), /* @__PURE__ */ jsx(DiagramFeaturesContext.Provider, { value: scope, children: children2 });
16103
+ function useUpdateEffect(callback, deps, equalityFn, effectHook) {
16104
+ const isFirstMount = useFirstMountState();
16105
+ useCustomCompareEffect(
16106
+ isFirstMount ? noop : callback,
16107
+ deps,
16108
+ equalityFn ?? depsShallowEqual,
16109
+ effectHook
16110
+ );
16177
16111
  }
16178
- DiagramFeatures.Overlays = ({ children: children2 }) => /* @__PURE__ */ jsx(
16179
- DiagramFeatures,
16180
- {
16181
- overrides: {
16182
- enableControls: !1,
16183
- enableReadOnly: !0,
16184
- enableEdgeEditing: !1
16185
- },
16186
- children: children2
16187
- }
16188
- );
16189
- function useEnabledFeatures() {
16190
- return useContext(DiagramFeaturesContext);
16112
+ const useXYFlow = useReactFlow;
16113
+ function useXYStore(selector2, equalityFn) {
16114
+ return useStore(
16115
+ useCallbackRef(selector2),
16116
+ equalityFn ?? shallowEqual
16117
+ );
16191
16118
  }
16192
- function IfEnabled({
16193
- feature,
16194
- children: children2,
16195
- and: and2 = !0
16196
- }) {
16197
- return useEnabledFeatures()[`enable${feature}`] === !0 && and2 ? /* @__PURE__ */ jsx(Fragment$1, { children: children2 }) : null;
16119
+ const useXYStoreApi = useStoreApi, useXYInternalNode = useInternalNode, selectCurrentZoom = (state) => Math.round(state.transform[2] * 100) / 100;
16120
+ function useCurrentZoom() {
16121
+ return useStore(selectCurrentZoom);
16198
16122
  }
16199
- function IfNotEnabled({ feature, children: children2 }) {
16200
- return useEnabledFeatures()[`enable${feature}`] !== !0 ? /* @__PURE__ */ jsx(Fragment$1, { children: children2 }) : null;
16123
+ const selectZoom = (state) => state.transform[2] < 0.2;
16124
+ function useIsZoomTooSmall() {
16125
+ return useStore(selectZoom);
16201
16126
  }
16202
- function IfReadOnly({ children: children2 }) {
16203
- return useEnabledFeatures().enableReadOnly === !0 ? /* @__PURE__ */ jsx(Fragment$1, { children: children2 }) : null;
16127
+ function getDevicePixelRatio() {
16128
+ const dpr = typeof window < "u" && typeof window.devicePixelRatio == "number" ? window.devicePixelRatio : 1;
16129
+ return t$9(Math.floor(dpr), {
16130
+ min: 1,
16131
+ max: 4
16132
+ });
16204
16133
  }
16205
- function IfNotReadOnly({ children: children2 }) {
16206
- return useEnabledFeatures().enableReadOnly === !0 ? null : /* @__PURE__ */ jsx(Fragment$1, { children: children2 });
16134
+ let knownDpr;
16135
+ function roundDpr(v) {
16136
+ return knownDpr ??= getDevicePixelRatio(), knownDpr < 2 ? Math.round(v) : Math.round(v * knownDpr) / knownDpr;
16207
16137
  }
16208
- const IconRendererContext = createContext(null);
16209
- function IconRendererProvider({
16210
- value,
16211
- children: children2
16212
- }) {
16213
- return useContext(IconRendererContext) ? /* @__PURE__ */ jsx(Fragment$1, { children: children2 }) : /* @__PURE__ */ jsx(IconRendererContext.Provider, { value, children: children2 });
16138
+ const { abs: abs$1, cos: cos$1, sin: sin$1, acos: acos$1, atan2, sqrt: sqrt$1, pow } = Math;
16139
+ function crt(v) {
16140
+ return v < 0 ? -pow(-v, 1 / 3) : pow(v, 1 / 3);
16214
16141
  }
16215
- function IconRenderer({
16216
- element,
16217
- className
16218
- }) {
16219
- const RenderIcon = useContext(IconRendererContext);
16220
- if (!element || !element.icon || element.icon === "none")
16221
- return null;
16222
- let icon;
16223
- return element.icon.startsWith("http://") || element.icon.startsWith("https://") ? icon = /* @__PURE__ */ jsx("img", { src: element.icon, alt: element.title }) : RenderIcon && (icon = /* @__PURE__ */ jsx(RenderIcon, { node: element })), icon ? /* @__PURE__ */ jsx(
16224
- "div",
16225
- {
16226
- className: cx(
16227
- className,
16228
- "likec4-element-icon"
16229
- ),
16230
- "data-likec4-icon": element.icon,
16231
- children: icon
16232
- }
16233
- ) : null;
16234
- }
16235
- const ShapeIcons = {
16236
- browser: IconBrowser,
16237
- cylinder: IconCylinder,
16238
- mobile: IconDeviceMobile,
16239
- person: IconUser,
16240
- queue: IconReorder,
16241
- rectangle: IconRectangularPrism,
16242
- storage: IconCylinder
16243
- };
16244
- function IconOrShapeRenderer({
16245
- element,
16246
- className
16247
- }) {
16248
- const icon = /* @__PURE__ */ jsx(IconRenderer, { element, className });
16249
- if (icon)
16250
- return icon;
16251
- const ShapeIcon = ShapeIcons[element.shape];
16252
- return /* @__PURE__ */ jsx(
16253
- "div",
16254
- {
16255
- className: cx(
16256
- className,
16257
- "likec4-shape-icon"
16258
- ),
16259
- children: /* @__PURE__ */ jsx(ShapeIcon, {})
16260
- }
16261
- );
16262
- }
16263
- var userGeneratedStr = "css,pos,insetX,insetY,insetEnd,end,insetStart,start,flexDir,p,pl,pr,pt,pb,py,paddingY,paddingX,px,pe,paddingEnd,ps,paddingStart,ml,mr,mt,mb,m,my,marginY,mx,marginX,me,marginEnd,ms,marginStart,ringWidth,ringColor,ring,ringOffset,w,minW,maxW,h,minH,maxH,textShadowColor,bgPosition,bgPositionX,bgPositionY,bgAttachment,bgClip,bg,bgColor,bgOrigin,bgImage,bgRepeat,bgBlendMode,bgSize,bgGradient,bgLinear,bgRadial,bgConic,rounded,roundedTopLeft,roundedTopRight,roundedBottomRight,roundedBottomLeft,roundedTop,roundedRight,roundedBottom,roundedLeft,roundedStartStart,roundedStartEnd,roundedStart,roundedEndStart,roundedEndEnd,roundedEnd,borderX,borderXWidth,borderXColor,borderY,borderYWidth,borderYColor,borderStart,borderStartWidth,borderStartColor,borderEnd,borderEndWidth,borderEndColor,shadow,shadowColor,x,y,z,scrollMarginY,scrollMarginX,scrollPaddingY,scrollPaddingX,aspectRatio,boxDecorationBreak,zIndex,boxSizing,objectPosition,objectFit,overscrollBehavior,overscrollBehaviorX,overscrollBehaviorY,position,top,left,inset,insetInline,insetBlock,insetBlockEnd,insetBlockStart,insetInlineEnd,insetInlineStart,right,bottom,float,visibility,display,hideFrom,hideBelow,flexBasis,flex,flexDirection,flexGrow,flexShrink,gridTemplateColumns,gridTemplateRows,gridColumn,gridRow,gridColumnStart,gridColumnEnd,gridAutoFlow,gridAutoColumns,gridAutoRows,gap,gridGap,gridRowGap,gridColumnGap,rowGap,columnGap,justifyContent,alignContent,alignItems,alignSelf,padding,paddingLeft,paddingRight,paddingTop,paddingBottom,paddingBlock,paddingBlockEnd,paddingBlockStart,paddingInline,paddingInlineEnd,paddingInlineStart,marginLeft,marginRight,marginTop,marginBottom,margin,marginBlock,marginBlockEnd,marginBlockStart,marginInline,marginInlineEnd,marginInlineStart,spaceX,spaceY,outlineWidth,outlineColor,outline,outlineOffset,divideX,divideY,divideColor,divideStyle,width,inlineSize,minWidth,minInlineSize,maxWidth,maxInlineSize,height,blockSize,minHeight,minBlockSize,maxHeight,maxBlockSize,boxSize,color,fontFamily,fontSize,fontSizeAdjust,fontPalette,fontKerning,fontFeatureSettings,fontWeight,fontSmoothing,fontVariant,fontVariantAlternates,fontVariantCaps,fontVariationSettings,fontVariantNumeric,letterSpacing,lineHeight,textAlign,textDecoration,textDecorationColor,textEmphasisColor,textDecorationStyle,textDecorationThickness,textUnderlineOffset,textTransform,textIndent,textShadow,textOverflow,verticalAlign,wordBreak,textWrap,truncate,lineClamp,listStyleType,listStylePosition,listStyleImage,listStyle,backgroundPosition,backgroundPositionX,backgroundPositionY,backgroundAttachment,backgroundClip,background,backgroundColor,backgroundOrigin,backgroundImage,backgroundRepeat,backgroundBlendMode,backgroundSize,backgroundGradient,backgroundLinear,backgroundRadial,backgroundConic,textGradient,gradientFromPosition,gradientToPosition,gradientFrom,gradientTo,gradientVia,gradientViaPosition,borderRadius,borderTopLeftRadius,borderTopRightRadius,borderBottomRightRadius,borderBottomLeftRadius,borderTopRadius,borderRightRadius,borderBottomRadius,borderLeftRadius,borderStartStartRadius,borderStartEndRadius,borderStartRadius,borderEndStartRadius,borderEndEndRadius,borderEndRadius,border,borderWidth,borderTopWidth,borderLeftWidth,borderRightWidth,borderBottomWidth,borderBlockStartWidth,borderBlockEndWidth,borderColor,borderInline,borderInlineWidth,borderInlineColor,borderBlock,borderBlockWidth,borderBlockColor,borderLeft,borderLeftColor,borderInlineStart,borderInlineStartWidth,borderInlineStartColor,borderRight,borderRightColor,borderInlineEnd,borderInlineEndWidth,borderInlineEndColor,borderTop,borderTopColor,borderBottom,borderBottomColor,borderBlockEnd,borderBlockEndColor,borderBlockStart,borderBlockStartColor,opacity,boxShadow,boxShadowColor,mixBlendMode,filter,brightness,contrast,grayscale,hueRotate,invert,saturate,sepia,dropShadow,blur,backdropFilter,backdropBlur,backdropBrightness,backdropContrast,backdropGrayscale,backdropHueRotate,backdropInvert,backdropOpacity,backdropSaturate,backdropSepia,borderCollapse,borderSpacing,borderSpacingX,borderSpacingY,tableLayout,transitionTimingFunction,transitionDelay,transitionDuration,transitionProperty,transition,animation,animationName,animationTimingFunction,animationDuration,animationDelay,animationPlayState,animationComposition,animationFillMode,animationDirection,animationIterationCount,animationRange,animationState,animationRangeStart,animationRangeEnd,animationTimeline,transformOrigin,transformBox,transformStyle,transform,rotate,rotateX,rotateY,rotateZ,scale,scaleX,scaleY,translate,translateX,translateY,translateZ,accentColor,caretColor,scrollBehavior,scrollbar,scrollbarColor,scrollbarGutter,scrollbarWidth,scrollMargin,scrollMarginLeft,scrollMarginRight,scrollMarginTop,scrollMarginBottom,scrollMarginBlock,scrollMarginBlockEnd,scrollMarginBlockStart,scrollMarginInline,scrollMarginInlineEnd,scrollMarginInlineStart,scrollPadding,scrollPaddingBlock,scrollPaddingBlockStart,scrollPaddingBlockEnd,scrollPaddingInline,scrollPaddingInlineEnd,scrollPaddingInlineStart,scrollPaddingLeft,scrollPaddingRight,scrollPaddingTop,scrollPaddingBottom,scrollSnapAlign,scrollSnapStop,scrollSnapType,scrollSnapStrictness,scrollSnapMargin,scrollSnapMarginTop,scrollSnapMarginBottom,scrollSnapMarginLeft,scrollSnapMarginRight,scrollSnapCoordinate,scrollSnapDestination,scrollSnapPointsX,scrollSnapPointsY,scrollSnapTypeX,scrollSnapTypeY,scrollTimeline,scrollTimelineAxis,scrollTimelineName,touchAction,userSelect,overflow,overflowWrap,overflowX,overflowY,overflowAnchor,overflowBlock,overflowInline,overflowClipBox,overflowClipMargin,overscrollBehaviorBlock,overscrollBehaviorInline,fill,stroke,strokeWidth,strokeDasharray,strokeDashoffset,strokeLinecap,strokeLinejoin,strokeMiterlimit,strokeOpacity,srOnly,debug,appearance,backfaceVisibility,clipPath,hyphens,mask,maskImage,maskSize,textSizeAdjust,container,containerName,containerType,cursor,colorPalette,_hover,_focus,_focusWithin,_focusVisible,_disabled,_active,_visited,_target,_readOnly,_readWrite,_empty,_checked,_enabled,_expanded,_highlighted,_complete,_incomplete,_dragging,_before,_after,_firstLetter,_firstLine,_marker,_selection,_file,_backdrop,_first,_last,_only,_even,_odd,_firstOfType,_lastOfType,_onlyOfType,_peerFocus,_peerHover,_peerActive,_peerFocusWithin,_peerFocusVisible,_peerDisabled,_peerChecked,_peerInvalid,_peerExpanded,_peerPlaceholderShown,_groupFocus,_groupHover,_groupActive,_groupFocusWithin,_groupFocusVisible,_groupDisabled,_groupChecked,_groupExpanded,_groupInvalid,_indeterminate,_required,_valid,_invalid,_autofill,_inRange,_outOfRange,_placeholder,_placeholderShown,_pressed,_selected,_grabbed,_underValue,_overValue,_atValue,_default,_optional,_open,_closed,_fullscreen,_loading,_hidden,_current,_currentPage,_currentStep,_today,_unavailable,_rangeStart,_rangeEnd,_now,_topmost,_motionReduce,_motionSafe,_print,_landscape,_portrait,_dark,_light,_osDark,_osLight,_highContrast,_lessContrast,_moreContrast,_ltr,_rtl,_scrollbar,_scrollbarThumb,_scrollbarTrack,_horizontal,_vertical,_icon,_starting,_noscript,_invertedColors,_shapeSizeXs,_shapeSizeSm,_shapeSizeMd,_shapeSizeLg,_shapeSizeXl,_shapeRectangle,_shapePerson,_shapeBrowser,_shapeMobile,_shapeCylinder,_shapeStorage,_shapeQueue,_notDisabled,_reduceGraphics,_reduceGraphicsOnPan,_noReduceGraphics,_whenPanning,_smallZoom,_compoundTransparent,_edgeActive,_whenHovered,_whenSelected,_whenDimmed,_whenFocused,_p3,_srgb,_rec2020,xs,xsOnly,xsDown,sm,smOnly,smDown,md,mdOnly,mdDown,lg,lgOnly,lgDown,xl,xlOnly,xlDown,xsToSm,xsToMd,xsToLg,xsToXl,smToMd,smToLg,smToXl,mdToLg,mdToXl,lgToXl,@/xs,@/sm,@/md,@/lg,@likec4-root/xs,@likec4-root/sm,@likec4-root/md,@likec4-root/lg,@likec4-dialog/xs,@likec4-dialog/sm,@likec4-dialog/md,@likec4-dialog/lg,textStyle,layerStyle,animationStyle", userGenerated = userGeneratedStr.split(","), cssPropertiesStr = "WebkitAppearance,WebkitBorderBefore,WebkitBorderBeforeColor,WebkitBorderBeforeStyle,WebkitBorderBeforeWidth,WebkitBoxReflect,WebkitLineClamp,WebkitMask,WebkitMaskAttachment,WebkitMaskClip,WebkitMaskComposite,WebkitMaskImage,WebkitMaskOrigin,WebkitMaskPosition,WebkitMaskPositionX,WebkitMaskPositionY,WebkitMaskRepeat,WebkitMaskRepeatX,WebkitMaskRepeatY,WebkitMaskSize,WebkitOverflowScrolling,WebkitTapHighlightColor,WebkitTextFillColor,WebkitTextStroke,WebkitTextStrokeColor,WebkitTextStrokeWidth,WebkitTouchCallout,WebkitUserModify,WebkitUserSelect,accentColor,alignContent,alignItems,alignSelf,alignTracks,all,anchorName,anchorScope,animation,animationComposition,animationDelay,animationDirection,animationDuration,animationFillMode,animationIterationCount,animationName,animationPlayState,animationRange,animationRangeEnd,animationRangeStart,animationTimeline,animationTimingFunction,appearance,aspectRatio,backdropFilter,backfaceVisibility,background,backgroundAttachment,backgroundBlendMode,backgroundClip,backgroundColor,backgroundImage,backgroundOrigin,backgroundPosition,backgroundPositionX,backgroundPositionY,backgroundRepeat,backgroundSize,blockSize,border,borderBlock,borderBlockColor,borderBlockEnd,borderBlockEndColor,borderBlockEndStyle,borderBlockEndWidth,borderBlockStart,borderBlockStartColor,borderBlockStartStyle,borderBlockStartWidth,borderBlockStyle,borderBlockWidth,borderBottom,borderBottomColor,borderBottomLeftRadius,borderBottomRightRadius,borderBottomStyle,borderBottomWidth,borderCollapse,borderColor,borderEndEndRadius,borderEndStartRadius,borderImage,borderImageOutset,borderImageRepeat,borderImageSlice,borderImageSource,borderImageWidth,borderInline,borderInlineColor,borderInlineEnd,borderInlineEndColor,borderInlineEndStyle,borderInlineEndWidth,borderInlineStart,borderInlineStartColor,borderInlineStartStyle,borderInlineStartWidth,borderInlineStyle,borderInlineWidth,borderLeft,borderLeftColor,borderLeftStyle,borderLeftWidth,borderRadius,borderRight,borderRightColor,borderRightStyle,borderRightWidth,borderSpacing,borderStartEndRadius,borderStartStartRadius,borderStyle,borderTop,borderTopColor,borderTopLeftRadius,borderTopRightRadius,borderTopStyle,borderTopWidth,borderWidth,bottom,boxAlign,boxDecorationBreak,boxDirection,boxFlex,boxFlexGroup,boxLines,boxOrdinalGroup,boxOrient,boxPack,boxShadow,boxSizing,breakAfter,breakBefore,breakInside,captionSide,caret,caretColor,caretShape,clear,clip,clipPath,clipRule,color,colorInterpolationFilters,colorScheme,columnCount,columnFill,columnGap,columnRule,columnRuleColor,columnRuleStyle,columnRuleWidth,columnSpan,columnWidth,columns,contain,containIntrinsicBlockSize,containIntrinsicHeight,containIntrinsicInlineSize,containIntrinsicSize,containIntrinsicWidth,container,containerName,containerType,content,contentVisibility,counterIncrement,counterReset,counterSet,cursor,cx,cy,d,direction,display,dominantBaseline,emptyCells,fieldSizing,fill,fillOpacity,fillRule,filter,flex,flexBasis,flexDirection,flexFlow,flexGrow,flexShrink,flexWrap,float,floodColor,floodOpacity,font,fontFamily,fontFeatureSettings,fontKerning,fontLanguageOverride,fontOpticalSizing,fontPalette,fontSize,fontSizeAdjust,fontSmooth,fontStretch,fontStyle,fontSynthesis,fontSynthesisPosition,fontSynthesisSmallCaps,fontSynthesisStyle,fontSynthesisWeight,fontVariant,fontVariantAlternates,fontVariantCaps,fontVariantEastAsian,fontVariantEmoji,fontVariantLigatures,fontVariantNumeric,fontVariantPosition,fontVariationSettings,fontWeight,forcedColorAdjust,gap,grid,gridArea,gridAutoColumns,gridAutoFlow,gridAutoRows,gridColumn,gridColumnEnd,gridColumnGap,gridColumnStart,gridGap,gridRow,gridRowEnd,gridRowGap,gridRowStart,gridTemplate,gridTemplateAreas,gridTemplateColumns,gridTemplateRows,hangingPunctuation,height,hyphenateCharacter,hyphenateLimitChars,hyphens,imageOrientation,imageRendering,imageResolution,imeMode,initialLetter,initialLetterAlign,inlineSize,inset,insetBlock,insetBlockEnd,insetBlockStart,insetInline,insetInlineEnd,insetInlineStart,interpolateSize,isolation,justifyContent,justifyItems,justifySelf,justifyTracks,left,letterSpacing,lightingColor,lineBreak,lineClamp,lineHeight,lineHeightStep,listStyle,listStyleImage,listStylePosition,listStyleType,margin,marginBlock,marginBlockEnd,marginBlockStart,marginBottom,marginInline,marginInlineEnd,marginInlineStart,marginLeft,marginRight,marginTop,marginTrim,marker,markerEnd,markerMid,markerStart,mask,maskBorder,maskBorderMode,maskBorderOutset,maskBorderRepeat,maskBorderSlice,maskBorderSource,maskBorderWidth,maskClip,maskComposite,maskImage,maskMode,maskOrigin,maskPosition,maskRepeat,maskSize,maskType,masonryAutoFlow,mathDepth,mathShift,mathStyle,maxBlockSize,maxHeight,maxInlineSize,maxLines,maxWidth,minBlockSize,minHeight,minInlineSize,minWidth,mixBlendMode,objectFit,objectPosition,offset,offsetAnchor,offsetDistance,offsetPath,offsetPosition,offsetRotate,opacity,order,orphans,outline,outlineColor,outlineOffset,outlineStyle,outlineWidth,overflow,overflowAnchor,overflowBlock,overflowClipBox,overflowClipMargin,overflowInline,overflowWrap,overflowX,overflowY,overlay,overscrollBehavior,overscrollBehaviorBlock,overscrollBehaviorInline,overscrollBehaviorX,overscrollBehaviorY,padding,paddingBlock,paddingBlockEnd,paddingBlockStart,paddingBottom,paddingInline,paddingInlineEnd,paddingInlineStart,paddingLeft,paddingRight,paddingTop,page,pageBreakAfter,pageBreakBefore,pageBreakInside,paintOrder,perspective,perspectiveOrigin,placeContent,placeItems,placeSelf,pointerEvents,position,positionAnchor,positionArea,positionTry,positionTryFallbacks,positionTryOrder,positionVisibility,printColorAdjust,quotes,r,resize,right,rotate,rowGap,rubyAlign,rubyMerge,rubyPosition,rx,ry,scale,scrollBehavior,scrollMargin,scrollMarginBlock,scrollMarginBlockEnd,scrollMarginBlockStart,scrollMarginBottom,scrollMarginInline,scrollMarginInlineEnd,scrollMarginInlineStart,scrollMarginLeft,scrollMarginRight,scrollMarginTop,scrollPadding,scrollPaddingBlock,scrollPaddingBlockEnd,scrollPaddingBlockStart,scrollPaddingBottom,scrollPaddingInline,scrollPaddingInlineEnd,scrollPaddingInlineStart,scrollPaddingLeft,scrollPaddingRight,scrollPaddingTop,scrollSnapAlign,scrollSnapCoordinate,scrollSnapDestination,scrollSnapPointsX,scrollSnapPointsY,scrollSnapStop,scrollSnapType,scrollSnapTypeX,scrollSnapTypeY,scrollTimeline,scrollTimelineAxis,scrollTimelineName,scrollbarColor,scrollbarGutter,scrollbarWidth,shapeImageThreshold,shapeMargin,shapeOutside,shapeRendering,stopColor,stopOpacity,stroke,strokeDasharray,strokeDashoffset,strokeLinecap,strokeLinejoin,strokeMiterlimit,strokeOpacity,strokeWidth,tabSize,tableLayout,textAlign,textAlignLast,textAnchor,textBox,textBoxEdge,textBoxTrim,textCombineUpright,textDecoration,textDecorationColor,textDecorationLine,textDecorationSkip,textDecorationSkipInk,textDecorationStyle,textDecorationThickness,textEmphasis,textEmphasisColor,textEmphasisPosition,textEmphasisStyle,textIndent,textJustify,textOrientation,textOverflow,textRendering,textShadow,textSizeAdjust,textSpacingTrim,textTransform,textUnderlineOffset,textUnderlinePosition,textWrap,textWrapMode,textWrapStyle,timelineScope,top,touchAction,transform,transformBox,transformOrigin,transformStyle,transition,transitionBehavior,transitionDelay,transitionDuration,transitionProperty,transitionTimingFunction,translate,unicodeBidi,userSelect,vectorEffect,verticalAlign,viewTimeline,viewTimelineAxis,viewTimelineInset,viewTimelineName,viewTransitionName,visibility,whiteSpace,whiteSpaceCollapse,widows,width,willChange,wordBreak,wordSpacing,wordWrap,writingMode,x,y,zIndex,zoom,alignmentBaseline,baselineShift,colorInterpolation,colorRendering,glyphOrientationVertical", allCssProperties = cssPropertiesStr.split(",").concat(userGenerated), properties = new Map(allCssProperties.map((prop) => [prop, !0])), cssPropertySelectorRegex = /&|@/, isCssProperty = /* @__PURE__ */ memo((prop) => properties.has(prop) || prop.startsWith("--") || cssPropertySelectorRegex.test(prop));
16264
- const defaultShouldForwardProp = (prop, variantKeys) => !variantKeys.includes(prop) && !isCssProperty(prop), composeShouldForwardProps = (tag, shouldForwardProp) => tag.__shouldForwardProps__ && shouldForwardProp ? (propName) => tag.__shouldForwardProps__(propName) && shouldForwardProp(propName) : shouldForwardProp, composeCvaFn = (cvaA, cvaB) => {
16265
- if (cvaA && !cvaB) return cvaA;
16266
- if (!cvaA && cvaB) return cvaB;
16267
- if (cvaA.__cva__ && cvaB.__cva__ || cvaA.__recipe__ && cvaB.__recipe__) return cvaA.merge(cvaB);
16268
- const error = new TypeError("Cannot merge cva with recipe. Please use either cva or recipe.");
16269
- throw TypeError.captureStackTrace?.(error), error;
16270
- }, getDisplayName = (Component) => typeof Component == "string" ? Component : Component?.displayName || Component?.name || "Component";
16271
- function styledFn(Dynamic, configOrCva = {}, options = {}) {
16272
- const cvaFn = configOrCva.__cva__ || configOrCva.__recipe__ ? configOrCva : cva(configOrCva), forwardFn = options.shouldForwardProp || defaultShouldForwardProp, shouldForwardProp = (prop) => options.forwardProps?.includes(prop) ? !0 : forwardFn(prop, cvaFn.variantKeys), defaultProps2 = Object.assign(
16273
- options.dataAttr && configOrCva.__name__ ? { "data-recipe": configOrCva.__name__ } : {},
16274
- options.defaultProps
16275
- ), __cvaFn__ = composeCvaFn(Dynamic.__cva__, cvaFn), __shouldForwardProps__ = composeShouldForwardProps(Dynamic, shouldForwardProp), __base__ = Dynamic.__base__ || Dynamic, StyledComponent = /* @__PURE__ */ forwardRef(function(props, ref) {
16276
- const { as: Element2 = __base__, children: children2, ...restProps } = props, combinedProps = useMemo(() => Object.assign({}, defaultProps2, restProps), [restProps]), [htmlProps2, forwardedProps, variantProps2, styleProps, elementProps] = useMemo(() => splitProps(combinedProps, normalizeHTMLProps.keys, __shouldForwardProps__, __cvaFn__.variantKeys, isCssProperty), [combinedProps]);
16277
- function recipeClass() {
16278
- const { css: cssStyles, ...propStyles } = styleProps, compoundVariantStyles = __cvaFn__.__getCompoundVariantCss__?.(variantProps2);
16279
- return cx(__cvaFn__(variantProps2, !1), css(compoundVariantStyles, propStyles, cssStyles), combinedProps.className);
16280
- }
16281
- function cvaClass() {
16282
- const { css: cssStyles, ...propStyles } = styleProps, cvaStyles = __cvaFn__.raw(variantProps2);
16283
- return cx(css(cvaStyles, propStyles, cssStyles), combinedProps.className);
16284
- }
16285
- const classes2 = configOrCva.__recipe__ ? recipeClass : cvaClass;
16286
- return createElement(Element2, {
16287
- ref,
16288
- ...forwardedProps,
16289
- ...elementProps,
16290
- ...normalizeHTMLProps(htmlProps2),
16291
- className: classes2()
16292
- }, combinedProps.children ?? children2);
16293
- }), name = getDisplayName(__base__);
16294
- return StyledComponent.displayName = `styled.${name}`, StyledComponent.__cva__ = __cvaFn__, StyledComponent.__base__ = __base__, StyledComponent.__shouldForwardProps__ = shouldForwardProp, StyledComponent;
16295
- }
16296
- function createJsxFactory() {
16297
- const cache = /* @__PURE__ */ new Map();
16298
- return new Proxy(styledFn, {
16299
- apply(_, __, args) {
16300
- return styledFn(...args);
16301
- },
16302
- get(_, el) {
16303
- return cache.has(el) || cache.set(el, styledFn(el)), cache.get(el);
16304
- }
16305
- });
16306
- }
16307
- const styled = /* @__PURE__ */ createJsxFactory(), boxConfig = {
16308
- transform(props) {
16309
- return props;
16310
- }
16311
- }, getBoxStyle = (styles = {}) => {
16312
- const _styles = getPatternStyles(boxConfig, styles);
16313
- return boxConfig.transform(_styles, patternFns);
16314
- }, Box = /* @__PURE__ */ forwardRef(function(props, ref) {
16315
- const [patternProps, restProps] = splitProps(props, []), styleProps = getBoxStyle(patternProps), mergedProps = { ref, ...styleProps, ...restProps };
16316
- return createElement(styled.div, mergedProps);
16317
- }), hstackConfig = {
16318
- transform(props) {
16319
- const { justify, gap, ...rest } = props;
16320
- return {
16321
- display: "flex",
16322
- alignItems: "center",
16323
- justifyContent: justify,
16324
- gap,
16325
- flexDirection: "row",
16326
- ...rest
16327
- };
16328
- },
16329
- defaultValues: { gap: "sm" }
16330
- }, getHstackStyle = (styles = {}) => {
16331
- const _styles = getPatternStyles(hstackConfig, styles);
16332
- return hstackConfig.transform(_styles, patternFns);
16333
- }, hstack = (styles) => css(getHstackStyle(styles));
16334
- hstack.raw = getHstackStyle;
16335
- const HStack = /* @__PURE__ */ forwardRef(function(props, ref) {
16336
- const [patternProps, restProps] = splitProps(props, ["justify", "gap"]), styleProps = getHstackStyle(patternProps), mergedProps = { ref, ...styleProps, ...restProps };
16337
- return createElement(styled.div, mergedProps);
16338
- });
16339
- let listenerQueue = [], lqIndex = 0;
16340
- const QUEUE_ITEMS_PER_LISTENER = 4;
16341
- let atom = (initialValue) => {
16342
- let listeners = [], $atom = {
16343
- get() {
16344
- return $atom.lc || $atom.listen(() => {
16345
- })(), $atom.value;
16346
- },
16347
- lc: 0,
16348
- listen(listener) {
16349
- return $atom.lc = listeners.push(listener), () => {
16350
- for (let i2 = lqIndex + QUEUE_ITEMS_PER_LISTENER; i2 < listenerQueue.length; )
16351
- listenerQueue[i2] === listener ? listenerQueue.splice(i2, QUEUE_ITEMS_PER_LISTENER) : i2 += QUEUE_ITEMS_PER_LISTENER;
16352
- let index2 = listeners.indexOf(listener);
16353
- ~index2 && (listeners.splice(index2, 1), --$atom.lc || $atom.off());
16354
- };
16355
- },
16356
- notify(oldValue, changedKey) {
16357
- let runListenerQueue = !listenerQueue.length;
16358
- for (let listener of listeners)
16359
- listenerQueue.push(listener, $atom.value, oldValue, changedKey);
16360
- if (runListenerQueue) {
16361
- for (lqIndex = 0; lqIndex < listenerQueue.length; lqIndex += QUEUE_ITEMS_PER_LISTENER)
16362
- listenerQueue[lqIndex](
16363
- listenerQueue[lqIndex + 1],
16364
- listenerQueue[lqIndex + 2],
16365
- listenerQueue[lqIndex + 3]
16366
- );
16367
- listenerQueue.length = 0;
16368
- }
16369
- },
16370
- /* It will be called on last listener unsubscribing.
16371
- We will redefine it in onMount and onStop. */
16372
- off() {
16373
- },
16374
- set(newValue) {
16375
- let oldValue = $atom.value;
16376
- oldValue !== newValue && ($atom.value = newValue, $atom.notify(oldValue));
16377
- },
16378
- subscribe(listener) {
16379
- let unbind = $atom.listen(listener);
16380
- return listener($atom.value), unbind;
16381
- },
16382
- value: initialValue
16383
- };
16384
- return $atom;
16385
- };
16386
- const ReduceGraphicsModeCtx = createContext(null);
16387
- function useIsReducedGraphics() {
16388
- const isReduced = useContext(ReduceGraphicsModeCtx);
16389
- return isReduced === null && console.warn("ReduceGraphicsMode is not provided"), isReduced ?? !1;
16390
- }
16391
- const [PanningAtomSafeCtx, usePanningAtom] = createSafeContext(
16392
- "PanningAtomSafeCtx is not provided"
16393
- );
16394
- function ReduceGraphicsContext({ reduceGraphics, children: children2 }) {
16395
- const $isPanningRef = useRef(null);
16396
- return $isPanningRef.current || ($isPanningRef.current = atom(reduceGraphics)), /* @__PURE__ */ jsx(PanningAtomSafeCtx, { value: $isPanningRef.current, children: /* @__PURE__ */ jsx(ReduceGraphicsModeCtx.Provider, { value: reduceGraphics, children: children2 }) });
16397
- }
16398
- const LikeC4ModelContext = createContext(null), CurrentViewModelContext = createContext(null);
16399
- function EnsureCurrentViewModel({ children: children2 }) {
16400
- return useContext(CurrentViewModelContext) ? /* @__PURE__ */ jsx(Fragment$1, { children: children2 }) : null;
16401
- }
16402
- function useLikeC4Model() {
16403
- const model = useContext(LikeC4ModelContext);
16404
- if (!model)
16405
- throw new Error("LikeC4Model not found. Make sure you have LikeC4ModelProvider.");
16406
- return model;
16407
- }
16408
- function useLikeC4ViewModel(viewId) {
16409
- return useLikeC4Model().view(viewId);
16410
- }
16411
- function useLikeC4Specification() {
16412
- const model = useLikeC4Model(), [specification, setSpecification] = useState(model.$data.specification);
16413
- return useEffect(() => {
16414
- setSpecification((current) => deepEqual(current, model.$data.specification) ? current : model.$data.specification);
16415
- }, [model]), specification;
16416
- }
16417
- const TagStylesContext = createContext({}), radixColors = [
16418
- "yellow",
16419
- "orange",
16420
- "amber",
16421
- "tomato",
16422
- "red",
16423
- "ruby",
16424
- "crimson",
16425
- "pink",
16426
- "pink",
16427
- "purple",
16428
- "violet",
16429
- "indigo",
16430
- "blue",
16431
- "teal",
16432
- "grass",
16433
- "lime"
16434
- ], generateColorVars = (spec) => {
16435
- const color2 = spec.color;
16436
- if (isTagColorSpecified(spec))
16437
- return `
16438
- --colors-likec4-tag-bg: ${color2};
16439
- --colors-likec4-tag-bg-hover: color-mix(in srgb, ${color2}, var(--colors-likec4-mix-color) 20%);
16440
- `;
16441
- if (!radixColors.includes(color2))
16442
- return "";
16443
- let textcolor = "12";
16444
- return ["mint", "grass", "lime", "yellow", "amber"].includes(color2) && (textcolor = "dark-2"), `
16445
- --colors-likec4-tag-border: var(--colors-${color2}-8);
16446
- --colors-likec4-tag-bg: var(--colors-${color2}-9);
16447
- --colors-likec4-tag-bg-hover: var(--colors-${color2}-10);
16448
- --colors-likec4-tag-text: var(--colors-${color2}-${textcolor});
16449
- `;
16450
- };
16451
- function TagStylesProvider({ children: children2, rootSelector }) {
16452
- const tags = useLikeC4Specification().tags, { specs, stylesheet } = useDeepCompareMemo(() => tags ? {
16453
- specs: tags,
16454
- stylesheet: t$7(
16455
- t$5(tags),
16456
- t$4(([tag, spec]) => [
16457
- `:is(${rootSelector} [data-likec4-tag="${tag}"]) {`,
16458
- generateColorVars(spec),
16459
- "}"
16460
- ]),
16461
- t$3(`
16462
- `)
16463
- )
16464
- } : { specs: {}, stylesheet: "" }, [tags, rootSelector]);
16465
- return /* @__PURE__ */ jsxs(TagStylesContext.Provider, { value: specs, children: [
16466
- stylesheet !== "" && /* @__PURE__ */ jsx(TagStylesheet, { stylesheet }),
16467
- children2
16468
- ] });
16469
- }
16470
- function TagStylesheet({ stylesheet }) {
16471
- const nonce = useMantineStyleNonce()?.();
16472
- return /* @__PURE__ */ jsx("style", { "data-likec4-tag-stylesheet": !0, type: "text/css", dangerouslySetInnerHTML: { __html: stylesheet }, nonce });
16473
- }
16474
- function useTagSpecification(tag) {
16475
- return useContext(TagStylesContext)[tag] ?? {
16476
- color: "tomato"
16477
- };
16478
- }
16479
- const RootContainerContext = createContext(createRef());
16480
- function RootContainer({
16481
- id: id2,
16482
- className,
16483
- reduceGraphics = !1,
16484
- children: children2
16485
- }) {
16486
- const ref = useRef(null), $isPanning = usePanningAtom();
16487
- return useEffect(() => $isPanning.listen((isPanning) => {
16488
- ref.current?.setAttribute("data-likec4-diagram-panning", isPanning ? "true" : "false");
16489
- }), [$isPanning]), /* @__PURE__ */ jsx(
16490
- Box,
16491
- {
16492
- id: id2,
16493
- className: cx("likec4-root", className),
16494
- ref,
16495
- ...reduceGraphics && {
16496
- "data-likec4-reduced-graphics": !0
16497
- },
16498
- children: /* @__PURE__ */ jsx(TagStylesProvider, { rootSelector: `#${id2}`, children: /* @__PURE__ */ jsx(RootContainerContext.Provider, { value: ref, children: children2 }) })
16499
- }
16500
- );
16501
- }
16502
- function useRootContainer() {
16503
- return useContext(RootContainerContext).current;
16504
- }
16505
- const noop = () => {
16506
- }, depsShallowEqual = (d1, d2) => {
16507
- if (d1 === d2)
16508
- return !0;
16509
- if (d1.length !== d2.length)
16510
- return !1;
16511
- for (const [i2, element] of d1.entries())
16512
- if (element !== d2[i2] && !shallowEqual(element, d2[i2]))
16513
- return !1;
16514
- return !0;
16515
- };
16516
- function useUpdateEffect(callback, deps, equalityFn, effectHook) {
16517
- const isFirstMount = useFirstMountState();
16518
- useCustomCompareEffect(
16519
- isFirstMount ? noop : callback,
16520
- deps,
16521
- equalityFn ?? depsShallowEqual,
16522
- effectHook
16523
- );
16524
- }
16525
- const useXYFlow = useReactFlow;
16526
- function useXYStore(selector2, equalityFn) {
16527
- return useStore(
16528
- useCallbackRef(selector2),
16529
- equalityFn ?? shallowEqual
16530
- );
16531
- }
16532
- const useXYStoreApi = useStoreApi, useXYInternalNode = useInternalNode, selectCurrentZoom = (state) => Math.round(state.transform[2] * 100) / 100;
16533
- function useCurrentZoom() {
16534
- return useStore(selectCurrentZoom);
16535
- }
16536
- const selectZoom = (state) => state.transform[2] < 0.2;
16537
- function useIsZoomTooSmall() {
16538
- return useStore(selectZoom);
16539
- }
16540
- function getDevicePixelRatio() {
16541
- const dpr = typeof window < "u" && typeof window.devicePixelRatio == "number" ? window.devicePixelRatio : 1;
16542
- return t$9(Math.floor(dpr), {
16543
- min: 1,
16544
- max: 4
16545
- });
16546
- }
16547
- let knownDpr;
16548
- function roundDpr(v) {
16549
- return knownDpr ??= getDevicePixelRatio(), knownDpr < 2 ? Math.round(v) : Math.round(v * knownDpr) / knownDpr;
16550
- }
16551
- const { abs: abs$1, cos: cos$1, sin: sin$1, acos: acos$1, atan2, sqrt: sqrt$1, pow } = Math;
16552
- function crt(v) {
16553
- return v < 0 ? -pow(-v, 1 / 3) : pow(v, 1 / 3);
16554
- }
16555
- const pi$1 = Math.PI, tau = 2 * pi$1, quart = pi$1 / 2, epsilon = 1e-6, nMax = Number.MAX_SAFE_INTEGER || 9007199254740991, nMin = Number.MIN_SAFE_INTEGER || -9007199254740991, ZERO = { x: 0, y: 0, z: 0 }, utils = {
16556
- // Legendre-Gauss abscissae with n=24 (x_i values, defined at i=n as the roots of the nth order Legendre polynomial Pn(x))
16557
- Tvalues: [
16558
- -0.06405689286260563,
16559
- 0.06405689286260563,
16560
- -0.1911188674736163,
16561
- 0.1911188674736163,
16562
- -0.3150426796961634,
16563
- 0.3150426796961634,
16564
- -0.4337935076260451,
16565
- 0.4337935076260451,
16566
- -0.5454214713888396,
16567
- 0.5454214713888396,
16568
- -0.6480936519369755,
16569
- 0.6480936519369755,
16570
- -0.7401241915785544,
16571
- 0.7401241915785544,
16572
- -0.820001985973903,
16573
- 0.820001985973903,
16574
- -0.8864155270044011,
16575
- 0.8864155270044011,
16576
- -0.9382745520027328,
16577
- 0.9382745520027328,
16578
- -0.9747285559713095,
16579
- 0.9747285559713095,
16580
- -0.9951872199970213,
16581
- 0.9951872199970213
16582
- ],
16583
- // Legendre-Gauss weights with n=24 (w_i values, defined by a function linked to in the Bezier primer article)
16584
- Cvalues: [
16585
- 0.12793819534675216,
16586
- 0.12793819534675216,
16587
- 0.1258374563468283,
16588
- 0.1258374563468283,
16589
- 0.12167047292780339,
16590
- 0.12167047292780339,
16591
- 0.1155056680537256,
16592
- 0.1155056680537256,
16593
- 0.10744427011596563,
16594
- 0.10744427011596563,
16595
- 0.09761865210411388,
16596
- 0.09761865210411388,
16597
- 0.08619016153195327,
16598
- 0.08619016153195327,
16599
- 0.0733464814110803,
16600
- 0.0733464814110803,
16601
- 0.05929858491543678,
16602
- 0.05929858491543678,
16603
- 0.04427743881741981,
16604
- 0.04427743881741981,
16605
- 0.028531388628933663,
16606
- 0.028531388628933663,
16607
- 0.0123412297999872,
16608
- 0.0123412297999872
16609
- ],
16610
- arcfn: function(t2, derivativeFn) {
16611
- const d = derivativeFn(t2);
16612
- let l = d.x * d.x + d.y * d.y;
16613
- return typeof d.z < "u" && (l += d.z * d.z), sqrt$1(l);
16614
- },
16615
- compute: function(t2, points, _3d) {
16616
- if (t2 === 0)
16617
- return points[0].t = 0, points[0];
16618
- const order = points.length - 1;
16619
- if (t2 === 1)
16620
- return points[order].t = 1, points[order];
16621
- const mt = 1 - t2;
16622
- let p = points;
16623
- if (order === 0)
16624
- return points[0].t = t2, points[0];
16625
- if (order === 1) {
16626
- const ret = {
16627
- x: mt * p[0].x + t2 * p[1].x,
16628
- y: mt * p[0].y + t2 * p[1].y,
16629
- t: t2
16630
- };
16631
- return _3d && (ret.z = mt * p[0].z + t2 * p[1].z), ret;
16142
+ const pi$1 = Math.PI, tau = 2 * pi$1, quart = pi$1 / 2, epsilon = 1e-6, nMax = Number.MAX_SAFE_INTEGER || 9007199254740991, nMin = Number.MIN_SAFE_INTEGER || -9007199254740991, ZERO = { x: 0, y: 0, z: 0 }, utils = {
16143
+ // Legendre-Gauss abscissae with n=24 (x_i values, defined at i=n as the roots of the nth order Legendre polynomial Pn(x))
16144
+ Tvalues: [
16145
+ -0.06405689286260563,
16146
+ 0.06405689286260563,
16147
+ -0.1911188674736163,
16148
+ 0.1911188674736163,
16149
+ -0.3150426796961634,
16150
+ 0.3150426796961634,
16151
+ -0.4337935076260451,
16152
+ 0.4337935076260451,
16153
+ -0.5454214713888396,
16154
+ 0.5454214713888396,
16155
+ -0.6480936519369755,
16156
+ 0.6480936519369755,
16157
+ -0.7401241915785544,
16158
+ 0.7401241915785544,
16159
+ -0.820001985973903,
16160
+ 0.820001985973903,
16161
+ -0.8864155270044011,
16162
+ 0.8864155270044011,
16163
+ -0.9382745520027328,
16164
+ 0.9382745520027328,
16165
+ -0.9747285559713095,
16166
+ 0.9747285559713095,
16167
+ -0.9951872199970213,
16168
+ 0.9951872199970213
16169
+ ],
16170
+ // Legendre-Gauss weights with n=24 (w_i values, defined by a function linked to in the Bezier primer article)
16171
+ Cvalues: [
16172
+ 0.12793819534675216,
16173
+ 0.12793819534675216,
16174
+ 0.1258374563468283,
16175
+ 0.1258374563468283,
16176
+ 0.12167047292780339,
16177
+ 0.12167047292780339,
16178
+ 0.1155056680537256,
16179
+ 0.1155056680537256,
16180
+ 0.10744427011596563,
16181
+ 0.10744427011596563,
16182
+ 0.09761865210411388,
16183
+ 0.09761865210411388,
16184
+ 0.08619016153195327,
16185
+ 0.08619016153195327,
16186
+ 0.0733464814110803,
16187
+ 0.0733464814110803,
16188
+ 0.05929858491543678,
16189
+ 0.05929858491543678,
16190
+ 0.04427743881741981,
16191
+ 0.04427743881741981,
16192
+ 0.028531388628933663,
16193
+ 0.028531388628933663,
16194
+ 0.0123412297999872,
16195
+ 0.0123412297999872
16196
+ ],
16197
+ arcfn: function(t2, derivativeFn) {
16198
+ const d = derivativeFn(t2);
16199
+ let l = d.x * d.x + d.y * d.y;
16200
+ return typeof d.z < "u" && (l += d.z * d.z), sqrt$1(l);
16201
+ },
16202
+ compute: function(t2, points, _3d) {
16203
+ if (t2 === 0)
16204
+ return points[0].t = 0, points[0];
16205
+ const order = points.length - 1;
16206
+ if (t2 === 1)
16207
+ return points[order].t = 1, points[order];
16208
+ const mt = 1 - t2;
16209
+ let p = points;
16210
+ if (order === 0)
16211
+ return points[0].t = t2, points[0];
16212
+ if (order === 1) {
16213
+ const ret = {
16214
+ x: mt * p[0].x + t2 * p[1].x,
16215
+ y: mt * p[0].y + t2 * p[1].y,
16216
+ t: t2
16217
+ };
16218
+ return _3d && (ret.z = mt * p[0].z + t2 * p[1].z), ret;
16632
16219
  }
16633
16220
  if (order < 4) {
16634
16221
  let mt2 = mt * mt, t22 = t2 * t2, a, b, c, d = 0;
@@ -17282,247 +16869,666 @@ class Bezier {
17282
16869
  };
17283
16870
  return p.z && nv.z && (ret.z = p.z + t2 * nv.z), ret;
17284
16871
  });
17285
- return [new Bezier(coords)];
17286
- }
17287
- return this.reduce().map(function(s) {
17288
- return s._linear ? s.offset(t2)[0] : s.scale(t2);
16872
+ return [new Bezier(coords)];
16873
+ }
16874
+ return this.reduce().map(function(s) {
16875
+ return s._linear ? s.offset(t2)[0] : s.scale(t2);
16876
+ });
16877
+ }
16878
+ simple() {
16879
+ if (this.order === 3) {
16880
+ const a1 = utils.angle(this.points[0], this.points[3], this.points[1]), a2 = utils.angle(this.points[0], this.points[3], this.points[2]);
16881
+ if (a1 > 0 && a2 < 0 || a1 < 0 && a2 > 0) return !1;
16882
+ }
16883
+ const n1 = this.normal(0), n2 = this.normal(1);
16884
+ let s = n1.x * n2.x + n1.y * n2.y;
16885
+ return this._3d && (s += n1.z * n2.z), abs(acos(s)) < pi / 3;
16886
+ }
16887
+ reduce() {
16888
+ let i2, t1 = 0, t2 = 0, step = 0.01, segment, pass1 = [], pass2 = [], extrema = this.extrema().values;
16889
+ for (extrema.indexOf(0) === -1 && (extrema = [0].concat(extrema)), extrema.indexOf(1) === -1 && extrema.push(1), t1 = extrema[0], i2 = 1; i2 < extrema.length; i2++)
16890
+ t2 = extrema[i2], segment = this.split(t1, t2), segment._t1 = t1, segment._t2 = t2, pass1.push(segment), t1 = t2;
16891
+ return pass1.forEach(function(p1) {
16892
+ for (t1 = 0, t2 = 0; t2 <= 1; )
16893
+ for (t2 = t1 + step; t2 <= 1 + step; t2 += step)
16894
+ if (segment = p1.split(t1, t2), !segment.simple()) {
16895
+ if (t2 -= step, abs(t1 - t2) < step)
16896
+ return [];
16897
+ segment = p1.split(t1, t2), segment._t1 = utils.map(t1, 0, 1, p1._t1, p1._t2), segment._t2 = utils.map(t2, 0, 1, p1._t1, p1._t2), pass2.push(segment), t1 = t2;
16898
+ break;
16899
+ }
16900
+ t1 < 1 && (segment = p1.split(t1, 1), segment._t1 = utils.map(t1, 0, 1, p1._t1, p1._t2), segment._t2 = p1._t2, pass2.push(segment));
16901
+ }), pass2;
16902
+ }
16903
+ translate(v, d1, d2) {
16904
+ d2 = typeof d2 == "number" ? d2 : d1;
16905
+ const o = this.order;
16906
+ let d = this.points.map((_, i2) => (1 - i2 / o) * d1 + i2 / o * d2);
16907
+ return new Bezier(
16908
+ this.points.map((p, i2) => ({
16909
+ x: p.x + v.x * d[i2],
16910
+ y: p.y + v.y * d[i2]
16911
+ }))
16912
+ );
16913
+ }
16914
+ scale(d) {
16915
+ const order = this.order;
16916
+ let distanceFn = !1;
16917
+ if (typeof d == "function" && (distanceFn = d), distanceFn && order === 2)
16918
+ return this.raise().scale(distanceFn);
16919
+ const clockwise = this.clockwise, points = this.points;
16920
+ if (this._linear)
16921
+ return this.translate(
16922
+ this.normal(0),
16923
+ distanceFn ? distanceFn(0) : d,
16924
+ distanceFn ? distanceFn(1) : d
16925
+ );
16926
+ const r1 = distanceFn ? distanceFn(0) : d, r2 = distanceFn ? distanceFn(1) : d, v = [this.offset(0, 10), this.offset(1, 10)], np = [], o = utils.lli4(v[0], v[0].c, v[1], v[1].c);
16927
+ if (!o)
16928
+ throw new Error("cannot scale this curve. Try reducing it first.");
16929
+ return [0, 1].forEach(function(t2) {
16930
+ const p = np[t2 * order] = utils.copy(points[t2 * order]);
16931
+ p.x += (t2 ? r2 : r1) * v[t2].n.x, p.y += (t2 ? r2 : r1) * v[t2].n.y;
16932
+ }), distanceFn ? ([0, 1].forEach(function(t2) {
16933
+ if (!(order === 2 && t2)) {
16934
+ var p = points[t2 + 1], ov = {
16935
+ x: p.x - o.x,
16936
+ y: p.y - o.y
16937
+ }, rc = distanceFn ? distanceFn((t2 + 1) / order) : d;
16938
+ distanceFn && !clockwise && (rc = -rc);
16939
+ var m2 = sqrt(ov.x * ov.x + ov.y * ov.y);
16940
+ ov.x /= m2, ov.y /= m2, np[t2 + 1] = {
16941
+ x: p.x + rc * ov.x,
16942
+ y: p.y + rc * ov.y
16943
+ };
16944
+ }
16945
+ }), new Bezier(np)) : ([0, 1].forEach((t2) => {
16946
+ if (order === 2 && t2) return;
16947
+ const p = np[t2 * order], d2 = this.derivative(t2), p2 = { x: p.x + d2.x, y: p.y + d2.y };
16948
+ np[t2 + 1] = utils.lli4(p, p2, o, points[t2 + 1]);
16949
+ }), new Bezier(np));
16950
+ }
16951
+ outline(d1, d2, d3, d4) {
16952
+ if (d2 = d2 === void 0 ? d1 : d2, this._linear) {
16953
+ const n2 = this.normal(0), start2 = this.points[0], end = this.points[this.points.length - 1];
16954
+ let s, mid, e2;
16955
+ d3 === void 0 && (d3 = d1, d4 = d2), s = { x: start2.x + n2.x * d1, y: start2.y + n2.y * d1 }, e2 = { x: end.x + n2.x * d3, y: end.y + n2.y * d3 }, mid = { x: (s.x + e2.x) / 2, y: (s.y + e2.y) / 2 };
16956
+ const fline = [s, mid, e2];
16957
+ s = { x: start2.x - n2.x * d2, y: start2.y - n2.y * d2 }, e2 = { x: end.x - n2.x * d4, y: end.y - n2.y * d4 }, mid = { x: (s.x + e2.x) / 2, y: (s.y + e2.y) / 2 };
16958
+ const bline = [e2, mid, s], ls2 = utils.makeline(bline[2], fline[0]), le2 = utils.makeline(fline[2], bline[0]), segments2 = [ls2, new Bezier(fline), le2, new Bezier(bline)];
16959
+ return new PolyBezier(segments2);
16960
+ }
16961
+ const reduced = this.reduce(), len = reduced.length, fcurves = [];
16962
+ let bcurves = [], p, alen = 0, tlen = this.length();
16963
+ const graduated = typeof d3 < "u" && typeof d4 < "u";
16964
+ function linearDistanceFunction(s, e2, tlen2, alen2, slen) {
16965
+ return function(v) {
16966
+ const f1 = alen2 / tlen2, f2 = (alen2 + slen) / tlen2, d = e2 - s;
16967
+ return utils.map(v, 0, 1, s + f1 * d, s + f2 * d);
16968
+ };
16969
+ }
16970
+ reduced.forEach(function(segment) {
16971
+ const slen = segment.length();
16972
+ graduated ? (fcurves.push(
16973
+ segment.scale(linearDistanceFunction(d1, d3, tlen, alen, slen))
16974
+ ), bcurves.push(
16975
+ segment.scale(linearDistanceFunction(-d2, -d4, tlen, alen, slen))
16976
+ )) : (fcurves.push(segment.scale(d1)), bcurves.push(segment.scale(-d2))), alen += slen;
16977
+ }), bcurves = bcurves.map(function(s) {
16978
+ return p = s.points, p[3] ? s.points = [p[3], p[2], p[1], p[0]] : s.points = [p[2], p[1], p[0]], s;
16979
+ }).reverse();
16980
+ const fs = fcurves[0].points[0], fe = fcurves[len - 1].points[fcurves[len - 1].points.length - 1], bs = bcurves[len - 1].points[bcurves[len - 1].points.length - 1], be = bcurves[0].points[0], ls = utils.makeline(bs, fs), le = utils.makeline(fe, be), segments = [ls].concat(fcurves).concat([le]).concat(bcurves);
16981
+ return new PolyBezier(segments);
16982
+ }
16983
+ outlineshapes(d1, d2, curveIntersectionThreshold) {
16984
+ d2 = d2 || d1;
16985
+ const outline = this.outline(d1, d2).curves, shapes = [];
16986
+ for (let i2 = 1, len = outline.length; i2 < len / 2; i2++) {
16987
+ const shape = utils.makeshape(
16988
+ outline[i2],
16989
+ outline[len - i2],
16990
+ curveIntersectionThreshold
16991
+ );
16992
+ shape.startcap.virtual = i2 > 1, shape.endcap.virtual = i2 < len / 2 - 1, shapes.push(shape);
16993
+ }
16994
+ return shapes;
16995
+ }
16996
+ intersects(curve, curveIntersectionThreshold) {
16997
+ return curve ? curve.p1 && curve.p2 ? this.lineIntersects(curve) : (curve instanceof Bezier && (curve = curve.reduce()), this.curveintersects(
16998
+ this.reduce(),
16999
+ curve,
17000
+ curveIntersectionThreshold
17001
+ )) : this.selfintersects(curveIntersectionThreshold);
17002
+ }
17003
+ lineIntersects(line) {
17004
+ const mx = min(line.p1.x, line.p2.x), my = min(line.p1.y, line.p2.y), MX = max(line.p1.x, line.p2.x), MY = max(line.p1.y, line.p2.y);
17005
+ return utils.roots(this.points, line).filter((t2) => {
17006
+ var p = this.get(t2);
17007
+ return utils.between(p.x, mx, MX) && utils.between(p.y, my, MY);
17008
+ });
17009
+ }
17010
+ selfintersects(curveIntersectionThreshold) {
17011
+ const reduced = this.reduce(), len = reduced.length - 2, results = [];
17012
+ for (let i2 = 0, result, left, right; i2 < len; i2++)
17013
+ left = reduced.slice(i2, i2 + 1), right = reduced.slice(i2 + 2), result = this.curveintersects(left, right, curveIntersectionThreshold), results.push(...result);
17014
+ return results;
17015
+ }
17016
+ curveintersects(c1, c2, curveIntersectionThreshold) {
17017
+ const pairs = [];
17018
+ c1.forEach(function(l) {
17019
+ c2.forEach(function(r2) {
17020
+ l.overlaps(r2) && pairs.push({ left: l, right: r2 });
17021
+ });
17289
17022
  });
17023
+ let intersections = [];
17024
+ return pairs.forEach(function(pair) {
17025
+ const result = utils.pairiteration(
17026
+ pair.left,
17027
+ pair.right,
17028
+ curveIntersectionThreshold
17029
+ );
17030
+ result.length > 0 && (intersections = intersections.concat(result));
17031
+ }), intersections;
17290
17032
  }
17291
- simple() {
17292
- if (this.order === 3) {
17293
- const a1 = utils.angle(this.points[0], this.points[3], this.points[1]), a2 = utils.angle(this.points[0], this.points[3], this.points[2]);
17294
- if (a1 > 0 && a2 < 0 || a1 < 0 && a2 > 0) return !1;
17295
- }
17296
- const n1 = this.normal(0), n2 = this.normal(1);
17297
- let s = n1.x * n2.x + n1.y * n2.y;
17298
- return this._3d && (s += n1.z * n2.z), abs(acos(s)) < pi / 3;
17033
+ arcs(errorThreshold) {
17034
+ return errorThreshold = errorThreshold || 0.5, this._iterate(errorThreshold, []);
17299
17035
  }
17300
- reduce() {
17301
- let i2, t1 = 0, t2 = 0, step = 0.01, segment, pass1 = [], pass2 = [], extrema = this.extrema().values;
17302
- for (extrema.indexOf(0) === -1 && (extrema = [0].concat(extrema)), extrema.indexOf(1) === -1 && extrema.push(1), t1 = extrema[0], i2 = 1; i2 < extrema.length; i2++)
17303
- t2 = extrema[i2], segment = this.split(t1, t2), segment._t1 = t1, segment._t2 = t2, pass1.push(segment), t1 = t2;
17304
- return pass1.forEach(function(p1) {
17305
- for (t1 = 0, t2 = 0; t2 <= 1; )
17306
- for (t2 = t1 + step; t2 <= 1 + step; t2 += step)
17307
- if (segment = p1.split(t1, t2), !segment.simple()) {
17308
- if (t2 -= step, abs(t1 - t2) < step)
17309
- return [];
17310
- segment = p1.split(t1, t2), segment._t1 = utils.map(t1, 0, 1, p1._t1, p1._t2), segment._t2 = utils.map(t2, 0, 1, p1._t1, p1._t2), pass2.push(segment), t1 = t2;
17036
+ _error(pc, np1, s, e2) {
17037
+ const q = (e2 - s) / 4, c1 = this.get(s + q), c2 = this.get(e2 - q), ref = utils.dist(pc, np1), d1 = utils.dist(pc, c1), d2 = utils.dist(pc, c2);
17038
+ return abs(d1 - ref) + abs(d2 - ref);
17039
+ }
17040
+ _iterate(errorThreshold, circles) {
17041
+ let t_s = 0, t_e = 1, safety;
17042
+ do {
17043
+ safety = 0, t_e = 1;
17044
+ let np1 = this.get(t_s), np2, np3, arc, prev_arc, curr_good = !1, prev_good = !1, done, t_m = t_e, prev_e = 1;
17045
+ do
17046
+ if (prev_good = curr_good, prev_arc = arc, t_m = (t_s + t_e) / 2, np2 = this.get(t_m), np3 = this.get(t_e), arc = utils.getccenter(np1, np2, np3), arc.interval = {
17047
+ start: t_s,
17048
+ end: t_e
17049
+ }, curr_good = this._error(arc, np1, t_s, t_e) <= errorThreshold, done = prev_good && !curr_good, done || (prev_e = t_e), curr_good) {
17050
+ if (t_e >= 1) {
17051
+ if (arc.interval.end = prev_e = 1, prev_arc = arc, t_e > 1) {
17052
+ let d = {
17053
+ x: arc.x + arc.r * cos(arc.e),
17054
+ y: arc.y + arc.r * sin(arc.e)
17055
+ };
17056
+ arc.e += utils.angle({ x: arc.x, y: arc.y }, d, this.get(1));
17057
+ }
17311
17058
  break;
17312
17059
  }
17313
- t1 < 1 && (segment = p1.split(t1, 1), segment._t1 = utils.map(t1, 0, 1, p1._t1, p1._t2), segment._t2 = p1._t2, pass2.push(segment));
17314
- }), pass2;
17060
+ t_e = t_e + (t_e - t_s) / 2;
17061
+ } else
17062
+ t_e = t_m;
17063
+ while (!done && safety++ < 100);
17064
+ if (safety >= 100)
17065
+ break;
17066
+ prev_arc = prev_arc || arc, circles.push(prev_arc), t_s = prev_e;
17067
+ } while (t_e < 1);
17068
+ return circles;
17315
17069
  }
17316
- translate(v, d1, d2) {
17317
- d2 = typeof d2 == "number" ? d2 : d1;
17318
- const o = this.order;
17319
- let d = this.points.map((_, i2) => (1 - i2 / o) * d1 + i2 / o * d2);
17320
- return new Bezier(
17321
- this.points.map((p, i2) => ({
17322
- x: p.x + v.x * d[i2],
17323
- y: p.y + v.y * d[i2]
17324
- }))
17325
- );
17070
+ }
17071
+ function bezierControlPoints(diagramEdge) {
17072
+ let [start2, ...bezierPoints] = diagramEdge.points;
17073
+ invariant(start2, "start should be defined");
17074
+ const handles = [
17075
+ // start
17076
+ ];
17077
+ for (; t$6(bezierPoints, 3); ) {
17078
+ const [cp1, cp2, end, ...rest] = bezierPoints, bezier = new Bezier(start2[0], start2[1], cp1[0], cp1[1], cp2[0], cp2[1], end[0], end[1]), inflections = bezier.inflections();
17079
+ inflections.length === 0 && inflections.push(0.5), inflections.forEach((t2) => {
17080
+ const { x, y } = bezier.get(t2);
17081
+ handles.push({
17082
+ x: Math.round(x),
17083
+ y: Math.round(y)
17084
+ });
17085
+ }), bezierPoints = rest, start2 = end;
17326
17086
  }
17327
- scale(d) {
17328
- const order = this.order;
17329
- let distanceFn = !1;
17330
- if (typeof d == "function" && (distanceFn = d), distanceFn && order === 2)
17331
- return this.raise().scale(distanceFn);
17332
- const clockwise = this.clockwise, points = this.points;
17333
- if (this._linear)
17334
- return this.translate(
17335
- this.normal(0),
17336
- distanceFn ? distanceFn(0) : d,
17337
- distanceFn ? distanceFn(1) : d
17338
- );
17339
- const r1 = distanceFn ? distanceFn(0) : d, r2 = distanceFn ? distanceFn(1) : d, v = [this.offset(0, 10), this.offset(1, 10)], np = [], o = utils.lli4(v[0], v[0].c, v[1], v[1].c);
17340
- if (!o)
17341
- throw new Error("cannot scale this curve. Try reducing it first.");
17342
- return [0, 1].forEach(function(t2) {
17343
- const p = np[t2 * order] = utils.copy(points[t2 * order]);
17344
- p.x += (t2 ? r2 : r1) * v[t2].n.x, p.y += (t2 ? r2 : r1) * v[t2].n.y;
17345
- }), distanceFn ? ([0, 1].forEach(function(t2) {
17346
- if (!(order === 2 && t2)) {
17347
- var p = points[t2 + 1], ov = {
17348
- x: p.x - o.x,
17349
- y: p.y - o.y
17350
- }, rc = distanceFn ? distanceFn((t2 + 1) / order) : d;
17351
- distanceFn && !clockwise && (rc = -rc);
17352
- var m2 = sqrt(ov.x * ov.x + ov.y * ov.y);
17353
- ov.x /= m2, ov.y /= m2, np[t2 + 1] = {
17354
- x: p.x + rc * ov.x,
17355
- y: p.y + rc * ov.y
17356
- };
17357
- }
17358
- }), new Bezier(np)) : ([0, 1].forEach((t2) => {
17359
- if (order === 2 && t2) return;
17360
- const p = np[t2 * order], d2 = this.derivative(t2), p2 = { x: p.x + d2.x, y: p.y + d2.y };
17361
- np[t2 + 1] = utils.lli4(p, p2, o, points[t2 + 1]);
17362
- }), new Bezier(np));
17087
+ return invariant(bezierPoints.length === 0, "all points should be consumed"), handles;
17088
+ }
17089
+ const isClose = (a, b) => Math.abs(a - b) < 3.1;
17090
+ function isSamePoint(a, b) {
17091
+ const [ax, ay] = e$4(a) ? a : [a.x, a.y], [bx, by] = e$4(b) ? b : [b.x, b.y];
17092
+ return isClose(ax, bx) && isClose(ay, by);
17093
+ }
17094
+ function stopPropagation(e2) {
17095
+ return e2.stopPropagation();
17096
+ }
17097
+ function centerXYInternalNode(nd) {
17098
+ const { width, height } = getNodeDimensions(nd);
17099
+ return {
17100
+ x: nd.internals.positionAbsolute.x + width / 2,
17101
+ y: nd.internals.positionAbsolute.y + height / 2
17102
+ };
17103
+ }
17104
+ function bezierPath(bezierSpline) {
17105
+ let [start2, ...points] = bezierSpline;
17106
+ invariant(start2, "start should be defined");
17107
+ let path = `M ${start2[0]},${start2[1]}`;
17108
+ for (; t$6(points, 3); ) {
17109
+ const [cp1, cp2, end, ...rest] = points;
17110
+ path = path + ` C ${cp1[0]},${cp1[1]} ${cp2[0]},${cp2[1]} ${end[0]},${end[1]}`, points = rest;
17111
+ }
17112
+ return invariant(points.length === 0, "all points should be consumed"), path;
17113
+ }
17114
+ const HandlerNames = [
17115
+ "onBurgerMenuClick",
17116
+ "onNavigateTo",
17117
+ "onOpenSource",
17118
+ "onCanvasClick",
17119
+ "onCanvasContextMenu",
17120
+ "onEdgeClick",
17121
+ "onEdgeContextMenu",
17122
+ "onNodeClick",
17123
+ "onNodeContextMenu",
17124
+ "onChange",
17125
+ "onCanvasDblClick"
17126
+ ], DiagramEventHandlersReactContext = createContext({
17127
+ ...t$1(HandlerNames, (name) => [name, null]),
17128
+ handlersRef: {
17129
+ current: {}
17130
+ }
17131
+ });
17132
+ function DiagramEventHandlers({
17133
+ handlers,
17134
+ children: children2
17135
+ }) {
17136
+ const handlersRef = useSyncedRef(handlers), deps = HandlerNames.map((name) => e$2(handlers[name])), value = useMemo(() => ({
17137
+ ...t$1(HandlerNames, (name) => handlersRef.current[name] ? [name, (...args) => handlersRef.current[name]?.(...args)] : [name, null]),
17138
+ handlersRef
17139
+ }), [handlersRef, ...deps]);
17140
+ return /* @__PURE__ */ jsx(DiagramEventHandlersReactContext.Provider, { value, children: children2 });
17141
+ }
17142
+ function useDiagramEventHandlers() {
17143
+ return useContext(DiagramEventHandlersReactContext);
17144
+ }
17145
+ const FeatureNames = [
17146
+ "Controls",
17147
+ "ReadOnly",
17148
+ "FocusMode",
17149
+ "NavigateTo",
17150
+ "ElementDetails",
17151
+ "RelationshipDetails",
17152
+ "RelationshipBrowser",
17153
+ "Search",
17154
+ "NavigationButtons",
17155
+ "Notations",
17156
+ "DynamicViewWalkthrough",
17157
+ "EdgeEditing",
17158
+ "ViewTitle",
17159
+ "FitView",
17160
+ /**
17161
+ * Running in VSCode
17162
+ */
17163
+ "Vscode",
17164
+ "ElementTags"
17165
+ ], AllDisabled = t$1(
17166
+ FeatureNames,
17167
+ (name) => [`enable${name}`, !1]
17168
+ ), DiagramFeaturesContext = createContext(AllDisabled), validate = (features) => {
17169
+ let {
17170
+ enableReadOnly,
17171
+ enableEdgeEditing,
17172
+ ...rest
17173
+ } = features;
17174
+ return enableReadOnly && (enableEdgeEditing = !1), {
17175
+ enableReadOnly,
17176
+ enableEdgeEditing,
17177
+ ...rest
17178
+ };
17179
+ };
17180
+ function DiagramFeatures({
17181
+ children: children2,
17182
+ features,
17183
+ overrides
17184
+ }) {
17185
+ const outerScope = useContext(DiagramFeaturesContext), [scope, setScope] = useState(outerScope);
17186
+ return useEffect(
17187
+ () => {
17188
+ setScope((current) => {
17189
+ const next = validate({
17190
+ ...outerScope,
17191
+ ...features,
17192
+ ...overrides
17193
+ });
17194
+ return shallowEqual(current, next) ? current : next;
17195
+ });
17196
+ },
17197
+ [outerScope, features, overrides]
17198
+ ), /* @__PURE__ */ jsx(DiagramFeaturesContext.Provider, { value: scope, children: children2 });
17199
+ }
17200
+ DiagramFeatures.Overlays = ({ children: children2 }) => /* @__PURE__ */ jsx(
17201
+ DiagramFeatures,
17202
+ {
17203
+ overrides: {
17204
+ enableControls: !1,
17205
+ enableReadOnly: !0,
17206
+ enableEdgeEditing: !1
17207
+ },
17208
+ children: children2
17363
17209
  }
17364
- outline(d1, d2, d3, d4) {
17365
- if (d2 = d2 === void 0 ? d1 : d2, this._linear) {
17366
- const n2 = this.normal(0), start2 = this.points[0], end = this.points[this.points.length - 1];
17367
- let s, mid, e2;
17368
- d3 === void 0 && (d3 = d1, d4 = d2), s = { x: start2.x + n2.x * d1, y: start2.y + n2.y * d1 }, e2 = { x: end.x + n2.x * d3, y: end.y + n2.y * d3 }, mid = { x: (s.x + e2.x) / 2, y: (s.y + e2.y) / 2 };
17369
- const fline = [s, mid, e2];
17370
- s = { x: start2.x - n2.x * d2, y: start2.y - n2.y * d2 }, e2 = { x: end.x - n2.x * d4, y: end.y - n2.y * d4 }, mid = { x: (s.x + e2.x) / 2, y: (s.y + e2.y) / 2 };
17371
- const bline = [e2, mid, s], ls2 = utils.makeline(bline[2], fline[0]), le2 = utils.makeline(fline[2], bline[0]), segments2 = [ls2, new Bezier(fline), le2, new Bezier(bline)];
17372
- return new PolyBezier(segments2);
17210
+ );
17211
+ function useEnabledFeatures() {
17212
+ return useContext(DiagramFeaturesContext);
17213
+ }
17214
+ function IfEnabled({
17215
+ feature,
17216
+ children: children2,
17217
+ and: and2 = !0
17218
+ }) {
17219
+ return useEnabledFeatures()[`enable${feature}`] === !0 && and2 ? /* @__PURE__ */ jsx(Fragment$1, { children: children2 }) : null;
17220
+ }
17221
+ function IfNotEnabled({ feature, children: children2 }) {
17222
+ return useEnabledFeatures()[`enable${feature}`] !== !0 ? /* @__PURE__ */ jsx(Fragment$1, { children: children2 }) : null;
17223
+ }
17224
+ function IfReadOnly({ children: children2 }) {
17225
+ return useEnabledFeatures().enableReadOnly === !0 ? /* @__PURE__ */ jsx(Fragment$1, { children: children2 }) : null;
17226
+ }
17227
+ function IfNotReadOnly({ children: children2 }) {
17228
+ return useEnabledFeatures().enableReadOnly === !0 ? null : /* @__PURE__ */ jsx(Fragment$1, { children: children2 });
17229
+ }
17230
+ const IconRendererContext = createContext(null);
17231
+ function IconRendererProvider({
17232
+ value,
17233
+ children: children2
17234
+ }) {
17235
+ return useContext(IconRendererContext) ? /* @__PURE__ */ jsx(Fragment$1, { children: children2 }) : /* @__PURE__ */ jsx(IconRendererContext.Provider, { value, children: children2 });
17236
+ }
17237
+ function IconRenderer({
17238
+ element,
17239
+ className
17240
+ }) {
17241
+ const RenderIcon = useContext(IconRendererContext);
17242
+ if (!element || !element.icon || element.icon === "none")
17243
+ return null;
17244
+ let icon;
17245
+ return element.icon.startsWith("http://") || element.icon.startsWith("https://") ? icon = /* @__PURE__ */ jsx("img", { src: element.icon, alt: element.title }) : RenderIcon && (icon = /* @__PURE__ */ jsx(RenderIcon, { node: element })), icon ? /* @__PURE__ */ jsx(
17246
+ "div",
17247
+ {
17248
+ className: cx(
17249
+ className,
17250
+ "likec4-element-icon"
17251
+ ),
17252
+ "data-likec4-icon": element.icon,
17253
+ children: icon
17373
17254
  }
17374
- const reduced = this.reduce(), len = reduced.length, fcurves = [];
17375
- let bcurves = [], p, alen = 0, tlen = this.length();
17376
- const graduated = typeof d3 < "u" && typeof d4 < "u";
17377
- function linearDistanceFunction(s, e2, tlen2, alen2, slen) {
17378
- return function(v) {
17379
- const f1 = alen2 / tlen2, f2 = (alen2 + slen) / tlen2, d = e2 - s;
17380
- return utils.map(v, 0, 1, s + f1 * d, s + f2 * d);
17381
- };
17255
+ ) : null;
17256
+ }
17257
+ const ShapeIcons = {
17258
+ browser: IconBrowser,
17259
+ cylinder: IconCylinder,
17260
+ mobile: IconDeviceMobile,
17261
+ person: IconUser,
17262
+ queue: IconReorder,
17263
+ rectangle: IconRectangularPrism,
17264
+ storage: IconCylinder
17265
+ };
17266
+ function IconOrShapeRenderer({
17267
+ element,
17268
+ className
17269
+ }) {
17270
+ const icon = /* @__PURE__ */ jsx(IconRenderer, { element, className });
17271
+ if (icon)
17272
+ return icon;
17273
+ const ShapeIcon = ShapeIcons[element.shape];
17274
+ return /* @__PURE__ */ jsx(
17275
+ "div",
17276
+ {
17277
+ className: cx(
17278
+ className,
17279
+ "likec4-shape-icon"
17280
+ ),
17281
+ children: /* @__PURE__ */ jsx(ShapeIcon, {})
17382
17282
  }
17383
- reduced.forEach(function(segment) {
17384
- const slen = segment.length();
17385
- graduated ? (fcurves.push(
17386
- segment.scale(linearDistanceFunction(d1, d3, tlen, alen, slen))
17387
- ), bcurves.push(
17388
- segment.scale(linearDistanceFunction(-d2, -d4, tlen, alen, slen))
17389
- )) : (fcurves.push(segment.scale(d1)), bcurves.push(segment.scale(-d2))), alen += slen;
17390
- }), bcurves = bcurves.map(function(s) {
17391
- return p = s.points, p[3] ? s.points = [p[3], p[2], p[1], p[0]] : s.points = [p[2], p[1], p[0]], s;
17392
- }).reverse();
17393
- const fs = fcurves[0].points[0], fe = fcurves[len - 1].points[fcurves[len - 1].points.length - 1], bs = bcurves[len - 1].points[bcurves[len - 1].points.length - 1], be = bcurves[0].points[0], ls = utils.makeline(bs, fs), le = utils.makeline(fe, be), segments = [ls].concat(fcurves).concat([le]).concat(bcurves);
17394
- return new PolyBezier(segments);
17395
- }
17396
- outlineshapes(d1, d2, curveIntersectionThreshold) {
17397
- d2 = d2 || d1;
17398
- const outline = this.outline(d1, d2).curves, shapes = [];
17399
- for (let i2 = 1, len = outline.length; i2 < len / 2; i2++) {
17400
- const shape = utils.makeshape(
17401
- outline[i2],
17402
- outline[len - i2],
17403
- curveIntersectionThreshold
17404
- );
17405
- shape.startcap.virtual = i2 > 1, shape.endcap.virtual = i2 < len / 2 - 1, shapes.push(shape);
17283
+ );
17284
+ }
17285
+ var userGeneratedStr = "css,pos,insetX,insetY,insetEnd,end,insetStart,start,flexDir,p,pl,pr,pt,pb,py,paddingY,paddingX,px,pe,paddingEnd,ps,paddingStart,ml,mr,mt,mb,m,my,marginY,mx,marginX,me,marginEnd,ms,marginStart,ringWidth,ringColor,ring,ringOffset,w,minW,maxW,h,minH,maxH,textShadowColor,bgPosition,bgPositionX,bgPositionY,bgAttachment,bgClip,bg,bgColor,bgOrigin,bgImage,bgRepeat,bgBlendMode,bgSize,bgGradient,bgLinear,bgRadial,bgConic,rounded,roundedTopLeft,roundedTopRight,roundedBottomRight,roundedBottomLeft,roundedTop,roundedRight,roundedBottom,roundedLeft,roundedStartStart,roundedStartEnd,roundedStart,roundedEndStart,roundedEndEnd,roundedEnd,borderX,borderXWidth,borderXColor,borderY,borderYWidth,borderYColor,borderStart,borderStartWidth,borderStartColor,borderEnd,borderEndWidth,borderEndColor,shadow,shadowColor,x,y,z,scrollMarginY,scrollMarginX,scrollPaddingY,scrollPaddingX,aspectRatio,boxDecorationBreak,zIndex,boxSizing,objectPosition,objectFit,overscrollBehavior,overscrollBehaviorX,overscrollBehaviorY,position,top,left,inset,insetInline,insetBlock,insetBlockEnd,insetBlockStart,insetInlineEnd,insetInlineStart,right,bottom,float,visibility,display,hideFrom,hideBelow,flexBasis,flex,flexDirection,flexGrow,flexShrink,gridTemplateColumns,gridTemplateRows,gridColumn,gridRow,gridColumnStart,gridColumnEnd,gridAutoFlow,gridAutoColumns,gridAutoRows,gap,gridGap,gridRowGap,gridColumnGap,rowGap,columnGap,justifyContent,alignContent,alignItems,alignSelf,padding,paddingLeft,paddingRight,paddingTop,paddingBottom,paddingBlock,paddingBlockEnd,paddingBlockStart,paddingInline,paddingInlineEnd,paddingInlineStart,marginLeft,marginRight,marginTop,marginBottom,margin,marginBlock,marginBlockEnd,marginBlockStart,marginInline,marginInlineEnd,marginInlineStart,spaceX,spaceY,outlineWidth,outlineColor,outline,outlineOffset,focusRing,focusVisibleRing,focusRingColor,focusRingOffset,focusRingWidth,focusRingStyle,divideX,divideY,divideColor,divideStyle,width,inlineSize,minWidth,minInlineSize,maxWidth,maxInlineSize,height,blockSize,minHeight,minBlockSize,maxHeight,maxBlockSize,boxSize,color,fontFamily,fontSize,fontSizeAdjust,fontPalette,fontKerning,fontFeatureSettings,fontWeight,fontSmoothing,fontVariant,fontVariantAlternates,fontVariantCaps,fontVariationSettings,fontVariantNumeric,letterSpacing,lineHeight,textAlign,textDecoration,textDecorationColor,textEmphasisColor,textDecorationStyle,textDecorationThickness,textUnderlineOffset,textTransform,textIndent,textShadow,textOverflow,verticalAlign,wordBreak,textWrap,truncate,lineClamp,listStyleType,listStylePosition,listStyleImage,listStyle,backgroundPosition,backgroundPositionX,backgroundPositionY,backgroundAttachment,backgroundClip,background,backgroundColor,backgroundOrigin,backgroundImage,backgroundRepeat,backgroundBlendMode,backgroundSize,backgroundGradient,backgroundLinear,backgroundRadial,backgroundConic,textGradient,gradientFromPosition,gradientToPosition,gradientFrom,gradientTo,gradientVia,gradientViaPosition,borderRadius,borderTopLeftRadius,borderTopRightRadius,borderBottomRightRadius,borderBottomLeftRadius,borderTopRadius,borderRightRadius,borderBottomRadius,borderLeftRadius,borderStartStartRadius,borderStartEndRadius,borderStartRadius,borderEndStartRadius,borderEndEndRadius,borderEndRadius,border,borderWidth,borderTopWidth,borderLeftWidth,borderRightWidth,borderBottomWidth,borderBlockStartWidth,borderBlockEndWidth,borderColor,borderInline,borderInlineWidth,borderInlineColor,borderBlock,borderBlockWidth,borderBlockColor,borderLeft,borderLeftColor,borderInlineStart,borderInlineStartWidth,borderInlineStartColor,borderRight,borderRightColor,borderInlineEnd,borderInlineEndWidth,borderInlineEndColor,borderTop,borderTopColor,borderBottom,borderBottomColor,borderBlockEnd,borderBlockEndColor,borderBlockStart,borderBlockStartColor,opacity,boxShadow,boxShadowColor,mixBlendMode,filter,brightness,contrast,grayscale,hueRotate,invert,saturate,sepia,dropShadow,blur,backdropFilter,backdropBlur,backdropBrightness,backdropContrast,backdropGrayscale,backdropHueRotate,backdropInvert,backdropOpacity,backdropSaturate,backdropSepia,borderCollapse,borderSpacing,borderSpacingX,borderSpacingY,tableLayout,transitionTimingFunction,transitionDelay,transitionDuration,transitionProperty,transition,animation,animationName,animationTimingFunction,animationDuration,animationDelay,animationPlayState,animationComposition,animationFillMode,animationDirection,animationIterationCount,animationRange,animationState,animationRangeStart,animationRangeEnd,animationTimeline,transformOrigin,transformBox,transformStyle,transform,rotate,rotateX,rotateY,rotateZ,scale,scaleX,scaleY,translate,translateX,translateY,translateZ,accentColor,caretColor,scrollBehavior,scrollbar,scrollbarColor,scrollbarGutter,scrollbarWidth,scrollMargin,scrollMarginLeft,scrollMarginRight,scrollMarginTop,scrollMarginBottom,scrollMarginBlock,scrollMarginBlockEnd,scrollMarginBlockStart,scrollMarginInline,scrollMarginInlineEnd,scrollMarginInlineStart,scrollPadding,scrollPaddingBlock,scrollPaddingBlockStart,scrollPaddingBlockEnd,scrollPaddingInline,scrollPaddingInlineEnd,scrollPaddingInlineStart,scrollPaddingLeft,scrollPaddingRight,scrollPaddingTop,scrollPaddingBottom,scrollSnapAlign,scrollSnapStop,scrollSnapType,scrollSnapStrictness,scrollSnapMargin,scrollSnapMarginTop,scrollSnapMarginBottom,scrollSnapMarginLeft,scrollSnapMarginRight,scrollSnapCoordinate,scrollSnapDestination,scrollSnapPointsX,scrollSnapPointsY,scrollSnapTypeX,scrollSnapTypeY,scrollTimeline,scrollTimelineAxis,scrollTimelineName,touchAction,userSelect,overflow,overflowWrap,overflowX,overflowY,overflowAnchor,overflowBlock,overflowInline,overflowClipBox,overflowClipMargin,overscrollBehaviorBlock,overscrollBehaviorInline,fill,stroke,strokeWidth,strokeDasharray,strokeDashoffset,strokeLinecap,strokeLinejoin,strokeMiterlimit,strokeOpacity,srOnly,debug,appearance,backfaceVisibility,clipPath,hyphens,mask,maskImage,maskSize,textSizeAdjust,container,containerName,containerType,cursor,colorPalette,_hover,_focus,_focusWithin,_focusVisible,_disabled,_active,_visited,_target,_readOnly,_readWrite,_empty,_checked,_enabled,_expanded,_highlighted,_complete,_incomplete,_dragging,_before,_after,_firstLetter,_firstLine,_marker,_selection,_file,_backdrop,_first,_last,_only,_even,_odd,_firstOfType,_lastOfType,_onlyOfType,_peerFocus,_peerHover,_peerActive,_peerFocusWithin,_peerFocusVisible,_peerDisabled,_peerChecked,_peerInvalid,_peerExpanded,_peerPlaceholderShown,_groupFocus,_groupHover,_groupActive,_groupFocusWithin,_groupFocusVisible,_groupDisabled,_groupChecked,_groupExpanded,_groupInvalid,_indeterminate,_required,_valid,_invalid,_autofill,_inRange,_outOfRange,_placeholder,_placeholderShown,_pressed,_selected,_grabbed,_underValue,_overValue,_atValue,_default,_optional,_open,_closed,_fullscreen,_loading,_hidden,_current,_currentPage,_currentStep,_today,_unavailable,_rangeStart,_rangeEnd,_now,_topmost,_motionReduce,_motionSafe,_print,_landscape,_portrait,_dark,_light,_osDark,_osLight,_highContrast,_lessContrast,_moreContrast,_ltr,_rtl,_scrollbar,_scrollbarThumb,_scrollbarTrack,_horizontal,_vertical,_icon,_starting,_noscript,_invertedColors,_shapeSizeXs,_shapeSizeSm,_shapeSizeMd,_shapeSizeLg,_shapeSizeXl,_shapeRectangle,_shapePerson,_shapeBrowser,_shapeMobile,_shapeCylinder,_shapeStorage,_shapeQueue,_notDisabled,_reduceGraphics,_reduceGraphicsOnPan,_noReduceGraphics,_whenPanning,_smallZoom,_compoundTransparent,_edgeActive,_whenHovered,_whenSelected,_whenDimmed,_whenFocused,_p3,_srgb,_rec2020,xs,xsOnly,xsDown,sm,smOnly,smDown,md,mdOnly,mdDown,lg,lgOnly,lgDown,xl,xlOnly,xlDown,xsToSm,xsToMd,xsToLg,xsToXl,smToMd,smToLg,smToXl,mdToLg,mdToXl,lgToXl,@/xs,@/sm,@/md,@/lg,@likec4-root/xs,@likec4-root/sm,@likec4-root/md,@likec4-root/lg,@likec4-dialog/xs,@likec4-dialog/sm,@likec4-dialog/md,@likec4-dialog/lg,textStyle,layerStyle,animationStyle", userGenerated = userGeneratedStr.split(","), cssPropertiesStr = "WebkitAppearance,WebkitBorderBefore,WebkitBorderBeforeColor,WebkitBorderBeforeStyle,WebkitBorderBeforeWidth,WebkitBoxReflect,WebkitLineClamp,WebkitMask,WebkitMaskAttachment,WebkitMaskClip,WebkitMaskComposite,WebkitMaskImage,WebkitMaskOrigin,WebkitMaskPosition,WebkitMaskPositionX,WebkitMaskPositionY,WebkitMaskRepeat,WebkitMaskRepeatX,WebkitMaskRepeatY,WebkitMaskSize,WebkitOverflowScrolling,WebkitTapHighlightColor,WebkitTextFillColor,WebkitTextStroke,WebkitTextStrokeColor,WebkitTextStrokeWidth,WebkitTouchCallout,WebkitUserModify,WebkitUserSelect,accentColor,alignContent,alignItems,alignSelf,alignTracks,all,anchorName,anchorScope,animation,animationComposition,animationDelay,animationDirection,animationDuration,animationFillMode,animationIterationCount,animationName,animationPlayState,animationRange,animationRangeEnd,animationRangeStart,animationTimeline,animationTimingFunction,appearance,aspectRatio,backdropFilter,backfaceVisibility,background,backgroundAttachment,backgroundBlendMode,backgroundClip,backgroundColor,backgroundImage,backgroundOrigin,backgroundPosition,backgroundPositionX,backgroundPositionY,backgroundRepeat,backgroundSize,blockSize,border,borderBlock,borderBlockColor,borderBlockEnd,borderBlockEndColor,borderBlockEndStyle,borderBlockEndWidth,borderBlockStart,borderBlockStartColor,borderBlockStartStyle,borderBlockStartWidth,borderBlockStyle,borderBlockWidth,borderBottom,borderBottomColor,borderBottomLeftRadius,borderBottomRightRadius,borderBottomStyle,borderBottomWidth,borderCollapse,borderColor,borderEndEndRadius,borderEndStartRadius,borderImage,borderImageOutset,borderImageRepeat,borderImageSlice,borderImageSource,borderImageWidth,borderInline,borderInlineColor,borderInlineEnd,borderInlineEndColor,borderInlineEndStyle,borderInlineEndWidth,borderInlineStart,borderInlineStartColor,borderInlineStartStyle,borderInlineStartWidth,borderInlineStyle,borderInlineWidth,borderLeft,borderLeftColor,borderLeftStyle,borderLeftWidth,borderRadius,borderRight,borderRightColor,borderRightStyle,borderRightWidth,borderSpacing,borderStartEndRadius,borderStartStartRadius,borderStyle,borderTop,borderTopColor,borderTopLeftRadius,borderTopRightRadius,borderTopStyle,borderTopWidth,borderWidth,bottom,boxAlign,boxDecorationBreak,boxDirection,boxFlex,boxFlexGroup,boxLines,boxOrdinalGroup,boxOrient,boxPack,boxShadow,boxSizing,breakAfter,breakBefore,breakInside,captionSide,caret,caretColor,caretShape,clear,clip,clipPath,clipRule,color,colorInterpolationFilters,colorScheme,columnCount,columnFill,columnGap,columnRule,columnRuleColor,columnRuleStyle,columnRuleWidth,columnSpan,columnWidth,columns,contain,containIntrinsicBlockSize,containIntrinsicHeight,containIntrinsicInlineSize,containIntrinsicSize,containIntrinsicWidth,container,containerName,containerType,content,contentVisibility,counterIncrement,counterReset,counterSet,cursor,cx,cy,d,direction,display,dominantBaseline,emptyCells,fieldSizing,fill,fillOpacity,fillRule,filter,flex,flexBasis,flexDirection,flexFlow,flexGrow,flexShrink,flexWrap,float,floodColor,floodOpacity,font,fontFamily,fontFeatureSettings,fontKerning,fontLanguageOverride,fontOpticalSizing,fontPalette,fontSize,fontSizeAdjust,fontSmooth,fontStretch,fontStyle,fontSynthesis,fontSynthesisPosition,fontSynthesisSmallCaps,fontSynthesisStyle,fontSynthesisWeight,fontVariant,fontVariantAlternates,fontVariantCaps,fontVariantEastAsian,fontVariantEmoji,fontVariantLigatures,fontVariantNumeric,fontVariantPosition,fontVariationSettings,fontWeight,forcedColorAdjust,gap,grid,gridArea,gridAutoColumns,gridAutoFlow,gridAutoRows,gridColumn,gridColumnEnd,gridColumnGap,gridColumnStart,gridGap,gridRow,gridRowEnd,gridRowGap,gridRowStart,gridTemplate,gridTemplateAreas,gridTemplateColumns,gridTemplateRows,hangingPunctuation,height,hyphenateCharacter,hyphenateLimitChars,hyphens,imageOrientation,imageRendering,imageResolution,imeMode,initialLetter,initialLetterAlign,inlineSize,inset,insetBlock,insetBlockEnd,insetBlockStart,insetInline,insetInlineEnd,insetInlineStart,interpolateSize,isolation,justifyContent,justifyItems,justifySelf,justifyTracks,left,letterSpacing,lightingColor,lineBreak,lineClamp,lineHeight,lineHeightStep,listStyle,listStyleImage,listStylePosition,listStyleType,margin,marginBlock,marginBlockEnd,marginBlockStart,marginBottom,marginInline,marginInlineEnd,marginInlineStart,marginLeft,marginRight,marginTop,marginTrim,marker,markerEnd,markerMid,markerStart,mask,maskBorder,maskBorderMode,maskBorderOutset,maskBorderRepeat,maskBorderSlice,maskBorderSource,maskBorderWidth,maskClip,maskComposite,maskImage,maskMode,maskOrigin,maskPosition,maskRepeat,maskSize,maskType,masonryAutoFlow,mathDepth,mathShift,mathStyle,maxBlockSize,maxHeight,maxInlineSize,maxLines,maxWidth,minBlockSize,minHeight,minInlineSize,minWidth,mixBlendMode,objectFit,objectPosition,offset,offsetAnchor,offsetDistance,offsetPath,offsetPosition,offsetRotate,opacity,order,orphans,outline,outlineColor,outlineOffset,outlineStyle,outlineWidth,overflow,overflowAnchor,overflowBlock,overflowClipBox,overflowClipMargin,overflowInline,overflowWrap,overflowX,overflowY,overlay,overscrollBehavior,overscrollBehaviorBlock,overscrollBehaviorInline,overscrollBehaviorX,overscrollBehaviorY,padding,paddingBlock,paddingBlockEnd,paddingBlockStart,paddingBottom,paddingInline,paddingInlineEnd,paddingInlineStart,paddingLeft,paddingRight,paddingTop,page,pageBreakAfter,pageBreakBefore,pageBreakInside,paintOrder,perspective,perspectiveOrigin,placeContent,placeItems,placeSelf,pointerEvents,position,positionAnchor,positionArea,positionTry,positionTryFallbacks,positionTryOrder,positionVisibility,printColorAdjust,quotes,r,resize,right,rotate,rowGap,rubyAlign,rubyMerge,rubyPosition,rx,ry,scale,scrollBehavior,scrollMargin,scrollMarginBlock,scrollMarginBlockEnd,scrollMarginBlockStart,scrollMarginBottom,scrollMarginInline,scrollMarginInlineEnd,scrollMarginInlineStart,scrollMarginLeft,scrollMarginRight,scrollMarginTop,scrollPadding,scrollPaddingBlock,scrollPaddingBlockEnd,scrollPaddingBlockStart,scrollPaddingBottom,scrollPaddingInline,scrollPaddingInlineEnd,scrollPaddingInlineStart,scrollPaddingLeft,scrollPaddingRight,scrollPaddingTop,scrollSnapAlign,scrollSnapCoordinate,scrollSnapDestination,scrollSnapPointsX,scrollSnapPointsY,scrollSnapStop,scrollSnapType,scrollSnapTypeX,scrollSnapTypeY,scrollTimeline,scrollTimelineAxis,scrollTimelineName,scrollbarColor,scrollbarGutter,scrollbarWidth,shapeImageThreshold,shapeMargin,shapeOutside,shapeRendering,stopColor,stopOpacity,stroke,strokeDasharray,strokeDashoffset,strokeLinecap,strokeLinejoin,strokeMiterlimit,strokeOpacity,strokeWidth,tabSize,tableLayout,textAlign,textAlignLast,textAnchor,textBox,textBoxEdge,textBoxTrim,textCombineUpright,textDecoration,textDecorationColor,textDecorationLine,textDecorationSkip,textDecorationSkipInk,textDecorationStyle,textDecorationThickness,textEmphasis,textEmphasisColor,textEmphasisPosition,textEmphasisStyle,textIndent,textJustify,textOrientation,textOverflow,textRendering,textShadow,textSizeAdjust,textSpacingTrim,textTransform,textUnderlineOffset,textUnderlinePosition,textWrap,textWrapMode,textWrapStyle,timelineScope,top,touchAction,transform,transformBox,transformOrigin,transformStyle,transition,transitionBehavior,transitionDelay,transitionDuration,transitionProperty,transitionTimingFunction,translate,unicodeBidi,userSelect,vectorEffect,verticalAlign,viewTimeline,viewTimelineAxis,viewTimelineInset,viewTimelineName,viewTransitionName,visibility,whiteSpace,whiteSpaceCollapse,widows,width,willChange,wordBreak,wordSpacing,wordWrap,writingMode,x,y,zIndex,zoom,alignmentBaseline,baselineShift,colorInterpolation,colorRendering,glyphOrientationVertical", allCssProperties = cssPropertiesStr.split(",").concat(userGenerated), properties = new Map(allCssProperties.map((prop) => [prop, !0])), cssPropertySelectorRegex = /&|@/, isCssProperty = /* @__PURE__ */ memo((prop) => properties.has(prop) || prop.startsWith("--") || cssPropertySelectorRegex.test(prop));
17286
+ const defaultShouldForwardProp = (prop, variantKeys) => !variantKeys.includes(prop) && !isCssProperty(prop), composeShouldForwardProps = (tag, shouldForwardProp) => tag.__shouldForwardProps__ && shouldForwardProp ? (propName) => tag.__shouldForwardProps__(propName) && shouldForwardProp(propName) : shouldForwardProp, composeCvaFn = (cvaA, cvaB) => {
17287
+ if (cvaA && !cvaB) return cvaA;
17288
+ if (!cvaA && cvaB) return cvaB;
17289
+ if (cvaA.__cva__ && cvaB.__cva__ || cvaA.__recipe__ && cvaB.__recipe__) return cvaA.merge(cvaB);
17290
+ const error = new TypeError("Cannot merge cva with recipe. Please use either cva or recipe.");
17291
+ throw TypeError.captureStackTrace?.(error), error;
17292
+ }, getDisplayName = (Component) => typeof Component == "string" ? Component : Component?.displayName || Component?.name || "Component";
17293
+ function styledFn(Dynamic, configOrCva = {}, options = {}) {
17294
+ const cvaFn = configOrCva.__cva__ || configOrCva.__recipe__ ? configOrCva : cva(configOrCva), forwardFn = options.shouldForwardProp || defaultShouldForwardProp, shouldForwardProp = (prop) => options.forwardProps?.includes(prop) ? !0 : forwardFn(prop, cvaFn.variantKeys), defaultProps2 = Object.assign(
17295
+ options.dataAttr && configOrCva.__name__ ? { "data-recipe": configOrCva.__name__ } : {},
17296
+ options.defaultProps
17297
+ ), __cvaFn__ = composeCvaFn(Dynamic.__cva__, cvaFn), __shouldForwardProps__ = composeShouldForwardProps(Dynamic, shouldForwardProp), __base__ = Dynamic.__base__ || Dynamic, StyledComponent = /* @__PURE__ */ forwardRef(function(props, ref) {
17298
+ const { as: Element2 = __base__, unstyled, children: children2, ...restProps } = props, combinedProps = useMemo(() => Object.assign({}, defaultProps2, restProps), [restProps]), [htmlProps2, forwardedProps, variantProps2, styleProps, elementProps] = useMemo(() => splitProps(combinedProps, normalizeHTMLProps.keys, __shouldForwardProps__, __cvaFn__.variantKeys, isCssProperty), [combinedProps]);
17299
+ function recipeClass() {
17300
+ const { css: cssStyles, ...propStyles } = styleProps, compoundVariantStyles = __cvaFn__.__getCompoundVariantCss__?.(variantProps2);
17301
+ return cx(__cvaFn__(variantProps2, !1), css(compoundVariantStyles, propStyles, cssStyles), combinedProps.className);
17406
17302
  }
17407
- return shapes;
17408
- }
17409
- intersects(curve, curveIntersectionThreshold) {
17410
- return curve ? curve.p1 && curve.p2 ? this.lineIntersects(curve) : (curve instanceof Bezier && (curve = curve.reduce()), this.curveintersects(
17411
- this.reduce(),
17412
- curve,
17413
- curveIntersectionThreshold
17414
- )) : this.selfintersects(curveIntersectionThreshold);
17415
- }
17416
- lineIntersects(line) {
17417
- const mx = min(line.p1.x, line.p2.x), my = min(line.p1.y, line.p2.y), MX = max(line.p1.x, line.p2.x), MY = max(line.p1.y, line.p2.y);
17418
- return utils.roots(this.points, line).filter((t2) => {
17419
- var p = this.get(t2);
17420
- return utils.between(p.x, mx, MX) && utils.between(p.y, my, MY);
17421
- });
17422
- }
17423
- selfintersects(curveIntersectionThreshold) {
17424
- const reduced = this.reduce(), len = reduced.length - 2, results = [];
17425
- for (let i2 = 0, result, left, right; i2 < len; i2++)
17426
- left = reduced.slice(i2, i2 + 1), right = reduced.slice(i2 + 2), result = this.curveintersects(left, right, curveIntersectionThreshold), results.push(...result);
17427
- return results;
17428
- }
17429
- curveintersects(c1, c2, curveIntersectionThreshold) {
17430
- const pairs = [];
17431
- c1.forEach(function(l) {
17432
- c2.forEach(function(r2) {
17433
- l.overlaps(r2) && pairs.push({ left: l, right: r2 });
17434
- });
17435
- });
17436
- let intersections = [];
17437
- return pairs.forEach(function(pair) {
17438
- const result = utils.pairiteration(
17439
- pair.left,
17440
- pair.right,
17441
- curveIntersectionThreshold
17442
- );
17443
- result.length > 0 && (intersections = intersections.concat(result));
17444
- }), intersections;
17445
- }
17446
- arcs(errorThreshold) {
17447
- return errorThreshold = errorThreshold || 0.5, this._iterate(errorThreshold, []);
17448
- }
17449
- _error(pc, np1, s, e2) {
17450
- const q = (e2 - s) / 4, c1 = this.get(s + q), c2 = this.get(e2 - q), ref = utils.dist(pc, np1), d1 = utils.dist(pc, c1), d2 = utils.dist(pc, c2);
17451
- return abs(d1 - ref) + abs(d2 - ref);
17452
- }
17453
- _iterate(errorThreshold, circles) {
17454
- let t_s = 0, t_e = 1, safety;
17455
- do {
17456
- safety = 0, t_e = 1;
17457
- let np1 = this.get(t_s), np2, np3, arc, prev_arc, curr_good = !1, prev_good = !1, done, t_m = t_e, prev_e = 1;
17458
- do
17459
- if (prev_good = curr_good, prev_arc = arc, t_m = (t_s + t_e) / 2, np2 = this.get(t_m), np3 = this.get(t_e), arc = utils.getccenter(np1, np2, np3), arc.interval = {
17460
- start: t_s,
17461
- end: t_e
17462
- }, curr_good = this._error(arc, np1, t_s, t_e) <= errorThreshold, done = prev_good && !curr_good, done || (prev_e = t_e), curr_good) {
17463
- if (t_e >= 1) {
17464
- if (arc.interval.end = prev_e = 1, prev_arc = arc, t_e > 1) {
17465
- let d = {
17466
- x: arc.x + arc.r * cos(arc.e),
17467
- y: arc.y + arc.r * sin(arc.e)
17468
- };
17469
- arc.e += utils.angle({ x: arc.x, y: arc.y }, d, this.get(1));
17470
- }
17471
- break;
17472
- }
17473
- t_e = t_e + (t_e - t_s) / 2;
17474
- } else
17475
- t_e = t_m;
17476
- while (!done && safety++ < 100);
17477
- if (safety >= 100)
17478
- break;
17479
- prev_arc = prev_arc || arc, circles.push(prev_arc), t_s = prev_e;
17480
- } while (t_e < 1);
17481
- return circles;
17303
+ function cvaClass() {
17304
+ const { css: cssStyles, ...propStyles } = styleProps, cvaStyles = __cvaFn__.raw(variantProps2);
17305
+ return cx(css(cvaStyles, propStyles, cssStyles), combinedProps.className);
17306
+ }
17307
+ const classes2 = () => {
17308
+ if (unstyled) {
17309
+ const { css: cssStyles, ...propStyles } = styleProps;
17310
+ return cx(css(propStyles, cssStyles), combinedProps.className);
17311
+ }
17312
+ return configOrCva.__recipe__ ? recipeClass() : cvaClass();
17313
+ };
17314
+ return createElement(Element2, {
17315
+ ref,
17316
+ ...forwardedProps,
17317
+ ...elementProps,
17318
+ ...normalizeHTMLProps(htmlProps2),
17319
+ className: classes2()
17320
+ }, children2 ?? combinedProps.children);
17321
+ }), name = getDisplayName(__base__);
17322
+ return StyledComponent.displayName = `styled.${name}`, StyledComponent.__cva__ = __cvaFn__, StyledComponent.__base__ = __base__, StyledComponent.__shouldForwardProps__ = shouldForwardProp, StyledComponent;
17323
+ }
17324
+ function createJsxFactory() {
17325
+ const cache = /* @__PURE__ */ new Map();
17326
+ return new Proxy(styledFn, {
17327
+ apply(_, __, args) {
17328
+ return styledFn(...args);
17329
+ },
17330
+ get(_, el) {
17331
+ return cache.has(el) || cache.set(el, styledFn(el)), cache.get(el);
17332
+ }
17333
+ });
17334
+ }
17335
+ const styled = /* @__PURE__ */ createJsxFactory(), boxConfig = {
17336
+ transform(props) {
17337
+ return props;
17482
17338
  }
17339
+ }, getBoxStyle = (styles = {}) => {
17340
+ const _styles = getPatternStyles(boxConfig, styles);
17341
+ return boxConfig.transform(_styles, patternFns);
17342
+ }, Box = /* @__PURE__ */ forwardRef(function(props, ref) {
17343
+ const [patternProps, restProps] = splitProps(props, []), styleProps = getBoxStyle(patternProps), mergedProps = { ref, ...styleProps, ...restProps };
17344
+ return createElement(styled.div, mergedProps);
17345
+ }), hstackConfig = {
17346
+ transform(props) {
17347
+ const { justify, gap, ...rest } = props;
17348
+ return {
17349
+ display: "flex",
17350
+ alignItems: "center",
17351
+ justifyContent: justify,
17352
+ gap,
17353
+ flexDirection: "row",
17354
+ ...rest
17355
+ };
17356
+ },
17357
+ defaultValues: { gap: "sm" }
17358
+ }, getHstackStyle = (styles = {}) => {
17359
+ const _styles = getPatternStyles(hstackConfig, styles);
17360
+ return hstackConfig.transform(_styles, patternFns);
17361
+ }, hstack = (styles) => css(getHstackStyle(styles));
17362
+ hstack.raw = getHstackStyle;
17363
+ const HStack = /* @__PURE__ */ forwardRef(function(props, ref) {
17364
+ const [patternProps, restProps] = splitProps(props, ["justify", "gap"]), styleProps = getHstackStyle(patternProps), mergedProps = { ref, ...styleProps, ...restProps };
17365
+ return createElement(styled.div, mergedProps);
17366
+ });
17367
+ let listenerQueue = [], lqIndex = 0;
17368
+ const QUEUE_ITEMS_PER_LISTENER = 4;
17369
+ let atom = (initialValue) => {
17370
+ let listeners = [], $atom = {
17371
+ get() {
17372
+ return $atom.lc || $atom.listen(() => {
17373
+ })(), $atom.value;
17374
+ },
17375
+ lc: 0,
17376
+ listen(listener) {
17377
+ return $atom.lc = listeners.push(listener), () => {
17378
+ for (let i2 = lqIndex + QUEUE_ITEMS_PER_LISTENER; i2 < listenerQueue.length; )
17379
+ listenerQueue[i2] === listener ? listenerQueue.splice(i2, QUEUE_ITEMS_PER_LISTENER) : i2 += QUEUE_ITEMS_PER_LISTENER;
17380
+ let index2 = listeners.indexOf(listener);
17381
+ ~index2 && (listeners.splice(index2, 1), --$atom.lc || $atom.off());
17382
+ };
17383
+ },
17384
+ notify(oldValue, changedKey) {
17385
+ let runListenerQueue = !listenerQueue.length;
17386
+ for (let listener of listeners)
17387
+ listenerQueue.push(listener, $atom.value, oldValue, changedKey);
17388
+ if (runListenerQueue) {
17389
+ for (lqIndex = 0; lqIndex < listenerQueue.length; lqIndex += QUEUE_ITEMS_PER_LISTENER)
17390
+ listenerQueue[lqIndex](
17391
+ listenerQueue[lqIndex + 1],
17392
+ listenerQueue[lqIndex + 2],
17393
+ listenerQueue[lqIndex + 3]
17394
+ );
17395
+ listenerQueue.length = 0;
17396
+ }
17397
+ },
17398
+ /* It will be called on last listener unsubscribing.
17399
+ We will redefine it in onMount and onStop. */
17400
+ off() {
17401
+ },
17402
+ set(newValue) {
17403
+ let oldValue = $atom.value;
17404
+ oldValue !== newValue && ($atom.value = newValue, $atom.notify(oldValue));
17405
+ },
17406
+ subscribe(listener) {
17407
+ let unbind = $atom.listen(listener);
17408
+ return listener($atom.value), unbind;
17409
+ },
17410
+ value: initialValue
17411
+ };
17412
+ return $atom;
17413
+ };
17414
+ const ReduceGraphicsModeCtx = createContext(null);
17415
+ function useIsReducedGraphics() {
17416
+ const isReduced = useContext(ReduceGraphicsModeCtx);
17417
+ return isReduced === null && console.warn("ReduceGraphicsMode is not provided"), isReduced ?? !1;
17483
17418
  }
17484
- function bezierControlPoints(diagramEdge) {
17485
- let [start2, ...bezierPoints] = diagramEdge.points;
17486
- invariant(start2, "start should be defined");
17487
- const handles = [
17488
- // start
17489
- ];
17490
- for (; t$6(bezierPoints, 3); ) {
17491
- const [cp1, cp2, end, ...rest] = bezierPoints, bezier = new Bezier(start2[0], start2[1], cp1[0], cp1[1], cp2[0], cp2[1], end[0], end[1]), inflections = bezier.inflections();
17492
- inflections.length === 0 && inflections.push(0.5), inflections.forEach((t2) => {
17493
- const { x, y } = bezier.get(t2);
17494
- handles.push({
17495
- x: Math.round(x),
17496
- y: Math.round(y)
17497
- });
17498
- }), bezierPoints = rest, start2 = end;
17499
- }
17500
- return invariant(bezierPoints.length === 0, "all points should be consumed"), handles;
17419
+ const [PanningAtomSafeCtx, usePanningAtom] = createSafeContext(
17420
+ "PanningAtomSafeCtx is not provided"
17421
+ );
17422
+ function ReduceGraphicsContext({ reduceGraphics, children: children2 }) {
17423
+ const $isPanningRef = useRef(null);
17424
+ return $isPanningRef.current || ($isPanningRef.current = atom(reduceGraphics)), /* @__PURE__ */ jsx(PanningAtomSafeCtx, { value: $isPanningRef.current, children: /* @__PURE__ */ jsx(ReduceGraphicsModeCtx.Provider, { value: reduceGraphics, children: children2 }) });
17501
17425
  }
17502
- const isClose = (a, b) => Math.abs(a - b) < 3.1;
17503
- function isSamePoint(a, b) {
17504
- const [ax, ay] = e$4(a) ? a : [a.x, a.y], [bx, by] = e$4(b) ? b : [b.x, b.y];
17505
- return isClose(ax, bx) && isClose(ay, by);
17426
+ const LikeC4ModelContext = createContext(null), CurrentViewModelContext = createContext(null);
17427
+ function EnsureCurrentViewModel({ children: children2 }) {
17428
+ return useContext(CurrentViewModelContext) ? /* @__PURE__ */ jsx(Fragment$1, { children: children2 }) : null;
17506
17429
  }
17507
- function stopPropagation(e2) {
17508
- return e2.stopPropagation();
17430
+ function useLikeC4Model() {
17431
+ const model = useContext(LikeC4ModelContext);
17432
+ if (!model)
17433
+ throw new Error("LikeC4Model not found. Make sure you have LikeC4ModelProvider.");
17434
+ return model;
17509
17435
  }
17510
- function centerXYInternalNode(nd) {
17511
- const { width, height } = getNodeDimensions(nd);
17512
- return {
17513
- x: nd.internals.positionAbsolute.x + width / 2,
17514
- y: nd.internals.positionAbsolute.y + height / 2
17436
+ function useLikeC4ViewModel(viewId) {
17437
+ return useLikeC4Model().view(viewId);
17438
+ }
17439
+ function useLikeC4Specification() {
17440
+ const model = useLikeC4Model(), [specification, setSpecification] = useState(model.$data.specification);
17441
+ return useEffect(() => {
17442
+ setSpecification((current) => deepEqual(current, model.$data.specification) ? current : model.$data.specification);
17443
+ }, [model]), specification;
17444
+ }
17445
+ const TagStylesContext = createContext({}), radixColors = [
17446
+ "yellow",
17447
+ "orange",
17448
+ "amber",
17449
+ "tomato",
17450
+ "red",
17451
+ "ruby",
17452
+ "crimson",
17453
+ "pink",
17454
+ "pink",
17455
+ "purple",
17456
+ "violet",
17457
+ "indigo",
17458
+ "blue",
17459
+ "teal",
17460
+ "grass",
17461
+ "lime"
17462
+ ], generateColorVars = (spec) => {
17463
+ const color2 = spec.color;
17464
+ if (isTagColorSpecified(spec))
17465
+ return `
17466
+ --colors-likec4-tag-bg: ${color2};
17467
+ --colors-likec4-tag-bg-hover: color-mix(in srgb, ${color2}, var(--colors-likec4-mix-color) 20%);
17468
+ `;
17469
+ if (!radixColors.includes(color2))
17470
+ return "";
17471
+ let textcolor = "12";
17472
+ return ["mint", "grass", "lime", "yellow", "amber"].includes(color2) && (textcolor = "dark-2"), `
17473
+ --colors-likec4-tag-border: var(--colors-${color2}-8);
17474
+ --colors-likec4-tag-bg: var(--colors-${color2}-9);
17475
+ --colors-likec4-tag-bg-hover: var(--colors-${color2}-10);
17476
+ --colors-likec4-tag-text: var(--colors-${color2}-${textcolor});
17477
+ `;
17478
+ };
17479
+ function TagStylesProvider({ children: children2, rootSelector }) {
17480
+ const tags = useLikeC4Specification().tags, { specs, stylesheet } = useDeepCompareMemo(() => tags ? {
17481
+ specs: tags,
17482
+ stylesheet: t$7(
17483
+ t$5(tags),
17484
+ t$4(([tag, spec]) => [
17485
+ `:is(${rootSelector} [data-likec4-tag="${tag}"]) {`,
17486
+ generateColorVars(spec),
17487
+ "}"
17488
+ ]),
17489
+ t$3(`
17490
+ `)
17491
+ )
17492
+ } : { specs: {}, stylesheet: "" }, [tags, rootSelector]);
17493
+ return /* @__PURE__ */ jsxs(TagStylesContext.Provider, { value: specs, children: [
17494
+ stylesheet !== "" && /* @__PURE__ */ jsx(TagStylesheet, { stylesheet }),
17495
+ children2
17496
+ ] });
17497
+ }
17498
+ function TagStylesheet({ stylesheet }) {
17499
+ const nonce = useMantineStyleNonce()?.();
17500
+ return /* @__PURE__ */ jsx("style", { "data-likec4-tag-stylesheet": !0, type: "text/css", dangerouslySetInnerHTML: { __html: stylesheet }, nonce });
17501
+ }
17502
+ function useTagSpecification(tag) {
17503
+ return useContext(TagStylesContext)[tag] ?? {
17504
+ color: "tomato"
17515
17505
  };
17516
17506
  }
17517
- function bezierPath(bezierSpline) {
17518
- let [start2, ...points] = bezierSpline;
17519
- invariant(start2, "start should be defined");
17520
- let path = `M ${start2[0]},${start2[1]}`;
17521
- for (; t$6(points, 3); ) {
17522
- const [cp1, cp2, end, ...rest] = points;
17523
- path = path + ` C ${cp1[0]},${cp1[1]} ${cp2[0]},${cp2[1]} ${end[0]},${end[1]}`, points = rest;
17524
- }
17525
- return invariant(points.length === 0, "all points should be consumed"), path;
17507
+ const RootContainerContext = createContext(createRef());
17508
+ function RootContainer({
17509
+ id: id2,
17510
+ className,
17511
+ reduceGraphics = !1,
17512
+ children: children2
17513
+ }) {
17514
+ const ref = useRef(null), $isPanning = usePanningAtom();
17515
+ return useEffect(() => $isPanning.listen((isPanning) => {
17516
+ ref.current?.setAttribute("data-likec4-diagram-panning", isPanning ? "true" : "false");
17517
+ }), [$isPanning]), /* @__PURE__ */ jsx(
17518
+ Box,
17519
+ {
17520
+ id: id2,
17521
+ className: cx("likec4-root", className),
17522
+ ref,
17523
+ ...reduceGraphics && {
17524
+ "data-likec4-reduced-graphics": !0
17525
+ },
17526
+ children: /* @__PURE__ */ jsx(TagStylesProvider, { rootSelector: `#${id2}`, children: /* @__PURE__ */ jsx(RootContainerContext.Provider, { value: ref, children: children2 }) })
17527
+ }
17528
+ );
17529
+ }
17530
+ function useRootContainer() {
17531
+ return useContext(RootContainerContext).current;
17526
17532
  }
17527
17533
  function useMantinePortalProps() {
17528
17534
  const target = useRootContainer();
@@ -19299,12 +19305,7 @@ function focusedBounds(params) {
19299
19305
  if (knownAbsolutes.set(node.id, position), node.hidden || node.data.dimmed)
19300
19306
  return acc;
19301
19307
  const width = node.measured?.width ?? node.width ?? node.initialWidth, height = node.measured?.height ?? node.height ?? node.initialHeight;
19302
- return {
19303
- minX: Math.min(acc.minX, position.x),
19304
- minY: Math.min(acc.minY, position.y),
19305
- maxX: Math.max(acc.maxX, position.x + width),
19306
- maxY: Math.max(acc.maxY, position.y + height)
19307
- };
19308
+ return acc.minX = Math.min(acc.minX, position.x), acc.minY = Math.min(acc.minY, position.y), acc.maxX = Math.max(acc.maxX, position.x + width), acc.maxY = Math.max(acc.maxY, position.y + height), acc;
19308
19309
  }, {
19309
19310
  minX: 1 / 0,
19310
19311
  minY: 1 / 0,
@@ -19323,6 +19324,45 @@ function focusedBounds(params) {
19323
19324
  }
19324
19325
  };
19325
19326
  }
19327
+ const MARGIN = 32;
19328
+ function activeSequenceBounds(params) {
19329
+ const activeWalkthrough = nonNullable(params.context.activeWalkthrough), stepEdge = nonNullable(params.context.xyedges.find((e2) => e2.id === activeWalkthrough.stepId)), xystate = params.context.xystore.getState(), sourceNode = nonNullable(xystate.nodeLookup.get(stepEdge.source)), targetNode = nonNullable(xystate.nodeLookup.get(stepEdge.target)), actorsBounds = getNodesBounds([sourceNode, targetNode], xystate);
19330
+ let stepBounds;
19331
+ if (activeWalkthrough.parallelPrefix) {
19332
+ const parallelArea = params.context.xynodes.find(
19333
+ (n2) => n2.type === "seq-parallel" && n2.data.parallelPrefix === activeWalkthrough.parallelPrefix
19334
+ );
19335
+ parallelArea && (stepBounds = {
19336
+ x: parallelArea.position.x,
19337
+ y: parallelArea.position.y,
19338
+ ...getNodeDimensions(parallelArea)
19339
+ });
19340
+ }
19341
+ return stepBounds ??= getEdgeBounds(stepEdge, xystate), stepBounds ? stepBounds = BBox.merge(stepBounds, actorsBounds) : stepBounds = actorsBounds, {
19342
+ duration: 350,
19343
+ bounds: BBox.expand(
19344
+ stepBounds,
19345
+ MARGIN
19346
+ )
19347
+ };
19348
+ }
19349
+ function getEdgeBounds(edge, store) {
19350
+ const sourceNode = store.nodeLookup.get(edge.source), targetNode = store.nodeLookup.get(edge.target);
19351
+ if (!sourceNode || !targetNode)
19352
+ return null;
19353
+ const edgePosition = getEdgePosition({
19354
+ id: edge.id,
19355
+ sourceNode,
19356
+ targetNode,
19357
+ sourceHandle: edge.sourceHandle || null,
19358
+ targetHandle: edge.targetHandle || null,
19359
+ connectionMode: store.connectionMode
19360
+ });
19361
+ return edgePosition ? BBox.fromPoints([
19362
+ [edgePosition.sourceX, edgePosition.sourceY],
19363
+ [edgePosition.targetX, edgePosition.targetY]
19364
+ ]) : null;
19365
+ }
19326
19366
  const DiagramActorSafeContext = createContext(null);
19327
19367
  DiagramActorSafeContext.displayName = "DiagramActorSafeContext";
19328
19368
  const DiagramActorContextProvider = DiagramActorSafeContext.Provider, useDiagramActorRef = () => {
@@ -19433,6 +19473,9 @@ function useDiagram() {
19433
19473
  },
19434
19474
  openSearch: (searchValue) => {
19435
19475
  actor.send({ type: "open.search", ...searchValue && { search: searchValue } });
19476
+ },
19477
+ switchDynamicViewVariant: (variant) => {
19478
+ actor.send({ type: "switch.dynamicViewVariant", variant });
19436
19479
  }
19437
19480
  }), [actor]);
19438
19481
  }
@@ -19909,8 +19952,8 @@ function ElementActionButtons({
19909
19952
  },
19910
19953
  buttons
19911
19954
  }) {
19912
- const id2 = useId$1(), zoomTooSmall = useIsZoomTooSmall();
19913
- return !buttons.length || zoomTooSmall ? null : /* @__PURE__ */ jsx(Box, { className: container$2, children: /* @__PURE__ */ jsx(
19955
+ const id2 = useId$1();
19956
+ return buttons.length ? /* @__PURE__ */ jsx(Box, { className: container$2, children: /* @__PURE__ */ jsx(
19914
19957
  MotionDiv,
19915
19958
  {
19916
19959
  layoutRoot: !0,
@@ -19944,7 +19987,7 @@ function ElementActionButtons({
19944
19987
  ))
19945
19988
  },
19946
19989
  `${id2}-action-buttons`
19947
- ) });
19990
+ ) }) : null;
19948
19991
  }
19949
19992
  const container$1 = css({
19950
19993
  position: "absolute",
@@ -20052,19 +20095,7 @@ const container = css({
20052
20095
  ":where(.react-flow__node.selectable:not(.dragging)) &": {
20053
20096
  cursor: "pointer"
20054
20097
  }
20055
- });
20056
- function nodeSizes({
20057
- size: size2,
20058
- padding,
20059
- textSize
20060
- }) {
20061
- return !size2 && textSize && (size2 = textSize), !textSize && size2 && (textSize = size2), !padding && size2 && (padding = size2), size2 ??= DefaultShapeSize, textSize ??= DefaultTextSize, padding ??= DefaultPaddingSize, {
20062
- size: size2,
20063
- padding,
20064
- textSize
20065
- };
20066
- }
20067
- const ElementNodeContainer = forwardRef(({
20098
+ }), ElementNodeContainer = forwardRef(({
20068
20099
  nodeProps: {
20069
20100
  selected: selected2 = !1,
20070
20101
  selectable = !1,
@@ -20092,7 +20123,7 @@ const ElementNodeContainer = forwardRef(({
20092
20123
  size: size2,
20093
20124
  padding,
20094
20125
  textSize
20095
- } = nodeSizes(data.style ?? {});
20126
+ } = ensureSizes(data.style ?? {});
20096
20127
  return /* @__PURE__ */ jsx(
20097
20128
  MotionDiv,
20098
20129
  {
@@ -20461,6 +20492,7 @@ const MarkdownBlock = forwardRef(({
20461
20492
  hideIfEmpty = !1,
20462
20493
  emptyText = "no content",
20463
20494
  className,
20495
+ style: style2,
20464
20496
  ...props
20465
20497
  }, ref) => {
20466
20498
  if (value.isEmpty && hideIfEmpty)
@@ -20479,6 +20511,7 @@ const MarkdownBlock = forwardRef(({
20479
20511
  className
20480
20512
  ),
20481
20513
  style: {
20514
+ ...style2,
20482
20515
  ...props.fontSize && {
20483
20516
  "--text-fz": `var(--font-sizes-${props.fontSize}, var(--font-sizes-md))`
20484
20517
  },
@@ -20502,7 +20535,7 @@ function ElementTitle({ id: id2, data, iconSize }) {
20502
20535
  hasIcon: e(elementIcon),
20503
20536
  hasDescription: !!data.description?.nonEmpty,
20504
20537
  hasTechnology: !e$3(data.technology ?? "")
20505
- }), size2 = nodeSizes(data.style).size, isSmOrXs = size2 === "sm" || size2 === "xs";
20538
+ }), { size: size2 } = ensureSizes(data.style), isSmOrXs = size2 === "sm" || size2 === "xs";
20506
20539
  return /* @__PURE__ */ jsxs(
20507
20540
  Box,
20508
20541
  {
@@ -21219,20 +21252,6 @@ const ViewGroupNode = (props) => /* @__PURE__ */ jsxs(CompoundNodeContainer, { n
21219
21252
  /* @__PURE__ */ jsx(DefaultHandles, {})
21220
21253
  ] });
21221
21254
  ViewGroupNode.displayName = "ViewGroupNode";
21222
- function useOptionalCurrentViewModel() {
21223
- return useContext(CurrentViewModelContext);
21224
- }
21225
- function useCurrentViewModel() {
21226
- const vm = useContext(CurrentViewModelContext);
21227
- if (!vm)
21228
- throw new Error("No LikeC4ViewModel in context found");
21229
- return vm;
21230
- }
21231
- const selectViewId = (s) => s.context.view.id;
21232
- function useCurrentViewId() {
21233
- const actorRef = useDiagramActorRef();
21234
- return useSelector(actorRef, selectViewId);
21235
- }
21236
21255
  const backdropBlur = "--_blur", backdropOpacity = "--_opacity", level = "--_level", offset = "--_offset", inset = "--_inset", borderRadius = "--_border-radius", dialog = css.raw({
21237
21256
  boxSizing: "border-box",
21238
21257
  margin: "0",
@@ -21457,6 +21476,20 @@ const backdropBlur = "--_blur", backdropOpacity = "--_opacity", level = "--_leve
21457
21476
  );
21458
21477
  });
21459
21478
  Overlay.displayName = "Overlay";
21479
+ const selectViewId = (s) => s.context.view.id;
21480
+ function useCurrentViewId() {
21481
+ const actorRef = useDiagramActorRef();
21482
+ return useSelector(actorRef, selectViewId);
21483
+ }
21484
+ function useOptionalCurrentViewModel() {
21485
+ return useContext(CurrentViewModelContext);
21486
+ }
21487
+ function useCurrentViewModel() {
21488
+ const vm = useContext(CurrentViewModelContext);
21489
+ if (!vm)
21490
+ throw new Error("No LikeC4ViewModel in context found");
21491
+ return vm;
21492
+ }
21460
21493
  const LikeC4ProjectsContext = createContext(null), emptyProjects = [];
21461
21494
  function useLikeC4Projects() {
21462
21495
  const ctx = useContext(LikeC4ProjectsContext);
@@ -21510,7 +21543,7 @@ export {
21510
21543
  parseThemeColor as Z,
21511
21544
  createEventHandler as _,
21512
21545
  useMediaQuery as a,
21513
- useDebouncedCallback as a$,
21546
+ useSyncedRef as a$,
21514
21547
  useDelayGroup as a0,
21515
21548
  useFloating as a1,
21516
21549
  useInteractions as a2,
@@ -21575,236 +21608,239 @@ export {
21575
21608
  LazyContext as ay,
21576
21609
  loadExternalIsValidProp as az,
21577
21610
  useMantineTheme as b,
21578
- MotionDiv as b$,
21611
+ ActionIcon as b$,
21579
21612
  isBrowser as b0,
21580
- css as b1,
21581
- getPatternStyles as b2,
21582
- patternFns as b3,
21583
- splitProps as b4,
21584
- styled as b5,
21585
- Background as b6,
21586
- BackgroundVariant as b7,
21587
- useIsZoomTooSmall as b8,
21588
- useXYStoreApi as b9,
21589
- $$ACTOR_TYPE as bA,
21590
- STATE_DELIMITER as bB,
21591
- mapValues as bC,
21592
- toArray as bD,
21593
- formatTransitions as bE,
21594
- toTransitionConfigArray as bF,
21595
- formatTransition as bG,
21596
- evaluateGuard as bH,
21597
- getCandidates as bI,
21598
- NULL_EVENT as bJ,
21599
- createInvokeId as bK,
21600
- getDelayedTransitions as bL,
21601
- formatInitialTransition as bM,
21602
- createErrorActorEvent as bN,
21603
- XSTATE_ERROR as bO,
21604
- cancel as bP,
21605
- raise as bQ,
21606
- spawnChild as bR,
21607
- stopChild as bS,
21608
- memo as bT,
21609
- createRecipe as bU,
21610
- mergeRecipes as bV,
21611
- compact as bW,
21612
- getSlotCompoundVariant as bX,
21613
- deepEqual as bY,
21614
- ActionIcon as bZ,
21615
- IconZoomScan as b_,
21616
- index as ba,
21617
- stopPropagation as bb,
21618
- cx as bc,
21619
- roundDpr as bd,
21620
- useStore as be,
21621
- useUpdateEffect as bf,
21622
- XSTATE_STOP as bg,
21623
- cloneMachineSnapshot as bh,
21624
- ProcessingStatus as bi,
21625
- resolveReferencedActor as bj,
21626
- createActor as bk,
21627
- resolveStateValue as bl,
21628
- getAllStateNodes as bm,
21629
- getStateNodes as bn,
21630
- createMachineSnapshot as bo,
21631
- isInFinalState as bp,
21632
- macrostep as bq,
21633
- transitionNode as br,
21634
- resolveActionsAndContext as bs,
21635
- createInitEvent as bt,
21636
- microstep as bu,
21637
- getInitialStateNodes as bv,
21638
- toStatePath as bw,
21639
- isStateId as bx,
21640
- getStateNodeByPath as by,
21641
- getPersistedSnapshot as bz,
21613
+ useUnmountEffect as b1,
21614
+ useDebouncedCallback as b2,
21615
+ Background as b3,
21616
+ BackgroundVariant as b4,
21617
+ useIsZoomTooSmall as b5,
21618
+ useXYStoreApi as b6,
21619
+ index as b7,
21620
+ stopPropagation as b8,
21621
+ cx as b9,
21622
+ getStateNodeByPath as bA,
21623
+ getPersistedSnapshot as bB,
21624
+ $$ACTOR_TYPE as bC,
21625
+ STATE_DELIMITER as bD,
21626
+ mapValues as bE,
21627
+ toArray as bF,
21628
+ formatTransitions as bG,
21629
+ toTransitionConfigArray as bH,
21630
+ formatTransition as bI,
21631
+ evaluateGuard as bJ,
21632
+ getCandidates as bK,
21633
+ NULL_EVENT as bL,
21634
+ createInvokeId as bM,
21635
+ getDelayedTransitions as bN,
21636
+ formatInitialTransition as bO,
21637
+ createErrorActorEvent as bP,
21638
+ XSTATE_ERROR as bQ,
21639
+ cancel as bR,
21640
+ raise as bS,
21641
+ spawnChild as bT,
21642
+ stopChild as bU,
21643
+ memo as bV,
21644
+ createRecipe as bW,
21645
+ mergeRecipes as bX,
21646
+ compact as bY,
21647
+ getSlotCompoundVariant as bZ,
21648
+ deepEqual as b_,
21649
+ roundDpr as ba,
21650
+ useStore as bb,
21651
+ useUpdateEffect as bc,
21652
+ css as bd,
21653
+ getPatternStyles as be,
21654
+ patternFns as bf,
21655
+ splitProps as bg,
21656
+ styled as bh,
21657
+ XSTATE_STOP as bi,
21658
+ cloneMachineSnapshot as bj,
21659
+ ProcessingStatus as bk,
21660
+ resolveReferencedActor as bl,
21661
+ createActor as bm,
21662
+ resolveStateValue as bn,
21663
+ getAllStateNodes as bo,
21664
+ getStateNodes as bp,
21665
+ createMachineSnapshot as bq,
21666
+ isInFinalState as br,
21667
+ macrostep as bs,
21668
+ transitionNode as bt,
21669
+ resolveActionsAndContext as bu,
21670
+ createInitEvent as bv,
21671
+ microstep as bw,
21672
+ getInitialStateNodes as bx,
21673
+ toStatePath as by,
21674
+ isStateId as bz,
21642
21675
  useMantineStyleNonce as c,
21643
- ElementActionButtons as c$,
21644
- Box as c0,
21645
- e as c1,
21646
- EdgeLabelRenderer as c2,
21647
- e$1 as c3,
21648
- getNodeDimensions as c4,
21649
- useXYFlow as c5,
21650
- useDiagram as c6,
21651
- useEnabledFeatures as c7,
21652
- useXYInternalNode as c8,
21653
- isSamePoint as c9,
21654
- IconFileSymlink as cA,
21655
- isMacOs as cB,
21656
- IconCheck as cC,
21657
- IconId as cD,
21658
- HStack as cE,
21659
- ElementTag as cF,
21660
- MarkdownBlock as cG,
21661
- cva as cH,
21662
- Button as cI,
21663
- MotionSpan as cJ,
21664
- Portal as cK,
21665
- useLikeC4ProjectsContext as cL,
21666
- useLikeC4ProjectId as cM,
21667
- Menu as cN,
21668
- MenuTarget as cO,
21669
- MenuDropdown as cP,
21670
- MenuItem as cQ,
21671
- useOnDiagramEvent as cR,
21672
- useLikeC4Model as cS,
21673
- Divider as cT,
21674
- e$4 as cU,
21675
- useDiagramActorRef as cV,
21676
- useCurrentViewModel as cW,
21677
- useActorRef as cX,
21678
- useUpdateEffect$1 as cY,
21679
- Group as cZ,
21680
- getBezierPath as c_,
21681
- bezierControlPoints as ca,
21682
- bezierPath as cb,
21683
- ViewGroupNode as cc,
21684
- CompoundDeploymentNode as cd,
21685
- CompoundElementNode as ce,
21686
- DeploymentNode as cf,
21687
- ElementNode as cg,
21688
- useDiagramActorSnapshot as ch,
21689
- e$3 as ci,
21690
- MotionButton as cj,
21691
- Tooltip$1 as ck,
21692
- useDiagramEventHandlers as cl,
21693
- useDiagramContext as cm,
21694
- useHover$1 as cn,
21695
- PopoverTarget as co,
21696
- PopoverDropdown as cp,
21697
- FloatingIndicator as cq,
21698
- Flex as cr,
21699
- clampUseMovePosition as cs,
21700
- useMove as ct,
21701
- useMantinePortalProps as cu,
21702
- hstack as cv,
21703
- TooltipGroup as cw,
21704
- shallowEqual as cx,
21705
- useSelector as cy,
21706
- useCurrentViewId as cz,
21676
+ MenuTarget as c$,
21677
+ IconZoomScan as c0,
21678
+ MotionDiv as c1,
21679
+ e as c2,
21680
+ Box as c3,
21681
+ useXYStore as c4,
21682
+ EdgeLabelRenderer as c5,
21683
+ e$1 as c6,
21684
+ getNodeDimensions as c7,
21685
+ useXYFlow as c8,
21686
+ useDiagram as c9,
21687
+ PopoverDropdown as cA,
21688
+ FloatingIndicator as cB,
21689
+ Flex as cC,
21690
+ clampUseMovePosition as cD,
21691
+ useMove as cE,
21692
+ useMantinePortalProps as cF,
21693
+ hstack as cG,
21694
+ TooltipGroup as cH,
21695
+ shallowEqual as cI,
21696
+ useSelector as cJ,
21697
+ useCurrentViewId as cK,
21698
+ IconFileSymlink as cL,
21699
+ isMacOs as cM,
21700
+ IconCheck as cN,
21701
+ IconId as cO,
21702
+ HStack as cP,
21703
+ useOnDiagramEvent as cQ,
21704
+ ElementTag as cR,
21705
+ MarkdownBlock as cS,
21706
+ cva as cT,
21707
+ Button as cU,
21708
+ SegmentedControl as cV,
21709
+ MotionSpan as cW,
21710
+ Portal as cX,
21711
+ useLikeC4ProjectsContext as cY,
21712
+ useLikeC4ProjectId as cZ,
21713
+ Menu as c_,
21714
+ useEnabledFeatures as ca,
21715
+ useXYInternalNode as cb,
21716
+ isSamePoint as cc,
21717
+ bezierControlPoints as cd,
21718
+ bezierPath as ce,
21719
+ getSmoothStepPath as cf,
21720
+ ElementNodeContainer as cg,
21721
+ ElementShape as ch,
21722
+ ElementTitle as ci,
21723
+ ElementActions as cj,
21724
+ ElementDetailsButtonWithHandler as ck,
21725
+ Handle as cl,
21726
+ Position as cm,
21727
+ ViewGroupNode as cn,
21728
+ CompoundDeploymentNode as co,
21729
+ CompoundElementNode as cp,
21730
+ DeploymentNode as cq,
21731
+ ElementNode as cr,
21732
+ useDiagramActorSnapshot as cs,
21733
+ e$3 as ct,
21734
+ MotionButton as cu,
21735
+ Tooltip$1 as cv,
21736
+ useDiagramEventHandlers as cw,
21737
+ useDiagramContext as cx,
21738
+ useHover$1 as cy,
21739
+ PopoverTarget as cz,
21707
21740
  alpha$1 as d,
21708
- getBoundsOfRects as d$,
21709
- IconTransform as d0,
21710
- CompoundNodeContainer as d1,
21711
- CompoundTitle as d2,
21712
- CompoundDetailsButton as d3,
21713
- ElementNodeContainer as d4,
21714
- ElementShape as d5,
21715
- ElementTitle as d6,
21716
- ElementTags as d7,
21717
- Handle as d8,
21718
- Position as d9,
21719
- e$2 as dA,
21720
- VisuallyHidden as dB,
21721
- IconOrShapeRenderer as dC,
21722
- FocusTrap as dD,
21723
- t$2 as dE,
21724
- findDiagramEdge as dF,
21725
- findDiagramNode as dG,
21726
- autoUpdate as dH,
21727
- computePosition as dI,
21728
- offset$2 as dJ,
21729
- autoPlacement as dK,
21730
- size$1 as dL,
21731
- hide$1 as dM,
21732
- useOptionalCurrentViewModel as dN,
21733
- ButtonGroup as dO,
21734
- EnsureCurrentViewModel as dP,
21735
- useIsReducedGraphics as dQ,
21736
- usePanningAtom as dR,
21737
- useTimeout as dS,
21738
- useCustomCompareMemo as dT,
21739
- useLikeC4Specification as dU,
21740
- t$3 as dV,
21741
- applyEdgeChanges as dW,
21742
- applyNodeChanges as dX,
21743
- getViewportForBounds as dY,
21744
- typedSystem as dZ,
21745
- centerXYInternalNode as d_,
21746
- ElementDetailsButton as da,
21747
- getDefaultExportFromCjs as db,
21748
- t$1 as dc,
21749
- IconSelector as dd,
21750
- SegmentedControl as de,
21751
- ReactFlowProvider as df,
21752
- useStoreApi as dg,
21753
- useReactFlow as dh,
21754
- Panel as di,
21755
- m as dj,
21756
- Stack as dk,
21757
- t$9 as dl,
21758
- useSyncedRef as dm,
21759
- IconRenderer as dn,
21760
- useTimeoutEffect as dp,
21761
- ReactRemoveScroll as dq,
21762
- ActionIconGroup as dr,
21763
- IfEnabled as ds,
21764
- DiagramFeatures as dt,
21765
- t$5 as du,
21766
- customNode as dv,
21767
- useXYStore as dw,
21768
- useReducedMotionConfig as dx,
21769
- Overlay as dy,
21770
- sva as dz,
21741
+ applyNodeChanges as d$,
21742
+ MenuDropdown as d0,
21743
+ MenuItem as d1,
21744
+ useLikeC4Model as d2,
21745
+ Divider as d3,
21746
+ e$4 as d4,
21747
+ useDiagramActorRef as d5,
21748
+ useCurrentViewModel as d6,
21749
+ useActorRef as d7,
21750
+ useUpdateEffect$1 as d8,
21751
+ Group as d9,
21752
+ customNode as dA,
21753
+ useReducedMotionConfig as dB,
21754
+ Overlay as dC,
21755
+ sva as dD,
21756
+ e$2 as dE,
21757
+ VisuallyHidden as dF,
21758
+ IconOrShapeRenderer as dG,
21759
+ FocusTrap as dH,
21760
+ t$2 as dI,
21761
+ findDiagramEdge as dJ,
21762
+ findDiagramNode as dK,
21763
+ autoUpdate as dL,
21764
+ computePosition as dM,
21765
+ offset$2 as dN,
21766
+ autoPlacement as dO,
21767
+ size$1 as dP,
21768
+ hide$1 as dQ,
21769
+ useOptionalCurrentViewModel as dR,
21770
+ ButtonGroup as dS,
21771
+ EnsureCurrentViewModel as dT,
21772
+ useIsReducedGraphics as dU,
21773
+ usePanningAtom as dV,
21774
+ useTimeout as dW,
21775
+ useCustomCompareMemo as dX,
21776
+ useLikeC4Specification as dY,
21777
+ t$3 as dZ,
21778
+ applyEdgeChanges as d_,
21779
+ getBezierPath as da,
21780
+ ElementActionButtons as db,
21781
+ IconTransform as dc,
21782
+ CompoundNodeContainer as dd,
21783
+ CompoundTitle as de,
21784
+ CompoundDetailsButton as df,
21785
+ ElementTags as dg,
21786
+ ElementDetailsButton as dh,
21787
+ getDefaultExportFromCjs as di,
21788
+ t$1 as dj,
21789
+ IconSelector as dk,
21790
+ ReactFlowProvider as dl,
21791
+ useStoreApi as dm,
21792
+ useReactFlow as dn,
21793
+ Panel as dp,
21794
+ m as dq,
21795
+ Stack as dr,
21796
+ t$9 as ds,
21797
+ IconRenderer as dt,
21798
+ useTimeoutEffect as du,
21799
+ ReactRemoveScroll as dv,
21800
+ ActionIconGroup as dw,
21801
+ IfEnabled as dx,
21802
+ DiagramFeatures as dy,
21803
+ t$5 as dz,
21771
21804
  em as e,
21772
- boxToRect as e0,
21773
- and as e1,
21774
- AllDisabled as e2,
21775
- focusedBounds as e3,
21776
- or as e4,
21777
- nodeToRect as e5,
21778
- useCustomCompareEffect as e6,
21779
- DiagramActorContextProvider as e7,
21780
- CurrentViewModelContext as e8,
21781
- IconRendererProvider as e9,
21782
- DiagramEventHandlers as ea,
21783
- ReduceGraphicsContext as eb,
21784
- RootContainer as ec,
21785
- useMutationObserver as ed,
21786
- shallowEqual$1 as ee,
21787
- LikeC4ProjectsContext as ef,
21788
- LikeC4ModelContext as eg,
21789
- useLikeC4ViewModel as eh,
21790
- useHasProjects as ei,
21791
- useLikeC4Projects as ej,
21792
- useSetState as ek,
21793
- CompoundActionButton as el,
21794
- DefaultHandles as em,
21795
- CompoundActions as en,
21796
- CompoundDeploymentToolbar as eo,
21797
- CompoundDetailsButtonWithHandler as ep,
21798
- CompoundElementToolbar as eq,
21799
- DeploymentElementActions as er,
21800
- DeploymentElementToolbar as es,
21801
- ElementActions as et,
21802
- ElementDetailsButtonWithHandler as eu,
21803
- ElementToolbar as ev,
21804
- Toolbar as ew,
21805
- IfNotEnabled as ex,
21806
- IfNotReadOnly as ey,
21807
- IfReadOnly as ez,
21805
+ getViewportForBounds as e0,
21806
+ typedSystem as e1,
21807
+ centerXYInternalNode as e2,
21808
+ getBoundsOfRects as e3,
21809
+ boxToRect as e4,
21810
+ and as e5,
21811
+ AllDisabled as e6,
21812
+ nodeToRect as e7,
21813
+ activeSequenceBounds as e8,
21814
+ focusedBounds as e9,
21815
+ IfNotEnabled as eA,
21816
+ IfNotReadOnly as eB,
21817
+ IfReadOnly as eC,
21818
+ or as ea,
21819
+ useCustomCompareEffect as eb,
21820
+ DiagramActorContextProvider as ec,
21821
+ CurrentViewModelContext as ed,
21822
+ IconRendererProvider as ee,
21823
+ DiagramEventHandlers as ef,
21824
+ ReduceGraphicsContext as eg,
21825
+ RootContainer as eh,
21826
+ useMutationObserver as ei,
21827
+ shallowEqual$1 as ej,
21828
+ LikeC4ProjectsContext as ek,
21829
+ LikeC4ModelContext as el,
21830
+ useLikeC4ViewModel as em,
21831
+ useHasProjects as en,
21832
+ useLikeC4Projects as eo,
21833
+ useSetState as ep,
21834
+ CompoundActionButton as eq,
21835
+ DefaultHandles as er,
21836
+ CompoundActions as es,
21837
+ CompoundDeploymentToolbar as et,
21838
+ CompoundDetailsButtonWithHandler as eu,
21839
+ CompoundElementToolbar as ev,
21840
+ DeploymentElementActions as ew,
21841
+ DeploymentElementToolbar as ex,
21842
+ ElementToolbar as ey,
21843
+ Toolbar as ez,
21808
21844
  getPrimaryContrastColor as f,
21809
21845
  getPrimaryShade as g,
21810
21846
  deepMerge as h,