@quillsql/admin 1.3.1 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/{lib → dist}/Admin.d.ts +12 -7
  2. package/dist/Admin.d.ts.map +1 -0
  3. package/dist/Admin.js +1384 -0
  4. package/{lib → dist}/AdminProvider.d.ts +41 -27
  5. package/dist/AdminProvider.d.ts.map +1 -0
  6. package/{lib → dist}/AdminProvider.js +105 -89
  7. package/dist/api/ConnectionClient.d.ts +27 -0
  8. package/dist/api/ConnectionClient.d.ts.map +1 -0
  9. package/dist/api/ConnectionClient.js +247 -0
  10. package/dist/components/Banner/index.d.ts +3 -0
  11. package/dist/components/Banner/index.d.ts.map +1 -0
  12. package/dist/components/Banner/index.js +27 -0
  13. package/dist/components/CardSection.d.ts +3 -0
  14. package/dist/components/CardSection.d.ts.map +1 -0
  15. package/dist/components/CardSection.js +9 -0
  16. package/dist/components/CardTitle.d.ts +3 -0
  17. package/dist/components/CardTitle.d.ts.map +1 -0
  18. package/dist/components/CardTitle.js +11 -0
  19. package/dist/components/DashboardSelectPopover.d.ts +11 -0
  20. package/dist/components/DashboardSelectPopover.d.ts.map +1 -0
  21. package/dist/components/DashboardSelectPopover.js +175 -0
  22. package/dist/components/DatabaseSelector.d.ts +11 -0
  23. package/dist/components/DatabaseSelector.d.ts.map +1 -0
  24. package/dist/components/DatabaseSelector.js +22 -0
  25. package/dist/components/DeleteButton.d.ts +3 -0
  26. package/dist/components/DeleteButton.d.ts.map +1 -0
  27. package/dist/components/DeleteButton.js +10 -0
  28. package/{lib → dist}/components/DropDownMenu.d.ts +1 -0
  29. package/dist/components/DropDownMenu.d.ts.map +1 -0
  30. package/dist/components/DropDownMenu.js +39 -0
  31. package/dist/components/DropDownMenuWithLabel.d.ts +12 -0
  32. package/dist/components/DropDownMenuWithLabel.d.ts.map +1 -0
  33. package/dist/components/DropDownMenuWithLabel.js +47 -0
  34. package/{lib → dist}/components/EnvSelectPopover.d.ts +1 -0
  35. package/dist/components/EnvSelectPopover.d.ts.map +1 -0
  36. package/dist/components/EnvSelectPopover.js +205 -0
  37. package/dist/components/InputLabel.d.ts +3 -0
  38. package/dist/components/InputLabel.d.ts.map +1 -0
  39. package/dist/components/InputLabel.js +10 -0
  40. package/{lib → dist}/components/OrgSelect.d.ts +1 -0
  41. package/dist/components/OrgSelect.d.ts.map +1 -0
  42. package/dist/components/OrgSelect.js +193 -0
  43. package/dist/components/SqlViewTile.d.ts +8 -0
  44. package/dist/components/SqlViewTile.d.ts.map +1 -0
  45. package/dist/components/SqlViewTile.js +40 -0
  46. package/dist/components/StepDisplay.d.ts +10 -0
  47. package/dist/components/StepDisplay.d.ts.map +1 -0
  48. package/dist/components/StepDisplay.js +15 -0
  49. package/dist/components/index.d.ts +6 -0
  50. package/dist/components/index.d.ts.map +1 -0
  51. package/dist/forms/client_onboard/ConnectDatabase.d.ts +11 -0
  52. package/dist/forms/client_onboard/ConnectDatabase.d.ts.map +1 -0
  53. package/dist/forms/client_onboard/ConnectDatabase.js +137 -0
  54. package/dist/forms/client_onboard/ConnectSchema.d.ts +13 -0
  55. package/dist/forms/client_onboard/ConnectSchema.d.ts.map +1 -0
  56. package/dist/forms/client_onboard/ConnectSchema.js +171 -0
  57. package/dist/forms/client_onboard/CreateSqlViews.d.ts +15 -0
  58. package/dist/forms/client_onboard/CreateSqlViews.d.ts.map +1 -0
  59. package/dist/forms/client_onboard/CreateSqlViews.js +202 -0
  60. package/dist/hooks/useItemBeingEdited.d.ts +4 -0
  61. package/dist/hooks/useItemBeingEdited.d.ts.map +1 -0
  62. package/dist/hooks/useItemBeingEdited.js +25 -0
  63. package/{lib → dist}/icons/ArrowDownHeadIcon.d.ts +1 -0
  64. package/dist/icons/ArrowDownHeadIcon.d.ts.map +1 -0
  65. package/dist/icons/ArrowDownHeadIcon.js +3 -0
  66. package/dist/icons/XMarkIcon.d.ts +3 -0
  67. package/dist/icons/XMarkIcon.d.ts.map +1 -0
  68. package/dist/icons/XMarkIcon.js +11 -0
  69. package/dist/icons/index.d.ts +2 -0
  70. package/dist/icons/index.d.ts.map +1 -0
  71. package/dist/index.d.ts +7 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/{lib/index.d.ts → dist/index.js} +1 -0
  74. package/{lib → dist}/modals/EditDashboardsModal.d.ts +1 -0
  75. package/dist/modals/EditDashboardsModal.d.ts.map +1 -0
  76. package/dist/modals/EditDashboardsModal.js +91 -0
  77. package/dist/modals/NewDashboardModal.d.ts +19 -0
  78. package/dist/modals/NewDashboardModal.d.ts.map +1 -0
  79. package/dist/modals/NewDashboardModal.js +276 -0
  80. package/{lib → dist}/modals/PromoteDashModal.d.ts +2 -1
  81. package/dist/modals/PromoteDashModal.d.ts.map +1 -0
  82. package/dist/modals/PromoteDashModal.js +123 -0
  83. package/{lib → dist}/modals/PromoteViewModal.d.ts +1 -0
  84. package/dist/modals/PromoteViewModal.d.ts.map +1 -0
  85. package/{lib → dist}/modals/PromoteViewModal.js +13 -16
  86. package/{lib → dist}/modals/ReorderDashboardModal.d.ts +4 -1
  87. package/dist/modals/ReorderDashboardModal.d.ts.map +1 -0
  88. package/{lib → dist}/modals/ReorderDashboardModal.js +53 -55
  89. package/dist/modals/index.d.ts +5 -0
  90. package/dist/modals/index.d.ts.map +1 -0
  91. package/{lib → dist}/primitives/ButtonPrimitive.d.ts +3 -0
  92. package/dist/primitives/ButtonPrimitive.d.ts.map +1 -0
  93. package/dist/primitives/ButtonPrimitive.js +47 -0
  94. package/{lib → dist}/primitives/HeaderPrimitive.d.ts +1 -0
  95. package/dist/primitives/HeaderPrimitive.d.ts.map +1 -0
  96. package/dist/primitives/HeaderPrimitive.js +9 -0
  97. package/{lib → dist}/primitives/ModalPrimitive.d.ts +3 -1
  98. package/dist/primitives/ModalPrimitive.d.ts.map +1 -0
  99. package/{lib → dist}/primitives/ModalPrimitive.js +9 -11
  100. package/{lib → dist}/primitives/SecondaryButtonPrimitive.d.ts +1 -0
  101. package/dist/primitives/SecondaryButtonPrimitive.d.ts.map +1 -0
  102. package/{lib → dist}/primitives/SecondaryButtonPrimitive.js +5 -8
  103. package/{lib → dist}/primitives/SelectPrimitive.d.ts +1 -0
  104. package/dist/primitives/SelectPrimitive.d.ts.map +1 -0
  105. package/{lib → dist}/primitives/SelectPrimitive.js +8 -11
  106. package/{lib → dist}/primitives/TextInputPrimitive.d.ts +2 -0
  107. package/dist/primitives/TextInputPrimitive.d.ts.map +1 -0
  108. package/dist/primitives/TextInputPrimitive.js +24 -0
  109. package/dist/primitives/TogglePrimitive.d.ts +6 -0
  110. package/dist/primitives/TogglePrimitive.d.ts.map +1 -0
  111. package/dist/primitives/TogglePrimitive.js +45 -0
  112. package/dist/primitives/index.d.ts +7 -0
  113. package/dist/primitives/index.d.ts.map +1 -0
  114. package/dist/public_components/CreateEnvironment.d.ts +6 -0
  115. package/dist/public_components/CreateEnvironment.d.ts.map +1 -0
  116. package/dist/public_components/CreateEnvironment.js +129 -0
  117. package/{lib → dist}/public_components/DashboardBuilder.d.ts +2 -1
  118. package/dist/public_components/DashboardBuilder.d.ts.map +1 -0
  119. package/dist/public_components/DashboardBuilder.js +192 -0
  120. package/{lib → dist}/public_components/DashboardManager.d.ts +2 -1
  121. package/dist/public_components/DashboardManager.d.ts.map +1 -0
  122. package/dist/public_components/DashboardManager.js +308 -0
  123. package/{lib → dist}/public_components/SQLViewManager.d.ts +2 -1
  124. package/dist/public_components/SQLViewManager.d.ts.map +1 -0
  125. package/dist/public_components/SQLViewManager.js +394 -0
  126. package/dist/utils/constants.d.ts +26 -0
  127. package/dist/utils/constants.d.ts.map +1 -0
  128. package/dist/utils/constants.js +13 -0
  129. package/dist/utils/databases.d.ts +34 -0
  130. package/dist/utils/databases.d.ts.map +1 -0
  131. package/dist/utils/databases.js +51 -0
  132. package/dist/utils/delay.d.ts +2 -0
  133. package/dist/utils/delay.d.ts.map +1 -0
  134. package/dist/utils/delay.js +3 -0
  135. package/dist/utils/schema.d.ts +22 -0
  136. package/dist/utils/schema.d.ts.map +1 -0
  137. package/dist/utils/schema.js +1 -0
  138. package/dist/utils/table.d.ts +9 -0
  139. package/dist/utils/table.d.ts.map +1 -0
  140. package/dist/utils/table.js +1 -0
  141. package/package.json +19 -26
  142. package/LICENSE +0 -21
  143. package/README.md +0 -10
  144. package/lib/Admin.js +0 -1573
  145. package/lib/Admin.js.map +0 -1
  146. package/lib/AdminProvider.js.map +0 -1
  147. package/lib/components/DashboardSelectPopover.d.ts +0 -9
  148. package/lib/components/DashboardSelectPopover.js +0 -187
  149. package/lib/components/DashboardSelectPopover.js.map +0 -1
  150. package/lib/components/DropDownMenu.js +0 -43
  151. package/lib/components/DropDownMenu.js.map +0 -1
  152. package/lib/components/EnvSelectPopover.js +0 -190
  153. package/lib/components/EnvSelectPopover.js.map +0 -1
  154. package/lib/components/OrgSelect.js +0 -188
  155. package/lib/components/OrgSelect.js.map +0 -1
  156. package/lib/components/index.js +0 -17
  157. package/lib/components/index.js.map +0 -1
  158. package/lib/icons/ArrowDownHeadIcon.js +0 -6
  159. package/lib/icons/ArrowDownHeadIcon.js.map +0 -1
  160. package/lib/icons/index.js +0 -9
  161. package/lib/icons/index.js.map +0 -1
  162. package/lib/index.js +0 -17
  163. package/lib/index.js.map +0 -1
  164. package/lib/modals/EditDashboardsModal.js +0 -94
  165. package/lib/modals/EditDashboardsModal.js.map +0 -1
  166. package/lib/modals/PromoteDashModal.js +0 -126
  167. package/lib/modals/PromoteDashModal.js.map +0 -1
  168. package/lib/modals/PromoteViewModal.js.map +0 -1
  169. package/lib/modals/ReorderDashboardModal.js.map +0 -1
  170. package/lib/modals/index.js +0 -15
  171. package/lib/modals/index.js.map +0 -1
  172. package/lib/primitives/ButtonPrimitive.js +0 -25
  173. package/lib/primitives/ButtonPrimitive.js.map +0 -1
  174. package/lib/primitives/HeaderPrimitive.js +0 -12
  175. package/lib/primitives/HeaderPrimitive.js.map +0 -1
  176. package/lib/primitives/ModalPrimitive.js.map +0 -1
  177. package/lib/primitives/SecondaryButtonPrimitive.js.map +0 -1
  178. package/lib/primitives/SelectPrimitive.js.map +0 -1
  179. package/lib/primitives/TextInputPrimitive.js +0 -26
  180. package/lib/primitives/TextInputPrimitive.js.map +0 -1
  181. package/lib/primitives/index.js +0 -19
  182. package/lib/primitives/index.js.map +0 -1
  183. package/lib/public_components/DashboardBuilder.js +0 -166
  184. package/lib/public_components/DashboardBuilder.js.map +0 -1
  185. package/lib/public_components/DashboardManager.js +0 -255
  186. package/lib/public_components/DashboardManager.js.map +0 -1
  187. package/lib/public_components/SQLViewManager.js +0 -400
  188. package/lib/public_components/SQLViewManager.js.map +0 -1
  189. /package/{lib/components/index.d.ts → dist/components/index.js} +0 -0
  190. /package/{lib/icons/index.d.ts → dist/icons/index.js} +0 -0
  191. /package/{lib/modals/index.d.ts → dist/modals/index.js} +0 -0
  192. /package/{lib/primitives/index.d.ts → dist/primitives/index.js} +0 -0
@@ -0,0 +1,47 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export default function DropdownMenuWithLabel({ items, setSelected, selected, theme, label, disabled = false, secondaryTextColor = '#6e6e6e', }) {
3
+ return (_jsxs("div", { children: [_jsx("h1", { style: {
4
+ fontSize: '14px',
5
+ paddingTop: '0px',
6
+ marginTop: '0px',
7
+ marginBottom: '4px',
8
+ fontWeight: '600',
9
+ color: secondaryTextColor,
10
+ userSelect: 'none',
11
+ }, children: label }), _jsx("div", { style: { display: 'flex', flexDirection: 'column' }, children: _jsxs("div", { style: {
12
+ position: 'relative',
13
+ fontFamily: theme?.fontFamily,
14
+ fontSize: 14,
15
+ fontWeight: 500,
16
+ }, children: [_jsxs("select", { style: {
17
+ width: '100%',
18
+ minWidth: 250,
19
+ maxWidth: 250,
20
+ outline: 'none',
21
+ textAlign: 'left',
22
+ whiteSpace: 'nowrap',
23
+ overflow: 'hidden',
24
+ textOverflow: 'ellipsis',
25
+ borderRadius: 6,
26
+ WebkitAppearance: 'none',
27
+ paddingLeft: 12,
28
+ paddingRight: 12,
29
+ height: 38,
30
+ borderWidth: 1,
31
+ borderColor: '#e7e7e7',
32
+ background: 'white',
33
+ color: '#212121',
34
+ boxShadow: '0 1px 2px 0 rgba(0,0,0,.05)',
35
+ fontFamily: theme?.fontFamily,
36
+ }, disabled: disabled, onChange: (e) => {
37
+ setSelected(items.find((item) => item === e.target.value));
38
+ }, value: selected || '', children: [_jsx("option", { value: "", children: items && items.length !== 0 ? 'Select' : 'N/A' }), items.slice(0, 50).map((item) => (_jsx("option", { value: item, children: item }, item)))] }), _jsxs("svg", { style: {
39
+ height: '20px',
40
+ width: '20px',
41
+ flex: 'none',
42
+ position: 'absolute',
43
+ right: 8,
44
+ top: 9,
45
+ color: '#565656',
46
+ }, "aria-hidden": "true", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", width: "24", height: "24", visibility: disabled ? 'hidden' : 'visible', children: [_jsx("path", { fill: "none", d: "M0 0h24v24H0z" }), _jsx("path", { fill: "currentColor", d: "M12 13.172l4.95-4.95 1.414 1.414L12 16 5.636 9.636 7.05 8.222z" })] })] }) })] }));
47
+ }
@@ -10,3 +10,4 @@ interface EnvSelectPopoverProps {
10
10
  }
11
11
  export default function EnvSelectPopover({ clients, setClient, client, theme, environment, setEnvironment, handlePromote, showPromote, }: EnvSelectPopoverProps): import("react/jsx-runtime").JSX.Element;
12
12
  export {};
13
+ //# sourceMappingURL=EnvSelectPopover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnvSelectPopover.d.ts","sourceRoot":"","sources":["../../src/components/EnvSelectPopover.tsx"],"names":[],"mappings":"AAIA,UAAU,qBAAqB;IAC7B,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,SAAS,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACjC,MAAM,EAAE,GAAG,CAAC;IACZ,KAAK,EAAE,GAAG,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACtC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,OAAO,EACP,SAAS,EACT,MAAM,EACN,KAAK,EACL,WAAW,EACX,cAAc,EACd,aAAa,EACb,WAAW,GACZ,EAAE,qBAAqB,2CAsSvB"}
@@ -0,0 +1,205 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useRef, useEffect } from 'react';
3
+ import { ArrowDownHeadIcon } from '../icons';
4
+ import { useAdmin } from '../AdminProvider';
5
+ export default function EnvSelectPopover({ clients, setClient, client, theme, environment, setEnvironment, handlePromote, showPromote, }) {
6
+ const { state, dispatch } = useAdmin();
7
+ const [isOpen, setIsOpen] = useState(false);
8
+ const [hoveredItemId, setHoveredItemId] = useState(null);
9
+ const [isPromoteHovered, setIsPromoteHovered] = useState(false);
10
+ const handleItemClick = (selectedClient) => {
11
+ if (state.activeQuery) {
12
+ const message = 'Are you sure? Changing environment will exit edit mode and your changes will not be saved.';
13
+ if (!confirm(message))
14
+ return;
15
+ dispatch({ type: 'SET_ACTIVE_QUERY', payload: '' });
16
+ dispatch({ type: 'SET_ACTIVE_EDIT_ITEM', payload: null });
17
+ }
18
+ setClient(selectedClient);
19
+ setIsOpen(false);
20
+ };
21
+ const handlePromoteClick = (e, client) => {
22
+ e.preventDefault();
23
+ if (handlePromote) {
24
+ handlePromote(client);
25
+ }
26
+ };
27
+ const popoverRef = useRef(null);
28
+ const handleOutsideClick = (event) => {
29
+ if (popoverRef.current && !popoverRef.current.contains(event.target)) {
30
+ setIsOpen(false);
31
+ }
32
+ };
33
+ useEffect(() => {
34
+ if (isOpen) {
35
+ document.addEventListener('mousedown', handleOutsideClick);
36
+ }
37
+ else {
38
+ document.removeEventListener('mousedown', handleOutsideClick);
39
+ }
40
+ return () => {
41
+ document.removeEventListener('mousedown', handleOutsideClick); // Cleanup
42
+ };
43
+ }, [isOpen]);
44
+ const dropdownStyles = {
45
+ position: 'relative',
46
+ display: 'inline-block',
47
+ fontFamily: theme.fontFamily,
48
+ fontSize: 14,
49
+ };
50
+ const separatorStyle = {
51
+ borderBottom: '1px solid #e7e7e7',
52
+ };
53
+ const triggerButtonStyles = {
54
+ width: '100%',
55
+ minWidth: 230,
56
+ maxWidth: 230,
57
+ outline: 'none',
58
+ textAlign: 'left',
59
+ whiteSpace: 'nowrap',
60
+ overflow: 'hidden',
61
+ textOverflow: 'ellipsis',
62
+ borderRadius: 6,
63
+ WebkitAppearance: 'none',
64
+ paddingLeft: 12,
65
+ paddingRight: 12,
66
+ height: 38,
67
+ borderTop: '1px solid #e7e7e7',
68
+ borderLeft: '1px solid #e7e7e7',
69
+ borderRight: '1px solid #e7e7e7',
70
+ borderBottom: '1px solid #e7e7e7',
71
+ background: theme.backgroundColor,
72
+ color: theme.primaryTextColor,
73
+ // boxShadow: "0 1px 2px 0 rgba(0,0,0,.05)",
74
+ fontFamily: theme.fontFamily,
75
+ fontWeight: 500,
76
+ };
77
+ const dropdownContentStyles = {
78
+ display: isOpen ? 'flex' : 'none',
79
+ flexDirection: 'column',
80
+ background: '#FFFFFF',
81
+ // background: "#F7F8FA",
82
+ position: 'absolute',
83
+ boxShadow: '0px 1px 12px 0px rgba(56, 65, 81, 0.1)',
84
+ border: '1px solid #e7e7e7',
85
+ boxSizing: 'border-box',
86
+ zIndex: 1,
87
+ borderRadius: 6,
88
+ padding: 8,
89
+ maxHeight: 420,
90
+ width: 230,
91
+ marginTop: 8,
92
+ gap: 5,
93
+ overflowY: 'scroll',
94
+ };
95
+ const itemStyles = {
96
+ // padding: "10px",
97
+ height: 42,
98
+ paddingLeft: 10,
99
+ paddingRight: 4,
100
+ cursor: 'pointer',
101
+ fontSize: '14px',
102
+ color: theme.primaryTextColor,
103
+ display: 'flex',
104
+ flexDirection: 'row',
105
+ alignItems: 'center',
106
+ justifyContent: 'space-between',
107
+ fontWeight: '500',
108
+ };
109
+ const itemHoverStyles = {
110
+ backgroundColor: 'rgba(56, 65, 81, 0.04)',
111
+ borderRadius: 6,
112
+ };
113
+ const selectedItemStyles = {
114
+ backgroundColor: 'rgba(56, 65, 81, 0.04)',
115
+ borderRadius: 6,
116
+ // boxShadow: "0 1px 6px 0 rgba(56, 65, 81, 0.09)",
117
+ fontWeight: '500',
118
+ // border: "1px solid #e7e7e7",
119
+ };
120
+ const promoteStyles = {
121
+ color: theme.primaryTextColor,
122
+ cursor: 'pointer',
123
+ fontSize: '13px',
124
+ border: isPromoteHovered ? '1px solid #e7e7e7' : '1px solid transparent',
125
+ backgroundColor: isPromoteHovered ? 'white' : undefined,
126
+ boxShadow: isPromoteHovered
127
+ ? '0px 1px 12px 0px rgba(56, 65, 81, 0.1)'
128
+ : undefined,
129
+ display: 'flex',
130
+ flexDirection: 'row',
131
+ alignItems: 'center',
132
+ paddingLeft: 7,
133
+ paddingRight: 9,
134
+ paddingTop: 6,
135
+ paddingBottom: 6,
136
+ borderRadius: 4,
137
+ gap: 3,
138
+ };
139
+ const itemTextStyles = {
140
+ // marginRight: "30px",
141
+ whiteSpace: 'nowrap',
142
+ overflow: 'hidden',
143
+ textOverflow: 'ellipsis',
144
+ };
145
+ if (client && client._id === '642ee580e45ecb91213b44aa') {
146
+ return (_jsxs("div", { style: {
147
+ background: '#f7f7f7',
148
+ borderRadius: 6,
149
+ height: 38,
150
+ display: 'flex',
151
+ flexDirection: 'row',
152
+ alignItems: 'center',
153
+ paddingLeft: 4,
154
+ paddingRight: 4,
155
+ }, children: [_jsx("button", { style: {
156
+ background: environment === 'PRODUCTION' ? 'white' : undefined,
157
+ color: environment === 'PRODUCTION' ? '#384151' : '#677389',
158
+ fontWeight: environment === 'PRODUCTION' ? '600' : '500',
159
+ borderRadius: 4,
160
+ paddingLeft: 6,
161
+ paddingRight: 6,
162
+ paddingTop: 3,
163
+ paddingBottom: 3,
164
+ fontSize: 16,
165
+ }, onClick: () => setEnvironment('PRODUCTION'), children: "Production" }), _jsx("button", { style: {
166
+ background: environment === 'STAGING' ? 'white' : undefined,
167
+ color: environment === 'STAGING' ? '#384151' : '#677389',
168
+ fontWeight: environment === 'STAGING' ? '600' : '500',
169
+ borderRadius: 4,
170
+ paddingLeft: 6,
171
+ paddingRight: 6,
172
+ paddingTop: 3,
173
+ paddingBottom: 3,
174
+ fontSize: 16,
175
+ }, onClick: () => setEnvironment('STAGING'), children: "Staging" })] }));
176
+ }
177
+ return (_jsxs("div", { style: dropdownStyles, ref: popoverRef, children: [_jsx("button", {
178
+ // onMouseEnter={() => setIsOpen(true)}
179
+ onClick: () => setIsOpen((isOpen) => !isOpen), style: triggerButtonStyles, children: client ? client.name : 'Select environment' }), _jsx("div", { style: dropdownContentStyles, children: !!clients.length &&
180
+ clients.map((item) => (_jsxs("div", { onClick: client && client._id !== item._id
181
+ ? () => handleItemClick(item)
182
+ : undefined, style: {
183
+ ...itemStyles,
184
+ ...(hoveredItemId === item._id ? itemHoverStyles : {}),
185
+ ...(client && client._id === item._id
186
+ ? selectedItemStyles
187
+ : {}),
188
+ }, onMouseEnter: () => setHoveredItemId(item._id), onMouseLeave: () => setHoveredItemId(null), children: [_jsx("span", { onClick: client && client._id === item._id
189
+ ? () => handleItemClick(item)
190
+ : undefined, style: {
191
+ ...promoteStyles,
192
+ visibility: showPromote ? 'visible' : 'hidden',
193
+ }, onMouseEnter: () => setIsPromoteHovered(true), onMouseLeave: () => setIsPromoteHovered(false), children: item.name }), client && client._id === item._id && (_jsxs("div", { onClick: (e) => handlePromoteClick(e, item), style: {
194
+ ...promoteStyles,
195
+ visibility: showPromote ? 'visible' : 'hidden',
196
+ }, onMouseEnter: () => setIsPromoteHovered(true), onMouseLeave: () => setIsPromoteHovered(false), children: [_jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 16 16", fill: "currentColor", height: "16px", width: "16px", children: [_jsx("path", { d: "M7.25 10.25a.75.75 0 0 0 1.5 0V4.56l2.22 2.22a.75.75 0 1 0 1.06-1.06l-3.5-3.5a.75.75 0 0 0-1.06 0l-3.5 3.5a.75.75 0 0 0 1.06 1.06l2.22-2.22v5.69Z" }), _jsx("path", { d: "M3.5 9.75a.75.75 0 0 0-1.5 0v1.5A2.75 2.75 0 0 0 4.75 14h6.5A2.75 2.75 0 0 0 14 11.25v-1.5a.75.75 0 0 0-1.5 0v1.5c0 .69-.56 1.25-1.25 1.25h-6.5c-.69 0-1.25-.56-1.25-1.25v-1.5Z" })] }), "Promote"] }))] }, item._id))) }), _jsx(ArrowDownHeadIcon, { style: {
197
+ height: '20px',
198
+ width: '20px',
199
+ flex: 'none',
200
+ position: 'absolute',
201
+ right: 8,
202
+ top: 9.5,
203
+ color: '#6C727F',
204
+ }, "aria-hidden": "true" })] }));
205
+ }
@@ -0,0 +1,3 @@
1
+ import { PropsWithChildren } from 'react';
2
+ export default function InputLabel(props: PropsWithChildren): JSX.Element;
3
+ //# sourceMappingURL=InputLabel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputLabel.d.ts","sourceRoot":"","sources":["../../src/components/InputLabel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE1C,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,KAAK,EAAE,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAcxE"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export default function InputLabel(props) {
3
+ return (_jsx("div", { style: {
4
+ fontFamily: 'Inter; Helvetica',
5
+ color: '#6C727F',
6
+ fontSize: 14,
7
+ fontWeight: '600',
8
+ marginBottom: 2,
9
+ }, children: props.children }));
10
+ }
@@ -9,3 +9,4 @@ interface OrgSelectProps {
9
9
  }
10
10
  export default function OrgSelect({ environment, setEnvironment, organizations, theme, organizationId, setOrganizationId, parentRef, }: OrgSelectProps): import("react/jsx-runtime").JSX.Element;
11
11
  export {};
12
+ //# sourceMappingURL=OrgSelect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrgSelect.d.ts","sourceRoot":"","sources":["../../src/components/OrgSelect.tsx"],"names":[],"mappings":"AAWA,UAAU,cAAc;IACtB,SAAS,EAAE,GAAG,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,aAAa,EAAE,GAAG,EAAE,CAAC;IACrB,KAAK,EAAE,GAAG,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC5D;AA0ND,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,WAAW,EACX,cAAc,EACd,aAAa,EACb,KAAK,EACL,cAAc,EACd,iBAAiB,EACjB,SAAS,GACV,EAAE,cAAc,2CAiGhB"}
@@ -0,0 +1,193 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState, } from 'react';
3
+ import { ArrowDownHeadIcon } from '../icons';
4
+ import { useAdmin } from '../AdminProvider';
5
+ const useOnClickOutside = (ref, handler) => {
6
+ useEffect(() => {
7
+ const listener = (event) => {
8
+ if (!ref.current || ref.current.contains(event.target)) {
9
+ return;
10
+ }
11
+ handler(event);
12
+ };
13
+ document.addEventListener('mousedown', listener);
14
+ document.addEventListener('touchstart', listener);
15
+ return () => {
16
+ document.removeEventListener('mousedown', listener);
17
+ document.removeEventListener('touchstart', listener);
18
+ };
19
+ }, [ref, handler]);
20
+ };
21
+ function MemoizedPopover({ onClose, parentRef, children, style = {}, onClick, label, showTrigger = true, isOpen, setIsOpen, }) {
22
+ const modalRef = useRef(null);
23
+ useOnClickOutside(modalRef, (e) => {
24
+ // Exclude click on trigger button (e.g. Dropdown Button) from outside click handler
25
+ const isTriggerElem = parentRef
26
+ ? parentRef.current?.contains(e.target)
27
+ : false;
28
+ if (isTriggerElem) {
29
+ handleCloseModal();
30
+ }
31
+ });
32
+ const handleCloseModal = () => {
33
+ setIsOpen(false);
34
+ if (onClose) {
35
+ onClose();
36
+ }
37
+ };
38
+ return (_jsxs("div", { children: [showTrigger && (_jsxs("button", {
39
+ // onMouseEnter={() => setIsOpen(true)}
40
+ onClick: (e) => {
41
+ setIsOpen(!isOpen);
42
+ if (onClick) {
43
+ onClick(e);
44
+ }
45
+ }, style: {
46
+ width: '100%',
47
+ minWidth: 230,
48
+ maxWidth: 230,
49
+ outline: 'none',
50
+ textAlign: 'left',
51
+ whiteSpace: 'nowrap',
52
+ overflow: 'hidden',
53
+ textOverflow: 'ellipsis',
54
+ borderRadius: 6,
55
+ WebkitAppearance: 'none',
56
+ borderTop: '1px solid #e7e7e7',
57
+ borderLeft: '1px solid #e7e7e7',
58
+ borderRight: '1px solid #e7e7e7',
59
+ borderBottom: '1px solid #e7e7e7',
60
+ paddingLeft: 12,
61
+ paddingRight: 12,
62
+ height: 38,
63
+ background: 'white',
64
+ color: '#384151',
65
+ // boxShadow: "0 1px 2px 0 rgba(0,0,0,.05)",
66
+ // fontFamily: theme.fontFamily,
67
+ fontWeight: 500,
68
+ fontSize: 14,
69
+ position: 'relative',
70
+ }, children: [label, _jsx(ArrowDownHeadIcon, { style: {
71
+ height: '20px',
72
+ width: '20px',
73
+ flex: 'none',
74
+ position: 'absolute',
75
+ right: 8,
76
+ top: 8,
77
+ color: '#6C727F',
78
+ }, "aria-hidden": "true" })] })), isOpen && (_jsx("div", { id: "quill-popover-modal", ref: modalRef, style: { position: 'relative' }, children: _jsx("div", { style: {
79
+ background: 'white',
80
+ position: 'absolute',
81
+ boxShadow: '0px 1px 12px 0px rgba(56, 65, 81, 0.1)',
82
+ border: '1px solid #e7e7e7',
83
+ boxSizing: 'content-box',
84
+ zIndex: 1,
85
+ top: showTrigger ? 8 : 0,
86
+ borderRadius: 6,
87
+ // padding: 20,
88
+ overflow: 'auto',
89
+ display: 'flex',
90
+ flexDirection: 'column',
91
+ alignItems: 'center',
92
+ ...style,
93
+ }, children: children }) }))] }));
94
+ }
95
+ const MemoizedTextInput = ({ value, onChange, placeholder, id, }) => {
96
+ return (_jsxs("div", { style: {
97
+ position: 'relative',
98
+ display: 'flex',
99
+ flexDirection: 'row',
100
+ alignItems: 'center',
101
+ marginTop: 2,
102
+ }, children: [_jsx("style", { children: `
103
+ .quill-text-input {
104
+ background-color: white;
105
+ height: 40px;
106
+ width: 180px;
107
+ z-index: 2;
108
+ color: #384151;
109
+ border-radius: 4px;
110
+ text-align: left;
111
+ padding-right: 12px;
112
+ padding-top: 0px;
113
+ padding-bottom: 0px;
114
+ box-sizing: content-box;
115
+ margin-left: 6px;
116
+ }
117
+ .quill-text-input:focus {
118
+ outline: none;
119
+ }` }), _jsx("div", { style: { width: 6 } }), _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 16 16", fill: "rgba(56, 65, 81, 0.7)", height: "16", width: "16", children: _jsx("path", { fillRule: "evenodd", d: "M9.965 11.026a5 5 0 1 1 1.06-1.06l2.755 2.754a.75.75 0 1 1-1.06 1.06l-2.755-2.754ZM10.5 7a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0Z", clipRule: "evenodd" }) }), _jsx("input", { id: id, className: "quill-text-input", type: "text", value: value, onChange: (event) => onChange(event.target.value), placeholder: placeholder })] }));
120
+ };
121
+ export default function OrgSelect({ environment, setEnvironment, organizations, theme, organizationId, setOrganizationId, parentRef, }) {
122
+ useEffect(() => {
123
+ setEnvironment(environment);
124
+ }, [environment]);
125
+ const { state, dispatch } = useAdmin();
126
+ const [isOpen, setIsOpen] = useState(false);
127
+ const [searchQuery, setSearchQuery] = useState('');
128
+ const dropDownItems = organizations.map((org) => ({
129
+ name: org.name,
130
+ id: org.id,
131
+ }));
132
+ const handleSelectOrganization = (selectedItem) => {
133
+ if (state.activeQuery) {
134
+ const message = 'Are you sure? Changing organization will exit edit mode and your changes will not be saved.';
135
+ if (!confirm(message))
136
+ return;
137
+ dispatch({ type: 'SET_ACTIVE_QUERY', payload: '' });
138
+ dispatch({ type: 'SET_ACTIVE_EDIT_ITEM', payload: null });
139
+ }
140
+ setOrganizationId(selectedItem?.id || '');
141
+ setIsOpen(false);
142
+ };
143
+ const selectedOrganization = dropDownItems.find((item) => item.id === organizationId);
144
+ const filteredOrganizations = searchQuery === ''
145
+ ? dropDownItems
146
+ : dropDownItems.filter((org) => org.name
147
+ .toLowerCase()
148
+ .replace(/\s+/g, '')
149
+ .includes(searchQuery.toLowerCase().replace(/\s+/g, '')));
150
+ return (_jsxs("div", { style: { display: 'flex', flexDirection: 'column' }, children: [_jsx("h1", { style: {
151
+ fontSize: '14px',
152
+ paddingTop: '0px',
153
+ marginTop: '0px',
154
+ marginBottom: '4px',
155
+ fontWeight: '600',
156
+ color: theme.secondaryTextColor,
157
+ }, children: "Organization" }), _jsxs(MemoizedPopover, { parentRef: parentRef, label: selectedOrganization && selectedOrganization.name, isOpen: isOpen, onClose: () => setIsOpen(false), style: {
158
+ boxSizing: 'border-box',
159
+ fontSize: 14,
160
+ // padding: 11,
161
+ }, setIsOpen: setIsOpen, onClick: () => console.log(), children: [_jsx(MemoizedTextInput, { id: "quill-search-bar", placeholder: "Search", value: searchQuery, onChange: setSearchQuery }), _jsx("div", { style: { height: 9, width: 230, borderTop: '1px solid #e7e7e7' } }), _jsxs("div", { style: { gap: 2, maxHeight: '50vh' }, children: [filteredOrganizations.map((item, index) => (_jsx(OrgSelectRow, { setSelected: handleSelectOrganization, item: item }, index))), filteredOrganizations.length === 0 && (_jsx(OrgSelectRow, { item: { name: 'No organizations found' } }))] }), _jsx("div", { style: { height: 8, width: 230 } })] })] }));
162
+ }
163
+ function OrgSelectRow({ item, setSelected, }) {
164
+ return (_jsxs("div", { onClick: setSelected ? () => setSelected(item) : undefined, className: "quill-org-select", children: [_jsx("style", { children: `
165
+ .quill-org-select {
166
+ background-color: white;
167
+ height: 42px;
168
+ color: #384151;
169
+ width: 216px;
170
+ borderBottom: 1px solid #e7e7e7;
171
+ border-radius: 6px;
172
+ text-align: left;
173
+ padding-left: 10px;
174
+ padding-right: 12px;
175
+ display: flex;
176
+ flex-direction: row;
177
+ align-items: center;
178
+ cursor: pointer;
179
+ font-weight: 500;
180
+ font-size: 14px;
181
+ text-overflow: ellipsis;
182
+ white-space: nowrap;
183
+ overflow: hidden;
184
+ }
185
+ .quill-org-select:hover {
186
+ background-color: rgba(56, 65, 81, 0.04);
187
+ }` }), _jsx("div", { style: {
188
+ textOverflow: 'ellipsis',
189
+ whiteSpace: 'nowrap',
190
+ overflow: 'hidden',
191
+ display: 'block',
192
+ }, children: item.name })] }));
193
+ }
@@ -0,0 +1,8 @@
1
+ import { CSSProperties } from 'react';
2
+ export default function SqlViewTile({ query, name, header2Style, header1Style, }: {
3
+ query: string;
4
+ name: string;
5
+ header1Style?: CSSProperties;
6
+ header2Style?: CSSProperties;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=SqlViewTile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqlViewTile.d.ts","sourceRoot":"","sources":["../../src/components/SqlViewTile.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAI7C,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,KAAK,EACL,IAAI,EACJ,YAAY,EACZ,YAAY,GACb,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,YAAY,CAAC,EAAE,aAAa,CAAC;CAC9B,2CAuEA"}
@@ -0,0 +1,40 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import prismTheme from 'prism-react-renderer/themes/nightOwlLight';
3
+ import Highlight, { defaultProps } from 'prism-react-renderer';
4
+ export default function SqlViewTile({ query, name, header2Style, header1Style, }) {
5
+ return (_jsxs("div", { style: {
6
+ // height: '30px',
7
+ // width: '40px',
8
+ width: '100%',
9
+ height: 200,
10
+ display: 'flex',
11
+ flexDirection: 'column',
12
+ border: '1px solid #e7e7e7',
13
+ borderRadius: 6,
14
+ padding: '12px',
15
+ background: 'white',
16
+ }, children: [_jsx("h1", { style: {
17
+ ...header1Style,
18
+ maxWidth: '100%',
19
+ whiteSpace: 'nowrap',
20
+ overflow: 'hidden',
21
+ textOverflow: 'ellipsis',
22
+ fontSize: 15,
23
+ color: '#212121',
24
+ }, children: name }), _jsx("div", { style: {
25
+ backgroundColor: '#FBFBFB',
26
+ height: '100%',
27
+ borderRadius: 6,
28
+ fontSize: 14,
29
+ overflow: 'hidden',
30
+ border: '1px solid #e7e7e7',
31
+ }, children: _jsx(Highlight, { ...defaultProps, theme: prismTheme, code: query, language: "sql", children: ({ className, style, tokens, getLineProps, getTokenProps }) => (_jsx("pre", { className: className, style: {
32
+ ...style,
33
+ textAlign: 'left',
34
+ margin: '1em 0',
35
+ padding: '0.5em',
36
+ overflow: 'scroll',
37
+ height: 130,
38
+ maxWidth: 520,
39
+ }, children: tokens.map((line, i) => (_jsx("div", { ...getLineProps({ line, key: i }), children: line.map((token, key) => (_jsx("span", { ...getTokenProps({ token, key }) }, key))) }, i))) })) }) })] }));
40
+ }
@@ -0,0 +1,10 @@
1
+ import { CSSProperties } from 'react';
2
+ interface StepDisplayProps {
3
+ label: string;
4
+ completed: boolean;
5
+ header1Style: CSSProperties;
6
+ onClick?: () => void;
7
+ }
8
+ export default function StepDisplay({ label, completed, header1Style, onClick, }: StepDisplayProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=StepDisplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepDisplay.d.ts","sourceRoot":"","sources":["../../src/components/StepDisplay.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAY,MAAM,OAAO,CAAC;AAGvD,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,aAAa,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,KAAK,EACL,SAAS,EACT,YAAY,EACZ,OAAO,GACR,EAAE,gBAAgB,2CA0ClB"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export default function StepDisplay({ label, completed, header1Style, onClick, }) {
3
+ return (_jsxs("div", { style: {
4
+ height: 64,
5
+ width: '40%',
6
+ minWidth: 600,
7
+ display: 'flex',
8
+ flexDirection: 'row',
9
+ justifyContent: 'space-between',
10
+ alignItems: 'center',
11
+ borderRadius: 6,
12
+ backgroundColor: '#F6F6F6',
13
+ padding: '24px 24px',
14
+ }, id: "connect-database-form", onClick: onClick, children: [_jsx("h1", { style: { ...header1Style, marginBottom: '0px', fontSize: 16 }, children: label }), completed ? (_jsx("div", { children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", width: "24px", height: "24px", children: _jsx("path", { fillRule: "evenodd", d: "M10 18a8 8 0 1 0 0-16 8 8 0 0 0 0 16Zm3.857-9.809a.75.75 0 0 0-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 1 0-1.06 1.061l2.5 2.5a.75.75 0 0 0 1.137-.089l4-5.5Z", clipRule: "evenodd" }) }) })) : (_jsx("div", {}))] }));
15
+ }
@@ -0,0 +1,6 @@
1
+ export { default as EnvSelectPopover } from "./EnvSelectPopover";
2
+ export { default as OrgSelect } from "./OrgSelect";
3
+ export { default as DropDownMenu } from "./DropDownMenu";
4
+ export { default as DashboardManager } from "../public_components/DashboardManager";
5
+ export { default as DashboardSelectPopover } from "./DashboardSelectPopover";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { CSSProperties } from 'react';
2
+ import { ConnectionError, ConnectionType } from '../../utils/databases';
3
+ import { SchemaDetails } from '../../utils/schema';
4
+ export default function ConnectDatabase({ containerStyle, header1Style, header2Style, setEnvironmentDetails, environmentDetails, }: {
5
+ containerStyle?: CSSProperties;
6
+ header1Style?: CSSProperties;
7
+ header2Style?: CSSProperties;
8
+ environmentDetails?: ConnectionType;
9
+ setEnvironmentDetails: (connectionInfo?: ConnectionType, schemaDetails?: SchemaDetails, schemaError?: ConnectionError) => void;
10
+ }): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=ConnectDatabase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectDatabase.d.ts","sourceRoot":"","sources":["../../../src/forms/client_onboard/ConnectDatabase.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAY,MAAM,OAAO,CAAC;AAGvD,OAAO,EACL,eAAe,EACf,cAAc,EAIf,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,GACnB,EAAE;IACD,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,kBAAkB,CAAC,EAAE,cAAc,CAAC;IACpC,qBAAqB,EAAE,CACrB,cAAc,CAAC,EAAE,cAAc,EAC/B,aAAa,CAAC,EAAE,aAAa,EAC7B,WAAW,CAAC,EAAE,eAAe,KAC1B,IAAI,CAAC;CACX,2CAwRA"}