@likec4/diagram 1.39.5 → 1.40.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 (123) hide show
  1. package/bundle/{chunk-CW_KClZe.js → chunk-CDr-4Ymp.js} +936 -903
  2. package/bundle/custom.js +61 -60
  3. package/bundle/index.js +2667 -539
  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/edge/EdgeLabel.js +2 -1
  11. package/dist/base/primitives/edge/EdgeLabelContainer.js +10 -4
  12. package/dist/base/primitives/edge/EdgePath.js +17 -8
  13. package/dist/base/primitives/edge/edge.css.d.ts +0 -1
  14. package/dist/base/primitives/edge/edge.css.js +6 -14
  15. package/dist/base/primitives/element/ElementActionButtons.js +1 -3
  16. package/dist/base/primitives/element/ElementNodeContainer.d.ts +0 -6
  17. package/dist/base/primitives/element/ElementNodeContainer.js +3 -26
  18. package/dist/base/primitives/element/ElementTitle.js +2 -2
  19. package/dist/base/types.d.ts +3 -3
  20. package/dist/bundle/LikeC4View.js +4 -12
  21. package/dist/bundle/LikeC4View.props.d.ts +12 -3
  22. package/dist/bundle/custom.js +1 -1
  23. package/dist/custom/customNodes.d.ts +6 -0
  24. package/dist/custom/customNodes.js +2 -1
  25. package/dist/custom/index.js +1 -1
  26. package/dist/hooks/useDiagram.d.ts +5 -1
  27. package/dist/hooks/useDiagram.js +3 -0
  28. package/dist/hooks/useXYFlow.d.ts +4 -439
  29. package/dist/likec4diagram/DiagramUI.js +1 -1
  30. package/dist/likec4diagram/DiagramXYFlow.js +8 -4
  31. package/dist/likec4diagram/convert-to-xyflow.d.ts +14 -0
  32. package/dist/likec4diagram/convert-to-xyflow.js +29 -0
  33. package/dist/likec4diagram/custom/edges/RelationshipEdge.d.ts +3 -3
  34. package/dist/likec4diagram/custom/edges/RelationshipEdge.js +0 -1
  35. package/dist/likec4diagram/custom/edges/SequenceStepEdge.d.ts +3 -0
  36. package/dist/likec4diagram/custom/edges/SequenceStepEdge.js +71 -0
  37. package/dist/likec4diagram/custom/index.js +7 -2
  38. package/dist/likec4diagram/custom/nodes/ElementActions.d.ts +2 -1
  39. package/dist/likec4diagram/custom/nodes/SequenceActorNode.d.ts +4 -0
  40. package/dist/likec4diagram/custom/nodes/SequenceActorNode.js +157 -0
  41. package/dist/likec4diagram/custom/nodes/index.d.ts +1 -0
  42. package/dist/likec4diagram/custom/nodes/nodes.d.ts +1 -2
  43. package/dist/likec4diagram/relationship-popover/RelationshipPopover.js +31 -27
  44. package/dist/likec4diagram/types.d.ts +41 -7
  45. package/dist/likec4diagram/xyflow-diagram/diagram-view.d.ts +11 -0
  46. package/dist/likec4diagram/{useViewToNodesEdges.js → xyflow-diagram/diagram-view.js} +4 -13
  47. package/dist/likec4diagram/xyflow-sequence/_types.d.ts +41 -0
  48. package/dist/likec4diagram/xyflow-sequence/const.d.ts +17 -0
  49. package/dist/likec4diagram/xyflow-sequence/const.js +16 -0
  50. package/dist/likec4diagram/xyflow-sequence/layouter.d.ts +46 -0
  51. package/dist/likec4diagram/xyflow-sequence/layouter.js +408 -0
  52. package/dist/likec4diagram/xyflow-sequence/sequence-view.d.ts +7 -0
  53. package/dist/likec4diagram/xyflow-sequence/sequence-view.js +273 -0
  54. package/dist/likec4diagram/xyflow-sequence/utils.d.ts +14 -0
  55. package/dist/likec4diagram/xyflow-sequence/utils.js +92 -0
  56. package/dist/navigationpanel/NavigationPanelControls.js +2 -2
  57. package/dist/navigationpanel/controls/ViewDetailsCard.js +5 -2
  58. package/dist/navigationpanel/dropdown/ProjectsMenu.js +53 -44
  59. package/dist/navigationpanel/walkthrough/ActiveWalkthroughControls.d.ts +1 -2
  60. package/dist/navigationpanel/walkthrough/ActiveWalkthroughControls.js +10 -41
  61. package/dist/navigationpanel/walkthrough/DynamicViewControls.d.ts +292 -0
  62. package/dist/navigationpanel/walkthrough/DynamicViewControls.js +119 -0
  63. package/dist/navigationpanel/walkthrough/index.d.ts +2 -1
  64. package/dist/overlays/relationship-details/RelationshipDetails.js +4 -1
  65. package/dist/state/DiagramActorProvider.d.ts +3 -2
  66. package/dist/state/DiagramActorProvider.js +19 -11
  67. package/dist/state/assign.js +11 -4
  68. package/dist/state/diagram-machine.d.ts +224 -194
  69. package/dist/state/diagram-machine.js +170 -63
  70. package/dist/state/utils.d.ts +7 -1
  71. package/dist/state/utils.js +67 -7
  72. package/dist/styles-min.css +1 -1
  73. package/dist/styles.css +1 -1
  74. package/dist/styles.css2.js +1 -1
  75. package/package.json +8 -7
  76. package/panda.buildinfo.json +30 -9
  77. package/src/LikeC4Diagram.props.ts +14 -1
  78. package/src/LikeC4Diagram.tsx +7 -4
  79. package/src/base/const.ts +12 -0
  80. package/src/base/index.ts +2 -0
  81. package/src/base/primitives/edge/EdgeLabel.tsx +23 -19
  82. package/src/base/primitives/edge/EdgeLabelContainer.tsx +12 -7
  83. package/src/base/primitives/edge/EdgePath.tsx +25 -14
  84. package/src/base/primitives/edge/edge.css.ts +5 -14
  85. package/src/base/primitives/element/ElementActionButtons.tsx +1 -3
  86. package/src/base/primitives/element/ElementNodeContainer.tsx +3 -30
  87. package/src/base/primitives/element/ElementTitle.tsx +2 -3
  88. package/src/base/types.ts +7 -5
  89. package/src/bundle/LikeC4View.props.ts +14 -3
  90. package/src/bundle/LikeC4View.tsx +4 -14
  91. package/src/bundle/ReactLikeC4.tsx +1 -2
  92. package/src/custom/customNodes.ts +7 -0
  93. package/src/hooks/useDiagram.ts +10 -0
  94. package/src/likec4diagram/DiagramUI.tsx +1 -1
  95. package/src/likec4diagram/DiagramXYFlow.tsx +10 -5
  96. package/src/likec4diagram/convert-to-xyflow.ts +45 -0
  97. package/src/likec4diagram/custom/edges/RelationshipEdge.tsx +0 -1
  98. package/src/likec4diagram/custom/edges/SequenceStepEdge.tsx +65 -0
  99. package/src/likec4diagram/custom/index.ts +7 -1
  100. package/src/likec4diagram/custom/nodes/ElementActions.tsx +4 -2
  101. package/src/likec4diagram/custom/nodes/SequenceActorNode.tsx +175 -0
  102. package/src/likec4diagram/custom/nodes/index.ts +1 -0
  103. package/src/likec4diagram/custom/nodes/nodes.tsx +1 -1
  104. package/src/likec4diagram/relationship-popover/RelationshipPopover.tsx +36 -30
  105. package/src/likec4diagram/types.ts +96 -13
  106. package/src/likec4diagram/{useViewToNodesEdges.ts → xyflow-diagram/diagram-view.ts} +7 -28
  107. package/src/likec4diagram/xyflow-sequence/_types.ts +45 -0
  108. package/src/likec4diagram/xyflow-sequence/const.ts +37 -0
  109. package/src/likec4diagram/xyflow-sequence/layouter.ts +567 -0
  110. package/src/likec4diagram/xyflow-sequence/sequence-view.ts +337 -0
  111. package/src/likec4diagram/xyflow-sequence/utils.ts +112 -0
  112. package/src/navigationpanel/NavigationPanelControls.tsx +2 -2
  113. package/src/navigationpanel/controls/ViewDetailsCard.tsx +5 -2
  114. package/src/navigationpanel/dropdown/ProjectsMenu.tsx +5 -1
  115. package/src/navigationpanel/walkthrough/ActiveWalkthroughControls.tsx +5 -40
  116. package/src/navigationpanel/walkthrough/DynamicViewControls.tsx +125 -0
  117. package/src/navigationpanel/walkthrough/index.tsx +2 -1
  118. package/src/overlays/relationship-details/RelationshipDetails.tsx +5 -2
  119. package/src/state/DiagramActorProvider.tsx +21 -10
  120. package/src/state/assign.ts +18 -5
  121. package/src/state/diagram-machine.ts +207 -75
  122. package/src/state/utils.ts +81 -7
  123. package/dist/likec4diagram/useViewToNodesEdges.d.ts +0 -12
@@ -0,0 +1,92 @@
1
+ import { Stack, isAncestor, nonNullable } from '@likec4/core/utils';
2
+ import { pipe, groupBy, mapValues, values } from 'remeda';
3
+
4
+ function findParallelRects(steps) {
5
+ return pipe(
6
+ steps,
7
+ groupBy((s) => s.parallelPrefix ?? void 0),
8
+ mapValues((steps2, parallelPrefix) => {
9
+ return steps2.reduce(
10
+ (acc, step) => {
11
+ acc.min.column = Math.min(acc.min.column, step.from.column, step.to.column);
12
+ acc.min.row = Math.min(acc.min.row, step.from.row, step.to.row);
13
+ acc.max.column = Math.max(acc.max.column, step.from.column, step.to.column);
14
+ acc.max.row = Math.max(acc.max.row, step.from.row, step.to.row);
15
+ return acc;
16
+ },
17
+ {
18
+ parallelPrefix,
19
+ min: {
20
+ column: Infinity,
21
+ row: Infinity
22
+ },
23
+ max: {
24
+ column: -Infinity,
25
+ row: -Infinity
26
+ }
27
+ }
28
+ );
29
+ }),
30
+ values()
31
+ );
32
+ }
33
+ function buildCompounds(actors, nodes) {
34
+ if (actors.length === 0 || actors.length === nodes.length) {
35
+ return [];
36
+ }
37
+ const getNode = (id) => nonNullable(nodes.find((n) => n.id === id));
38
+ function parentsLookup(node) {
39
+ const parent = node.parent ? getNode(node.parent) : null;
40
+ if (parent) {
41
+ return [parent, ...parentsLookup(parent)];
42
+ }
43
+ return [];
44
+ }
45
+ const stack = new Stack();
46
+ const result = [];
47
+ actors.forEach((actor) => {
48
+ const _ancestors = parentsLookup(actor);
49
+ if (_ancestors.length === 0) {
50
+ stack.clear();
51
+ return;
52
+ }
53
+ const ancestors = Stack.from(_ancestors);
54
+ let compound;
55
+ let parent;
56
+ while (true) {
57
+ compound = stack.peek()?.node;
58
+ parent = ancestors.peek();
59
+ if (!parent || !compound) {
60
+ break;
61
+ }
62
+ if (isAncestor(parent.id, compound.id) || parent.id === compound.id) {
63
+ ancestors.pop();
64
+ continue;
65
+ }
66
+ if (!isAncestor(compound.id, parent.id)) {
67
+ stack.pop();
68
+ continue;
69
+ }
70
+ break;
71
+ }
72
+ while (parent = ancestors.pop()) {
73
+ const parentAsCompound = {
74
+ node: parent,
75
+ from: actor,
76
+ to: actor,
77
+ nested: []
78
+ };
79
+ let compound2 = stack.peek();
80
+ if (!compound2) {
81
+ result.push(parentAsCompound);
82
+ } else {
83
+ compound2.nested.push(parentAsCompound);
84
+ }
85
+ stack.push(parentAsCompound);
86
+ }
87
+ stack.forEach((c) => c.to = actor);
88
+ });
89
+ return result;
90
+ }
91
+
92
+ export { buildCompounds, findParallelRects };
@@ -15,7 +15,7 @@ import { NavigationButtons } from './controls/NavigationButtons.js';
15
15
  import { ViewDetailsCard } from './controls/ViewDetailsCard.js';
16
16
  import { OpenSource } from './controls/OpenSource.js';
17
17
  import { ToggleReadonly } from './controls/ToggleReadonly.js';
18
- import { StartWalkthroughButton } from './walkthrough/ActiveWalkthroughControls.js';
18
+ import { DynamicViewControls } from './walkthrough/DynamicViewControls.js';
19
19
  import { SearchControl } from './controls/SearchControl.js';
20
20
 
21
21
  const selectBreadcrumbs = ({ context }) => {
@@ -139,7 +139,7 @@ const NavigationPanelControls = () => {
139
139
  },
140
140
  "actions"
141
141
  ),
142
- enableDynamicViewWalkthrough && isDynamicView && /* @__PURE__ */ jsx(StartWalkthroughButton, {}, "walkthrough-button"),
142
+ enableDynamicViewWalkthrough && isDynamicView && /* @__PURE__ */ jsx(DynamicViewControls, {}, "dynamic-view-controls"),
143
143
  enableSearch && /* @__PURE__ */ jsx(SearchControl, {}, "search-control")
144
144
  ] });
145
145
  };
@@ -34,6 +34,9 @@ const ViewDetailsCard = (props) => {
34
34
  shadow: "xl",
35
35
  clickOutsideEvents: ["pointerdown", "mousedown", "click"],
36
36
  trapFocus: true,
37
+ offset: {
38
+ mainAxis: 4
39
+ },
37
40
  ...portalProps,
38
41
  ...props,
39
42
  children: [
@@ -56,8 +59,8 @@ const ViewDetailsCardTrigger = ({ linksCount }) => /* @__PURE__ */ jsx(Popover.T
56
59
  "group",
57
60
  hstack({
58
61
  gap: "2",
59
- paddingInline: "xxs",
60
- paddingBlock: "xxs",
62
+ paddingInline: "2",
63
+ paddingBlock: "1",
61
64
  rounded: "sm",
62
65
  userSelect: "none",
63
66
  cursor: "pointer",
@@ -24,51 +24,60 @@ function ProjectsMenu(props) {
24
24
  children: "Project"
25
25
  }
26
26
  ),
27
- /* @__PURE__ */ jsxs(Menu, { shadow: "md", position: "bottom-start", offset: { mainAxis: 2 }, closeOnItemClick: true, children: [
28
- /* @__PURE__ */ jsx(MenuTarget, { children: /* @__PURE__ */ jsx(
29
- Button,
30
- {
31
- tabIndex: -1,
32
- autoFocus: false,
33
- variant: "subtle",
34
- size: "compact-xs",
35
- color: "gray",
36
- classNames: {
37
- root: css({
38
- fontWeight: "400",
39
- fontSize: "xxs",
40
- height: "auto",
41
- lineHeight: 1.1,
42
- color: {
43
- _light: "mantine.colors.gray[9]"
44
- }
45
- }),
46
- section: css({
47
- '&:is([data-position="right"])': {
48
- marginInlineStart: "1"
49
- }
50
- })
51
- },
52
- rightSection: /* @__PURE__ */ jsx(IconChevronDown, { opacity: 0.5, size: 12, stroke: 1.5 }),
53
- ...props,
54
- children: projectId
55
- }
56
- ) }),
57
- /* @__PURE__ */ jsx(MenuDropdown, { children: projects.map(({ id, title }) => /* @__PURE__ */ jsx(
58
- MenuItem,
59
- {
60
- onClick: (e) => {
61
- if (projectId === id) {
62
- e.stopPropagation();
63
- return;
27
+ /* @__PURE__ */ jsxs(
28
+ Menu,
29
+ {
30
+ withinPortal: false,
31
+ shadow: "md",
32
+ position: "bottom-start",
33
+ offset: { mainAxis: 2 },
34
+ children: [
35
+ /* @__PURE__ */ jsx(MenuTarget, { children: /* @__PURE__ */ jsx(
36
+ Button,
37
+ {
38
+ tabIndex: -1,
39
+ autoFocus: false,
40
+ variant: "subtle",
41
+ size: "compact-xs",
42
+ color: "gray",
43
+ classNames: {
44
+ root: css({
45
+ fontWeight: "400",
46
+ fontSize: "xxs",
47
+ height: "auto",
48
+ lineHeight: 1.1,
49
+ color: {
50
+ _light: "mantine.colors.gray[9]"
51
+ }
52
+ }),
53
+ section: css({
54
+ '&:is([data-position="right"])': {
55
+ marginInlineStart: "1"
56
+ }
57
+ })
58
+ },
59
+ rightSection: /* @__PURE__ */ jsx(IconChevronDown, { opacity: 0.5, size: 12, stroke: 1.5 }),
60
+ ...props,
61
+ children: projectId
64
62
  }
65
- onProjectChange(id);
66
- },
67
- children: title ?? id
68
- },
69
- id
70
- )) })
71
- ] })
63
+ ) }),
64
+ /* @__PURE__ */ jsx(MenuDropdown, { children: projects.map(({ id, title }) => /* @__PURE__ */ jsx(
65
+ MenuItem,
66
+ {
67
+ onClick: (e) => {
68
+ if (projectId === id) {
69
+ e.stopPropagation();
70
+ return;
71
+ }
72
+ onProjectChange(id);
73
+ },
74
+ children: title ?? id
75
+ },
76
+ id
77
+ )) })
78
+ ]
79
+ }
80
+ )
72
81
  ] });
73
82
  }
74
83
 
@@ -1,2 +1 @@
1
- export declare const StartWalkthroughButton: () => import("react/jsx-runtime").JSX.Element;
2
- export declare const ActiveWalkthroughControls: () => import("react/jsx-runtime").JSX.Element;
1
+ export declare function ActiveWalkthroughControls(): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,4 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { RichText } from '@likec4/core';
3
2
  import { css } from '@likec4/styles/css';
4
3
  import { Box } from '@likec4/styles/jsx';
5
4
  import { Button, Badge, Portal } from '@mantine/core';
@@ -7,42 +6,12 @@ import { AnimatePresence } from 'motion/react';
7
6
  import * as m from 'motion/react-m';
8
7
  import { isTruthy } from 'remeda';
9
8
  import { useDiagram, useDiagramContext } from '../../hooks/useDiagram.js';
10
- import { Tooltip } from '../_common.js';
11
- import { useNavigationActor } from '../hooks.js';
9
+ import { TriggerWalkthroughButton } from './DynamicViewControls.js';
12
10
  import IconPlayerStopFilled from '../../node_modules/.pnpm/@tabler_icons-react@3.34.1_react@19.1.1/node_modules/@tabler/icons-react/dist/esm/icons/IconPlayerStopFilled.js';
13
11
  import IconPlayerSkipBackFilled from '../../node_modules/.pnpm/@tabler_icons-react@3.34.1_react@19.1.1/node_modules/@tabler/icons-react/dist/esm/icons/IconPlayerSkipBackFilled.js';
14
12
  import IconPlayerSkipForwardFilled from '../../node_modules/.pnpm/@tabler_icons-react@3.34.1_react@19.1.1/node_modules/@tabler/icons-react/dist/esm/icons/IconPlayerSkipForwardFilled.js';
15
13
  import { useMantinePortalProps } from '../../hooks/useMantinePortalProps.js';
16
- import IconPlayerPlayFilled from '../../node_modules/.pnpm/@tabler_icons-react@3.34.1_react@19.1.1/node_modules/@tabler/icons-react/dist/esm/icons/IconPlayerPlayFilled.js';
17
14
 
18
- const TriggerWalkthroughButton = Button.withProps({
19
- // Button is polymorphic, but we dont want it to inherit the motion props
20
- component: m.button,
21
- // @ts-expect-error
22
- layoutId: "trigger-dynamic-walkthrough",
23
- variant: "filled",
24
- size: "xs",
25
- fw: "500",
26
- className: css({
27
- flexShrink: 0
28
- })
29
- });
30
- const StartWalkthroughButton = () => {
31
- const diagram = useDiagram();
32
- const actor = useNavigationActor();
33
- return /* @__PURE__ */ jsx(Tooltip, { label: "Start Dynamic View Walkthrough", children: /* @__PURE__ */ jsx(
34
- TriggerWalkthroughButton,
35
- {
36
- onClick: (e) => {
37
- e.stopPropagation();
38
- actor.closeDropdown();
39
- diagram.startWalkthrough();
40
- },
41
- rightSection: /* @__PURE__ */ jsx(IconPlayerPlayFilled, { size: 10 }),
42
- children: "Start"
43
- }
44
- ) });
45
- };
46
15
  const PrevNextButton = Button.withProps({
47
16
  // Button is polymorphic, but we dont want it to inherit the motion props
48
17
  component: m.button,
@@ -73,15 +42,14 @@ const ParallelFrame = () => {
73
42
  }
74
43
  ) });
75
44
  };
76
- const ActiveWalkthroughControls = () => {
45
+ function ActiveWalkthroughControls() {
77
46
  const diagram = useDiagram();
78
47
  const {
79
48
  isParallel,
80
49
  hasNext,
81
50
  hasPrevious,
82
51
  currentStep,
83
- totalSteps,
84
- notes
52
+ totalSteps
85
53
  } = useDiagramContext((s) => {
86
54
  const currentStepIndex = s.xyedges.findIndex((e) => e.id === s.activeWalkthrough?.stepId);
87
55
  return {
@@ -89,8 +57,7 @@ const ActiveWalkthroughControls = () => {
89
57
  hasNext: currentStepIndex < s.xyedges.length - 1,
90
58
  hasPrevious: currentStepIndex > 0,
91
59
  currentStep: currentStepIndex + 1,
92
- totalSteps: s.xyedges.length,
93
- notes: s.xyedges[currentStepIndex]?.data?.notes ?? RichText.EMPTY
60
+ totalSteps: s.xyedges.length
94
61
  };
95
62
  });
96
63
  return /* @__PURE__ */ jsxs(AnimatePresence, { propagate: true, children: [
@@ -98,6 +65,7 @@ const ActiveWalkthroughControls = () => {
98
65
  TriggerWalkthroughButton,
99
66
  {
100
67
  variant: "light",
68
+ size: "xs",
101
69
  color: "orange",
102
70
  mr: "sm",
103
71
  onClick: (e) => {
@@ -106,7 +74,8 @@ const ActiveWalkthroughControls = () => {
106
74
  },
107
75
  rightSection: /* @__PURE__ */ jsx(IconPlayerStopFilled, { size: 10 }),
108
76
  children: "Stop"
109
- }
77
+ },
78
+ "stop-walkthrough"
110
79
  ),
111
80
  /* @__PURE__ */ jsx(
112
81
  PrevNextButton,
@@ -157,8 +126,8 @@ const ActiveWalkthroughControls = () => {
157
126
  },
158
127
  "next"
159
128
  ),
160
- isParallel && /* @__PURE__ */ jsx(ParallelFrame, {})
129
+ isParallel && /* @__PURE__ */ jsx(ParallelFrame, {}, "parallel-frame")
161
130
  ] });
162
- };
131
+ }
163
132
 
164
- export { ActiveWalkthroughControls, StartWalkthroughButton };
133
+ export { ActiveWalkthroughControls };
@@ -0,0 +1,292 @@
1
+ import { ButtonProps } from '@mantine/core';
2
+ import { ForwardRefExoticComponent, Ref, Key, AriaRole, ClipboardEventHandler, CompositionEventHandler, FocusEventHandler, FormEventHandler, InputEventHandler, ReactEventHandler, KeyboardEventHandler, MouseEventHandler, DragEventHandler, TouchEventHandler, PointerEventHandler, UIEventHandler, WheelEventHandler, AnimationEventHandler, ToggleEventHandler, TransitionEventHandler, RefAttributes } from 'react';
3
+ import { MotionProps } from 'motion/react';
4
+ export declare const TriggerWalkthroughButton: ForwardRefExoticComponent<Omit<ButtonProps & {
5
+ id?: string | undefined;
6
+ type?: "button" | "reset" | "submit" | undefined;
7
+ form?: string | undefined;
8
+ hidden?: boolean | undefined;
9
+ draggable?: (boolean | "true" | "false") | undefined;
10
+ className?: string | undefined;
11
+ color?: string | undefined;
12
+ content?: string | undefined;
13
+ translate?: "yes" | "no" | undefined;
14
+ ref?: Ref<HTMLButtonElement> | undefined;
15
+ key?: Key | null | undefined;
16
+ defaultChecked?: boolean | undefined;
17
+ defaultValue?: string | number | readonly string[] | undefined;
18
+ suppressContentEditableWarning?: boolean | undefined;
19
+ suppressHydrationWarning?: boolean | undefined;
20
+ accessKey?: string | undefined;
21
+ autoCapitalize?: "none" | (string & {}) | "on" | "off" | "sentences" | "words" | "characters" | undefined;
22
+ autoFocus?: boolean | undefined;
23
+ contentEditable?: "inherit" | (boolean | "true" | "false") | "plaintext-only" | undefined;
24
+ contextMenu?: string | undefined;
25
+ dir?: string | undefined;
26
+ enterKeyHint?: "search" | "next" | "done" | "send" | "previous" | "enter" | "go" | undefined;
27
+ lang?: string | undefined;
28
+ nonce?: string | undefined;
29
+ slot?: string | undefined;
30
+ spellCheck?: (boolean | "true" | "false") | undefined;
31
+ tabIndex?: number | undefined;
32
+ title?: string | undefined;
33
+ radioGroup?: string | undefined;
34
+ role?: AriaRole | undefined;
35
+ about?: string | undefined;
36
+ datatype?: string | undefined;
37
+ inlist?: any;
38
+ prefix?: string | undefined;
39
+ property?: string | undefined;
40
+ rel?: string | undefined;
41
+ resource?: string | undefined;
42
+ rev?: string | undefined;
43
+ typeof?: string | undefined;
44
+ vocab?: string | undefined;
45
+ autoCorrect?: string | undefined;
46
+ autoSave?: string | undefined;
47
+ itemProp?: string | undefined;
48
+ itemScope?: boolean | undefined;
49
+ itemType?: string | undefined;
50
+ itemID?: string | undefined;
51
+ itemRef?: string | undefined;
52
+ results?: number | undefined;
53
+ security?: string | undefined;
54
+ unselectable?: "on" | "off" | undefined;
55
+ popover?: "" | "auto" | "manual" | undefined;
56
+ popoverTargetAction?: "toggle" | "show" | "hide" | undefined;
57
+ popoverTarget?: string | undefined;
58
+ inert?: boolean | undefined;
59
+ inputMode?: "none" | "search" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
60
+ is?: string | undefined;
61
+ exportparts?: string | undefined;
62
+ part?: string | undefined;
63
+ "aria-activedescendant"?: string | undefined;
64
+ "aria-atomic"?: (boolean | "true" | "false") | undefined;
65
+ "aria-autocomplete"?: "list" | "none" | "both" | "inline" | undefined;
66
+ "aria-braillelabel"?: string | undefined;
67
+ "aria-brailleroledescription"?: string | undefined;
68
+ "aria-busy"?: (boolean | "true" | "false") | undefined;
69
+ "aria-checked"?: boolean | "true" | "false" | "mixed" | undefined;
70
+ "aria-colcount"?: number | undefined;
71
+ "aria-colindex"?: number | undefined;
72
+ "aria-colindextext"?: string | undefined;
73
+ "aria-colspan"?: number | undefined;
74
+ "aria-controls"?: string | undefined;
75
+ "aria-current"?: boolean | "page" | "step" | "location" | "date" | "time" | "true" | "false" | undefined;
76
+ "aria-describedby"?: string | undefined;
77
+ "aria-description"?: string | undefined;
78
+ "aria-details"?: string | undefined;
79
+ "aria-disabled"?: (boolean | "true" | "false") | undefined;
80
+ "aria-dropeffect"?: "link" | "none" | "copy" | "move" | "execute" | "popup" | undefined;
81
+ "aria-errormessage"?: string | undefined;
82
+ "aria-expanded"?: (boolean | "true" | "false") | undefined;
83
+ "aria-flowto"?: string | undefined;
84
+ "aria-grabbed"?: (boolean | "true" | "false") | undefined;
85
+ "aria-haspopup"?: boolean | "dialog" | "grid" | "listbox" | "menu" | "tree" | "true" | "false" | undefined;
86
+ "aria-hidden"?: (boolean | "true" | "false") | undefined;
87
+ "aria-invalid"?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
88
+ "aria-keyshortcuts"?: string | undefined;
89
+ "aria-label"?: string | undefined;
90
+ "aria-labelledby"?: string | undefined;
91
+ "aria-level"?: number | undefined;
92
+ "aria-live"?: "off" | "assertive" | "polite" | undefined;
93
+ "aria-modal"?: (boolean | "true" | "false") | undefined;
94
+ "aria-multiline"?: (boolean | "true" | "false") | undefined;
95
+ "aria-multiselectable"?: (boolean | "true" | "false") | undefined;
96
+ "aria-orientation"?: "horizontal" | "vertical" | undefined;
97
+ "aria-owns"?: string | undefined;
98
+ "aria-placeholder"?: string | undefined;
99
+ "aria-posinset"?: number | undefined;
100
+ "aria-pressed"?: boolean | "true" | "false" | "mixed" | undefined;
101
+ "aria-readonly"?: (boolean | "true" | "false") | undefined;
102
+ "aria-relevant"?: "all" | "text" | "additions" | "additions removals" | "additions text" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | undefined;
103
+ "aria-required"?: (boolean | "true" | "false") | undefined;
104
+ "aria-roledescription"?: string | undefined;
105
+ "aria-rowcount"?: number | undefined;
106
+ "aria-rowindex"?: number | undefined;
107
+ "aria-rowindextext"?: string | undefined;
108
+ "aria-rowspan"?: number | undefined;
109
+ "aria-selected"?: (boolean | "true" | "false") | undefined;
110
+ "aria-setsize"?: number | undefined;
111
+ "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined;
112
+ "aria-valuemax"?: number | undefined;
113
+ "aria-valuemin"?: number | undefined;
114
+ "aria-valuenow"?: number | undefined;
115
+ "aria-valuetext"?: string | undefined;
116
+ dangerouslySetInnerHTML?: {
117
+ __html: string | TrustedHTML;
118
+ } | undefined;
119
+ onCopy?: ClipboardEventHandler<HTMLButtonElement> | undefined;
120
+ onCopyCapture?: ClipboardEventHandler<HTMLButtonElement> | undefined;
121
+ onCut?: ClipboardEventHandler<HTMLButtonElement> | undefined;
122
+ onCutCapture?: ClipboardEventHandler<HTMLButtonElement> | undefined;
123
+ onPaste?: ClipboardEventHandler<HTMLButtonElement> | undefined;
124
+ onPasteCapture?: ClipboardEventHandler<HTMLButtonElement> | undefined;
125
+ onCompositionEnd?: CompositionEventHandler<HTMLButtonElement> | undefined;
126
+ onCompositionEndCapture?: CompositionEventHandler<HTMLButtonElement> | undefined;
127
+ onCompositionStart?: CompositionEventHandler<HTMLButtonElement> | undefined;
128
+ onCompositionStartCapture?: CompositionEventHandler<HTMLButtonElement> | undefined;
129
+ onCompositionUpdate?: CompositionEventHandler<HTMLButtonElement> | undefined;
130
+ onCompositionUpdateCapture?: CompositionEventHandler<HTMLButtonElement> | undefined;
131
+ onFocus?: FocusEventHandler<HTMLButtonElement> | undefined;
132
+ onFocusCapture?: FocusEventHandler<HTMLButtonElement> | undefined;
133
+ onBlur?: FocusEventHandler<HTMLButtonElement> | undefined;
134
+ onBlurCapture?: FocusEventHandler<HTMLButtonElement> | undefined;
135
+ onChange?: FormEventHandler<HTMLButtonElement> | undefined;
136
+ onChangeCapture?: FormEventHandler<HTMLButtonElement> | undefined;
137
+ onBeforeInput?: InputEventHandler<HTMLButtonElement> | undefined;
138
+ onBeforeInputCapture?: FormEventHandler<HTMLButtonElement> | undefined;
139
+ onInput?: FormEventHandler<HTMLButtonElement> | undefined;
140
+ onInputCapture?: FormEventHandler<HTMLButtonElement> | undefined;
141
+ onReset?: FormEventHandler<HTMLButtonElement> | undefined;
142
+ onResetCapture?: FormEventHandler<HTMLButtonElement> | undefined;
143
+ onSubmit?: FormEventHandler<HTMLButtonElement> | undefined;
144
+ onSubmitCapture?: FormEventHandler<HTMLButtonElement> | undefined;
145
+ onInvalid?: FormEventHandler<HTMLButtonElement> | undefined;
146
+ onInvalidCapture?: FormEventHandler<HTMLButtonElement> | undefined;
147
+ onLoad?: ReactEventHandler<HTMLButtonElement> | undefined;
148
+ onLoadCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
149
+ onError?: ReactEventHandler<HTMLButtonElement> | undefined;
150
+ onErrorCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
151
+ onKeyDown?: KeyboardEventHandler<HTMLButtonElement> | undefined;
152
+ onKeyDownCapture?: KeyboardEventHandler<HTMLButtonElement> | undefined;
153
+ onKeyPress?: KeyboardEventHandler<HTMLButtonElement> | undefined;
154
+ onKeyPressCapture?: KeyboardEventHandler<HTMLButtonElement> | undefined;
155
+ onKeyUp?: KeyboardEventHandler<HTMLButtonElement> | undefined;
156
+ onKeyUpCapture?: KeyboardEventHandler<HTMLButtonElement> | undefined;
157
+ onAbort?: ReactEventHandler<HTMLButtonElement> | undefined;
158
+ onAbortCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
159
+ onCanPlay?: ReactEventHandler<HTMLButtonElement> | undefined;
160
+ onCanPlayCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
161
+ onCanPlayThrough?: ReactEventHandler<HTMLButtonElement> | undefined;
162
+ onCanPlayThroughCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
163
+ onDurationChange?: ReactEventHandler<HTMLButtonElement> | undefined;
164
+ onDurationChangeCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
165
+ onEmptied?: ReactEventHandler<HTMLButtonElement> | undefined;
166
+ onEmptiedCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
167
+ onEncrypted?: ReactEventHandler<HTMLButtonElement> | undefined;
168
+ onEncryptedCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
169
+ onEnded?: ReactEventHandler<HTMLButtonElement> | undefined;
170
+ onEndedCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
171
+ onLoadedData?: ReactEventHandler<HTMLButtonElement> | undefined;
172
+ onLoadedDataCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
173
+ onLoadedMetadata?: ReactEventHandler<HTMLButtonElement> | undefined;
174
+ onLoadedMetadataCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
175
+ onLoadStart?: ReactEventHandler<HTMLButtonElement> | undefined;
176
+ onLoadStartCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
177
+ onPause?: ReactEventHandler<HTMLButtonElement> | undefined;
178
+ onPauseCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
179
+ onPlay?: ReactEventHandler<HTMLButtonElement> | undefined;
180
+ onPlayCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
181
+ onPlaying?: ReactEventHandler<HTMLButtonElement> | undefined;
182
+ onPlayingCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
183
+ onProgress?: ReactEventHandler<HTMLButtonElement> | undefined;
184
+ onProgressCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
185
+ onRateChange?: ReactEventHandler<HTMLButtonElement> | undefined;
186
+ onRateChangeCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
187
+ onSeeked?: ReactEventHandler<HTMLButtonElement> | undefined;
188
+ onSeekedCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
189
+ onSeeking?: ReactEventHandler<HTMLButtonElement> | undefined;
190
+ onSeekingCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
191
+ onStalled?: ReactEventHandler<HTMLButtonElement> | undefined;
192
+ onStalledCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
193
+ onSuspend?: ReactEventHandler<HTMLButtonElement> | undefined;
194
+ onSuspendCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
195
+ onTimeUpdate?: ReactEventHandler<HTMLButtonElement> | undefined;
196
+ onTimeUpdateCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
197
+ onVolumeChange?: ReactEventHandler<HTMLButtonElement> | undefined;
198
+ onVolumeChangeCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
199
+ onWaiting?: ReactEventHandler<HTMLButtonElement> | undefined;
200
+ onWaitingCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
201
+ onAuxClick?: MouseEventHandler<HTMLButtonElement> | undefined;
202
+ onAuxClickCapture?: MouseEventHandler<HTMLButtonElement> | undefined;
203
+ onClick?: MouseEventHandler<HTMLButtonElement> | undefined;
204
+ onClickCapture?: MouseEventHandler<HTMLButtonElement> | undefined;
205
+ onContextMenu?: MouseEventHandler<HTMLButtonElement> | undefined;
206
+ onContextMenuCapture?: MouseEventHandler<HTMLButtonElement> | undefined;
207
+ onDoubleClick?: MouseEventHandler<HTMLButtonElement> | undefined;
208
+ onDoubleClickCapture?: MouseEventHandler<HTMLButtonElement> | undefined;
209
+ onDragCapture?: DragEventHandler<HTMLButtonElement> | undefined;
210
+ onDragEndCapture?: DragEventHandler<HTMLButtonElement> | undefined;
211
+ onDragEnter?: DragEventHandler<HTMLButtonElement> | undefined;
212
+ onDragEnterCapture?: DragEventHandler<HTMLButtonElement> | undefined;
213
+ onDragExit?: DragEventHandler<HTMLButtonElement> | undefined;
214
+ onDragExitCapture?: DragEventHandler<HTMLButtonElement> | undefined;
215
+ onDragLeave?: DragEventHandler<HTMLButtonElement> | undefined;
216
+ onDragLeaveCapture?: DragEventHandler<HTMLButtonElement> | undefined;
217
+ onDragOver?: DragEventHandler<HTMLButtonElement> | undefined;
218
+ onDragOverCapture?: DragEventHandler<HTMLButtonElement> | undefined;
219
+ onDragStartCapture?: DragEventHandler<HTMLButtonElement> | undefined;
220
+ onDrop?: DragEventHandler<HTMLButtonElement> | undefined;
221
+ onDropCapture?: DragEventHandler<HTMLButtonElement> | undefined;
222
+ onMouseDown?: MouseEventHandler<HTMLButtonElement> | undefined;
223
+ onMouseDownCapture?: MouseEventHandler<HTMLButtonElement> | undefined;
224
+ onMouseEnter?: MouseEventHandler<HTMLButtonElement> | undefined;
225
+ onMouseLeave?: MouseEventHandler<HTMLButtonElement> | undefined;
226
+ onMouseMove?: MouseEventHandler<HTMLButtonElement> | undefined;
227
+ onMouseMoveCapture?: MouseEventHandler<HTMLButtonElement> | undefined;
228
+ onMouseOut?: MouseEventHandler<HTMLButtonElement> | undefined;
229
+ onMouseOutCapture?: MouseEventHandler<HTMLButtonElement> | undefined;
230
+ onMouseOver?: MouseEventHandler<HTMLButtonElement> | undefined;
231
+ onMouseOverCapture?: MouseEventHandler<HTMLButtonElement> | undefined;
232
+ onMouseUp?: MouseEventHandler<HTMLButtonElement> | undefined;
233
+ onMouseUpCapture?: MouseEventHandler<HTMLButtonElement> | undefined;
234
+ onSelect?: ReactEventHandler<HTMLButtonElement> | undefined;
235
+ onSelectCapture?: ReactEventHandler<HTMLButtonElement> | undefined;
236
+ onTouchCancel?: TouchEventHandler<HTMLButtonElement> | undefined;
237
+ onTouchCancelCapture?: TouchEventHandler<HTMLButtonElement> | undefined;
238
+ onTouchEnd?: TouchEventHandler<HTMLButtonElement> | undefined;
239
+ onTouchEndCapture?: TouchEventHandler<HTMLButtonElement> | undefined;
240
+ onTouchMove?: TouchEventHandler<HTMLButtonElement> | undefined;
241
+ onTouchMoveCapture?: TouchEventHandler<HTMLButtonElement> | undefined;
242
+ onTouchStart?: TouchEventHandler<HTMLButtonElement> | undefined;
243
+ onTouchStartCapture?: TouchEventHandler<HTMLButtonElement> | undefined;
244
+ onPointerDown?: PointerEventHandler<HTMLButtonElement> | undefined;
245
+ onPointerDownCapture?: PointerEventHandler<HTMLButtonElement> | undefined;
246
+ onPointerMove?: PointerEventHandler<HTMLButtonElement> | undefined;
247
+ onPointerMoveCapture?: PointerEventHandler<HTMLButtonElement> | undefined;
248
+ onPointerUp?: PointerEventHandler<HTMLButtonElement> | undefined;
249
+ onPointerUpCapture?: PointerEventHandler<HTMLButtonElement> | undefined;
250
+ onPointerCancel?: PointerEventHandler<HTMLButtonElement> | undefined;
251
+ onPointerCancelCapture?: PointerEventHandler<HTMLButtonElement> | undefined;
252
+ onPointerEnter?: PointerEventHandler<HTMLButtonElement> | undefined;
253
+ onPointerLeave?: PointerEventHandler<HTMLButtonElement> | undefined;
254
+ onPointerOver?: PointerEventHandler<HTMLButtonElement> | undefined;
255
+ onPointerOverCapture?: PointerEventHandler<HTMLButtonElement> | undefined;
256
+ onPointerOut?: PointerEventHandler<HTMLButtonElement> | undefined;
257
+ onPointerOutCapture?: PointerEventHandler<HTMLButtonElement> | undefined;
258
+ onGotPointerCapture?: PointerEventHandler<HTMLButtonElement> | undefined;
259
+ onGotPointerCaptureCapture?: PointerEventHandler<HTMLButtonElement> | undefined;
260
+ onLostPointerCapture?: PointerEventHandler<HTMLButtonElement> | undefined;
261
+ onLostPointerCaptureCapture?: PointerEventHandler<HTMLButtonElement> | undefined;
262
+ onScroll?: UIEventHandler<HTMLButtonElement> | undefined;
263
+ onScrollCapture?: UIEventHandler<HTMLButtonElement> | undefined;
264
+ onScrollEnd?: UIEventHandler<HTMLButtonElement> | undefined;
265
+ onScrollEndCapture?: UIEventHandler<HTMLButtonElement> | undefined;
266
+ onWheel?: WheelEventHandler<HTMLButtonElement> | undefined;
267
+ onWheelCapture?: WheelEventHandler<HTMLButtonElement> | undefined;
268
+ onAnimationStartCapture?: AnimationEventHandler<HTMLButtonElement> | undefined;
269
+ onAnimationEnd?: AnimationEventHandler<HTMLButtonElement> | undefined;
270
+ onAnimationEndCapture?: AnimationEventHandler<HTMLButtonElement> | undefined;
271
+ onAnimationIteration?: AnimationEventHandler<HTMLButtonElement> | undefined;
272
+ onAnimationIterationCapture?: AnimationEventHandler<HTMLButtonElement> | undefined;
273
+ onToggle?: ToggleEventHandler<HTMLButtonElement> | undefined;
274
+ onBeforeToggle?: ToggleEventHandler<HTMLButtonElement> | undefined;
275
+ onTransitionCancel?: TransitionEventHandler<HTMLButtonElement> | undefined;
276
+ onTransitionCancelCapture?: TransitionEventHandler<HTMLButtonElement> | undefined;
277
+ onTransitionEnd?: TransitionEventHandler<HTMLButtonElement> | undefined;
278
+ onTransitionEndCapture?: TransitionEventHandler<HTMLButtonElement> | undefined;
279
+ onTransitionRun?: TransitionEventHandler<HTMLButtonElement> | undefined;
280
+ onTransitionRunCapture?: TransitionEventHandler<HTMLButtonElement> | undefined;
281
+ onTransitionStart?: TransitionEventHandler<HTMLButtonElement> | undefined;
282
+ onTransitionStartCapture?: TransitionEventHandler<HTMLButtonElement> | undefined;
283
+ name?: string | undefined;
284
+ value?: string | number | readonly string[] | undefined;
285
+ disabled?: boolean | undefined;
286
+ formAction?: string | ((formData: FormData) => void | Promise<void>) | undefined;
287
+ formEncType?: string | undefined;
288
+ formMethod?: string | undefined;
289
+ formNoValidate?: boolean | undefined;
290
+ formTarget?: string | undefined;
291
+ } & MotionProps, "ref"> & RefAttributes<HTMLButtonElement>>;
292
+ export declare function DynamicViewControls(): import("react/jsx-runtime").JSX.Element;