@keboola/design 6.5.0 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +7 -7
- package/COMPONENT-API.md +3 -9
- package/README.md +1 -1
- package/dist/charts.cjs +22 -22
- package/dist/charts.cjs.map +1 -1
- package/dist/charts.d.cts +5 -5
- package/dist/charts.d.ts +5 -5
- package/dist/charts.js +22 -22
- package/dist/charts.js.map +1 -1
- package/dist/editors.cjs +590 -432
- package/dist/editors.cjs.map +1 -1
- package/dist/editors.d.cts +8 -4
- package/dist/editors.d.ts +8 -4
- package/dist/editors.js +591 -416
- package/dist/editors.js.map +1 -1
- package/dist/icons.cjs +23817 -45
- package/dist/icons.cjs.map +1 -1
- package/dist/icons.d.cts +12 -3
- package/dist/icons.d.ts +12 -3
- package/dist/icons.js +297 -40
- package/dist/icons.js.map +1 -1
- package/dist/index.cjs +4702 -4755
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +183 -169
- package/dist/index.d.ts +183 -169
- package/dist/index.js +4700 -4754
- package/dist/index.js.map +1 -1
- package/dist/markdown-editor.cjs +817 -923
- package/dist/markdown-editor.cjs.map +1 -1
- package/dist/markdown-editor.js +818 -923
- package/dist/markdown-editor.js.map +1 -1
- package/dist/mermaid.cjs +308 -425
- package/dist/mermaid.cjs.map +1 -1
- package/dist/mermaid.d.cts +5 -1
- package/dist/mermaid.d.ts +5 -1
- package/dist/mermaid.js +310 -408
- package/dist/mermaid.js.map +1 -1
- package/dist/rjsf.cjs +1398 -1225
- package/dist/rjsf.cjs.map +1 -1
- package/dist/rjsf.js +1399 -1225
- package/dist/rjsf.js.map +1 -1
- package/dist/styles.css +2 -5
- package/dist/testing.cjs +86 -82
- package/dist/testing.cjs.map +1 -1
- package/dist/testing.js +86 -82
- package/dist/testing.js.map +1 -1
- package/package.json +26 -19
- package/src/styles.css +125 -105
- package/src/theme.css +264 -0
package/dist/editors.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createContext,
|
|
1
|
+
import { createContext, useMemo, useRef, useEffect, useCallback, useLayoutEffect, useSyncExternalStore, useState, use, Children, Fragment as Fragment$1 } from 'react';
|
|
2
2
|
import { completeAnyWord, autocompletion } from '@codemirror/autocomplete';
|
|
3
3
|
import { jsonParseLinter, json } from '@codemirror/lang-json';
|
|
4
4
|
import { linter } from '@codemirror/lint';
|
|
@@ -12,37 +12,23 @@ import { cva } from 'class-variance-authority';
|
|
|
12
12
|
import { keboolaLegacySidebar, keboolaLegacyTopnav } from '@keboola/brand-registry';
|
|
13
13
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
14
14
|
import { Root, Slottable } from '@radix-ui/react-slot';
|
|
15
|
-
import
|
|
15
|
+
import { X, ChevronsRight, ChevronsLeft, Loader2, Copy } from 'lucide-react';
|
|
16
16
|
import { javascript } from '@codemirror/lang-javascript';
|
|
17
17
|
import { python } from '@codemirror/lang-python';
|
|
18
|
-
import { sql, PLSQL } from '@codemirror/lang-sql';
|
|
18
|
+
import { sql, PLSQL, MSSQL, PostgreSQL, MySQL } from '@codemirror/lang-sql';
|
|
19
19
|
import { StreamLanguage } from '@codemirror/language';
|
|
20
20
|
import { r } from '@codemirror/legacy-modes/mode/r';
|
|
21
21
|
import { shell } from '@codemirror/legacy-modes/mode/shell';
|
|
22
|
+
import { toml } from '@codemirror/legacy-modes/mode/toml';
|
|
22
23
|
import { githubLightInit } from '@uiw/codemirror-theme-github';
|
|
23
24
|
import { sfsql } from '@keboola/codemirror-lang-sfsql';
|
|
24
25
|
import colors from '@keboola/tailwind-config/colors';
|
|
26
|
+
import { simpleMode } from '@codemirror/legacy-modes/mode/simple-mode';
|
|
25
27
|
import { defaultKeymap } from '@codemirror/commands';
|
|
26
28
|
import { installExtensions } from '@keboola/codemirror-lang-sql';
|
|
27
29
|
import { StateEffect, StateField, RangeSet, RangeSetBuilder } from '@codemirror/state';
|
|
28
30
|
|
|
29
|
-
|
|
30
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
31
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
32
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
33
|
-
var __export = (target, all) => {
|
|
34
|
-
for (var name in all)
|
|
35
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
36
|
-
};
|
|
37
|
-
var __copyProps = (to, from, except, desc) => {
|
|
38
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
39
|
-
for (let key of __getOwnPropNames(from))
|
|
40
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
41
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
42
|
-
}
|
|
43
|
-
return to;
|
|
44
|
-
};
|
|
45
|
-
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget);
|
|
31
|
+
// src/components/CodeEditor/CodeEditor.tsx
|
|
46
32
|
|
|
47
33
|
// src/constants/keyCodes.ts
|
|
48
34
|
var keyCodes = {
|
|
@@ -50,8 +36,15 @@ var keyCodes = {
|
|
|
50
36
|
ESCAPE: "Escape",
|
|
51
37
|
SPACE: " "
|
|
52
38
|
};
|
|
39
|
+
var useStableCallback = (callback) => {
|
|
40
|
+
const latestRef = useRef(callback);
|
|
41
|
+
useLayoutEffect(() => {
|
|
42
|
+
latestRef.current = callback;
|
|
43
|
+
}, [callback]);
|
|
44
|
+
return useCallback((...args) => latestRef.current(...args), []);
|
|
45
|
+
};
|
|
53
46
|
var twMerge = extendTailwindMerge({
|
|
54
|
-
prefix: "tw
|
|
47
|
+
prefix: "tw"
|
|
55
48
|
});
|
|
56
49
|
var cn = (...classes) => twMerge(clsx(...classes));
|
|
57
50
|
|
|
@@ -95,39 +88,39 @@ var useArgoDesign = () => use(ArgoDesignContext);
|
|
|
95
88
|
var tooltipVariants = cva(
|
|
96
89
|
[
|
|
97
90
|
"tailwindcss-preflight",
|
|
98
|
-
"tw
|
|
99
|
-
"tw
|
|
100
|
-
"tw
|
|
101
|
-
"tw
|
|
102
|
-
"tw
|
|
91
|
+
"tw:inline-block",
|
|
92
|
+
"tw:break-anywhere",
|
|
93
|
+
"tw:max-h-96",
|
|
94
|
+
"tw:overflow-y-auto",
|
|
95
|
+
"tw:z-[1060]",
|
|
103
96
|
// legacy (dark) chrome — default
|
|
104
|
-
"tw
|
|
105
|
-
"tw
|
|
106
|
-
"tw
|
|
97
|
+
"tw:rounded",
|
|
98
|
+
"tw:bg-neutral-800",
|
|
99
|
+
"tw:text-white",
|
|
107
100
|
// argo chrome overrides — semantic floating-panel tokens
|
|
108
|
-
"data-[argo=true]:
|
|
109
|
-
"data-[argo=true]:
|
|
110
|
-
"data-[argo=true]:
|
|
111
|
-
"data-[argo=true]:
|
|
112
|
-
"data-[argo=true]:
|
|
113
|
-
"data-[argo=true]:
|
|
114
|
-
"data-[argo=true]:
|
|
101
|
+
"tw:data-[argo=true]:rounded-2xl",
|
|
102
|
+
"tw:data-[argo=true]:border",
|
|
103
|
+
"tw:data-[argo=true]:border-solid",
|
|
104
|
+
"tw:data-[argo=true]:border-border",
|
|
105
|
+
"tw:data-[argo=true]:bg-popover",
|
|
106
|
+
"tw:data-[argo=true]:text-popover-foreground",
|
|
107
|
+
"tw:data-[argo=true]:shadow-md",
|
|
115
108
|
// argo open animation
|
|
116
|
-
"data-[argo=true]:data-[state=delayed-open]:
|
|
117
|
-
"data-[argo=true]:data-[state=instant-open]:
|
|
118
|
-
"data-[argo=true]:data-[state=delayed-open]:
|
|
119
|
-
"data-[argo=true]:data-[state=instant-open]:
|
|
120
|
-
"data-[argo=true]:data-[state=delayed-open]:
|
|
121
|
-
"data-[argo=true]:data-[state=instant-open]:
|
|
109
|
+
"tw:data-[argo=true]:data-[state=delayed-open]:animate-in",
|
|
110
|
+
"tw:data-[argo=true]:data-[state=instant-open]:animate-in",
|
|
111
|
+
"tw:data-[argo=true]:data-[state=delayed-open]:fade-in-0",
|
|
112
|
+
"tw:data-[argo=true]:data-[state=instant-open]:fade-in-0",
|
|
113
|
+
"tw:data-[argo=true]:data-[state=delayed-open]:zoom-in-95",
|
|
114
|
+
"tw:data-[argo=true]:data-[state=instant-open]:zoom-in-95",
|
|
122
115
|
// argo closed animation
|
|
123
|
-
"data-[argo=true]:data-[state=closed]:
|
|
124
|
-
"data-[argo=true]:data-[state=closed]:
|
|
125
|
-
"data-[argo=true]:data-[state=closed]:
|
|
116
|
+
"tw:data-[argo=true]:data-[state=closed]:animate-out",
|
|
117
|
+
"tw:data-[argo=true]:data-[state=closed]:fade-out-0",
|
|
118
|
+
"tw:data-[argo=true]:data-[state=closed]:zoom-out-95",
|
|
126
119
|
// argo position animation
|
|
127
|
-
"data-[argo=true]:data-[side=bottom]:
|
|
128
|
-
"data-[argo=true]:data-[side=left]:
|
|
129
|
-
"data-[argo=true]:data-[side=right]:
|
|
130
|
-
"data-[argo=true]:data-[side=top]:
|
|
120
|
+
"tw:data-[argo=true]:data-[side=bottom]:slide-in-from-top-2",
|
|
121
|
+
"tw:data-[argo=true]:data-[side=left]:slide-in-from-right-2",
|
|
122
|
+
"tw:data-[argo=true]:data-[side=right]:slide-in-from-left-2",
|
|
123
|
+
"tw:data-[argo=true]:data-[side=top]:slide-in-from-bottom-2"
|
|
131
124
|
],
|
|
132
125
|
{
|
|
133
126
|
defaultVariants: {
|
|
@@ -136,22 +129,26 @@ var tooltipVariants = cva(
|
|
|
136
129
|
variants: {
|
|
137
130
|
variant: {
|
|
138
131
|
action: [
|
|
139
|
-
"tw
|
|
140
|
-
"tw
|
|
141
|
-
"tw
|
|
142
|
-
"tw
|
|
143
|
-
"tw
|
|
144
|
-
"tw
|
|
145
|
-
|
|
146
|
-
|
|
132
|
+
"tw:max-w-fit",
|
|
133
|
+
"tw:px-3",
|
|
134
|
+
"tw:py-2",
|
|
135
|
+
"tw:text-center",
|
|
136
|
+
"tw:text-xs",
|
|
137
|
+
"tw:font-medium",
|
|
138
|
+
// Legacy chrome uppercases the action tooltip; the Keboola V2 brand
|
|
139
|
+
// (`data-brand="keboola"`) renders it in standard case instead.
|
|
140
|
+
"tw:uppercase",
|
|
141
|
+
"tw:tracking-wider",
|
|
142
|
+
"tw:[[data-brand=keboola]_&]:normal-case",
|
|
143
|
+
"tw:[[data-brand=keboola]_&]:tracking-normal"
|
|
147
144
|
],
|
|
148
145
|
explanatory: [
|
|
149
|
-
"tw
|
|
150
|
-
"tw
|
|
151
|
-
"tw
|
|
152
|
-
"tw
|
|
153
|
-
"tw
|
|
154
|
-
"tw
|
|
146
|
+
"tw:max-w-80",
|
|
147
|
+
"tw:px-4",
|
|
148
|
+
"tw:py-3",
|
|
149
|
+
"tw:text-left",
|
|
150
|
+
"tw:text-sm",
|
|
151
|
+
"tw:font-normal"
|
|
155
152
|
]
|
|
156
153
|
}
|
|
157
154
|
}
|
|
@@ -225,8 +222,8 @@ var TooltipTrigger = ({
|
|
|
225
222
|
// (merged in via Slot) activates Tailwind's preflight inside the
|
|
226
223
|
// span, which sets `svg { display: block }` — without an inline-flex
|
|
227
224
|
// container that would stack any bare Lucide icon onto its own
|
|
228
|
-
// line. `tw
|
|
229
|
-
/* @__PURE__ */ jsx("span", { className: "tw
|
|
225
|
+
// line. `tw:inline-flex tw:items-center` keeps icon + text aligned.
|
|
226
|
+
/* @__PURE__ */ jsx("span", { className: "tw:inline-flex tw:items-center", children })
|
|
230
227
|
)
|
|
231
228
|
}
|
|
232
229
|
);
|
|
@@ -293,14 +290,14 @@ Tooltip.Trigger = TooltipTrigger;
|
|
|
293
290
|
|
|
294
291
|
// src/utils/escapeStringRegexp.ts
|
|
295
292
|
var escapeStringRegexp = (string) => string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
|
|
296
|
-
var helpVariants = cva(["tw
|
|
293
|
+
var helpVariants = cva(["tw:m-0", "tw:text-xs"], {
|
|
297
294
|
defaultVariants: {
|
|
298
295
|
state: "default"
|
|
299
296
|
},
|
|
300
297
|
variants: {
|
|
301
298
|
state: {
|
|
302
|
-
default: ["tw
|
|
303
|
-
warning: ["tw
|
|
299
|
+
default: ["tw:text-muted-foreground"],
|
|
300
|
+
warning: ["tw:text-warning"]
|
|
304
301
|
}
|
|
305
302
|
}
|
|
306
303
|
});
|
|
@@ -308,146 +305,49 @@ var HelpBlock = ({ children, className, state = "default", ...rest }) => {
|
|
|
308
305
|
if (!children) return null;
|
|
309
306
|
return /* @__PURE__ */ jsx("p", { ...rest, className: helpVariants({ state, className }), children });
|
|
310
307
|
};
|
|
311
|
-
|
|
312
|
-
// src/icons/index.ts
|
|
313
|
-
var icons_exports = {};
|
|
314
|
-
__export(icons_exports, {
|
|
315
|
-
Google: () => Google,
|
|
316
|
-
Keboola: () => Keboola,
|
|
317
|
-
Microsoft: () => Microsoft
|
|
318
|
-
});
|
|
319
|
-
__reExport(icons_exports, lucide_react_star);
|
|
320
|
-
var Google = forwardRef(
|
|
321
|
-
({ size = 24, className, children, ...rest }, ref) => /* @__PURE__ */ jsxs(
|
|
322
|
-
"svg",
|
|
323
|
-
{
|
|
324
|
-
ref,
|
|
325
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
326
|
-
width: size,
|
|
327
|
-
height: size,
|
|
328
|
-
viewBox: "12 10 20 20",
|
|
329
|
-
fill: "none",
|
|
330
|
-
className: cn("lucide", className),
|
|
331
|
-
...rest,
|
|
332
|
-
children: [
|
|
333
|
-
/* @__PURE__ */ jsx(
|
|
334
|
-
"path",
|
|
335
|
-
{
|
|
336
|
-
d: "M31.6 20.2273C31.6 19.5182 31.5364 18.8364 31.4182 18.1818H22V22.05H27.3818C27.15 23.3 26.4455 24.3591 25.3864 25.0682V27.5773H28.6182C30.5091 25.8364 31.6 23.2727 31.6 20.2273Z",
|
|
337
|
-
fill: "#4285F4"
|
|
338
|
-
}
|
|
339
|
-
),
|
|
340
|
-
/* @__PURE__ */ jsx(
|
|
341
|
-
"path",
|
|
342
|
-
{
|
|
343
|
-
d: "M22 30C24.7 30 26.9636 29.1045 28.6181 27.5773L25.3863 25.0682C24.4909 25.6682 23.3454 26.0227 22 26.0227C19.3954 26.0227 17.1909 24.2636 16.4045 21.9H13.0636V24.4909C14.7091 27.7591 18.0909 30 22 30Z",
|
|
344
|
-
fill: "#34A853"
|
|
345
|
-
}
|
|
346
|
-
),
|
|
347
|
-
/* @__PURE__ */ jsx(
|
|
348
|
-
"path",
|
|
349
|
-
{
|
|
350
|
-
d: "M16.4045 21.9C16.2045 21.3 16.0909 20.6591 16.0909 20C16.0909 19.3409 16.2045 18.7 16.4045 18.1V15.5091H13.0636C12.3864 16.8591 12 18.3864 12 20C12 21.6136 12.3864 23.1409 13.0636 24.4909L16.4045 21.9Z",
|
|
351
|
-
fill: "#FBBC04"
|
|
352
|
-
}
|
|
353
|
-
),
|
|
354
|
-
/* @__PURE__ */ jsx(
|
|
355
|
-
"path",
|
|
356
|
-
{
|
|
357
|
-
d: "M22 13.9773C23.4681 13.9773 24.7863 14.4818 25.8227 15.4727L28.6909 12.6045C26.9591 10.9909 24.6954 10 22 10C18.0909 10 14.7091 12.2409 13.0636 15.5091L16.4045 18.1C17.1909 15.7364 19.3954 13.9773 22 13.9773Z",
|
|
358
|
-
fill: "#EA4335"
|
|
359
|
-
}
|
|
360
|
-
),
|
|
361
|
-
children
|
|
362
|
-
]
|
|
363
|
-
}
|
|
364
|
-
)
|
|
365
|
-
);
|
|
366
|
-
Google.displayName = "Google";
|
|
367
|
-
var Keboola = forwardRef(
|
|
368
|
-
({ size = 24, color = "currentColor", className, children, ...rest }, ref) => /* @__PURE__ */ jsxs(
|
|
369
|
-
"svg",
|
|
370
|
-
{
|
|
371
|
-
ref,
|
|
372
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
373
|
-
width: size,
|
|
374
|
-
height: size,
|
|
375
|
-
viewBox: "0 0 300 512",
|
|
376
|
-
overflow: "visible",
|
|
377
|
-
fill: color,
|
|
378
|
-
className: cn("lucide", className),
|
|
379
|
-
...rest,
|
|
380
|
-
children: [
|
|
381
|
-
/* @__PURE__ */ jsx("path", { d: "M152 320C79.7 320 24.5 233.9 24.5 124.7C24.5 15.6 70.5 0 152 0s123.6 15.6 123.6 124.7C275.5 233.9 217.7 320 152 320zm-8.7-50.5c0-11.2-9.5-20.3-21.2-20.3s-21.2 9.1-21.2 20.3c0 11.2 9.5 20.3 21.2 20.3s21.2-9.1 21.2-20.3zm55.7 0c0-11.2-9.5-20.3-21.2-20.3s-21.2 9.1-21.2 20.3c0 11.2 9.5 20.3 21.2 20.3s21.2-9.1 21.2-20.3zm68.9 115.1c10.2 9.3 20.2 20.5 29 35c5.9 9.7 2.6 22.1-7.5 27.8c-3.4 1.9-7.1 2.8-10.7 2.8c-7.2 0-14.3-3.6-18.3-10c-6.8-11.1-13.8-18.9-21.7-26.1c-7.3-6.7-15.6-12.7-24.9-19.5c-.7-.5-1.4-1-2.1-1.5c-5-3.6-10-6.8-14.9-9.4c.6 1 1.2 2.1 1.8 3.2c14.4 26.4 29.2 63.1 29.2 104.9c0 11.2-9.5 20.3-21.2 20.3c-11.7 0-21.2-9.1-21.2-20.3c.1-31.8-11.6-62.3-23.8-84.9c-4-7.4-8-13.9-11.6-19.3c-3.4 5.2-7.2 11.3-11 18.3c-12.5 22.7-24.5 53.8-24.4 86c0 11.2-9.5 20.3-21.2 20.3s-21.2-9.1-21.2-20.3c.1-41.8 14.9-78.4 29.2-104.9c.6-1.1 1.2-2.1 1.8-3.2c-5 2.7-9.9 5.8-14.9 9.4c-.6 .5-1.3 .9-1.9 1.4c-9.5 6.9-17.8 12.9-25.1 19.7c-7.9 7.2-14.9 15.1-21.7 26.1c-5.9 9.7-18.9 12.9-29 7.2C.5 441.8-2.9 429.3 3.1 419.7c8.9-14.4 18.8-25.7 29-35c9.2-8.4 18.5-15.1 27.6-21.7c1-.7 2-1.4 3-2.2c4.7-3.5 9.6-6.7 14.6-9.6c-5-2.9-9.8-6.1-14.6-9.6C39.8 325 19.9 302.5 3.1 275.1c-5.9-9.7-2.6-22.1 7.5-27.8c10.1-5.7 23.1-2.5 29 7.2c14.6 23.7 31.1 42 48.7 54.9c18.9 13.7 37.4 20.5 56.5 21.5c1.7-.1 3.5-.1 5.2-.1c1.8 0 3.5 .1 5.2 .1c0 0 0 0 0 0c19.1-1.1 37.6-7.9 56.5-21.5c17.6-12.8 34.2-31.2 48.7-54.9c6-9.7 18.9-12.9 29-7.2c10.1 5.7 13.4 18.1 7.5 27.8c-16.8 27.4-36.7 49.9-59.6 66.6c-4.7 3.5-9.6 6.7-14.5 9.6c4.9 2.9 9.8 6.1 14.5 9.6c.9 .7 1.8 1.3 2.7 2c9.2 6.7 18.5 13.5 27.9 22z" }),
|
|
382
|
-
children
|
|
383
|
-
]
|
|
384
|
-
}
|
|
385
|
-
)
|
|
386
|
-
);
|
|
387
|
-
Keboola.displayName = "Keboola";
|
|
388
|
-
var Microsoft = forwardRef(
|
|
389
|
-
({ size = 24, className, children, ...rest }, ref) => /* @__PURE__ */ jsxs(
|
|
390
|
-
"svg",
|
|
391
|
-
{
|
|
392
|
-
ref,
|
|
393
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
394
|
-
width: size,
|
|
395
|
-
height: size,
|
|
396
|
-
viewBox: "0 0 21 21",
|
|
397
|
-
fill: "none",
|
|
398
|
-
className: cn("lucide", className),
|
|
399
|
-
...rest,
|
|
400
|
-
children: [
|
|
401
|
-
/* @__PURE__ */ jsx("rect", { x: "0", y: "0", width: "10", height: "10", fill: "#F25022" }),
|
|
402
|
-
/* @__PURE__ */ jsx("rect", { x: "11", y: "0", width: "10", height: "10", fill: "#7FBA00" }),
|
|
403
|
-
/* @__PURE__ */ jsx("rect", { x: "0", y: "11", width: "10", height: "10", fill: "#00A4EF" }),
|
|
404
|
-
/* @__PURE__ */ jsx("rect", { x: "11", y: "11", width: "10", height: "10", fill: "#FFB900" }),
|
|
405
|
-
children
|
|
406
|
-
]
|
|
407
|
-
}
|
|
408
|
-
)
|
|
409
|
-
);
|
|
410
|
-
Microsoft.displayName = "Microsoft";
|
|
411
308
|
var variants = cva(
|
|
412
309
|
[
|
|
413
310
|
"tailwindcss-preflight",
|
|
414
|
-
"tw
|
|
415
|
-
"tw
|
|
311
|
+
"tw:group/button",
|
|
312
|
+
"tw:border-box",
|
|
416
313
|
// layout
|
|
417
|
-
"tw
|
|
418
|
-
"tw
|
|
419
|
-
"tw
|
|
420
|
-
"tw
|
|
421
|
-
"tw
|
|
314
|
+
"tw:relative",
|
|
315
|
+
"tw:flex",
|
|
316
|
+
"tw:items-center",
|
|
317
|
+
"tw:justify-center",
|
|
318
|
+
"tw:gap-2",
|
|
422
319
|
// text — chrome weight/tracking are brand-overridable tokens
|
|
423
|
-
// (`--font-weight-medium` / `--letter-spacing-chrome`)
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
"tw-
|
|
428
|
-
"tw-
|
|
320
|
+
// (`--font-weight-medium` / `--letter-spacing-chrome`). Casing: standard case is
|
|
321
|
+
// the default; only legacy brands (`keboola-legacy-*`) uppercase the chrome, so
|
|
322
|
+
// modern brands (incl. Keboola V2) read naturally. Mirrors the V2 standard-case
|
|
323
|
+
// treatment shipped for Tooltip/Badge (PR 7629).
|
|
324
|
+
"tw:text-xs",
|
|
325
|
+
"tw:leading-5",
|
|
326
|
+
"tw:font-medium",
|
|
327
|
+
"tw:[[data-brand^=keboola-legacy]_&]:tracking-chrome",
|
|
328
|
+
"tw:[[data-brand^=keboola-legacy]_&]:uppercase",
|
|
429
329
|
// border — legacy (non-argo) chrome uses a fixed radius, not the brand token.
|
|
430
|
-
"tw
|
|
431
|
-
"tw
|
|
432
|
-
"tw
|
|
330
|
+
"tw:rounded",
|
|
331
|
+
"tw:border",
|
|
332
|
+
"tw:border-transparent",
|
|
433
333
|
// styling
|
|
434
|
-
"tw
|
|
435
|
-
"[a]:
|
|
334
|
+
"tw:shadow-none",
|
|
335
|
+
"tw:[a]:cursor-pointer",
|
|
436
336
|
// explicitly set for anchor
|
|
437
|
-
"focus-visible:
|
|
438
|
-
"focus-visible:
|
|
439
|
-
"focus-visible:-
|
|
440
|
-
"focus-visible:
|
|
441
|
-
"focus-visible:
|
|
442
|
-
"focus-visible:
|
|
337
|
+
"tw:focus-visible:outline",
|
|
338
|
+
"tw:focus-visible:outline-1",
|
|
339
|
+
"tw:focus-visible:-outline-offset-1",
|
|
340
|
+
"tw:focus-visible:outline-ring",
|
|
341
|
+
"tw:focus-visible:ring-4",
|
|
342
|
+
"tw:focus-visible:ring-ring/30",
|
|
443
343
|
// disabled
|
|
444
|
-
"disabled:
|
|
445
|
-
"disabled:
|
|
344
|
+
"tw:disabled:opacity-40",
|
|
345
|
+
"tw:disabled:cursor-not-allowed",
|
|
446
346
|
// anchor support
|
|
447
|
-
"
|
|
448
|
-
"aria-disabled:
|
|
449
|
-
"aria-disabled:
|
|
450
|
-
"[&_svg]:
|
|
347
|
+
"tw:!no-underline",
|
|
348
|
+
"tw:aria-disabled:opacity-40",
|
|
349
|
+
"tw:aria-disabled:cursor-not-allowed",
|
|
350
|
+
"tw:[&_svg]:shrink-0"
|
|
451
351
|
],
|
|
452
352
|
{
|
|
453
353
|
defaultVariants: {
|
|
@@ -457,113 +357,113 @@ var variants = cva(
|
|
|
457
357
|
},
|
|
458
358
|
variants: {
|
|
459
359
|
block: {
|
|
460
|
-
true: ["tw
|
|
360
|
+
true: ["tw:w-full"]
|
|
461
361
|
},
|
|
462
362
|
variant: {
|
|
463
363
|
primary: [
|
|
464
|
-
"tw
|
|
465
|
-
"tw
|
|
466
|
-
"focus:
|
|
467
|
-
"hover:
|
|
468
|
-
"hover:not-disabled:
|
|
469
|
-
"active:not-disabled:
|
|
364
|
+
"tw:text-white",
|
|
365
|
+
"tw:bg-primary-500",
|
|
366
|
+
"tw:focus:text-white",
|
|
367
|
+
"tw:hover:text-white",
|
|
368
|
+
"tw:hover:not-disabled:bg-primary-600",
|
|
369
|
+
"tw:active:not-disabled:bg-primary-800",
|
|
470
370
|
// anchor disabled override
|
|
471
|
-
"aria-disabled:!
|
|
371
|
+
"tw:aria-disabled:!bg-primary-500"
|
|
472
372
|
],
|
|
473
373
|
secondary: [
|
|
474
|
-
"tw
|
|
475
|
-
"tw
|
|
476
|
-
"focus:
|
|
477
|
-
"hover:
|
|
478
|
-
"hover:not-disabled:
|
|
479
|
-
"active:not-disabled:
|
|
374
|
+
"tw:text-white",
|
|
375
|
+
"tw:bg-secondary-500",
|
|
376
|
+
"tw:focus:text-white",
|
|
377
|
+
"tw:hover:text-white",
|
|
378
|
+
"tw:hover:not-disabled:bg-secondary-700",
|
|
379
|
+
"tw:active:not-disabled:bg-secondary-800",
|
|
480
380
|
// anchor disabled override
|
|
481
|
-
"aria-disabled:!
|
|
381
|
+
"tw:aria-disabled:!bg-secondary-500"
|
|
482
382
|
],
|
|
483
383
|
danger: [
|
|
484
|
-
"tw
|
|
485
|
-
"tw
|
|
486
|
-
"focus:
|
|
487
|
-
"hover:
|
|
488
|
-
"hover:not-disabled:
|
|
489
|
-
"active:not-disabled:
|
|
384
|
+
"tw:text-white",
|
|
385
|
+
"tw:bg-error-500",
|
|
386
|
+
"tw:focus:text-white",
|
|
387
|
+
"tw:hover:text-white",
|
|
388
|
+
"tw:hover:not-disabled:bg-error-600",
|
|
389
|
+
"tw:active:not-disabled:bg-error-700",
|
|
490
390
|
// anchor disabled override
|
|
491
|
-
"aria-disabled:!
|
|
391
|
+
"tw:aria-disabled:!bg-error-500"
|
|
492
392
|
],
|
|
493
393
|
invisible: [
|
|
494
|
-
"tw
|
|
495
|
-
"tw
|
|
496
|
-
"focus:
|
|
497
|
-
"hover:not-disabled:
|
|
498
|
-
"hover:
|
|
499
|
-
"active:not-disabled:
|
|
394
|
+
"tw:text-neutral-800",
|
|
395
|
+
"tw:bg-transparent",
|
|
396
|
+
"tw:focus:text-neutral-800",
|
|
397
|
+
"tw:hover:not-disabled:bg-neutral-100",
|
|
398
|
+
"tw:hover:text-neutral-800",
|
|
399
|
+
"tw:active:not-disabled:bg-neutral-150",
|
|
500
400
|
// contrasting icon on hover/active
|
|
501
|
-
"[&_svg]:
|
|
502
|
-
"
|
|
503
|
-
"
|
|
401
|
+
"tw:[&_svg]:text-neutral-400",
|
|
402
|
+
"tw:hover:not-disabled:[&_svg]:text-secondary-600",
|
|
403
|
+
"tw:active:not-disabled:[&_svg]:text-secondary-600",
|
|
504
404
|
// anchor disabled override
|
|
505
|
-
"aria-disabled:!
|
|
405
|
+
"tw:aria-disabled:!bg-transparent"
|
|
506
406
|
],
|
|
507
407
|
outline: [
|
|
508
|
-
"tw
|
|
509
|
-
"tw
|
|
408
|
+
"tw:text-neutral-800",
|
|
409
|
+
"tw:bg-white",
|
|
510
410
|
// border
|
|
511
|
-
"
|
|
512
|
-
"hover:
|
|
513
|
-
"focus:
|
|
514
|
-
"hover:not-disabled:!
|
|
515
|
-
"hover:not-disabled:
|
|
516
|
-
"active:not-disabled:
|
|
411
|
+
"tw:!border-neutral-200",
|
|
412
|
+
"tw:hover:text-neutral-800",
|
|
413
|
+
"tw:focus:text-neutral-800",
|
|
414
|
+
"tw:hover:not-disabled:!border-neutral-300",
|
|
415
|
+
"tw:hover:not-disabled:bg-neutral-100",
|
|
416
|
+
"tw:active:not-disabled:bg-neutral-200",
|
|
517
417
|
// contrasting icon hover, same as invisible
|
|
518
|
-
"[&_svg]:
|
|
519
|
-
"
|
|
520
|
-
"
|
|
418
|
+
"tw:[&_svg]:text-neutral-400",
|
|
419
|
+
"tw:not-disabled:hover:[&_svg]:text-secondary-600",
|
|
420
|
+
"tw:active:not-disabled:[&_svg]:text-secondary-600",
|
|
521
421
|
// anchor disabled override
|
|
522
|
-
"aria-disabled:!
|
|
523
|
-
"aria-disabled:!
|
|
422
|
+
"tw:aria-disabled:!bg-white",
|
|
423
|
+
"tw:aria-disabled:!border-neutral-200"
|
|
524
424
|
],
|
|
525
425
|
inline: [
|
|
526
|
-
"tw
|
|
527
|
-
"tw
|
|
528
|
-
"tw
|
|
529
|
-
"[&_svg]:
|
|
530
|
-
"
|
|
531
|
-
"
|
|
426
|
+
"tw:text-neutral-800",
|
|
427
|
+
"tw:bg-transparent",
|
|
428
|
+
"tw:rounded-full",
|
|
429
|
+
"tw:[&_svg]:text-neutral-400",
|
|
430
|
+
"tw:not-disabled:hover:[&_svg]:text-secondary-600",
|
|
431
|
+
"tw:not-disabled:focus:[&_svg]:text-secondary-600"
|
|
532
432
|
]
|
|
533
433
|
},
|
|
534
434
|
size: {
|
|
535
435
|
medium: [
|
|
536
|
-
"tw
|
|
537
|
-
"tw
|
|
538
|
-
"tw
|
|
539
|
-
"tw
|
|
540
|
-
'[&_svg:not([class*="tw
|
|
436
|
+
"tw:max-h-10",
|
|
437
|
+
"tw:min-h-10",
|
|
438
|
+
"tw:px-4",
|
|
439
|
+
"tw:py-2.5",
|
|
440
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-4'
|
|
541
441
|
],
|
|
542
442
|
small: [
|
|
543
|
-
"tw
|
|
544
|
-
"tw
|
|
545
|
-
"tw
|
|
546
|
-
"tw
|
|
547
|
-
'[&_svg:not([class*="tw
|
|
443
|
+
"tw:max-h-8",
|
|
444
|
+
"tw:min-h-8",
|
|
445
|
+
"tw:px-4",
|
|
446
|
+
"tw:py-1.5",
|
|
447
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-4'
|
|
548
448
|
],
|
|
549
449
|
large: [
|
|
550
|
-
"tw
|
|
551
|
-
"tw
|
|
552
|
-
"tw
|
|
553
|
-
"tw
|
|
554
|
-
'[&_svg:not([class*="tw
|
|
450
|
+
"tw:max-h-12",
|
|
451
|
+
"tw:min-h-12",
|
|
452
|
+
"tw:px-4",
|
|
453
|
+
"tw:py-3.5",
|
|
454
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-4'
|
|
555
455
|
],
|
|
556
|
-
"icon-lg": ["tw
|
|
557
|
-
icon: ["tw
|
|
558
|
-
"icon-sm": ["tw
|
|
559
|
-
"icon-xs": ["tw
|
|
456
|
+
"icon-lg": ["tw:size-12", "tw:p-0", 'tw:[&_svg:not([class*="tw:size-"])]:size-6'],
|
|
457
|
+
icon: ["tw:size-10", "tw:p-0", 'tw:[&_svg:not([class*="tw:size-"])]:size-4'],
|
|
458
|
+
"icon-sm": ["tw:size-8", "tw:p-0", 'tw:[&_svg:not([class*="tw:size-"])]:size-4'],
|
|
459
|
+
"icon-xs": ["tw:size-6", "tw:p-0", 'tw:[&_svg:not([class*="tw:size-"])]:size-4'],
|
|
560
460
|
"icon-2xs": [
|
|
561
|
-
"
|
|
562
|
-
"tw
|
|
563
|
-
"tw
|
|
564
|
-
'[&_svg:not([class*="tw
|
|
461
|
+
"tw:!inline-flex",
|
|
462
|
+
"tw:size-5",
|
|
463
|
+
"tw:max-h-5",
|
|
464
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-3'
|
|
565
465
|
],
|
|
566
|
-
"icon-3xs": ["tw
|
|
466
|
+
"icon-3xs": ["tw:h-fit", "tw:w-fit", 'tw:[&_svg:not([class*="tw:size-"])]:size-4']
|
|
567
467
|
}
|
|
568
468
|
}
|
|
569
469
|
}
|
|
@@ -572,37 +472,37 @@ var argoVariants = cva(
|
|
|
572
472
|
[
|
|
573
473
|
"tailwindcss-preflight",
|
|
574
474
|
// layout
|
|
575
|
-
"tw
|
|
576
|
-
"tw
|
|
577
|
-
"tw
|
|
578
|
-
"tw
|
|
579
|
-
"tw
|
|
580
|
-
"tw
|
|
475
|
+
"tw:relative",
|
|
476
|
+
"tw:inline-flex",
|
|
477
|
+
"tw:items-center",
|
|
478
|
+
"tw:justify-center",
|
|
479
|
+
"tw:whitespace-nowrap",
|
|
480
|
+
"tw:gap-2",
|
|
581
481
|
// border
|
|
582
|
-
"tw
|
|
583
|
-
"tw
|
|
584
|
-
"tw
|
|
482
|
+
"tw:border",
|
|
483
|
+
"tw:border-transparent",
|
|
484
|
+
"tw:rounded-[var(--radius-lg,0.25rem)]",
|
|
585
485
|
// text
|
|
586
|
-
"tw
|
|
587
|
-
"tw
|
|
486
|
+
"tw:font-medium",
|
|
487
|
+
"tw:select-none",
|
|
588
488
|
// focus visible
|
|
589
|
-
"
|
|
590
|
-
"focus-visible:
|
|
489
|
+
"tw:!outline-hidden",
|
|
490
|
+
"tw:focus-visible:ring-2",
|
|
591
491
|
// disabled
|
|
592
|
-
"disabled:
|
|
593
|
-
"disabled:
|
|
594
|
-
"active:
|
|
595
|
-
"tw
|
|
596
|
-
"tw
|
|
492
|
+
"tw:disabled:cursor-not-allowed",
|
|
493
|
+
"tw:disabled:opacity-50",
|
|
494
|
+
"tw:active:opacity-60",
|
|
495
|
+
"tw:transition-all",
|
|
496
|
+
"tw:bg-clip-padding",
|
|
597
497
|
// anchor support
|
|
598
|
-
"
|
|
599
|
-
"aria-disabled:
|
|
600
|
-
"aria-disabled:
|
|
498
|
+
"tw:!no-underline",
|
|
499
|
+
"tw:aria-disabled:cursor-not-allowed",
|
|
500
|
+
"tw:aria-disabled:opacity-50",
|
|
601
501
|
// icon
|
|
602
|
-
"tw
|
|
603
|
-
"[&_svg]:
|
|
604
|
-
"[&_svg]:
|
|
605
|
-
"[&_svg:not([class*='tw
|
|
502
|
+
"tw:shrink-0",
|
|
503
|
+
"tw:[&_svg]:pointer-events-none",
|
|
504
|
+
"tw:[&_svg]:shrink-0",
|
|
505
|
+
"tw:[&_svg:not([class*='tw:size-'])]:size-4"
|
|
606
506
|
],
|
|
607
507
|
{
|
|
608
508
|
defaultVariants: {
|
|
@@ -611,77 +511,77 @@ var argoVariants = cva(
|
|
|
611
511
|
},
|
|
612
512
|
variants: {
|
|
613
513
|
block: {
|
|
614
|
-
true: ["tw
|
|
514
|
+
true: ["tw:w-full"]
|
|
615
515
|
},
|
|
616
516
|
variant: {
|
|
617
517
|
primary: [
|
|
618
|
-
"tw
|
|
619
|
-
"tw
|
|
620
|
-
"[a]:hover:
|
|
621
|
-
"hover:not-disabled:
|
|
622
|
-
"hover:
|
|
623
|
-
"focus:
|
|
624
|
-
"focus-visible:
|
|
625
|
-
"focus-visible:
|
|
518
|
+
"tw:bg-primary",
|
|
519
|
+
"tw:text-primary-foreground",
|
|
520
|
+
"tw:[a]:hover:bg-primary/80",
|
|
521
|
+
"tw:hover:not-disabled:bg-primary/90",
|
|
522
|
+
"tw:hover:text-primary-foreground",
|
|
523
|
+
"tw:focus:text-primary-foreground",
|
|
524
|
+
"tw:focus-visible:border-primary",
|
|
525
|
+
"tw:focus-visible:ring-ring/50"
|
|
626
526
|
],
|
|
627
527
|
secondary: [
|
|
628
|
-
"tw
|
|
629
|
-
"tw
|
|
630
|
-
"hover:not-disabled:
|
|
631
|
-
"focus-visible:
|
|
632
|
-
"focus-visible:
|
|
528
|
+
"tw:bg-primary/10",
|
|
529
|
+
"tw:text-primary",
|
|
530
|
+
"tw:hover:not-disabled:bg-primary/20",
|
|
531
|
+
"tw:focus-visible:border-primary",
|
|
532
|
+
"tw:focus-visible:ring-ring/50"
|
|
633
533
|
],
|
|
634
534
|
// should be called "destructive" by Figma
|
|
635
535
|
danger: [
|
|
636
|
-
"tw
|
|
637
|
-
"tw
|
|
638
|
-
"hover:
|
|
639
|
-
"focus:
|
|
640
|
-
"focus-visible:
|
|
641
|
-
"focus-visible:
|
|
536
|
+
"tw:bg-destructive",
|
|
537
|
+
"tw:text-destructive-foreground",
|
|
538
|
+
"tw:hover:text-destructive-foreground",
|
|
539
|
+
"tw:focus:text-destructive-foreground",
|
|
540
|
+
"tw:focus-visible:border-destructive",
|
|
541
|
+
"tw:focus-visible:ring-destructive/20"
|
|
642
542
|
],
|
|
643
543
|
outline: [
|
|
644
|
-
"
|
|
645
|
-
"tw
|
|
544
|
+
"tw:!border-input",
|
|
545
|
+
"tw:bg-background",
|
|
646
546
|
// Semantic base text color so the label/icon flips in dark mode
|
|
647
547
|
// (matches `invisible`); previously unset → inherited a fixed dark color.
|
|
648
|
-
"tw
|
|
548
|
+
"tw:text-foreground",
|
|
649
549
|
// Hover follows the brand primary (translucent tint), matching the
|
|
650
550
|
// `secondary` variant — not the fixed `accent` blue.
|
|
651
|
-
"hover:not-disabled:
|
|
652
|
-
"hover:not-disabled:
|
|
653
|
-
"hover:active:
|
|
654
|
-
"focus-visible:!
|
|
655
|
-
"focus-visible:
|
|
551
|
+
"tw:hover:not-disabled:bg-primary/10",
|
|
552
|
+
"tw:hover:not-disabled:text-primary",
|
|
553
|
+
"tw:hover:active:bg-background",
|
|
554
|
+
"tw:focus-visible:!border-primary",
|
|
555
|
+
"tw:focus-visible:ring-ring/50"
|
|
656
556
|
],
|
|
657
557
|
// should be called "ghost" by Figma
|
|
658
558
|
invisible: [
|
|
659
|
-
"tw
|
|
660
|
-
"tw
|
|
661
|
-
"hover:not-disabled:
|
|
662
|
-
"hover:not-disabled:
|
|
663
|
-
"hover:not-disabled:
|
|
664
|
-
"focus-visible:
|
|
559
|
+
"tw:bg-transparent",
|
|
560
|
+
"tw:text-foreground",
|
|
561
|
+
"tw:hover:not-disabled:bg-primary/10",
|
|
562
|
+
"tw:hover:not-disabled:text-primary",
|
|
563
|
+
"tw:hover:not-disabled:border-primary/10",
|
|
564
|
+
"tw:focus-visible:ring-ring/50"
|
|
665
565
|
],
|
|
666
566
|
// should be called "link" by Figma
|
|
667
567
|
inline: [
|
|
668
|
-
"tw
|
|
669
|
-
"tw
|
|
670
|
-
"hover:
|
|
671
|
-
"hover:active:
|
|
672
|
-
"focus-visible:
|
|
568
|
+
"tw:bg-transparent",
|
|
569
|
+
"tw:text-primary",
|
|
570
|
+
"tw:hover:underline",
|
|
571
|
+
"tw:hover:active:bg-transparent",
|
|
572
|
+
"tw:focus-visible:ring-ring/50"
|
|
673
573
|
]
|
|
674
574
|
},
|
|
675
575
|
size: {
|
|
676
576
|
// should be called "default" by Figma
|
|
677
|
-
medium: ["tw
|
|
577
|
+
medium: ["tw:max-h-9", "tw:py-2", "tw:px-4", "tw:text-sm"],
|
|
678
578
|
// should be called "small" by Figma
|
|
679
|
-
small: ["tw
|
|
579
|
+
small: ["tw:max-h-8", "tw:py-2", "tw:px-3", "tw:text-xs"],
|
|
680
580
|
// should be called "large" by Figma
|
|
681
|
-
large: ["tw
|
|
682
|
-
"icon-lg": ["tw
|
|
683
|
-
icon: ["tw
|
|
684
|
-
"icon-sm": ["tw
|
|
581
|
+
large: ["tw:max-h-10", "tw:py-2.5", "tw:px-6", "tw:text-sm"],
|
|
582
|
+
"icon-lg": ["tw:size-10"],
|
|
583
|
+
icon: ["tw:size-9"],
|
|
584
|
+
"icon-sm": ["tw:size-8"],
|
|
685
585
|
// unsupported in ARGO, remove when old design is gone
|
|
686
586
|
"icon-xs": [],
|
|
687
587
|
"icon-2xs": [],
|
|
@@ -729,13 +629,13 @@ var Button = ({
|
|
|
729
629
|
onClick: handleClick,
|
|
730
630
|
className: cn(classNames),
|
|
731
631
|
children: [
|
|
732
|
-
isLoading && /* @__PURE__ */ jsx(
|
|
632
|
+
isLoading && /* @__PURE__ */ jsx(Loader2, { className: "tw:size-4 tw:shrink-0 tw:animate-spin" }),
|
|
733
633
|
/* @__PURE__ */ jsx(Slottable, { children: isLoading && isIconOnly ? null : children })
|
|
734
634
|
]
|
|
735
635
|
}
|
|
736
636
|
);
|
|
737
637
|
};
|
|
738
|
-
var
|
|
638
|
+
var Clipboard2 = ({
|
|
739
639
|
ref,
|
|
740
640
|
text: textProp,
|
|
741
641
|
children,
|
|
@@ -760,6 +660,7 @@ var Clipboard = ({
|
|
|
760
660
|
}
|
|
761
661
|
};
|
|
762
662
|
const handleOnClick = (event) => {
|
|
663
|
+
setIsTooltipOpen(true);
|
|
763
664
|
if (text && state === "ready") void copy(text);
|
|
764
665
|
onClick?.(event);
|
|
765
666
|
};
|
|
@@ -774,6 +675,7 @@ var Clipboard = ({
|
|
|
774
675
|
return tooltip;
|
|
775
676
|
})();
|
|
776
677
|
const tooltipVariant = state === "ready" && !!text ? tooltipVariantProp : "action";
|
|
678
|
+
const hasTooltipContent = tooltipContent !== null && tooltipContent !== void 0;
|
|
777
679
|
return /* @__PURE__ */ jsxs(Tooltip.Root, { open: isTooltipOpen, onOpenChange: handleOnOpenChange, children: [
|
|
778
680
|
/* @__PURE__ */ jsx(
|
|
779
681
|
Tooltip.Trigger,
|
|
@@ -782,12 +684,12 @@ var Clipboard = ({
|
|
|
782
684
|
asChild,
|
|
783
685
|
keepOpenOnClick: true,
|
|
784
686
|
onClick: handleOnClick,
|
|
785
|
-
className: cn("tw
|
|
687
|
+
className: cn("tw:cursor-pointer", className),
|
|
786
688
|
ref,
|
|
787
689
|
children: children ?? text
|
|
788
690
|
}
|
|
789
691
|
),
|
|
790
|
-
/* @__PURE__ */ jsx(
|
|
692
|
+
hasTooltipContent && /* @__PURE__ */ jsx(
|
|
791
693
|
Tooltip.Content,
|
|
792
694
|
{
|
|
793
695
|
keepOpenOnPointerDownOutside: true,
|
|
@@ -798,7 +700,7 @@ var Clipboard = ({
|
|
|
798
700
|
)
|
|
799
701
|
] });
|
|
800
702
|
};
|
|
801
|
-
var DEFAULT_ICON = /* @__PURE__ */ jsx(
|
|
703
|
+
var DEFAULT_ICON = /* @__PURE__ */ jsx(Copy, {});
|
|
802
704
|
var DEFAULT_ARIA_LABEL = "Copy";
|
|
803
705
|
var ClipboardButton = ({
|
|
804
706
|
// clipboard props
|
|
@@ -815,7 +717,7 @@ var ClipboardButton = ({
|
|
|
815
717
|
const defaultAriaLabel = typeof tooltip === "string" && tooltip.trim() ? tooltip : DEFAULT_ARIA_LABEL;
|
|
816
718
|
const ariaLabel = rest["aria-label"] ?? (children == null ? defaultAriaLabel : void 0);
|
|
817
719
|
return /* @__PURE__ */ jsx(
|
|
818
|
-
|
|
720
|
+
Clipboard2,
|
|
819
721
|
{
|
|
820
722
|
asChild: true,
|
|
821
723
|
tooltip,
|
|
@@ -831,13 +733,198 @@ var ClipboardButton = ({
|
|
|
831
733
|
};
|
|
832
734
|
var ButtonToolbar = ({ value, children }) => {
|
|
833
735
|
if (!value && !children) return null;
|
|
834
|
-
return /* @__PURE__ */ jsxs("div", { className: "tw
|
|
736
|
+
return /* @__PURE__ */ jsxs("div", { className: "tw:pointer-events-auto tw:ml-auto tw:mr-4 tw:flex tw:w-fit tw:gap-1 tw:overflow-visible tw:rounded-lg tw:border tw:border-solid tw:border-border tw:!bg-background tw:p-[3px] tw:shadow", children: [
|
|
835
737
|
!!value && /* @__PURE__ */ jsx(ClipboardButton, { size: "icon-sm", variant: "invisible", text: value }),
|
|
836
738
|
children
|
|
837
739
|
] });
|
|
838
740
|
};
|
|
741
|
+
var COMMANDS = [
|
|
742
|
+
"run-operation",
|
|
743
|
+
"source freshness",
|
|
744
|
+
"docs generate",
|
|
745
|
+
"run",
|
|
746
|
+
"test",
|
|
747
|
+
"seed",
|
|
748
|
+
"snapshot",
|
|
749
|
+
"list",
|
|
750
|
+
"ls",
|
|
751
|
+
"compile",
|
|
752
|
+
"build",
|
|
753
|
+
"deps"
|
|
754
|
+
];
|
|
755
|
+
var ARGUMENTS = ["--select", "--exclude", "--selector", "--defer", "--resource-type", "-s"];
|
|
756
|
+
var METHODS = [
|
|
757
|
+
"path:",
|
|
758
|
+
"source:",
|
|
759
|
+
"tag:",
|
|
760
|
+
"package:",
|
|
761
|
+
"config:",
|
|
762
|
+
"test_type:",
|
|
763
|
+
"test_name:",
|
|
764
|
+
"state:",
|
|
765
|
+
"exposure:",
|
|
766
|
+
"metric:",
|
|
767
|
+
"result:",
|
|
768
|
+
"source_status:",
|
|
769
|
+
"column_name:"
|
|
770
|
+
];
|
|
771
|
+
var FLAGS = [
|
|
772
|
+
"--fail-fast",
|
|
773
|
+
"--warn-error",
|
|
774
|
+
"--favor-state",
|
|
775
|
+
"--vars",
|
|
776
|
+
"--models",
|
|
777
|
+
"--threads",
|
|
778
|
+
"--profiles-dir",
|
|
779
|
+
"--profile",
|
|
780
|
+
"--full-refresh"
|
|
781
|
+
];
|
|
782
|
+
var word = (list) => new RegExp(`^\\s+(?:${list.join("|")})\\b`, "i");
|
|
783
|
+
var prefix = (list) => new RegExp(`^\\s+(?:${list.join("|")})`, "i");
|
|
784
|
+
var dbt = simpleMode({
|
|
785
|
+
start: [
|
|
786
|
+
{ regex: /"(?:[^\\]|\\.)*?(?:"|$)/, token: "string" },
|
|
787
|
+
{ regex: /dbt/, token: "keyword", sol: true },
|
|
788
|
+
{ regex: word(COMMANDS), token: "keyword" },
|
|
789
|
+
{ regex: word(ARGUMENTS), token: "variableName" },
|
|
790
|
+
{ regex: prefix(METHODS), token: "propertyName" },
|
|
791
|
+
{ regex: prefix(FLAGS), token: "attributeName" },
|
|
792
|
+
{ regex: /(?:@|\*|,|\+\d+|\d+\+|\+)/, token: "operator" },
|
|
793
|
+
{ regex: /'.*'/, token: "string" },
|
|
794
|
+
{ regex: /true|false/, token: "atom" }
|
|
795
|
+
]
|
|
796
|
+
});
|
|
797
|
+
|
|
798
|
+
// src/components/CodeEditor/modes/jsonnet.ts
|
|
799
|
+
var COMMENT_END = /^\*\//;
|
|
800
|
+
var COMMENT_START = /^\/\/|^#/;
|
|
801
|
+
var C_COMMENT_START = /^\/\*/;
|
|
802
|
+
var TEXT_BLOCK = /^\|\|\|/;
|
|
803
|
+
var TEXT_BLOCK_END = /^\s*\|\|\|/;
|
|
804
|
+
var RAW_DOUBLE = /^""/;
|
|
805
|
+
var RAW_SINGLE = /^''/;
|
|
806
|
+
var CLOSE_DOUBLE = /^"/;
|
|
807
|
+
var CLOSE_SINGLE = /^'/;
|
|
808
|
+
var ESCAPE = /^\\[\\"'/bfnrt0]/;
|
|
809
|
+
var UNICODE_ESCAPE = /^\\u[0-9a-fA-F]{4}/;
|
|
810
|
+
var BACKSLASH = /^\\/;
|
|
811
|
+
var IMPORT = /^import(?:str)?\s*(@?)(["'])/;
|
|
812
|
+
var QUOTE = /^(@?)(["'])/;
|
|
813
|
+
var ROOT = /^\$/;
|
|
814
|
+
var NUMBER = /^(?:\.\d+|\d+\.?\d*)(?:e[-+]?\d+)?/i;
|
|
815
|
+
var OPERATOR = /^[-+/*=<>!&~^|$%]+/;
|
|
816
|
+
var IDENTIFIER = /^[a-zA-Z_][a-zA-Z0-9_]*/;
|
|
817
|
+
var KEYWORDS = {
|
|
818
|
+
local: "keyword",
|
|
819
|
+
self: "keyword",
|
|
820
|
+
super: "keyword",
|
|
821
|
+
assert: "keyword",
|
|
822
|
+
function: "keyword",
|
|
823
|
+
if: "keyword",
|
|
824
|
+
then: "keyword",
|
|
825
|
+
else: "keyword",
|
|
826
|
+
for: "keyword",
|
|
827
|
+
in: "keyword",
|
|
828
|
+
tailstrict: "keyword",
|
|
829
|
+
error: "keyword",
|
|
830
|
+
true: "atom",
|
|
831
|
+
false: "atom",
|
|
832
|
+
null: "atom"
|
|
833
|
+
};
|
|
834
|
+
var jsonnet = {
|
|
835
|
+
name: "jsonnet",
|
|
836
|
+
startState: () => ({
|
|
837
|
+
cComment: false,
|
|
838
|
+
textBlock: false,
|
|
839
|
+
textBlockIndent: null,
|
|
840
|
+
string: false,
|
|
841
|
+
importString: false,
|
|
842
|
+
stringSingle: false,
|
|
843
|
+
stringRaw: false
|
|
844
|
+
}),
|
|
845
|
+
token: (stream, state) => {
|
|
846
|
+
if (state.cComment) {
|
|
847
|
+
if (stream.match(COMMENT_END)) {
|
|
848
|
+
state.cComment = false;
|
|
849
|
+
return "comment";
|
|
850
|
+
}
|
|
851
|
+
stream.next();
|
|
852
|
+
return "comment";
|
|
853
|
+
}
|
|
854
|
+
if (state.textBlock) {
|
|
855
|
+
if (state.textBlockIndent == null) {
|
|
856
|
+
if (stream.match(TEXT_BLOCK_END)) {
|
|
857
|
+
state.textBlock = false;
|
|
858
|
+
return "string";
|
|
859
|
+
}
|
|
860
|
+
state.textBlockIndent = stream.indentation();
|
|
861
|
+
}
|
|
862
|
+
if (stream.indentation() >= state.textBlockIndent) {
|
|
863
|
+
stream.skipToEnd();
|
|
864
|
+
return "string";
|
|
865
|
+
}
|
|
866
|
+
if (stream.match(TEXT_BLOCK_END)) {
|
|
867
|
+
state.textBlock = false;
|
|
868
|
+
return "string";
|
|
869
|
+
}
|
|
870
|
+
stream.next();
|
|
871
|
+
return "invalid";
|
|
872
|
+
}
|
|
873
|
+
if (state.string || state.importString) {
|
|
874
|
+
const style = state.string ? "string" : "meta";
|
|
875
|
+
if (state.stringRaw) {
|
|
876
|
+
if (stream.match(state.stringSingle ? RAW_SINGLE : RAW_DOUBLE)) return "escape";
|
|
877
|
+
} else {
|
|
878
|
+
if (stream.match(ESCAPE)) return "escape";
|
|
879
|
+
if (stream.match(UNICODE_ESCAPE)) return "escape";
|
|
880
|
+
if (stream.match(BACKSLASH)) return "invalid";
|
|
881
|
+
}
|
|
882
|
+
if (stream.match(state.stringSingle ? CLOSE_SINGLE : CLOSE_DOUBLE)) {
|
|
883
|
+
state.string = false;
|
|
884
|
+
state.importString = false;
|
|
885
|
+
return style;
|
|
886
|
+
}
|
|
887
|
+
stream.next();
|
|
888
|
+
return style;
|
|
889
|
+
}
|
|
890
|
+
if (stream.match(COMMENT_START)) {
|
|
891
|
+
stream.skipToEnd();
|
|
892
|
+
return "comment";
|
|
893
|
+
}
|
|
894
|
+
if (stream.match(C_COMMENT_START)) {
|
|
895
|
+
state.cComment = true;
|
|
896
|
+
return "comment";
|
|
897
|
+
}
|
|
898
|
+
const imported = stream.match(IMPORT);
|
|
899
|
+
if (Array.isArray(imported)) {
|
|
900
|
+
state.importString = true;
|
|
901
|
+
state.stringRaw = imported[1] === "@";
|
|
902
|
+
state.stringSingle = imported[2] === "'";
|
|
903
|
+
return "meta";
|
|
904
|
+
}
|
|
905
|
+
const quoted = stream.match(QUOTE);
|
|
906
|
+
if (Array.isArray(quoted)) {
|
|
907
|
+
state.string = true;
|
|
908
|
+
state.stringRaw = quoted[1] === "@";
|
|
909
|
+
state.stringSingle = quoted[2] === "'";
|
|
910
|
+
return "string";
|
|
911
|
+
}
|
|
912
|
+
if (stream.match(TEXT_BLOCK)) {
|
|
913
|
+
state.textBlock = true;
|
|
914
|
+
state.textBlockIndent = null;
|
|
915
|
+
return "string";
|
|
916
|
+
}
|
|
917
|
+
if (stream.match(ROOT)) return "keyword";
|
|
918
|
+
if (stream.match(NUMBER)) return "number";
|
|
919
|
+
if (stream.match(OPERATOR)) return "operator";
|
|
920
|
+
const identifier = stream.match(IDENTIFIER);
|
|
921
|
+
if (Array.isArray(identifier)) return KEYWORDS[identifier[0]] ?? null;
|
|
922
|
+
stream.next();
|
|
923
|
+
return null;
|
|
924
|
+
}
|
|
925
|
+
};
|
|
839
926
|
var resolveToken = (token, fallbackChannels, alpha) => {
|
|
840
|
-
const channels = typeof document === "undefined" ? fallbackChannels : getComputedStyle(document.documentElement).getPropertyValue(
|
|
927
|
+
const channels = typeof document === "undefined" ? fallbackChannels : getComputedStyle(document.documentElement).getPropertyValue(`--${token}`).trim() || fallbackChannels;
|
|
841
928
|
return alpha === void 0 ? `rgb(${channels})` : `rgb(${channels} / ${alpha})`;
|
|
842
929
|
};
|
|
843
930
|
var SSR_SIGNAL = "ssr";
|
|
@@ -857,12 +944,38 @@ var subscribeThemeSignal = (onChange) => {
|
|
|
857
944
|
return () => observer.disconnect();
|
|
858
945
|
};
|
|
859
946
|
var useThemeSignal = () => useSyncExternalStore(subscribeThemeSignal, readThemeSignal, () => SSR_SIGNAL);
|
|
860
|
-
var
|
|
947
|
+
var themeCache = /* @__PURE__ */ new Map();
|
|
948
|
+
var useThemedExtension = (cacheKey, build) => {
|
|
861
949
|
const themeSignal = useThemeSignal();
|
|
862
|
-
|
|
950
|
+
const key = `${themeSignal} ${cacheKey}`;
|
|
951
|
+
let cached = themeCache.get(key);
|
|
952
|
+
if (!cached) {
|
|
953
|
+
cached = build();
|
|
954
|
+
themeCache.set(key, cached);
|
|
955
|
+
}
|
|
956
|
+
return cached;
|
|
863
957
|
};
|
|
864
958
|
|
|
865
959
|
// src/components/CodeEditor/helpers.ts
|
|
960
|
+
var LANGUAGE_MODES = [
|
|
961
|
+
"application/json",
|
|
962
|
+
"text/plain",
|
|
963
|
+
"text/x-python",
|
|
964
|
+
"text/x-sql",
|
|
965
|
+
"text/x-mysql",
|
|
966
|
+
"text/x-pgsql",
|
|
967
|
+
"text/x-mssql",
|
|
968
|
+
"text/x-sfsql",
|
|
969
|
+
"text/x-plsql",
|
|
970
|
+
"text/x-rsrc",
|
|
971
|
+
"text/x-sh",
|
|
972
|
+
"text/x-toml",
|
|
973
|
+
"text/jsonnet",
|
|
974
|
+
"text/x-dbt",
|
|
975
|
+
"text/javascript",
|
|
976
|
+
"text/typescript"
|
|
977
|
+
];
|
|
978
|
+
var isLanguageMode = (mode) => LANGUAGE_MODES.includes(mode);
|
|
866
979
|
var buildBaseThemeStyles = () => ({
|
|
867
980
|
"*": { lineHeight: "20px" },
|
|
868
981
|
"*::selection": {
|
|
@@ -903,7 +1016,27 @@ var buildBaseThemeStyles = () => ({
|
|
|
903
1016
|
".cm-changeGutter": { position: "absolute", zIndex: -1, width: "100%", paddingLeft: 0 },
|
|
904
1017
|
'&[class*="cm-merge-"] .cm-changedLine,&[class*="cm-merge-"] .cm-line, &[class*="cm-merge-"] .cm-deletedChunk': { paddingLeft: 0 }
|
|
905
1018
|
});
|
|
906
|
-
var
|
|
1019
|
+
var ALWAYS_OFF = {
|
|
1020
|
+
drawSelection: false,
|
|
1021
|
+
foldGutter: false,
|
|
1022
|
+
foldKeymap: false,
|
|
1023
|
+
highlightActiveLine: false,
|
|
1024
|
+
highlightActiveLineGutter: false
|
|
1025
|
+
};
|
|
1026
|
+
var buildBasicSetup = (readOnly) => ({
|
|
1027
|
+
...ALWAYS_OFF,
|
|
1028
|
+
...readOnly ? {
|
|
1029
|
+
history: false,
|
|
1030
|
+
historyKeymap: false,
|
|
1031
|
+
closeBrackets: false,
|
|
1032
|
+
closeBracketsKeymap: false,
|
|
1033
|
+
lintKeymap: false,
|
|
1034
|
+
indentOnInput: false,
|
|
1035
|
+
rectangularSelection: false,
|
|
1036
|
+
dropCursor: false,
|
|
1037
|
+
highlightSelectionMatches: false
|
|
1038
|
+
} : null
|
|
1039
|
+
});
|
|
907
1040
|
var buildCustomTheme = () => githubLightInit({
|
|
908
1041
|
settings: {
|
|
909
1042
|
fontFamily: `'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', 'Liberation Mono', 'Courier New'`,
|
|
@@ -918,10 +1051,19 @@ var buildCustomTheme = () => githubLightInit({
|
|
|
918
1051
|
});
|
|
919
1052
|
var getLanguageMode = (mode) => {
|
|
920
1053
|
switch (mode) {
|
|
1054
|
+
case void 0:
|
|
1055
|
+
case "application/json":
|
|
1056
|
+
return json();
|
|
921
1057
|
case "text/x-python":
|
|
922
1058
|
return python();
|
|
923
1059
|
case "text/x-sql":
|
|
924
1060
|
return sql({ upperCaseKeywords: true });
|
|
1061
|
+
case "text/x-mysql":
|
|
1062
|
+
return sql({ upperCaseKeywords: true, dialect: MySQL });
|
|
1063
|
+
case "text/x-pgsql":
|
|
1064
|
+
return sql({ upperCaseKeywords: true, dialect: PostgreSQL });
|
|
1065
|
+
case "text/x-mssql":
|
|
1066
|
+
return sql({ upperCaseKeywords: true, dialect: MSSQL });
|
|
925
1067
|
case "text/x-sfsql":
|
|
926
1068
|
return StreamLanguage.define(sfsql);
|
|
927
1069
|
case "text/x-plsql":
|
|
@@ -930,23 +1072,32 @@ var getLanguageMode = (mode) => {
|
|
|
930
1072
|
return StreamLanguage.define(r);
|
|
931
1073
|
case "text/x-sh":
|
|
932
1074
|
return StreamLanguage.define(shell);
|
|
1075
|
+
case "text/x-toml":
|
|
1076
|
+
return StreamLanguage.define(toml);
|
|
1077
|
+
case "text/jsonnet":
|
|
1078
|
+
return StreamLanguage.define(jsonnet);
|
|
1079
|
+
case "text/x-dbt":
|
|
1080
|
+
return StreamLanguage.define(dbt);
|
|
933
1081
|
case "text/javascript":
|
|
934
1082
|
return javascript({ jsx: true });
|
|
935
1083
|
case "text/typescript":
|
|
936
1084
|
return javascript({ jsx: true, typescript: true });
|
|
1085
|
+
// No language — `text/plain` lands here, and so does any mode added to
|
|
1086
|
+
// LANGUAGE_MODES without an arm above. Unstyled text is the safe degradation;
|
|
1087
|
+
// a `json()` default would colour unrelated content as if it were JSON.
|
|
937
1088
|
default:
|
|
938
|
-
return
|
|
1089
|
+
return [];
|
|
939
1090
|
}
|
|
940
1091
|
};
|
|
941
1092
|
var shouldLintJson = (mode, readOnly) => mode === "application/json" && !readOnly;
|
|
942
|
-
var KbdSeparator = ({ className, ...props }) => /* @__PURE__ */ jsx("span", { ...props, className: cn("tw
|
|
1093
|
+
var KbdSeparator = ({ className, ...props }) => /* @__PURE__ */ jsx("span", { ...props, className: cn("tw:text-xs tw:text-muted-foreground", className) });
|
|
943
1094
|
var KbdGroup = ({ ref, className, children, separator, ...props }) => {
|
|
944
1095
|
return /* @__PURE__ */ jsx(
|
|
945
1096
|
"kbd",
|
|
946
1097
|
{
|
|
947
1098
|
...props,
|
|
948
1099
|
ref,
|
|
949
|
-
className: cn("tw
|
|
1100
|
+
className: cn("tw:inline-flex", "tw:items-center", "tw:gap-1", className),
|
|
950
1101
|
children: separator ? (
|
|
951
1102
|
// oxlint-disable-next-line react-x/no-children-to-array
|
|
952
1103
|
Children.toArray(children).map((child, index) => (
|
|
@@ -964,22 +1115,22 @@ var kbdVariants = cva(
|
|
|
964
1115
|
[
|
|
965
1116
|
"tailwindcss-preflight",
|
|
966
1117
|
// style
|
|
967
|
-
"tw
|
|
968
|
-
"tw
|
|
969
|
-
"tw
|
|
970
|
-
"tw
|
|
1118
|
+
"tw:pointer-events-none",
|
|
1119
|
+
"tw:w-fit",
|
|
1120
|
+
"tw:h-5",
|
|
1121
|
+
"tw:min-w-5",
|
|
971
1122
|
// layout
|
|
972
|
-
"tw
|
|
973
|
-
"tw
|
|
974
|
-
"tw
|
|
975
|
-
"tw
|
|
976
|
-
"tw
|
|
1123
|
+
"tw:inline-flex",
|
|
1124
|
+
"tw:items-center",
|
|
1125
|
+
"tw:justify-center",
|
|
1126
|
+
"tw:gap-1",
|
|
1127
|
+
"tw:shrink-0",
|
|
977
1128
|
// spacing
|
|
978
|
-
"tw
|
|
979
|
-
'[&_svg:not([class*="size-"])]:
|
|
980
|
-
"tw
|
|
981
|
-
"tw
|
|
982
|
-
"tw
|
|
1129
|
+
"tw:px-1",
|
|
1130
|
+
'tw:[&_svg:not([class*="size-"])]:size-2.5',
|
|
1131
|
+
"tw:text-xs",
|
|
1132
|
+
"tw:font-medium",
|
|
1133
|
+
"tw:rounded"
|
|
983
1134
|
],
|
|
984
1135
|
{
|
|
985
1136
|
defaultVariants: {
|
|
@@ -987,8 +1138,8 @@ var kbdVariants = cva(
|
|
|
987
1138
|
},
|
|
988
1139
|
variants: {
|
|
989
1140
|
variant: {
|
|
990
|
-
default: "tw
|
|
991
|
-
primary: "tw
|
|
1141
|
+
default: "tw:bg-muted tw:text-muted-foreground",
|
|
1142
|
+
primary: "tw:bg-white/20 tw:text-white"
|
|
992
1143
|
}
|
|
993
1144
|
}
|
|
994
1145
|
}
|
|
@@ -1011,6 +1162,7 @@ var CodeEditor = ({
|
|
|
1011
1162
|
onChange,
|
|
1012
1163
|
mode = "application/json",
|
|
1013
1164
|
placeholder: placeholder$1 = "",
|
|
1165
|
+
ariaLabel,
|
|
1014
1166
|
readOnly = false,
|
|
1015
1167
|
autocompletions = emptyArray,
|
|
1016
1168
|
extraKeys = emptyObject,
|
|
@@ -1019,19 +1171,23 @@ var CodeEditor = ({
|
|
|
1019
1171
|
withLineNumbers = true,
|
|
1020
1172
|
withLineWrapping = true,
|
|
1021
1173
|
withCollapseUnchanged = false,
|
|
1022
|
-
withCopyButton =
|
|
1174
|
+
withCopyButton = false,
|
|
1023
1175
|
completeAny = false,
|
|
1024
1176
|
help = null,
|
|
1025
1177
|
helpPostfix = null,
|
|
1026
1178
|
renderAdditionalButtons,
|
|
1027
1179
|
className
|
|
1028
1180
|
}) => {
|
|
1029
|
-
const
|
|
1030
|
-
const
|
|
1181
|
+
const handleChange = useStableCallback((next) => onChange?.(next));
|
|
1182
|
+
const customTheme = useThemedExtension("editor:syntax", buildCustomTheme);
|
|
1183
|
+
const baseTheme = useThemedExtension(
|
|
1184
|
+
"code-editor:chrome",
|
|
1185
|
+
() => EditorView.theme(buildBaseThemeStyles())
|
|
1186
|
+
);
|
|
1031
1187
|
const commonExtensions = useMemo(() => {
|
|
1032
1188
|
return [
|
|
1033
1189
|
getLanguageMode(mode),
|
|
1034
|
-
shouldLintJson(mode, readOnly)
|
|
1190
|
+
shouldLintJson(mode, readOnly) ? linter(jsonParseLinter()) : [],
|
|
1035
1191
|
withLineWrapping ? EditorView.lineWrapping : [],
|
|
1036
1192
|
EditorState.languageData.of(() => [
|
|
1037
1193
|
{ autocomplete: completeAny ? completeAnyWord : autocompletions }
|
|
@@ -1046,10 +1202,20 @@ var CodeEditor = ({
|
|
|
1046
1202
|
}
|
|
1047
1203
|
}))
|
|
1048
1204
|
),
|
|
1049
|
-
autocompletion({ activateOnTyping: completeAny }),
|
|
1205
|
+
readOnly ? [] : autocompletion({ activateOnTyping: completeAny }),
|
|
1206
|
+
ariaLabel ? EditorView.contentAttributes.of({ "aria-label": ariaLabel }) : [],
|
|
1050
1207
|
baseTheme
|
|
1051
|
-
]
|
|
1052
|
-
}, [
|
|
1208
|
+
];
|
|
1209
|
+
}, [
|
|
1210
|
+
autocompletions,
|
|
1211
|
+
completeAny,
|
|
1212
|
+
extraKeys,
|
|
1213
|
+
mode,
|
|
1214
|
+
readOnly,
|
|
1215
|
+
withLineWrapping,
|
|
1216
|
+
baseTheme,
|
|
1217
|
+
ariaLabel
|
|
1218
|
+
]);
|
|
1053
1219
|
const extensions = useMemo(() => {
|
|
1054
1220
|
return [
|
|
1055
1221
|
...commonExtensions,
|
|
@@ -1066,18 +1232,20 @@ var CodeEditor = ({
|
|
|
1066
1232
|
}, [commonExtensions, placeholder$1, readOnly, previousValue, withCollapseUnchanged]);
|
|
1067
1233
|
const config = useMemo(() => {
|
|
1068
1234
|
return {
|
|
1069
|
-
...
|
|
1235
|
+
...buildBasicSetup(readOnly),
|
|
1070
1236
|
lineNumbers: withLineNumbers
|
|
1071
1237
|
};
|
|
1072
|
-
}, [withLineNumbers]);
|
|
1238
|
+
}, [withLineNumbers, readOnly]);
|
|
1239
|
+
const additionalButtons = renderAdditionalButtons?.(value);
|
|
1240
|
+
const hasToolbar = withCopyButton && !!value || !!additionalButtons;
|
|
1073
1241
|
return (
|
|
1074
1242
|
// oxlint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
1075
1243
|
/* @__PURE__ */ jsxs(
|
|
1076
1244
|
"div",
|
|
1077
1245
|
{
|
|
1078
1246
|
className: cn(
|
|
1079
|
-
"tw
|
|
1080
|
-
{ "tw
|
|
1247
|
+
"tw:relative tw:flex tw:min-h-0 tw:flex-col tw:[&_.cm-mergeViewEditor]:overflow-visible tw:[&_.cm-mergeViewEditors]:h-full tw:[&_.cm-mergeView]:h-full tw:[&_>div]:h-full tw:[&_>div]:overflow-auto tw:[&_>div]:bg-background",
|
|
1248
|
+
{ "tw:mt-8": hasToolbar },
|
|
1081
1249
|
className
|
|
1082
1250
|
),
|
|
1083
1251
|
onKeyDown: (event) => {
|
|
@@ -1086,19 +1254,19 @@ var CodeEditor = ({
|
|
|
1086
1254
|
}
|
|
1087
1255
|
},
|
|
1088
1256
|
children: [
|
|
1089
|
-
|
|
1257
|
+
hasToolbar && /* @__PURE__ */ jsx("div", { className: "tw:pointer-events-none tw:absolute tw:z-10 tw:flex tw:!h-auto tw:w-full tw:translate-y-[calc(-100%_+_8px)] tw:!overflow-visible tw:!bg-transparent", children: /* @__PURE__ */ jsx("div", { className: "tw:flex-1", children: /* @__PURE__ */ jsx(ButtonToolbar, { value: withCopyButton ? value : void 0, children: additionalButtons }) }) }),
|
|
1090
1258
|
/* @__PURE__ */ jsx(
|
|
1091
1259
|
CodeMirror,
|
|
1092
1260
|
{
|
|
1093
1261
|
theme: customTheme,
|
|
1094
1262
|
value,
|
|
1095
|
-
onChange,
|
|
1263
|
+
onChange: handleChange,
|
|
1096
1264
|
extensions,
|
|
1097
1265
|
autoFocus: withAutofocus,
|
|
1098
1266
|
basicSetup: config
|
|
1099
1267
|
}
|
|
1100
1268
|
),
|
|
1101
|
-
!readOnly && (withToggleCommentHint || help || helpPostfix) && /* @__PURE__ */ jsxs(HelpBlock, { className: "tw
|
|
1269
|
+
!readOnly && (withToggleCommentHint || help || helpPostfix) && /* @__PURE__ */ jsxs(HelpBlock, { className: "tw:mt-2 tw:flex tw:flex-wrap tw:gap-1", children: [
|
|
1102
1270
|
help,
|
|
1103
1271
|
withToggleCommentHint ? /* @__PURE__ */ jsx(ToggleComponentHelp, {}) : null,
|
|
1104
1272
|
helpPostfix
|
|
@@ -1518,8 +1686,7 @@ function searchExtension() {
|
|
|
1518
1686
|
function updateSearch(view, query, selectedMatchIndex) {
|
|
1519
1687
|
view.dispatch({ effects: setSearchEffect.of({ query, selectedMatchIndex }) });
|
|
1520
1688
|
}
|
|
1521
|
-
var
|
|
1522
|
-
drawSelection: false,
|
|
1689
|
+
var OWN_KEYMAPS = {
|
|
1523
1690
|
defaultKeymap: false,
|
|
1524
1691
|
completionKeymap: false,
|
|
1525
1692
|
searchKeymap: false
|
|
@@ -1584,8 +1751,11 @@ var SqlEditor = ({
|
|
|
1584
1751
|
dialect
|
|
1585
1752
|
}) => {
|
|
1586
1753
|
const editorRef = useRef(null);
|
|
1587
|
-
const customTheme = useThemedExtension(buildCustomTheme);
|
|
1588
|
-
const themeExtension = useThemedExtension(
|
|
1754
|
+
const customTheme = useThemedExtension("editor:syntax", buildCustomTheme);
|
|
1755
|
+
const themeExtension = useThemedExtension(
|
|
1756
|
+
"sql-editor:chrome",
|
|
1757
|
+
() => EditorView$1.theme(buildTheme())
|
|
1758
|
+
);
|
|
1589
1759
|
const extensions = useMemo(() => {
|
|
1590
1760
|
const baseKeymap = [...defaultKeymap, ...CUSTOM_KEYMAP];
|
|
1591
1761
|
return [
|
|
@@ -1611,8 +1781,8 @@ var SqlEditor = ({
|
|
|
1611
1781
|
themeExtension
|
|
1612
1782
|
]);
|
|
1613
1783
|
const defaultSetup = useMemo(() => {
|
|
1614
|
-
return { ...
|
|
1615
|
-
}, [lineNumbers]);
|
|
1784
|
+
return { ...buildBasicSetup(readOnly), ...OWN_KEYMAPS, lineNumbers };
|
|
1785
|
+
}, [readOnly, lineNumbers]);
|
|
1616
1786
|
useEffect(() => {
|
|
1617
1787
|
if (editorRef.current?.view) {
|
|
1618
1788
|
updateHighlighting(editorRef.current.view, highlightLines);
|
|
@@ -1678,25 +1848,25 @@ var LINE_HEIGHT_PX = 20;
|
|
|
1678
1848
|
var PANE_HEADER_HEIGHT_PX = 58;
|
|
1679
1849
|
var AcceptButton = ({ side, onAccept }) => {
|
|
1680
1850
|
const label = `Accept ${side === "left" ? "production" : "branch"} version`;
|
|
1681
|
-
const Chevron = side === "left" ?
|
|
1682
|
-
return /* @__PURE__ */ jsx(Button, { onClick: onAccept, variant: "outline", size: "icon-sm", title: label, "aria-label": label, children: /* @__PURE__ */ jsx(Chevron, { className: "tw
|
|
1851
|
+
const Chevron = side === "left" ? ChevronsRight : ChevronsLeft;
|
|
1852
|
+
return /* @__PURE__ */ jsx(Button, { onClick: onAccept, variant: "outline", size: "icon-sm", title: label, "aria-label": label, children: /* @__PURE__ */ jsx(Chevron, { className: "tw:size-5" }) });
|
|
1683
1853
|
};
|
|
1684
1854
|
var AcceptControls = ({ conflicts, side, onAccept, onDismiss, contentRef }) => /* @__PURE__ */ jsx(
|
|
1685
1855
|
"div",
|
|
1686
1856
|
{
|
|
1687
1857
|
className: cn(
|
|
1688
|
-
"tw
|
|
1689
|
-
conflicts.length > 0 ? "tw
|
|
1858
|
+
"tw:z-10 tw:flex tw:shrink-0 tw:flex-col tw:items-center",
|
|
1859
|
+
conflicts.length > 0 ? "tw:w-7" : "tw:w-0"
|
|
1690
1860
|
),
|
|
1691
1861
|
children: conflicts.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1692
|
-
/* @__PURE__ */ jsx("div", { className: "tw
|
|
1693
|
-
/* @__PURE__ */ jsx("div", { className: "tw
|
|
1862
|
+
/* @__PURE__ */ jsx("div", { className: "tw:shrink-0", style: { height: `${PANE_HEADER_HEIGHT_PX}px` } }),
|
|
1863
|
+
/* @__PURE__ */ jsx("div", { className: "tw:relative tw:w-full tw:flex-1 tw:overflow-y-clip tw:overflow-x-visible", children: /* @__PURE__ */ jsx("div", { ref: contentRef, className: "tw:relative tw:size-full", children: conflicts.map((conflict) => {
|
|
1694
1864
|
const topLine = side === "left" ? conflict.oldStartLine : conflict.newStartLine;
|
|
1695
1865
|
const topOffset = (topLine - 1) * LINE_HEIGHT_PX - 2;
|
|
1696
1866
|
return /* @__PURE__ */ jsxs(
|
|
1697
1867
|
"div",
|
|
1698
1868
|
{
|
|
1699
|
-
className: "tw
|
|
1869
|
+
className: "tw:absolute tw:inset-x-0 tw:flex tw:flex-col tw:items-center tw:gap-0.5",
|
|
1700
1870
|
style: { top: `${topOffset}px` },
|
|
1701
1871
|
children: [
|
|
1702
1872
|
/* @__PURE__ */ jsx(AcceptButton, { side, onAccept: () => onAccept(conflict) }),
|
|
@@ -1708,7 +1878,7 @@ var AcceptControls = ({ conflicts, side, onAccept, onDismiss, contentRef }) => /
|
|
|
1708
1878
|
size: "icon-sm",
|
|
1709
1879
|
title: "Dismiss",
|
|
1710
1880
|
"aria-label": `Dismiss ${side === "left" ? "production" : "branch"} change`,
|
|
1711
|
-
children: /* @__PURE__ */ jsx(
|
|
1881
|
+
children: /* @__PURE__ */ jsx(X, { className: "tw:size-4" })
|
|
1712
1882
|
}
|
|
1713
1883
|
)
|
|
1714
1884
|
]
|
|
@@ -1805,13 +1975,15 @@ var MergePane = ({
|
|
|
1805
1975
|
deleted = false
|
|
1806
1976
|
}) => {
|
|
1807
1977
|
const editorRef = useRef(null);
|
|
1978
|
+
const handleChange = useStableCallback((next) => onChange?.(next));
|
|
1808
1979
|
const themeExtension = useThemedExtension(
|
|
1980
|
+
`merge-pane:${deleted}`,
|
|
1809
1981
|
() => EditorView.theme({
|
|
1810
1982
|
"&.cm-editor": {
|
|
1811
1983
|
height: "100%",
|
|
1812
1984
|
backgroundColor: deleted ? colors.error[100] : resolveToken("background", "249 250 251"),
|
|
1813
1985
|
// Pair the token-driven surface with a token-driven text color so line
|
|
1814
|
-
// content stays readable when the pane's `--
|
|
1986
|
+
// content stays readable when the pane's `--background` goes dark.
|
|
1815
1987
|
// The deleted pane keeps default dark text on its fixed light-red wash.
|
|
1816
1988
|
...deleted ? {} : { color: resolveToken("foreground", "30 41 59") },
|
|
1817
1989
|
outline: "none"
|
|
@@ -1822,10 +1994,13 @@ var MergePane = ({
|
|
|
1822
1994
|
},
|
|
1823
1995
|
"*": { lineHeight: `${LINE_HEIGHT_PX}px` },
|
|
1824
1996
|
".cm-lineNumbers .cm-gutterElement": { padding: "0 0 0 25px" }
|
|
1825
|
-
})
|
|
1826
|
-
[deleted]
|
|
1997
|
+
})
|
|
1827
1998
|
);
|
|
1828
1999
|
const diffHighlightExtension = useMemo(() => createDiffHighlightExtension(), []);
|
|
2000
|
+
const basicSetup = useMemo(
|
|
2001
|
+
() => ({ ...buildBasicSetup(readOnly), lineNumbers: true }),
|
|
2002
|
+
[readOnly]
|
|
2003
|
+
);
|
|
1829
2004
|
const extensions = useMemo(
|
|
1830
2005
|
() => [
|
|
1831
2006
|
diffHighlightExtension,
|
|
@@ -1875,33 +2050,33 @@ var MergePane = ({
|
|
|
1875
2050
|
"div",
|
|
1876
2051
|
{
|
|
1877
2052
|
className: cn(
|
|
1878
|
-
"tw
|
|
2053
|
+
"tw:flex tw:min-w-0 tw:flex-1 tw:flex-col tw:overflow-hidden",
|
|
1879
2054
|
className,
|
|
1880
|
-
deleted && "tw
|
|
2055
|
+
deleted && "tw:border-error-300"
|
|
1881
2056
|
),
|
|
1882
2057
|
children: [
|
|
1883
2058
|
header && /* @__PURE__ */ jsx(
|
|
1884
2059
|
"div",
|
|
1885
2060
|
{
|
|
1886
2061
|
className: cn(
|
|
1887
|
-
"tw
|
|
1888
|
-
deleted ? "tw
|
|
2062
|
+
"tw:px-4 tw:py-3",
|
|
2063
|
+
deleted ? "tw:border-b tw:border-error-200 tw:bg-error-100" : "tw:bg-background",
|
|
1889
2064
|
headerClassName
|
|
1890
2065
|
),
|
|
1891
2066
|
children: header
|
|
1892
2067
|
}
|
|
1893
2068
|
),
|
|
1894
|
-
/* @__PURE__ */ jsx("div", { className: "tw
|
|
2069
|
+
/* @__PURE__ */ jsx("div", { className: "tw:flex tw:h-0 tw:flex-1 tw:flex-col tw:[&_>div]:h-full", children: /* @__PURE__ */ jsx(
|
|
1895
2070
|
CodeMirror,
|
|
1896
2071
|
{
|
|
1897
2072
|
ref: editorRef,
|
|
1898
2073
|
height: "100%",
|
|
1899
2074
|
value,
|
|
1900
|
-
onChange,
|
|
2075
|
+
onChange: handleChange,
|
|
1901
2076
|
extensions,
|
|
1902
2077
|
readOnly,
|
|
1903
2078
|
onCreateEditor: handleCreateEditor,
|
|
1904
|
-
basicSetup
|
|
2079
|
+
basicSetup
|
|
1905
2080
|
}
|
|
1906
2081
|
) })
|
|
1907
2082
|
]
|
|
@@ -2001,7 +2176,7 @@ var MergeEditor = ({
|
|
|
2001
2176
|
"div",
|
|
2002
2177
|
{
|
|
2003
2178
|
className: cn(
|
|
2004
|
-
"tw
|
|
2179
|
+
"tw:flex tw:h-full tw:min-h-0 tw:overflow-hidden tw:bg-background tw:gap-3",
|
|
2005
2180
|
className
|
|
2006
2181
|
),
|
|
2007
2182
|
children: [
|
|
@@ -2013,7 +2188,7 @@ var MergeEditor = ({
|
|
|
2013
2188
|
lineClassification: leftClassification,
|
|
2014
2189
|
readOnly: true,
|
|
2015
2190
|
header: leftHeader,
|
|
2016
|
-
className: "tw
|
|
2191
|
+
className: "tw:rounded-r-lg tw:border tw:border-border",
|
|
2017
2192
|
onScrollDOMReady: registerScroller(0),
|
|
2018
2193
|
deleted: leftDeleted
|
|
2019
2194
|
}
|
|
@@ -2037,7 +2212,7 @@ var MergeEditor = ({
|
|
|
2037
2212
|
onChange: handleMergeChange,
|
|
2038
2213
|
header: middleHeader,
|
|
2039
2214
|
headerClassName: middleHeaderClassName,
|
|
2040
|
-
className: cn("tw
|
|
2215
|
+
className: cn("tw:border tw:border-border tw:rounded-lg", middleClassName),
|
|
2041
2216
|
onScrollDOMReady: registerScroller(1)
|
|
2042
2217
|
}
|
|
2043
2218
|
),
|
|
@@ -2059,7 +2234,7 @@ var MergeEditor = ({
|
|
|
2059
2234
|
lineClassification: rightClassification,
|
|
2060
2235
|
readOnly: true,
|
|
2061
2236
|
header: rightHeader,
|
|
2062
|
-
className: "tw
|
|
2237
|
+
className: "tw:rounded-l-lg tw:border tw:border-border",
|
|
2063
2238
|
onScrollDOMReady: registerScroller(2),
|
|
2064
2239
|
deleted: rightDeleted
|
|
2065
2240
|
}
|
|
@@ -2069,6 +2244,6 @@ var MergeEditor = ({
|
|
|
2069
2244
|
);
|
|
2070
2245
|
};
|
|
2071
2246
|
|
|
2072
|
-
export { CodeEditor, MergeEditor, SqlEditor };
|
|
2247
|
+
export { CodeEditor, LANGUAGE_MODES, MergeEditor, SqlEditor, isLanguageMode };
|
|
2073
2248
|
//# sourceMappingURL=editors.js.map
|
|
2074
2249
|
//# sourceMappingURL=editors.js.map
|